ZGlmZiAtLWdpdCBhLy5tYWlsbWFwIGIvLm1haWxtYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5ZjQ5MAotLS0gL2Rldi9udWxsCisrKyBiLy5tYWlsbWFwCkBAIC0wLDAgKzEsMTAgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbWFwcyBsb2cgY29tbWl0IGVtYWlsIGFkZHJlc3NlcyB0byB1c2VyIG5hbWVzIHNvIHRoYXQgdGhleSBwcm9wZXJseSByZXBvcnQKKyMgZm9yIHJlbGVhc2Ugbm90ZXMgd2l0aDogZ2l0IHNob3J0bG9nIC1zbgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3RlcGhlbiBNYWxsZXR0ZSAgICAgICAgICAgICAgICAgPHNwbWFsbGV0dGVAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRmxvcmlhbiBIb2NrbWFubiAgICAgICAgICAgICAgICAgPGZoQGZsb3JpYW4taG9ja21hbm4uZGU+CitKYXNvbiBQbHVyYWQgICAgICAgICAgICAgICAgICAgICA8cGx1cmFkakB1cy5pYm0uY29tPgorT3RhdmlvIFNhbnRhbmEgICAgICAgICAgICAgICAgICAgPG90YXZpb3BvbGlhbmFzYW50YW5hQGdtYWlsLmNvbT4KK0hhcnNoIFRoYWtrYXIgICAgICAgICAgICAgICAgICAgIDxoYXJzaDl0QGdtYWlsLmNvbT4KK0hhZG9vcE1hcmMgICAgICAgICAgICAgICAgICAgICAgIDx2dHNsYWJAeHM0YWxsLm5sPgpkaWZmIC0tZ2l0IGEvLnRyYXZpcy55bWwgYi8udHJhdmlzLnltbAppbmRleCA0ODE3YmM5Li4xM2NmOTMzIDEwMDY0NAotLS0gYS8udHJhdmlzLnltbAorKysgYi8udHJhdmlzLnltbApAQCAtNDgsOCArNDgsMTQgQEAKICAgICAgIG5hbWU6ICJweXRob24iCiAgICAgLSBzY3JpcHQ6ICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyAmJiBtdm4gdmVyaWZ5IC1wbCA6Z3JlbWxpbi1qYXZhc2NyaXB0IgogICAgICAgbmFtZTogImphdmFzY3JpcHQiCi0gICAgLSBzY3JpcHQ6ICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyAmJiBtdm4gdmVyaWZ5IC1wbCA6Z3JlbWxpbi1zZXJ2ZXIsOmdyZW1saW4tY29uc29sZSAtRHNraXBJbnRlZ3JhdGlvblRlc3RzPWZhbHNlIgotICAgICAgbmFtZTogImdyZW1saW4gc2VydmVyL2NvbnNvbGUiCisgICAgLSBzY3JpcHQ6CisgICAgICAtICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyIKKyAgICAgIC0gIm12biB2ZXJpZnkgLXBsIDpncmVtbGluLXNlcnZlciAtRHNraXBUZXN0cyAtRHNraXBJbnRlZ3JhdGlvblRlc3RzPWZhbHNlIgorICAgICAgbmFtZTogImdyZW1saW4gc2VydmVyIgorICAgIC0gc2NyaXB0OgorICAgICAgICAtICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyIKKyAgICAgICAgLSAibXZuIHZlcmlmeSAtcGwgOmdyZW1saW4tY29uc29sZSAtRHNraXBJbnRlZ3JhdGlvblRlc3RzPWZhbHNlIgorICAgICAgbmFtZTogImdyZW1saW4gY29uc29sZSIKICAgICAtIHNjcmlwdDoKICAgICAgIC0gIm12biBjbGVhbiBpbnN0YWxsIC1xIC1Ec2tpcFRlc3RzIgogICAgICAgLSAidHJhdmlzX3dhaXQgNjAgbXZuIHZlcmlmeSAtcGwgOnNwYXJrLWdyZW1saW4gLURza2lwSW50ZWdyYXRpb25UZXN0cz1mYWxzZSIKZGlmZiAtLWdpdCBhL0NIQU5HRUxPRy5hc2NpaWRvYyBiL0NIQU5HRUxPRy5hc2NpaWRvYwppbmRleCA2YzY4Y2U0Li5lNTZiZmI3IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cuYXNjaWlkb2MKKysrIGIvQ0hBTkdFTE9HLmFzY2lpZG9jCkBAIC0xNiw2ICsxNiw1MTkgQEAKIC8vLy8KID0gVGlua2VyUG9wMyBDSEFOR0VMT0cKIAorPT0gVGlua2VyUG9wIDMuNC4wIChBdmFudC1HcmVtbGluIENvbnN0cnVjdGlvbiAjMyBmb3IgVGhlcmVtaW4gYW5kIEZsb3dlcnMpCisKK2ltYWdlOjpodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBhY2hlL3RpbmtlcnBvcC9tYXN0ZXIvZG9jcy9zdGF0aWMvaW1hZ2VzL2F2YW50LWdyZW1saW4ucG5nW3dpZHRoPTE4NV0KKworW1tyZWxlYXNlLTMtNC03XV0KKz09PSBUaW5rZXJQb3AgMy40LjcgKFJlbGVhc2UgRGF0ZTogTk9UIE9GRklDSUFMTFkgUkVMRUFTRUQgWUVUKQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy0xMSwgMy4zLjExPj4uCisKKyogR3JlbWxpbi5ORVQgZHJpdmVyOiBGaXhlZCBhIGBOdWxsUmVmZXJlbmNlRXhjZXB0aW9uYCBhbmQgdGhyb3cgY2xlYXIgZXhjZXB0aW9uIGlmIHJlY2VpdmVkIG1lc3NhZ2UgaXMgZW1wdHkuCisqIEJ1bXBlZCB0byBHcm9vdnkgMi41LjExLgorKiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIGZvciBgbWF0aCgpYCB3aGVuIHRoZSBzZWxlY3RlZCBrZXkgaW4gYSBgTWFwYCBpcyBgbnVsbGAgb3Igbm90IGEgYE51bWJlcmAuCisqIEFkZGVkIGA6Y2xzYCBjb21tYW5kIHRvIEdyZW1saW4gQ29uc29sZSB0byBjbGVhciB0aGUgc2NyZWVuLgorCitbW3JlbGVhc2UtMy00LTZdXQorPT09IFRpbmtlclBvcCAzLjQuNiAoUmVsZWFzZSBEYXRlOiBGZWJydWFyeSAyMCwgMjAyMCkKKworKiBGaXhlZCBidWcgaW4gYGRyb3AoKWAgb2YgcHJvcGVydGllcyB3aGljaCB3YXMgaW50cm9kdWNlZCBpbiAzLjQuNS4KKworPT09PSBCdWdzCisKKyogVElOS0VSUE9QLTIzMzggZHJvcCgpIG5vdCByZW1vdmluZyBhbGwgZWRnZS9tZXRhIHByb3BlcnRpZXMKKworW1tyZWxlYXNlLTMtNC01XV0KKz09PSBUaW5rZXJQb3AgMy40LjUgKFJlbGVhc2UgRGF0ZTogRmVicnVhcnkgMywgMjAyMCkKKworVGhpcyByZWxlYXNlIGFsc28gaW5jbHVkZXMgY2hhbmdlcyBmcm9tIDw8cmVsZWFzZS0zLTMtMTAsIDMuMy4xMD4+LgorCisqIEV4cGFuZGVkIHRoZSB1c2Ugb2YgYGJ5KFN0cmluZylgIG1vZHVsYXRvciBzbyB0aGF0IGl0IGNhbiB3b3JrIG9uIGBNYXBgIGFzIHdlbGwgYXMgYEVsZW1lbnRgLgorKiBJbXByb3ZlZCBlcnJvciBtZXNzYWdpbmcgZm9yIGBieShTdHJpbmcpYCBzbyB0aGF0IGl0IGlzIG1vcmUgY2xlYXIgYXMgdG8gd2hhdCB0aGUgcHJvYmxlbSBpcworKiBCdW1wIHRvIE5ldHR5IDQuMS40MgorKiBJbXByb3ZlZCBTUEFSUUwgcXVlcnkgdHJhbnNsYXRpb24gdG8gYmV0dGVyIGFsbG93IGZvciBpbmRleCBvcHRpbWl6YXRpb25zIGR1cmluZyBleGVjdXRpb24uCisqIEltcHJvdmVkIEdyZW1saW4gU2VydmVyIHdlYnNvY2tldCBoYW5kbGluZyBwcmV2ZW50aW5nIGF1dG9tYXRpYyBzZXJ2ZXIgY2xvc2Ugb2YgdGhlIGNoYW5uZWwgZm9yIHByb3RvY29sIGVycm9ycy4KKyogSW50cm9kdWNlZCBpbnRlcm5hbCBgQnVmZmVyYCBBUEkgYXMgYSB3YXkgdG8gd3JhcCBOZXR0eSdzIEJ1ZmZlciBBUEkgYW5kIG1vdmVkIGBHcmFwaEJpbmFyeVJlYWRlcmAsIGBHcmFwaEJpbmFyeVdyaXRlcmAgYW5kIGBUeXBlU2VyaWFsaXplcjxUPmAgdG8gYGdyZW1saW4tY29yZWAuCisqIFVuaWZpZWQgdGhlIGJlaGF2aW9yIG9mIHByb3BlcnR5IGNvbXBhcmlzb246IG9ubHkgY29tcGFyZSBrZXkmdmFsdWUuCisqIFN1cHBvcnRlZCBgaGFzS2V5KClgIGFuZCBgaGFzVmFsdWUoKWAgc3RlcCBmb3IgZWRnZSBwcm9wZXJ0eSBhbmQgbWV0YSBwcm9wZXJ0eSwgbGlrZSBgZy5FKCkucHJvcGVydGllcygpLmhhc0tleSgneHgnKWAuCisqIE1vZGlmaWVkIGRyaXZlciB0byBzZW5kIGBvdmVycmlkZVJlcXVlc3RJZGAgYW5kIGB1c2VyQWdlbnRgIHRvIHNlcnZlciB3aGVuIHRoZXkgYXJlIHByZXNlbnQgaW4gYFJlcXVlc3RPcHRpb25zYCBmb3IgYnl0ZWNvZGUgcmVxdWVzdHMuCisKKz09PT0gQnVncworCisqIFRJTktFUlBPUC0yMTc1IEV4ZWN1dG9yIHRocmVhZCBpcyBub3QgcmV0dXJuZWQgb24gY2hhbm5lbCBjbG9zZQorKiBUSU5LRVJQT1AtMjI2NiBLZWVwIGFsaXZlIG5vdCBzdGFydGVkIGF0IGNvbm5lY3Rpb24gY3JlYXRpb24KKyogVElOS0VSUE9QLTIyNzQgVGVzdCBvZiBUaW5rZXJHcmFwaCBHcmVtbGluIGZhaWwgb24gV2luZG93cyBhbmQgbm9uIEVOIGxvY2FsZQorKiBUSU5LRVJQT1AtMjMxOCBFZGdlIHByb3BlcnRpZXMgZGVkdXAoKSBub3Qgd29yayB3aXRoIHNwYXJrLWdyZW1saW4gKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMzMyIEphdmFTY3JpcHQgR0xWOiBzdHJ1Y3R1cmUgZWxlbWVudCB0b1N0cmluZygpIHNob3VsZCBpbnRlcm5hbGx5IGNhbGwgdG9TdHJpbmcoKQorKiBUSU5LRVJQT1AtMjMzMyBKYXZhU2NyaXB0IEdMVjogR3JhcGhTT04yLzMgRWRnZSBkZXNlcmlhbGl6YXRpb24gaXMgaW52YWxpZAorCis9PT09IEltcHJvdmVtZW50cworCisqIFRJTktFUlBPUC0xNzMzIGhhc0tleSwgaGFzVmFsdWVzIHNob3VsZCB3b3JrIG9uIEVsZW1lbnQgYW5kIFByb3BlcnR5CisqIFRJTktFUlBPUC0yMjYyIEltcHJvdmUgTmV0dHkgcHJvdG9jb2wgaGFuZGxpbmcKKyogVElOS0VSUE9QLTIzMDUgR3JhcGhCaW5hcnk6IFdyYXAgQnVmZmVyIEFQSQorKiBUSU5LRVJQT1AtMjMwNyBBZGQgYmV0dGVyIGVycm9yIG1lc3NhZ2UgZm9yIGJhZGx5IGNvbmZpZ3VyZWQgQ2hhbm5lbGl6ZXIKKyogVElOS0VSUE9QLTIzMDkgQnVtcCBncmVtbGlucHl0aG9uIHRvIFRvcm5hZG8gNS54CisqIFRJTktFUlBPUC0yMzE0IEVtcGxveSBieShTdHJpbmcpIGZvciBNYXAgd2hlbiBwb3NzaWJsZSBhbmQgaW1wcm92ZSBlcnJvcnMgYXJvdW5kIGluY29ycmVjdCB0eXBlcworKiBUSU5LRVJQT1AtMjMxNSBJbXBsZW1lbnQgc29tZSBmb3JtIG9mIGNsb25lKCkgb3IgcmVzZXQoKSBmb3IgVHJhdmVyc2FsIGluIEdMVnMKKyogVElOS0VSUE9QLTIzMjAgW1NFQ1VSSVRZXSBYTUxJbnB1dEZhY3RvcnkgaW5pdGlhbGl6YXRpb24gaW4gR3JhcGhNTFJlYWRlciBpbnRyb2R1Y2VzCisqIFRJTktFUlBPUC0yMzIyIERlcHJlY2F0ZSBKeXRob24gc3VwcG9ydAorKiBUSU5LRVJQT1AtMjMyNCBEZXByZWNhdGUgdGhlIHJhdyBOSU8gc3VwcG9ydCBpbiB0aGUgSmF2YSBkcml2ZXIKKyogVElOS0VSUE9QLTIzMjUgR2VuZXJhdGUgdHJhdmVyc2FscyB0aGF0IHdpbGwgYmV0dGVyIHlpZWxkIGluZGV4IGxvb2t1cHMgd2l0aCBTUEFSUUwKKyogVElOS0VSUE9QLTIzMjkgSmF2YVNjcmlwdCBHTFY6IFVwZGF0ZSB3ZWJzb2NrZXQgbGlicmFyeSBkZXBlbmRlbmN5CisqIFRJTktFUlBPUC0yMzMwIEphdmFTY3JpcHQgR0xWIHNob3VsZCBleHBvc2UgR3JhcGhTT04yV3JpdGVyIGFuZCBHcmFwaFNPTlJlYWRlcgorCitbW3JlbGVhc2UtMy00LTRdXQorPT09IFRpbmtlclBvcCAzLjQuNCAoUmVsZWFzZSBEYXRlOiBPY3RvYmVyIDE0LCAyMDE5KQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy05LCAzLjMuOT4+LgorCisqIFByb3ZpZGVkIHN1cHBvcnQgZm9yIERTTHMgYnkgd2F5IG9mIHJlbW90ZSBjb25uZWN0aW9ucyB0aHJvdWdoIGBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2VgLgorKiBBZGRlZCBgZWxlbWVudE1hcCgpYCBzdGVwLgorKiBBZGRlZCBHcmFwaEJpbmFyeSBzdXBwb3J0IGZvciBQeXRob24uCisqIEFsbG93ZWQgZm9yIGVtYmVkZGVkIG1hcCBhc3NlcnRpb25zIGluIEdMViB0ZXN0cy4KKyogQWRkZWQgYERpcmVjdGlvbmAgZGVzZXJpYWxpemF0aW9uIHN1cHBvcnQgaW4gR0xWcy4KKworPT09PSBCdWdzCisKKyogVElOS0VSUE9QLTIxNTkgRXZlbnRTdHJhdGVneSBkb2Vzbid0IGhhbmRsZSBtdWx0aS12YWx1ZWQgcHJvcGVydGllcworKiBUSU5LRVJQT1AtMjI3NiBObyBjb25zdHJ1Y3RvciBmb3IgcmVtb3RlIGNvbm5lY3Rpb24gaW4gRFNMIGdlbmVyYXRlZCB0cmF2ZXJzYWwgc291cmNlCisqIFRJTktFUlBPUC0yMjgzIEdyYXBoU3RlcCdzIGlkcyBudWxsIGV4Y2VwdGlvbgorKiBUSU5LRVJQT1AtMjI4NSBFcnJvciBvYmplY3QgaXMgdW5yZWFjaGFibGUKKyogVElOS0VSUE9QLTIyODkgVXNlIGFkZHJlc3MgaW5zdGVhZCBvZiBob3N0bmFtZSBmb3IgY29ubmVjdGlvbgorKiBUSU5LRVJQT1AtMjI5MCBKYXZhc2NyaXB0IEdMViBjb25uZWN0aW9uIHJlZnVzZWQgZXJyb3IgaGFuZGxpbmcKKyogVElOS0VSUE9QLTIyOTEgVHJhdmVyc2FsRXhwbGFuYXRpb24gZGVzZXJpYWxpemF0aW9uIGluIEdyYXBoU09OCisqIFRJTktFUlBPUC0yMjk4IEJ5dGVjb2RlLmphdmEgIGZsYXR0ZW5Bcmd1bWVudHMgdGhyb3cgZXhjZXB0aW9uIHdoZW4gbnVsbAorKiBUSU5LRVJQT1AtMjMwMyBHcmVtbGluRHNsIGdlbmVyYXRlIGFkZFYgaW5zdGVhZCBvZiBhZGRFCisKKz09PT0gSW1wcm92ZW1lbnRzCisKKyogVElOS0VSUE9QLTE4MTAgQWRkIExhbWJkYS5iaW5hcnlPcGVyYXRvciBhbmQgTGFtYmRhLnVuYXJ5T3BlcmF0b3IKKyogVElOS0VSUE9QLTE4MzggUHl0aG9uIHNhbXBsZSBzY3JpcHQKKyogVElOS0VSUE9QLTIwNDYgR3JlbWxpbi1QeXRob246IFN1cHBvcnQgY3VzdG9tIHJlcXVlc3QgaGVhZGVycyBpbiBXZWJTb2NrZXQgcmVxdWVzdAorKiBUSU5LRVJQT1AtMjIxMyBSZXBsYWNlIHNjcmlwdEV2YWx1YXRpb25UaW1lb3V0IGluIGZhdm9yIG9mIHNvbWV0aGluZyBtb3JlIHN1aXRhYmxlIHRvIGJ5dGVjb2RlCisqIFRJTktFUlBPUC0yMjc1IFVwZGF0ZSBqYWNrc29uIGRhdGFiaW5kIDIuOS45LjMrCisqIFRJTktFUlBPUC0yMjc3IFB5dGhvbiBzZGsgcG9zdHBvbmUgdGhlIHRpbWluZyB0byBjcmVhdGUgdHJhbnNwb3J0CisqIFRJTktFUlBPUC0yMjc5IEdyYXBoQmluYXJ5IHN1cHBvcnQgaW4gUHl0aG9uCisqIFRJTktFUlBPUC0yMjgwIFByZXZlbnQgdXNlIG9mIFQgdmFsdWVzIGFzIHByb3BlcnR5IGtleSBvdmVybG9hZHMKKyogVElOS0VSUE9QLTIyODQgTWFrZSBpdCBlYXNpZXIgdG8gcmV0dXJuIG1vcmUgc3RydWN0dXJlIG9mIGdyYXBoIGVsZW1lbnRzCisqIFRJTktFUlBPUC0yMzAyIEFkZCBpc09uR3JhcGhDb21wdXRlcigpIGZpZWxkIGFjY2Vzc29yIHRvIEVsZW1lbnRNYXBTdGVwCisKK1tbcmVsZWFzZS0zLTQtM11dCis9PT0gVGlua2VyUG9wIDMuNC4zIChSZWxlYXNlIERhdGU6IEF1Z3VzdCA1LCAyMDE5KQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy04LCAzLjMuOD4+LgorCisqIEltcHJvdmVkIGVycm9yIG1lc3NhZ2luZyBvbiB0aW1lb3V0cyByZXR1cm5lZCB0byB0aGUgY29uc29sZSBmcm9tIGA6PmAuCisqIEFkZGVkIGEgYHRvU3RyaW5nKClgIHNlcmlhbGl6ZXIgZm9yIEdyYXBoQmluYXJ5LgorKiBDb25maWd1cmVkIHRoZSBHcmVtbGluIENvbnNvbGUgdG8gdXNlIEdyYXBoQmluYXJ5IGJ5IGRlZmF1bHQuCisqIEZpeGVkIHRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgZm9yIGVtcHR5IGl0ZXJhdG9ycyBpbiBHcmVtbGluIFNlcnZlci4KKyogRGVwcmVjYXRlZCBgTWVzc2FnZVNlcmlhbGl6ZXJgIGltcGxlbWVudGF0aW9ucyBmb3IgR3J5byBpbiBHcmVtbGluIFNlcnZlci4KKyogRGVwcmVjYXRlZCBgU2VyaWFsaXplcnNgIGVudW0gdmFsdWVzIG9mIGBHUllPX1YxRDBgIGFuZCBgR1JZT19WM0QwYC4KKyogRGVwcmVjYXRlZCBgU2VyVG9rZW5zYCB2YWx1ZXMgb2YgYE1JTUVfR1JZT19WMUQwYCBhbmQgYE1JTUVfR1JZT19WM0QwYC4KKyogQWRkZWQgYSBEb2NrZXIgY29tbWFuZCB0byBzdGFydCBHcmVtbGluIFNlcnZlciB3aXRoIHRoZSBzdGFuZGFyZCBHTFYgdGVzdCBjb25maWd1cmF0aW9ucy4KKyogQWRkZWQgYGFnZ3JlZ2F0ZShTY29wZSxTdHJpbmcpYCBhbmQgZGVwcmVjYXRlZCBgc3RvcmUoKWAgaW4gZmF2b3Igb2YgYGFnZ3JlZ2F0ZShsb2NhbClgLgorKiBNb2RpZmllZCBgTnVtYmVySGVscGVyYCB0byBiZXR0ZXIgaWdub3JlIGBEb3VibGUuTmFOYCBpbiBgbWluKClgIGFuZCBgbWF4KClgIGNvbXBhcmlzb25zLgorKiBCdW1wIHRvIE5ldHR5IDQuMS4zNi4KKyogQnVtcCB0byBHcm9vdnkgMi41LjcuCisqIEFkZGVkIGB1c2VyQWdlbnRgIHRvIFJlcXVlc3RPcHRpb25zLiBHcmVtbGluIENvbnNvbGUgc2VuZHMgYEdyZW1saW4gQ29uc29sZS88dmVyc2lvbj5gIGFzIHRoZSBgdXNlckFnZW50YC4KKyogRml4ZWQgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiBpZ25vcmluZyBgd2l0aGAgYFRva2VuYCBvcHRpb25zIHdoZW4gbXVsdGlwbGUgd2VyZSBzZXQuCisqIEFkZGVkIGA6c2V0IHdhcm5pbmdzIDx0cnVlfGZhbHNlPmAgdG8gR3JlbWxpbiBDb25zb2xlLgorCis9PT09IEJ1Z3MKKworKiBUSU5LRVJQT1AtMTYxOSBUaW5rZXJHcmFwaENvbXB1dGVyIHdvcmtlciBjb3VudCBhZmZlY3RzIE9wdGlvbmFsU3RlcCBxdWVyeSByZXN1bHRzCisqIFRJTktFUlBPUC0yMTU3IFNwYXJrU3RhckJhcnJpZXJJbnRlcmNlcHRvciBpbmplY3RzIChCeXRlKSAwCisqIFRJTktFUlBPUC0yMjI0IERldGVjdCBhbmQgZml4IHJlc291cmNlIGxlYWsKKyogVElOS0VSUE9QLTIyMzAgbWF0Y2goKSBzdGVwIHVuZXhwZWN0ZWQgYmVoYXZpb3VycworKiBUSU5LRVJQT1AtMjIzMiBSZW1vdGVTdHJhdGVneSBkb2VzIG5vdCBjYWxsIHBhcmVudCBjbGFzcyBUcmF2ZXJzYWxTdHJhdGVneSBfX2luaXRfXworKiBUSU5LRVJQT1AtMjIzOCBGaXggcmVtYWluaW5nIGl0ZXJhdG9yIGxlYWtzIG1hcmtlZCBieSBASWdub3JlSXRlcmF0b3JMZWFrCisqIFRJTktFUlBPUC0yMjQxIENsaWVudCBleGNlcHRpb24gZG9uJ3QgbWF0Y2ggU2VydmVyIGV4Y2VwdGlvbiB3aGVuIHNlcnZlciAgdGhyb3cgU3RhY2tPdmVyZmxvd0Vycm9yCisqIFRJTktFUlBPUC0yMjQ4IEluc3RhYmlsaXR5IG9mIGRyaXZlciBmb3IgYmxvY2tlZCByZXF1ZXN0cworKiBUSU5LRVJQT1AtMjI1NyB0cmFuc2FjdGlvbiBpdHR5ICBtYXkgc3RpbGwgYmUgdmlzaXRlZCBhZnRlciBjb21taXQKKyogVElOS0VSUE9QLTIyNjQgR3JlbWxpbiBQeXRob24gc2hvdWxkIGRlc2VyaWFsaXplIGc6RGF0ZSB0byBVVEMKKworPT09PSBJbXByb3ZlbWVudHMKKworKiBUSU5LRVJQT1AtMTA4NCBCcmFuY2ggb3B0aW9uIHRva2VucyBzaG91bGQgYmUgYWxsb3dlZCB0byBiZSB0cmF2ZXJzYWxzLgorKiBUSU5LRVJQT1AtMTU1MyBEZXByZWNhdGUgc3RvcmUoKSBpbiBmYXZvciBvZiBhZ2dyZWdhdGUoU2NvcGUpCisqIFRJTktFUlBPUC0xOTIxIFN1cHBvcnQgaGFzTmV4dCB0ZXJtaW5hbCBzdGVwIGluIEdMVnMKKyogVElOS0VSUE9QLTIwMjAgU3VwcG9ydCB3aXRoQ29tcHV0ZXIoKSBmb3IgamF2YXNjcmlwdAorKiBUSU5LRVJQT1AtMjIyMyBVcGRhdGUgamFja3NvbiBkYXRhYmluZCB0byAyLjkuOQorKiBUSU5LRVJQT1AtMjIzNiBJbXByb3ZlIGVycm9yIG1lc3NhZ2luZyBmb3IgVGlua2VyR3JhcGggSWRNYW5hZ2VycyB0aGF0IGZhaWwgb24gY29udmVyc2lvbnMKKyogVElOS0VSUE9QLTIyMzcgUHJldmVudCBlcnJvciB3aGVuIGNsb3Npbmcgc2Vzc2lvbnMgdGhhdCBkb24ndCBleGlzdCAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIyNDIgQnVtcCB0byBuZXR0eSA0LjEuMzYKKyogVElOS0VSUE9QLTIyNDMgQWRkIHVzZXItYWdlbnQgdG8gUmVxdWVzdE9wdGlvbnMKKyogVElOS0VSUE9QLTIyNDYgQ29uc29saWRhdGUgdGhlIGVycm9yIHByb3BhZ2F0aW9uIHRvIHRoZSBjbGllbnQKKyogVElOS0VSUE9QLTIyNTAgU3VwcG9ydCB0b1N0cmluZyBzZXJpYWxpemF0aW9uIGluIEdyYXBoQmluYXJ5CisqIFRJTktFUlBPUC0yMjU2IHByb2Nlc3NBbGxTdGFydHMgb2YgQWdncmVnYXRlU3RlcCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBiYXJyaWVyIGlzIGVtcHR5CisqIFRJTktFUlBPUC0yMjYwIFVwZGF0ZSBqYWNrc29uIGRhdGFiaW5kIDIuOS45LjEKKyogVElOS0VSUE9QLTIyNjUgRGVwcmVjYXRlIFRyYXZlcnNhbC5nZXRTaWRlRWZmZWN0cygpIGZ1bmN0aW9uYWxpdHkgZm9yIHJlbW90aW5nIHB1cnBvc2VzCisqIFRJTktFUlBPUC0yMjcwIERlcHJlY2F0ZSBtdWx0aS9tZXRhcHJvcGVydHkgc3VwcG9ydCBpbiBOZW80agorKiBUSU5LRVJQT1AtMjI3MSBBZGQgY29uc29sZSBwcmVmZXJlbmNlIHRvIGNvbnRyb2wgc2VydmVyLW9yaWdpbmF0ZWQgd2FybmluZyBkaXNwbGF5CisqIFRJTktFUlBPUC0yMjcyIFJlbmFtZSBzdGVwcyBhbmQgdG9rZW5zIHRoYXQgY29uZmxpY3Qgd2l0aCBzdGFuZGFyZCBweXRob24gZnVuY3Rpb25zCisKK1tbcmVsZWFzZS0zLTQtMl1dCis9PT0gVGlua2VyUG9wIDMuNC4yIChSZWxlYXNlIERhdGU6IE1heSAyOCwgMjAxOSkKKworVGhpcyByZWxlYXNlIGFsc28gaW5jbHVkZXMgY2hhbmdlcyBmcm9tIDw8cmVsZWFzZS0zLTMtNywgMy4zLjc+Pi4KKworKiBBbGxvdyBhIGBUcmF2ZXJzYWxgIHRvIGtub3cgd2hhdCBgVHJhdmVyc2FsU291cmNlYCBpdCBzcGF3bmVkIGZyb20uCisqIEZpeGVkIHByb2JsZW0gd2l0aCBjb25uZWN0aW9uIHBvb2wgc2l6aW5nIGFuZCByZXRyeS4KKyogQWRkZWQgc3RhdHVzIGF0dHJpYnV0ZSBmb3Igd2FybmluZ3MgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4KKyogTW9kaWZpZWQgR3JlbWxpbiBDb25zb2xlIHRvIHJlcG9ydCB3YXJuaW5nIHN0YXR1cyBhdHRyaWJ1dGVzLgorKiBDaGFuZ2VkIGA6PmAgaW4gR3JlbWxpbiBDb25zb2xlIHRvIHN1Ym1pdCB0aGUgY2xpZW50LXNpZGUgdGltZW91dCBvbiBlYWNoIHJlcXVlc3QuCisqIFByb3ZpZGVkIG1ldGhvZCB0byBvdmVycmlkZSB0aGUgcmVxdWVzdCBpZGVudGlmaWVyIHdpdGggYFJlcXVlc3RPcHRpb25zYC4KKyogQWRkZWQgb3B0aW9uIHRvIHNldCBwZXItcmVxdWVzdCBzZXR0aW5ncyBvbiBhIGBUcmF2ZXJzYWxgIHN1Ym1pdHRlZCB2aWEgYEJ5dGVjb2RlYC4KKyogRml4ZWQgdGhlIEdyeW8gcmVnaXN0cmF0aW9uIGZvciBgT3B0aW9uc1N0cmF0ZWd5YCBhcyBpdCB3YXMgbm90IHNlcmlhbGl6aW5nIHN0YXRlIHByb3Blcmx5LgorCis9PT09IEJ1Z3MKKworKiBUSU5LRVJQT1AtMjA5MCBBZnRlciBydW5uaW5nIGJhY2tlbmQgZm9yIGEgZGF5IG9yIHNvIFN5c3RlbS5JTy5JT0V4Y2VwdGlvbiBrZWVwIHRocm93aW5nCisqIFRJTktFUlBPUC0yMTEyIEZvbGRpbmcgaW4gcHJvcGVydHkoKSBzdGVwIGlzIG5vdCBiZWluZyBvcHRpbWFsbHkgcGVyZm9ybWVkCisqIFRJTktFUlBPUC0yMTgwIGdyZW1saW4uc2ggZG9lc24ndCB3b3JrIHdoZW4gZGlyZWN0b3JpZXMgY29udGFpbiBzcGFjZXMKKyogVElOS0VSUE9QLTIxODMgSW50ZXJwcmV0ZXJNb2RlQVNUVHJhbnNmb3JtYXRpb24gbmVlZHMgdG8gYmUgbW9yZSBzcGVjaWZpYyBhYm91dCB3aGF0IGl0IHRyYW5zZm9ybXMKKyogVElOS0VSUE9QLTIxODkgQ29ubmVjdGVkQ29tcG9uZW50IHRlc3QgYXNzdW1lcyBmaXhlZCBvcmRlciBvZiB2ZXJ0aWNlcworKiBUSU5LRVJQT1AtMjE5NCBFbmZvcmNpbmcgYW4gb3JkZXIgb24gcHJvcGVydGllcyBpbiBvbmUgdGVzdCBtZXRob2Qgb2YgQ2hvb3NlVGVzdAorKiBUSU5LRVJQT1AtMjE5NiBQYXJ0aXRpb25TdHJhdGVneSB3aXRoIGluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKSBjYW4ndCBhZGQgbGFiZWxlZCB2ZXJ0ZXgKKyogVElOS0VSUE9QLTIxOTggRG9jdW1lbnRhdGlvbiBmb3IgU3RvcmUgY29udHJhZGljdHMgaXRzZWxmCisqIFRJTktFUlBPUC0yMTk5IHdpdGhpbiBzdGVwIGRvZXMgbm90IHdvcmsgd2l0aCBtb3JlIHRoYW4gdHdvIHBhcmFtZXRlcnMgd2l0aCBweXRob24KKyogVElOS0VSUE9QLTIyMDAgQWRkRWRnZVN0YXJ0U3RlcCB1c2VkIERldGFjaGVkRmFjdG9yeS5kZXRhY2ggaW5zdGVhZCBvZiBFdmVudFN0cmF0ZWd5LmRldGFjaAorKiBUSU5LRVJQT1AtMjIwNCBDbGllbnQgcmVjZWl2ZXMgbm8gcmVzcG9uc2Ugb24gZmFpbGVkIHJlcXVlc3QKKyogVElOS0VSUE9QLTIyMDYgQ2VydGFpbiB0eXBlcyBpbiBqYXZhc2NyaXB0IGRvbid0IGFwcGVhciB0byBzZXJpYWxpemUgd2l0aCBhIEdyYXBoU09OIHR5cGUKKyogVElOS0VSUE9QLTIyMTIgUGF0aCBpcyBub3QgZGV0YWNoaW5nIHByb3Blcmx5IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucworKiBUSU5LRVJQT1AtMjIxNyBSYWNlIGNvbmRpdGlvbiBpbiBHcmVtbGluLm5ldCBkcml2ZXIgY29ubmVjdGlvbgorCis9PT09IEltcHJvdmVtZW50cworCisqIFRJTktFUlBPUC0yMDg5IEphdmFzY3JpcHQgRFNMIHN1cHBvcnQKKyogVElOS0VSUE9QLTIxNzkgSGF2ZSBvLmEudC5nLmRyaXZlci5zZXIuU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiBleHRlbmQgSU9FeGNlcHRpb24KKyogVElOS0VSUE9QLTIxODEgQWxsb3cgY3RybCtjIHRvIGJyZWFrIG91dCBvZiBhIGxvbmcgcnVubmluZyBwcm9jZXNzIGluIEdyZW1saW4gQ29uc29sZQorKiBUSU5LRVJQT1AtMjE4MiBSZW1vdmUgZ3BlcmZ1dGlscyBmcm9tIEdyZW1saW4gQ29uc29sZSAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIxOTAgRG9jdW1lbnQgR3JlbWxpbiBzYW5pdGl6YXRpb24gYmVzdCBwcmFjdGljZXMKKyogVElOS0VSUE9QLTIxOTEgSW1wbGVtZW50IEVkZ2VMYWJlbFZlcmlmaWNhdGlvblN0cmF0ZWd5CisqIFRJTktFUlBPUC0yMTkzIEFsbG93IGEgVHJhdmVyc2FsIHRvIGtub3cgd2hhdCBUcmF2ZXJzYWxTb3VyY2UgaXQgc3Bhd25lZCBmcm9tCisqIFRJTktFUlBPUC0yMjAzIEJpbmQgdGhlIGNvbnNvbGUgdGltZW91dCB0byB0aGUgcmVxdWVzdCB0aW1lb3V0CisqIFRJTktFUlBPUC0yMjA4IEluY2x1ZGUgaW5qZWN0KCkgaW4gRFNMcyBnZW5lcmF0ZWQgd2l0aCBKYXZhIGFubm90YXRpb24gcHJvY2Vzc29yCisqIFRJTktFUlBPUC0yMjExIFByb3ZpZGUgQVBJIHRvIGFkZCBwZXIgcmVxdWVzdCBvcHRpb24gZm9yIGEgYnl0ZWNvZGUKKyogVElOS0VSUE9QLTIyMTYgQ29uc2lkZXIgYWRkaW5nIGNvbnZlbnRpb25hbCBzdGF0dXMgYXR0cmlidXRlIGtleSBmb3Igd2FybmluZ3MKKyogVElOS0VSUE9QLTIyMTkgVXBncmFkZSBOZXR0eSB2ZXJzaW9uCisKK1tbcmVsZWFzZS0zLTQtMV1dCis9PT0gVGlua2VyUG9wIDMuNC4xIChSZWxlYXNlIERhdGU6IE1hcmNoIDE4LCAyMDE5KQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy02LCAzLjMuNj4+LgorCisqIEdyZW1saW4uTkVUIGRyaXZlcjogRml4ZWQgcmVtb3ZhbCBvZiBjbG9zZWQgY29ubmVjdGlvbnMgYW5kIGFkZGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmcuCisqIEFkZGVkIEdyYXBoQmluYXJ5IHNlcmlhbGl6ZXIgZm9yIFRyYXZlcnNhbE1ldHJpY3MKKyogQWRkZWQgcmVnaXN0cmF0aW9uIGZvciBgU3BhcnFsU3RyYXRlZ3lgIGZvciBHcmFwaFNPTi4KKyogRml4ZWQgdXAgYFNwYXJxbFN0cmF0ZWd5YCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVzZWQgcHJvcGVybHkgd2l0aCBgUmVtb3RlU3RyYXRlZ3lgLgorKiBGaXhlZCBgQnl0ZUJ1ZmZlcmAgc2VyaWFsaXphdGlvbiBmb3IgR3JhcGhCaW5hcnkuCisqIEZpeGVkIGBQYXRoLnRvU3RyaW5nKClgIGluIGBncmVtbGluLWphdmFzY3JpcHRgIHdoaWNoIHdhcyByZWZlcmVuY2luZyBhbiBpbnZhbGlkIG9iamVjdC4KKyogRml4ZWQgcG90ZW50aWFsIGZvciBhbiBpbmZpbml0ZSBsb29wIGluIGNvbm5lY3Rpb24gY3JlYXRpb24gZm9yIGBncmVtbGluLWRvdG5ldGAuCisqIEFkZGVkIGZhbGxiYWNrIHJlc29sdmVyIHRvIGBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5YCBmb3IgR3JhcGhCaW5hcnkuCisqIEFkZGVkIGVhc2llciB0byB1bmRlcnN0YW5kIGV4Y2VwdGlvbnMgZm9yIGNvbm5lY3Rpb24gcHJvYmxlbXMgaW4gdGhlIEdyZW1saW4uTmV0IGRyaXZlci4KKyogU3VwcG9ydCBjb25maWd1cmluZyB0aGUgdHlwZSByZWdpc3RyeSBidWlsZGVyIGZvciBHcmFwaEJpbmFyeS4KKyogQnVtcCB0byBHcm9vdnkgMi41LjYuCisqIFJlbGVhc2Ugd29ya2luZyBidWZmZXJzIGluIGNhc2Ugb2YgZmFpbHVyZSBmb3IgR3JhcGhCaW5hcnkuCisqIEdyYXBoQmluYXJ5OiBVc2UgdGhlIHNhbWUgYEJ5dGVCdWZgIGluc3RhbmNlIHRvIHdyaXRlIGR1cmluZyBzZXJpYWxpemF0aW9uLiBDaGFuZ2VkIHNpZ25hdHVyZSBvZiB3cml0ZSBtZXRob2RzIGluIHR5cGUgc2VyaWFsaXplcnMuCisqIFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIGluIEdyYXBoQmluYXJ5J3MgYFJlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXJgLgorKiBDaGFuZ2VkIGBTcGFycWxUcmF2ZXJzYWxTb3VyY2VgIHNvIGFzIHRvIGVuYWJsZSBHcmVtbGluIHN0ZXBzIHRvIGJlIHVzZWQgdG8gcHJvY2VzcyByZXN1bHRzIGZyb20gdGhlIGBzcGFycWwoKWAgc3RlcC4KKyogR3JhcGhCaW5hcnk6IENhY2hlIGV4cHJlc3Npb24gdG8gb2J0YWluIHRoZSBtZXRob2QgaW4gYFBTZXJpYWxpemVyYC4KKworPT09PSBCdWdzCisKKyogVElOS0VSUE9QLTE5OTIgY291bnQgaGFzIG5lZ2F0aXZlIHRpbWUgaW4gcHJvZmlsZQorKiBUSU5LRVJQT1AtMjEyNiB0b1N0cmluZygpIG1ldGhvZHMgbm90IHRocmVhZC1zYWZlCisqIFRJTktFUlBPUC0yMTM1IEdyZW1saW4uTmV0IENvbm5lY3Rpb25Qb29sIGRvZXNuJ3QgaGFuZGxlIGNsb3NlZCBpZGxlIGNvbm5lY3Rpb25zIHByb3Blcmx5CisqIFRJTktFUlBPUC0yMTM5IEVycm9ycyBkdXJpbmcgcmVxdWVzdCBzZXJpYWxpemF0aW9uIGluIFdlYlNvY2tldEdyZW1saW5SZXF1ZXN0RW5jb2Rlci9OaW9HcmVtbGluUmVxdWVzdEVuY29kZXIgYXJlIG5vdCByZXBvcnRlZCB0byB0aGUgY2xpZW50CisqIFRJTktFUlBPUC0yMTQxIEJ5dGVCdWZmZXJTZXJpYWxpemVyIG1vZGlmaWVzIGJ1ZmZlcidzIHBvc2l0aW9uCisqIFRJTktFUlBPUC0yMTQ4ICJubyBjb25uZWN0aW9uIGF2YWlsYWJsZSEiIGlzIGJlaW5nIHRocm93biBkZXNwaXRlIGxvdHMgb2YgZnJlZSBjb25uZWN0aW9ucworKiBUSU5LRVJQT1AtMjE1MiBQYXRoIHRvU3RyaW5nIGZhaWxzIGluIEdyZW1saW4gSmF2YVNjcmlwdAorKiBUSU5LRVJQT1AtMjE1MyBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBmcm9tIFJlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXIgKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMTU0IEdyYXBoQmluYXJ5OiBTZXJpYWxpemVycyBzaG91bGQgcmVsZWFzZSByZXNvdXJjZXMgaW4gY2FzZSBvZiBmYWlsdXJlcworKiBUSU5LRVJQT1AtMjE1NSBTaXR1YXRpb24gY2FuIG9jY3VyIHRoYXQgY2F1c2VzIGluZmluaXRlIGFtb3VudCBvZiBjb25uZWN0aW9uIHRvIGJlIG9wZW5lZCwgY2F1c2luZyBTeXN0ZW0uTmV0LldlYlNvY2tldHMuV2ViU29ja2V0RXhjZXB0aW9uCisqIFRJTktFUlBPUC0yMTYxIEdyYXBoQmluYXJ5OiBXcml0ZSBzZXJpYWxpemF0aW9uIHBlcmZvcm1hbmNlIGlzc3VlCisqIFRJTktFUlBPUC0yMTY5IFJlc3BvbnNlcyBleGNlZWRpbmcgbWF4Q29udGVudExlbmd0aCBjYXVzZSBzdWJzZXF1ZW50IHF1ZXJpZXMgdG8gaGFuZworKiBUSU5LRVJQT1AtMjE3MiBQYXJ0aXRpb25TdHJhdGVneSBkb2Vzbid0IGFwcGx5IHRvIEFkZEVkZ2VTdGFydFN0ZXAKKyogVElOS0VSUE9QLTIxNzMgSW5jb3JyZWN0IHJlc2V0IG9mIGxvZyBsZXZlbCBpbiBpbnRlZ3JhdGlvbiB0ZXN0CisqIFRJTktFUlBPUC0yMTc3IFN0cmVhbWluZyByZXNwb25zZSBpbW1lZGlhdGVseSBhZnRlciBhdXRoZW50aWNhdGlvbiBzdG9wcyBhZnRlciBmaXJzdCBwYXJ0aWFsIHJlc3BvbnNlCisKKz09PT0gSW1wcm92ZW1lbnRzCisKKyogVElOS0VSUE9QLTE0MzUgU3VwcG9ydCBmb3IgZXh0ZW5kZWQgR3JhcGhTT04gaW4gZ3JlbWxpbi1weXRob24KKyogVElOS0VSUE9QLTE4ODIgQXBwbHkgcmFuZ2UgYW5kIGxpbWl0IHN0ZXBzIGFzIGVhcmx5IGFzIHBvc3NpYmxlCisqIFRJTktFUlBPUC0xOTk4IElvR3JhcGhUZXN0IHVzZSBkaWZmZXJlbnQgc2NoZW1hcyBmb3Igc3RhbmRhcmQgYW5kIHJlYWRHcmFwaCBjb25maWd1cmF0aW9ucworKiBUSU5LRVJQT1AtMjA4OCBFbmFibGUgU291cmNlTGluayBmb3IgR3JlbWxpbi5OZXQKKyogVElOS0VSUE9QLTIwOTggSW1wcm92ZSBncmVtbGluLXNlcnZlci5zaCBoZWxwIG91dHB1dAorKiBUSU5LRVJQT1AtMjEyMiBFeHBvc2Ugc3RhdHVzIGNvZGVzIGZyb20gc2VydmVyIGVycm9ycworKiBUSU5LRVJQT1AtMjEyNCBJbmxpbmVGaWx0ZXJTdHJhdGVneSBwcm9kdWNlcyB3cm9uZyByZXN1bHQKKyogVElOS0VSUE9QLTIxMjUgRXh0ZW5kIHJlbGVhc2UgdmFsaWRhdGlvbiBzY3JpcHQKKyogVElOS0VSUE9QLTIxMjcgQWRkIGc6VHJhdmVyc2FsTWV0cmljcyBhbmQgZzpNZXRyaWNzIGRlc2VyaWFsaXplcnMgZm9yIGdyZW1saW5weXRob24KKyogVElOS0VSUE9QLTIxMjkgTWFzayBzZWN1cml0eSBzZWNyZXQgb3IgcGFzc3dvcmQgaW4gbG9ncworKiBUSU5LRVJQT1AtMjEzMCBDYW5ub3QgaW5zdGFudGlhdGUgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiB3aXRob3V0IHBhc3NpbmcgYW4gb3B0aW9ucyBvYmplY3QKKyogVElOS0VSUE9QLTIxMzEgTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uIGRvZXNuJ3QgcmV2ZWFsIHRoZSByZWFzb24KKyogVElOS0VSUE9QLTIxMzQgQnVtcCB0byBHcm9vdnkgMi41LjYKKyogVElOS0VSUE9QLTIxMzYgSW5zaWRlIGxvd2VyIGJvdW5kIGluY2x1c2lvbiAoZG9jdW1lbnRhdGlvbikKKyogVElOS0VSUE9QLTIxMzggUHJvdmlkZSBhIGNvbmZpZ3VyYXRpb24gdG8gZGlzYWJsZSB0aGUgZ2xvYmFsIGNsb3N1cmUgY2FjaGUKKyogVElOS0VSUE9QLTIxNDAgVGVzdCBidWlsZCB3aXRoIERvY2tlciBhdXRvbWF0aWNhbGx5CisqIFRJTktFUlBPUC0yMTQ0IEJldHRlciBoYW5kbGUgQXV0aGVudGljYXRvciBpbnN0YW5jZSBmYWlsdXJlcworKiBUSU5LRVJQT1AtMjE0NyBBZGQgR3JhcGhCaW5hcnkgc2VyaWFsaXplciBmb3IgVHJhdmVyc2FsTWV0cmljcworKiBUSU5LRVJQT1AtMjE0OSBHcmFwaEJpbmFyeTogTWFrZSB0eXBlIHNlcmlhbGl6ZXIgcmVzb2x1dGlvbiBwbHVnZ2FibGUKKyogVElOS0VSUE9QLTIxNTAgR3JhcGhCaW5hcnk6IFN1cHBvcnQgY29uZmlndXJpbmcgdGhlIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgYnVpbGRlciBjbGFzcyBpbiBjb25maWcKKyogVElOS0VSUE9QLTIxNjMgSmF2YVRyYW5zbGF0b3IgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzCisqIFRJTktFUlBPUC0yMTY0IEJ5dGVjb2RlJ3MgaGFzaENvZGUgaW1wbCAoYW5kIGl0cyBpbm5lciBjbGFzc2VzKSBjYW4gcHJvZHVjZSBoYXNoIGNvbGxpc2lvbnMKKyogVElOS0VSUE9QLTIxNjUgUHJlZmVyIGNvbW1vbnMtbGFuZzMgdG8gY29tbW9ucy1sYW5nCisqIFRJTktFUlBPUC0yMTY2IEdyYXBoQmluYXJ5OiBQIGRlc2VyaWFsaXphdGlvbiBzaG91bGQgYmUgb3B0aW1pemVkCisqIFRJTktFUlBPUC0yMTY3IEdyZW1saW4gSmF2YXNjcmlwdCBUcmF2ZXJzYWwgYXMgYXN5bmMgaXRlcmFibGUKKyogVElOS0VSUE9QLTIxNzEgQWxsb3cgU1BBUlFMIHRvIGJlIGV4dGVuZGVkIHdpdGggR3JlbWxpbiBzdGVwcworKiBUSU5LRVJQT1AtMjE3NCBJbXByb3ZlIERvY2tlciBJbWFnZSBTZWN1cml0eQorCitbW3JlbGVhc2UtMy00LTBdXQorPT09IFRpbmtlclBvcCAzLjQuMCAoUmVsZWFzZSBEYXRlOiBKYW51YXJ5IDIsIDIwMTkpCisKK1RoaXMgcmVsZWFzZSBhbHNvIGluY2x1ZGVzIGNoYW5nZXMgZnJvbSA8PHJlbGVhc2UtMy0zLTQsIDMuMy40Pj4gYW5kIDw8cmVsZWFzZS0zLTMtNSwgMy4zLjU+Pi4KKworKiBDaGFuZ2VkIFB5dGhvbiAiYmluZGluZ3MiIHRvIHVzZSBhbiBhY3R1YWwgYEJpbmRpbmdzYCBvYmplY3QgcmF0aGVyIHRoYW4gYSAyLXR1cGxlLgorKiBJbXByb3ZlZCB0aGUgR3JlbWxpbi5ORVQgZHJpdmVyOiBJdCBub3cgdXNlcyByZXF1ZXN0IHBpcGVsaW5pbmcgYW5kIGl0cyBgQ29ubmVjdGlvblBvb2xgIGhhcyBhIGZpeGVkIHNpemUuCisqIEltcGxlbWVudGVkIGBJbmRleFN0ZXBgIHdoaWNoIGFsbG93cyB0byB0cmFuc2Zvcm0gbG9jYWwgY29sbGVjdGlvbnMgaW50byBpbmRleGVkIGNvbGxlY3Rpb25zIG9yIG1hcHMuCisqIE1hZGUgYHZhbHVlTWFwKClgIGF3YXJlIG9mIGBieWAgYW5kIGB3aXRoYCBtb2R1bGF0b3JzIGFuZCBkZXByZWNhdGVkIGB2YWx1ZU1hcChib29sZWFuKWAgb3ZlcmxvYWRzLgorKiBVc2UgYENvbXBhcmUuZXFgIGluIGBDb250YWluc2AgcHJlZGljYXRlcyB0byBlbnN1cmUgdGhlIHNhbWUgZmlsdGVyIGJlaGF2aW9yIGZvciBudW1lcmljIHZhbHVlcy4KKyogQWRkZWQgYE9wdGlvbnNTdHJhdGVneWAgdG8gYWxsb3cgdHJhdmVyc2FscyB0byB0YWtlIGFyYml0cmFyeSB0cmF2ZXJzYWwtd2lkZSBjb25maWd1cmF0aW9ucy4KKyogQWRkZWQgdGV4dCBwcmVkaWNhdGVzLgorKiBBZGRlZCBgQnVsa1NldGAgYXMgYSBHcmFwaFNPTiB0eXBlIHdpdGggc3VwcG9ydCBpbiBhbGwgbGFuZ3VhZ2UgdmFyaWFudHMuCisqIEFkZGVkIGBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lgIHRvIGF1dG8tZGV0YWNoIGVsZW1lbnRzIHRvICJyZWZlcmVuY2UiIGZyb20gYSB0cmF2ZXJzYWwuCisqIEFkZGVkIGluaXRpYWwgcmVsZWFzZSBvZiB0aGUgR3JhcGhCaW5hcnkgc2VyaWFsaXphdGlvbiBmb3JtYXQgd2l0aCBKYXZhIHN1cHBvcnQuCisqIEFsbG93ZWQgYEltcG9ydEN1c3RvbWl6ZXJgIHRvIGFjY2VwdCBmaWVsZHMuCisqIFJlbW92ZWQgZ3Jvb3Z5LXNxbCBkZXBlbmRlbmN5LgorKiBNb2RpZmllZCBgTXV0YXRpbmdgIHN0ZXBzIHNvIHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyIG1hcmtlZCBhcyBgZmluYWxgLgorKiBSZXdyb3RlIGBDb25uZWN0aXZlU3RyYXRlZ3lgIHRvIHN1cHBvcnQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBpbmZpeCBub3RhdGlvbnMgaW4gYSBzaW5nbGUgdHJhdmVyc2FsLgorKiBHcmFwaFNPTiBgTWVzc2FnZVNlcmlhbGl6ZXJgIHMgd2lsbCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIHRoZSBHcmVtbGluU2VydmVyTW9kdWxlIHRvIGEgcHJvdmlkZWQgR3JhcGhTT05NYXBwZXIuCisqIFJlbW92ZWQgc3VwcG9ydCBmb3IgYC1pYCBvcHRpb24gaW4gR3JlbWxpbiBTZXJ2ZXIgd2hpY2ggd2FzIHByZXZpb3VzbHkgZGVwcmVjYXRlZC4KKyogSW1wbGVtZW50ZWQgYFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1gIGFuZCB0aGUgYHNob3J0ZXN0UGF0aCgpYCBzdGVwLgorKiBgQWJzdHJhY3RHcmFwaFByb3ZpZGVyYCB1c2VzIGBnLmlvKClgIGZvciBsb2FkaW5nIHRlc3QgZGF0YS4KKyogQWRkZWQgdGhlIGBpbygpYCBzdGFydCBzdGVwIGFuZCBgcmVhZCgpYCBhbmQgYHdyaXRlKClgIHRlcm1pbmF0aW9uIHN0ZXBzIHRvIHRoZSBHcmVtbGluIGxhbmd1YWdlLgorKiBBZGRlZCBgR3JhcGhGZWF0dXJlcy5zdXBwb3J0c0lvUmVhZCgpYCBhbmQgYEdyYXBoRmVhdHVyZXMuc3VwcG9ydHNJb1dyaXRlKClgLgorKiBEZXByZWNhdGVkIGBHcmFwaC5pbygpYCBhbmQgcmVsYXRlZCBpbmZyYXN0cnVjdHVyZS4KKyogYEdyYXBoTUxSZWFkZXJgIGJldHRlciBoYW5kbGVzIGVkZ2UgYW5kIHZlcnRleCBwcm9wZXJ0aWVzIHdpdGggdGhlIHNhbWUgbmFtZS4KKyogTWFpbnRhaW5lZCBvcmRlciBvZiBhbm5vdGF0aW9ucyBpbiBtZXRyaWNzIHJldHVybmVkIGZyb20gYHByb2ZpbGUoKWAtc3RlcC4KKyogUmVmYWN0b3JlZCBgVHlwZVRyYW5zbGF0b3JgIHRvIGJlIGRpcmVjdGx5IGV4dGVuc2libGUgZm9yIGBTY3JpcHRUcmFuc2xhdG9yYCBmdW5jdGlvbnMuCisqIEJ1bXBlZCB0byBOZXR0eSA0LjEuMjUuCisqIEJ1bXBlZCB0byBTcGFyayAyLjQuMC4KKyogQnVtcGVkIHRvIEdyb292eSAyLjUuNC4KKyogTW9kaWZpZWQgR3JlbWxpbiBTZXJ2ZXIgdG8gcmV0dXJuIGEgImhvc3QiIHN0YXR1cyBhdHRyaWJ1dGUgb24gcmVzcG9uc2VzLgorKiBBZGRlZCBhYmlsaXR5IHRvIHRoZSBKYXZhLCAuTkVULCBQeXRob24gYW5kIEphdmFTY3JpcHQgZHJpdmVycyB0byByZXRyaWV2ZSBzdGF0dXMgYXR0cmlidXRlcyByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuCisqIE1vZGlmaWVkIEphdmEgYW5kIEdyZW1saW4uTmV0IGBSZXNwb25zZUV4Y2VwdGlvbmAgdG8gaW5jbHVkZSBzdGF0dXMgY29kZSBhbmQgc3RhdHVzIGF0dHJpYnV0ZXMuCisqIE1vZGlmaWVkIFB5dGhvbiBgR3JlbWxpblNlcnZlckVycm9yYCB0byBpbmNsdWRlIHN0YXR1cyBhdHRyaWJ1dGVzLgorKiBNb2RpZmllZCB0aGUgcmV0dXJuIHR5cGUgZm9yIGBJR3JlbWxpbkNsaWVudC5TdWJtaXRBc3luYygpYCB0byBiZSBhIGBSZXN1bHRTZXRgIHJhdGhlciB0aGFuIGFuIGBJUmVhZE9ubHlDb2xsZWN0aW9uYC4KKyogRGVwcmVjYXRlZCB0d28gYHN1Ym1pdCgpYC1yZWxhdGVkIG1ldGhvZHMgb24gdGhlIEphdmEgZHJpdmVyIGBDbGllbnRgIGNsYXNzLgorKiBBZGRlZCBgQ2xpZW50LnN1Ym1pdCgpYCBvdmVybG9hZHMgdGhhdCBhY2NlcHQgcGVyLXJlcXVlc3QgYFJlcXVlc3RPcHRpb25zYC4KKyogQWRkZWQgc3BhcnFsLWdyZW1saW4uCisqIEZpeGVkIGEgYnVnIGluIGR5bmFtaWMgR3J5byByZWdpc3RyYXRpb24gd2hlcmUgcmVnaXN0cmF0aW9ucyB0aGF0IGRpZCBub3QgaGF2ZSBzZXJpYWxpemVycyB3b3VsZCBmYWlsLgorKiBNb3ZlZCBgUGFyYW1ldGVyaXppbmdgIGludGVyZmFjZSB0byB0aGUgYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcGAgcGFja2FnZSB3aXRoIG90aGVyIG1hcmtlciBpbnRlcmZhY2VzIG9mIGl0cyB0eXBlLgorKiBSZXBsYWNlZCBgUGFyYW1ldGVyaXppbmcuYWRkUHJvcGVydHlNdXRhdGlvbnMoKWAgd2l0aCBgQ29uZmlndXJpbmcuY29uZmlndXJlKClgLgorKiBDaGFuZ2VkIGludGVyZmFjZSBoaWVyYXJjaHkgZm9yIGBQYXJhbWV0ZXJpemluZ2AgYW5kIGBNdXRhdGluZ2AgaW50ZXJmYWNlcyBhcyB0aGV5IGFyZSB0aWdodGx5IHJlbGF0ZWQuCisqIEludHJvZHVjZWQgdGhlIGB3aXRoKGssdilgIGFuZCBgd2l0aChrKWAgc3RlcCBtb2R1bGF0b3JzIHdoaWNoIGNhbiBzdXBwbHkgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGBDb25maWd1cmluZ2Agc3RlcHMuCisqIEFkZGVkIGBPcHRpb25zU3RyYXRlZ3lgIHRvIGFsbG93IHRyYXZlcnNhbHMgdG8gdGFrZSBhcmJpdHJhcnkgdHJhdmVyc2FsLXdpZGUgY29uZmlndXJhdGlvbnMuCisqIEludHJvZHVjZWQgdGhlIGB3aXRoKGssdilgIGFuZCBgd2l0aChrKWAgdHJhdmVyYWwgc291cmNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aGljaCBjYW4gc3VwcGx5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgdHJhdmVyc2FsLgorKiBBZGRlZCBgY29ubmVjdGVkQ29tcG9uZW50KClgIHN0ZXAgYW5kIHJlbGF0ZWQgYFZlcnRleFByb2dyYW1gLgorKiBBZGRlZCBgc3VwcG9ydHNVcHNlcnQoKWAgb3B0aW9uIHRvIGBWZXJ0ZXhGZWF0dXJlc2AgYW5kIGBFZGdlRmVhdHVyZXNgLgorKiBgbWluKClgIGFuZCBgbWF4KClgIG5vdyBzdXBwb3J0IGFsbCB0eXBlcyBpbXBsZW1lbnRpbmcgYENvbXBhcmFibGVgLgorKiBDaGFuZ2UgdGhlIGB0b1N0cmluZygpYCBvZiBgUGF0aGAgdG8gYmUgc3RhbmRhcmRpemVkIGFzIG90aGVyIGdyYXBoIGVsZW1lbnRzIGFyZS4KKyogYGhhZG9vcC1ncmVtbGluYCBubyBsb25nZXIgZ2VuZXJhdGVzIGEgdGVzdCBhcnRpZmFjdC4KKyogQWxsb3dlZCBgR3JhcGhQcm92aWRlcmAgdG8gZXhwb3NlIGEgY2FjaGVkIGBHcmFwaC5GZWF0dXJlYCBvYmplY3Qgc28gdGhhdCB0aGUgdGVzdCBzdWl0ZSBjb3VsZCByZS11c2UgdGhlbSB0byBzcGVlZCB0ZXN0IHJ1bnMuCisqIEZpeGVkIGEgYnVnIGluIGBSZWR1Y2luZ0JhcnJpZXJTdGVwYCwgdGhhdCByZXR1cm5lZCB0aGUgcHJvdmlkZWQgc2VlZCB2YWx1ZSBkZXNwaXRlIG5vIGVsZW1lbnRzIGJlaW5nIGF2YWlsYWJsZS4KKyogQ2hhbmdlZCB0aGUgb3JkZXIgb2YgYHNlbGVjdCgpYCBzY29wZXMuIFRoZSBvcmRlciBpcyBub3c6IG1hcHMsIHNpZGUtZWZmZWN0cywgcGF0aHMuCisqIE1vdmVkIGBUcmF2ZXJzYWxFbmdpbmVgIHRvIGBncmVtbGluLXRlc3RgIGFzIGl0IGhhcyBsb25nIGJlZW4gb25seSB1c2VkIGluIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCisqIE5lc3RlZCBsb29wIHN1cHBvcnQgYWRkZWQgYWxsb3dpbmcgYHJlcGVhdCgpYCBzdGVwcyB0byBiZSBuZXN0ZWQuCisqIEV2ZW50cyBmcm9tIGBFdmVudFN0cmF0ZWd5YCByYWlzZWQgZnJvbSAibmV3IiBtdXRhdGlvbnMgd2lsbCBub3cgcmV0dXJuIGEgYEtleWVkVmVydGV4UHJvcGVydHlgIG9yIGBLZXllZFByb3BlcnR5YCBhcyBpcyBhcHByb3ByaWF0ZS4KKyogYE11dGF0aW9uTGlzdGVuZXIjdmVydGV4UHJvcGVydHlDaGFuZ2VkKFZlcnRleCwgVmVydGV4UHJvcGVydHksIE9iamVjdCwgT2JqZWN0Li4uKWAgbm8gbG9uZ2VyIGhhcyBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisqIERlcHJlY2F0ZWQgYEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwYCBhcyBpdCBpcyBub3cgYW5hbG9nb3VzIHRvIGBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDBgLgorKiBNb3ZlZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgYFJlbW90ZUdyYXBoYCB0byBgZ3JlbWxpbi10ZXN0YCBhcyBpdCBpcyBub3cganVzdCBhIHRlc3RpbmcgY29tcG9uZW50LgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBgUmVtb3RlU3RyYXRlZ3kuaW5zdGFuY2UoKWAgYW5kIHRoZSBzdHJhdGVneSBubyBsb25nZXIgaGFzIGFueSBjb25uZWN0aW9uIHRvIGBSZW1vdGVHcmFwaGAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIG1ldGhvZHMgaW4gYFN1YmdyYXBoU3RyYXRlZ3lgIGFuZCBgUGFydGl0aW9uU3RyYXRlZ3lgIGJ1aWxkZXJzLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBDcmVkZW50aWFscyBEU0wgaW5mcmFzdHJ1Y3R1cmUuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBSZW1vdGVDb25uZWN0aW9uI3N1Ym1pdChUcmF2ZXJzYWwpYCBhbmQgYFJlbW90ZUNvbm5lY3Rpb24jc3VibWl0KEJ5dGVjb2RlKWAgbWV0aG9kcy4KKyogUmVtb3ZlZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgYE11dGF0aW9uTGlzdGVuZXIjdmVydGV4UHJvcGVydHlDaGFuZ2VkKFZlcnRleCwgUHJvcGVydHksIE9iamVjdCwgT2JqZWN0Li4uKWAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBPcFNlbGVjdG9ySGFuZGxlcmAgY29uc3RydWN0b3IuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBjbG9zZSgpYCBmcm9tIGBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lYCB3aGljaCBubyBsb25nZXIgaW1wbGVtZW50cyBgQXV0b0Nsb3NlYWJsZWAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBnZXRHcmFwaElucHV0Rm9ybWF0KClgIGFuZCBgZ2V0R3JhcGhPdXRwdXRGb3JtYXQoKWAgZnJvbSBgSGFkb29wQ29uZmlndXJhdGlvbmAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBBYnN0cmFjdE9wUHJvY2Vzc29yI21ha2VGcmFtZSgpYCBtZXRob2QuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBBdXRoZW50aWNhdGlvblNldHRpbmdzLmNsYXNzTmFtZWAgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gR3JlbWxpbiBTZXJ2ZXIuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBHcmFwaE1hbmFnZXJgIG1ldGhvZHMgYGdldEdyYXBocygpYCBhbmQgYGdldFRyYXZlcnNhbFNvdXJjZXMoKWAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIEdyZW1saW4gU2VydmVyIHNldHRpbmcgZm9yIGBzZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0YC4KKyogUmVtb3ZlZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgU3RydWN0dXJlIEFQSSBleGNlcHRpb25zIHJlbGF0ZWQgdG8gImVsZW1lbnQgbm90IGZvdW5kIiBzaXR1YXRpb25zLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBgcmViaW5kaW5nc2Agb3B0aW9ucyBmcm9tIHRoZSBKYXZhIGRyaXZlciBBUEkuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBMYW1iZGFDb2xsZWN0aW5nQmFycmllclN0ZXAuQ29uc3VtZXJzYCBlbnVtLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBgSGFzQ29udGFpbmVyI21ha2VIYXNDb250YWluZXJzKFN0cmluZywgUClgCisqIFJlbW92ZWQgc3VwcG9ydCBmb3IgR2lyYXBoLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBKYXZhU2NyaXB0IERyaXZlciBwcm9wZXJ0eSBgdHJhdmVyc2Vyc2Agb2YgdGhlIGBSZXN1bHRTZXRgLgorKiBncmVtbGluLXB5dGhvbjogdXNlIGV4cGxpY2l0IEJpbmRpbmdzIG9iamVjdCBmb3IgcHl0aG9uIGluc3RlYWQgb2YgYSAyLXR1cGxlCisKKz09PT0gQnVncworCisqIFRJTktFUlBPUC0xNzc3IEdyZW1saW4gLm1heCBzdGVwIHJldHVybnMgLTIxNDc0ODM2NDggZm9yIGVtcHR5IHJlc3VsdCBzZXRzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTg2OSBQcm9maWxlIHN0ZXAgYW5kIGl0ZXJhdGUgZG8gbm90IHBsYXkgbmljZWx5IHdpdGggZWFjaCBvdGhlcgorKiBUSU5LRVJQT1AtMTg5OCBJc3N1ZSB3aXRoIGJpbmRpbmdzIGluIHN0cmF0ZWdpZXMgYW5kIGxhbWJkYXMKKyogVElOS0VSUE9QLTE5MjcgR2hlcmtpbiBzY2VuYXJpbyBleHBlY3RzIGxpc3Qgd2l0aCBkdXBsaWNhdGVzLCBidXQgcmVjZWl2ZXMgZzpTZXQKKyogVElOS0VSUE9QLTE5MzMgZ3JlbWxpbi1weXRob24gbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgb24gbGFyZ2UgcmVzcG9uc2VzCisqIFRJTktFUlBPUC0xOTQ3IFBhdGggaGlzdG9yeSBpc24ndCBwcmVzZXJ2ZWQgZm9yIGtleXMgaW4gbXV0YXRpb25zCisqIFRJTktFUlBPUC0xOTQ5IEZvcm1hdHRpbmcgZXJyb3Igb24gd2Vic2l0ZQorKiBUSU5LRVJQT1AtMTk1OCBUaW5rZXJHcmFwaENvdW50U3RyYXRlZ3kgY2FuIHJldHVybiB3cm9uZyBjb3VudHMKKyogVElOS0VSUE9QLTE5NjEgRHVwbGljYXRlIGNvcGllcyBvZiBpbWFnZXMgZGlyZWN0b3J5IGluIGRvY3MKKyogVElOS0VSUE9QLTE5NjIgR3Jvb3Z5VHJhbnNsYXRvciBkb2Vzbid0IGhhbmRsZSBlbXB0eSBtYXBzCisqIFRJTktFUlBPUC0xOTYzIFVzZSBvZiByZWR1Y2luZyBzdGVwIGluIGNob29zZSgpCisqIFRJTktFUlBPUC0xOTcyIGluamVjdCgpIHRlc3RzIGFyZSB0aHJvd2luZyBleGNlcHRpb25zIGluIC5ORVQgR0xWIHRlc3RzCisqIFRJTktFUlBPUC0xOTc4IENoZWNrIGZvciBXZWJzb2NrZXQgY29ubmVjdGlvbiBzdGF0ZSB3aGVuIHJldHJpZXZlZCBmcm9tIENvbm5lY3Rpb24gUG9vbCBtaXNzaW5nCisqIFRJTktFUlBPUC0xOTc5IFNldmVyYWwgT0xBUCBpc3N1ZXMgaW4gTWF0aFN0ZXAKKyogVElOS0VSUE9QLTE5ODggbWlub3IgZXJyb3IgaW4gZG9jdW1lbnRhdGlvbgorKiBUSU5LRVJQT1AtMTk5OSBbSmF2YV1bZ3JlbWxpbi1kcml2ZXJdIFF1ZXJ5IHRvIGEgcmVtb3RlIHNlcnZlciB2aWEgdGhlIHdlYnNvY2tldCBjbGllbnQgaGFuZ3MgaW5kZWZpbml0ZWx5IGlmIHRoZSBzZXJ2ZXIgYmVjb21lcyB1bmF2YWlsYWJsZQorKiBUSU5LRVJQT1AtMjAwNSBJbnRlcm1pdHRlbnQgTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4gcmVzcG9uc2UgaGFuZGxpbmcKKyogVElOS0VSUE9QLTIwMDYgR3JhcGhNTCBzZXJpYWxpemF0aW9uIGludmFsaWQgaWYgYSB2ZXJ0ZXggYW5kIGVkZ2UgaGF2ZSBzaW1pbGFyIG5hbWVkIHByb3BlcnR5CisqIFRJTktFUlBPUC0yMDA5IFBpY2suYW55IGFuZCBQaWNrLm5vbmUgc2hvdWxkIGJlIGV4cG9zZWQgaW4gR3JlbWxpbi1KYXZhU2NyaXB0CisqIFRJTktFUlBPUC0yMDIxIFByZXZlbnQgbWF4aW11bSByZWN1cnNpb24gZGVwdGggZmFpbHVyZQorKiBUSU5LRVJQT1AtMjAyOCBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIHNob3VsZCByZWdpc3RlciBHcmVtbGluU2VydmVyTW9kdWxlIHdoZW4gbWFwcGVyIGlzIHByb3ZpZGVkCisqIFRJTktFUlBPUC0yMDI5IENvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24gZm9yIElubGluZUZpbHRlclN0cmF0ZWd5CisqIFRJTktFUlBPUC0yMDMwIEtlZXBBbGl2ZSB0YXNrIGV4ZWN1dGVkIGZvciBldmVyeSBDb25uZWN0aW9uLndyaXRlIGNhbGwKKyogVElOS0VSUE9QLTIwMzIgVXBkYXRlIGp5dGhvbi1zdGFuZGFsb25lCisqIFRJTktFUlBPUC0yMDQ0IENhbm5vdCByZWNvbm5lY3QgdG8gQXp1cmUgY29zbW9zIGhvc3QgdGhhdCBiZWNvbWVzIGF2YWlsYWJsZSBhZ2FpbgorKiBUSU5LRVJQT1AtMjA1OCBDb250YWlucyBwcmVkaWNhdGVzIHNob3VsZCByZWx5IG9uIENvbXBhcmUgcHJlZGljYXRlcyAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIwODEgUGVyc2lzdGVkT3V0cHV0UkREIG1hdGVyaWFsaXNlcyByZGQgbGF6aWx5IHdpdGggU3BhcmsgMi54CisqIFRJTktFUlBPUC0yMDkxIFdyb25nL01pc3NpbmcgZmVhdHVyZSByZXF1aXJlbWVudHMgaW4gU3RydWN0dXJlU3RhbmRhcmRUZXN0U3VpdGUKKyogVElOS0VSUE9QLTIwOTQgR3JlbWxpbiBEcml2ZXIgQ2x1c3RlciBCdWlsZGVyIHNlcmlhbGl6ZXIgbWV0aG9kIGRvZXMgbm90IHVzZSBtaW1lVHlwZSBhcyBzdWdnZXN0ZWQKKyogVElOS0VSUE9QLTIwOTUgR3JvdXBTdGVwIGxvb2tzIGZvciBpcnJlbGV2YW50IGJhcnJpZXIgc3RlcHMKKyogVElOS0VSUE9QLTIwOTYgZ3JlbWxpbnB5dGhvbjogQXR0cmlidXRlRXJyb3Igd2hlbiBjb25uZWN0aW9uIGlzIGNsb3NlZCBiZWZvcmUgcmVzdWx0IGlzIHJlY2VpdmVkCisqIFRJTktFUlBPUC0yMTAwIGNvYWxlc2NlKCkgY3JlYXRpbmcgdW5leHBlY3RlZCByZXN1bHRzIHdoZW4gdXNlZCB3aXRoIG9yZGVyKCkKKyogVElOS0VSUE9QLTIxMTMgUC5XaXRoaW4oKSBkb2Vzbid0IHdvcmsgd2hlbiBnaXZlbiBhIExpc3QgYXJndW1lbnQKKworPT09PSBJbXByb3ZlbWVudHMKKworKiBUSU5LRVJQT1AtNTUwIEdyZW1saW4gSU8gbmVlZHMgdG8gc3VwcG9ydCBib3RoIE9MVFAgYW5kIE9MQVAgbmF0dXJhbGx5LgorKiBUSU5LRVJQT1AtOTY3IFN1cHBvcnQgbmVzdGVkLXJlcGVhdCgpIHN0cnVjdHVyZXMKKyogVElOS0VSUE9QLTExMTMgR3JhcGhDb21wdXRlciBzdWJjbGFzc2VzIHNob3VsZCBzdXBwb3J0IG5hdGl2ZSBtZXRob2RzCisqIFRJTktFUlBPUC0xMTQzIFJlbW92ZSBkZXByZWNhdGVkIFRyYXZlcnNhbFNvdXJjZS5CdWlsZGVyIGFuZCBUcmF2ZXJzYWxFbmdpbmUuICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTI5NiBSZW1vdmUgZGVwcmVjYXRlZCBzZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0IGZyb20gR3JlbWxpbiBTZXJ2ZXIgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xMzQyIEFsbG93IHNldHRpbmcgc2NyaXB0RXZhbHVhdGlvblRpbWVvdXQgaW4gZHJpdmVyCisqIFRJTktFUlBPUC0xMzY1IExvZyB0aGUgc2VlZCB1c2VkIHRvIGluaXRpYWxpemUgUmFuZG9tIGluIHRlc3RzCisqIFRJTktFUlBPUC0xNDEwIG12biBpbnN0YWxsIC1EbWF2ZW4udGVzdC5za2lwPXRydWUgZG9lc24ndCB3b3JrIG9uIGEgY2xlYW4gbWFjaGluZSAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE0NDYgQWRkIGEgU3RyaW5nRmFjdG9yeSBmb3IgUGF0aCB3aGljaCBwcmVmaXhlcyB3aXRoIHR5cGUuCisqIFRJTktFUlBPUC0xNDQ3IEFkZCBzb21lIEphdmFTY3JpcHQgaW50ZWxsaWdlbmNlIHRvIHRoZSBkb2N1bWVudGF0aW9uIHNvIHRoYXQgY29tbWVudHMgYW5kIG91dHB1dCBhcmUgbm90IGNvcGllZCBpbiBhIGNvcHkgcGFzdGUKKyogVElOS0VSUE9QLTE0OTQgTWVhbnMgb2YgZXhwb3NpbmcgZXhlY3V0aW9uIGluZm9ybWF0aW9uIGZyb20gYSByZXN1bHQgcHJvZHVjZWQgYnkgUmVtb3RlQ29ubmVjdGlvbgorKiBUSU5LRVJQT1AtMTUxOCBQcm92aWRlIGEgd2F5IGZvciBwcm92aWRlcnMgdG8gZXhwb3NlIHN0YXRpYyBHcmFwaC5GZWF0dXJlcyB0byB0ZXN0cworKiBUSU5LRVJQT1AtMTUyMiBPcmRlciBvZiBzZWxlY3QoKSBzY29wZXMgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xNTk1IEdvIHRocm91Z2ggVHJhdmVyc2FsVmVydGV4UHJvZ3JhbSB3aXRoIGEgcHJvZmlsZSBhbmQgb3B0aW1pemUuCisqIFRJTktFUlBPUC0xNjI4IEltcGxlbWVudCBUcmF2ZXJzYWxTZWxlY3RTdGVwCisqIFRJTktFUlBPUC0xNjg1IEludHJvZHVjZSBvcHRpb25hbCBmZWF0dXJlIHRvIGFsbG93IGZvciB1cHNlcnRzIHdpdGhvdXQgcmVhZC1iZWZvcmUtd3JpdGUKKyogVElOS0VSUE9QLTE3MDUgUmVtb3ZlIGRlcHJlY2F0ZWQgcmViaW5kaW5ncyBvcHRpb24gKihicmVha2luZykqCisqIFRJTktFUlBPUC0xNzA3IFJlbW92ZSBkZXByZWNhdGVkIEF1dGhlbnRpY2F0aW9uU2V0dGluZ3MuY2xhc3NOYW1lIG9wdGlvbiAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE3NTUgTm8gZG9jcyBmb3IgUmVmZXJlbmNlRWxlbWVudHMKKyogVElOS0VSUE9QLTE3NjkgUHl0aG9uIGdyYXBoW2VtcHR5XSBzdHJpbmcgcmVwcmVzZW50YXRpb24gaXMgY29uZnVzaW5nCisqIFRJTktFUlBPUC0xNzc0IEdyZW1saW4gLk5FVDogU3VwcG9ydCBtaW4gYW5kIG1heCBzaXplcyBpbiBDb25uZWN0aW9uIHBvb2wKKyogVElOS0VSUE9QLTE3NzUgR3JlbWxpbiAuTkVUOiBJbXBsZW1lbnQgYSBDb25uZWN0aW9uIHdyaXRlIHF1ZXVlIHRvIHN1cHBvcnQgcmVxdWVzdCBwaXBlbGluaW5nCisqIFRJTktFUlBPUC0xNzc4IERvIG5vdCBwcm9tb3RlIHRpbWVkSW50ZXJydXB0IG9wdGlvbiBmb3IgR3JlbWxpbiBTZXJ2ZXIgc2NyaXB0IHByb2Nlc3NpbmcKKyogVElOS0VSUE9QLTE3ODAgQWRkIGF1dGhlbnRpY2F0aW9uIHRlc3RzIGZvciBncmVtbGluLXB5dGhvbgorKiBUSU5LRVJQT1AtMTgzMSBSZWZhY3RvciBFdmVudFN0cmF0ZWd5ICAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE4MzYgLk5FVCBzYW1wbGUgcHJvamVjdAorKiBUSU5LRVJQT1AtMTg0MSBJbmNsdWRlIFB5dGhvbiBHTFYgdGVzdHMgb24gVHJhdmlzQ0kKKyogVElOS0VSUE9QLTE4NDkgUHJvdmlkZSBhIHdheSB0byBmb2xkKCkgd2l0aCBhbiBpbmRleAorKiBUSU5LRVJQT1AtMTg2NCBHcmVtbGluIFB5dGhvbiB0ZXN0cyBmb3IgR3JhcGhTT04gMi4wIGFuZCAzLjAKKyogVElOS0VSUE9QLTE4NzggU3BhcnFsIHRvIEdyZW1saW4gQ29tcGlsZXIKKyogVElOS0VSUE9QLTE4ODggRXh0ZW5kIG1heCBhbmQgbWluIHRvIGFsbCBDb21wYXJhYmxlIHByb3BlcnRpZXMsIG5vdCBqdXN0IE51bWJlcnMgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xODg5IEphdmFTY3JpcHQgR0xWOiBVc2UgaGVhcnRiZWF0IHRvIHByZXZlbnQgY29ubmVjdGlvbiB0aW1lb3V0CisqIFRJTktFUlBPUC0xODk3IFByb3ZpZGUgRG9ja2VyIGltYWdlcyBvZiBHcmVtbGluIFNlcnZlciBhbmQgQ29uc29sZQorKiBUSU5LRVJQT1AtMTkwNiBNYWtlIFJlc3BvbnNlRXhjZXB0aW9uIGV4cGxvcmFibGUKKyogVElOS0VSUE9QLTE5MTIgUmVtb3ZlIE1ENSBjaGVja3N1bXMKKyogVElOS0VSUE9QLTE5MTMgRXhwb3NlIG1ldGFkYXRhIGZyb20gR3JlbWxpbiBTZXJ2ZXIgdG8gQ2xpZW50cworKiBUSU5LRVJQT1AtMTkzMCBEcm9wIHN1cHBvcnQgZm9yIEdpcmFwaCAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE5MzQgQnVtcCB0byBsYXRlc3QgdmVyc2lvbiBvZiBodHRwY2xpZW50CisqIFRJTktFUlBPUC0xOTM2IFBlcmZvcm1hbmNlIGVuaGFuY2VtZW50IHRvIEJ5dGVjb2RlIGRlc2VyaWFsaXphdGlvbgorKiBUSU5LRVJQT1AtMTk0MSBSZW1vdmUgZGVwcmVjYXRlZCBTdHJ1Y3R1cmUgQVBJIGV4Y2VwdGlvbiBtZXRob2RzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTk0MiBCaW5hcnkgc2VyaWFsaXphdGlvbiBmb3JtYXQKKyogVElOS0VSUE9QLTE5NDUgQWRkIHN1cHBvcnQgZm9yIGV4dGVuZGVkIEdyYXBoU29uIHR5cGVzIHRvIEdyZW1saW4ubmV0CisqIFRJTktFUlBPUC0xOTQ2IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBDcmVkZW50aWFscyBEU0wgaW5mcmFzdHJ1Y3R1cmUgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xOTUwIFRyYXZlcnNhbCBjb25zdHJ1Y3Rpb24gcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzCisqIFRJTktFUlBPUC0xOTUxIGdyZW1saW4tc2VydmVyLmJhdCBkb2Vzbid0IHN1cHBvcnQgcGF0aHMgY29udGFpbmluZyBzcGFjZXMKKyogVElOS0VSUE9QLTE5NTMgQnVtcCB0byBHcm9vdnkgMi40LjE1CisqIFRJTktFUlBPUC0xOTU0IFJlbW92ZSBkZXByZWNhdGVkIEdyYXBoTWFuYWdlciBtZXRob2RzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTk1OSBQcm92aWRlIGEgd2F5IHRvIHN1Ym1pdCBzY3JpcHRzIHRvIHRoZSBzZXJ2ZXIgaW4gZ3JlbWxpbi1qYXZhc2NyaXB0CisqIFRJTktFUlBPUC0xOTY3IEFkZCBhIGNvbm5lY3RlZENvbXBvbmVudCgpIHN0ZXAKKyogVElOS0VSUE9QLTE5NjggUmVmYWN0b3IgZWxlbWVudHMgb2YgR3JlbWxpbiBTZXJ2ZXIgdGVzdGluZworKiBUSU5LRVJQT1AtMTk3NSBJbnRyb2R1Y2Ugd2l0aCgpIHN0ZXAgbW9kdWxhdG9yICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTk3NiBJbmNsdWRlIENvbXB1dGVyIHRlc3RzIGZvciBHTFZzCisqIFRJTktFUlBPUC0xOTc3IEdyZW1saW4tSmF2YVNjcmlwdDogU3VwcG9ydCBTQVNMIGF1dGhlbnRpY2F0aW9uCisqIFRJTktFUlBPUC0xOTg0IEFsbG93IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlcmlhbGl6ZXIgdmVyc2lvbnMgaW4gR3JlbWxpbiBTZXJ2ZXIgSFRUUCAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE5ODUgVXBkYXRlIHBvc2l0aW9uIG9uIGJ1bGsgbG9hZGluZworKiBUSU5LRVJQT1AtMTk4NiBSZW1vdmUgZGVwcmVjYXRpb24gZnJvbSBQYXJ0aXRpb25TdHJhdGVneSwgU3ViZ3JhcGhTdHJhdGVneSBhbmQgR3JlbWxpblNjcmlwdEVuZ2luZSAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE5ODcgQnVtcCB0byBOZXR0eSA0LjEueAorKiBUSU5LRVJQT1AtMTk4OSBQcmVzZXJ2ZSBvcmRlciB0aGF0IHBsdWdpbnMgYXJlIGFwcGxpZWQgaW4gR3JlbWxpbiBDb25zb2xlCisqIFRJTktFUlBPUC0xOTkwIEFkZCBhIHNob3J0ZXN0UGF0aCgpIHN0ZXAKKyogVElOS0VSUE9QLTE5OTMgQnVtcCB0byBTcGFyayAyLjMuMQorKiBUSU5LRVJQT1AtMTk5NSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uIGNsb3NlKCkgbWV0aG9kIHJldHVybnMgdW5kZWZpbmVkCisqIFRJTktFUlBPUC0xOTk2IEludHJvZHVjZSByZWFkKCkgYW5kIHdyaXRlKCkgc3RlcHMKKyogVElOS0VSUE9QLTIwMDIgQ3JlYXRlIGEgYmxvZyBwb3N0IGV4cGxhaW5pbmcgdGhlIHZhbHVlIG9mIHVzaW5nIFRpbmtlclBvcAorKiBUSU5LRVJQT1AtMjAxMCBHZW5lcmF0ZSBqc2RvYyBmb3IgZ3JlbWxpbi1qYXZhc2NyaXB0CisqIFRJTktFUlBPUC0yMDExIFVzZSBOdW1iZXJIZWxwZXIgb24gY2hvb3NlKCkKKyogVElOS0VSUE9QLTIwMTIgVGFyZ2V0IC5ORVQgU3RhbmRhcmQgMi4wIGZvciBHcmVtbGluLk5ldAorKiBUSU5LRVJQT1AtMjAxMyBQcm9jZXNzIHRlc3RzIHRoYXQgYXJlIGF1dG8taWdub3JlZCBzdGluaworKiBUSU5LRVJQT1AtMjAxNSBBbGxvdyB1c2VycyB0byBjb25maWd1cmUgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9ucworKiBUSU5LRVJQT1AtMjAxNiBVcGdyYWRlIEphY2tzb24gRmFzdGVyWE1MIHRvIDIuOS41IG9yIGxhdGVyIHRvIGZpeCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5CisqIFRJTktFUlBPUC0yMDE3IENoZWNrIGZvciBDb2x1bW4gaW4gYnkoKQorKiBUSU5LRVJQT1AtMjAxOCBHZW5lcmF0ZSBBUEkgZG9jcyBmb3IgR3JlbWxpbi5OZXQKKyogVElOS0VSUE9QLTIwMjIgQ2x1c3RlciBTU0wgc2hvdWxkIHRydXN0IGRlZmF1bHQgY2EgY2VydHMgYnkgZGVmYXVsdAorKiBUSU5LRVJQT1AtMjAyMyBHcmVtbGluIFNlcnZlciBzaG91bGQgbm90IGNyZWF0ZSBzZWxmLXNpZ25lZCBjZXJ0cyAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIwMjQgR3JlbWxpbiBTZXJ2ZXIgQXBwbGljYXRpb24gYXJjaGV0eXBlIHNob3VsZCBjb25uZWN0IHZpYSB3aXRoUmVtb3RlCisqIFRJTktFUlBPUC0yMDI1IENoYW5nZSB0byBTSEEtMjU2LzUxMiBhbmQgZHJvcCBTSEEtMSBmb3IgcmVsZWFzZXMKKyogVElOS0VSUE9QLTIwMjYgR3JlbWxpbi5OZXQuRHJpdmVyIHNob3VsZCBjaGVjayBDbGllbnRXZWJTb2NrZXQuU3RhdGUgYmVmb3JlIGNsb3NpbmcKKyogVElOS0VSUE9QLTIwMzEgUmVtb3ZlIHN1cHBvcnQgZm9yIC1pIGluIGdyZW1saW4tc2VydmVyLnNoICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjAzMyBNYWludGFpbiBvcmRlciBvZiBwcm9maWxlKCkgYW5ub3RhdGlvbnMKKyogVElOS0VSUE9QLTIwMzQgUmVnaXN0ZXIgc3luY2hyb25pemVkTWFwKCkgd2l0aCBHcnlvCisqIFRJTktFUlBPUC0yMDM3IFJlbW92ZSB1bnVzZWQgZ3Jvb3Z5LXNxbCBkZXBlbmRlbmN5CisqIFRJTktFUlBPUC0yMDM4IE1ha2UgZ3Jvb3Z5IHNjcmlwdCBjYWNoZSBzaXplIGNvbmZpZ3VyYWJsZQorKiBUSU5LRVJQT1AtMjAzOSBCdW1wIHRvIEdyb292eSAyLjUuMiAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIwNDAgSW1wcm92ZSBmbGV4aWJpbGl0eSBvZiBHcm9vdnlUcmFuc2xhdG9yIHRvIGhhbmRsZSBjdXN0b20gdHlwZXMKKyogVElOS0VSUE9QLTIwNDEgVGV4dCBQcmVkaWNhdGVzCisqIFRJTktFUlBPUC0yMDQ1IFJlbW92ZSBub24taW5keSBncm9vdnkgZGVwZW5kZW5jaWVzCisqIFRJTktFUlBPUC0yMDQ5IFNpbmdsZSBhcmd1bWVudCB3aXRoKCkgb3ZlcmxvYWQKKyogVElOS0VSUE9QLTIwNTAgQWRkIGEgOmJ5dGVjb2RlIGNvbW1hbmQgdG8gR3JlbWxpbiBDb25zb2xlCisqIFRJTktFUlBPUC0yMDUzIFByb3ZpZGVyIE9wdGlvbnNTdHJhdGVneSBmb3IgdHJhdmVyc2FsIGNvbmZpZ3VyYXRpb25zCisqIFRJTktFUlBPUC0yMDU1IFByb3ZpZGUgc3VwcG9ydCBmb3Igc3BlY2lhbCBudW1iZXIgY2FzZXMgbGlrZSBJbmZpbml0eSBpbiBHcmFwaFNPTgorKiBUSU5LRVJQT1AtMjA1NiBVc2UgTnVtYmVySGVscGVyIGluIENvbXBhcmUKKyogVElOS0VSUE9QLTIwNTkgTW9kdWxhdGlvbiBvZiB2YWx1ZU1hcCgpICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjA2MCBNYWtlIE11dGF0aW5nIHN0ZXBzIG5vbi1maW5hbAorKiBUSU5LRVJQT1AtMjA2MSBBZGQgd2l0aCgpIGNvbmZpZ3VyYXRpb24gYXMgZ2xvYmFsIHRvIGEgdHJhdmVyc2FsCisqIFRJTktFUlBPUC0yMDYyIEFkZCBUcmF2ZXJzYWwgY2xhc3MgdG8gQ29yZUltcG9ydHMKKyogVElOS0VSUE9QLTIwNjQgQWRkIHN0YXR1cyBhdHRyaWJ1dGVzIHRvIHJlc3VsdHMgZm9yIGdyZW1saW4tamF2YXNjcmlwdAorKiBUSU5LRVJQT1AtMjA2NSBPcHRpbWl6ZSBpdGVyYXRlKCkgZm9yIHJlbW90ZSB0cmF2ZXJzYWxzCisqIFRJTktFUlBPUC0yMDY2IEJ1bXAgdG8gR3Jvb3Z5IDIuNS4zCisqIFRJTktFUlBPUC0yMDY3IEFsbG93IGdldHRpbmcgcmF3IGRhdGEgZnJvbSBHcmVtbGluLk5ldC5Ecml2ZXIuSUdyZW1saW5DbGllbnQKKyogVElOS0VSUE9QLTIwNjggQnVtcCBKYWNrc29uIERhdGFiaW5kIDIuOS43CisqIFRJTktFUlBPUC0yMDY5IERvY3VtZW50IGNvbmZpZ3VyYXRpb24gb2YgR3JlbWxpbi5OZXQKKyogVElOS0VSUE9QLTIwNzAgZ3JlbWxpbi1qYXZhc2NyaXB0OiBJbnRyb2R1Y2UgQ29ubmVjdGlvbiByZXByZXNlbnRhdGlvbgorKiBUSU5LRVJQT1AtMjA3MSBncmVtbGluLXB5dGhvbjogdGhlIGdyYXBoc29uIGRlc2VyaWFsaXplciBmb3IgZzpTZXQgc2hvdWxkIHJldHVybiBhIHB5dGhvbiBzZXQKKyogVElOS0VSUE9QLTIwNzIgUmVmYWN0b3IgY3VzdG9tIHR5cGUgdHJhbnNsYXRpb24gZm9yIFNjcmlwdFRyYW5zbGF0b3JzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjA3MyBHZW5lcmF0ZSB0YWJzIGZvciBzdGF0aWMgY29kZSBibG9ja3MKKyogVElOS0VSUE9QLTIwNzQgRW5zdXJlIHRoYXQgb25seSBOdUdldCBwYWNrYWdlcyBmb3IgdGhlIGN1cnJlbnQgdmVyc2lvbiBhcmUgcHVzaGVkCisqIFRJTktFUlBPUC0yMDc1IEludHJvZHVjZSBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kKKyogVElOS0VSUE9QLTIwNzcgVmVydGV4UHJvZ3JhbS5CdWlsZGVyIHNob3VsZCBoYXZlIGEgZGVmYXVsdCBjcmVhdGUoKSBtZXRob2Qgd2l0aCBubyBHcmFwaAorKiBUSU5LRVJQT1AtMjA3OCBIaWRlIHVzZSBvZiBFbXB0eUdyYXBoIG9yIFJlbW90ZUdyYXBoIGJlaGluZCBhIG1vcmUgdW5pZmllZCBtZXRob2QgZm9yIFRyYXZlcnNhbFNvdXJjZSBjb25zdHJ1Y3Rpb24KKyogVElOS0VSUE9QLTIwNzkgTW92ZSBSZW1vdGVHcmFwaCB0byB0ZXN0IHBhY2thZ2UgKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMDg0IEZvciByZW1vdGUgcmVxdWVzdHMgaW4gY29uc29sZSBkaXNwbGF5IHRoZSByZW1vdGUgc3RhY2sgdHJhY2UKKyogVElOS0VSUE9QLTIwOTIgRGVwcmVjYXRlIGRlZmF1bHQgR3JhcGhTT04gc2VyaWFsaXplciBmaWVsZHMKKyogVElOS0VSUE9QLTIwOTMgQnVtcCB0byBHcm9vdnkgMi41LjQKKyogVElOS0VSUE9QLTIwOTcgQ3JlYXRlIGEgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiB3aXRoIGFuIGluaXRpYWxpemVkIENsaWVudAorKiBUSU5LRVJQT1AtMjEwMSBTdXBwb3J0IFNwYXJrIDIuNAorKiBUSU5LRVJQT1AtMjEwMyBSZW1vdmUgZGVwcmVjYXRlZCBzdWJtaXQoKSBvcHRpb25zIG9uIFJlbW90ZUNvbm5lY3Rpb24gKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMTA0IEFsbG93IEltcG9ydEN1c3RvbWl6ZXIgdG8gaGFuZGxlIGZpZWxkcworKiBUSU5LRVJQT1AtMjEwNiBXaGVuIGdyZW1saW4gZXhlY3V0ZXMgdGltZW91dCwgdGhyb3cgVGltZW91dEV4Y2VwdGlvbiBpbnN0ZWFkIG9mIFRyYXZlcnNhbEludGVycnVwdGVkRXhjZXB0aW9uL0ludGVycnVwdGVkSU9FeGNlcHRpb24KKyogVElOS0VSUE9QLTIxMTAgQWxsb3cgQ29ubmVjdGlvbiBvbiBEaWZmZXJlbnQgUGF0aCAoZnJvbSAvZ3JlbWxpbikKKyogVElOS0VSUE9QLTIxMTEgQWRkIEJ1bGtTZXQgYXMgYSBHcmFwaFNPTiB0eXBlICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjExNCBEb2N1bWVudCBjb21tb24gR3JlbWxpbiBhbnRpLXBhdHRlcm5zCisqIFRJTktFUlBPUC0yMTE2IEV4cGxpY2l0IEJpbmRpbmdzIG9iamVjdCBmb3IgUHl0aG9uICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjExNyBncmVtbGluLXB5dGhvbjogUHJvdmlkZSBhIGJldHRlciBkYXRhIHN0cnVjdHVyZSBmb3IgYSBCaW5kaW5nCisqIFRJTktFUlBPUC0yMTE5IFZhbGlkYXRlIEMjIGNvZGUgc2FtcGxlcyBpbiBkb2NzCisqIFRJTktFUlBPUC0yMTIxIEJ1bXAgSmFja3NvbiBEYXRhYmluZCAyLjkuOAorCiA9PSBUaW5rZXJQb3AgMy4zLjAgKEdyZW1saW4gU3ltcGhvbnkgIzQwIGluIEcgTWlub3IpCiAKIGltYWdlOjpodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBhY2hlL3RpbmtlcnBvcC9tYXN0ZXIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tbW96YXJ0LnBuZ1t3aWR0aD0xODVdCkBAIC0xOTUsNiArNzA4LDcgQEAKICogRml4ZWQgYmVoYXZpb3Igb2YgYFBgIGZvciBgd2l0aGluKClgIGFuZCBgd2l0aG91dCgpYCBpbiBHTFZzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBKYXZhIHdoZW4gdXNpbmcgdmFyYXJncy4KICogQ2xlYXJlZCB0aGUgaW5wdXQgYnVmZmVyIGFmdGVyIGV4Y2VwdGlvbnMgaW4gR3JlbWxpbiBDb25zb2xlLgogKiBBZGRlZCBwYXJhbWV0ZXIgdG8gY29uZmlndXJlIHRoZSBgcHJvY2Vzc29yYCBpbiB0aGUgZ3JlbWxpbi1qYXZhc2NyaXB0IGBjbGllbnRgIGNvbnN0cnVjdG9yLgorKiBCdW1wZWQgYE5ldHR5YCB0byA0LjEuMzIuCiAKID09PT0gQnVncwogCmRpZmYgLS1naXQgYS9iaW4vdmFsaWRhdGUtZGlzdHJpYnV0aW9uLnNoIGIvYmluL3ZhbGlkYXRlLWRpc3RyaWJ1dGlvbi5zaAppbmRleCA5MzFhMTcxLi5mM2MzODZiIDEwMDc1NQotLS0gYS9iaW4vdmFsaWRhdGUtZGlzdHJpYnV0aW9uLnNoCisrKyBiL2Jpbi92YWxpZGF0ZS1kaXN0cmlidXRpb24uc2gKQEAgLTIzLDYgKzIzLDcgQEAKICMgcHVibGlzaGVkIEtFWVMgZmlsZSBpbiBvcmRlciBmb3IgdGhhdCBhc3BlY3Qgb2YgdGhlIHZhbGlkYXRpb24KICMgdG8gcGFzcy4KIAorU0NSSVBUX0RJUj0kKGNkIGBkaXJuYW1lICQwYCA7IHB3ZCkKIFRNUF9ESVI9Ii90bXAvdHBkdiIKIAogIyBSZXF1aXJlZC4gT25seSB0aGUgbGF0ZXN0IHZlcnNpb24gb24gZWFjaCByZWxlYXNlIHN0cmVhbSBpcyBhdmFpbGFibGUgb24gZGlzdC4KQEAgLTEzOCwxMSArMTM5LDExIEBACiBjZCAke0RJUl9OQU1FfQogZWNobyAtbiAiKiBjaGVja2luZyBzb3VyY2UgZmlsZXMgLi4uICIKIGZpbmQgLiAtdHlwZSBmIHwgeGFyZ3MgLW4xIC1JIHt9IGZpbGUge30gLS1taW1lIHwgZ3JlcCAnY2hhcnNldD1iaW5hcnknIHwgY3V0IC1mMSAtZDogfAotICBncmVwIC1QdiAnXlwuL2RvY3MvKHN0YXRpY3woc2l0ZS9ob21lKSkvaW1hZ2VzLygoaWNvbnN8bG9nb3N8cG9saWN5fHJlc291cmNlcykvKT9bXi9dKlwuKHBuZ3xqcGd8aWNvfHBkZikkJyB8CisgIGdyZXAgLVB2ICdeXC4vZG9jcy8oc3RhdGljfChzaXRlL2hvbWUpKS8oaW1nfGltYWdlcykvKChpY29uc3xsb2dvc3xwb2xpY3l8cmVzb3VyY2VzKS8pP1teL10qXC4ocG5nfGpwZ3xpY298cGRmKSQnIHwKICAgZ3JlcCAtUHYgJ14uL2dyZW1saW4tZG90bmV0L3NyYy9pbWFnZXMvW14vXSpcLihwbmd8aWNvKSQnIHwKICAgZ3JlcCAtUHYgJ14uL2dyZW1saW4tZG90bmV0Ly4qXC5zbmskJyB8CiAgIGdyZXAgLVB2ICdeLi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9yZXNvdXJjZXMvW14vXSpcLihwMTJ8amtzKSQnIHwKLSAgZ3JlcCAtUHYgJy8ocmVzb3VyY2VzfGRhdGEpLy4qXC4oa3J5b3xqc29uKSQnID4gLi4vYmluYXJ5LWZpbGVzLnR4dAorICBncmVwIC1QdiAnLyhyZXNvdXJjZXN8ZGF0YSkvLipcLihrcnlvfGpzb258Z2JpbikkJyA+IC4uL2JpbmFyeS1maWxlcy50eHQKIGlmIFsgLXMgLi4vYmluYXJ5LWZpbGVzLnR4dCBdOyB0aGVuCiAgIGVjaG8gIkZvdW5kIHVuZXhwZWN0ZWQgYmluYXJ5IGZpbGVzIChzZWUgJChjZCAuLiA7IHB3ZCkvYmluYXJ5LWZpbGVzLnR4dCkiCiAgIGV4aXQgMQpAQCAtMjA4LDcgKzIwOSw3IEBACiAgIFNDUklQVF9GSUxFTkFNRT0idGVzdC5ncm9vdnkiCiAgIFNDUklQVF9QQVRIPSIke1RNUF9ESVJ9LyR7U0NSSVBUX0ZJTEVOQU1FfSIKICAgZWNobyAke1NDUklQVH0gPiAke1NDUklQVF9QQVRIfQotICBbWyBgYmluL2dyZW1saW4uc2ggPDw8ICR7U0NSSVBUfSB8IGdyZXAgJ149PT4nIHwgc2VkIC1lICdzL149PT4vLydgIC1lcSA2IF1dIHx8IHsgZWNobyAiZmFpbGVkIHRvIGV2YWx1YXRlIHNhbXBsZSBzY3JpcHQiOyBleGl0IDE7IH0KKyAgW1sgYGJpbi9ncmVtbGluLnNoIDw8PCAke1NDUklQVH0gfCAke1NDUklQVF9ESVJ9Ly4uL2RvY3MvcHJlcHJvY2Vzc29yL2NvbnRyb2wtY2hhcmFjdGVycy5zaCB8IGdyZXAgJ149PT4nIHwgc2VkIC1lICdzL149PT4vLydgIC1lcSA2IF1dIHx8IHsgZWNobyAiZmFpbGVkIHRvIGV2YWx1YXRlIHNhbXBsZSBzY3JpcHQiOyBleGl0IDE7IH0KICAgW1sgYGJpbi9ncmVtbGluLnNoIC1lICR7U0NSSVBUX1BBVEh9YCAtZXEgNiBdXSB8fCB7IGVjaG8gImZhaWxlZCB0byBldmFsdWF0ZSBzYW1wbGUgc2NyaXB0IHVzaW5nIC1lIG9wdGlvbiI7IGV4aXQgMTsgfQogICBDT05TT0xFX0RJUj1gcHdkYAogICBjZCAke1RNUF9ESVJ9CmRpZmYgLS1naXQgYS9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIuc2ggYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTQwYmZiYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY2tlci9ncmVtbGluLXNlcnZlci5zaApAQCAtMCwwICsxLDY0IEBACisjIS9iaW4vYmFzaAorIworIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCisjIEJ1aWxkIGRvY2tlciBpbWFnZXMgZmlyc3QKKyMgQnVpbGQgZ3JlbWxpbi1zZXJ2ZXI6ICBtdm4gY2xlYW4gaW5zdGFsbCAtcGwgOmdyZW1saW4tc2VydmVyIC1hbSAmJiBtdm4gaW5zdGFsbCAtUGRvY2tlci1pbWFnZXMgLXBsIDpncmVtbGluLXNlcnZlcgorCisjIHNldCAteAorCitESVI9YGRpcm5hbWUgJDBgCitQUk9KRUNUX0hPTUU9JHtESVJ9Ly4uLworCitUSU1FU1RBTVA9JChkYXRlICslcykKK0JVSUxEX1RBRz0iZ3JlbWxpbi1zZXJ2ZXItdGVzdC0ke1RJTUVTVEFNUH0iCisKK2Z1bmN0aW9uIGNsZWFudXAgeworICBCVUlMRF9JTUFHRT0kKGRvY2tlciBpbWFnZXMgdGlua2VycG9wIHwgYXdrICJ7aWYgKFwkMiA9PSBcIiR7QlVJTERfVEFHfVwiKSBwcmludCBcJDN9IikKKyAgWyAhIC16ICR7QlVJTERfSU1BR0V9IF0gJiYgZG9ja2VyIHJtaSAke0JVSUxEX0lNQUdFfQorICBybSAtZiAke1BST0pFQ1RfSE9NRX0vRG9ja2VyZmlsZQorfQordHJhcCBjbGVhbnVwIEVYSVQKKworUkVNT1ZFX0NPTlRBSU5FUj0iLS1ybSIKK1tbIC1uICR7S0VFUF9DT05UQUlORVJ9IF1dICYmIHVuc2V0IFJFTU9WRV9DT05UQUlORVIKKworcHVzaGQgJHtQUk9KRUNUX0hPTUV9ID4gL2Rldi9udWxsCisKK0dSRU1MSU5fU0VSVkVSX1ZFUlNJT049IiQxIgorc2hpZnQKK2lmIFtbIC16ICIkR1JFTUxJTl9TRVJWRVJfVkVSU0lPTiIgXV07IHRoZW4KKyAgR1JFTUxJTl9TRVJWRVJfVkVSU0lPTj0kKGdyZXAgdGlua2VycG9wIC1BMiBwb20ueG1sIHwgZ3JlcCAtUG8gJyg/PD08dmVyc2lvbj4pKFswLTldK1wuPyl7M30oLVNOQVBTSE9UKT8oPz08KScpCisgIGlmIFtbICQoZG9ja2VyIGltYWdlcyB8IGF3ayAie2lmIChcJDEgPT0gXCJ0aW5rZXJwb3AvZ3JlbWxpbi1zZXJ2ZXJcIiAmJiBcJDIgPT0gXCIke0dSRU1MSU5fU0VSVkVSX1ZFUlNJT059XCIpIHByaW50fSIgfCB3YyAtbCkgLWVxIDAgXV07IHRoZW4KKyAgICBwdXNoZCAiJHtQUk9KRUNUX0hPTUV9IiA+IC9kZXYvbnVsbAorICAgIG12biAtcSBjbGVhbiBpbnN0YWxsIC1wbCA6Z3JlbWxpbi1zZXJ2ZXIgLWFtIC1Ec2tpcFRlc3RzICYmIG12biAtcSBpbnN0YWxsIC1QZG9ja2VyLWltYWdlcyAtcGwgOmdyZW1saW4tc2VydmVyIC1Ec2tpcFRlc3RzCisgICAgcG9wZCA+IC9kZXYvbnVsbAorICBmaQorZmkKKworZWNobyAiVXNpbmcgR3JlbWxpbiBTZXJ2ZXIgJEdSRU1MSU5fU0VSVkVSX1ZFUlNJT04iCisKK3NlZCAtZSAicy9HUkVNTElOX1NFUlZFUl9WRVJTSU9OXCQvJHtHUkVNTElOX1NFUlZFUl9WRVJTSU9OfS8iIGRvY2tlci9ncmVtbGluLXNlcnZlci9Eb2NrZXJmaWxlLnRlbXBsYXRlID4gRG9ja2VyZmlsZQorCitkb2NrZXIgYnVpbGQgLXQgdGlua2VycG9wOiR7QlVJTERfVEFHfSAuCitkb2NrZXIgcnVuICR7VElOS0VSUE9QX1RFU1RfRE9DS0VSX09QVFN9ICR7UkVNT1ZFX0NPTlRBSU5FUn0gLXRpIC12ICIke0hPTUV9Ii8uZ3Jvb3Z5Oi9yb290Ly5ncm9vdnkgLXYgIiR7SE9NRX0iLy5tMjovcm9vdC8ubTIgdGlua2VycG9wOiR7QlVJTERfVEFHfSAke0B9CisKK3N0YXR1cz0kPworcG9wZCA+IC9kZXYvbnVsbAorZXhpdCAkc3RhdHVzCmRpZmYgLS1naXQgYS9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvRG9ja2VyZmlsZS50ZW1wbGF0ZSBiL2RvY2tlci9ncmVtbGluLXNlcnZlci9Eb2NrZXJmaWxlLnRlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NTIyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvRG9ja2VyZmlsZS50ZW1wbGF0ZQpAQCAtMCwwICsxLDMxIEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyMgdW5kZXIgdGhlIExpY2Vuc2UuCisKK0ZST00gdGlua2VycG9wL2dyZW1saW4tc2VydmVyOkdSRU1MSU5fU0VSVkVSX1ZFUlNJT04KKworVVNFUiByb290CitSVU4gbWtkaXIgLXAgL29wdAorV09SS0RJUiAvb3B0CitDT1BZIGdyZW1saW4tc2VydmVyL3NyYy90ZXN0IC9vcHQvdGVzdC8KK0NPUFkgZG9ja2VyL2dyZW1saW4tc2VydmVyL2RvY2tlci1lbnRyeXBvaW50LnNoIGRvY2tlci9ncmVtbGluLXNlcnZlci8qLnlhbWwgL29wdC8KK1JVTiBjaG1vZCA3NTUgL29wdC9kb2NrZXItZW50cnlwb2ludC5zaAorRU5WIEdSRU1MSU5fU0VSVkVSX1ZFUlNJT049R1JFTUxJTl9TRVJWRVJfVkVSU0lPTgorCitFWFBPU0UgNDU5NDAKKworRU5UUllQT0lOVCBbIi9vcHQvZG9ja2VyLWVudHJ5cG9pbnQuc2giXQorQ01EIFtdCmRpZmYgLS1naXQgYS9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvZG9ja2VyLWVudHJ5cG9pbnQuc2ggYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvZG9ja2VyLWVudHJ5cG9pbnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU3NTExNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY2tlci9ncmVtbGluLXNlcnZlci9kb2NrZXItZW50cnlwb2ludC5zaApAQCAtMCwwICsxLDM2IEBACisjIS9iaW4vYmFzaAorIworIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCitUSU5LRVJQT1BfSE9NRT0vb3B0L2dyZW1saW4tc2VydmVyCisKK2NwIC9vcHQvdGVzdC9zY3JpcHRzLyogJHtUSU5LRVJQT1BfSE9NRX0vc2NyaXB0cworCitJUD0kKGhvc3RuYW1lIC1pKQorZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCitlY2hvIElQIGlzICRJUAorZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCisKK2NwICoueWFtbCAke1RJTktFUlBPUF9IT01FfS9jb25mLworCitqYXZhIC12ZXJzaW9uCisKKy9vcHQvZ3JlbWxpbi1zZXJ2ZXIvYmluL2dyZW1saW4tc2VydmVyLnNoIGluc3RhbGwgb3JnLmFwYWNoZS50aW5rZXJwb3AgZ3JlbWxpbi1weXRob24gJHtHUkVNTElOX1NFUlZFUl9WRVJTSU9OfQorL29wdC9ncmVtbGluLXNlcnZlci9iaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggY29uZi9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sICYKK2V4ZWMgL29wdC9ncmVtbGluLXNlcnZlci9iaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggY29uZi9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi1zZWN1cmUueWFtbApkaWZmIC0tZ2l0IGEvZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLXNlY3VyZS55YW1sIGIvZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLXNlY3VyZS55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ODllMDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvZ3JlbWxpbi1zZXJ2ZXItaW50ZWdyYXRpb24tc2VjdXJlLnlhbWwKQEAgLTAsMCArMSw2OCBAQAorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitob3N0OiAwLjAuMC4wCitwb3J0OiA0NTk0MQorc2NyaXB0RXZhbHVhdGlvblRpbWVvdXQ6IDMwMDAwCitncmFwaHM6IHsKKyAgZ3JhcGg6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgY2xhc3NpYzogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzLAorICBtb2Rlcm46IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgY3JldzogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzLAorICBncmF0ZWZ1bDogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzLAorICBzaW5rOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXN9CitzY3JpcHRFbmdpbmVzOiB7CisgIGdyZW1saW4tZ3Jvb3Z5OiB7CisgICAgcGx1Z2luczogeyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5qc3IyMjMuR3JlbWxpblNlcnZlckdyZW1saW5QbHVnaW46IHt9LAorICAgICAgICAgICAgICAgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5qc3IyMjMuVGlua2VyR3JhcGhHcmVtbGluUGx1Z2luOiB7fSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlDb21waWxlckdyZW1saW5QbHVnaW46IHtleHBlY3RlZENvbXBpbGF0aW9uVGltZTogMzAwMDB9LAorICAgICAgICAgICAgICAgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuSW1wb3J0R3JlbWxpblBsdWdpbjoge2NsYXNzSW1wb3J0czogW2phdmEubGFuZy5NYXRoXSwgbWV0aG9kSW1wb3J0czogW2phdmEubGFuZy5NYXRoIypdfSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLlNjcmlwdEZpbGVHcmVtbGluUGx1Z2luOiB7ZmlsZXM6IFtzY3JpcHRzL2dlbmVyYXRlLWFsbC5ncm9vdnldfX19LAorICBncmVtbGluLWp5dGhvbjoge30sCisgIGdyZW1saW4tcHl0aG9uOiB7fQorfQorc2VyaWFsaXplcnM6CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYxZDBdLCBjdXN0b206IFtncm9vdnkuanNvbi5Kc29uQnVpbGRlcjtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuSnNvbkJ1aWxkZXJHcnlvU2VyaWFsaXplcl19fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSwgY3VzdG9tOiBbZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXJdfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9MaXRlTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYxZDBdLCBjdXN0b206IFtncm9vdnkuanNvbi5Kc29uQnVpbGRlcjtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuSnNvbkJ1aWxkZXJHcnlvU2VyaWFsaXplcl19fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZX19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjJkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSB9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19Citwcm9jZXNzb3JzOgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5zZXNzaW9uLlNlc3Npb25PcFByb2Nlc3NvciwgY29uZmlnOiB7IHNlc3Npb25UaW1lb3V0OiAyODgwMDAwMCB9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5zdGFuZGFyZC5TdGFuZGFyZE9wUHJvY2Vzc29yLCBjb25maWc6IHt9fQorbWV0cmljczogeworICBzbGY0alJlcG9ydGVyOiB7ZW5hYmxlZDogdHJ1ZSwgaW50ZXJ2YWw6IDE4MDAwMH19CitzdHJpY3RUcmFuc2FjdGlvbk1hbmFnZW1lbnQ6IGZhbHNlCitpZGxlQ29ubmVjdGlvblRpbWVvdXQ6IDAKK2tlZXBBbGl2ZUludGVydmFsOiAwCittYXhJbml0aWFsTGluZUxlbmd0aDogNDA5NgorbWF4SGVhZGVyU2l6ZTogODE5MgorbWF4Q2h1bmtTaXplOiA4MTkyCittYXhDb250ZW50TGVuZ3RoOiAxMDAwMDAwCittYXhBY2N1bXVsYXRpb25CdWZmZXJDb21wb25lbnRzOiAxMDI0CityZXN1bHRJdGVyYXRpb25CYXRjaFNpemU6IDY0Cit3cml0ZUJ1ZmZlckxvd1dhdGVyTWFyazogMzI3NjgKK3dyaXRlQnVmZmVySGlnaFdhdGVyTWFyazogNjU1MzYKK2F1dGhlbnRpY2F0aW9uOiB7CisgIGF1dGhlbnRpY2F0b3I6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmF1dGguU2ltcGxlQXV0aGVudGljYXRvciwKKyAgY29uZmlnOiB7CisgICAgY3JlZGVudGlhbHNEYjogY29uZi90aW5rZXJncmFwaC1jcmVkZW50aWFscy5wcm9wZXJ0aWVzfX0KZGlmZiAtLWdpdCBhL2RvY2tlci9ncmVtbGluLXNlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sIGIvZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M1NDQ1YQotLS0gL2Rldi9udWxsCisrKyBiL2RvY2tlci9ncmVtbGluLXNlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCkBAIC0wLDAgKzEsNjQgQEAKKyMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisjICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyB1bmRlciB0aGUgTGljZW5zZS4KKworaG9zdDogMC4wLjAuMAorcG9ydDogNDU5NDAKK3NjcmlwdEV2YWx1YXRpb25UaW1lb3V0OiAzMDAwMAorZ3JhcGhzOiB7CisgIGdyYXBoOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXMsCisgIGNsYXNzaWM6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgbW9kZXJuOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXMsCisgIGNyZXc6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgZ3JhdGVmdWw6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgc2luazogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzfQorc2NyaXB0RW5naW5lczogeworICBncmVtbGluLWdyb292eTogeworICAgIHBsdWdpbnM6IHsgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuanNyMjIzLkdyZW1saW5TZXJ2ZXJHcmVtbGluUGx1Z2luOiB7fSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguanNyMjIzLlRpbmtlckdyYXBoR3JlbWxpblBsdWdpbjoge30sCisgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuR3Jvb3Z5Q29tcGlsZXJHcmVtbGluUGx1Z2luOiB7ZXhwZWN0ZWRDb21waWxhdGlvblRpbWU6IDMwMDAwfSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkltcG9ydEdyZW1saW5QbHVnaW46IHtjbGFzc0ltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aF0sIG1ldGhvZEltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aCMqXX0sCisgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjoge2ZpbGVzOiBbc2NyaXB0cy9nZW5lcmF0ZS1hbGwuZ3Jvb3Z5XX19fSwKKyAgZ3JlbWxpbi1qeXRob246IHt9LAorICBncmVtbGluLXB5dGhvbjoge30KK30KK3NlcmlhbGl6ZXJzOgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSwgY3VzdG9tOiBbZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXJdfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0sIGN1c3RvbTogW2dyb292eS5qc29uLkpzb25CdWlsZGVyO29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5Kc29uQnVpbGRlckdyeW9TZXJpYWxpemVyXX19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSwgY3VzdG9tOiBbZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXJdfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZX19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWV9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYyZDBdIH19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYxZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjFkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fQorcHJvY2Vzc29yczoKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc2Vzc2lvbi5TZXNzaW9uT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBzZXNzaW9uVGltZW91dDogMjg4MDAwMDAgfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc3RhbmRhcmQuU3RhbmRhcmRPcFByb2Nlc3NvciwgY29uZmlnOiB7fX0KK21ldHJpY3M6IHsKKyAgc2xmNGpSZXBvcnRlcjoge2VuYWJsZWQ6IHRydWUsIGludGVydmFsOiAxODAwMDB9fQorc3RyaWN0VHJhbnNhY3Rpb25NYW5hZ2VtZW50OiBmYWxzZQoraWRsZUNvbm5lY3Rpb25UaW1lb3V0OiAwCitrZWVwQWxpdmVJbnRlcnZhbDogMAorbWF4SW5pdGlhbExpbmVMZW5ndGg6IDQwOTYKK21heEhlYWRlclNpemU6IDgxOTIKK21heENodW5rU2l6ZTogODE5MgorbWF4Q29udGVudExlbmd0aDogMTAwMDAwMAorbWF4QWNjdW11bGF0aW9uQnVmZmVyQ29tcG9uZW50czogMTAyNAorcmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplOiA2NAord3JpdGVCdWZmZXJMb3dXYXRlck1hcms6IDMyNzY4Cit3cml0ZUJ1ZmZlckhpZ2hXYXRlck1hcms6IDY1NTM2CmRpZmYgLS1naXQgYS9kb2NzL3ByZXByb2Nlc3Nvci9hd2svaW5pdC1jb2RlLWJsb2Nrcy5hd2sgYi9kb2NzL3ByZXByb2Nlc3Nvci9hd2svaW5pdC1jb2RlLWJsb2Nrcy5hd2sKaW5kZXggOTdjZDY4My4uNDY2Y2I5MCAxMDA2NDQKLS0tIGEvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL2luaXQtY29kZS1ibG9ja3MuYXdrCisrKyBiL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay9pbml0LWNvZGUtYmxvY2tzLmF3awpAQCAtMTAwLDcgKzEwMCw3IEBACiAgIGlmIChkZWxpbWl0ZXIgPT0gMiAmJiAhKCQwIH4gL15wYlwoWzAtOV0qXCk7ICctLS0tJy8pKSB7CiAgICAgc3dpdGNoIChsYW5nKSB7CiAgICAgICBjYXNlICJweXRob24iOgotICAgICAgICBwcmludCAicHJvY2Vzc1RyYXZlcnNhbChcIlwiXCIiIGdlbnN1YigiXFwoJ2lkJywoWzAtOV0rKVxcKSIsICJcXDEiLCAiZyIpICJcIlwiXCIsIGp5dGhvbiwgZ3Jvb3Z5KSIKKyAgICAgICAgcHJpbnQgInByb2Nlc3NUcmF2ZXJzYWwoXCJcIlwiIiBnZW5zdWIoIkJpbmRpbmdzXFwub2ZcXCgnaWQnLChbMC05XSspXFwpIiwgIlxcMSIsICJnIikgIlwiXCJcIiwganl0aG9uLCBncm9vdnkpIgogICAgICAgICBicmVhawogICAgICAgZGVmYXVsdDoKICAgICAgICAgcHJpbnQKZGlmZiAtLWdpdCBhL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay9sYW5ndWFnZS12YXJpYW50cy5hd2sgYi9kb2NzL3ByZXByb2Nlc3Nvci9hd2svbGFuZ3VhZ2UtdmFyaWFudHMuYXdrCmluZGV4IDU0MjkwNzAuLmQ2NjQ1ZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay9sYW5ndWFnZS12YXJpYW50cy5hd2sKKysrIGIvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL2xhbmd1YWdlLXZhcmlhbnRzLmF3awpAQCAtNDAsNyArNDAsOCBAQAogICAgICAgICBnc3ViKC9eZ3JlbWxpbj4vLCAiPj4+IikKICAgICAgICAgZ3N1YigvXj09Pi8sICIiKQogICAgICAgICAkMCA9IGdlbnN1YigvcHJvY2Vzc1RyYXZlcnNhbFwoIiIiKC4qKSIiIlwsIGp5dGhvbiwgZ3Jvb3Z5KS8sICJcXDEiLCAxKQotICAgICAgICBwcmludCBnZW5zdWIoImdcXC5WXFwoKFteXFwpXSspIiwgImcuVigoJ2lkJyxcXDEpIiwgImciKQorICAgICAgICAkMCA9IGdlbnN1YigiZ1xcLlZcXCgoW15cXCldKykiLCAiZy5WKEJpbmRpbmdzXFwub2YoJ2lkJyxcXDEpIiwgImciKQorICAgICAgICBwcmludCBnZW5zdWIoImdcXC5WXFwoQmluZGluZ3Mub2ZcXCgnaWQnLChCaW5kaW5ncy5vZlxcKFteXFwpXStcXCkpXFwpXFwpIiwgImcuVihcXDEpIiwgImciKQogICAgICAgICBicmVhawogICAgICAgZGVmYXVsdDoKICAgICAgICAgcHJpbnQKZGlmZiAtLWdpdCBhL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay90YWJpZnkuYXdrIGIvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL3RhYmlmeS5hd2sKaW5kZXggZDZmZmFjYy4uZmMwNzMzMSAxMDA2NDQKLS0tIGEvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL3RhYmlmeS5hd2sKKysrIGIvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL3RhYmlmeS5hd2sKQEAgLTI2LDE0ICsyNiwxNCBAQAogICBwcmludCAiKysrKyIKICAgcHJpbnQgIjxzZWN0aW9uIGNsYXNzPVwidGFicyB0YWJzLSIgbnVtX3RhYnMgIlwiPiIKIAotICBmb3IgKGkgaW4gdGFicykgeworICBmb3IgKGkgPSAxOyBpIDw9IG51bV90YWJzOyBpKyspIHsKICAgICB0aXRsZSA9IHRhYnNbaV0KICAgICBwcmludCAiICA8aW5wdXQgaWQ9XCJ0YWItIiBpZF9wYXJ0ICItIiB4ICJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwicmFkaW8tc2V0LSIgaWRfcGFydCAiLSIgbmV4dF9pZCAiXCIgY2xhc3M9XCJ0YWItc2VsZWN0b3ItIiBpICJcIiIgKGkgPT0gMSA/ICIgY2hlY2tlZD1cImNoZWNrZWRcIiIgOiAiIikgIiAvPiIKICAgICBwcmludCAiICA8bGFiZWwgZm9yPVwidGFiLSIgaWRfcGFydCAiLSIgeCAiXCIgY2xhc3M9XCJ0YWItbGFiZWwtIiBpICJcIj4iIHRpdGxlICI8L2xhYmVsPiIKICAgICB4KysKICAgfQogCi0gIGZvciAoaSBpbiBibG9ja3MpIHsKKyAgZm9yIChpID0gMTsgaTw9IG51bV90YWJzOyBpKyspIHsKICAgICBwcmludCAiICA8ZGl2IGNsYXNzPVwidGFiY29udGVudFwiPiIKICAgICBwcmludCAiICAgIDxkaXYgY2xhc3M9XCJ0YWJjb250ZW50LSIgaSAiXCI+IgogICAgIHByaW50ICIrKysrXG4iCmRpZmYgLS1naXQgYS9kb2NzL3ByZXByb2Nlc3Nvci9jb250cm9sLWNoYXJhY3RlcnMuc2ggYi9kb2NzL3ByZXByb2Nlc3Nvci9jb250cm9sLWNoYXJhY3RlcnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjgzMzZkNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcHJlcHJvY2Vzc29yL2NvbnRyb2wtY2hhcmFjdGVycy5zaApAQCAtMCwwICsxLDI1IEBACisjIS9iaW4vYmFzaAorIworIworIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCisjIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBzY3JpcHQgaXMgdG8gcmVtb3ZlIGNvbnRyb2wgY2hhcmFjdGVycworIyB0aGF0IGFyZSBvY2Nhc2lvbmFsbHkgaGlkZGVuIGluIHRoZSBHcm9vdnkgY29uc29sZSdzIG91dHB1dAorCitzZWQgLXIgJ3MvXHgxQlxbKFswLTldezEsMn0oO1swLTldezEsMn0pPyk/W218S10vL2cnCmRpZmYgLS1naXQgYS9kb2NzL3ByZXByb2Nlc3Nvci9pbnN0YWxsLXBsdWdpbnMuc2ggYi9kb2NzL3ByZXByb2Nlc3Nvci9pbnN0YWxsLXBsdWdpbnMuc2gKaW5kZXggOTkwZGJlNC4uNTg1NWU5MiAxMDA3NTUKLS0tIGEvZG9jcy9wcmVwcm9jZXNzb3IvaW5zdGFsbC1wbHVnaW5zLnNoCisrKyBiL2RvY3MvcHJlcHJvY2Vzc29yL2luc3RhbGwtcGx1Z2lucy5zaApAQCAtMjUsNyArMjUsNyBAQAogSU5TVEFMTF9URU1QTEFURT0iZG9jcy9wcmVwcm9jZXNzb3IvaW5zdGFsbC1wbHVnaW5zLmdyb292eSIKIElOU1RBTExfRklMRT0iJHtUTVBfRElSfS9pbnN0YWxsLXBsdWdpbnMuZ3Jvb3Z5IgogCi1wbHVnaW5zPSgiaGFkb29wLWdyZW1saW4iICJzcGFyay1ncmVtbGluIiAiZ2lyYXBoLWdyZW1saW4iICJuZW80ai1ncmVtbGluIikKK3BsdWdpbnM9KCJoYWRvb3AtZ3JlbWxpbiIgInNwYXJrLWdyZW1saW4iICJuZW80ai1ncmVtbGluIiAic3BhcnFsLWdyZW1saW4iKQogIyBwbHVnaW5zPSgpCiBwbHVnaW5zQ291bnQ9JHsjcGx1Z2luc1tAXX0KIApkaWZmIC0tZ2l0IGEvZG9jcy9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzcy1maWxlLnNoIGIvZG9jcy9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzcy1maWxlLnNoCmluZGV4IDdkMzk1NmQuLmRiZWYyMmYgMTAwNzU1Ci0tLSBhL2RvY3MvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3MtZmlsZS5zaAorKysgYi9kb2NzL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzLWZpbGUuc2gKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgbXYgZXh0L3NwYXJrLWdyZW1saW4gLmV4dC8KICAgICAgIGNhdCBleHQvcGx1Z2lucy50eHQgfCB0ZWUgLmV4dC9wbHVnaW5zLmFsbCB8IGdyZXAgLUZ2ICdTcGFya0dyZW1saW5QbHVnaW4nID4gLmV4dC9wbHVnaW5zLnR4dAogICAgICAgOzsKLSAgICAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1zdGFydCIgfCAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1lbmQiIHwgImltcGxlbWVudGF0aW9ucy1zcGFyayIgfCAiaW1wbGVtZW50YXRpb25zLWdpcmFwaCIgfCAib2xhcC1zcGFyay15YXJuIikKKyAgICAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1zdGFydCIgfCAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1lbmQiIHwgImltcGxlbWVudGF0aW9ucy1zcGFyayIgfCAib2xhcC1zcGFyay15YXJuIikKICAgICAgICMgZGVhY3RpdmF0ZSBOZW80aiBwbHVnaW4gdG8gcHJldmVudCB2ZXJzaW9uIGNvbmZsaWN0cyBiZXR3ZWVuIFRpbmtlclBvcCdzIFNwYXJrIGphcnMgYW5kIE5lbzRqJ3MgU3BhcmsgamFycwogICAgICAgbWtkaXIgLmV4dAogICAgICAgbXYgZXh0L25lbzRqLWdyZW1saW4gLmV4dC8KQEAgLTEyMSw5ICsxMjEsOCBAQAogICAgICAgbWtkaXIgLmV4dAogICAgICAgbXYgZXh0L25lbzRqLWdyZW1saW4gLmV4dC8KICAgICAgIG12IGV4dC9zcGFyay1ncmVtbGluIC5leHQvCi0gICAgICBtdiBleHQvZ2lyYXBoLWdyZW1saW4gLmV4dC8KICAgICAgIG12IGV4dC9oYWRvb3AtZ3JlbWxpbiAuZXh0LwotICAgICAgY2F0IGV4dC9wbHVnaW5zLnR4dCB8IHRlZSAuZXh0L3BsdWdpbnMuYWxsIHwgZ3JlcCAtdiAnTmVvNGpHcmVtbGluUGx1Z2luXHxTcGFya0dyZW1saW5QbHVnaW5cfEdpcmFwaEdyZW1saW5QbHVnaW5cfEhhZG9vcEdyZW1saW5QbHVnaW4nID4gLmV4dC9wbHVnaW5zLnR4dAorICAgICAgY2F0IGV4dC9wbHVnaW5zLnR4dCB8IHRlZSAuZXh0L3BsdWdpbnMuYWxsIHwgZ3JlcCAtdiAnTmVvNGpHcmVtbGluUGx1Z2luXHxTcGFya0dyZW1saW5QbHVnaW5cfEhhZG9vcEdyZW1saW5QbHVnaW4nID4gLmV4dC9wbHVnaW5zLnR4dAogICAgICAgOzsKICAgZXNhYwogCkBAIC0xMzYsNyArMTM1LDcgQEAKICAgYXdrIC1mICR7QVdLX1NDUklQVFN9L3ByZXBhcmUuYXdrIHwKICAgYXdrIC1mICR7QVdLX1NDUklQVFN9L2luaXQtY29kZS1ibG9ja3MuYXdrIC12IFRQX0hPTUU9IiR7VFBfSE9NRX0iIC12IFBZVEhPTlBBVEg9IiR7VFBfSE9NRX0vZ3JlbWxpbi1weXRob24vdGFyZ2V0L2NsYXNzZXMvTGliIiB8CiAgIGF3ayAtZiAke0FXS19TQ1JJUFRTfS9wcm9ncmVzc2Jhci5hd2sgLXYgdHBsPSR7QVdLX1NDUklQVFN9L3Byb2dyZXNzYmFyLmdyb292eS50ZW1wbGF0ZSB8Ci0gIEhBRE9PUF9HUkVNTElOX0xJQlM9IiR7Q09OU09MRV9IT01FfS9leHQvZ2lyYXBoLWdyZW1saW4vbGliOiR7Q09OU09MRV9IT01FfS9leHQvdGlua2VyZ3JhcGgtZ3JlbWxpbi9saWIiIGJpbi9ncmVtbGluLnNoIHwKKyAgSEFET09QX0dSRU1MSU5fTElCUz0iJHtDT05TT0xFX0hPTUV9L2V4dC90aW5rZXJncmFwaC1ncmVtbGluL2xpYiIgYmluL2dyZW1saW4uc2ggfCAke1RQX0hPTUV9L2RvY3MvcHJlcHJvY2Vzc29yL2NvbnRyb2wtY2hhcmFjdGVycy5zaCB8CiAgICR7bGJ9IGF3ayAtZiAke0FXS19TQ1JJUFRTfS9pZ25vcmUuYXdrICAgfAogICAke2xifSBhd2sgLWYgJHtBV0tfU0NSSVBUU30vcHJldHRpZnkuYXdrIHwKICAgJHtsYn0gYXdrIC1mICR7QVdLX1NDUklQVFN9L2NsZWFudXAuYXdrICB8CmRpZmYgLS1naXQgYS9kb2NzL3Nhc3MvdGFicy5zY3NzIGIvZG9jcy9zYXNzL3RhYnMuc2NzcwppbmRleCAzOWM4OGY0Li4wOGE4OWI3IDEwMDY0NAotLS0gYS9kb2NzL3Nhc3MvdGFicy5zY3NzCisrKyBiL2RvY3Mvc2Fzcy90YWJzLnNjc3MKQEAgLTI4LDcgKzI4LDcgQEAKIAogJHRhYkhlaWdodDogNTBweDsKICRtaW5UYWJzOiAyOwotJG1heFRhYnM6IDQ7CiskbWF4VGFiczogNjsKIAogQG1peGluIHNpbmdsZS10cmFuc2l0aW9uKCRwcm9wZXJ0eTphbGwsICRzcGVlZDoxNTBtcywgJGVhc2U6ZWFzZSwgJGRlbGF5OiAwcykgewogICAtd2Via2l0LXRyYW5zaXRpb246ICRwcm9wZXJ0eSAkc3BlZWQgJGVhc2UgJGRlbGF5OyAgCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9kb3dubG9hZHMuaHRtbCBiL2RvY3Mvc2l0ZS9ob21lL2Rvd25sb2Fkcy5odG1sCmluZGV4IDVlMTlmN2IuLmY4OTY2MWIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc2l0ZS9ob21lL2Rvd25sb2Fkcy5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2Rvd25sb2Fkcy5odG1sCkBAIC0xNyw1NTcgKzE3LDEyMSBAQAogPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgIDxoMz5Eb3dubG9hZCBBcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvaDM+Ci0gICAgPHA+PGltZyBzcmM9ImltYWdlcy9ncmVtbGluLWRvd25sb2FkLnBuZyIgIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoxNTBweDtwYWRkaW5nOjEwcHg7Ii8+QXBhY2hlIFRpbmtlclBvcCBwcm92aWRlcyB0aHJlZSBwYWNrYWdlZCBkb3dubG9hZHMgcGVyIHJlbGVhc2UgdmVyc2lvbi4gVGhlCisgICAgPHA+PGltZyBzcmM9ImltZy9ncmVtbGluLWRvd25sb2FkLnBuZyIgIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoxNTBweDtwYWRkaW5nOjEwcHg7Ii8+QXBhY2hlIFRpbmtlclBvcCBwcm92aWRlcyB0aHJlZSBwYWNrYWdlZCBkb3dubG9hZHMgcGVyIHJlbGVhc2UgdmVyc2lvbi4gVGhlCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tY29uc29sZSI+R3JlbWxpbiBDb25zb2xlPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tc2VydmVyIj5HcmVtbGluIFNlcnZlcjwvYT4KICAgICAgICBkb3dubG9hZHMgYXJlIGJpbmFyeSBkaXN0cmlidXRpb25zLCB3aGljaCBjb250YWluIHByZS1wYWNrYWdlZCB2ZXJzaW9ucyBvZiB0aGVzZSBpbXBvcnRhbnQgVGlua2VyUG9wIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBkZXNpZ25lZCB0byB3b3JrIG91dC1vZi10aGUtYm94CiAgICAgICAgd2hlbiB1bnBhY2thZ2VkLiBUaGUgc291cmNlIGRpc3RyaWJ1dGlvbiBpcyBhIHNuYXBzaG90IG9mIHRoZSBzb3VyY2UgY29kZSBhbmQgZmlsZXMgdXNlZCBpbiB0aGUgYnVpbGRpbmcgb2YgdGhvc2UgIGJpbmFyeSBkaXN0cmlidXRpb25zLjwvcD4KLSAgICA8cD4KLSAgICAgQXMgYSBjb252ZW5pZW5jZSwgVGlua2VyUG9wIGFsc28gZGVwbG95cyBwYWNrYWdlZCBhcnRpZmFjdHMgdG86Ci0gICAgIDx1bD4KLSAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3NlYXJjaC5tYXZlbi5vcmcvI3NlYXJjaCU3Q2dhJTdDMSU3Q2clM0ElMjJvcmcuYXBhY2hlLnRpbmtlcnBvcCUyMiI+TWF2ZW4gQ2VudHJhbDwvYT48L2xpPgotICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2dyZW1saW5weXRob24vIj5QeVBJPC9hPjwvbGk+Ci0gICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9HcmVtbGluLk5ldC8iPk51R2V0PC9hPjwvbGk+Ci0gICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2dyZW1saW4iPm5wbTwvYT48L2xpPgotICAgICA8L3VsPgotICAgIDwvcD4KLSAgICA8YnIvPgogICAgIDxoND5DdXJyZW50IFJlbGVhc2VzPC9oND4KICAgICA8dGFibGUgY2xhc3M9InRhYmxlIj4KICAgICAgICAgPHRyPgogICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4zLjQ8L3N0cm9uZz4gKGxhdGVzdCwgc3RhYmxlKQorICAgICAgICAgICAgICAgIDxzdHJvbmc+My40LjI8L3N0cm9uZz4gKGxhdGVzdCwgc3RhYmxlKQogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAxNS1PY3QtMjAxOAorICAgICAgICAgICAgICAgIDI4LU1heS0yMDE5CiAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4zLjQvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0zLTQiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuNC91cGdyYWRlLyNfdGlua2VycG9wXzNfM180Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjQvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMy40L2Z1bGwvIj5qYXZhZG9jPC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy40LjIvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy00LTIiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKKyAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjQuMi91cGdyYWRlLyNfdGlua2VycG9wXzNfNF8yIj51cGdyYWRlPC9hPiB8CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjIvIj5kb2N1bWVudGF0aW9uPC9hPiB8CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10b2dnbGU9Im1vZGFsIiBkYXRhLXRhcmdldD0iI2NvbnRyaWJ1dG9ycy0zXzRfMiI+Y29udHJpYnV0b3JzPC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy4zLjQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuNC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy4zLjQvYXBhY2hlLXRpbmtlcnBvcC0zLjMuNC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuNC4yL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuNC4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy40LjIvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjQuMi1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy40LjIvYXBhY2hlLXRpbmtlcnBvcC0zLjQuMi1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgPC90cj4KICAgICAgICAgPHRyPgogICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4yLjEwPC9zdHJvbmc+IChtYWludGVuYW5jZSkKKyAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMy43PC9zdHJvbmc+IChtYWludGVuYW5jZSkKICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTUtT2N0LTIwMTgKKyAgICAgICAgICAgICAgICAyOC1NYXktMjAxOQogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi4xMC9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTItMTAiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMTAvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfMTAiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMTAvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4xMC9mdWxsLyI+amF2YWRvYzwvYT4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMy43L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMy03Ij5yZWxlYXNlIG5vdGVzPC9hPiB8CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjcvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzNfNyI+dXBncmFkZTwvYT4gfAorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy43LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdG9nZ2xlPSJtb2RhbCIgZGF0YS10YXJnZXQ9IiNjb250cmlidXRvcnMtM18zXzciPmNvbnRyaWJ1dG9yczwvYT4KICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjIuMTAvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4yLjEwLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy4yLjEwL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4yLjEwLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjIuMTAvYXBhY2hlLXRpbmtlcnBvcC0zLjIuMTAtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjMuNy9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjMuNy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy43L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4zLjctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy43L2FwYWNoZS10aW5rZXJwb3AtMy4zLjctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgIDwvdHI+CiAgICAgPC90YWJsZT4KICAgICA8aDQ+QXJjaGl2ZWQgUmVsZWFzZXM8L2g0PgotICAgIDx0YWJsZSBjbGFzcz0idGFibGUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjMuMzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA4LU1heS0yMDE4Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4zLjMvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0zLTMiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMy91cGdyYWRlLyNfdGlua2VycG9wXzNfM18zIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjMvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMy4zL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMy4zL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy4zLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjMvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuMy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjMvYXBhY2hlLXRpbmtlcnBvcC0zLjMuMy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4yLjk8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgOC1NYXktMjAxOAotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi45L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMi05Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjkvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfOSI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi45LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjIuOS9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuOS9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjIuOS1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi45L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4yLjktYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi45L2FwYWNoZS10aW5rZXJwb3AtMy4yLjktc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMy4yPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDItQXByLTIwMTgKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjMuMi9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTMtMiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy4yL3VwZ3JhZGUvI190aW5rZXJwb3BfM18zXzIiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMi8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4zLjIvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjIvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4zLjItYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMy4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMi9hcGFjaGUtdGlua2VycG9wLTMuMy4yLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuODwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAyLUFwci0yMDE4Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjgvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTgiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuOC91cGdyYWRlLyNfdGlua2VycG9wXzNfMl84Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjgvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi44L2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi44L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi44LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjgvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuOC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjgvYXBhY2hlLXRpbmtlcnBvcC0zLjIuOC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4zLjE8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTctRGVjLTIwMTcKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjMuMS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTMtMSI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy4xL3VwZ3JhZGUvI190aW5rZXJwb3BfM18zXzEiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMS8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4zLjEvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjEvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4zLjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMS9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMy4xLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMS9hcGFjaGUtdGlua2VycG9wLTMuMy4xLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuNzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAxNy1EZWMtMjAxNwotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi43L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMi03Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjcvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfNyI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi43LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjIuNy9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuNy9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjIuNy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi43L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4yLjctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi43L2FwYWNoZS10aW5rZXJwb3AtMy4yLjctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMy4wPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDIxLUF1Zy0yMDE3Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4zLjAvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0zLTAiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMC91cGdyYWRlLyNfdGlua2VycG9wXzNfM18wIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjAvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMy4wL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMy4wL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy4wLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjAvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuMC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjAvYXBhY2hlLXRpbmtlcnBvcC0zLjMuMC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4yLjY8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMjEtQXVnLTIwMTcKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjIuNi9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTItNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi42L3VwZ3JhZGUvI190aW5rZXJwb3BfM18yXzYiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuNi8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4yLjYvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjYvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4yLjYtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuNi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMi42LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuNi9hcGFjaGUtdGlua2VycG9wLTMuMi42LXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjEuODwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAyMS1BdWctMjAxNwotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS44L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMS04Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjgvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzFfOCI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS44LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuOC9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuOC9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjEuOC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS44L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4xLjgtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS44L2FwYWNoZS10aW5rZXJwb3AtMy4xLjgtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi41PC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDEyLUp1bi0yMDE3Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjUvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuNS91cGdyYWRlLyNfdGlua2VycG9wXzNfMl81Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjUvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi41L2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi41L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi41LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjUvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuNS1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjUvYXBhY2hlLXRpbmtlcnBvcC0zLjIuNS1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTItSnVuLTIwMTcKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjEuNy9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTEtNyI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS43L3VwZ3JhZGUvI190aW5rZXJwb3BfM18xXzciPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuNy8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4xLjcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4xLjcvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4xLjctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNy9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMS43LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNy9hcGFjaGUtdGlua2VycG9wLTMuMS43LXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuNDwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAzLUZlYi0yMDE3Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjQvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTQiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuNC91cGdyYWRlLyNfdGlua2VycG9wXzNfMl80Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjQvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi40L2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuNC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjQvYXBhY2hlLXRpbmtlcnBvcC0zLjIuNC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjY8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMy1GZWItMjAxNwotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS42L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMS02Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjYvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzFfNiI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS42LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuNi9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjEuNi1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS42L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4xLjYtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS42L2FwYWNoZS10aW5rZXJwb3AtMy4xLjYtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi4zPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDE3LU9jdC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjMvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTMiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMy91cGdyYWRlLyNfdGlua2VycG9wXzNfMl8zIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjMvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4zL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4zL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi4zLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjMvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuMy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjMvYXBhY2hlLXRpbmtlcnBvcC0zLjIuMy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjU8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTctT2N0LTIwMTYKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjEuNS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTEtNSI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS41L3VwZ3JhZGUvI190aW5rZXJwb3BfM18xXzUiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuNS8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4xLjUvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4xLjUvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4xLjUtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNS9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMS41LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNS9hcGFjaGUtdGlua2VycG9wLTMuMS41LXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuMjwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA2LVNlcC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjIvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTIiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMi91cGdyYWRlLyNfdGlua2VycG9wXzNfMl8yIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjIvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4yL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4yL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjIvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuMi1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjIvYXBhY2hlLXRpbmtlcnBvcC0zLjIuMi1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjQ8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgNi1TZXAtMjAxNgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS40L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMS00Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjQvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzFfNCI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS40LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuNC9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNC9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjEuNC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4xLjQtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS40L2FwYWNoZS10aW5rZXJwb3AtMy4xLjQtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi4xPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDE4LUp1bC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjEvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMjEtcmVsZWFzZS1kYXRlLWp1bHktMTgtMjAxNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi4xL3VwZ3JhZGUvI190aW5rZXJwb3BfM18yXzEiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMS9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4xL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4xL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4yLjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuMS9hcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItMy4yLjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4xL2FwYWNoZS10aW5rZXJwb3AtMy4yLjEtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMS4zPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDE4LUp1bC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4xLjMvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMTMtcmVsZWFzZS1kYXRlLWp1bHktMTgtMjAxNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS4zL3VwZ3JhZGUvI190aW5rZXJwb3BfM18xXzMiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuMy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMS4zL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS4zL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4xLjMtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuMy9hcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItMy4xLjMtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS4zL2FwYWNoZS10aW5rZXJwb3AtMy4xLjMtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi4wLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgOC1BcHItMjAxNgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi4wLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMjAtcmVsZWFzZS1kYXRlLWFwcmlsLTgtMjAxNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi4wLWluY3ViYXRpbmcvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfMF8yIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjAtaW5jdWJhdGluZy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4wLWluY3ViYXRpbmcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMi4wLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tY29uc29sZS0zLjIuMC1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMi4wLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tc2VydmVyLTMuMi4wLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjIuMC1pbmN1YmF0aW5nL2FwYWNoZS10aW5rZXJwb3AtMy4yLjAtaW5jdWJhdGluZy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjItaW5jdWJhdGluZzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA4LUFwci0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4xLjItaW5jdWJhdGluZy9DSEFOR0VMT0cuYXNjaWlkb2MjdGlua2VycG9wLTMxMi1yZWxlYXNlLWRhdGUtYXByaWwtOC0yMDE2Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjItaW5jdWJhdGluZy91cGdyYWRlLyNfdGlua2VycG9wXzNfMV8yIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjItaW5jdWJhdGluZy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMS4yLWluY3ViYXRpbmcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4yLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tY29uc29sZS0zLjEuMi1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4yLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tc2VydmVyLTMuMS4yLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMi1pbmN1YmF0aW5nL2FwYWNoZS10aW5rZXJwb3AtMy4xLjItaW5jdWJhdGluZy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjEtaW5jdWJhdGluZzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA4LUZlYi0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4xLjEtaW5jdWJhdGluZy9DSEFOR0VMT0cuYXNjaWlkb2MjdGlua2VycG9wLTMxMS1yZWxlYXNlLWRhdGUtZmVicnVhcnktOC0yMDE2Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjEtaW5jdWJhdGluZy91cGdyYWRlLyNfdGlua2VycG9wXzNfMV8xIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjEtaW5jdWJhdGluZy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMS4xLWluY3ViYXRpbmcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4xLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tY29uc29sZS0zLjEuMS1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4xLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tc2VydmVyLTMuMS4xLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMS1pbmN1YmF0aW5nL2FwYWNoZS10aW5rZXJwb3AtMy4xLjEtaW5jdWJhdGluZy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjAtaW5jdWJhdGluZzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAxNi1Ob3YtMjAxNQotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS4wLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMTAtcmVsZWFzZS1kYXRlLW5vdmVtYmVyLTE2LTIwMTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuMC1pbmN1YmF0aW5nLyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuMC1pbmN1YmF0aW5nL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMC1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4xLjAtaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMC1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLXNlcnZlci0zLjEuMC1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4xLjAtaW5jdWJhdGluZy9hcGFjaGUtdGlua2VycG9wLTMuMS4wLWluY3ViYXRpbmctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMC4yLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTktT2N0LTIwMTUKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjAuMi1pbmN1YmF0aW5nL0NIQU5HRUxPRy5hc2NpaWRvYyN0aW5rZXJwb3AtMzAyLXJlbGVhc2UtZGF0ZS1vY3RvYmVyLTE5LTIwMTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjAuMi1pbmN1YmF0aW5nLyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjAuMi1pbmN1YmF0aW5nL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMi1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4wLjItaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMi1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLXNlcnZlci0zLjAuMi1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjItaW5jdWJhdGluZy9hcGFjaGUtdGlua2VycG9wLTMuMC4yLWluY3ViYXRpbmctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMC4xLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMi1TZXAtMjAxNQotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMC4xLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMDEtcmVsZWFzZS1kYXRlLXNlcHRlbWJlci0yLTIwMTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjAuMS1pbmN1YmF0aW5nLyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjAuMS1pbmN1YmF0aW5nL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMS1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4wLjEtaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMS1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLXNlcnZlci0zLjAuMS1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjEtaW5jdWJhdGluZy9hcGFjaGUtdGlua2VycG9wLTMuMC4xLWluY3ViYXRpbmctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMC4wLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgOS1KdWwtMjAxNQotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMC4wLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMDAtcmVsZWFzZS1kYXRlLWp1bHktOS0yMDE1Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4wLjAtaW5jdWJhdGluZy8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4wLjAtaW5jdWJhdGluZy9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjAtaW5jdWJhdGluZy9hcGFjaGUtZ3JlbWxpbi1jb25zb2xlLTMuMC4wLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjAtaW5jdWJhdGluZy9hcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItMy4wLjAtaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMC4wLWluY3ViYXRpbmcvYXBhY2hlLXRpbmtlcnBvcC0zLjAuMC1pbmN1YmF0aW5nLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gICAgPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoYXQgdXBncmFkZSBkb2N1bWVudGF0aW9uIHdhcyBvbmx5IGludHJvZHVjZWQgYXQgMy4xLjEtaW5jdWJhdGluZyB3aGljaCBpcyB3aHkgdGhlcmUgYXJlIG5vIGxpbmtzICJ1cGdyYWRlIiBsaW5rcyBpbiB2ZXJzaW9ucyBwcmlvciB0byB0aGF0IG9uZS4KKyAgICA8cD4KKyAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIHJvdyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0zIj4KKyAgICA8c2VsZWN0IGlkPSJkcm9wZG93bkFyY2hpdmVzIiBjbGFzcz0iZm9ybS1jb250cm9sIj4KKyAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD0ic2VsZWN0ZWQiPjMuNC4xICgxOC1NYXItMjAxOSk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjQuMCAoMi1KYW4tMjAxOSk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjMuNiAoMTgtTWFyLTIwMTkpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4zLjUgKDItSmFuLTIwMTkpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4zLjQgKDE1LU9jdC0yMDE4KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMy4zICg4LU1heS0yMDE4KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMy4yICgyLUFwci0yMDE4KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMy4xICgxNy1EZWMtMjAxNyk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjMuMCAoMjEtQXVnLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjExICgyLUphbi0yMDE5KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi4xMCAoMTUtT2N0LTIwMTgpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjkgKDgtTWF5LTIwMTgpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjggKDItQXByLTIwMTgpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjcgKDE3LURlYy0yMDE3KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi42ICgyMS1BdWctMjAxNyk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjIuNSAoMTItSnVuLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjQgKDMtRmViLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjMgKDE3LU9jdC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi4yICg2LVNlcC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi4xICgxOC1KdWwtMjAxNik8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjIuMC1pbmN1YmF0aW5nICg4LUFwci0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS44ICgyMS1BdWctMjAxNyk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjEuNyAoMTItSnVuLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4xLjYgKDMtRmViLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4xLjUgKDE3LU9jdC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS40ICg2LVNlcC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS4zICgxOC1KdWwtMjAxNik8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjEuMi1pbmN1YmF0aW5nICg4LUFwci0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS4xLWluY3ViYXRpbmcgKDgtRmViLTIwMTYpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4xLjAtaW5jdWJhdGluZyAoMTYtTm92LTIwMTUpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4wLjItaW5jdWJhdGluZyAoMTgtT2N0LTIwMTUpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4wLjEtaW5jdWJhdGluZyAoMi1TZXAtMjAxNSk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjAuMC1pbmN1YmF0aW5nICg5LUp1bC0yMDE1KTwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8L3A+CisgICAgIDx0YWJsZSBjbGFzcz0idGFibGUiPgorICAgICAgICAgPHRyPgorICAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgICAgICAgPHN0cm9uZyBpZD0iYXJjaGl2ZVZlcnNpb24iPjwvc3Ryb25nPgorICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgPHRkIGlkPSJhcmNoaXZlUmVsZWFzZURhdGUiPjwvdGQ+CisgICAgICAgICAgICAgPHRkPgorICAgICAgICAgICAgICAgICA8YSBpZD0iYXJjaGl2ZVJlbGVhc2VOb3RlcyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMSI+cmVsZWFzZSBub3RlczwvYT4gfAorICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iYXJjaGl2ZVVwZ3JhZGUiPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4xL3VwZ3JhZGUvI190aW5rZXJwb3BfM180XzEiPnVwZ3JhZGU8L2E+IHw8L3NwYW4+CisgICAgICAgICAgICAgICAgIDxhIGlkPSJhcmNoaXZlRG9jcyIgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjEvIj5kb2N1bWVudGF0aW9uPC9hPiB8CisgICAgICAgICAgICAgICAgIDxhIGlkPSJhcmNoaXZlQ29udHJpYnV0b3JzIiBocmVmPSIjIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIGRhdGEtdGFyZ2V0PSIjY29udHJpYnV0b3JzLTNfNF8xIj5jb250cmlidXRvcnM8L2E+CisgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KKyAgICAgICAgICAgICAgICAgPGEgaWQ9ImFyY2hpdmVEb3dubG9hZENvbnNvbGUiIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuNC4xL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuNC4xLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICAgIDxhIGlkPSJhcmNoaXZlRG93bmxvYWRTZXJ2ZXIiIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuNC4xL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy40LjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgICA8YSBpZD0iYXJjaGl2ZURvd25sb2FkU291cmNlIiBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjQuMS9hcGFjaGUtdGlua2VycG9wLTMuNC4xLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgIDwvdHI+CisgICAgIDwvdGFibGU+CisgICAgPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoYXQgdXBncmFkZSBkb2N1bWVudGF0aW9uIHdhcyBvbmx5IGludHJvZHVjZWQgYXQgMy4xLjEtaW5jdWJhdGluZyB3aGljaCBpcyB3aHkgdGhlcmUgYXJlIG5vICJ1cGdyYWRlIiBsaW5rcyBpbiB2ZXJzaW9ucyBwcmlvciB0byB0aGF0IG9uZS4KKyAgICA8cD5BcyBhIGNvbnZlbmllbmNlLCBUaW5rZXJQb3AgYWxzbyBkZXBsb3lzIHBhY2thZ2VkIGFydGlmYWN0cyB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczo8L3A+CisgICAgPHA+PGEgaHJlZj0iaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS91L3RpbmtlcnBvcC8iPkRvY2tlcjwvYT4gfCA8YSBocmVmPSJodHRwOi8vc2VhcmNoLm1hdmVuLm9yZy8jc2VhcmNoJTdDZ2ElN0MxJTdDZyUzQSUyMm9yZy5hcGFjaGUudGlua2VycG9wJTIyIj5NYXZlbiBDZW50cmFsPC9hPiB8IDxhIGhyZWY9Imh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvZ3JlbWxpbnB5dGhvbi8iPlB5UEk8L2E+IHwgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZ3JlbWxpbiI+bnBtPC9hPiB8IDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9HcmVtbGluLk5ldC8iPk51R2V0PC9hPjwvcD4KKworICAgICA8cD48c3Ryb25nPk5vdGU8L3N0cm9uZz4gdGhpcyBwYWdlIGxpc3RzIG9mZmljaWFsIEFwYWNoZSByZWxlYXNlcyBvbmx5LiBUaW5rZXJQb3Agb2NjYXNpb25hbGx5IHByb2R1Y2VzIHVub2ZmaWNpYWwgYmluYXJ5IHJlbGVhc2UgY2FuZGlkYXRlcyAoZGVub3RlZCBieSB0aGUgc3VmZml4ICItUkMiKSB3aGljaCBhcmUgTk9UIHByb21vdGVkIG9yIGFubm91bmNlZCBhcyBhY3R1YWwgcmVsZWFzZSB2ZXJzaW9ucy4gPGk+U3VjaCByZWxlYXNlcyBhcmUgZm9yIGVhcmx5IGRldmVsb3BtZW50IGFuZCBldmFsdWF0aW9uIHB1cnBvc2VzIG9ubHkuPC9pPjwvcD4KKworICAgIDxhIG5hbWU9InZlcmlmeSI+PC9hPgogICAgIDxoND5WZXJpZnlpbmcgRG93bmxvYWRzPC9oND4KLSAgICA8cD5BbGwgZG93bmxvYWRzIGhhdmUgYXNzb2NpYXRlZCBQR1AgYW5kIFNIQTEgc2lnbmF0dXJlcyB0byBoZWxwIHZlcmlmeSBhIGRpc3RyaWJ1dGlvbiBwcm92aWRlZCBieSBhIG1pcnJvci4gVG8gdmVyaWZ5IGEgZGlzdHJpYnV0aW9uIHZpYSBQR1Agb3IgR1BHIGZpcnN0IGRvd25sb2FkIHRoZQorICAgIDxwPkFsbCBkb3dubG9hZHMgaGF2ZSBhc3NvY2lhdGVkIFBHUCBhbmQgU0hBNTEyIHNpZ25hdHVyZXMgdG8gaGVscCB2ZXJpZnkgYSBkaXN0cmlidXRpb24gcHJvdmlkZWQgYnkgYSBtaXJyb3IuIFRvIHZlcmlmeSBhIGRpc3RyaWJ1dGlvbiB2aWEgUEdQIG9yIEdQRyBmaXJzdCBkb3dubG9hZCB0aGUKICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wL0tFWVMiPktFWVM8L2E+IGZpbGUgKGl0IGlzIGltcG9ydGFudCB0byB1c2UgdGhlIGxpbmtlZCBmaWxlIHdoaWNoIGlzIGZyb20gdGhlIG1haW4gZGlzdHJpYnV0aW9uIGRpcmVjdG9yeSBhbmQgbm90IGEKICAgICAgICBtaXJyb3IuIE5leHQgZG93bmxvYWQgdGhlIGFwcHJvcHJpYXRlICJhc2MiIHNpZ25hdHVyZSBmaWxlIGZvciB0aGUgcmVsZXZhbnQgZGlzdHJpYnV0aW9uIChhZ2FpbiwgdGhpcyBmaWxlIHNob3VsZCBjb21lIGZyb20gdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvIj5tYWluCiAgICAgICAgZGlzdHJpYnV0aW9uIGRpcmVjdG9yeTwvYT4gLSBub3RlIHRoYXQgb2xkZXIgcmVsZWFzZXMgd2lsbCBoYXZlIHN1Y2ggZmlsZXMgaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLyI+YXJjaGl2ZXM8L2E+IG9yIGlmIHJlbGVhc2VkIHVuZGVyIEFwYWNoZQpAQCAtNTkzLDcgKzE1NywxMTU1IEBACiAgICAgICBncGcgLS12ZXJpZnkgYXBhY2hlLWdyZW1saW4tY29uc29sZS14Lnkuei1iaW4uemlwLmFzYyBhcGFjaGUtZ3JlbWxpbi1jb25zb2xlLXgueS56LWJpbi56aXAKICAgICAgIDwvY29kZT48L3ByZT4KICAgICA8L3A+Ci0gICAgPHA+QWx0ZXJuYXRpdmVseSwgY29uc2lkZXIgdmVyaWZ5aW5nIHRoZSBTSEExIHNpZ25hdHVyZSBvbiB0aGUgZmlsZXMuIEFuIFNIQTEgc2lnbmF0dXJlIGNvbnNpc3RzIG9mIDQwIGhleCBjaGFyYWN0ZXJzLgorICAgIDxwPkFsdGVybmF0aXZlbHksIGNvbnNpZGVyIHZlcmlmeWluZyB0aGUgU0hBNTEyIHNpZ25hdHVyZSBvbiB0aGUgZmlsZXMuIEFuIFNIQTUxMiBzaWduYXR1cmUgY29uc2lzdHMgb2YgMTI4IGhleCBjaGFyYWN0ZXJzLgogICAgICAgIEVuc3VyZSB0aGF0IHRoZSBnZW5lcmF0ZWQgc2lnbmF0dXJlIHN0cmluZyBtYXRjaGVzIHRoZSBzaWduYXR1cmUgc3RyaW5nIHB1Ymxpc2hlZCBpbiB0aGUgZmlsZXMgYWJvdmUuPC9wPgogIDwvZGl2PgotPC9kaXY+CisKKyAgICA8IS0tIENvbnRyaWJ1dG9yIE1vZGFscyAtLT4KKyAgICA8IS0tIDMuNC4yIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM180XzIiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuNC4yPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjQuMS4uMy40LjI8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuNC4xIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM180XzEiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuNC4xPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjQuMC4uMy40LjEKKyAgIDE3MiAgU3RlcGhlbiBNYWxsZXR0ZQorICAgIDI5ICBEYW5pZWwgS3VwcGl0egorICAgIDI4ICBKb3JnZSBCYXkgR29uZHJhCisgICAgMTkgIEZsb3JpYW4gSG9ja21hbm4KKyAgICAgOCAgUm9iZXJ0IERhbGUKKyAgICAgNSAgRWR1YXJkIFR1ZGVuaG9lZm5lcgorICAgICAzICBKb2UgU3Ryb3V0aAorICAgICAyICBBbGFuIEJvdWRyZWF1bHQKKyAgICAgMiAgRGl2aWogVmFpZHlhCisgICAgIDEgIEFsZXggTGl1CisgICAgIDEgIERtaXRyaSBCb3VybGF0Y2hrb3YKKyAgICAgMSAgSXNhYWMgSW5zbGV5CisgICAgIDEgIEtldmluIEdhbGxhcmRvCisgICAgIDEgIE1hdHQgTmV3bWFuCisgICAgIDEgIE5pdiBTaGVyZgorICAgICAxICBPbGVrc2FuZHIgUG9ydW5vdgorICAgICAxICBWbGFkaW1pciBCb2dvbW9sb3YKKyAgICAgMSAgWXVuZy1KaW4gKEpvZXkpIEh1CisgICAgIDEgIHRoZWZsaWlrPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjQuMCAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfNF8wIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjQuMDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4zLjUuLjMuNC4wCisgICA2MDcJU3RlcGhlbiBNYWxsZXR0ZQorICAgIDY0CURhbmllbCBLdXBwaXR6CisgICAgNDQJSm9yZ2UgQmF5IEdvbmRyYQorICAgIDM2CUZsb3JpYW4gSG9ja21hbm4KKyAgICAyNwlSb2JlcnQgRGFsZQorICAgICA5CUdDSFFSZXNlYXJjaGVyMTMzNworICAgICA2CUhhcnNoIFRoYWtrYXIKKyAgICAgNQlBc2h3aW5pIFNpbmdoCisgICAgIDUJUGF0cmlrIEh1c2Zsb2VuCisgICAgIDMJSnVzdGluIENodQorICAgICAyCUhhZG9vcE1hcmMKKyAgICAgMglKb3NodWEgU2hpbmF2aWVyCisgICAgIDIJU3ZhbnRlIFNjaHViZXJ0CisgICAgIDIJZGF2ZWJzaG93CisgICAgIDEJQWxhbiBCb3VkcmVhdWx0CisgICAgIDEJQWxleCBMaXUKKyAgICAgMQlKYXNvbiBQbHVyYWQKKyAgICAgMQlLZXZpbiBHYWxsYXJkbworICAgICAxCU90YXZpbyBTYW50YW5hCisgICAgIDEJUnVzc2VsbCBTcGl0emVyCisgICAgIDEJU2FtIEhhdmVuczwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjcgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfNyIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy42Li4zLjMuNzwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjYgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfNiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjY8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy41Li4zLjMuNgorICAgIDc4ICBTdGVwaGVuIE1hbGxldHRlCisgICAgMTMgIERhbmllbCBLdXBwaXR6CisgICAgIDYgIEZsb3JpYW4gSG9ja21hbm4KKyAgICAgMyAgSm9lIFN0cm91dGgKKyAgICAgMyAgUm9iZXJ0IERhbGUKKyAgICAgMiAgQWxhbiBCb3VkcmVhdWx0CisgICAgIDIgIERpdmlqIFZhaWR5YQorICAgICAxICBBbGV4IExpdQorICAgICAxICBEbWl0cmkgQm91cmxhdGNoa292CisgICAgIDEgIEVkdWFyZCBUdWRlbmhvZWZuZXIKKyAgICAgMSAgSm9yZ2UgQmF5IEdvbmRyYQorICAgICAxICBNYXR0IE5ld21hbgorICAgICAxICBOaXYgU2hlcmYKKyAgICAgMSAgVmxhZGltaXIgQm9nb21vbG92CisgICAgIDEgIFl1bmctSmluIChKb2V5KSBIdTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjUgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfNSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjU8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy40Li4zLjMuNQorICAgIDkyCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICAxMAlEYW5pZWwgS3VwcGl0egorICAgICA3CUZsb3JpYW4gSG9ja21hbm4KKyAgICAgNwlSb2JlcnQgRGFsZQorICAgICA0CUpvcmdlIEJheSBHb25kcmEKKyAgICAgMglFZHVhcmQgVHVkZW5ob2VmbmVyCisgICAgIDIJR3JhZmYsIFBoaWxpcCBCCisgICAgIDEJQWJyYWcKKyAgICAgMQlBbGFuIEJvdWRyZWF1bHQKKyAgICAgMQlBbGV4IExpdQorICAgICAxCURhbmllbCBDLiBXZWJlcgorICAgICAxCUplcm15IExpCisgICAgIDEJT3RhdmlvIFNhbnRhbmEKKyAgICAgMQlUaWV1IFBoaWxpcHBlIEtISU0KKyAgICAgMQlUb255IE1jTmVpbAorICAgICAxCWFydGVtYWxpZXYKKyAgICAgMQlmaGFtbW9uPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjIuMTEgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfMTEiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4xMTwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4yLjEwLi4zLjIuMTEKKyAgICAgNglTdGVwaGVuIE1hbGxldHRlCisgICAgIDQJUm9iZXJ0IERhbGUKKyAgICAgMQlGbG9yaWFuIEhvY2ttYW5uPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjMuNCAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfM180IiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjMuNDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4zLjMuLjMuMy40CisgICAyODcJU3RlcGhlbiBNYWxsZXR0ZQorICAgIDQ4CUZsb3JpYW4gSG9ja21hbm4KKyAgICAyNwlSb2JlcnQgRGFsZQorICAgIDIxCU1hdHRoZXcgQWxsZW4KKyAgICAxOAlEYW5pZWwgS3VwcGl0egorICAgIDExCUpvcmdlIEJheSBHb25kcmEKKyAgICAgNwlKdXN0aW4gQ2h1CisgICAgIDcJT3RhdmlvIFNhbnRhbmEKKyAgICAgNglEbWl0cmkgQm91cmxhdGNoa292CisgICAgIDUJS2V2aW4gR2FsbGFyZG8KKyAgICAgNQlkYXZlYnNob3cKKyAgICAgMQlEYW5pZWwgV2ViZXIKKyAgICAgMQlFbGxpb3R0IEZvc3RlcgorICAgICAxCUxpb3IgUG9sbGFjaworICAgICAxCWFyaW5ncworICAgICAxCXlhdGFtPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjIuMTAgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfMTAiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4xMDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogUm9iZXJ0IERhbGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi45Li4zLjIuMTAKKyAgIDE1NglTdGVwaGVuIE1hbGxldHRlCisgICAgMzMJRmxvcmlhbiBIb2NrbWFubgorICAgIDIxCU1hdHRoZXcgQWxsZW4KKyAgICAxNwlSb2JlcnQgRGFsZQorICAgICA5CURhbmllbCBLdXBwaXR6CisgICAgIDcJSm9yZ2UgQmF5IEdvbmRyYQorICAgICA3CU90YXZpbyBTYW50YW5hCisgICAgIDYJRG1pdHJpIEJvdXJsYXRjaGtvdgorICAgICA1CUtldmluIEdhbGxhcmRvCisgICAgIDMJSnVzdGluIENodQorICAgICAzCWRhdmVic2hvdworICAgICAxCURhbmllbCBXZWJlcgorICAgICAxCUVsbGlvdHQgRm9zdGVyCisgICAgIDEJTGlvciBQb2xsYWNrCisgICAgIDEJYXJpbmdzCisgICAgIDEJeWF0YW08L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMy4zIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18zXzMiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMy4zPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjMuMi4uMy4zLjMKKyAgICA3MQlTdGVwaGVuIE1hbGxldHRlCisgICAgIDkJRGFuaWVsIEt1cHBpdHoKKyAgICAgOAlKb3JnZSBCYXkgR29uZHJhCisgICAgIDQJRmxvcmlhbiBIb2NrbWFubgorICAgICA0CVJvYmVydCBEYWxlCisgICAgIDIJSnVzdGluIENodTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4yLjkgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfOSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4yLjk8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFJvYmVydCBEYWxlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuOC4uMy4yLjkKKyAgICAyOQlTdGVwaGVuIE1hbGxldHRlCisgICAgIDQJSm9yZ2UgQmF5IEdvbmRyYQorICAgICAzCURhbmllbCBLdXBwaXR6CisgICAgIDIJRmxvcmlhbiBIb2NrbWFubgorICAgICAyCUp1c3RpbiBDaHUKKyAgICAgMglSb2JlcnQgRGFsZTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjIgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfMiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjI8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy4xLi4zLjMuMgorICAgMjcwCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICA0NQlKb3JnZSBCYXkgR29uZHJhCisgICAgMzYJRmxvcmlhbiBIb2NrbWFubgorICAgIDI3CURhbmllbCBLdXBwaXR6CisgICAgMjEJUm9iZXJ0IERhbGUKKyAgICAxMAlHcmFmZiwgUGhpbGlwIEIKKyAgICAgMwlhcnRlbWFsaWV2CisgICAgIDIJZGF2ZWJzaG93CisgICAgIDEJRXVnZW5lIENodW5nCisgICAgIDEJSmVybXkgTGkKKyAgICAgMQlLZWl0aCBMb2huZXMKKyAgICAgMQlMdWthcyBLcmVqY2kKKyAgICAgMQlUZWQKKyAgICAgMQlUZWQgV2lsbWVzCisgICAgIDEJZGFuY29sbGluczM0CisgICAgIDEJemh1Y2hlbmNoZW48L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi44IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzgiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi44PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBUZWQgV2lsbWVzPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNy4uMy4yLjgKKyAgIDEzNglTdGVwaGVuIE1hbGxldHRlCisgICAgMzcJSm9yZ2UgQmF5IEdvbmRyYQorICAgIDI0CUZsb3JpYW4gSG9ja21hbm4KKyAgICAxMglEYW5pZWwgS3VwcGl0egorICAgIDEwCUdyYWZmLCBQaGlsaXAgQgorICAgIDEwCVJvYmVydCBEYWxlCisgICAgIDIJYXJ0ZW1hbGlldgorICAgICAxCUV1Z2VuZSBDaHVuZworICAgICAxCUx1a2FzIEtyZWpjaQorICAgICAxCVRlZAorICAgICAxCVRlZCBXaWxtZXMKKyAgICAgMQlkYW5jb2xsaW5zMzQKKyAgICAgMQl6aHVjaGVuY2hlbjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjEgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfMSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjE8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy4wLi4zLjMuMQorICAgMjkzCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICA5NQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICA0NQlKb3JnZSBCYXkgR29uZHJhCisgICAgMzcJRGFuaWVsIEt1cHBpdHoKKyAgICAzMglSb2JlcnQgRGFsZQorICAgIDEyCUZsb3JpYW4gSG9ja21hbm4KKyAgICAxMglkYXZlYnNob3cKKyAgICAxMQlIYWRvb3BNYXJjCisgICAgMTAJTWljaGFlbCBQb2xsbWVpZXIKKyAgICAgMwlUZWQgV2lsbWVzCisgICAgIDMJYXJ0ZW1hbGlldgorICAgICAzCWZsb3JpYW5ob2NrbWFubgorICAgICAxCUFsYW4gQm91ZHJlYXVsdAorICAgICAxCUtvbnN0YW50aW4gTXVlbGxlcgorICAgICAxCU1pY2hhZWwgSHVuZ2VyCisgICAgIDEJUmFuZ2VyIFRzYW8KKyAgICAgMQlYaWFuIFRlbmcKKyAgICAgMQlwaWV0ZXI8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi43IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi43PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNi4uMy4yLjcKKyAgIDE3OQlTdGVwaGVuIE1hbGxldHRlCisgICAgNDEJTWFya28gQS4gUm9kcmlndWV6CisgICAgMzMJSm9yZ2UgQmF5IEdvbmRyYQorICAgIDIzCURhbmllbCBLdXBwaXR6CisgICAgMTAJUm9iZXJ0IERhbGUKKyAgICAgOAlNaWNoYWVsIFBvbGxtZWllcgorICAgICA3CUZsb3JpYW4gSG9ja21hbm4KKyAgICAgNQlIYWRvb3BNYXJjCisgICAgIDUJZGF2ZWJzaG93CisgICAgIDMJYXJ0ZW1hbGlldgorICAgICAzCWZsb3JpYW5ob2NrbWFubgorICAgICAyCVRlZCBXaWxtZXMKKyAgICAgMQlBbGFuIEJvdWRyZWF1bHQKKyAgICAgMQlLb25zdGFudGluIE11ZWxsZXIKKyAgICAgMQlSYW5nZXIgVHNhbworICAgICAxCVhpYW4gVGVuZworICAgICAxCXBpZXRlcjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjAgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfMCIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjA8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi42Li4zLjMuMAorICAgNTQ2CVN0ZXBoZW4gTWFsbGV0dGUKKyAgIDE2OQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICA0MwlEYW5pZWwgS3VwcGl0egorICAgIDQyCVJvYmVydCBEYWxlCisgICAgMjUJSGFkb29wTWFyYworICAgIDExCUZsb3JpYW4gSG9ja21hbm4KKyAgICAxMAlUZWQgV2lsbWVzCisgICAgIDgJSmFzb24gUGx1cmFkCisgICAgIDgJSm9yZ2UgQmF5IEdvbmRyYQorICAgICA3CWpwbW9yZXNtYXUKKyAgICAgNglkYXZlYnNob3cKKyAgICAgNAlMdWthcyBLcmVqY2kKKyAgICAgMglEYW4gTGFSb2NxdWUKKyAgICAgMglLZWl0aCBMb2huZXMKKyAgICAgMglhcnRlbWFsaWV2CisgICAgIDEJR2VvZmYgUmVlZHkKKyAgICAgMQlNaWNoYWVsIFBvbGxtZWllcgorICAgICAxCXl1Y3g8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi42IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzYiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi42PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNS4uMy4yLjYKKyAgICA4OAlTdGVwaGVuIE1hbGxldHRlCisgICAgNDEJTWFya28gQS4gUm9kcmlndWV6CisgICAgMTEJVGVkIFdpbG1lcworICAgIDEwCUZsb3JpYW4gSG9ja21hbm4KKyAgICAgOAlEYW5pZWwgS3VwcGl0egorICAgICA3CVJvYmVydCBEYWxlCisgICAgIDUJSm9yZ2UgQmF5IEdvbmRyYQorICAgICAyCVNoZWxkb24KKyAgICAgMQlBbGFuIEJvdWRyZWF1bHQKKyAgICAgMQlLZWl0aCBMb2huZXMKKyAgICAgMQlNaWhhaWxzIFZvbGtvdnMKKyAgICAgMQlhcnRlbWFsaWV2CisgICAgIDEJc2p1ZGVuZzwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4xLjggLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzFfOCIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4xLjg8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFRlZCBXaWxtZXM8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMS43Li4zLjEuOAorICAgICA1CVRlZCBXaWxtZXMKKyAgICAgMwlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgMglEYW5pZWwgS3VwcGl0egorICAgICAyCVNoZWxkb24KKyAgICAgMQlNaWhhaWxzIFZvbGtvdnMKKyAgICAgMQlSb2JlcnQgRGFsZQorICAgICAxCWFydGVtYWxpZXY8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi41IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi41PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNC4uMy4yLjUKKyAgIDIzMAlTdGVwaGVuIE1hbGxldHRlCisgICAgNTEJTWFya28gQS4gUm9kcmlndWV6CisgICAgMjQJUm9iZXJ0IERhbGUKKyAgICAxNwlkYXZlYnNob3cKKyAgICAxNAlEYW5pZWwgS3VwcGl0egorICAgICA3CVRlZCBXaWxtZXMKKyAgICAgNglCcnluQ29va2UKKyAgICAgNglLZWl0aCBMb2huZXMKKyAgICAgNglkcGl0ZXJhCisgICAgIDMJQW5kcmV3IFRvbGJlcnQKKyAgICAgMwlKb3NodWEgU2hpbmF2aWVyCisgICAgIDIJTWljaGFlbCBQb2xsbWVpZXIKKyAgICAgMglaYWNoIEEuIFRob21hcworICAgICAyCWFydGVtYWxpZXYKKyAgICAgMQlBbmRyZWEgQ29zZW50aW5vCisgICAgIDEJQW5kcmVhcyBIZWliZXJnCisgICAgIDEJQmVuamFtaW4gQW5kZXJzb24KKyAgICAgMQlEYW4gTGFSb2NxdWUKKyAgICAgMQlLZXZpbiBHYWxsYXJkbworICAgICAxCXdlc3Rvbl9jb250cmlidXRlPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuNyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV83IiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjEuNzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogVGVkIFdpbG1lczwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjYuLjMuMS43CisgICAgMjYJU3RlcGhlbiBNYWxsZXR0ZQorICAgIDExCVJvYmVydCBEYWxlCisgICAgIDQJVGVkIFdpbG1lcworICAgICAyCVphY2ggQS4gVGhvbWFzCisgICAgIDEJQW5kcmVhIENvc2VudGlubworICAgICAxCUJyeW5Db29rZQorICAgICAxCUpvc2h1YSBTaGluYXZpZXI8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi40IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzQiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi40PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBKYXNvbiBQbHVyYWQ8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi4zLi4zLjIuNAorICAgMTk4CVN0ZXBoZW4gTWFsbGV0dGUKKyAgIDEyMQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAxOQlEYW5pZWwgS3VwcGl0egorICAgIDE3CVJvYmVydCBEYWxlCisgICAgMTAJVGVkIFdpbG1lcworICAgICA5CVBhdWxKYWNrc29uMTIzCisgICAgIDgJZGF2ZWJzaG93CisgICAgIDcJSmFzb24gUGx1cmFkCisgICAgIDMJRmxvcmlhbiBIb2NrbWFubgorICAgICAyCUFsYW4gQm91ZHJlYXVsdAorICAgICAyCUtldmluIEdhbGxhcmRvCisgICAgIDEJQnJhbmRlbiBNb29yZQorICAgICAxCUJyeW5Db29rZQorICAgICAxCURhbiBMYVJvY3F1ZQorICAgICAxCUdyZWdCZXN0bGFuZAorICAgICAxCUpvc2h1YSBTaGluYXZpZXIKKyAgICAgMQlMdWthcyBLcmVqY2kKKyAgICAgMQlSYW5nZXIgVHNhbworICAgICAxCXNqdWRlbmc8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMS42IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzYiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMS42PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBUZWQgV2lsbWVzPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjEuNS4uMy4xLjYKKyAgICAxNAlTdGVwaGVuIE1hbGxldHRlCisgICAgIDcJUm9iZXJ0IERhbGUKKyAgICAgMwlEYW5pZWwgS3VwcGl0egorICAgICAzCVBhdWxKYWNrc29uMTIzCisgICAgIDIJSm9zaHVhIFNoaW5hdmllcgorICAgICAyCVRlZCBXaWxtZXMKKyAgICAgMQlNYXJrbyBBLiBSb2RyaWd1ZXo8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi4zIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzMiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4zPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuMi4uMy4yLjMKKyAgIDEzMglTdGVwaGVuIE1hbGxldHRlCisgICAxMDMJTWFya28gQS4gUm9kcmlndWV6CisgICAgMzcJRGFuaWVsIEt1cHBpdHoKKyAgICAxOQlkYXZlYnNob3cKKyAgICAgOAlBZGFtIEhvbG1iZXJnCisgICAgIDQJUm9iZXJ0IERhbGUKKyAgICAgNAlWaXZlayBLcmlzaG5hbgorICAgICAzCU1hcmsgSG9la3N0cmEKKyAgICAgMglDYXJsb3MgQ2hldW5nCisgICAgIDIJS2V2aW4gR2FsbGFyZG8KKyAgICAgMglUZWQgV2lsbWVzCisgICAgIDEJR2Fib3IgU3phcm55YXM8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMS41IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMS41PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBUZWQgV2lsbWVzPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjEuNC4uMy4xLjUKKyAgICAzMAlTdGVwaGVuIE1hbGxldHRlCisgICAgMTQJRGFuaWVsIEt1cHBpdHoKKyAgICAgMwlUZWQgV2lsbWVzCisgICAgIDIJTWFyayBIb2Vrc3RyYQorICAgICAyCVJvYmVydCBEYWxlCisgICAgIDEJR2Fib3IgU3phcm55YXMKKyAgICAgMQlNYXJrbyBBLiBSb2RyaWd1ZXo8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi4yIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzIiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4yPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuMS4uMy4yLjIKKyAgIDI0MQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgIDIzMQlTdGVwaGVuIE1hbGxldHRlCisgICAgMzAJUm9iZXJ0IERhbGUKKyAgICAxMglEYW5pZWwgS3VwcGl0egorICAgIDEyCUxlaWZ1ciBIYWxsZG9yIEFzZ2VpcnNzb24KKyAgICAgNwlkYXZlYnNob3cKKyAgICAgNglUZWQgV2lsbWVzCisgICAgIDMJRGFuIExhUm9jcXVlCisgICAgIDMJS2V2aW4gR2FsbGFyZG8KKyAgICAgMglKYXNvbiBQbHVyYWQKKyAgICAgMQlBZGFtIEhvbG1iZXJnCisgICAgIDEJSm9zaHVhIFNoaW5hdmllcgorICAgICAxCWRhdmlkY2xlbWVudDkwCisgICAgIDEJc2JhcnppbGF5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuNCAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV80IiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjEuNDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogVGVkIFdpbG1lczwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjMuLjMuMS40CisgICAgMjQJU3RlcGhlbiBNYWxsZXR0ZQorICAgICA1CVJvYmVydCBEYWxlCisgICAgIDQJTWFya28gQS4gUm9kcmlndWV6CisgICAgIDQJVGVkIFdpbG1lcworICAgICAxCURhbiBMYVJvY3F1ZQorICAgICAxCUphc29uIFBsdXJhZAorICAgICAxCUpvc2h1YSBTaGluYXZpZXIKKyAgICAgMQlkYXZpZGNsZW1lbnQ5MAorICAgICAxCXNiYXJ6aWxheTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4yLjEgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfMSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4yLjE8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi4wLWluY3ViYXRpbmcuLjMuMi4xCisgICAyMjkJU3RlcGhlbiBNYWxsZXR0ZQorICAgMTcxCU1hcmtvIEEuIFJvZHJpZ3VlegorICAgIDUxCURhbmllbCBLdXBwaXR6CisgICAgMjcJSmFzb24gUGx1cmFkCisgICAgMTAJVGVkIFdpbG1lcworICAgICA2CURhbiBMYVJvY3F1ZQorICAgICA2CU1hdGhpYXMgQm9nYWVydAorICAgICA0CVJvYmVydCBEYWxlCisgICAgIDIJQnJ5biBDb29rZQorICAgICAyCU1pa2UgQWRhbXNvbgorICAgICAxCUxld2lzIEpvaG4gTWNHaWJibmV5CisgICAgIDEJU2VyZ2UgVmlsdm92c2t5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuMyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV8zIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjEuMzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjItaW5jdWJhdGluZy4uMy4xLjMKKyAgICA5OAlTdGVwaGVuIE1hbGxldHRlCisgICAgMjgJRGFuaWVsIEt1cHBpdHoKKyAgICAxOQlKYXNvbiBQbHVyYWQKKyAgICAxMglNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgNQlNYXRoaWFzIEJvZ2FlcnQKKyAgICAgMglNaWtlIEFkYW1zb24KKyAgICAgMglUZWQgV2lsbWVzCisgICAgIDEJTGV3aXMgSm9obiBNY0dpYmJuZXkKKyAgICAgMQlSb2JlcnQgRGFsZQorICAgICAxCVNlcmdlIFZpbHZvdnNreTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4yLjAtaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMl8wLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4wLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMS4yLWluY3ViYXRpbmcuLjMuMi4wLWluY3ViYXRpbmcKKyAgIDI4NwlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgIDEwMwlTdGVwaGVuIE1hbGxldHRlCisgICAgMTUJcmpicmlvZHkKKyAgICAgOAlEYW5pZWwgS3VwcGl0egorICAgICA4CXBpZXRlcgorICAgICAyCVRlZCBXaWxtZXMKKyAgICAgMQlKYXNvbiBQbHVyYWQKKyAgICAgMQlNaWNoYWVsIFBvbGxtZWllcjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4xLjItaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV8yLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMS4yLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMS4xLWluY3ViYXRpbmcuLjMuMS4yLWluY3ViYXRpbmcKKyAgIDE1MQlTdGVwaGVuIE1hbGxldHRlCisgICAgMzcJRGFuaWVsIEt1cHBpdHoKKyAgICAyNglNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAxMAlNYXJ2aW4gRnJvZWRlcgorICAgICA4CUR5bGFuIE1pbGxpa2luCisgICAgIDUJSGVuZHkgSXJhd2FuCisgICAgIDUJS2llcmFuIFNoZXJsb2NrCisgICAgIDEJQmVuamFtaW4gQW5kZXJzb24KKyAgICAgMQlHZW9mZiBSZWVkeQorICAgICAxCUphc29uIFBsdXJhZAorICAgICAxCUxlZSBNaXRjaGVsbAorICAgICAxCU1hcmlvIE11ZWxsZXIKKyAgICAgMQlNYXJ2aW4gSCBGcm9lZGVyCisgICAgIDEJVGVkIFdpbG1lcworICAgICAxCWxlZW1pdAorICAgICAxCXJqYnJpb2R5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuMS1pbmN1YmF0aW5nIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzEtaW5jdWJhdGluZyIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4xLjEtaW5jdWJhdGluZzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjAtaW5jdWJhdGluZy4uMy4xLjEtaW5jdWJhdGluZworICAgMTk4CVN0ZXBoZW4gTWFsbGV0dGUKKyAgIDE0NQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAzOQlEYW5pZWwgS3VwcGl0egorICAgIDEzCUJlbmphbWluIEhhbgorICAgICA4CU5naGlhIFRyYW4KKyAgICAgOAlUZWQgV2lsbWVzCisgICAgIDcJSmVyZW15IEhhbm5hCisgICAgIDUJS3VzaGFsCisgICAgIDUJcGlldGVyCisgICAgIDMJRHlsYW4gTWlsbGlraW4KKyAgICAgMglEYW4gTGFSb2NxdWUKKyAgICAgMglKb25hdGhhbiBFbGxpdGhvcnBlCisgICAgIDIJTWFydmluIEZyb2VkZXIKKyAgICAgMQlNYXJrSG9la3N0cmEKKyAgICAgMQlQaWVycmUgTGFwb3J0ZQorICAgICAxCXJqYnJpb2R5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuMC1pbmN1YmF0aW5nIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzAtaW5jdWJhdGluZyIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4xLjAtaW5jdWJhdGluZzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4wLjItaW5jdWJhdGluZy4uMy4xLjAtaW5jdWJhdGluZworICAgMjAzCU1hcmtvIEEuIFJvZHJpZ3VlegorICAgMTkzCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICA1MQlEYW5pZWwgS3VwcGl0egorICAgIDEyCUR5bGFuIE1pbGxpa2luCisgICAgIDgJYXNoaXNobgorICAgICA0CVJ1c3NlbGwgU3BpdHplcgorICAgICAzCUNocmlzdGlhbiBCZWxsaW5hCisgICAgIDMJSmFzb24gUGx1cmFkCisgICAgIDIJTmdoaWEgVHJhbgorICAgICAyCW1oZnJhbnR6CisgICAgIDIJcGlldGVyCisgICAgIDEJQXNoaXNoIE5hZ2F2YXJhbTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4wLjItaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMF8yLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMC4yLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMC4xLWluY3ViYXRpbmcuLjMuMC4yLWluY3ViYXRpbmcKKyAgICA2OQlTdGVwaGVuIE1hbGxldHRlCisgICAgMjAJRGFuaWVsIEt1cHBpdHoKKyAgICAxOAlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgNglKYXNvbiBQbHVyYWQKKyAgICAgMglqYm11c3NvCisgICAgIDIJbWhmcmFudHoKKyAgICAgMQlEeWxhbiBNaWxsaWtpbjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4wLjEtaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMF8xLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMC4xLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMC4wLWluY3ViYXRpbmcuLjMuMC4xLWluY3ViYXRpbmcKKyAgIDIxNwlTdGVwaGVuIE1hbGxldHRlCisgICAgNDMJRGFuaWVsIEt1cHBpdHoKKyAgICAzNglNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgNwltaGZyYW50egorICAgICAyCUJyeW4gQ29va2UKKyAgICAgMQlKYXNvbiBCcm93bgorICAgICAxCU1pa2UgQWRhbXNvbjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4wLjAtaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMF8wLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMC4wLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMC4wLWluY3ViYXRpbmcKKyAgMzY0OAlTdGVwaGVuIE1hbGxldHRlCisgIDI3MzIJTWFya28gQS4gUm9kcmlndWV6CisgICAzMDQJRGFuaWVsIEt1cHBpdHoKKyAgIDEwNAlKb3NodWEgU2hpbmF2aWVyCisgICAgNTkJQm9iIEJyaW9keQorICAgIDMxCXN0ZXBoZW4gbWFsbGV0dGUKKyAgICAzMAlWaWN0b3IgU3UKKyAgICAyNQltaGZyYW50egorICAgIDIwCURhbiBMYVJvY3F1ZQorICAgIDE3CXJqYnJpb2R5CisgICAgMTMJTWF0dGhpYXMgQnJvZWNoZWxlcgorICAgICA4CW9rcmFtCisgICAgIDcJSmFzb24gUGx1cmFkCisgICAgIDUJcGlldGVyCisgICAgIDMJQnJ5biBDb29rZQorICAgICAzCURhdmlkIFJvYmluc29uCisgICAgIDMJSm9uIFNjaG5laWRlcgorICAgICAzCU1pa2UgTWNNYWhvbgorICAgICAzCVJhbmRhbGwgQmFybmhhcnQKKyAgICAgMglCYXJyaWUgVHJlbG9hcgorICAgICAyCU1pY2hhZWwgUG9sbG1laWVyCisgICAgIDIJbWZyYW50egorICAgICAxCUR5bGFuIE1pbGxpa2luCisgICAgIDEJSmltIExsb3lkCisgICAgIDEJUG9tbWVWZXJ0ZQorICAgICAxCWdtZXJhbAorICAgICAxCWphc29uCisgICAgIDEJcGFsaXdhbGFzaGlzaAorICAgICAxCXJ2ZXNzZQorICAgICAxCXNwbWFsbGV0dGU8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICQoIiNkcm9wZG93bkFyY2hpdmVzIikuY2hhbmdlKGZ1bmN0aW9uKCl7CisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRWZXJzaW9uVGV4dCA9IHRoaXMub3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnRleHQ7CisKKyAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gLyhcZCpcLlxkKlwuLiopIFwoKC4qKVwpLzsKKyAgICAgICAgICAgIHZhciBzZWxlY3RlZFZlcnNpb24gPSBwYXR0ZXJuLmV4ZWMoc2VsZWN0ZWRWZXJzaW9uVGV4dCk7CisgICAgICAgICAgICB2YXIgdmVyc2lvbiA9IHNlbGVjdGVkVmVyc2lvblsxXTsKKyAgICAgICAgICAgIHZhciByZWxlYXNlRGF0ZSA9IHNlbGVjdGVkVmVyc2lvblsyXTsKKyAgICAgICAgICAgIHZhciB2ZXJzaW9uSHlwaGVuZWQgPSB2ZXJzaW9uLnJlcGxhY2UoL1wuL2csICItIik7CisgICAgICAgICAgICB2YXIgdmVyc2lvblVuZGVyc2NvcmVkID0gdmVyc2lvbi5yZXBsYWNlKC9cLi9nLCAiXyIpOworCisgICAgICAgICAgICAkKCIjYXJjaGl2ZVZlcnNpb24iKS5odG1sKHZlcnNpb24pOworICAgICAgICAgICAgJCgiI2FyY2hpdmVSZWxlYXNlRGF0ZSIpLmh0bWwocmVsZWFzZURhdGUpOworICAgICAgICAgICAgJCgiI2FyY2hpdmVSZWxlYXNlTm90ZXMiKS5hdHRyKCJocmVmIiwgImh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvbWFzdGVyL0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLSIgKyB2ZXJzaW9uSHlwaGVuZWQpOworICAgICAgICAgICAgJCgiI2FyY2hpdmVEb2NzIikuYXR0cigiaHJlZiIsICJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8iICsgdmVyc2lvbik7CisgICAgICAgICAgICAkKCIjYXJjaGl2ZUNvbnRyaWJ1dG9ycyIpLmF0dHIoImRhdGEtdGFyZ2V0IiwgIiNjb250cmlidXRvcnMtIiArIHZlcnNpb25VbmRlcnNjb3JlZCk7CisKKyAgICAgICAgICAgIHZhciB2ZXJzaW9uc1dpdGhPbGROYW1pbmcgPSBbIjMuMi4xIiwgIjMuMS4zIiwgIjMuMi4wLWluY3ViYXRpbmciLCAiMy4xLjItaW5jdWJhdGluZyIsICIzLjEuMS1pbmN1YmF0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMuMS4wLWluY3ViYXRpbmciLCAiMy4wLjItaW5jdWJhdGluZyIsICIzLjAuMS1pbmN1YmF0aW5nIiwgIjMuMC4wLWluY3ViYXRpbmciXTsKKyAgICAgICAgICAgIHZhciBjb25zb2xlRmlsZU5hbWUgPSAiYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtIjsKKyAgICAgICAgICAgIHZhciBzZXJ2ZXJGaWxlTmFtZSA9ICJhcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLSI7CisgICAgICAgICAgICBpZiAodmVyc2lvbnNXaXRoT2xkTmFtaW5nLmluY2x1ZGVzKHZlcnNpb24pKSB7CisgICAgICAgICAgICAgICAgY29uc29sZUZpbGVOYW1lID0gImFwYWNoZS1ncmVtbGluLWNvbnNvbGUtIjsKKyAgICAgICAgICAgICAgICBzZXJ2ZXJGaWxlTmFtZSA9ICJhcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGluY3ViYXRpbmdWZXJzaW9uID0gdmVyc2lvbi5lbmRzV2l0aCgiLWluY3ViYXRpbmciKTsKKyAgICAgICAgICAgIHZhciBhcmNoaXZlVXJsID0gaW5jdWJhdGluZ1ZlcnNpb24gPyAiaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLyIgOiAiaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvIjsKKworICAgICAgICAgICAgJCgiI2FyY2hpdmVEb3dubG9hZENvbnNvbGUiKS5hdHRyKCJocmVmIiwgYXJjaGl2ZVVybCArIHZlcnNpb24gKyAiLyIgKyBjb25zb2xlRmlsZU5hbWUgKyB2ZXJzaW9uICsgIi1iaW4uemlwIik7CisgICAgICAgICAgICAkKCIjYXJjaGl2ZURvd25sb2FkU2VydmVyIikuYXR0cigiaHJlZiIsIGFyY2hpdmVVcmwgKyB2ZXJzaW9uICsgIi8iICsgc2VydmVyRmlsZU5hbWUgKyB2ZXJzaW9uICsgIi1iaW4uemlwIik7CisgICAgICAgICAgICAkKCIjYXJjaGl2ZURvd25sb2FkU291cmNlIikuYXR0cigiaHJlZiIsIGFyY2hpdmVVcmwgKyB2ZXJzaW9uICsgIi9hcGFjaGUtdGlua2VycG9wLSIgKyB2ZXJzaW9uICsgIi1zcmMuemlwIik7CisKKyAgICAgICAgICAgIHZhciB2ZXJzaW9uc1dpdGhvdXRVcGdyYWRlRG9jcyA9IFsiMy4xLjAtaW5jdWJhdGluZyIsICIzLjAuMi1pbmN1YmF0aW5nIiwgIjMuMC4xLWluY3ViYXRpbmciLCAiMy4wLjAtaW5jdWJhdGluZyJdOworICAgICAgICAgICAgaWYgKHZlcnNpb25zV2l0aG91dFVwZ3JhZGVEb2NzLmluY2x1ZGVzKHZlcnNpb24pKSB7CisgICAgICAgICAgICAgICAgJCgiI2FyY2hpdmVVcGdyYWRlIGEiKS5hdHRyKCJocmVmIiwgIiMiKTsKKyAgICAgICAgICAgICAgICAkKCIjYXJjaGl2ZVVwZ3JhZGUiKS5oaWRlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICQoIiNhcmNoaXZlVXBncmFkZSBhIikuYXR0cigiaHJlZiIsICJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8iICsgdmVyc2lvbiArICIvdXBncmFkZS8jX3RpbmtlcnBvcF8iICsgdmVyc2lvblVuZGVyc2NvcmVkKTsKKyAgICAgICAgICAgICAgICAkKCIjYXJjaGl2ZVVwZ3JhZGUiKS5zaG93KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSk7CisKKyAgICAgICAgJCgiI2Ryb3Bkb3duQXJjaGl2ZXMiKS5jaGFuZ2UoKQorICAgIDwvc2NyaXB0PgorCis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9ncmVtbGluLmh0bWwgYi9kb2NzL3NpdGUvaG9tZS9ncmVtbGluLmh0bWwKaW5kZXggZmZhOWRmMy4uNDBmMmU2ZSAxMDA2NDQKLS0tIGEvZG9jcy9zaXRlL2hvbWUvZ3JlbWxpbi5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2dyZW1saW4uaHRtbApAQCAtMTQsNyArMTQsNyBAQAogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAtLT4KLTxpbWcgc3JjPSJpbWFnZXMvdGlua2VycG9wLWNpdHlzY2FwZS5wbmciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz4KKzxpbWcgc3JjPSJpbWcvdGlua2VycG9wLWNpdHlzY2FwZS5wbmciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz4KIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0iaGVyby11bml0IiBzdHlsZT0icGFkZGluZzoxMHB4Ij4KICAgICA8Yj48Zm9udCBzaXplPSI1IiBmYWNlPSJhbWVyaWNhbiB0eXBld3JpdGVyIj5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvZm9udD48L2I+CkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgdXNlcnMgYSByaWNoIGNvbGxlY3Rpb24gb2Ygc3RlcHMgdGhhdCB0aGV5IGNhbiBjb21wb3NlIGluIG9yZGVyIHRvIGFzayBhbnkgY29uY2VpdmFibGUgcXVlc3Rpb24gdGhleSBtYXkgaGF2ZSBvZiB0aGVpciBkYXRhIGZvciBHcmVtbGluIGlzIDxhIGhyZWY9Imh0dHA6Ly9hcnhpdi5vcmcvYWJzLzE1MDguMDM4NDMiPlR1cmluZyBDb21wbGV0ZTwvYT4uCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgY29sLW1kLTIiPgotICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1oZWFkLnBuZyIgd2lkdGg9IjEwMCUiPgorICAgICAgICAgIDxpbWcgc3JjPSJpbWcvZ3JlbWxpbi1oZWFkLnBuZyIgd2lkdGg9IjEwMCUiPgogICAgICAgIDwvZGl2PgogICAgIDwvZGl2PgogICAgIDxici8+CkBAIC0yMDksNyArMjA5LDcgQEAKICAgICBub3QgbmVlZCB0byBsZWFybiBib3RoIGEgZGF0YWJhc2UgcXVlcnkgbGFuZ3VhZ2UgYW5kIGEgZG9tYWluLXNwZWNpZmljIEJpZ0RhdGEgYW5hbHl0aWNzIGxhbmd1YWdlIChlLmcuIFNwYXJrIERTTCwgTWFwUmVkdWNlLCBldGMuKS4KICAgICBHcmVtbGluIGlzIGFsbCB0aGF0IGlzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgZ3JhcGgtYmFzZWQgYXBwbGljYXRpb24gYmVjYXVzZSB0aGUgR3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZSB3aWxsIGhhbmRsZSB0aGUgcmVzdC4KICAgICA8YnIvPjxici8+Ci0gICAgPGNlbnRlcj48aW1nIHNyYz0iaW1hZ2VzL29sdHAtYW5kLW9sYXAucG5nIiBzdHlsZT0id2lkdGg6ODAlOyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIj48L2NlbnRlcj4KKyAgICA8Y2VudGVyPjxpbWcgc3JjPSJpbWcvb2x0cC1hbmQtb2xhcC5wbmciIHN0eWxlPSJ3aWR0aDo4MCU7IiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiPjwvY2VudGVyPgogIDwvZGl2PgogIDxici8+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KQEAgLTI2OCw3ICsyNjgsNyBAQAogICAgIDxici8+CiAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNSBjb2wtbWQtNCI+Ci0gICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIj4KKyAgICAgICAgICA8aW1nIHNyYz0iaW1nL2dyZW1saW4tbGFuZ3VhZ2UtdmFyaWFudHMucG5nIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS03IGNvbC1tZC04Ij4KICAgICAgICAgICBDbGFzc2ljIGRhdGFiYXNlIHF1ZXJ5IGxhbmd1YWdlcywgbGlrZSA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUUwiPlNRTDwvYT4sIHdlcmUgY29uY2VpdmVkIGFzIGJlaW5nIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IGZyb20gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlcyB0aGF0IHdvdWxkCkBAIC0zMzksOCArMzM5LDcgQEAKIEdyYXBoVHJhdmVyc2FsU291cmNlIGc7CiBnID0gZ3JhcGgudHJhdmVyc2FsKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYWwgT0xUUAogZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZygibG9jYWxob3N0IiwgODE4MikpICAgIC8vIHJlbW90ZQotZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihTcGFya0dyYXBoQ29tcHV0ZXIuY2xhc3MpOyAgICAgICAgICAgICAgICAgIC8vIGRpc3RyaWJ1dGVkIE9MQVAKLWcgPSBncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcyk7ICAgICAgICAgICAgICAgICAvLyBkaXN0cmlidXRlZCBPTEFQPC9jb2RlPgorZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihTcGFya0dyYXBoQ29tcHV0ZXIuY2xhc3MpOyAgICAgICAgICAgICAgICAgLy8gZGlzdHJpYnV0ZWQgT0xBUDwvY29kZT4KIDwvcHJlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxici8+CkBAIC0zNTIsMTYgKzM1MSwxNiBAQAogICAgICAgIDxkaXYgY2xhc3M9ImNhcm91c2VsIHNsaWRlIiBkYXRhLXJpZGU9ImNhcm91c2VsIiBkYXRhLXR5cGU9Im11bHRpIiBkYXRhLWludGVydmFsPSI3MDAwIiBpZD0icmVsYXRlZFJlc291cmNlcyI+CiAgICAgICAgICAgPGRpdiBjbGFzcz0iY2Fyb3VzZWxHcmlkLWlubmVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIGFjdGl2ZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vYWNhZGVteS5kYXRhc3RheC5jb20vcmVzb3VyY2VzL2dldHRpbmctc3RhcnRlZC1ncmFwaC1kYXRhYmFzZXMiPjxpbWcgc3JjPSJpbWFnZXMvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vYWNhZGVteS5kYXRhc3RheC5jb20vcmVzb3VyY2VzL2dldHRpbmctc3RhcnRlZC1ncmFwaC1kYXRhYmFzZXMiPjxpbWcgc3JjPSJpbWcvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9kYXRhc3RheC5jb20vZGV2L2Jsb2cvdGhlLWJlbmVmaXRzLW9mLXRoZS1ncmVtbGluLWdyYXBoLXRyYXZlcnNhbC1tYWNoaW5lIj48aW1nIHNyYz0iaW1hZ2VzL3Jlc291cmNlcy9iZW5lZml0cy1ncmVtbGluLW1hY2hpbmUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9kYXRhc3RheC5jb20vZGV2L2Jsb2cvdGhlLWJlbmVmaXRzLW9mLXRoZS1ncmVtbGluLWdyYXBoLXRyYXZlcnNhbC1tYWNoaW5lIj48aW1nIHNyYz0iaW1nL3Jlc291cmNlcy9iZW5lZml0cy1ncmVtbGluLW1hY2hpbmUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9hcnhpdi5vcmcvYWJzLzE1MDguMDM4NDMiPjxpbWcgc3JjPSJpbWFnZXMvcmVzb3VyY2VzL2FyeGl2LWFydGljbGUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9hcnhpdi5vcmcvYWJzLzE1MDguMDM4NDMiPjxpbWcgc3JjPSJpbWcvcmVzb3VyY2VzL2FyeGl2LWFydGljbGUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9zcWwyZ3JlbWxpbi5jb20vIj48aW1nIHNyYz0iaW1hZ2VzL3Jlc291cmNlcy9zcWwtMi1ncmVtbGluLXJlc291cmNlLnBuZyIgd2lkdGg9IjEwMCUiIC8+PC9hPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy0zIGNvbC1tZC0zIGNvbC1zbS00IGNvbC14cy02Ij48YSBocmVmPSJodHRwOi8vc3FsMmdyZW1saW4uY29tLyI+PGltZyBzcmM9ImltZy9yZXNvdXJjZXMvc3FsLTItZ3JlbWxpbi1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIiAvPjwvYT48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8YSBjbGFzcz0ibGVmdCBjYXJvdXNlbEdyaWQtY29udHJvbCIgaHJlZj0iI3JlbGF0ZWRSZXNvdXJjZXMiIGRhdGEtc2xpZGU9InByZXYiPgpAQCAtMzkyLDUgKzM5MSw3IEBACiAgICAgICAgICAgfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9kaXY+CisgICAgPGJyLz4KKyAgICA8YnIvPgogIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvaWJtZ3JhcGgtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvaWJtZ3JhcGgtbG9nby5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNTI0YWIuLjAwMDAwMDAKLS0tIGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2libWdyYXBoLWxvZ28ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2FwYWNoZS10aW5rZXJwb3AtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvYXBhY2hlLXRpbmtlcnBvcC1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2FwYWNoZS10aW5rZXJwb3AtbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9hcGFjaGUtdGlua2VycG9wLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ibHVlcHJpbnRzLWhhbmRkcmF3bi5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvYmx1ZXByaW50cy1oYW5kZHJhd24ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvYmx1ZXByaW50cy1oYW5kZHJhd24ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvYmx1ZXByaW50cy1oYW5kZHJhd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9jaXR5c2NhcGUtYnV0dG9uLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9jaXR5c2NhcGUtYnV0dG9uLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2NpdHlzY2FwZS1idXR0b24ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvY2l0eXNjYXBlLWJ1dHRvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2VnZy1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9lZ2ctbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9lZ2ctbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9lZ2ctbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2Zhdmljb24uaWNvIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2Zhdmljb24uaWNvCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvZmF2aWNvbi5pY28KcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9mYXZpY29uLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZnVybmFjZS1oYW5kZHJhd24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2Z1cm5hY2UtaGFuZGRyYXduLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2Z1cm5hY2UtaGFuZGRyYXduLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2Z1cm5hY2UtaGFuZGRyYXduLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JhcGgtZ2xvYmUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLWdsb2JlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyYXBoLWdsb2JlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLWdsb2JlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JhcGgtdnMtdGFibGUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLXZzLXRhYmxlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyYXBoLXZzLXRhYmxlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLXZzLXRhYmxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1hcGFjaGUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tYXBhY2hlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tYXBhY2hlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tYXBhY2hlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1kb3dubG9hZC5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1kb3dubG9hZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWRvd25sb2FkLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tZG93bmxvYWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWdpdGh1Yi5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1naXRodWIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1naXRodWIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1naXRodWIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWd5bS1taW5pLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWd5bS1taW5pLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tZ3ltLW1pbmkucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1neW0tbWluaS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4taGFuZGRyYXduLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWhhbmRkcmF3bi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWhhbmRkcmF3bi5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWhhbmRkcmF3bi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4taGVhZC5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1oZWFkLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4taGVhZC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWhlYWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tbGFuZ3VhZ2UtdmFyaWFudHMucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1sYW5ndWFnZS12YXJpYW50cy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tcXVpbGwucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tcXVpbGwucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1xdWlsbC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLXF1aWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvaG9tZXBhZ2UuZ3JhZmZsZSBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ob21lcGFnZS5ncmFmZmxlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvaG9tZXBhZ2UuZ3JhZmZsZQpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2hvbWVwYWdlLmdyYWZmbGUKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ibGF6ZWdyYXBoLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2JsYXplZ3JhcGgtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ibGF6ZWdyYXBoLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvYmxhemVncmFwaC1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvY29zbW9zZGItbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvY29zbW9zZGItbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9jb3Ntb3NkYi1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2Nvc21vc2RiLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9kYXRhc3RheC1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9kYXRhc3RheC1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2RhdGFzdGF4LWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZGF0YXN0YXgtbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyYWtuLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2dyYWtuLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvZ3Jha24tbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmFrbi1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1kb3RuZXQtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1kb3RuZXQtbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY3YjM2YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmVtbGluLWRvdG5ldC1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvZ3JlbWxpbi1ncm9vdnktbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1ncm9vdnktbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ncmVtbGluLWdyb292eS1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2dyZW1saW4tZ3Jvb3Z5LWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ncmVtbGluLWphdmEtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ncmVtbGluLXB5dGhvbi1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmVtbGluLXB5dGhvbi1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyZW1saW4tcHl0aG9uLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1weXRob24tbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyZW1saW4tc2NhbGEtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1zY2FsYS1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyZW1saW4tc2NhbGEtbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmVtbGluLXNjYWxhLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9pYm0tY29tcG9zZS1qYW51c2dyYXBoLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2libS1jb21wb3NlLWphbnVzZ3JhcGgtbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ5NTQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9pYm0tY29tcG9zZS1qYW51c2dyYXBoLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9qYW51c2dyYXBoLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2phbnVzZ3JhcGgtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9qYW51c2dyYXBoLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvamFudXNncmFwaC1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mva2V5bGluZXMtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mva2V5bGluZXMtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9rZXlsaW5lcy1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2tleWxpbmVzLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9saW5rdXJpb3VzLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2xpbmt1cmlvdXMtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9saW5rdXJpb3VzLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvbGlua3VyaW91cy1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvbmVvNGotbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvbmVvNGotbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9uZW80ai1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL25lbzRqLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9uZXB0dW5lLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL25lcHR1bmUtbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI0NGE5YwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9uZXB0dW5lLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9vZ3JlLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL29ncmUtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9vZ3JlLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mvb2dyZS1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvb3JpZW50ZGItbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mvb3JpZW50ZGItbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9vcmllbnRkYi1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL29yaWVudGRiLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3NwYXJxbC1ncmVtbGluLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mvc3BhcnFsLWdyZW1saW4tbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3NxbC1ncmVtbGluLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3NxbC1ncmVtbGluLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvc3FsLWdyZW1saW4tbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9zcWwtZ3JlbWxpbi1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvc3RhcmRvZy1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9zdGFyZG9nLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvc3RhcmRvZy1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3N0YXJkb2ctbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3RpdGFuLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3RpdGFuLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvdGl0YW4tbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy90aXRhbi1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvdG9tc2F3eWVyLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3RvbXNhd3llci1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3RvbXNhd3llci1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3RvbXNhd3llci1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbWVldGluZy1yb29tLWJ1dHRvbi5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbWVldGluZy1yb29tLWJ1dHRvbi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9tZWV0aW5nLXJvb20tYnV0dG9uLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL21lZXRpbmctcm9vbS1idXR0b24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9vbHRwLWFuZC1vbGFwLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9vbHRwLWFuZC1vbGFwLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL29sdHAtYW5kLW9sYXAucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvb2x0cC1hbmQtb2xhcC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Blb24taGVhZC5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcGVvbi1oZWFkLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Blb24taGVhZC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wZW9uLWhlYWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvYWRqYWNlbmN5LWxpc3QucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9hZGphY2VuY3ktbGlzdC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvYWRqYWNlbmN5LWxpc3QucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2FkamFjZW5jeS1saXN0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2JsdWVwcmludHMtY2hhcmFjdGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvYmx1ZXByaW50cy1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2JsdWVwcmludHMtY2hhcmFjdGVyLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ibHVlcHJpbnRzLWNoYXJhY3Rlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9idXNpbmVzcy1ncmVtbGluLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2N5Y2xpY3BhdGgtc3RlcC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvY3ljbGljcGF0aC1zdGVwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2ZsYXQtbWFwLWxhbWJkYS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2ZsYXQtbWFwLWxhbWJkYS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZmxhdC1tYXAtbGFtYmRhLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9mbGF0LW1hcC1sYW1iZGEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZnJhbWVzLWNoYXJhY3Rlci5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZnVybmFjZS1jaGFyYWN0ZXIucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9mdXJuYWNlLWNoYXJhY3Rlci5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZnVybmFjZS1jaGFyYWN0ZXIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2Z1cm5hY2UtY2hhcmFjdGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tY2hhcmFjdGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tY2hhcmFjdGVyLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGluLWNoYXJhY3Rlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWNoaWNrZW53aW5nLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1vcG9seS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1vcG9seS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtb3BvbHkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1ncmVtcmVhcGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtcmVhcGVyLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1yZWFwZXIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW4tZ3JlbXJlYXBlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1zdGVmYW5pLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tbmV3LXNoZXJpZmYtaW4tdG93bi5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uby1tb3JlLW1yLW5pY2UtZ3V5LnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGludHJvbi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW50cm9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L29sYXAtdHJhdmVyc2FsLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvb2xhcC10cmF2ZXJzYWwucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L29sYXAtdHJhdmVyc2FsLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9vbGFwLXRyYXZlcnNhbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9waXBlcy1jaGFyYWN0ZXIucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9waXBlcy1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L3BpcGVzLWNoYXJhY3Rlci5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvcGlwZXMtY2hhcmFjdGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L3JleHN0ZXItY2hhcmFjdGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvcmV4c3Rlci1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L3JleHN0ZXItY2hhcmFjdGVyLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9yZXhzdGVyLWNoYXJhY3Rlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS90aW5rZXJwb3AtcmVhZGluZy5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L3RpbmtlcnBvcC1yZWFkaW5nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS90aW5rZXJwb3AtcmVhZGluZy5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvdGlua2VycG9wLXJlYWRpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvdGlua2VycG9wMy1zcGxhc2gucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS90aW5rZXJwb3AzLXNwbGFzaC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvdGlua2VycG9wMy1zcGxhc2gucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWcvcHJhY3RpY2FsLWdyZW1saW4tdGl0bGVkLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wcmFjdGljYWwtZ3JlbWxpbi10aXRsZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI2NWYzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcHJhY3RpY2FsLWdyZW1saW4tdGl0bGVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL2FyeGl2LWFydGljbGUtcmVzb3VyY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy9hcnhpdi1hcnRpY2xlLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9hcnhpdi1hcnRpY2xlLXJlc291cmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy9hcnhpdi1hcnRpY2xlLXJlc291cmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL2JlbmVmaXRzLWdyZW1saW4tbWFjaGluZS1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL2JlbmVmaXRzLWdyZW1saW4tbWFjaGluZS1yZXNvdXJjZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvYmVuZWZpdHMtZ3JlbWxpbi1tYWNoaW5lLXJlc291cmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy9iZW5lZml0cy1ncmVtbGluLW1hY2hpbmUtcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvZ3JhcGgtZGF0YWJhc2VzLTEwMS1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvb24tZ3JhcGgtY29tcHV0aW5nLXJlc291cmNlLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9yZXNvdXJjZXMvb24tZ3JhcGgtY29tcHV0aW5nLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9vbi1ncmFwaC1jb21wdXRpbmctcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL29uLWdyYXBoLWNvbXB1dGluZy1yZXNvdXJjZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9wcm9wZXJ0eS1ncmFwaC1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3Byb3BlcnR5LWdyYXBoLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9wcm9wZXJ0eS1ncmFwaC1yZXNvdXJjZS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9yZXNvdXJjZXMvcHJvcGVydHktZ3JhcGgtcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvc3FsLTItZ3JlbWxpbi1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3NxbC0yLWdyZW1saW4tcmVzb3VyY2UucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL3NxbC0yLWdyZW1saW4tcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3NxbC0yLWdyZW1saW4tcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvdGFibGVzLWFuZC1ncmFwaHMtcmVzb3VyY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy90YWJsZXMtYW5kLWdyYXBocy1yZXNvdXJjZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvdGFibGVzLWFuZC1ncmFwaHMtcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3RhYmxlcy1hbmQtZ3JhcGhzLXJlc291cmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL3doeS1ncmFwaC1kYXRhYmFzZXMtcmVzb3VyY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy93aHktZ3JhcGgtZGF0YWJhc2VzLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy93aHktZ3JhcGgtZGF0YWJhc2VzLXJlc291cmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy93aHktZ3JhcGgtZGF0YWJhc2VzLXJlc291cmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmV4c3Rlci1oYW5kZHJhd24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3JleHN0ZXItaGFuZGRyYXduLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3JleHN0ZXItaGFuZGRyYXduLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3JleHN0ZXItaGFuZGRyYXduLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VyYmxvY2tzLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJibG9ja3MucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VyYmxvY2tzLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcmJsb2Nrcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1ib29rLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtYm9vay5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtYm9vay5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtYm9vay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1jaXR5c2NhcGUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1jaXR5c2NhcGUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLWNpdHlzY2FwZS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtY2l0eXNjYXBlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLWNvbmZlcmVuY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLWxvZ28tc21hbGwucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLW1lZXRpbmctcm9vbS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLW1lZXRpbmctcm9vbS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtbWVldGluZy1yb29tLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1tZWV0aW5nLXJvb20ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtcmVhZGluZy0yLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtcmVhZGluZy0yLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1yZWFkaW5nLTIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLXJlYWRpbmctMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1yZWFkaW5nLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtcmVhZGluZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtcmVhZGluZy5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtcmVhZGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1zcGxhc2gucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1zcGxhc2gucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLXNwbGFzaC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3Atc3BsYXNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLmpwZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNzkxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wMy1zcGxhc2gucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbmRleC5odG1sIGIvZG9jcy9zaXRlL2hvbWUvaW5kZXguaHRtbAppbmRleCAxZmM2NTBiLi5jMTdjNzI4IDEwMDY0NAotLS0gYS9kb2NzL3NpdGUvaG9tZS9pbmRleC5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2luZGV4Lmh0bWwKQEAgLTE5LDE5ICsxOSwxOSBAQAogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4KICAgICAgICAgICAgIDxiPjxmb250IHNpemU9IjYiIGZhY2U9ImFtZXJpY2FuIHR5cGV3cml0ZXIiPkFwYWNoZSBUaW5rZXJQb3AmdHJhZGU7PC9mb250PjwvYj4KLSAgICAgICAgICAgIDxwPjxpbWcgc3JjPSJpbWFnZXMvdGlua2VycG9wLXNwbGFzaC5wbmciIHdpZHRoPSI0MjAiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgc3R5bGU9InBhZGRpbmc6MTBweDsiLz48L3A+CisgICAgICAgICAgICA8cD48aW1nIHNyYz0iaW1nL3RpbmtlcnBvcC1zcGxhc2gucG5nIiB3aWR0aD0iNDIwIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIHN0eWxlPSJwYWRkaW5nOjEwcHg7Ii8+PC9wPgogICAgICAgICAgICAgPHA+PGZvbnQgc2l6ZT0iMyI+QXBhY2hlIFRpbmtlclBvcCZ0cmFkZTsgaXMgYSBncmFwaCBjb21wdXRpbmcgZnJhbWV3b3JrIGZvciBib3RoIGdyYXBoIGRhdGFiYXNlcyAoT0xUUCkgYW5kIGdyYXBoIGFuYWx5dGljIHN5c3RlbXMgKE9MQVApLjwvZm9udD48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4KICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICA8cD4KLSAgICAgICAgICAgICAgIDxiPjxmb250IHNpemU9IjQiPlRpbmtlclBvcDwvZm9udD4gPGZvbnQgc2l6ZT0iNCI+My4zLjQ8L2ZvbnQ+PC9iPiAoPGZvbnQgc2l6ZT0iMiI+UmVsZWFzZWQ6IDE1LU9jdC0yMDE4PC9mb250PikKICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgIDxiPjxmb250IHNpemU9IjQiPlRpbmtlclBvcDwvZm9udD4gPGZvbnQgc2l6ZT0iNCI+My40LjI8L2ZvbnQ+PC9iPiAoPGZvbnQgc2l6ZT0iMiI+UmVsZWFzZWQ6IDI4LU1heS0yMDE5PC9mb250PikKICAgICAgICAgICAgIDxwPjxiPkRvd25sb2FkczwvYj48L3A+CiAgICAgICAgICAgICA8cD4KLSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjMuNC9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMy40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy40L2FwYWNoZS10aW5rZXJwb3AtMy4zLjQtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuNC4yL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuNC4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjQuMi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuNC4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuNC4yL2FwYWNoZS10aW5rZXJwb3AtMy40LjItc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CkBAIC00MSwyNyArNDEsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZSI+UmVmZXJlbmNlIERvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjQvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzNfNCI+VXBncmFkZSBJbmZvcm1hdGlvbjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4yL3VwZ3JhZGUvI190aW5rZXJwb3BfM180XzIiPlVwZ3JhZGUgSW5mb3JtYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT5UaW5rZXJQb3AgSmF2YWRvYyAtIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy9jdXJyZW50L2NvcmUvIj5jb3JlPC9hPiAvIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy9jdXJyZW50L2Z1bGwvIj5mdWxsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICA8YnIvPgotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC90dXRvcmlhbHMvZ2V0dGluZy1zdGFydGVkIj4KLSAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1neW0tbWluaS5wbmciIHdpZHRoPSIxNTAiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWxpZ249ImxlZnQiLz4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9rZWx2aW5sYXdyZW5jZS5uZXQvYm9vay9HcmVtbGluLUdyYXBoLUd1aWRlLmh0bWwiPgorICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9wcmFjdGljYWwtZ3JlbWxpbi10aXRsZWQucG5nIiB3aWR0aD0iMTUwIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsaWduPSJsZWZ0Ii8+CiAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhvdmVyZWZmZWN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL2NpdHlzY2FwZS1idXR0b24ucG5nIiBzdHlsZT0id2lkdGg6MjAwcHg7IiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+PC9hPgorICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvY2l0eXNjYXBlLWJ1dHRvbi5wbmciIHN0eWxlPSJ3aWR0aDoyMDBweDsiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxheSI+PGEgY2xhc3M9ImluZm8iIGhyZWY9ImdyZW1saW4uaHRtbCI+VW5kZXJzdGFuZCBHcmVtbGluPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhvdmVyZWZmZWN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL21lZXRpbmctcm9vbS1idXR0b24ucG5nIiBzdHlsZT0id2lkdGg6MjAwcHg7IiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+PC9hPgorICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvbWVldGluZy1yb29tLWJ1dHRvbi5wbmciIHN0eWxlPSJ3aWR0aDoyMDBweDsiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxheSI+PGEgY2xhc3M9ImluZm8iIGhyZWY9InByb3ZpZGVycy5odG1sIj5CZWNvbWUgVGlua2VyUG9wLUVuYWJsZWQ8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICA8IS0tIC8uY2Fyb3VzZWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgPGgzPlRoZSBCZW5lZml0cyBvZiBHcmFwaCBDb21wdXRpbmc8L2gzPgotICAgICAgPHA+PGltZyBzcmM9ImltYWdlcy9ncmFwaC1nbG9iZS5wbmciIHN0eWxlPSJmbG9hdDpsZWZ0O3dpZHRoOjE1JTtwYWRkaW5nOjEwcHg7Ij4gQSA8c3Ryb25nPmdyYXBoPC9zdHJvbmc+IGlzIGEgc3RydWN0dXJlIGNvbXBvc2VkIG9mIDxzdHJvbmc+dmVydGljZXM8L3N0cm9uZz4gYW5kIDxzdHJvbmc+ZWRnZXM8L3N0cm9uZz4uCisgICAgICA8cD48aW1nIHNyYz0iaW1nL2dyYXBoLWdsb2JlLnBuZyIgc3R5bGU9ImZsb2F0OmxlZnQ7d2lkdGg6MTUlO3BhZGRpbmc6MTBweDsiPiBBIDxzdHJvbmc+Z3JhcGg8L3N0cm9uZz4gaXMgYSBzdHJ1Y3R1cmUgY29tcG9zZWQgb2YgPHN0cm9uZz52ZXJ0aWNlczwvc3Ryb25nPiBhbmQgPHN0cm9uZz5lZGdlczwvc3Ryb25nPi4KICAgICAgICAgIEJvdGggdmVydGljZXMgYW5kIGVkZ2VzIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2Yga2V5L3ZhbHVlLXBhaXJzIGNhbGxlZCA8c3Ryb25nPnByb3BlcnRpZXM8L3N0cm9uZz4uCiAgICAgICAgICBWZXJ0aWNlcyBkZW5vdGUgZGlzY3JldGUgb2JqZWN0cyBzdWNoIGFzIGEgcGVyc29uLCBhIHBsYWNlLCBvciBhbiBldmVudC4gRWRnZXMgZGVub3RlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB2ZXJ0aWNlcy4gRm9yIGluc3RhbmNlLCBhIHBlcnNvbiBtYXkga25vdwogICAgICAgICAgYW5vdGhlciBwZXJzb24sIGhhdmUgYmVlbiBpbnZvbHZlZCBpbiBhbiBldmVudCwgYW5kL29yIHdhcyByZWNlbnRseSBhdCBhIHBhcnRpY3VsYXIgcGxhY2UuIFByb3BlcnRpZXMgZXhwcmVzcyBub24tcmVsYXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgICAgZ3JhcGggaXMga25vd24gYXMgYSA8c3Ryb25nPnByb3BlcnR5IGdyYXBoPC9zdHJvbmc+IGFuZCBpdCBpcyB0aGUgZm91bmRhdGlvbmFsIGRhdGEgc3RydWN0dXJlIG9mIEFwYWNoZSBUaW5rZXJQb3AuCiAgICAgICA8L3A+CiAgICAgICA8YnIvPgotICAgICAgPHA+PGltZyBzcmM9ImltYWdlcy9ncmFwaC12cy10YWJsZS5wbmciIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMiU7cGFkZGluZzoxMHB4OyI+SWYgYSB1c2VyJ3MgZG9tYWluIGlzIGNvbXBvc2VkIG9mIGEgaGV0ZXJvZ2Vub3VzIHNldCBvZiBvYmplY3RzICh2ZXJ0aWNlcykgdGhhdCBjYW4gYmUgcmVsYXRlZCB0byBvbmUgYW5vdGhlciBpbiBhIG11bHRpdHVkZSBvZiB3YXlzIChlZGdlcyksCisgICAgICA8cD48aW1nIHNyYz0iaW1nL2dyYXBoLXZzLXRhYmxlLnBuZyIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIyJTtwYWRkaW5nOjEwcHg7Ij5JZiBhIHVzZXIncyBkb21haW4gaXMgY29tcG9zZWQgb2YgYSBoZXRlcm9nZW5vdXMgc2V0IG9mIG9iamVjdHMgKHZlcnRpY2VzKSB0aGF0IGNhbiBiZSByZWxhdGVkIHRvIG9uZSBhbm90aGVyIGluIGEgbXVsdGl0dWRlIG9mIHdheXMgKGVkZ2VzKSwKICAgICAgICAgIHRoZW4gYSBncmFwaCBtYXkgYmUgdGhlIHJpZ2h0IHJlcHJlc2VudGF0aW9uIHRvIHVzZS4gSW4gYSBncmFwaCwgZWFjaCB2ZXJ0ZXggaXMgc2VlbiBhcyBhbiBhdG9taWMgZW50aXR5IChub3Qgc2ltcGx5IGEgInJvdyBpbiBhIHRhYmxlIikgdGhhdAogICAgICAgICAgY2FuIGJlIGxpbmtlZCB0byBhbnkgb3RoZXIgdmVydGV4IG9yIGhhdmUgcHJvcGVydGllcyBhZGRlZCBvciByZW1vdmVkIGF0IHdpbGwuIFRoaXMgZW1wb3dlcnMgdGhlIGRhdGEgbW9kZWxlciB0byB0aGluayBpbiB0ZXJtcyBvZiBhY3RvcnMgd2l0aGluCiAgICAgICAgICBhIHdvcmxkIG9mIGNvbXBsZXggcmVsYXRpb25zIGFzIG9wcG9zZWQgdG8sIGluIHJlbGF0aW9uYWwgZGF0YWJhc2VzLCBzdGF0aWNhbGx5LXR5cGVkIHRhYmxlcyBqb2luZWQgaW4gYWdncmVnYXRlLiBPbmNlIGEgZG9tYWluIGlzIG1vZGVsZWQsIHRoYXQKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICAgZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgdGhhdCBzdHJ1Y3R1cmUuCiAgICAgICA8L3A+CiAgICAgICA8YnIvPgotICAgICAgPHA+PGEgaHJlZj0iIyI+PGltZyBzcmM9ImltYWdlcy9hcGFjaGUtdGlua2VycG9wLWxvZ28ucG5nIiBzdHlsZT0iZmxvYXQ6bGVmdDt3aWR0aDoyMiU7cGFkZGluZzoxMHB4OyIvPjwvYT5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOyBpcyBhbiBvcGVuIHNvdXJjZSwgdmVuZG9yLWFnbm9zdGljLCBncmFwaCBjb21wdXRpbmcgZnJhbWV3b3JrIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBjb21tZXJjaWFsIGZyaWVuZGx5IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlMiBsaWNlbnNlPC9hPi4KKyAgICAgIDxwPjxhIGhyZWY9IiMiPjxpbWcgc3JjPSJpbWcvYXBhY2hlLXRpbmtlcnBvcC1sb2dvLnBuZyIgc3R5bGU9ImZsb2F0OmxlZnQ7d2lkdGg6MjIlO3BhZGRpbmc6MTBweDsiLz48L2E+QXBhY2hlIFRpbmtlclBvcCZ0cmFkZTsgaXMgYW4gb3BlbiBzb3VyY2UsIHZlbmRvci1hZ25vc3RpYywgZ3JhcGggY29tcHV0aW5nIGZyYW1ld29yayBkaXN0cmlidXRlZCB1bmRlciB0aGUgY29tbWVyY2lhbCBmcmllbmRseSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZTIgbGljZW5zZTwvYT4uCiAgICAgICAgICBXaGVuIGEgZGF0YSBzeXN0ZW0gaXMgPGEgaHJlZj0icHJvdmlkZXJzLmh0bWwiPlRpbmtlclBvcC1lbmFibGVkPC9hPiwgaXRzIHVzZXJzIGFyZSBhYmxlIHRvIG1vZGVsIHRoZWlyIGRvbWFpbiBhcyBhIGdyYXBoIGFuZCBhbmFseXplIHRoYXQgZ3JhcGggdXNpbmcgdGhlIDxhIGhyZWY9ImdyZW1saW4uaHRtbCI+R3JlbWxpbiBncmFwaCB0cmF2ZXJzYWwgbGFuZ3VhZ2U8L2E+LgogICAgICAgICAgRnVydGhlcm1vcmUsIGFsbCBUaW5rZXJQb3AtZW5hYmxlZCBzeXN0ZW1zIGludGVncmF0ZSB3aXRoIG9uZSBhbm90aGVyIGFsbG93aW5nIHRoZW0gdG8gZWFzaWx5IGV4cGFuZCB0aGVpciBvZmZlcmluZ3MgYXMgd2VsbCBhcyBhbGxvd2luZyB1c2VycyB0byBjaG9vc2UgdGhlIGFwcHJvcHJpYXRlIGdyYXBoCiAgICAgICAgICB0ZWNobm9sb2d5IGZvciB0aGVpciBhcHBsaWNhdGlvbi4gU29tZXRpbWVzIGFuIGFwcGxpY2F0aW9uIGlzIGJlc3Qgc2VydmVkIGJ5IGFuIGluLW1lbW9yeSwgdHJhbnNhY3Rpb25hbCBncmFwaCBkYXRhYmFzZS4gU29tZXRpbWVzIGEgbXVsdGktbWFjaGluZSBkaXN0cmlidXRlZCBncmFwaCBkYXRhYmFzZSB3aWxsIGRvIHRoZSBqb2IuCkBAIC0yMDIsNyArMjAyLDcgQEAKICAgICAgICAgICAgICAgIDxwPlRvIGJ1aWxkIFRpbmtlclBvcCBmcm9tIHNvdXJjZSwgcGxlYXNlIHJldmlldyB0aGUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvZGV2ZWxvcGVyLyNidWlsZGluZy10ZXN0aW5nIj5kZXZlbG9wZXIgZG9jdW1lbnRhdGlvbjwvYT4uCiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy00Ij4KLSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2RldmVsb3Blci8iPjxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1hcGFjaGUucG5nIiB3aWR0aD0iMjUwIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+PC9hPgorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvZGV2ZWxvcGVyLyI+PGltZyBzcmM9ImltZy9ncmVtbGluLWFwYWNoZS5wbmciIHdpZHRoPSIyNTAiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz48L2E+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGgzPkNvbW11bml0eSBDb250cmlidXRpb25zPC9oMz4KQEAgLTIxNSwxNiArMjE1LDE4IEBACiAgICAgICAgICA8aDQgaWQ9ImdyYXBoLXN5c3RlbXMiPkdyYXBoIFN5c3RlbXM8L2g0PgogICAgICAgICAgPHNtYWxsPls8YSBocmVmPSJwcm92aWRlcnMuaHRtbCNkYXRhLXN5c3RlbS1wcm92aWRlcnMiPmxlYXJuIG1vcmU8L2E+XTwvc21hbGw+CiAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jbi5hbGl5dW4uY29tL3Byb2R1Y3QvZ2RiIj5BbGliYWJhIEdyYXBoIERhdGFiYXNlPC9hPiAtIEEgcmVhbC10aW1lLCByZWxpYWJsZSwgY2xvdWQtbmF0aXZlIGdyYXBoIGRhdGFiYXNlIHNlcnZpY2UgdGhhdCBzdXBwb3J0cyBwcm9wZXJ0eSBncmFwaCBtb2RlbC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vYXdzLmFtYXpvbi5jb20vbmVwdHVuZS8iPkFtYXpvbiBOZXB0dW5lPC9hPiAtIEZ1bGx5LW1hbmFnZWQgZ3JhcGggZGF0YWJhc2Ugc2VydmljZS48L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BcmFuZ29EQi1Db21tdW5pdHkvYXJhbmdvZGItdGlua2VycG9wLXByb3ZpZGVyIj5BcmFuZ29EQjwvYT4gLSBPTFRQIFByb3ZpZGVyIGZvciBBcmFuZ29EQi48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9sYW1iZGF6ZW4vYml0c3kvd2lraSI+Qml0c3k8L2E+IC0gQSBzbWFsbCwgZmFzdCwgZW1iZWRkYWJsZSwgZHVyYWJsZSBpbi1tZW1vcnkgZ3JhcGggZGF0YWJhc2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmxhemVncmFwaC90aW5rZXJwb3AzIj5CbGF6ZWdyYXBoPC9hPiAtIFJERiBncmFwaCBkYXRhYmFzZSB3aXRoIE9MVFAgc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2Nvc21vcy1kYi9ncmFwaC1pbnRyb2R1Y3Rpb24iPkNvc21vc0RCPC9hPiAtIE1pY3Jvc29mdCdzIGRpc3RyaWJ1dGVkIE9MVFAgZ3JhcGggZGF0YWJhc2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTWFydGluSGFldXNsZXIvY2hyb25vcy90cmVlL21hc3Rlci9vcmcuY2hyb25vcy5jaHJvbm9ncmFwaCI+Q2hyb25vR3JhcGg8L2E+IC0gQSB2ZXJzaW9uZWQgZ3JhcGggZGF0YWJhc2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmRhdGFzdGF4LmNvbS9wcm9kdWN0cy9kYXRhc3RheC1lbnRlcnByaXNlLWdyYXBoIj5EU0VHcmFwaDwvYT4gLSBEYXRhU3RheCBncmFwaCBkYXRhYmFzZSB3aXRoIE9MVFAgYW5kIE9MQVAgc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ3Jha24uYWkvIj5HUkFLTi5BSTwvYT4gLSBEaXN0cmlidXRlZCBPTFRQL09MQVAga25vd2xlZGdlIGdyYXBoIHN5c3RlbS48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNnaXJhcGhncmFwaGNvbXB1dGVyIj5IYWRvb3AgKEdpcmFwaCk8L2E+IC0gT0xBUCBncmFwaCBwcm9jZXNzb3IgdXNpbmcgR2lyYXBoLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI3NwYXJrZ3JhcGhjb21wdXRlciI+SGFkb29wIChTcGFyayk8L2E+IC0gT0xBUCBncmFwaCBwcm9jZXNzb3IgdXNpbmcgU3BhcmsuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmF5b2tvdGEvaGdyYXBoZGIiPkhHcmFwaERCPC9hPiAtIE9MVFAgZ3JhcGggZGF0YWJhc2UgcnVubmluZyBvbiBBcGFjaGUgSEJhc2UuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5odWF3ZWljbG91ZC5jb20vZW4tdXMvcHJvZHVjdC9nZXMuaHRtbCI+SHVhd2VpIEdyYXBoIEVuZ2luZSBTZXJ2aWNlPC9hPiAtIEZ1bGx5LW1hbmFnZWQsIGRpc3RyaWJ1dGVkLCBhdC1zY2FsZSBncmFwaCBxdWVyeSBhbmQgYW5hbHlzaXMgc2VydmljZSB0aGF0IHByb3ZpZGVzIGEgdmlzdWFsaXplZCBpbnRlcmFjdGl2ZSBhbmFseXRpY3MgcGxhdGZvcm0uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2NvbnNvbGUubmcuYmx1ZW1peC5uZXQvY2F0YWxvZy9zZXJ2aWNlcy9pYm0tZ3JhcGgvIj5JQk0gR3JhcGg8L2E+IC0gT0xUUCBncmFwaCBkYXRhYmFzZSBhcyBhIHNlcnZpY2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vamFudXNncmFwaC5vcmcvIj5KYW51c0dyYXBoPC9hPiAtIERpc3RyaWJ1dGVkIE9MVFAgYW5kIE9MQVAgZ3JhcGggZGF0YWJhc2Ugd2l0aCBCZXJrZWxleURCLCBBcGFjaGUgQ2Fzc2FuZHJhIGFuZCBBcGFjaGUgSEJhc2Ugc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2R5bmFtb2RiLWphbnVzZ3JhcGgtc3RvcmFnZS1iYWNrZW5kLy8iPkphbnVzR3JhcGggKEFtYXpvbik8L2E+IC0gVGhlIEFtYXpvbiBEeW5hbW9EQiBTdG9yYWdlIEJhY2tlbmQgZm9yIEphbnVzR3JhcGguPC9saT4KQEAgLTI0NCw5ICsyNDYsMTEgQEAKICAgICAgICAgIDxoNCBpZD0ibGFuZ3VhZ2UtdmFyaWFudHMtY29tcGlsZXJzIj5RdWVyeSBMYW5ndWFnZXM8L2g0PgogICAgICAgICAgPHNtYWxsPls8YSBocmVmPSJwcm92aWRlcnMuaHRtbCNxdWVyeS1sYW5ndWFnZS1wcm92aWRlcnMiPmxlYXJuIG1vcmU8L2E+XTwvc21hbGw+CiAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jeXBoZXIvY3lwaGVyLWZvci1ncmVtbGluIj5jeXBoZXItZm9yLWdyZW1saW48L2E+IC0gQSBDeXBoZXIgdG8gR3JlbWxpbiB0cmF2ZXJzYWwgdHJhbnNwaWxlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9zeW5jbGV1cy5jb20vRmVybWEvIj5GZXJtYTwvYT4gKGphdmEvZHNsKSAtIEFuIE9STSAvIE9HTSBmb3IgQXBhY2hlIFRpbmtlclBvcC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlYnNob3cvZ29ibGluIj5Hb2JsaW48L2E+IChweXRob24vZHNsKSAtIEdvYmxpbiBPR00gZm9yIHRoZSBUaW5rZXJQb3AgMyBHcmVtbGluIFNlcnZlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNncmVtbGluLURvdE5ldCI+R3JlbWxpbi5OZXQ8L2E+ICguTkVUIC0gQyMvdmFyaWFudCkgLSBHcmVtbGluIGhvc3RlZCBpbiBDIyBmb3IgdXNlIHdpdGggYW55IC5ORVQtYmFzZWQgVk0uPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1qYXZhc2NyaXB0Ij5ncmVtbGluLWphdmFzY3JpcHQ8L2E+IChqcykgLSBHcmVtbGluIGhvc3RlZCBpbiBKYXZhU2NyaXB0IGZvciB1c2Ugd2l0aCBOb2RlLmpzLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dyZW1saW4tb3JtL2dyZW1saW4tb3JtIj5ncmVtbGluLW9ybTwvYT4gKGphdmFzY3JpcHQpIEdyZW1saW4gT1JNIGZvciBOb2RlLmpzLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj5ncmVtbGluLXB5dGhvbjwvYT4gKHB5dGhvbi92YXJpYW50KSAtIEdyZW1saW4gaG9zdGVkIGluIFB5dGhvbiBmb3IgdXNlIHdpdGggYW55IFB5dGhvbi1iYXNlZCBWTS48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9lbWVocmtheS9ncmVtbGlucHkiPmdyZW1saW4tcHk8L2E+IChweXRob24vdmFyaWFudCkgLSBXcml0ZSBwdXJlIFB5dGhvbiBHcmVtbGluIHRoYXQgY2FuIGJlIHNlbnQgdG8gR3JlbWxpbiBTZXJ2ZXIuPC9saT4KQEAgLTI1NCw5ICsyNTgsMTEgQEAKICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2FydGhpY2tzL2dyZW1saW4tb2dtIj5ncmVtbGluLW9iamVjdHM8L2E+IChqYXZhL2RzbCkgLSBBbiBPYmplY3QgR3JhcGggTWFwcGluZyBMaWJyYXJ5IEZvciBHcmVtbGluLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pibXVzc28vZ3JlbWxpbi10ZW1wbGF0ZS1zdHJpbmciPmdyZW1saW4tdGVtcGxhdGUtc3RyaW5nPC9hPiAoanMvdmFyaWFudCkgLSBBIEdyZW1saW4gbGFuZ3VhZ2UgYnVpbGRlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlYnNob3cvaXB5dGhvbi1ncmVtbGluIj5pcHl0aG9uLWdyZW1saW48L2E+IChweXRob24vdmFyaWFudCkgLSBHcmVtbGluIGluIElQeXRob24gYW5kIEp1cHl0ZXIuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcG0tZGV2L2tvdGxpbi1ncmVtbGluLW9nbSI+a290bGluLWdyZW1saW4tb2dtPC9hPiAoa290bGluL2RzbCkgLSBBbiBPYmplY3QgR3JhcGggTWFwcGluZyBMaWJyYXJ5IGZvciBLb3RsaW4gYW5kIEdyZW1saW4uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vb2dyZS5jbG9qdXJld2Vya3oub3JnLyI+b2dyZTwvYT4gKGNsb2p1cmUvdmFyaWFudCkgLSBBIENsb2p1cmUgbGFuZ3VhZ2Ugd3JhcHBlciBmb3IgVGlua2VyUG9wMy48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9iYXlvZm1hbnkuZ2l0aHViLmlvLyI+UGVhcG9kPC9hPiAoamF2YS9kc2wpIC0gQW4gb2JqZWN0LWdyYXBoLXdyYXBwZXIuPC9saT4KLSAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTElUTVVTLUJlbmNobWFyay1TdWl0ZS9zcGFycWwtdG8tZ3JlbWxpbiI+c3BhcnFsLWdyZW1saW48L2E+IChzcGFycWwvZGlzdGluY3QpIC0gQSBTUEFSUUwgdG8gR3JlbWxpbiB0cmF2ZXJzYWwgY29tcGlsZXIuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jc3BhcnFsLWdyZW1saW4iPnNwYXJxbC1ncmVtbGluPC9hPiAoc3BhcnFsL2Rpc3RpbmN0KSAtIEEgU1BBUlFMIHRvIEdyZW1saW4gdHJhdmVyc2FsIGNvbXBpbGVyLjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9zcHJpbmctZGF0YS1ncmVtbGluIj5zcHJpbmctZGF0YS1ncmVtbGluPC9hPiAoamF2YS9kc2wpIC0gU3ByaW5nIERhdGEgc3VwcG9ydCBmb3IgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtcy48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90d2lsbWVzL3NxbC1ncmVtbGluIj5zcWwtZ3JlbWxpbjwvYT4gKHNxbC9kaXN0aW5jdCkgLSBBbiBTUUwgdG8gR3JlbWxpbiB0cmF2ZXJzYWwgY29tcGlsZXIuPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8YSBuYW1lPSJsYW5ndWFnZS1kcml2ZXJzIj48L2E+CkBAIC0yNjUsMTIgKzI3MSwxMyBAQAogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlYnNob3cvZ3JlbWxpbmNsaWVudCI+Z3JlbWxpbmNsaWVudDwvYT4gKHB5dGhvbikgLSBBbiBhc3luY2hyb25vdXMgUHl0aG9uIDIvMyBjbGllbnQgZm9yIEdyZW1saW4gU2VydmVyIHRoYXQgYWxsb3dzIGZvciBmbGV4aWJsZSBjb3JvdXRpbmUgc3ludGF4IC0gVHJvbGxpdXMsIFRvcm5hZG8sIEFzeW5jaW8uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFyY2Vsb2NmL2dyZW1saW5fY2xpZW50Ij5ncmVtbGluX2NsaWVudDwvYT4gKHJ1YnkpIC0gQSBHcmVtbGluIFNlcnZlciBkcml2ZXIgZm9yIFJ1YnkuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtamF2YSI+Z3JlbWxpbi1kcml2ZXI8L2E+IChqYXZhKSAtIEEgR3JlbWxpbiBTZXJ2ZXIgZHJpdmVyIGZvciBKYXZhLjwvbGk+Ci0gICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pibXVzc28vZ3JlbWxpbi1qYXZhc2NyaXB0Ij5ncmVtbGluLWphdmFzY3JpcHQ8L2E+IChqcykgLSBBIEdyZW1saW4gU2VydmVyIGRyaXZlciBmb3IgSmF2YVNjcmlwdC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9xYXNhdXIvZ3JlbWdvIj5ncmVtZ288L2E+IChnbykgLSBBIEdyZW1saW4gU2VydmVyIGRyaXZlciBmb3IgR28uPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vUmV2bWFrZXIvZ3JlbWxleCI+Z3JlbWxleDwvYT4gKGVsaXhpcikgLSBBIEdyZW1saW4gU2VydmVyIGRyaXZlciBmb3IgRWxpeGlyLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tRG90TmV0Ij5HcmVtbGluLk5ldDwvYT4gKC5ORVQgLSBDIykgLSBHcmVtbGluIFNlcnZlciBkcml2ZXIgZm9yIC5ORVQuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vUG9tbWVWZXJ0ZS9ncmVtbGluLXBocCI+Z3JlbWxpbi1waHA8L2E+IChwaHApIC0gQSBHcmVtbGluIFNlcnZlciBkcml2ZXIgZm9yIFBIUC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNncmVtbGluLXB5dGhvbiI+Z3JlbWxpbi1weXRob248L2E+IChweXRob24pIC0gR3JlbWxpbiBTZXJ2ZXIgZHJpdmVyIGZvciBQeXRob24uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZ3JlbWxpbnJlc3RjbGllbnQucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC8iPmdyZW1saW5yZXN0Y2xpZW50PC9hPiAocHl0aG9uKSAtIFB5dGhvbiAyLzMgbGlicmFyeSB0aGF0IHVzZXMgSFRUUCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBHcmVtbGluIFNlcnZlciBvdmVyIFJFU1QuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRXhSYW0vRXhSYW0uR3JlbWxpbnEiPkdyZW1saW5xPC9hPiAoLk5FVCkgLSBBIHN0cm9uZ2x5IHR5cGVkIHNlcnZlciBkcml2ZXIuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vd2luZGowMDcvcHl0aG9uLWdyZW1saW4tcmVzdCI+cHl0aG9uLWdyZW1saW4tcmVzdDwvYT4gKHB5dGhvbikgLSBBIFJFU1QtYmFzZWQgY2xpZW50IGZvciBHcmVtbGluIFNlcnZlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jb3JleWF1Z2VyL3JlYWN0aXZlLWdyZW1saW4iPnJlYWN0aXZlLWdyZW1saW48L2E+IChzY2FsYSkgLSBBbiBBa2thIEhUVFAgV2Vic29ja2V0IENvbm5lY3Rvci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92aWFncmFwaHMvc2NhbGFqcy1ncmVtbGluLWNsaWVudCI+c2NhbGFqcy1ncmVtbGluLWNsaWVudDwvYT4gKHNjYWxhKSAtIEEgR3JlbWxpbi1TZXJ2ZXIgY2xpZW50IHdpdGggYWQtaG9jIGV4dGVuc2libGUsIHJlYWN0aXZlLCB0eXBlY2xhc3MgYmFzZWQgQVBJLjwvbGk+CkBAIC0yNzksMTkgKzI4NiwzMCBAQAogICAgICAgICAgPGEgbmFtZT0icG93ZXJlZGJ5Ij48L2E+CiAgICAgICAgICA8aDQgaWQ9InBvd2VyZWRieSI+UG93ZXJlZCBCeTwvaDQ+CiAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZXhha2F0LmlvLyI+ZXhha2F0LmlvPC9hPiAtIFN0YXRpYyBhbmFseXNpcyBlbmdpbmUgZm9yIFBIUCwgcG93ZXJlZCBieSBHcmVtbGluLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9icmljYXVkLmdpdGh1Yi5pby9ncmFwaGV4cC9ncmFwaGV4cC5odG1sIj5HcmFwaGV4cDwvYT4gLSBJbnRlcmFjdGl2ZSB2aXN1YWxpemF0aW9uIG9mIHRoZSBHcmVtbGluIGdyYXBoIGRhdGFiYXNlIHdpdGggRDMuanMuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmVjaGJkL2dyZW1saW4taWRlIj5ncmVtbGluLWlkZTwvYT4gLSBBbiBJREUgZm9yIEFwYWNoZSBUaW5rZXJQb3AtZW5hYmxlZCBkYXRhYmFzZXMgdXNpbmcgUmVhY3QgYW5kIEVsZWN0cm9uLjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2NhbWJyaWRnZS1pbnRlbGxpZ2VuY2UuY29tL2tleWxpbmVzLyI+S2V5TGluZXM8L2E+IC0gQSBKYXZhU2NyaXB0IFNESyBmb3IgYnVpbGRpbmcgcG93ZXJmdWwsIGN1c3RvbSBhbmQgc2NhbGFibGUgZ3JhcGggdmlzdWFsaXphdGlvbiBhcHBsaWNhdGlvbnMuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWVsdHdhdGVyL2p1Z3JpIj5KVUdSSTwvYT4gLSBBIEp1cHl0ZXIgR3JlbWxpbiBpbnRlcmZhY2UuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vbGlua3VyaW8udXMvIj5MaW5rdXJpb3VzPC9hPiAtIEEgYnJvd3Nlci1iYXNlZCBncmFwaCB2aXN1YWxpemF0aW9uIHNvZnR3YXJlIHRvIHNlYXJjaCwgZXhwbG9yZSBhbmQgdmlzdWFsaXplIGNvbm5lY3RlZCBkYXRhLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5waXRuZXlib3dlcy5jb20vdXMvY3VzdG9tZXItaW5mb3JtYXRpb24tbWFuYWdlbWVudC9kYXRhLWludGVncmF0aW9uLW1hbmFnZW1lbnQvc3BlY3RydW0tZGF0YS1odWItbW9kdWxlLmh0bWwiPlBpdG5leSBCb3dlcyBTcGVjdHJ1bSBEYXRhIEh1YiBNb2R1bGU8L2E+IC0gVXNlcyBHcmVtbGluIE9MVFAgdG8gcXVlcnkgTmVvNGotcG93ZXJlZCBtYXN0ZXIgZGF0YSBtYW5hZ2VtZW50IGJhc2VkIGdyYXBoIGRhdGFiYXNlLjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhY2tzdGF0ZS5jb20vIj5TdGFja1N0YXRlPC9hPiAtIE1vbml0b3JpbmcgYW5kIEFJT3BzIGFsbG93aW5nIHVzZXJzIHRvIHV0aWxpemUgR3JlbWxpbiBmb3IgYW5hbHl0aWNhbCBmdW5jdGlvbnMuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdG9tc2F3eWVyLmNvbS9wcm9kdWN0cy9wZXJzcGVjdGl2ZXMvIj5Ub20gU2F3eWVyIFBlcnNwZWN0aXZlczwvYT4gLSBBZHZhbmNlZCBncmFwaGljcy1iYXNlZCBzb2Z0d2FyZSBmb3IgYnVpbGRpbmcgZW50ZXJwcmlzZS1jbGFzcyBkYXRhIHJlbGF0aW9uc2hpcCB2aXN1YWxpemF0aW9uIGFuZCBhbmFseXNpcyBhcHBsaWNhdGlvbnMuPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8YSBuYW1lPSJjb21taXR0ZXJzIj48L2E+Ci0gICAgICAgICA8aDMgaWQ9ImNvbW1pdHRlcnMiPkFwYWNoZSBUaW5rZXJQb3AgQ29tbWl0dGVyczwvaDM+Ci0gICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZyIgc3R5bGU9ImZsb2F0OnJpZ2h0IiAvPlRpbmtlclBvcCBzZWVrcyBjb21taXR0ZXJzIGRlZGljYXRlZCB0byB0aGUgYXJ0IG9mIGdyYXBoIGNvbXB1dGluZy4gVGlua2VyUG9wIGNvbW1pdHRlcnMgYnJpbmcgc29saWQgdGhlb3JldGljYWwsCi0gICAgICAgICBkZXZlbG9wbWVudCwgdGVzdGluZywgZG9jdW1lbnRhdGlvbiwgZXRjLiBza2lsbHMgdG8gdGhlIGdyb3VwLiBDb21taXR0ZXJzIGNvbnRyaWJ1dGUgdG8gVGlua2VyUG9wIGJleW9uZCB0aGUgZXZlci1jaGFuZ2luZyByZXF1aXJlbWVudHMgb2YgdGhlaXIgZGF5LXRvLWRheSBqb2JzIGFuZCBtYWludGFpbgorICAgICAgICAgPGEgbmFtZT0iY29udHJpYnV0b3JzIj48L2E+CisgICAgICAgICA8aDMgaWQ9ImNvbnRyaWJ1dG9ycyI+QXBhY2hlIFRpbmtlclBvcCBDb250cmlidXRvcnM8L2gzPgorICAgICAgICAgPGltZyBzcmM9ImltZy90aW5rZXJwb3AtbG9nby1zbWFsbC5wbmciIHN0eWxlPSJmbG9hdDpyaWdodCIgLz5UaW5rZXJQb3Agc2Vla3MgY29udHJpYnV0b3JzIGRlZGljYXRlZCB0byB0aGUgYXJ0IG9mIGdyYXBoIGNvbXB1dGluZy4gVGlua2VyUG9wIGNvbnRyaWJ1dG9ycyBicmluZyBzb2xpZCB0aGVvcmV0aWNhbCwKKyAgICAgICAgIGRldmVsb3BtZW50LCB0ZXN0aW5nLCBkb2N1bWVudGF0aW9uLCBldGMuIHNraWxscyB0byB0aGUgZ3JvdXAuIFRoZXNlIGluZGl2aWR1YWxzIGNvbnRyaWJ1dGUgdG8gVGlua2VyUG9wIGJleW9uZCB0aGUgZXZlci1jaGFuZ2luZyByZXF1aXJlbWVudHMgb2YgdGhlaXIgZGF5LXRvLWRheSBqb2JzIGFuZCBtYWludGFpbgogICAgICAgICAgcmVzcG9uc2liaWxpdHkgZm9yIHRoZWlyIGNvbnRyaWJ1dGlvbnMgdGhyb3VnaCB0aW1lLgogICAgICAgICAgPHAvPgorICAgICAgICAgPCEtLSB0byBiZSB1bmNvbW1lbnRlZCBhcyBuZWNlc3NhcnksIGp1c3QgZXN0YWJsaXNoaW5nIHRoZSB0ZW1wbGF0ZSAtLS0tLS0tLS0tLQorICAgICAgICAgPGg0IGlkPSJjb250cmlidXRvcnMtYWN0aXZlIj5BY3RpdmU8L2g0PgorICAgICAgICAgLS0+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSI+TWFya28gQS4gUm9kcmlndWV6PC9hPiAoMjAwOSAtIFBNQyk6IEdyZW1saW4gbGFuZ3VhZ2UsIEdyZW1saW4gbWFjaGluZSwgZG9jdW1lbnRhdGlvbi48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9rZXRyaW5hZHJhd3NhbG90LnR1bWJsci5jb20iPktldHJpbmEgWWltPC9hPiAoMjAwOSAtIENvbW1pdHRlcik6IElsbHVzdHJhdG9yLCBjcmVhdG9yIG9mIEdyZW1saW4gYW5kIGhpcyBtZXJyeSBiYW5kIG9mIHJvYm90cy48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20vIj5TdGVwaGVuIE1hbGxldHRlPC9hPiAoMjAxMSAtIFBNQyBDaGFpcik6IEdyZW1saW4gQ29uc29sZS9TZXJ2ZXIvRHJpdmVyLCBHcmFwaCBJL08sIHRlc3RpbmcsIGRvY3VtZW50YXRpb24sIG1haWxpbmcgbGlzdCBzdXBwb3J0LjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbS8iPlN0ZXBoZW4gTWFsbGV0dGU8L2E+ICgyMDExIC0gUE1DIENoYWlyKTogR3JlbWxpbiBDb25zb2xlL1NlcnZlci9Ecml2ZXIsIExhbmd1YWdlIFZhcmlhbnRzIGFuZCBnZW5lcmFsIGNvcmUgZGV2ZWxvcG1lbnQuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vamFtZXN0aG9ybnRvbi5jb20vIj5KYW1lcyBUaG9ybnRvbjwvYT4gKDIwMTMgLSBQTUMpOiBQcm9tb3Rpb25zLCBldmFuZ2VsaXNtLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2dyZW1saW4uZ3VydSI+RGFuaWVsIEt1cHBpdHo8L2E+ICgyMDE0IC0gUE1DKTogR3JlbWxpbiBsYW5ndWFnZSBkZXNpZ24sIGJlbmNobWFya2luZywgdGVzdGluZywgZG9jdW1lbnRhdGlvbiwgbWFpbGluZyBsaXN0IHN1cHBvcnQuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vaHpiYXJjZWEiPkhhZHJpYW4gWmJhcmNlYTwvYT4gKDIwMTUgLSBQTUMpOiBQcm9qZWN0IG1lbnRvciwgcHJvdmlkZXIgbGlhc29uLjwvbGk+CkBAIC0zMDUsMTAgKzMyMywxNyBAQAogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWljaGFlbHBvbGxtZWllci5jb20vIj5NaWNoYWVsIFBvbGxtZWllcjwvYT4gKDIwMTYgLSBDb21taXR0ZXIpOiBHcmVtbGluIGxhbmd1YWdlLCBHcmVtbGluLVNjYWxhLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhdmVic2hvdyI+RGF2aWQgQnJvd248L2E+ICgyMDE2IC0gQ29tbWl0dGVyKTogUHl0aG9uIGxpYnJhcmllcywgR3JlbWxpbiBTZXJ2ZXIgdGVzdGluZy48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb2JlcnRkYWxlIj5Sb2JlcnQgRGFsZTwvYT4gKDIwMTYgLSBQTUMpOiBHcmVtbGluIENvbnNvbGUvU2VydmVyLCBkb2N1bWVudGF0aW9uLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb3JnZWJheSI+Sm9yZ2UgQmF5PC9hPiAoMjAxNyAtIENvbW1pdHRlcik6IEphdmFTY3JpcHQgYW5kIC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GbG9yaWFuSG9ja21hbm4vIj5GbG9yaWFuIEhvY2ttYW5uPC9hPiAoMjAxNyAtIENvbW1pdHRlcik6IC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb3JnZWJheSI+Sm9yZ2UgQmF5PC9hPiAoMjAxNyAtIFBNQyk6IEdyYXBoQmluYXJ5IHNlcmlhbGl6YXRpb24sIEphdmFTY3JpcHQgYW5kIC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GbG9yaWFuSG9ja21hbm4vIj5GbG9yaWFuIEhvY2ttYW5uPC9hPiAoMjAxNyAtIFBNQyk6IC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cua2VsdmlubGF3cmVuY2UubmV0LyI+S2VsdmluIExhd3JlbmNlPC9hPiAoMjAxNyAtIENvbW1pdHRlcik6IERvY3VtZW50YXRpb24gYW5kIG1haWxpbmcgbGlzdCBzdXBwb3J0LjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2hhcnNodGhha2thci5pbi8iPkhhcnNoIFRoYWtrYXI8L2E+ICgyMDE4IC0gQ29tbWl0dGVyKTogR3JlbWxpbi1TUEFSUUwgbW9kdWxlLjwvbGk+CiAgICAgICAgICA8L3VsPgorICAgICAgICAgPCEtLSB0byBiZSB1bmNvbW1lbnRlZCBhcyBuZWNlc3NhcnksIGp1c3QgZXN0YWJsaXNoaW5nIHRoZSB0ZW1wbGF0ZSAtLS0tLS0tLS0tLQorICAgICAgICAgPGg0IGlkPSJjb250cmlidXRvcnMtaW5hY3RpdmUiPkluYWN0aXZlPC9oND4KKyAgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vc29tZW9uZS5jb20vIj5Kb2huIERvZTwvYT4gKDIwMTUgLSAyMDE2KTogQ29tbWl0dGVyL1BNQywgTW9kdWxlIFgsIE1vZHVsZSBZLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgorICAgICAgICAgPC91bD4KKyAgICAgICAgIC0tPgogICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvcG9saWN5Lmh0bWwgYi9kb2NzL3NpdGUvaG9tZS9wb2xpY3kuaHRtbAppbmRleCBlZTc3ZTdiLi5iMWQ2YmVlIDEwMDY0NAotLS0gYS9kb2NzL3NpdGUvaG9tZS9wb2xpY3kuaHRtbAorKysgYi9kb2NzL3NpdGUvaG9tZS9wb2xpY3kuaHRtbApAQCAtMTQsNyArMTQsNyBAQAogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAtLT4KLTxpbWcgc3JjPSJpbWFnZXMvdGlua2VycG9wLWNvbmZlcmVuY2UucG5nIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+Cis8aW1nIHNyYz0iaW1nL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiAvPgogPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9Imhlcm8tdW5pdCIgc3R5bGU9InBhZGRpbmc6MTBweCI+CiAgICAgICA8Yj48Zm9udCBzaXplPSI1IiBmYWNlPSJhbWVyaWNhbiB0eXBld3JpdGVyIj5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvZm9udD48L2I+CkBAIC02MCwxMyArNjAsMTMgQEAKICAgICAgIDwvcD4KICAgICAgIDx1bD4KICAgICAgICAgIDxsaT48c3Ryb25nPkNoYXJhY3RlciBHcmFwaGljczwvc3Ryb25nPjogQSBjaGFyYWN0ZXIgZ3JhcGhpYyBjYW4gYmUgdXNlZCA8ZW0+d2l0aG91dCBwZXJtaXNzaW9uPC9lbT4gYXMgbG9uZyBhcyBpdHMgYmVpbmcgdXNlZCBpbiBhbiBBcGFjaGUgVGlua2VyUG9wIHJlbGF0ZWQgY29udGV4dCBhbmQgaXQgaXMgYWNrbm93bGVkZ2VkIHRoYXQgdGhlIGdyYXBoaWMgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uL0FwYWNoZSBUaW5rZXJQb3AuPC9saT4KLSAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L3BpcGVzLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L3JleHN0ZXItY2hhcmFjdGVyLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDo5JTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ibHVlcHJpbnRzLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L2Z1cm5hY2UtY2hhcmFjdGVyLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDo5JTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZnJhbWVzLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+CisgICAgICAgICA8aW1nIHNyYz0iaW1nL3BvbGljeS9waXBlcy1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9yZXhzdGVyLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tY2hhcmFjdGVyLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDo5JTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvYmx1ZXByaW50cy1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9mdXJuYWNlLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPgogICAgICAgICAgPGxpPjxzdHJvbmc+Q2hhcmFjdGVyIERyZXNzLVVwIEdyYXBoaWNzPC9zdHJvbmc+OiBBIGNoYXJhY3RlciBncmFwaGljIGNhbiBiZSBtYW5pcHVsYXRlZCAoImRyZXNzZWQgdXAiKSBhbmQgdXNlZCA8ZW0+d2l0aG91dCBwZXJtaXNzaW9uPC9lbT4gYXMgbG9uZyBhcyBpdCdzIGJlaW5nIHVzZWQgaW4gYW4gQXBhY2hlIFRpbmtlclBvcCByZWxhdGVkIGNvbnRleHQgYW5kIGl0IGlzIGFja25vd2xlZGdlZCB0aGF0IHRoZSBncmFwaGljIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi9BcGFjaGUgVGlua2VyUG9wLjwvbGk+Ci0gICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1vcG9seS5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1yZWFwZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjE0JTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjEwJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxMiU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbXN0ZWZhbmkucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjEwJTsiLz4KKyAgICAgICAgIDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxMCU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tZ3JlbXJlYXBlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTQlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9ncmVtbGluLWNoaWNrZW53aW5nLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxMCU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjEyJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPgogICAgICAgICAgPGxpPjxzdHJvbmc+RXhwbGFuYXRvcnkgRGlhZ3JhbXM8L3N0cm9uZz46IEV4cGxhbmF0b3J5IGRpYWdyYW1zIGNhbiBiZSB1c2VkIDxlbT53aXRob3V0IHBlcm1pc3Npb248L2VtPiBhcyBsb25nIGFzIHRoZXkgYXJlIGJlaW5nIHVzZWQgaW4gYW4gQXBhY2hlIFRpbmtlclBvcCByZWxhdGVkIGNvbnRleHQsIGl0IGlzIGFja25vd2xlZGdlZCB0aGF0IHRoZXkgYXJlIHRyYWRlbWFya3Mgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uL0FwYWNoZSBUaW5rZXJQb3AsIGFuZCBhcmUgYmVpbmcgdXNlZCBmb3IgdGVjaG5pY2FsIGV4cGxhbmF0b3J5IHB1cnBvc2VzLjwvbGk+Ci0gICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9vbGFwLXRyYXZlcnNhbC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjIlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIyJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZmxhdC1tYXAtbGFtYmRhLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxNSU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L2FkamFjZW5jeS1saXN0LnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoyMiU7Ii8+CisgICAgICAgICA8aW1nIHNyYz0iaW1nL3BvbGljeS9vbGFwLXRyYXZlcnNhbC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjIlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIyJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvZmxhdC1tYXAtbGFtYmRhLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxNSU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2FkamFjZW5jeS1saXN0LnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoyMiU7Ii8+CiAgICAgICAgICA8bGk+PHN0cm9uZz5DaGFyYWN0ZXIgU2NlbmUgR3JhcGhpY3M8L3N0cm9uZz46IENoYXJhY3RlciBzY2VuZSBncmFwaGljcyA8dT48ZW0+cmVxdWlyZSBwZXJtaXNzaW9uPC9lbT48L3U+IGJlZm9yZSBiZWluZyB1c2VkLiBQbGVhc2UgYXNrIGZvciBwZXJtaXNzaW9uIG9uIHRoZSBBcGFjaGUgVGlua2VyUG9wIDxhIGhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvaW5jdWJhdG9yLXRpbmtlcnBvcC1kZXYvIj5kZXZlbG9wZXIgbWFpbGluZyBsaXN0PC9hPi48L2xpPgotICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvdGlua2VycG9wLXJlYWRpbmcucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS90aW5rZXJwb3AzLXNwbGFzaC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPgorICAgICAgICAgPGltZyBzcmM9ImltZy9wb2xpY3kvdGlua2VycG9wLXJlYWRpbmcucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS90aW5rZXJwb3AzLXNwbGFzaC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPgogICAgICAgPC91bD4KICAgIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9wcm92aWRlcnMuaHRtbCBiL2RvY3Mvc2l0ZS9ob21lL3Byb3ZpZGVycy5odG1sCmluZGV4IDhkZTI4ZmYuLmViYTkyY2IgMTAwNjQ0Ci0tLSBhL2RvY3Mvc2l0ZS9ob21lL3Byb3ZpZGVycy5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL3Byb3ZpZGVycy5odG1sCkBAIC0xNCw3ICsxNCw3IEBACiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC0tPgotPGltZyBzcmM9ImltYWdlcy90aW5rZXJwb3AtbWVldGluZy1yb29tLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiAvPgorPGltZyBzcmM9ImltZy90aW5rZXJwb3AtbWVldGluZy1yb29tLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiAvPgogPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9Imhlcm8tdW5pdCIgc3R5bGU9InBhZGRpbmc6MTBweCI+CiAgICAgICA8Yj48Zm9udCBzaXplPSI1IiBmYWNlPSJhbWVyaWNhbiB0eXBld3JpdGVyIj5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvZm9udD48L2I+CkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0yIGNvbC1tZC0yIj4KLSAgICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvcGVvbi1oZWFkLnBuZyIgd2lkdGg9IjEwMHB4Ij4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvcGVvbi1oZWFkLnBuZyIgd2lkdGg9IjEwMHB4Ij4KICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgICAgIE1vcmVvdmVyLCB0aGV5IG9ubHkgbmVlZCB0byBjb25jZXJuIHRoZW1zZWx2ZXMgd2l0aCBsZWFybmluZyB0aGUgR3JlbWxpbiB0cmF2ZXJzYWwgbGFuZ3VhZ2UgYXMgZXZlcnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtIHN1cHBvcnRzIEdyZW1saW4uCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS00IGNvbC1tZC00Ij4KLSAgICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvdGlua2VyYmxvY2tzLnBuZyIgc3R5bGU9IndpZHRoOjEwMCUiPgorICAgICAgICAgICAgPGltZyBzcmM9ImltZy90aW5rZXJibG9ja3MucG5nIiBzdHlsZT0id2lkdGg6MTAwJSI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KQEAgLTc1LDcgKzc1LDcgQEAKICAgICAgICAgIDxici8+CiAgICAgICAgICA8bGk+PHN0cm9uZz5UaGUgR3JhcGhDb21wdXRlciAob3B0aW9uYWwpPC9zdHJvbmc+OiBBbGwgT0xBUC1iYXNlZCBncmFwaCBwcm9jZXNzb3JzIG11c3QgaW1wbGVtZW50IHRoZSBwcmltYXJ5IGdyYXBoIGludGVyZmFjZXMgbWVudGlvbmVkIGFib3ZlIGFzIHdlbGwgYXMgYSBzZXQgb2YgcGFyYWxsZWwtcHJvY2Vzc2luZwogICAgICAgICAgICAgbWVzc2FnZS1wYXNzaW5nIGludGVyZmFjZXMuIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIGZvciBhIGRhdGEgc3lzdGVtIHRvIG9ubHkgaW1wbGVtZW50IHRoZSBwcmltYXJ5IGdyYXBoIGludGVyZmFjZXMgYW5kIHN0aWxsIHByb3ZpZGUgT0xBUCBzdXBwb3J0IHRvIHRoZWlyIHVzZXJzIGJ5IGludGVncmF0aW5nIHRoZWlyCi0gICAgICAgICAgICBzeXN0ZW0gd2l0aCBhbiBleGlzdGluZyA8Y29kZT5HcmFwaENvbXB1dGVyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBzdWNoIGFzLCBmb3IgZXhhbXBsZSwgPGNvZGU+U3BhcmtHcmFwaENvbXB1dGVyPC9jb2RlPiBvciA8Y29kZT5HaXJhcGhHcmFwaENvbXB1dGVyPC9jb2RlPiAoYm90aCBhcmUgcHJvdmlkZWQgaW4gQXBhY2hlJ3MgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICBzeXN0ZW0gd2l0aCBhbiBleGlzdGluZyA8Y29kZT5HcmFwaENvbXB1dGVyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBzdWNoIGFzLCBmb3IgZXhhbXBsZSwgPGNvZGU+U3BhcmtHcmFwaENvbXB1dGVyPC9jb2RlPiAocHJvdmlkZWQgaW4gQXBhY2hlJ3MgZGlzdHJpYnV0aW9uCiAgICAgICAgICAgICBvZiBUaW5rZXJQb3ApLgogICAgICAgICAgPC9saT4KICAgICAgIDwvb2w+CkBAIC04OSw3ICs4OSw3IEBACiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+R3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZTwvc3Ryb25nPjogRXZlcnkgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGNvbXBpbGVzIHRvIGEgbGFuZ3VhZ2UgYWdub3N0aWMgPGEgaHJlZj0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnl0ZWNvZGUiPmJ5dGVjb2RlPC9hPiByZXByZXNlbnRhdGlvbi4gVGhhdCBieXRlY29kZSBpcyB1bHRpbWF0ZWx5IHRyYW5zbGF0ZWQgdG8gYSBtYWNoaW5lLXNwZWNpZmljIHRyYXZlcnNhbC4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbCBtYWNoaW5lIHRvIGV4ZWN1dGUgdGhhdCB0cmF2ZXJzYWwgYXMgYQogICAgICAgICAgICAgcmVhbC10aW1lIDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ubGluZV90cmFuc2FjdGlvbl9wcm9jZXNzaW5nIj5PTFRQPC9hPiBxdWVyeSBvciBhcyBhbiBhbmFseXRpYyA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PbmxpbmVfYW5hbHl0aWNhbF9wcm9jZXNzaW5nIj5PTEFQPC9hPiBxdWVyeSAob3IgYm90aCkuIE5vdGUgdGhhdCB0aGUgR3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZSBpcyBub3QgYm91bmQgdG8gdGhlIEdyZW1saW4gbGFuZ3VhZ2UuIEFueSBsYW5ndWFnZSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHRoZQotICAgICAgICAgICAgR3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZSBieSBzaW1wbHkgdHJhbnNsYXRpbmcgaXRzZWxmIHRvIEdyZW1saW4gYnl0ZWNvZGUuIEluIGZhY3QsIGNvbXBpbGVycyBjdXJyZW50bHkgZXhpc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90d2lsbWVzL3NxbC1ncmVtbGluIj5TUUw8L2E+IGFuZCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGt1cHBpdHovc3BhcnFsLWdyZW1saW4iPlNQQVJRTDwvYT4uIEhvd2V2ZXIsIHVzaW5nIGFsdGVybmF0aXZlIGxhbmd1YWdlcyBmb3IgZ3JhcGggY29tcHV0aW5nIGxlYWRzIHRvIHNpZ25pZmljYW50bHkgbW9yZSBjb21wbGljYXRlZCBxdWVyaWVzCisgICAgICAgICAgICBHcmVtbGluIHRyYXZlcnNhbCBtYWNoaW5lIGJ5IHNpbXBseSB0cmFuc2xhdGluZyBpdHNlbGYgdG8gR3JlbWxpbiBieXRlY29kZS4gSW4gZmFjdCwgY29tcGlsZXJzIGN1cnJlbnRseSBleGlzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3R3aWxtZXMvc3FsLWdyZW1saW4iPlNRTDwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+U1BBUlFMPC9hPi4gSG93ZXZlciwgdXNpbmcgYWx0ZXJuYXRpdmUgbGFuZ3VhZ2VzIGZvciBncmFwaCBjb21wdXRpbmcgbGVhZHMgdG8gc2lnbmlmaWNhbnRseSBtb3JlIGNvbXBsaWNhdGVkIHF1ZXJpZXMKICAgICAgICAgICAgIGFuZCB0eXBpY2FsbHkgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cHJlc3Npdml0eSBwcm92aWRlZCBieSBHcmVtbGluLgogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPlRpbmtlckdyYXBoPC9zdHJvbmc+OiBUaW5rZXJQb3AgcHJvdmlkZXMgYSBzaW1wbGUsIG5vbi10cmFuc2FjdGlvbmFsLCBpbi1tZW1vcnkgZ3JhcGggc3lzdGVtIGNhbGxlZCA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jdGlua2VyZ3JhcGgtZ3JlbWxpbiI+VGlua2VyR3JhcGg8L2E+LiBUaW5rZXJHcmFwaCBpcyB1c2VmdWwgZm9yIGV4cGxvcmluZyBncmFwaHMgdGhhdCBjYW4gZml0CkBAIC0xMDksMTEgKzEwOSw3IEBACiAgICAgICAgICAgICBpbnRvIGEgQmlnKEdyYXBoKURhdGEgcHJvY2Vzc29yIHZpYSB0aGUgT0xBUCBjb21wb25lbnQgb2YgdGhlIEdyZW1saW4gdHJhdmVyc2FsIG1hY2hpbmUuIFVzZXJzIGRvIG5vdCBoYXZlIHRvIGxlYXJuIFNwYXJrJ3MgZGF0YSBwcm9jZXNzaW5nIGxhbmd1YWdlIGFzIEdyZW1saW4gdHJhdmVyc2FscyBleGVjdXRlCiAgICAgICAgICAgICBvdmVyIFNwYXJrLiBGb3IgZ3JhcGggc3lzdGVtIHByb3ZpZGVycywgdGhleSBjYW4gYm9hc3QgU3BhcmsgaW50ZWdyYXRpb24gb25jZSBhIGN1c3RvbSA8Y29kZT5JbnB1dFJERDwvY29kZT4gKG9yIDxjb2RlPklucHV0Rm9ybWF0PC9jb2RlPikgaXMgZGV2ZWxvcGVkLgogICAgICAgICAgPC9saT4KLSAgICAgICAgIDxsaT48c3Ryb25nPkdpcmFwaEdyYXBoQ29tcHV0ZXI8L3N0cm9uZz46IDxhIGhyZWY9Imh0dHA6Ly9naXJhcGguYXBhY2hlLm9yZy8iPkFwYWNoZSBHaXJhcGg8L2E+JnRyYWRlOyBpcyBhIEJpZyhHcmFwaClEYXRhIHByb2Nlc3NvciB0aGF0IGxldmVyYWdlcyA8YSBocmVmPSJodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvIj5BcGFjaGUgSGFkb29wPC9hPiZyZWc7IGFuZAotICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3pvb2tlZXBlci5hcGFjaGUub3JnLyI+QXBhY2hlIFpvb0tlZXBlcjwvYT4mdHJhZGU7IGZvciBleGVjdXRpbmcgZGlzdHJpYnV0ZWQgZ3JhcGggYWxnb3JpdGhtcy4gPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dpcmFwaGdyYXBoY29tcHV0ZXIiPjxjb2RlPkdpcmFwaEdyYXBoQ29tcHV0ZXI8L2NvZGU+PC9hPgotICAgICAgICAgICAgc3VwcG9ydHMgR3JlbWxpbiBPTEFQIGFuZCBhbGxvd3MgdXNlcnMgdG8gc3VibWl0IEdyZW1saW4gdHJhdmVyc2FscyB0byBHaXJhcGggZm9yIGRpc3RyaWJ1dGVkIGV4ZWN1dGlvbi4gUHJvdmlkZXJzIGNhbiBpbW1lZGlhdGVseSBhZHZlcnRpc2UgR2lyYXBoIGludGVncmF0aW9uIG9uY2UgYSBjdXN0b20gPGNvZGU+SW5wdXRGb3JtYXQ8L2NvZGU+IGlzIGRldmVsb3BlZC4KLSAgICAgICAgIDwvbGk+Ci0gICAgICAgICA8bGk+PHN0cm9uZz5IYWRvb3Agc3VwcG9ydDwvc3Ryb25nPjogPGEgaHJlZj0iaHR0cDovL2hhZG9vcC5hcGFjaGUub3JnLyI+QXBhY2hlIEhhZG9vcDwvYT4mcmVnOyBoYXMgYmVjb21lIGEgc3RhcGxlIHRlY2hub2xvZ3kgZm9yIEJpZyBEYXRhIGFwcGxpY2F0aW9ucy4gSW4gVGlua2VyUG9wLCBib3RoIDxjb2RlPlNwYXJrR3JhcGhDb21wdXRlcjwvY29kZT4gYW5kIDxjb2RlPkdpcmFwaEdyYXBoQ29tcHV0ZXI8L2NvZGU+IGNhbiBwdWxsIGRhdGEKKyAgICAgICAgIDxsaT48c3Ryb25nPkhhZG9vcCBzdXBwb3J0PC9zdHJvbmc+OiA8YSBocmVmPSJodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvIj5BcGFjaGUgSGFkb29wPC9hPiZyZWc7IGhhcyBiZWNvbWUgYSBzdGFwbGUgdGVjaG5vbG9neSBmb3IgQmlnIERhdGEgYXBwbGljYXRpb25zLiBJbiBUaW5rZXJQb3AsIDxjb2RlPlNwYXJrR3JhcGhDb21wdXRlcjwvY29kZT4gY2FuIHB1bGwgZGF0YQogICAgICAgICAgICAgZnJvbSB0aGUgSGFkb29wIEZpbGUgU3lzdGVtICg8YSBocmVmPSJodHRwczovL2hhZG9vcC5hcGFjaGUub3JnL2RvY3Mvc3RhYmxlL2hhZG9vcC1wcm9qZWN0LWRpc3QvaGFkb29wLWhkZnMvSGRmc1VzZXJHdWlkZS5odG1sIj5IREZTPC9hPikuIFRpbmtlclBvcCBwcm92aWRlcyBhIGNvbGxlY3Rpb24gb2YgSW5wdXQtIGFuZCBPdXRwdXRGb3JtYXRzIGZvciBkaWZmZXJlbnQgZ3JhcGggc2VyaWFsaXphdGlvbiBzdGFuZGFyZHMgYXMgd2VsbCBhcyB0b29saW5nIHRoYXQgbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMKICAgICAgICAgICAgIHRvIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNpbnRlcmFjdGluZy13aXRoLWhkZnMiPmludGVyYWN0IHdpdGggSERGUzwvYT4gZnJvbSB0aGUgR3JlbWxpbiBDb25zb2xlIG9yIHRoZWlyIGFwcGxpY2F0aW9uLgogICAgICAgICAgPC9saT4KQEAgLTEyOCw3NCArMTI0LDY3IEBACiAgICAgICA8YnIvPgogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9ibGF6ZWdyYXBoLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvYmxhemVncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9ibGF6ZWdyYXBoLmNvbS8iPkJsYXplZ3JhcGg8L2E+JnRyYWRlOyBpcyBhIHN0YW5kYXJkcy1iYXNlZCwgaGlnaC1wZXJmb3JtYW5jZSwgc2NhbGFibGUsIG9wZW4tc291cmNlIGdyYXBoIGRhdGFiYXNlLiBXcml0dGVuIGVudGlyZWx5IGluIEphdmEsIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBBcGFjaGUgVGlua2VyUG9wIGFuZCBSREYvU1BBUlFMIDEuMSBmYW1pbHkgb2Ygc3BlY2lmaWNhdGlvbnMuICBBIGNvbW1lcmNpYWwgdmVyc2lvbiBpbmNsdWRlcyBHUFUgYWNjZWxlcmF0aW9uLgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9uZXB0dW5lLyI+PGltZyBzcmM9ImltZy9sb2dvcy9uZXB0dW5lLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9uZXB0dW5lLyI+QW1hem9uIE5lcHR1bmU8L2E+IGlzIGEgZmFzdCwgcmVsaWFibGUsIGZ1bGx5LW1hbmFnZWQgZ3JhcGggZGF0YWJhc2Ugc2VydmljZSB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gYnVpbGQgYW5kIHJ1biBhcHBsaWNhdGlvbnMgdGhhdCB3b3JrIHdpdGggaGlnaGx5IGNvbm5lY3RlZCBkYXRhc2V0cy4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgY29sLW1kLTYiPgotICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvY29zbW9zLWRiL2dyYXBoLWludHJvZHVjdGlvbiI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9jb3Ntb3NkYi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2Nvc21vcy1kYi9ncmFwaC1pbnRyb2R1Y3Rpb24iPjxpbWcgc3JjPSJpbWcvbG9nb3MvY29zbW9zZGItbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9jb3Ntb3MtZGIvZ3JhcGgtaW50cm9kdWN0aW9uIj5BenVyZSBDb3Ntb3MgREI8L2E+JnRyYWRlOyBpcyBNaWNyb3NvZnQncyBnbG9iYWxseSBkaXN0cmlidXRlZCwgbXVsdGktbW9kZWwgZGF0YWJhc2Ugc2VydmljZSBmb3IgbWlzc2lvbi1jcml0aWNhbCBhcHBsaWNhdGlvbnMuIEF6dXJlIENvc21vcyBEQiBwcm92aWRlcyB0dXJuLWtleSBnbG9iYWwgZGlzdHJpYnV0aW9uLCBlbGFzdGljIHNjYWxpbmcgb2YgdGhyb3VnaHB1dCBhbmQgc3RvcmFnZSB3b3JsZHdpZGUsIGZpdmUgd2VsbC1kZWZpbmVkIGNvbnNpc3RlbmN5IGxldmVscywgYW5kIGd1YXJhbnRlZWQgaGlnaCBhdmFpbGFiaWxpdHksIGFsbCBiYWNrZWQgYnkgaW5kdXN0cnktbGVhZGluZyBTTEFzLiBJdCBpcyBtdWx0aS1tb2RlbCB3aXRoIHN1cHBvcnQgZm9yIHRoZSBHcmVtbGluIGdyYXBoIHRyYXZlcnNhbCBsYW5ndWFnZS4KICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICAgICA8YnIvPgogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGF0YXN0YXguY29tL3Byb2R1Y3RzL2RhdGFzdGF4LWVudGVycHJpc2UtZ3JhcGgiPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvZGF0YXN0YXgtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGF0YXN0YXguY29tL3Byb2R1Y3RzL2RhdGFzdGF4LWVudGVycHJpc2UtZ3JhcGgiPjxpbWcgc3JjPSJpbWcvbG9nb3MvZGF0YXN0YXgtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGF0YXN0YXguY29tL3Byb2R1Y3RzL2RhdGFzdGF4LWVudGVycHJpc2UtZ3JhcGgiPkRhdGFTdGF4IEVudGVycHJpc2UgR3JhcGg8L2E+JnRyYWRlOywgcGFydCBvZiBEYXRhU3RheCBFbnRlcnByaXNlJ3MgbXVsdGktbW9kZWwgcGxhdGZvcm0sIGlzIGEgcmVhbC10aW1lIGdyYXBoIGRhdGFiYXNlIGJ1aWx0IGZvciBjbG91ZCBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIG1hbmFnZSBjb21wbGV4IGFuZCBoaWdobHkgY29ubmVjdGVkIGRhdGEuIEJ1aWx0IG9uIHRoZSBmb3VuZGF0aW9uIG9mIEFwYWNoZSBDYXNzYW5kcmEgYW5kIEFwYWNoZSBUaW5rZXJQb3AsIERhdGFTdGF4IEVudGVycHJpc2UgR3JhcGggZGVsaXZlcnMgY29udGludW91cyB1cHRpbWUgYWxvbmcgd2l0aCBwcmVkaWN0YWJsZSBwZXJmb3JtYW5jZSBhbmQgc2NhbGUsIHdoaWxlIHJlbWFpbmluZyBvcGVyYXRpb25hbGx5IHNpbXBsZSB0byBtYW5hZ2UuCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ3Jha24uYWkvIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyYWtuLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9ncmFrbi5haS8iPjxpbWcgc3JjPSJpbWcvbG9nb3MvZ3Jha24tbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dyYWtuLmFpLyI+R1JBS04uQUk8L2E+JnRyYWRlOyBpcyBhIGRpc3RyaWJ1dGVkIGtub3dsZWRnZSBncmFwaCB0aGF0IGJyaW5ncyBrbm93bGVkZ2Ugb250b2xvZ2llcyBhbmQgdHJhbnNhY3Rpb25hbCBkYXRhIHRvZ2V0aGVyIHRvIGVuYWJsZSBpbnRlbGxpZ2VudCBxdWVyeWluZyBvZiBkYXRhLiBRdWVyeWluZyBpcyBwZXJmb3JtZWQgdGhyb3VnaCB0aGUgbGFuZ3VhZ2U6IEdyYXFsLCBhIGRlY2xhcmF0aXZlLCBrbm93bGVkZ2Utb3JpZW50ZWQgZ3JhcGggcXVlcnkgbGFuZ3VhZ2UgZm9yIHJldHJpZXZpbmcgZXhwbGljaXRseSBzdG9yZWQgYW5kIGltcGxpY2l0bHkgZGVyaXZlZCBpbmZvcm1hdGlvbiwgYXMgd2VsbCBhcyB0byBwZXJmb3JtIGdyYXBoIGFuYWx5dGljcyBhbmQgYXV0b21hdGVkIHJlYXNvbmluZy4KICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICAgICA8YnIvPgogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9hbmFseXRpY3MvdXMvZW4vdGVjaG5vbG9neS9jbG91ZC1kYXRhLXNlcnZpY2VzL2dyYXBoLyI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9pYm1ncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9hbmFseXRpY3MvdXMvZW4vdGVjaG5vbG9neS9jbG91ZC1kYXRhLXNlcnZpY2VzL2dyYXBoLyI+SUJNIEdyYXBoPC9hPiZ0cmFkZTsgaXMgYSBzY2FsYWJsZSwgZWFzeS10by11c2UsIGZ1bGx5LW1hbmFnZWQgZ3JhcGggZGF0YWJhc2UtYXMtYS1zZXJ2aWNlIHRoYXQgaXMgYWRtaW5pc3RlcmVkIHRocm91Z2ggSUJNJ3MgQmx1ZW1peCBjbG91ZCBwbGF0Zm9ybS4gSUJNIEdyYXBoIGlzIGF2YWlsYWJsZSAyNC83IGFuZCBtYW5hZ2VkIGJ5IGEgdGVhbSBvZiBleHBlcnRzIHNvIGRldmVsb3BlcnMgY2FuIGZvY3VzIG9uIGJ1aWxkaW5nIHRoZWlyIGFwcGxpY2F0aW9uLiBCYXNlZCBvbiB0aGUgQXBhY2hlIFRpbmtlclBvcCBzdGFjayBmb3IgYnVpbGRpbmcgaGlnaC1wZXJmb3JtYW5jZSBncmFwaCBhcHBsaWNhdGlvbnMsIElCTSBHcmFwaCBwcm92aWRlcyB1c2VycyB3aXRoIGEgc2V0IG9mIHNpbXBsaWZpZWQgSFRUUCBBUEkgY2FsbHMgYW5kIHRoZSBHcmVtbGluIGdyYXBoIHRyYXZlcnNhbCBsYW5ndWFnZS4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY29tcG9zZS5jb20vZGF0YWJhc2VzL2phbnVzZ3JhcGgiPjxpbWcgc3JjPSJpbWcvbG9nb3MvaWJtLWNvbXBvc2UtamFudXNncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIElCTSZyZWc7IDxhIGhyZWY9Imh0dHBzOi8vY29tcG9zZS5jb20vZGF0YWJhc2VzL2phbnVzZ3JhcGgiPkNvbXBvc2UgZm9yIEphbnVzR3JhcGg8L2E+IHByb3ZpZGVzIGEgZnVsbHktbWFuYWdlZCwgaGlnaGx5LWF2YWlsYWJsZSwgYW5kIHByb2R1Y3Rpb24tcmVhZHkgSmFudXNHcmFwaCBvbiBBV1MsIEdDUCBvciBJQk0gQ2xvdWQuIERlcGxveWVkIGluIG1pbnV0ZXMsIGV2ZXJ5IEphbnVzR3JhcGggZGVwbG95bWVudCBvbiBDb21wb3NlIGlzIGJ1aWx0IHdpdGggaGlnaGx5IGF2YWlsYWJsZSBzdG9yYWdlIGFuZCBncmFwaCBlbmdpbmVzLiBUaGUgSmFudXNHcmFwaCBTdG9yYWdlIGVuZ2luZSBpcyBhIGNsdXN0ZXIgb2YgdGhlIFNjeWxsYSBkYXRhYmFzZS4gQXMgdXNhZ2UgaW5jcmVhc2VzIG9yIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cyBjaGFuZ2UsIHVzZXJzIGNhbiB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseSBzY2FsZSB0aGUgSmFudXNHcmFwaCBFbmdpbmUgYW5kIFN0b3JhZ2UgdG8gaW5jcmVhc2UgdGhyb3VnaHB1dCBvciBzdG9yYWdlLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYW51c2dyYXBoLm9yZy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvamFudXNncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2phbnVzZ3JhcGgub3JnLyI+SmFudXNHcmFwaDwvYT4gaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBzY2FsYWJsZSwgZGlzdHJpYnV0ZWQgZ3JhcGggZGF0YWJhc2Ugb3B0aW1pemVkIGZvciBzdG9yaW5nIGFuZCBxdWVyeWluZyBncmFwaHMgY29udGFpbmluZyBodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiB2ZXJ0aWNlcyBhbmQgZWRnZXMgZGlzdHJpYnV0ZWQgYWNyb3NzIGEgbXVsdGktbWFjaGluZSBjbHVzdGVyLiBKYW51c0dyYXBoIGlzIGEgdHJhbnNhY3Rpb25hbCBkYXRhYmFzZSB0aGF0IGNhbiBzdXBwb3J0IHRob3VzYW5kcyBvZiBjb25jdXJyZW50IHVzZXJzIGV4ZWN1dGluZyBjb21wbGV4IEdyZW1saW4gdHJhdmVyc2FscyBpbiByZWFsIHRpbWUuIEphbnVzR3JhcGggYWxzbyBwcm92aWRlcyBhbiBpbi1tZW1vcnksIGNvbXByZXNzaW9uLWJhc2VkIE9MQVAgcHJvY2Vzc29yIGFzIHdlbGwgYXMgaW50ZWdyYXRlcyB3aXRoIEFwYWNoZSBUaW5rZXJQb3AncyBTcGFyay9HaXJhcGggT0xBUCBwcm9jZXNzb3JzLgorICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vamFudXNncmFwaC5vcmcvIj48aW1nIHNyYz0iaW1nL2xvZ29zL2phbnVzZ3JhcGgtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYW51c2dyYXBoLm9yZy8iPkphbnVzR3JhcGg8L2E+JnJlZzsgaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBzY2FsYWJsZSwgZGlzdHJpYnV0ZWQgZ3JhcGggZGF0YWJhc2Ugb3B0aW1pemVkIGZvciBzdG9yaW5nIGFuZCBxdWVyeWluZyBncmFwaHMgY29udGFpbmluZyBodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiB2ZXJ0aWNlcyBhbmQgZWRnZXMgZGlzdHJpYnV0ZWQgYWNyb3NzIGEgbXVsdGktbWFjaGluZSBjbHVzdGVyLiBKYW51c0dyYXBoIGlzIGEgdHJhbnNhY3Rpb25hbCBkYXRhYmFzZSB0aGF0IGNhbiBzdXBwb3J0IHRob3VzYW5kcyBvZiBjb25jdXJyZW50IHVzZXJzIGV4ZWN1dGluZyBjb21wbGV4IEdyZW1saW4gdHJhdmVyc2FscyBpbiByZWFsIHRpbWUuIEphbnVzR3JhcGggYWxzbyBwcm92aWRlcyBhbiBpbi1tZW1vcnksIGNvbXByZXNzaW9uLWJhc2VkIE9MQVAgcHJvY2Vzc29yIGFzIHdlbGwgYXMgaW50ZWdyYXRlcyB3aXRoIEFwYWNoZSBUaW5rZXJQb3AncyBTcGFyayBPTEFQIHByb2Nlc3NvcnMuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jYW1icmlkZ2UtaW50ZWxsaWdlbmNlLmNvbS9rZXlsaW5lcy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3Mva2V5bGluZXMtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jYW1icmlkZ2UtaW50ZWxsaWdlbmNlLmNvbS9rZXlsaW5lcy8iPjxpbWcgc3JjPSJpbWcvbG9nb3Mva2V5bGluZXMtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jYW1icmlkZ2UtaW50ZWxsaWdlbmNlLmNvbS9rZXlsaW5lcy8iPktleUxpbmVzPC9hPiZ0cmFkZTsgaXMgYW4gQXBhY2hlIFRpbmtlclBvcCBhbmQgR3JlbWxpbiBjb21wYXRpYmxlIEphdmFTY3JpcHQgU0RLIGZvciBxdWlja2x5IGFuZCBlYXNpbHkgYnVpbGRpbmcgcG93ZXJmdWwsIGN1c3RvbSBhbmQgc2NhbGFibGUgZ3JhcGggdmlzdWFsaXphdGlvbiBhcHBsaWNhdGlvbnMuIFRoZSBLZXlMaW5lcyBTREsgb2ZmZXJzIGEgcmljaCBsaWJyYXJ5IG9mIGZ1bmN0aW9uYWxpdHkgdG8gaGVscCB5b3UgdmlzdWFsaXplIGFuZCBleHBsb3JlIHRoZSBkYXRhIGluIHlvdXIgZ3JhcGggZGF0YWJhc2UsIGluY2x1ZGluZyBncmFwaCBsYXlvdXRzLCBzb2NpYWwgbmV0d29yayBhbmFseXNpcyBtZWFzdXJlcywgZmlsdGVyaW5nLCB0ZW1wb3JhbCBncmFwaCB2aXN1YWxpemF0aW9uIGFuZCBnZW9zcGF0aWFsIGdyYXBoIGFuYWx5c2lzLiBJdCBhbGxvd3MgdGhlIHZpc3VhbGl6YXRpb24gb2YgY29tcGxleCBncmFwaCBkYXRhIGF0IHNjYWxlLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9saW5rdXJpby51cy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvbGlua3VyaW91cy1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2xpbmt1cmlvLnVzLyI+PGltZyBzcmM9ImltZy9sb2dvcy9saW5rdXJpb3VzLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vbGlua3VyaW8udXMvIj5MaW5rdXJpb3VzPC9hPiZ0cmFkZTsgaXMgYSBicm93c2VyLWJhc2VkIGdyYXBoIHZpc3VhbGl6YXRpb24gc29mdHdhcmUgdG8gc2VhcmNoLCBleHBsb3JlIGFuZCB2aXN1YWxpemUgY29ubmVjdGVkIGRhdGEuIEl0IGlzIGNvbXBhdGlibGUgd2l0aCBBcGFjaGUgVGlua2VyUG9wIGFuZCB0aHVzLCBhbnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLiBMaW5rdXJpb3VzIHByb3ZpZGVzIGVudGVycHJpc2UtcmVhZHkgc2VjdXJpdHkgKGF1dGhlbnRpY2F0aW9uLCBhY2Nlc3MgcmlnaHRzLCBhdWRpdCkgYW5kIGZsZXhpYmlsaXR5IChBUEksIGxpbmt1cmlvdXMuanMgSlMgZ3JhcGggdmlzdWFsaXphdGlvbiBsaWJyYXJ5KSB0byBoZWxwIHNvZnR3YXJlIGFyY2hpdGVjdHMgc3VjY2Vzc2Z1bGx5IGRlcGxveSBncmFwaCBjYXBhYmlsaXRpZXMgd2l0aGluIHRoZWlyIG9yZ2FuaXphdGlvbnMuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9uZW80ai5jb20vIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL25lbzRqLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vbmVvNGouY29tLyI+PGltZyBzcmM9ImltZy9sb2dvcy9uZW80ai1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL25lbzRqLmNvbS8iPk5lbzRqPC9hPiZ0cmFkZTsgaXMgdGhlIG1vc3Qgd2lkZWx5IHVzZWQgb3BlbiBzb3VyY2UsIHRyYW5zYWN0aW9uYWwgZ3JhcGggZGF0YWJhc2Ugd2l0aCBhIGxhcmdlIGFjdGl2ZSB1c2VyIGFuZCBjdXN0b21lciBjb21tdW5pdHkuIEJlY2F1c2Ugb2YgaXRzIHNjYWxhYmlsaXR5IGFuZCBlYXNlIG9mIHVzZSwgTmVvNGogaXMgYXBwbGllZCBpbiBhIHdpZGUgdmFyaWV0eSBvZiB1c2UgY2FzZXMgZnJvbSBmcmF1ZCBkZXRlY3Rpb24sIGFjY2VzcyBjb250cm9sIHRvIHJlY29tbWVuZGF0aW9uIGFuZCBpbnZlc3RpZ2F0aXZlIGpvdXJuYWxpc20uIEFsb25nIHdpdGggdGhlIG9wZW5DeXBoZXIgZ3JhcGggcXVlcnkgbGFuZ3VhZ2UsIE5lbzRqIGFsc28gc3VwcG9ydHMgQXBhY2hlIFRpbmtlclBvcCBhbmQgY3VycmVudGx5IHNlcnZlcyBhcyBpdHMgT0xUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL29yaWVudGRiLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3Mvb3JpZW50ZGItbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9vcmllbnRkYi5jb20vIj48aW1nIHNyYz0iaW1nL2xvZ29zL29yaWVudGRiLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vb3JpZW50ZGIuY29tLyI+T3JpZW50REI8L2E+JnRyYWRlOyBpcyBhbiBvcGVuIHNvdXJjZSBkaXN0cmlidXRlZCBncmFwaCBkYXRhYmFzZSB3aXRoIG5hdGl2ZSBzdXBwb3J0IGZvciBBcGFjaGUgVGlua2VyUG9wIGFuZCB0aGUgR3JlbWxpbiBncmFwaCB0cmF2ZXJzYWwgbGFuZ3VhZ2UuIE9yaWVudERCIGhhbmRsZXMgcmVsYXRpb25zaGlwcyBieSB1c2luZyBwZXJzaXN0ZW50IHBvaW50ZXJzLCByYXRoZXIgdGhhbiBleHBlbnNpdmUgam9pbiBydW50aW1lIG9wZXJhdGlvbnMuIFRoaXMgZ3VhcmFudGVlcyBhIGZhc3QsIGNvbnN0YW50IE8oMSkgdGltZSBmb3IgdHJhdmVyc2luZywgbm8gbWF0dGVyIHRoZSBkYXRhYmFzZSBzaXplLiBGdXJ0aGVybW9yZSwgT3JpZW50REIgaXMgbm90IG9ubHkgYSBncmFwaCBkYXRhYmFzZSwgYnV0IGEgbXVsdGktbW9kZWwgZGF0YWJhc2UgYWJsZSB0byBtYW5hZ2UgZG9jdW1lbnRzLCBrZXlzL3ZhbHVlcywgb2JqZWN0cywgZnVsbC10ZXh0IGFuZCBzcGF0aWFsIGRhdGEuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9zdGFyZG9nLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3Mvc3RhcmRvZy1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3N0YXJkb2cuY29tLyI+PGltZyBzcmM9ImltZy9sb2dvcy9zdGFyZG9nLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vc3RhcmRvZy5jb20vIj5TdGFyZG9nPC9hPiZ0cmFkZTsgaXMgYSBncmFwaCBkYXRhYmFzZSBvcHRpbWl6ZWQgZm9yIGVudGVycHJpc2UgZGF0YSB1bmlmaWNhdGlvbi4gSXQgc3VwcG9ydHMgYm90aCBzZW1hbnRpYyBncmFwaHMsIHZpYSBSREYsIFNQQVJRTCwgYW5kIE9XTCwgYXMgd2VsbCBhcyBwcm9wZXJ0eSBncmFwaHMgdmlhIEFwYWNoZSBUaW5rZXJQb3AgYW5kIEdyZW1saW4tLWl0J3MgdGhlIG9ubHkgZ3JhcGggZGF0YWJhc2UgdGhhdCBzdXBwb3J0cyBib3RoIG1vZGVscyBvdmVyIHRoZSBzYW1lIGRhdGFiYXNlLCBzaW11bHRhbmVvdXNseS4gU3RhcmRvZyBhbHNvIHN1cHBvcnRzIGh5YnJpZCBkYXRhIHVuaWZpY2F0aW9uIGFyY2hpdGVjdHVyZXMsIHNlYW1sZXNzbHkgYmxlbmRpbmcgZGF0YSB3YXJlaG91c2UsIHN5c3RlbSBvZiByZWNvcmQsIGFuZCB2aXJ0dWFsIHF1ZXJ5IHN0cmF0ZWdpZXMuIFN0YXJkb2cgaXMgc3VpdGVkIGZvciBlbnRlcnByaXNlIGRhdGEgc2lsbyBjaGFsbGVuZ2VzLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aXRhbi50aGlua2F1cmVsaXVzLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvdGl0YW4tbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aXRhbi50aGlua2F1cmVsaXVzLmNvbS8iPlRpdGFuPC9hPiZ0cmFkZTsgaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBzY2FsYWJsZSwgZGlzdHJpYnV0ZWQgZ3JhcGggZGF0YWJhc2Ugb3B0aW1pemVkIGZvciBzdG9yaW5nIGFuZCBxdWVyeWluZyBncmFwaHMgY29udGFpbmluZyBodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiB2ZXJ0aWNlcyBhbmQgZWRnZXMgZGlzdHJpYnV0ZWQgYWNyb3NzIGEgbXVsdGktbWFjaGluZSBjbHVzdGVyLiBUaXRhbiBpcyBhIHRyYW5zYWN0aW9uYWwgZGF0YWJhc2UgdGhhdCBjYW4gc3VwcG9ydCB0aG91c2FuZHMgb2YgY29uY3VycmVudCB1c2VycyBleGVjdXRpbmcgY29tcGxleCBHcmVtbGluIHRyYXZlcnNhbHMgaW4gcmVhbCB0aW1lLiBUaXRhbiBhbHNvIHByb3ZpZGVzIGFuIGluLW1lbW9yeSwgY29tcHJlc3Npb24tYmFzZWQgT0xBUCBwcm9jZXNzb3IgYXMgd2VsbCBhcyBpbnRlZ3JhdGVzIHdpdGggQXBhY2hlIFRpbmtlclBvcCdzIFNwYXJrL0dpcmFwaCBPTEFQIHByb2Nlc3NvcnMuCi0gICAgICAgICA8L2Rpdj4KLSAgICAgIDwvZGl2PgotICAgICAgPGJyLz4KLSAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90b21zYXd5ZXIuY29tL3Byb2R1Y3RzL3BlcnNwZWN0aXZlcy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvdG9tc2F3eWVyLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgotICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdG9tc2F3eWVyLmNvbS9wcm9kdWN0cy9wZXJzcGVjdGl2ZXMvIj5Ub20gU2F3eWVyIFBlcnNwZWN0aXZlczwvYT4mdHJhZGU7IGlzIGFkdmFuY2VkIGdyYXBoaWNzLWJhc2VkIHNvZnR3YXJlIGZvciBidWlsZGluZyBlbnRlcnByaXNlLWNsYXNzIGRhdGEgcmVsYXRpb25zaGlwIHZpc3VhbGl6YXRpb24gYW5kIGFuYWx5c2lzIGFwcGxpY2F0aW9ucy4gSXQgaXMgYSBjb21wbGV0ZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgd2l0aCBhIGdyYXBoaWNzLWJhc2VkIGRlc2lnbiBhbmQgcHJldmlldyBlbnZpcm9ubWVudC4gVG9tIFNhd3llciBQZXJzcGVjdGl2ZXMgY29tYmluZXMgdmlzdWFsaXphdGlvbiwgbGF5b3V0LCBhbmQgYW5hbHlzaXMgdGVjaG5vbG9neSB3aXRoIGFuIGVsZWdhbnQgcGxhdGZvcm0gYXJjaGl0ZWN0dXJlLiBUb20gU2F3eWVyIFBlcnNwZWN0aXZlcyBlbmFibGVzIGludGVyYWN0aW9uIHdpdGggZ3JhcGggZGF0YWJhc2Ugc3lzdGVtcyB2aWEgQXBhY2hlIFRpbmtlclBvcC4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90b21zYXd5ZXIuY29tL3Byb2R1Y3RzL3BlcnNwZWN0aXZlcy8iPjxpbWcgc3JjPSJpbWcvbG9nb3MvdG9tc2F3eWVyLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RvbXNhd3llci5jb20vcHJvZHVjdHMvcGVyc3BlY3RpdmVzLyI+VG9tIFNhd3llciBQZXJzcGVjdGl2ZXM8L2E+JnRyYWRlOyBpcyBhZHZhbmNlZCBncmFwaGljcy1iYXNlZCBzb2Z0d2FyZSBmb3IgYnVpbGRpbmcgZW50ZXJwcmlzZS1jbGFzcyBkYXRhIHJlbGF0aW9uc2hpcCB2aXN1YWxpemF0aW9uIGFuZCBhbmFseXNpcyBhcHBsaWNhdGlvbnMuIEl0IGlzIGEgY29tcGxldGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIHdpdGggYSBncmFwaGljcy1iYXNlZCBkZXNpZ24gYW5kIHByZXZpZXcgZW52aXJvbm1lbnQuIFRvbSBTYXd5ZXIgUGVyc3BlY3RpdmVzIGNvbWJpbmVzIHZpc3VhbGl6YXRpb24sIGxheW91dCwgYW5kIGFuYWx5c2lzIHRlY2hub2xvZ3kgd2l0aCBhbiBlbGVnYW50IHBsYXRmb3JtIGFyY2hpdGVjdHVyZS4gVG9tIFNhd3llciBQZXJzcGVjdGl2ZXMgZW5hYmxlcyBpbnRlcmFjdGlvbiB3aXRoIGdyYXBoIGRhdGFiYXNlIHN5c3RlbXMgdmlhIEFwYWNoZSBUaW5rZXJQb3AuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgPC9kaXY+CkBAIC0yMDYsNyArMTk1LDcgQEAKICAgICAgIDxici8+CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTMgY29sLW1kLTMiPgotICAgICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9ncmVtbGluLXF1aWxsLnBuZyIgc3R5bGU9IndpZHRoOjEwMCU7Ij4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvZ3JlbWxpbi1xdWlsbC5wbmciIHN0eWxlPSJ3aWR0aDoxMDAlOyI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05IGNvbC1tZC05Ij4KICAgICAgICAgICAgIFdpdGggdGhlIGdyb3d0aCBvZiA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob1NRTCI+Tm9TUUw8L2E+LCBmb3Igd2hpY2ggZ3JhcGggZGF0YWJhc2VzIGFyZSBhIHN1YmNsYXNzLCBtYW55IG5ldyBkYXRhYmFzZSBxdWVyeSBsYW5ndWFnZXMgaGF2ZSBiZWVuIGRldmVsb3BlZC4gU1FMIGhhcwpAQCAtMjMzLDcgKzIyMiw3IEBACiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOCBjb2wtbWQtOSI+CiAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgPHN0cm9uZz5EaXN0aW5jdCBxdWVyeSBsYW5ndWFnZTwvc3Ryb25nPjogUXVlcnkgbGFuZ3VhZ2VzIHN1Y2ggYXMgU1FMIGFuZCBTUEFSUUwgYXJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGZyb20gR3JlbWxpbiBpbiB0aGF0IHRoZXkgcmVxdWlyZSBhIHNwZWNpYWwgcHVycG9zZSBjb21waWxlciBpbiBvcmRlciB0bwotICAgICAgICAgICAgZ2VuZXJhdGUgYSB0cmF2ZXJzYWwuIEZvciB0aGlzIHJlYXNvbiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3R3aWxtZXMvc3FsLWdyZW1saW4iPlNRTDwvYT4gYW5kIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ka3VwcGl0ei9zcGFycWwtZ3JlbWxpbiI+U1BBUlFMPC9hPiBHcmVtbGluIGNvbXBpbGVycworICAgICAgICAgICAgZ2VuZXJhdGUgYSB0cmF2ZXJzYWwuIEZvciB0aGlzIHJlYXNvbiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3R3aWxtZXMvc3FsLWdyZW1saW4iPlNRTDwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+U1BBUlFMPC9hPiBHcmVtbGluIGNvbXBpbGVycwogICAgICAgICAgICAgY3VycmVudGx5IGV4aXN0LiBOb3RlIHRoYXQsIHdpdGhpbiByZWFzb24sIEdyZW1saW4gY29tcGlsZXJzIGRvIG5vdCBuZWVkIHRvIGNvbmNlcm4gdGhlbXNlbHZlcyB3aXRoIGFuIG9wdGltYWwgY29tcGlsYXRpb24gKG9ubHkgYSBzZW1hbnRpY2FsbHkgY29ycmVjdCBjb21waWxhdGlvbikgYXMgdGhlIEdyZW1saW4KICAgICAgICAgICAgIHRyYXZlcnNhbCBtYWNoaW5lIHdpbGwgbGV2ZXJhZ2UgdHJhdmVyc2FsIHN0cmF0ZWdpZXMgZm9yIGJvdGggY29tcGlsZS10aW1lIGFuZCBydW50aW1lIG9wdGltaXphdGlvbnMuIE1vcmVvdmVyLCB0aGUgbGFuZ3VhZ2UgZGVzaWduZXIgY2FuIHJlc3QgYXNzdXJlZCB0aGF0IHF1ZXJpZXMgaW4gdGhlaXIgbGFuZ3VhZ2UKICAgICAgICAgICAgIHdpbGwgYmUgYWJsZSB0byBldmFsdWF0ZSBhcyBlaXRoZXIgYW4gT0xUUCBvciBPTEFQIHF1ZXJ5LiBUaGUgZXhhbXBsZSBvbiB0aGUgcmlnaHQgaXMgYSBTUEFSUUwgcXVlcnkgdGhhdCBkZXRlcm1pbmVzIHRoZSBhdmVyYWdlIHJhdGluZyBmb3IgR3JlbWxpbidzIGZyaWVuZHMnIHByb2plY3RzLiBJdCBpcyBiZWNhdXNlCkBAIC0yODYsNDAgKzI3NSw0NCBAQAogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1jb25zb2xlIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyZW1saW4tZ3Jvb3Z5LWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tY29uc29sZSI+PGltZyBzcmM9ImltZy9sb2dvcy9ncmVtbGluLWdyb292eS1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNncmVtbGluLWNvbnNvbGUiPkdyZW1saW4tR3Jvb3Z5PC9hPiByZXByZXNlbnRzIEdyZW1saW4gaW5zaWRlIHRoZSBHcm9vdnkgbGFuZ3VhZ2UgYW5kIGNhbiBiZSBsZXZlcmFnZWQgYnkgYW55IEpWTS1iYXNlZCBwcm9qZWN0IGVpdGhlciB0aHJvdWdoIGdtYXZlbiBvciBpdHMgSlNSLTIyMyBTY3JpcHRFbmdpbmUgaW1wbGVtZW50YXRpb24uIEl0IGFsc28gc2VydmVzIGFzIHRoZSBHcmVtbGluIENvbnNvbGUgbGFuZ3VhZ2UuCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNfb25fZ3JlbWxpbl9sYW5ndWFnZV92YXJpYW50cyI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9ncmVtbGluLWphdmEtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jX29uX2dyZW1saW5fbGFuZ3VhZ2VfdmFyaWFudHMiPjxpbWcgc3JjPSJpbWcvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI19vbl9ncmVtbGluX2xhbmd1YWdlX3ZhcmlhbnRzIj5HcmVtbGluLUphdmE8L2E+IHJlcHJlc2VudHMgR3JlbWxpbiBpbnNpZGUgdGhlIEphdmE4IGxhbmd1YWdlLiBHcmVtbGluLUphdmEgaXMgY29uc2lkZXJlZCB0aGUgY2Fub25pY2FsLCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgR3JlbWxpbiBhbmQgaXMgdGhlIHByaW1hcnkgY29tcGlsZXIgZm9yIGFsbCBsYW1iZGEtZnJlZSBieXRlY29kZSBkdWUgdG8gaXRzIHNwZWVkIHJlbGF0aXZlIHRvIG90aGVyIHNjcmlwdC1iYXNlZCwgSlZNIHZhcmlhbnRzLgogICAgICAgICAgPC9kaXY+CiAgICAgICA8L2Rpdj4KICAgICAgIDxici8+CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgY29sLW1kLTYiPgotICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyZW1saW4tcHl0aG9uLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj48aW1nIHNyYz0iaW1nL2xvZ29zL2dyZW1saW4tcHl0aG9uLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj5HcmVtbGluLVB5dGhvbjwvYT4gcmVwcmVzZW50cyBHcmVtbGluIGluc2lkZSB0aGUgUHl0aG9uIGxhbmd1YWdlIGFuZCBjYW4gYmUgdXNlZCBieSBhbnkgUHl0aG9uIHZpcnR1YWwgbWFjaGluZSBzdWNoIGFzIENQeXRob24gYW5kIEp5dGhvbi4gR3JlbWxpbi1QeXRob24gdHJhdmVyc2FscyB0cmFuc2xhdGUgdG8gR3JlbWxpbiBieXRlY29kZSBmb3IgUmVtb3RlQ29ubmVjdGlvbiBleGVjdXRpb24gKGUuZy4gR3JlbWxpbiBTZXJ2ZXIpLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXBvbGxtZWllci9ncmVtbGluLXNjYWxhIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyZW1saW4tc2NhbGEtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1Eb3ROZXQiPjxpbWcgc3JjPSJpbWcvbG9nb3MvZ3JlbWxpbi1kb3RuZXQtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1Eb3ROZXQiPkdyZW1saW4uTmV0PC9hPiByZXByZXNlbnRzIEdyZW1saW4gaW5zaWRlIHRoZSBDIyBsYW5ndWFnZSBhbmQgY2FuIGJlIHVzZWQgYnkgYW55IC5ORVQtYmFzZWQgcHJvamVjdC4gR3JlbWxpbi5OZXQgdHJhdmVyc2FscyB0cmFuc2xhdGUgdG8gR3JlbWxpbiBieXRlY29kZSBmb3IgUmVtb3RlQ29ubmVjdGlvbiBleGVjdXRpb24gKGUuZy4gR3JlbWxpbiBTZXJ2ZXIpLgorICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICAgIDxici8+CisgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgY29sLW1kLTYiPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYSI+PGltZyBzcmM9ImltZy9sb2dvcy9ncmVtbGluLXNjYWxhLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYSI+R3JlbWxpbi1TY2FsYTwvYT4gaXMgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgdGhhdCB1c2VzIHN0YW5kYXJkIFNjYWxhIGZ1bmN0aW9ucywgcHJvdmlkZXMgYSBjb252ZW5pZW50IERTTCB0byBjcmVhdGUgdmVydGljZXMgYW5kIGVkZ2VzLCBlbnN1cmVzIHR5cGUgc2FmZSB0cmF2ZXJzYWxzLCBhbmQgaW5jdXJycyBtaW5pbWFsIHJ1bnRpbWUgb3ZlcmhlYWQgYnkgb25seSBhbGxvY2F0aW5nIGluc3RhbmNlcyBpZiBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4KICAgICAgICAgIDwvZGl2PgotICAgICAgPC9kaXY+Ci0gICAgICA8YnIvPgotICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jbG9qdXJld2Vya3ovb2dyZSI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9vZ3JlLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Nsb2p1cmV3ZXJrei9vZ3JlIj48aW1nIHNyYz0iaW1nL2xvZ29zL29ncmUtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2xvanVyZXdlcmt6L29ncmUiPk9ncmU8L2E+IGlzIGEgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGZvciBDbG9qdXJlLiBJdCBwcm92aWRlcyBhbiBBUEkgdGhhdCBlbmhhbmNlcyB0aGUgZXhwcmVzc2l2aXR5IG9mIEdyZW1saW4gd2l0aGluIENsb2p1cmUsIGl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBzaWduaWZpY2FudCBhbW91bnQgb2YgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQsIGFuZCBpdCBjYW4gd29yayB3aXRoIGFueSBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBkYXRhYmFzZSBvciBhbmFseXRpYyBzeXN0ZW0uCi0gICAgICAgICA8L2Rpdj4KLSAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ka3VwcGl0ei9zcGFycWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ka3VwcGl0ei9zcGFycWwtZ3JlbWxpbiI+U1BBUlFMLUdyZW1saW48L2E+IGlzIGEgY29tcGlsZXIgdXNlZCB0byB0cmFuc2Zvcm0gU1BBUlFMIHF1ZXJpZXMgaW50byBHcmVtbGluIGJ5dGVjb2RlLiBJdCBpcyBiYXNlZCBvbiB0aGUgQXBhY2hlIEplbmEgU1BBUlFMIHByb2Nlc3NvciBBUlEsIHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBhIHN5bnRheCB0cmVlIG9mIGEgU1BBUlFMIHF1ZXJ5LgotICAgICAgICAgPC9kaXY+CisgICAgICAgICA8L2Rpdj4gICAgICAgICAKICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdHdpbG1lcy9zcWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9zcWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltZy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+U1BBUlFMLUdyZW1saW48L2E+IGlzIGEgY29tcGlsZXIgdXNlZCB0byB0cmFuc2Zvcm0gU1BBUlFMIHF1ZXJpZXMgaW50byBHcmVtbGluIGJ5dGVjb2RlLiBJdCBpcyBiYXNlZCBvbiB0aGUgQXBhY2hlIEplbmEgU1BBUlFMIHByb2Nlc3NvciBBUlEsIHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBhIHN5bnRheCB0cmVlIG9mIGEgU1BBUlFMIHF1ZXJ5LgorICAgICAgICAgPC9kaXY+CisgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdHdpbG1lcy9zcWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltZy9sb2dvcy9zcWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90d2lsbWVzL3NxbC1ncmVtbGluIj5TUUwtR3JlbWxpbjwvYT4gY29tcGlsZXMgQU5TSSBTUUwgdG8gR3JlbWxpbiBieXRlY29kZSBhbmQgaXMgdXNlZnVsIGZvciBjb25uZWN0aW5nIEpEQkMgcmVwb3J0aW5nL2J1c2luZXNzCiAgICAgICAgICAgICBpbnRlbGxpZ2VuY2UgdG9vbHMgdG8gYW55IFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbS4KICAgICAgICAgIDwvZGl2PgpAQCAtMzMzLDE2ICszMjYsMTYgQEAKICAgICAgIDxkaXYgY2xhc3M9ImNhcm91c2VsIHNsaWRlIiBkYXRhLXJpZGU9ImNhcm91c2VsIiBkYXRhLXR5cGU9Im11bHRpIiBkYXRhLWludGVydmFsPSI3MDAwIiBpZD0icmVsYXRlZFJlc291cmNlcyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJvdXNlbEdyaWQtaW5uZXIiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBhY3RpdmUiPgotICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vbWFya29yb2RyaWd1ZXouY29tLzIwMTMvMDEvMDkvb24tZ3JhcGgtY29tcHV0aW5nLyI+PGltZyBzcmM9ImltYWdlcy9yZXNvdXJjZXMvb24tZ3JhcGgtY29tcHV0aW5nLXJlc291cmNlLnBuZyIgd2lkdGg9IjEwMCUiLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cHM6Ly9tYXJrb3JvZHJpZ3Vlei5jb20vMjAxMy8wMS8wOS9vbi1ncmFwaC1jb21wdXRpbmcvIj48aW1nIHNyYz0iaW1nL3Jlc291cmNlcy9vbi1ncmFwaC1jb21wdXRpbmctcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cHM6Ly9hY2FkZW15LmRhdGFzdGF4LmNvbS9jb3Vyc2VzL2RzMjMwLWdldHRpbmctc3RhcnRlZC1ncmVtbGluL3Byb3BlcnR5LWdyYXBoIj48aW1nIHNyYz0iaW1hZ2VzL3Jlc291cmNlcy9wcm9wZXJ0eS1ncmFwaC1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIi8+PC9hPjwvZGl2PgorICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vYWNhZGVteS5kYXRhc3RheC5jb20vY291cnNlcy9kczIzMC1nZXR0aW5nLXN0YXJ0ZWQtZ3JlbWxpbi9wcm9wZXJ0eS1ncmFwaCI+PGltZyBzcmM9ImltZy9yZXNvdXJjZXMvcHJvcGVydHktZ3JhcGgtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cDovL25lbzRqLmNvbS93aHktZ3JhcGgtZGF0YWJhc2VzLyI+PGltZyBzcmM9ImltYWdlcy9yZXNvdXJjZXMvd2h5LWdyYXBoLWRhdGFiYXNlcy1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIi8+PC9hPjwvZGl2PgorICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9uZW80ai5jb20vd2h5LWdyYXBoLWRhdGFiYXNlcy8iPjxpbWcgc3JjPSJpbWcvcmVzb3VyY2VzL3doeS1ncmFwaC1kYXRhYmFzZXMtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cHM6Ly90aGlua2F1cmVsaXVzLmNvbS8yMDEyLzAzLzIyL3VuZGVyc3RhbmRpbmctdGhlLXdvcmxkLXVzaW5nLXRhYmxlcy1hbmQtZ3JhcGhzLyI+PGltZyBzcmM9ImltYWdlcy9yZXNvdXJjZXMvdGFibGVzLWFuZC1ncmFwaHMtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KKyAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy0zIGNvbC1tZC0zIGNvbC1zbS00IGNvbC14cy02Ij48YSBocmVmPSJodHRwczovL3RoaW5rYXVyZWxpdXMuY29tLzIwMTIvMDMvMjIvdW5kZXJzdGFuZGluZy10aGUtd29ybGQtdXNpbmctdGFibGVzLWFuZC1ncmFwaHMvIj48aW1nIHNyYz0iaW1nL3Jlc291cmNlcy90YWJsZXMtYW5kLWdyYXBocy1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIi8+PC9hPjwvZGl2PgogICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxhIGNsYXNzPSJsZWZ0IGNhcm91c2VsR3JpZC1jb250cm9sIiBocmVmPSIjcmVsYXRlZFJlc291cmNlcyIgZGF0YS1zbGlkZT0icHJldiI+CkBAIC0zNzMsNCArMzY2LDYgQEAKICAgICAgICAgIH0pOwogICAgICAgPC9zY3JpcHQ+CiAgICA8L2Rpdj4KKyAgIDxici8+CisgICA8YnIvPgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS90ZW1wbGF0ZS9oZWFkZXItZm9vdGVyLmh0bWwgYi9kb2NzL3NpdGUvaG9tZS90ZW1wbGF0ZS9oZWFkZXItZm9vdGVyLmh0bWwKaW5kZXggYzAyYjE1NS4uMTk0NzA2MyAxMDA2NDQKLS0tIGEvZG9jcy9zaXRlL2hvbWUvdGVtcGxhdGUvaGVhZGVyLWZvb3Rlci5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL3RlbXBsYXRlL2hlYWRlci1mb290ZXIuaHRtbApAQCAtNDEsMTAgKzQxLDEwIEBACiAgICAgICA8bGluayBocmVmPSJjc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+CiAgICAgICA8bGluayBocmVmPSJjc3MvYm9vdHN0cmFwLW1vZHMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+CiAgICAgICA8IS0tIExlIGZhdiBhbmQgdG91Y2ggaWNvbnMgLS0+Ci0gICAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImltYWdlcy9mYXZpY29uLmljbyI+Ci0gICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9ImltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyI+Ci0gICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSI3Mng3MiIgaHJlZj0iaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tNzJ4NzIucG5nIj4KLSAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9ImltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIj4KKyAgICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaW1nL2Zhdmljb24uaWNvIj4KKyAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iaW1nL2FwcGxlLXRvdWNoLWljb24ucG5nIj4KKyAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSJpbWcvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciPgorICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iaW1nL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciPgogICAgPC9oZWFkPgogICAgPGJvZHk+CiAgICAgICA8c2NyaXB0IHNyYz0ianMvcHJpc20uanMiPjwvc2NyaXB0PiAgICAgCkBAIC03NSwxNiArNzUsMTYgQEAKICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgotICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPkxhdGVzdDogMy4zLjQgKDE1LU9jdC0yMDE4KTwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudCI+VGlua2VyUG9wIDMuMy40PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWhlYWRlciI+TGF0ZXN0OiAzLjQuMiAoMjgtTWF5LTIwMTkpPC9saT4KKyAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50Ij5UaW5rZXJQb3AgMy40LjI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3VwZ3JhZGUiPlVwZ3JhZGUgSW5mb3JtYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvY3VycmVudC9jb3JlLyI+Q29yZSBKYXZhZG9jIEFQSTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy9jdXJyZW50L2Z1bGwvIj5GdWxsIEphdmFkb2MgQVBJPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT0ic2VwYXJhdG9yIiBjbGFzcz0iZGl2aWRlciI+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5NYWludGVuYW5jZTogMy4yLjEwICgxNS1PY3QtMjAxOCk8L2xpPgotICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi4xMC8iPlRpbmtlclBvcCAzLjIuMTA8L2E+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4yLjEwL2NvcmUvIj5Db3JlIEphdmFkb2MgQVBJPC9hPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4xMC9mdWxsLyI+RnVsbCBKYXZhZG9jIEFQSTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPk1haW50ZW5hbmNlOiAzLjMuNyAoMjgtTWF5LTIwMTkpPC9saT4KKyAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuNy8iPlRpbmtlclBvcCAzLjMuNjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjMuNy9jb3JlLyI+Q29yZSBKYXZhZG9jIEFQSTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjMuNy9mdWxsLyI+RnVsbCBKYXZhZG9jIEFQSTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9InNlcGFyYXRvciIgY2xhc3M9ImRpdmlkZXIiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uIEFyY2hpdmVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLyI+SmF2YWRvYyBBcmNoaXZlczwvYT48L2xpPgpAQCAtMTAwLDYgKzEwMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS8iPlRoZSBHcmVtbGluIENvbnNvbGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlY2lwZXMvIj5HcmVtbGluIFJlY2lwZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLyI+R3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50czwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvdHV0b3JpYWxzL2dyZW1saW5zLWFuYXRvbXkvIj5HcmVtbGluJ3MgQW5hdG9teTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9InNlcGFyYXRvciIgY2xhc3M9ImRpdmlkZXIiPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2tlbHZpbmxhd3JlbmNlLm5ldC9ib29rL0dyZW1saW4tR3JhcGgtR3VpZGUuaHRtbCI+Qm9vazogUHJhY3RpY2FsIEdyZW1saW4gYnkgS2VsdmluIExhd3JlbmNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3NxbDJncmVtbGluLmNvbS8iPlNRTDJHcmVtbGluPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9saT4KQEAgLTExNiw3ICsxMTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWwjY29tbWl0dGVycyI+UHJvamVjdCBDb21taXR0ZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0icG9saWN5Lmh0bWwiPlBvbGljaWVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT0ic2VwYXJhdG9yIiBjbGFzcz0iZGl2aWRlciI+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC8iPjxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1naXRodWIucG5nIiBjbGFzcz0ibmF2LWljb24iLz5HaXRIdWI8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC8iPjxpbWcgc3JjPSJpbWcvZ3JlbWxpbi1naXRodWIucG5nIiBjbGFzcz0ibmF2LWljb24iLz5HaXRIdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2FwYWNoZXRpbmtlcnBvcCI+VHdpdHRlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvbGk+CkBAIC0xMjcsNiArMTMwLDcgQEAKICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlIEhvbWVwYWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLyI+TGljZW5zZTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZXZlbnRzL2N1cnJlbnQtZXZlbnQiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9mb3VuZGF0aW9uL3Nwb25zb3JzaGlwLmh0bWwiPlNwb25zb3JzaGlwPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2ZvdW5kYXRpb24vdGhhbmtzLmh0bWwiPlRoYW5rczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9zZWN1cml0eS8iPlNlY3VyaXR5PC9hPjwvbGk+CkBAIC0xMzgsNyArMTQyLDcgQEAKICAgICAgICEhISEhQk9EWSEhISEhCiAgICAgICA8ZGl2IGlkPSJmb290ZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgICAgIDxwIGNsYXNzPSJtdXRlZCBjcmVkaXQiPkFwYWNoZSBUaW5rZXJQb3AsIFRpbmtlclBvcCwgQXBhY2hlLCBBcGFjaGUgZmVhdGhlciBsb2dvLCBhbmQgQXBhY2hlIFRpbmtlclBvcCBwcm9qZWN0IGxvZ28gYXJlIGVpdGhlciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb3IgdHJhZGVtYXJrcyBvZiA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5UaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb248L2E+IGluIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCBvdGhlciBjb3VudHJpZXMuCisgICAgICAgICAgICA8cCBjbGFzcz0ibXV0ZWQgY3JlZGl0Ij5Db3B5cmlnaHQgwqkgMjAxNS0yMDE5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIvPkFwYWNoZSBUaW5rZXJQb3AsIFRpbmtlclBvcCwgQXBhY2hlLCBBcGFjaGUgZmVhdGhlciBsb2dvLCBhbmQgQXBhY2hlIFRpbmtlclBvcCBwcm9qZWN0IGxvZ28gYXJlIGVpdGhlciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb3IgdHJhZGVtYXJrcyBvZiA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5UaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb248L2E+IGluIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCBvdGhlciBjb3VudHJpZXMuCiAgICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9hZG1pbmlzdHJhdGlvbi5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvYWRtaW5pc3RyYXRpb24uYXNjaWlkb2MKaW5kZXggMGQ5Mzk0Mi4uYzQ5ODMzNSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9hZG1pbmlzdHJhdGlvbi5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2FkbWluaXN0cmF0aW9uLmFzY2lpZG9jCkBAIC04MSw2ICs4MSw3IEBACiAuIE9uY2UgdmVyaWZpZWQsIHByb3ZpZGUgdGhlIG5ldyBjb21taXR0ZXIgYWNjZXNzIHRvIHRoZSByZXBvc2l0b3J5LCB3aGljaCBpcyBtb3N0IGVhc2lseSBkb25lIHRocm91Z2gKIGxpbms6aHR0cHM6Ly93aGltc3kuYXBhY2hlLm9yZy9yb3N0ZXIvY29tbWl0dGVlL1tXaGltc3ldLgogLiBTZW5kIGFuIGFubm91bmNlbWVudCBlbWFpbCB0byB0aGUgZGV2ZWxvcGVyIGFuZCB1c2VyIG1haWxpbmcgbGlzdHMgd2l0aCB0aGUgdGVtcGxhdGUgYmVsb3cuCisuIFVwZGF0ZSBKSVJBIHRvIGluY2x1ZGUgdGhpcyBwZXJzb24gaW4gdGhlICJjb21taXR0ZXJzIiBncm91cC4KIAogW3NvdXJjZSx0ZXh0XQogLS0tLQpAQCAtOTcsMTIgKzk4LDkgQEAKIHByb2R1Y3Rpdml0eS4KIC0tLS0KIAotRmluYWxseSwgbmV3IGNvbW1pdHRlcnMgc2hvdWxkIGJlIHNlbnQgYW4gZW1haWwgdGhhdCBjb3ZlcnMgc29tZSBvZiB0aGUgYWRtaW5pc3RyYXRpdmUgZWxlbWVudHMgb2YgdGhlaXIgbmV3IHJvbGU6Ci0KLSogbGluazpodHRwczovL3d3dy5hcGFjaGUub3JnL2Rldi9uZXctY29tbWl0dGVycy1ndWlkZS5odG1sW0FwYWNoZSBDb21taXR0ZXIgR3VpZGVdCi0qIGxpbms6aHR0cDovL3d3dy5hcGFjaGUub3JnL2Rldi9jb21taXR0ZXJzLmh0bWxbQXBhY2hlIENvbW1pdHRlciBGQVFdCi0qIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2RldmVsb3Blci9bVGlua2VyUG9wIERldmVsb3BlciBEb2N1bWVudGF0aW9uXQotKiogQnJpbmcgc3BlY2lmaWMgYXR0ZW50aW9uIHRvIHRoZSAiY29tbWl0dGVyIiBzZWN0aW9uIHdoaWNoIGRlc2NyaWJlcyBvdXIgZ2VuZXJhbCBwb2xpY2llcy4KK0ZpbmFsbHksIG5ldyBjb21taXR0ZXJzIHNob3VsZCBiZSBzZW50IGFuIGVtYWlsIHRoYXQgY292ZXJzIHNvbWUgb2YgdGhlIGFkbWluaXN0cmF0aXZlIGVsZW1lbnRzIG9mIHRoZWlyIG5ldyByb2xlLgorR2VuZXJhbGx5IHNwZWFraW5nIHRoZSBlbWFpbCBjYW4gbGFyZ2VseSBqdXN0IHBvaW50IHRoZW0gdG8gdGhlIDw8aW5pdGlhbC1zZXR1cCxJbml0aWFsIFNldHVwPj4gc2VjdGlvbiBvZiB0aGlzCitkb2N1bWVudGF0aW9uLgogCiA9PSBOZXcgUE1DIE1lbWJlcnMKIApAQCAtMTg0LDMgKzE4Miw0NyBAQAogW3NvdXJjZSx0ZXh0XQogaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9wcml2YXRlL2ZvdW5kYXRpb24vYm9hcmQKIAorW1tjb250cmlidXRvci1saXN0aW5nXV0KKz09IENvbnRyaWJ1dG9yIExpc3RpbmcKKworQ29udHJpYnV0aW9ucyBjYW4gY29tZSBpbiA8PHdheXMtdG8tY29udHJpYnV0ZSxtYW55IGZvcm1zPj4gYW5kIGV4dGVuZCB3ZWxsIGJleW9uZCBjb2RlIGNvbnRyaWJ1dGlvbnMuIFRpbmtlclBvcAorc3RyaXZlcyB0byBlbnN1cmUgdGhhdCBjb250cmlidXRpb25zIGFyZSBob25lc3RseSBhbmQgYWNjdXJhdGVseSByZWNvZ25pemVkIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgaW5kaXZpZHVhbHMgd2hvCitoZWxwIG1ha2UgVGlua2VyUG9wIHBvc3NpYmxlLgorCitPbmUgb2YgdGhlIHdheXMgaW4gd2hpY2ggdGhpcyByZWNvZ25pdGlvbiBpcyBzdXBwb3J0ZWQgaXMgYnkgd2F5IG9mIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNjb250cmlidXRvcnNbQ29udHJpYnV0b3IgTGlzdGluZ10gb24gdGhlIFRpbmtlclBvcCBob21lIHBhZ2UsIHdoaWNoIGxpc3QgdGhvc2Ugd2hvCitoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZSBwcm9qZWN0IGluIHNvbWUgd2F5LiBJdCBsaXN0cyBib3RoIGNvbW1pdHRlcnMgYW5kIFBNQyBtZW1iZXJzIGFuZCBwcm92aWRlcyBhIHNob3J0ICJiaW8iCisoaS5lLiBhIGRlc2NyaXB0aW9uIG9mIHRoZWlyIGNvbnRyaWJ1dGlvbnMpIGFzIHdlbGwgYXMgYW4gaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHRoZXkgYXJlIGN1cnJlbnRseSBwYXJ0aWNpcGF0aW5nIGluCit0aGUgcHJvamVjdCBvciBub3QsIGkuZS4gYWN0aXZlIG9yIGluYWN0aXZlLiAgVGhlIGJpb3MgaGF2ZSBhIHNsaWdodGx5IGRpZmZlcmVudCBmb3JtIGRlcGVuZGluZyBvbiB0aGF0IHN0YXR1czoKKworKiBBbiBfYWN0aXZlXyBiaW8gc2hvdWxkIGJlIHJlZmxlY3RpdmUgb2YgY3VycmVudCBjb250cmlidXRpb25zLCByb3VnaGx5IHJlcHJlc2VudGluZyB0aGUgcGFzdCBzaXggbW9udGhzIGFuZCB0aGUKK2ZvbGxvd2luZyBzaXggbW9udGhzIG9mIHRoZSB1cGRhdGUuCisqIEFuIF9pbmFjdGl2ZV8gYmlvIGZvciB0aG9zZSBub3QgY3VycmVudGx5IGNvbnRyaWJ1dGluZyB0byB0aGUgcHJvamVjdCwgc2hvdWxkIHJlZmxlY3QgdGhlIGZ1bGwgc2NvcGUgb2YgYWxsCitjb250cmlidXRpb25zIG1hZGUgYnkgdGhhdCBpbmRpdmlkdWFsIGR1cmluZyB0aGVpciBhY3RpdmUgcGVyaW9kcy4KKworSU1QT1JUQU5UOiBJcnJlc3BlY3RpdmUgb2YgYmVpbmcgYWN0aXZlIG9yIGluYWN0aXZlLCB0aGUgY29udHJpYnV0b3IncyBuYW1lIGFuZCB0ZW51cmUgYWNjb21wbGlzaG1lbnRzIHJlbWFpbiBwcmVzZW50CitvbiB0aGUgZnJvbnQgcGFnZSBvZiB0aGUgd2ViIHNpdGUuIEJlaW5nICJpbmFjdGl2ZSIgZG9lcyAqbm90KiBhZmZlY3QgdGhlIGNvbnRyaWJ1dG9ycyBzdGF0dXMgYXMgYW4gQXBhY2hlIGNvbW1pdHRlciBvcgorUE1DIG1lbWJlciAtIHRoYXQgcmVtYWlucyB1bmNoYW5nZWQuIFNob3VsZCBhIGNvbnRyaWJ1dG9yIGJlY29tZSAiaW5hY3RpdmUiIGF0IHNvbWUgcG9pbnQsIHRoZXJlIGlzIG5vIHNwZWNpYWwgcHJvY2VzcwordG8gYmVjb21lICJhY3RpdmUiIGFnYWluIC0gdGhleSBzaW1wbHkgdXBkYXRlIHRoZWlyIGJpbyB0byBkbyBzby4KKworQ29tbWl0dGVycyBhbmQgUE1DIG1lbWJlcnMgY2FuIGtlZXAgdGhpcyBpbmZvcm1hdGlvbiB1cCB0byBkYXRlIHRoZW1zZWx2ZXMgYXMgdGhleSBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIEdpdAorcmVwb3NpdG9yeS4gUmVtaW5kZXJzIHRvIHVwZGF0ZSB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgc2VudCB0byB0aGUgZGV2IGxpc3Qgb24gZWFjaCByZWxlYXNlIGFzIHBhcnQgb2YgY29kZSBmcmVlemUKK3dlZWsuIFRob3NlIHdobyBoYXZlIG5vdCBzaG93biBhbiB1cGRhdGUgdG8gdGhlaXIgYmlvIGluIGdpdCBpbiB0aGUgcGFzdCB5ZWFyIG9yIGhhdmUgb3RoZXJ3aXNlIG5vdCByZXBsaWVkIHRvIHRoZSBkZXYKK2xpc3QgZW1haWwgdG8gaW5kaWNhdGUgdGhlaXIgc3RhdHVzIGluIHRoYXQgdGltZSB3aWxsIGJlIGFzc3VtZWQgImluYWN0aXZlIiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlIGxpc3RpbmcuCisKK1RoZSBmb2xsb3dpbmcgaXMgYSB0ZW1wbGF0ZSBmb3IgdGhlICJCaW8gVXBkYXRlIiBlbWFpbDoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorU3ViamVjdDogQXBhY2hlIFRpbmtlclBvcCBCaW8gVXBkYXRlCisKK1RvIENvbW1pdHRlcnMvUE1DIE1lbWJlcnMsCisKK0FzIGFuIEFwYWNoZSBUaW5rZXJQb3AgY29tbWl0dGVyIGFuZC9vciBQTUMgbWVtYmVyLCB5b3VyIG5hbWUgaXMgbGlzdGVkIG9uIHRoZSBUaW5rZXJQb3AgaG9tZSBwYWdlIGluIHRoZSBDb250cmlidXRvciBMaXN0WzFdIHdpdGggeW91ciAiYmlvIi4gSWYgeW91IGFyZSBhY3RpdmUgb24gdGhlIHByb2plY3QsIHlvdXIgImJpbyIgcmVmbGVjdHMgd2hhdCB5b3UgaGF2ZSBiZWVuIHdvcmtpbmcgb24gYW5kIHdoYXQgeW91IGV4cGVjdCB0byBiZSB3b3JraW5nIG9uIHdpdGggcmVzcGVjdCB0byBUaW5rZXJQb3AgZm9yIHJlY2VudCB0aW1lcyAoaS5lLiBmb3IgdGhlIHByZXZpb3VzIHNpeCBtb250aHMgYW5kIHRoZSBmb2xsb3dpbmcgc2l4IG1vbnRocykuIElmIHlvdSBhcmUgY3VycmVudGx5IGluYWN0aXZlIG9uIHRoZSBwcm9qZWN0LCB5b3VyICJiaW8iIHJlZmxlY3RzIHRoZSBmdWxsIHNjb3BlIG9mIGFsbCB5b3VyIGNvbnRyaWJ1dGlvbnMgdGhyb3VnaG91dCB5b3VyIGFjdGl2ZSBwZXJpb2RzLiBZb3UgY2FuIHJlZmVyIHRvIHRoZSBjb250cmlidXRvciBsaXN0aW5nIHBvbGljeVsyXSBmb3IgZnVsbCBkZXRhaWxzLgorCitQbGVhc2UgdGFrZSBhIG1vbWVudCB0byB1cGRhdGUgeW91ciBiaW8gZGlyZWN0bHkgaW4gR2l0WzNdIG9yLCBpZiB5b3Ugd291bGQgcHJlZmVyLCBwbGVhc2UgcmVwbHkgdG8gdGhpcyBlbWFpbCB3aXRoIHlvdXIgYmlvIHVwZGF0ZSBhbmQgaXQgd2lsbCBiZSBhZGRlZCBmb3IgeW91LiBJZiBubyBjaGFuZ2VzIGFyZSByZXF1aXJlZCwgcGxlYXNlIHJlcGx5IHRvIHRoaXMgZW1haWwgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UuCisKK1sxXSBodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNjb250cmlidXRvcnMKK1syXSBodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvZGV2ZWxvcGVyLyNjb250cmlidXRvci1saXN0aW5nCitbM10gaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi9tYXN0ZXIvZG9jcy9zaXRlL2hvbWUvaW5kZXguaHRtbAorLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9jb250cmlidXRpbmcuYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2NvbnRyaWJ1dGluZy5hc2NpaWRvYwppbmRleCBmMzkzMGJjLi5mYzcyMGQ1IDEwMDY0NAotLS0gYS9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2NvbnRyaWJ1dGluZy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2NvbnRyaWJ1dGluZy5hc2NpaWRvYwpAQCAtMjAsNiArMjAsNyBAQAogbWF0ZXJpYWwgdmlhIHB1bGwgcmVxdWVzdCwgZW1haWwsIG9yIG90aGVyIG1lYW5zIHlvdSBhZ3JlZSB0byBsaWNlbnNlIHRoZSBtYXRlcmlhbCB1bmRlciB0aGUgcHJvamVjdCdzIG9wZW4gc291cmNlCiBsaWNlbnNlIGFuZCB3YXJyYW50IHRoYXQgeW91IGhhdmUgdGhlIGxlZ2FsIGF1dGhvcml0eSB0byBkbyBzby4KIAorW1t3YXlzLXRvLWNvbnRyaWJ1dGVdXQogPT0gV2F5cyB0byBDb250cmlidXRlCiAKIGltYWdlOmdyZW1saW4tYXBhY2hlLnBuZ1t3aWR0aD0yNTAsZmxvYXQ9bGVmdF0gV2hpbGUgdGhlIGNvbmNlcHQgb2YgYW4gb3BlbiBzb3VyY2UgY29udHJpYnV0aW9uIGNhbiByZWZlciB0byBkb2luZwpAQCAtMjM1LDMgKzIzNiwzNyBAQAogdGhlIGNoYW5nZXMgYnJpbmdzIGV4dGVuc2l2ZSBjb25mbGljdCBiZXR3ZWVuIGJyYW5jaGVzLgogCiBPbiBzdWNjZXNzZnVsIHJldmlldywgdGhlICpwdWxsIHJlcXVlc3Qgd2lsbCBiZSBtZXJnZWQqIHRvIHRoZSBtYWluIHJlcG9zaXRvcnkgYW5kIHRoZSBKSVJBIGlzc3VlIHdpbGwgYmUgY2xvc2VkLgorCis9PSBWZXJzaW9uaW5nCisKK1RpbmtlclBvcCB2ZXJzaW9uIG51bWJlcnMgZm9sbG93IGEgZm9ybWF0IG9mIGBNQUpPUi5NSU5PUi5QQVRDSGAsIHdoZXJlOgorCisqIGBNQUpPUmAgdmVyc2lvbiBpcyBpbmNyZW1lbnRlZCBmb3IgZXBvY2hzIG9mIHRoaW5raW5nIGFyb3VuZCBUaW5rZXJQb3AgYW5kIGl0cyByZWxhdGlvbiB0byB0aGUgZ3JhcGggZWNvc3lzdGVtLgorKiBgTUlOT1JgIHZlcnNpb24gaXMgaW5jcmVtZW50ZWQgd2hlbiBpbmNvbXBhdGlibGUgY2hhbmdlcyBjYW5ub3QgYmUgYXZvaWRlZC4KKyogYFBBVENIYCB2ZXJzaW9uIGlzIGluY3JlbWVudGVkIHdoZW4gY2hhbmdlcyBhcmUgYmFja3dhcmQgY29tcGF0aWJsZS4KKworVGhlIG51bWJlciBmb3IgYE1BSk9SYCByYXJlbHkgY2hhbmdlcyBhbmQgd2hlbiBpdCBkb2VzLCBpdCB0eXBpY2FsbHkgcmVwcmVzZW50cyBhIGNvbXBsZXRlIHJlLXdyaXRlIG9mIHRoZSBzb2Z0d2FyZQorYW5kIHRodXMgbWFzc2l2ZSBjaGFuZ2VzIGNhbiBiZSBleHBlY3RlZC4gQXMgYSByZXN1bHQgb2YgdGhlIGRlZmluaXRpb24gZm9yIGBNQUpPUmAsIHdlIHRlbmQgdG8gZm9jdXMgb24gdGhlIG90aGVyCit0d28gbnVtYmVycyB3aGVuIGNvbnNpZGVyaW5nIHdoZXJlIGNoYW5nZXMgd2lsbCBsYW5kLgorCitUaGUgZHJpdmluZyBxdWVzdGlvbiBmb3IgZGV0ZXJtaW5pbmcgaWYgYSBjaGFuZ2UgaXMgc3VpdGFibGUgZm9yIGBNSU5PUmAgb3IgYFBBVENIYCB2ZXJzaW9ucyBpcyB3aGV0aGVyIG9yIG5vdCB0aGUKK2NoYW5nZSBpbnRyb2R1Y2VzIHNvbWUgZm9ybSBvZiBpbmNvbXBhdGliaWxpdHkuIEFzIHRoZSBmb2N1cyBmb3IgbWFraW5nIHRoZSBkZXRlcm1pbmF0aW9uIGlzICJicmVha2luZyBjaGFuZ2UiLCB3ZQordGhlcmVmb3JlIGFsbG93IHRoZSBvcHRpb24gZm9yIG5ldyBmZWF0dXJlcyB0byBsYW5kIGluIGBQQVRDSGAgdmVyc2lvbnMuIFRha2luZyB0aGlzIGFwcHJvYWNoLCBsZW5ndGhlbnMgdGhlIGxpZmUgc3Bhbgorb2YgYE1JTk9SYCB2ZXJzaW9ucyBjb25zaWRlcmFibHkgd2hpY2ggaXMgaGVscGZ1bCB0byBncmFwaCBwcm92aWRlcnMgbG9va2luZyBmb3Igc3RhYmxlIGxvbmctbGl2ZWQgc3VwcG9ydCBmb3IgYQorcGFydGljdWxhciByZWxlYXNlIGxpbmUuCisKK1dpdGggYWxsIG9mIHRoZSBhYm92ZSBydWxlcyBpbiBtaW5kLCB0aGVyZSBhcmUgc29tZSBzdWJ0bGUgY29uc2lkZXJhdGlvbnMgdGhhdCBoYXZlIGNvbWUgaW50byBwbGF5IGluIHRoZSBwYXN0IHdoZW4KK3RyeWluZyB0byBkZXRlcm1pbmUgd2hlcmUgYSBjaGFuZ2Ugc2hvdWxkIGxhbmQ6CisKKyogQSBgUEFUQ0hgIGhhcyBiZWVuIGtub3duIHRvIHRha2UgYSBicmVha2luZyBjaGFuZ2UgaWYgdGhhdCBicmVha2luZyBjaGFuZ2U6CisqKiBJcyBuZWNlc3NhcnkgdG8gZml4IGEgY3JpdGljYWwgYnVnCisqKiBIYXMgYSBsaW1pdGVkIGJyZWFraW5nIHNjb3BlIChlLmcuIGEgdXRpbGl0eSBjbGFzcyB0aGF0IG5vIG9uZSB3b3VsZCBsaWtlbHkgdXNlLCBhIGJyZWFrIHRoYXQgYWZmZWN0cyBncmFwaAorcHJvdmlkZXJzIG9ubHkpCisqIEl0IGlzIHByZWZlcnJlZCB0aGF0ICJtYWpvciIgbmV3IGZlYXR1cmVzIGdvIHRvIGBNSU5PUmAsIGJ1dCBpdCBpcyBzb21ldGltZXMgdGhlIGNhc2UgdGhhdCB0aGV5IHdpbGwgbWFrZSB0aGVpciB3YXkKK3RvIGBQQVRDSGAgaWYgdGhhdCBjaGFuZ2UgcHJvdmlkZXMgc2lnbmlmaWNhbnQgZW5vdWdoIHZhbHVlLgorKiBBcyBgUEFUQ0hgIHJlbGVhc2UgbnVtYmVycyBnZXQgaGlnaGVyLCB0aGVyZSBpcyBsZXNzIGluY2VudGl2ZSB0byBwdXNoIG5ldyBmZWF0dXJlcyB0aGVyZSBhcyB0aGVyZSBpcyBsaWtlbHkgbmV3Citmb2N1cyBvbiB0aGUgbmV4dCB1bnJlbGVhc2VkIGBNSU5PUmAuCisqIFRoZSBwcmVmZXJlbmNlIGlzIHRvIGZpbmQgZGVwcmVjYXRpb24gcGF0aHMgd2hlbmV2ZXIgcG9zc2libGUuCisKK0luIHNob3J0LCB0aGUgZGV2IG1haWxpbmcgbGlzdCBpcyBvcGVuIHRvIGRpc2N1c3Npb24gb24gd2hlcmUgYSBjaGFuZ2Ugd2lsbCBsYW5kLiBUaGUgZGlzY3Vzc2lvbiBqdXN0IG5lZWRzIHRvIGhhdmUKK2dvb2QgcmVhc29uaW5nIGFuZCB1c2UgdGhlIGdlbmVyYWwgcHJpbmNpcGxlcyBhYm92ZSBhcyBhIGZyYW1ld29yayBmb3IgY29taW5nIHRvIGEgY29uc2Vuc3VzLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9kZXZlbG9wbWVudC1lbnZpcm9ubWVudC5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQuYXNjaWlkb2MKaW5kZXggOWE3YWZkYi4uYWI1YWI2MyAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9kZXZlbG9wbWVudC1lbnZpcm9ubWVudC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2RldmVsb3BtZW50LWVudmlyb25tZW50LmFzY2lpZG9jCkBAIC0xNTUsNiArMTU1LDkgQEAKIFtzb3VyY2UsdGV4dF0KIG12biBjbGVhbiBpbnN0YWxsIC1wbCBncmVtbGluLWNvbnNvbGUgLURza2lwSW50ZWdyYXRpb25UZXN0cz1mYWxzZQogCitUSVA6IEZvciB0aG9zZSB3aG8gZG8gbm90IGhhdmUgYSBmdWxsIE1hdmVuIGVudmlyb25tZW50LCBwbGVhc2Ugc2VlIDw8ZG9ja2VyLWludGVncmF0aW9uLHRoaXMgc2VjdGlvbj4+IGZvciBob3cgRG9ja2VyCitjYW4gYmUgdXNlZCB0byBoZWxwIHJ1biB0ZXN0cy4KKwogU2VlIHRoZSA8PHJlbGVhc2UtZW52aXJvbm1lbnQsUmVsZWFzZSBFbnZpcm9ubWVudD4+IHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcmVsZWFzZSBtYW5hZ2VyIGNvbmZpZ3VyYXRpb25zLgogCiBbW2RvdG5ldC1lbnZpcm9ubWVudF1dCkBAIC0xODIsNiArMTg1LDkgQEAKIFtzb3VyY2UsdGV4dF0KIG12biBjbGVhbiBpbnN0YWxsIC1EbnVnZXQKIAorVElQOiBGb3IgdGhvc2Ugd2hvIGRvIG5vdCBoYXZlIGEgZnVsbCBNYXZlbiBlbnZpcm9ubWVudCwgcGxlYXNlIHNlZSA8PGRvY2tlci1pbnRlZ3JhdGlvbix0aGlzIHNlY3Rpb24+PiBmb3IgaG93IERvY2tlcgorY2FuIGJlIHVzZWQgdG8gaGVscCBydW4gdGVzdHMuCisKIFNlZSB0aGUgPDxyZWxlYXNlLWVudmlyb25tZW50LFJlbGVhc2UgRW52aXJvbm1lbnQ+PiBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHJlbGVhc2UgbWFuYWdlciBjb25maWd1cmF0aW9ucy4KIAogW1tub2RlanMtZW52aXJvbm1lbnRdXQpAQCAtMTkxLDYgKzE5Nyw5IEBACiB1c2luZyBgY29tLmdpdGh1Yi5laXJzbGV0dDpmcm9udGVuZC1tYXZlbi1wbHVnaW5gIHBsdWdpbi4gVGhpcyBjb3B5IG9mIHRoZSBOb2RlLmpzIHJ1bnRpbWUgd2lsbCBub3QgYWZmZWN0IGFueQogb3RoZXIgZXhpc3RpbmcgTm9kZS5qcyBydW50aW1lIGluc3RhbmNlcyBpbiB5b3VyIG1hY2hpbmUuCiAKK1RJUDogRm9yIHRob3NlIHdobyBkbyBub3QgaGF2ZSBhIGZ1bGwgTWF2ZW4gZW52aXJvbm1lbnQsIHBsZWFzZSBzZWUgPDxkb2NrZXItaW50ZWdyYXRpb24sdGhpcyBzZWN0aW9uPj4gZm9yIGhvdyBEb2NrZXIKK2NhbiBiZSB1c2VkIHRvIGhlbHAgcnVuIHRlc3RzLgorCiBTZWUgdGhlIDw8cmVsZWFzZS1lbnZpcm9ubWVudCxSZWxlYXNlIEVudmlyb25tZW50Pj4gc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiByZWxlYXNlIG1hbmFnZXIgY29uZmlndXJhdGlvbnMuCiAKIFtbZG9ja2VyLWVudmlyb25tZW50XV0KQEAgLTI5MCw2ICsyOTksNyBAQAogKiBHZW5lcmF0ZSA8PGJ1aWxkaW5nLXRlc3RpbmcsdGVzdCByZXNvdXJjZXM+PiBmb3IgYGdyZW1saW4taW8tdGVzdGA6IGBtdm4gY2xlYW4gaW5zdGFsbCAtcGwgOmdyZW1saW4taW8tdGVzdCAtRGlvYAogKiBSZWdlbmVyYXRlIHRveSBncmFwaCBkYXRhIChvbmx5IG5lY2Vzc2FyeSBnaXZlbiBjaGFuZ2VzIHRvIElPIGNsYXNzZXMpOiBgbXZuIGNsZWFuIGluc3RhbGwgLURpb2AgZnJvbSBgdGlua2VyZ3JhcGgtZ3JlbWxpbmAgZGlyZWN0b3J5CiAqKiBJZiB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgR3J5byBmb3JtYXQsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gZ2VuZXJhdGUgdGhlIEdyYXRlZnVsIERlYWQgZGF0YXNldCBmcm9tIEdyYXBoU09OIChzZWUgYElvRGF0YUdlbmVyYXRpb25UZXN0LnNob3VsZFdyaXRlR3JhdGVmdWxEZWFkYCkKKyogU3RhcnQgR3JlbWxpbiBTZXJ2ZXIgd2l0aCBEb2NrZXIgdXNpbmcgdGhlIHN0YW5kYXJkIHRlc3QgY29uZmlndXJhdGlvbjogYGRvY2tlci9ncmVtbGluLXNlcnZlci5zaGAKICogQ2hlY2sgbGljZW5zZSBoZWFkZXJzIGFyZSBwcmVzZW50OiBgbXZuIGFwYWNoZS1yYXQ6Y2hlY2tgCiAqIEJ1aWxkIEFzY2lpRG9jcyAoc2VlIDw8ZG9jdW1lbnRhdGlvbi1lbnZpcm9ubWVudCxEb2N1bWVudGF0aW9uIEVudmlyb25tZW50Pj4pOiBgYmluL3Byb2Nlc3MtZG9jcy5zaGAKICoqIEJ1aWxkIEFzY2lpRG9jcyAoYnV0IGRvbid0IGV2YWx1YXRlIGNvZGUgYmxvY2tzKTogYGJpbi9wcm9jZXNzLWRvY3Muc2ggLS1kcnlSdW5gCkBAIC0zNTYsNiArMzY2LDQxIEBACiAKIEFmdGVyIGZpbmlzaGluZyBhbGwgdGFza3MsIHRoZSBzY3JpcHQgd2lsbCBpbW1lZGlhdGVseSBkZXN0cm95IHRoZSBjb250YWluZXIuCiAKK0RvY2tlciBjYW4gYWxzbyBiZSBoZWxwZnVsIHRvIGRldmVsb3BlcnMgd2hvIGRvIG5vdCB3YW50IHRvIHJ1biB0ZXN0cyBmcm9tIGEgTWF2ZW4gZW52aXJvbm1lbnQsIHdoaWNoIG1heSBiZSBhIGJpdAorb3BhcXVlIHdoZW4gZGVhbGluZyB3aXRoIHRlc3QgZmFpbHVyZXMgYW5kIGxhcmdlbHkgdW5oZWxwZnVsIGZvciBkZWJ1Z2dpbmcuIFRoaXMgc2l0dWF0aW9uIGlzIHR5cGljYWxseSBjYXNlIGZvcgorZGV2ZWxvcGVycyBkb2luZyB3b3JrIG9uIEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHMgKGUuZy4gUHl0aG9uKS4gVG8gaGVscCBhbGxldmlhdGUgdGhpcyBwcm9ibGVtLCBkZXZlbG9wZXJzIGNhbgorc3RhcnQgYSBzdGFuZGFsb25lIEdyZW1saW4gU2VydmVyIHdpdGggaXRzIHN0YW5kYXJkIHRlc3QgY29uZmlndXJhdGlvbiB0aGF0IGlzIHVzZWQgaW4gdGhlIHN0YW5kYXJkIE1hdmVuIGJ1aWxkLgorCitHZW5lcmFsbHkgc3BlYWtpbmcsIG1vc3QgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gdGVzdCB0aGVpciBjb2RlIGFnYWluc3QgdGhlIGxhdGVzdCBidWlsZCBvZiBHcmVtbGluIFNlcnZlciBpbiB0aGUKK1RpbmtlclBvcCByZXBvc2l0b3J5LiBUbyBkbyB0aGF0LCBmaXJzdCBiZSBzdXJlIHRvIGJ1aWxkIGEgRG9ja2VyIGltYWdlIG9mIHRoZSBjdXJyZW50IGNvZGU6CisKK1tzb3VyY2UsYmFzaF0KK212biBjbGVhbiBpbnN0YWxsIC1Ec2tpcFRlc3RzCisKK05leHQsIGdlbmVyYXRlIHRoZSBhIERvY2tlciBpbWFnZSBmb3IgR3JlbWxpbiBTZXJ2ZXIgd2l0aDoKKworW3NvdXJjZSxiYXNoXQorbXZuIGNsZWFuIGluc3RhbGwgLXBsIDpncmVtbGluLXNlcnZlciAtRGRvY2tlckltYWdlcyAtRHNraXBUZXN0cworCitJTVBPUlRBTlQ6IElmIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIHJlcG9zaXRvcnkgdGhhdCBuZWVkIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGUgR3JlbWxpbiBTZXJ2ZXIgRG9ja2VyIGltYWdlIHRoZW4KK3RoZSBvbGQgaW1hZ2Ugc2hvdWxkIGJlIHJlbW92ZWQgYW5kIHRoZW4gdGhlIGFib3ZlIGNvbW1hbmRzIHJlLWV4ZWN1dGVkLgorCitGaW5hbGx5LCBzdGFydCB0aGUgc2VydmVyIHdpdGg6CisKK1tzb3VyY2UsYmFzaF0KK2RvY2tlci9ncmVtbGluLXNlcnZlci5zaAorCitTdGFydGluZyBHcmVtbGluIFNlcnZlciB0aGlzIHdheSBtYWtlcyBpdCBwb3NzaWJsZSB0byBydW4gR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50IHRlc3RzIHdpdGhvdXQgTWF2ZW4gKGZvciBleGFtcGxlLAorZGlyZWN0bHkgZnJvbSBhIGRlYnVnZ2VyKSB3aGljaCBzaG91bGQgZ3JlYXRseSByZWR1Y2UgZGV2ZWxvcG1lbnQgZnJpY3Rpb24gZm9yIHRoZXNlIGVudmlyb25tZW50cy4KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZSBleGFjdCB2ZXJzaW9uIG9mIEdyZW1saW4gU2VydmVyIHRvIHJ1biB3aXRoIHRoZSB0ZXN0IGNvbmZpZ3VyYXRpb24uIFRoaXMgdmVyc2lvbgorc2hvdWxkIGJlIGFuIGV4aXN0aW5nIERvY2tlciBpbWFnZSB2ZXJzaW9uIGFuZCBtdXN0IGJlIGFuIGV4cGxpY2l0IHZlcnNpb24gdGhhdCBtYXBzIHRvIGFuIGFjdHVhbCBUaW5rZXJQb3AgYXJ0aWZhY3Q6CisKK1tzb3VyY2UsYmFzaF0KK2RvY2tlci9ncmVtbGluLXNlcnZlci5zaCAzLjQuMgorCitUbyBiZSBhIGJpdCBtb3JlIGNsZWFyLCB0aGUgdmVyc2lvbiBjYW4gbm90IGJlIGEgRG9ja2VyIHRhZyBsaWtlICJsYXRlc3QiIGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBUaW5rZXJQb3AgYXJ0aWZhY3QKK3RoYXQgaGFzIGJlZW4gcHVibGlzaGVkIHdpdGggdGhhdCB2ZXJzaW9uIG51bWJlci4KIAogPT0gSURFIFNldHVwIHdpdGggSW50ZWxsaWoKIApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9mb3ItY29tbWl0dGVycy5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvZm9yLWNvbW1pdHRlcnMuYXNjaWlkb2MKaW5kZXggNmNhMzlhYS4uNTUxOTc5NSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9mb3ItY29tbWl0dGVycy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2Zvci1jb21taXR0ZXJzLmFzY2lpZG9jCkBAIC0xOCw3ICsxOCw0MSBAQAogCiBpbWFnZTo6YnVzaW5lc3MtZ3JlbWxpbi5wbmdbd2lkdGg9NDAwXQogCi1UaGUgZ3VpZGVsaW5lcyB0aGF0IGZvbGxvdyBhcHBseSB0byB0aG9zZSB3aXRoIGNvbW1pdCBhY2Nlc3MgdG8gdGhlIG1haW4gcmVwb3NpdG9yeToKK1RoZSBndWlkZWxpbmVzIHRoYXQgZm9sbG93IGdlbmVyYWxseSBhcHBseSB0byB0aG9zZSB3aXRoIGNvbW1pdCBhY2Nlc3MgdG8gdGhlIG1haW4gcmVwb3NpdG9yeSwgYnV0IHRob3NlIHNlZWtpbmcgdG8KK2NvbnRyaWJ1dGUgd2lsbCBhbHNvIGZpbmQgaGVscGZ1bCBpbmZvcm1hdGlvbiBoZXJlIG9uIHRoZSBkZXZlbG9wbWVudCBzdHlsZSBhbmQgcHJvY2VzcyBmb3IgdGhlIHByb2plY3QuCisKK1tbaW5pdGlhbC1zZXR1cF1dCis9PSBJbml0aWFsIFNldHVwCisKK09uY2UgdGhlIEFwYWNoZSBUaW5rZXJQb3AgUE1DIGhhcyBzZW50IGFuIGludml0YXRpb24gdG8gYSBjb250cmlidXRvciB0byBiZWNvbWUgYSBuZXcgY29tbWl0dGVyIGFuZCB0aGF0IGNvbnRyaWJ1dG9yCitoYXMgYWNjZXB0ZWQgdGhhdCBpbnZpdGF0aW9uIGFuZCBwcm92aWRlZCB0aGVpciBpQ0xBIHRvIEFwYWNoZSwgdGhlbiB0aGVyZSBhcmUgc29tZSBhZG1pbmlzdHJhdGl2ZSBzdGVwcyB0aGF0IHRoZQorbmV3IGNvbW1pdHRlciBjYW4gZXhwZWN0IHRvIGdvIHRocm91Z2ggdG8gY29tcGxldGUgdGhlIHByb2Nlc3Mgc28gdGhhdCB0aGV5IGhhdmUgYWNjZXNzIHRvIEFwYWNoZSByZXNvdXJjZXMgbGlrZSB0aGUKK0dpdCByZXBvc2l0b3J5LiBXaGlsZSB0aGUgaW5mb3JtYXRpb24gZm9yIGNvbXBsZXRpbmcgdGhlIHByb2Nlc3MgY2FuIGJlIGZvdW5kIGluIGEgbXVsdGl0dWRlIG9mIHBsYWNlcyB0aGUgZm9sbG93aW5nCitsaXN0aW5nIHByb3ZpZGVzIGEgc3VtbWFyeSBvZiB3aGF0IHRvIGRvIG5leHQ6CisKKyogTG9vayBmb3IgYSB3ZWxjb21lIGVtYWlsIGZyb20gcm9vdF9hdF9hcGFjaGUub3JnLiBUaGlzIHdpbGwgY29udGFpbiB5b3VyIEFwYWNoZSB1c2VyIG5hbWUKKyoqIGUuZy4gIldlbGNvbWUgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpISIKKyogVmlzaXQgaHR0cHM6Ly9pZC5hcGFjaGUub3JnL3Jlc2V0L2VudGVyIGFuZCBlbnRlciB5b3VyIHVzZXIgbmFtZQorKiBMb29rIGZvciBhIHBhc3N3b3JkIHJlc2V0IGVtYWlsIGZyb20gcm9vdF9hdF9hcGFjaGUub3JnLiBUaGlzIHdpbGwgaGF2ZSBiZWVuIHNlbnQgYWZ0ZXIgeW91IGNvbmZpcm1lZCB5b3VyIHVzZXIgbmFtZSwgYWJvdmUuCisqKiBlLmcuICJQYXNzd29yZCByZXNldCByZXF1ZXN0IGZvciBbdXNlcm5hbWVdIGZyb20gQXBhY2hlIElEIgorKiBWaXNpdCB0aGUgbGluayBwcm92aWRlZCBpbiB0aGUgcGFzc3dvcmQgcmVzZXQgZW1haWwsIGFuZCBjaG9vc2UgYSBuZXcgcGFzc3dvcmQuIEFTRiBhc2tzIHlvdSB0byBjaG9vc2UgYSBzdHJvbmcgb25lLiBZb3Ugd2lsbCBzZWUgYSAiUGFzc3dvcmQgY2hhbmdlIHN1Y2Nlc3NmdWwiIHBhZ2Ugd2hlbiB0aGlzIGlzIGRvbmUuCisqIFlvdSB3aWxsIG5vdyBoYXZlIFNWTiBhY2Nlc3MKKyoqIGxpbms6aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9bc3ZuLmFwYWNoZS5vcmddCisqIFRyeSBzZW5kaW5nIHlvdXJzZWxmIGFuIGVtYWlsIGF0IHlvdXIgbmV3IFt1c2VybmFtZV1AYXBhY2hlLm9yZyBlbWFpbCBhZGRyZXNzLiBJdCBzaG91bGQgZm9yd2FyZCB0byB5b3VyIHByaW1hcnkgYWRkcmVzcy4KKyogQ2hlY2sgeW91ciBhY2NvdW50IGRldGFpbHMgYXQgaHR0cHM6Ly9pZC5hcGFjaGUub3JnL2RldGFpbHMvW3VzZXJuYW1lXQorKiBMaW5rIHlvdXIgYWNjb3VudHMgdXNpbmcgZ2l0Ym94IChodHRwczovL2dpdGJveC5hcGFjaGUub3JnL3NldHVwLykKKyoqIExpbmsgeW91ciBBcGFjaGUgYWNjb3VudAorKiogTGluayB5b3VyIEdpdEh1YiBhY2NvdW50CisqKiogWW91IHdpbGwgYmUgYXNrZWQgdG8gIkF1dGhvcml6ZSBBcGFjaGUgTS5BLlQuVC4iCisqKiBPYnRhaW4gTUZBIHN0YXR1cworKioqIFZpc2l0IGxpbms6aHR0cHM6Ly9pZC5hcGFjaGUub3JnW2lkLmFwYWNoZS5vcmddIGFuZCBzZXQgeW91ciBHaXRIdWIgSUQgdG8gYmUgaW52aXRlZCB0byB0aGUgb3JnCisqKiogV2FpdCBmb3IgYW4gZW1haWwgdG8gYXJyaXZlIGZyb20gInN1cHBvcnRfYXRfZ2l0aHViLmNvbSIsIGFuZCBjbGljayAiSm9pbiBAYXBhY2hlIi4gQWNjZXB0IHRoZSBpbnZpdGF0aW9uIG9uIGdpdGh1Yi5jb20uIFlvdXIgbmV3IE1GQSBzdGF0dXMgd2lsbCBub3QgaW1tZWRpYXRlbHkgYmUgcmVmbGVjdGVkIG9uIGdpdGh1YiwgYnV0IHlvdSB3aWxsIGdldCBhIGNvbmZpcm1hdGlvbiBlbWFpbCBmcm9tIG5vcmVwbHlfYXRfZ2l0aHViLmNvbS4gTGF0ZXIsIHRoZSBzdGF0dXMgd2lsbCByZWFkICJNRkEgRU5BQkxFRCIKKyoqKiogZS5nLiAiW0dpdEh1Yl0gQGFzZi1naXRib3ggaGFzIGludml0ZWQgeW91IHRvIGpvaW4gdGhlIEBhcGFjaGUgb3JnYW5pemF0aW9uIgorKioqIFlvdSBjYW4gZmluZCB5b3Vyc2VsZiBieSBzZWFyY2hpbmcgaW4gdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL29yZ3MvYXBhY2hlL3RlYW1zL2FwYWNoZS1jb21taXR0ZXJzW0FwYWNoZSBDb21taXR0ZXJzIGxpc3RpbmddCisqIFJlYWQgdGhlIGxpbms6aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9kZXYvbmV3LWNvbW1pdHRlcnMtZ3VpZGUuaHRtbFtBcGFjaGUgQ29tbWl0dGVyIEd1aWRlXSBhbmQgbGluazpodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGV2L2NvbW1pdHRlcnMuaHRtbFtBcGFjaGUgQ29tbWl0dGVyIEZBUV0KKyogUmVhZCB0aHJvdWdoIHRoZSBvdGhlciBzZWN0aW9ucyBvZiB0aGlzIGRvY3VtZW50IC0gdGhlIERldmVsb3BlciBEb2N1bWVudGF0aW9uIC0gZm9yIG1vcmUgZGV0YWlscyBvbiBwcm9qZWN0IHByb2NlZHVyZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIGl0ZW1zLgorKiogSW4gcGFydGljdWxhciwgc2VlIDw8cnRjLFJldmlldyB0aGVuIENvbW1pdD4+CisqIElmIHlvdSBoYXZlIHRyb3VibGUgY29tbWl0dGluZywgZW1haWwgZGV2QHRpbmtlcnBvcC5hcGFjaGUub3JnCiAKID09IENvbW11bmljYXRpb24KIApAQCAtMjYsNiArNjAsMTAgQEAKIHBhc3M6WzxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuYXBhY2hlLm9yZy9saXN0Lmh0bWw/ZGV2QHRpbmtlcnBvcC5hcGFjaGUub3JnIj5kZXYgbWFpbGluZyBsaXN0PC9hPl0uICBBcyBhIGNvbW1pdHRlciwKIGl0IGlzIGEgZ29vZCBpZGVhIHRvIGpvaW4gYm90aC4KIAorVGlua2VyUG9wIGFsc28gaGFzIGEgbGluazpodHRwczovL3RoZS1hc2Yuc2xhY2suY29tL2FyY2hpdmVzL0NVQko1NzdFV1tTbGFjayBjaGFubmVsXSBmb3IgbW9yZSByZWFsLXRpbWUgY29tbXVuaWNhdGlvbgorYWJvdXQgdGhlIHByb2plY3QgYW1vbmcgY29udHJpYnV0b3JzLCB0aG91Z2ggaXQgbXVzdCBiZSBrZXB0IGluIG1pbmQgdGhhdCBwcm9qZWN0IGRpc2N1c3Npb24gYW5kIGRlY2lzaW9ucyBtdXN0IG9jY3VyCitvbiB0aGUgZGV2IG1haWxpbmcgbGlzdCBtZW50aW9uZWQgYWJvdmUuCisKIE9jY2FzaW9uYWxseSwgb25saW5lIG1lZXRpbmdzIHZpYSB2aWRlbyBjb25mZXJlbmNlIGFyZSBoZWxkLiBUaGVzZSBtZWV0aW5ncyBhcmUgc2NoZWR1bGUgdmlhIHRoZSBkZXYgbWFpbGluZyBsaXN0CiBhYm91dCBhIHdlZWsgYmVmb3JlIHRoZXkgYXJlIHRvIG9jY3VyIHRvIGZpbmQgYSBkYXkgYW5kIHRpbWUgdGhhdCBpcyBhdmFpbGFibGUgZm9yIHRob3NlIGludGVyZXN0ZWQgaW4gYXR0ZW5kaW5nLgogT24gdGhlIGRheSBvZiB0aGUgbWVldGluZywgdGhlIG1lZXRpbmcgb3JnYW5pemVyIHdpbGwgY3JlYXRlIGEgR29vZ2xlIEhhbmdvdXQgKG9yIHNpbWlsYXIgdmlkZW8gY29uZmVyZW5jaW5nIGxpbmspLgpAQCAtMTExLDYgKzE0OSwxMSBAQAogKiBUaGUgInByaW9yaXR5IiBmaWVsZCBjYW4gYmUgYXJiaXRyYXJpbHkgYXBwbGllZCB3aXRoIG9uZSBleGNlcHRpb24uICBUaGUgInRyaXZpYWwiIG9wdGlvbiBzaG91bGQgYmUgcmVzZXJ2ZWQgZm9yCiB0YXNrcyB0aGF0IGFyZSAiZWFzeSIgZm9yIGEgcG90ZW50aWFsIG5ldyBjb250cmlidXRvciB0byBqdW1wIGludG8gYW5kIGRvIG5vdCBoYXZlIHNpZ25pZmljYW50IGltcGFjdCB0byB1cmdlbnRseQogcmVxdWlyZWQgaW1wcm92ZW1lbnRzLgorKiBUaGUgInJlc29sdXRpb24iIGZpZWxkIHdoaWNoIGlzIHNldCBvbiB0aGUgY2xvc2Ugb2YgdGhlIGlzc3VlIHNob3VsZCBzcGVjaWZ5IHRoZSBzdGF0dXMgbW9zdCBjbG9zZWx5IHJlbGF0ZWQgdG8gd2h5Cit0aGUgaXNzdWUgd2FzIGNsb3NlZC4gSW4gbW9zdCBjYXNlcywgdGhpcyB3aWxsIG1lYW4gIkZpeGVkIiBmb3IgYSAiQnVnIiBvciAiRG9uZSIgZm9yIGFuICJJbXByb3ZlbWVudCIuIE9ubHkgb25lCityZXNvbHV0aW9uIGhhcyBzcGVjaWFsIG1lYW5pbmcgYW5kIGNhcmUgc2hvdWxkIGJlIHRha2VuIHdpdGggdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbjogIkxhdGVyIi4gIkxhdGVyIiBtZWFucyB0aGF0IHRoZQoraXRlbSBpcyBhIGdvb2QgaWRlYSBidXQgbGlrZWx5IHdpbGwgbm90IGJlIGltcGxlbWVudGVkIGluIGFueSBmb3Jlc2VlYWJsZSBmdXR1cmUuIEJ5IGNsb3NpbmcgdW5jb21wbGV0ZWQgaXNzdWVzIHdpdGgKK3RoaXMgcmVzb2x1dGlvbiwgaXQgc2hvdWxkIGJlIGVhc3kgdG8gY29tZSBiYWNrIHRvIHRoZW0gbGF0ZXIgd2hlbiBuZWVkZWQuCiAKID09IENvZGUgU3R5bGUKIApAQCAtNDQ0LDcgKzQ4Nyw3IEBACiAqKiBCZSBjZXJ0YWluIHRoYXQgdGhlIHRlc3Qgc3VpdGUgaXMgcGFzc2luZy4KICoqIElmIHlvdSB1cGRhdGVkIGRvY3VtZW50YXRpb24sIGJlIHN1cmUgdGhhdCB0aGUgYHByb2Nlc3MtZG9jcy5zaGAgaXMgYnVpbGRpbmcgdGhlIGRvY3VtZW50YXRpb24gY29ycmVjdGx5LgogKiBCZWZvcmUgeW91IGNhbiBtZXJnZSB5b3VyIGJyYW5jaCBpbnRvIHRoZSByZWxlYXNlIGJyYW5jaCwgeW91IG11c3QgaGF2ZSBhdCBsZWFzdCAzICsxIGxpbms6aHR0cDovL3d3dy5hcGFjaGUub3JnL2ZvdW5kYXRpb24vZ2xvc3NhcnkuaHRtbCNDb25zZW5zdXNBcHByb3ZhbFtjb25zZW5zdXMgdm90ZXNdCi1mcm9tIG90aGVyIGNvbW1pdHRlcnMgT1IgYSBzaW5nbGUgKzEgZnJvbSBhIGNvbW1pdHRlciBhbmQgYSBvbmUgd2VlayByZXZpZXcgcGVyaW9kIGZvciBvYmplY3Rpb25zIChpLmUuIGEgImNvb2wgZG93bgorZnJvbSBvdGhlciBjb21taXR0ZXJzIE9SIGEgc2luZ2xlICsxIGZyb20gYSBjb21taXR0ZXIgYW5kIGEgc2V2ZW4gZGF5IHJldmlldyBwZXJpb2QgZm9yIG9iamVjdGlvbnMgKGkuZS4gYSAiY29vbCBkb3duCiBwZXJpb2QiKSBhdCB3aGljaCBwb2ludCB3ZSB3aWxsIGFzc3VtZSBhIGxhenkgY29uc2Vuc3VzLgogKiogUGxlYXNlIHNlZSB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb25zIHJlZ3VsYXRpb25zIHJlZ2FyZGluZyBsaW5rOmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9mb3VuZGF0aW9uL3ZvdGluZy5odG1sI3ZvdGVzLW9uLWNvZGUtbW9kaWZpY2F0aW9uW1ZvdGluZyBvbiBDb2RlIE1vZGlmaWNhdGlvbnNdLgogKiogV2l0aCB0aGUgImNvb2wgZG93biIgcHJvY2VzcyBhbmQgbGF6eSBjb25zZW5zdXMgdGhlIHNpbmdsZSArMSBtYXkgKHNob3VsZCkgY29tZSBmcm9tIHRoZSBjb21taXR0ZXIgd2hvIHN1Ym1pdHRlZApAQCAtNzIxLDcgKzc2NCw3IEBACiAKIFRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9kZXYvaW9bSU8gRG9jdW1lbnRhdGlvbl0gcHJvdmlkZXMgbW9yZSBkZXRhaWxzIGludG8gR3JhcGhNTCwgR3JhcGhTT04KIGFuZCBHcnlvIHdpdGggYSBzcGVjaWFsIGZvY3VzIG9uIHRoZSBuZWVkcyBvZiBkZXZlbG9wZXJzIHdobyBhcmUgd29ya2luZyBkaXJlY3RseSB3aXRoIHRoZXNlIGZvcm1hdHMuIEdyYXBoU09OIGdldHMKLXRoZSBncmVhdGVzdCBmb2N1cyBoZXJlIGFzIGl0IGlzIHVzZWQgYXMgdGhlIHByaW1hcnkgSU8gZm9ybWF0IGZvciBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tdmFyaWFudHNbR0xWc10uCit0aGUgZ3JlYXRlc3QgZm9jdXMgaGVyZSBhcyBpdCBpcyB1c2VkIGFzIHRoZSBwcmltYXJ5IElPIGZvcm1hdCBmb3IgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmVtbGluLWRyaXZlcnMtdmFyaWFudHNbR0xWc10uCiBUaGlzIGRvY3VtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgZnJvbSB0aGUgYGdyZW1saW4taW8tdGVzdGAgbW9kdWxlIGZvdW5kIHVuZGVyIGBncmVtbGluLXRvb2xzYC4gVGhlCiBgZ3JlbWxpbi1pby10ZXN0YCBtb2R1bGUgYWxzbyBpbmNsdWRlcyBhIHRlc3RpbmcgZnJhbWV3b3JrIHdoaWNoIHZhbGlkYXRlcyB0aGF0IGZvcm1hdHMgZG9uJ3QgYnJlYWsgYmV0d2VlbiBUaW5rZXJQb3AKIHZlcnNpb25zLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIG1vZHVsZSByZXF1aXJlcyBzb21lIG1haW50ZW5hbmNlIHRvIGVuc3VyZSB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0cyBib3RoIHN0YXkKQEAgLTc2MSw2ICs4MDQsMTQgQEAKIFRoZSBzZWNvbmQgY2FzZSwgZG9lcyByZXF1aXJlIHNvbWUgYWRkaXRpb25hbCBkaXNjdXNzaW9uLiBXaGVuIGEgbmV3IHZlcnNpb24gaXMgYWRkZWQgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbmVlZAogdG8gYmUgdXBkYXRlZCBpbiB0aGUgZm9sbG93aW5nIHdheXM6CiAKKypHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkqIC0gSW5jbHVkZSBuZXcgR3JhcGhCaW5hcnkgMS4wIGVudW1zIGZvciB0aGUgY3VycmVudCBgU05BUFNIT1RgLgorCitbc291cmNlLGphdmFdCistLS0tCitWMV8zXzRfMygiMy40LjMiLCAiMS4wIiwgInYxIiksCitWMV8zXzRfNCgiMy40LjQiLCAiMS4wIiwgInYxIik7CistLS0tCisKICpHcnlvQ29tcGF0aWJpbGl0eSogLSBJbmNsdWRlIG5ldyBHcnlvIDEuMCBhbmQgMy4wIGVudW1zIGZvciB0aGUgY3VycmVudCBgU05BUFNIT1RgLgogCiBbc291cmNlLGphdmFdCkBAIC03NzksNiArODMwLDkgQEAKIFYzRDBfUEFSVElBTF8zXzNfeCgiMy4zLngiLCAiMy4wIiwgInYzZDAiKTsKIC0tLS0KIAorKkdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eVRlc3QqIC0gQWRkIHRoZSBuZXdseSBpbmNsdWRlZCBgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5YCBlbnVtcyB0byB0aGUgdGVzdCBwYXJhbWV0ZXJzIGJlaW5nCitjYXJlZnVsIHRvIG1hdGNoIHRoZSBhcHByb3ByaWF0ZSAibWFwcGVyIiB0byB0aGUgcmlnaHQgdmVyc2lvbi4KKwogKkdyeW9Db21wYXRpYmlsaXR5VGVzdCogLSBBZGQgdGhlIG5ld2x5IGluY2x1ZGVkIGBHcnlvQ29tcGF0aWJpbGl0eWAgZW51bXMgdG8gdGhlIHRlc3QgcGFyYW1ldGVycyBiZWluZyBjYXJlZnVsIHRvCiBtYXRjaCB0aGUgYXBwcm9wcmlhdGUgIm1hcHBlciIgdG8gdGhlIHJpZ2h0IHZlcnNpb24uCiAKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvcmVsZWFzZS5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvcmVsZWFzZS5hc2NpaWRvYwppbmRleCBhNjI1M2MyLi4wNWEzZjk4IDEwMDY0NAotLS0gYS9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL3JlbGVhc2UuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9yZWxlYXNlLmFzY2lpZG9jCkBAIC0xOTksNyArMTk5LDkgQEAKIC4uIFVwZGF0ZSB0aGUgYHRlbXBsYXRlL2hlYWRlci1mb290ZXIuaHRtbGAuCiAuLiBVcGRhdGUgYGluZGV4Lmh0bWxgLgogLi4gVXBkYXRlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb3dubG9hZHMuaHRtbFtEb3dubG9hZHNdIHBhZ2UsIHdoZW4gbW92aW5nICJDdXJyZW50IFJlbGVhc2VzIiB0byAiQXJjaGl2ZWQKLVJlbGVhc2VzIiByZWNhbGwgdGhhdCB0aGUgaHlwZXJsaW5rIG11c3QgY2hhbmdlIHRvIHBvaW50IHRvIHZlcnNpb24gaW4gdGhlIGxpbms6aHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvW0FwYWNoZSBBcmNoaXZlc10uCitSZWxlYXNlcyIgcmVjYWxsIHRoYXQgdGhlIGh5cGVybGluayBtdXN0IGNoYW5nZSB0byBwb2ludCB0byB2ZXJzaW9uIGluIHRoZSBsaW5rOmh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wL1tBcGFjaGUgQXJjaGl2ZXNdCisoImNvbnRyaWJ1dGlvbnMiIGNvbnRlbnQgd2lsbCBiZSBhZGRlZCBhZnRlciBWT1RFIGFuZCBwcmlvciB0byBwcm9tb3Rpb24gb2YgdGhlIHJlbGVhc2Ugc28gdGhhdCB0aGUgY29tbWl0IGNvdW50cyBhcmUKK2FzIGFjY3VyYXRlIGFzIHBvc3NpYmxlIGFuZCB0aGUgcmVsZWFzZSB0YWdzIGFyZSBwcmVzZW50KS4KIC4uIFByZXZpZXcgY2hhbmdlcyBsb2NhbGx5IHdpdGggYGJpbi9nZW5lcmF0ZS1ob21lLnNoYCB0aGVuIGNvbW1pdCBjaGFuZ2VzIHRvIGdpdC4KIC4gYG12biB2ZXJzaW9uczpzZXQgLURuZXdWZXJzaW9uPXh4Lnl5Lnp6IC1EZ2VuZXJhdGVCYWNrdXBQb21zPWZhbHNlYCB0byB1cGRhdGUgcHJvamVjdCBmaWxlcyB0byByZWZlcmVuY2UgdGhlIG5vbi1TTkFQU0hPVCB2ZXJzaW9uCiAuIGBwdXNoZCBncmVtbGluLWNvbnNvbGUvYmluOyBsbiAtZnMgLi4vdGFyZ2V0L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLXh4Lnl5Lnp6LXN0YW5kYWxvbmUvYmluL2dyZW1saW4uc2ggZ3JlbWxpbi5zaDsgcG9wZGAKQEAgLTI1NCw2ICsyNTYsNyBAQAogLiBgY2QgcmVsZWFzZTsgc3ZuIGFkZCB4eC55eS56ei87IHN2biBjaSAtbSAiVGlua2VyUG9wIHh4Lnl5Lnp6IHJlbGVhc2UiYAogLiBXYWl0IGZvciBBcGFjaGUgU29uYXR5cGUgdG8gc3luYyB0aGUgYXJ0aWZhY3RzIHRvIE1hdmVuIENlbnRyYWwgYXQgKGxpbms6aHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9hcGFjaGUvdGlua2VycG9wL3RpbmtlcnBvcC9baHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9hcGFjaGUvdGlua2VycG9wL3RpbmtlcnBvcC9dKS4KIC4gUmVwb3J0IHRoZSByZWxlYXNlIHRocm91Z2ggbGluazpodHRwczovL3JlcG9ydGVyLmFwYWNoZS5vcmcvYWRkcmVsZWFzZS5odG1sP3RpbmtlcnBvcFtyZXBvcnRlci5hcGFjaGUub3JnXSAoYW4gZW1haWwgcmVtaW5kZXIgc2hvdWxkIGFycml2ZSBzaG9ydGx5IGZvbGxvd2luZyB0aGUgc3ZuIGNvbW1hbmQgYWJvdmUgdG8gZG8gdGhlIHJlbGVhc2UpCisuIFVwZGF0ZSB0aGUgYHNpdGUvZG93bmxvYWRzLmh0bWxgIC0gcHJvdmlkZSB0aGUgY29udGVudHMgZm9yIHRoZSBtb2RhbCB0aGF0IHBvcHMgdXAgZnJvbSB0aGUgImNvbnRyaWJ1dG9ycyIgbGluay4KIC4gV2FpdCBmb3IgemlwIGRpc3RyaWJ1dGlvbnMgdG8gc3luYyB0byB0aGUgQXBhY2hlIG1pcnJvcnMgKGkuZSBlbnN1cmUgdGhlIGRvd25sb2FkIGxpbmtzIHdvcmsgZnJvbSBhIG1pcnJvcikuCiAuIGBiaW4vcHVibGlzaC1ob21lLnNoIDx1c2VybmFtZT5gIHRvIHB1Ymxpc2ggdGhlIHVwZGF0ZWQgd2ViIHNpdGUgd2l0aCBuZXcgcmVsZWFzZXMuCiAuIEV4ZWN1dGUgYGJpbi91cGRhdGUtY3VycmVudC1kb2NzLnNoIDx1c2VybmFtZT5gIHRvIG1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBkb2N1bWVudGF0aW9uIHNldCBmb3IgYC9jdXJyZW50YC4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL2Rldi9mdXR1cmUvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvZnV0dXJlL2luZGV4LmFzY2lpZG9jCmluZGV4IDU4NGJhOWMuLjEyNGMyMzIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL2Rldi9mdXR1cmUvaW5kZXguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvZGV2L2Z1dHVyZS9pbmRleC5hc2NpaWRvYwpAQCAtMzEsMTIgKzMxLDMxIEBACiBzZW50ZW5jZXMsIG9yIGZ1bGx5IHN0cnVjdHVyZWQgZG9jdW1lbnQgaGVhZGVycyBhbmQgY29udGVudCBhcmUgYWxsIGFjY2VwdGFibGUuIFRoZSBtYWluIHBvaW50IGlzIHRvIGNhcHR1cmUgaWRlYXMKIGZvciBmdXR1cmUgY29uc2lkZXJhdGlvbiB3aGVuIDQueCBiZWNvbWVzIHRoZSBhZ2VuZGEgb2YgdGhlIGRheSBmb3IgVGhlIFRpbmtlclBvcC4KIAorSWYgYWRkaW5nIGNvbW1lbnRzIHNlY3Rpb25zLCBwbGVhc2UgInNpZ24iIGNvbW1lbnRzIHdpdGggaW5pdGlhbHMgYW5kIHJlZmVyZW5jZSB0aG9zZSBpbml0aWFscyBoZXJlOgorCisqICpzcG0qIC0gU3RlcGhlbiBNYWxsZXR0ZQorKiAqYXMqIC0gQXNod2luaSBTaW5naAorKiAqZGsqIC0gRGFuaWVsIEt1cHBpdHoKKwogaW1hZ2U6dHA0LXRoaW5rLnBuZ1tdCiAKK0RldmVsb3BtZW50IG9mIDQueCBvY2N1cnMgb24gdGhlIGA0LjAtZGV2YCBicmFuY2guIFRoaXMgYnJhbmNoIHdhcyBjcmVhdGVkIGFzIGFuIG9ycGhhbiBicmFuY2ggYW5kIHRoZXJlZm9yZSBoYXMgbm8KK2hpc3RvcnkgdGllZCB0byBhbnkgb3RoZXIgYnJhbmNoIGluIHRoZSByZXBvIGluY2x1ZGluZyBtYXN0ZXIuIEFzIHN1Y2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gbWVyZ2UvcmViYXNlIGA0LjAtZGV2YC4gV2hlbgoraXQgY29tZXMgdGltZSB0byBwcm9tb3RlIGA0LjAtZGV2YCB0byBgbWFzdGVyYCB0aGUgcHJvY2VkdXJlIGZvciBkb2luZyBzbyB3aWxsIGJlIHRvOgorCisxLiBDcmVhdGUgYSBgMy54LW1hc3RlcmAgYnJhbmNoIGZyb20gYG1hc3RlcmAKKzEuIERlbGV0ZSBhbGwgY29udGVudCBmcm9tIGBtYXN0ZXJgIGluIG9uZSBjb21taXQKKzEuIFJlYmFzZSBgNC4wLWRldmAgb24gYG1hc3RlcmAKKzEuIE1lcmdlIGA0LjAtZGV2YCB0byBgbWFzdGVyYCBhbmQgcHVzaAorCitGcm9tIHRoaXMgcG9pbnQgMy54IGRldmVsb3BtZW50IHdpbGwgb2NjdXIgb24gYDMueC1tYXN0ZXJgIGFuZCA0LnggZGV2ZWxvcG1lbnQgb2NjdXJzIG9uIGBtYXN0ZXJgICh3aXRoIHRoZSBzYW1lIHZlcnNpb24KK2JyYW5jaGluZyBhcyB3ZSBoYXZlIG5vdywgZS5nIGAzLjMtZGV2YCwgYDQuMS1kZXZgLCBldGMuKSBUaGUgYDMueC1tYXN0ZXJgIGJyYW5jaCBjaGFuZ2VzIHdpbGwgbGlrZWx5IHN0aWxsIG1lcmdlIHRvCitgbWFzdGVyYCwgYnV0IHdpbGwgYWxsIG1lcmdlIGFzIG5vLW9wIGNoYW5nZXMuCisKID09IFRoZSBNYWluIEZlYXR1cmVzCiAKLVRpbmtlclBvcDQgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb3N0IHN1Y2Nlc3NmdWwgYXNwZWN0cyBvZiBUaW5rZXJQb3AzIGFuZCBpdCBzaG91bGQgYXZvaWQgdGhlIHRyYXBzIHJlYWxpemVkIGluIFRpbmtlclBvcDMuCi1UaGVzZSBpdGVtcyBpbmNsdWRlOgorVGlua2VyUG9wIDQueCBzaG91bGQgZm9jdXMgb24gdGhlIG1vc3Qgc3VjY2Vzc2Z1bCBhc3BlY3RzIG9mIFRpbmtlclBvcCAzLnggYW5kIGl0IHNob3VsZCBhdm9pZCB0aGUgdHJhcHMgcmVhbGl6ZWQgaW4KK1RpbmtlclBvcCAzLnguIFRoZXNlIGl0ZW1zIGluY2x1ZGU6CiAKICogVGhlIGNvbmNlcHQgb2YgR3JlbWxpbiBhcyBib3RoIGEgdmlydHVhbCBtYWNoaW5lIGFuZCBsYW5ndWFnZS4KICoqIEEgc3RhbmRhcmQgYnl0ZWNvZGUgc3BlY2lmaWNhdGlvbiBzaG91bGQgYmUgcHJvdmlkZWQuCkBAIC00OCw2ICs2Nyw4IEBACiAqIFRoZSBjb25jZXB0IG9mIGBUcmF2ZXJzYWxgIGFzIHRoZSBzb2xlIG1lYW5zIG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGdyYXBoLgogKiogVGhlIHJvbGUgb2YgQmx1ZXByaW50cyBzaG91bGQgYmUgc2lnbmlmaWNhbnRseSByZWR1Y2VkLgogKiogVGhlIHJvbGUgb2YgR3JlbWxpbiBzaG91bGQgYmUgc2lnbmlmaWNhbnRseSBpbmNyZWFzZWQuCisqIFByb3ZpZGUgYmV0dGVyIG1ldGhvZHMgb2YgdmVyc2lvbmluZyBHcmVtbGluIGl0c2VsZiAtIGJlaW5nIGJvdW5kIHRvIEpWTSByZWxlYXNlcyBhbmQgZm9yY2luZyBsb2NhbCBhbmQgcmVtb3RlCit2ZXJzaW9ucyBvZiBHcmVtbGluIHRvIGJlIHRoZSBzYW1lIGlzbid0IGlkZWFsLgogCiA9PSBIaWRpbmcgQmx1ZXByaW50cwogCkBAIC0xMDksNyArMTMwLDcgQEAKIFRoaXMgc3BsaXQgaW50byB0d28gR3JhcGggQVBJcyB3aWxsIGVuYWJsZXMgdXMgdG8gbWFrZSBhIGhhcmQgYm91bmRhcnkgYmV0d2VlbiB3aGF0IHRoZSBwcm92aWRlciAodmVuZG9yKSBuZWVkcyB0bwogaW1wbGVtZW50IGFuZCB3aGF0IHRoZSB1c2VyIChkZXZlbG9wZXIpIGdldHMgdG8gYWNjZXNzLgogCi09PT0gQ29tbWVudHMKKz09PSBDb21tZW50cyBbc3BtXQogCiBUaGVyZSBpcyBhIHF1ZXN0aW9uIG1hcmsgbmV4dCB0byBgUmVmZXJlbmNlR3JhcGgudHgoKWAgLSBUcmFuc2FjdGlvbnMgYXJlIGEgYml0IG9mIGFuIG9wZW4gcXVlc3Rpb24gZm9yIGZ1dHVyZSB2ZXJzaW9ucwogb2YgVGlua2VyUG9wIGFuZCBsaWtlbHkgZGVzZXJ2ZSB0aGVpciBvd24gc2VjdGlvbiBpbiB0aGlzIGRvY3VtZW50LiBUaGUgbW9kZWwgdXNlZCBmb3IgbGFzdCB0aHJlZSB2ZXJzaW9uIG9mIFRpbmtlclBvcApAQCAtMTE4LDYgKzEzOSwxNSBAQAogR0xWcy4gVGhlIGlkZWEgb2YgbG9jYWwgc3ViZ3JhcGhzIGZvciBtdXRhdGlvbnMgYW5kIHRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgbWlnaHQgYmUgZ29vZCBidXQgdGhhdCBnb2VzIGFnYWluc3QgaGF2aW5nCiBqdXN0IGBSZWZlcmVuY2VHcmFwaGAuCiAKK0luICJoaWRpbmcgYmx1ZXByaW50cyIgd2Ugc2hvdWxkIHByb2JhYmx5IGNvbnNpZGVyIHdoYXQgcmVsZXZhbmNlIGNlcnRhaW4gY29tcG9uZW50cyBvZiB0aGUgU3RydWN0dXJlIEFQSSBzdGlsbCBoYXZlOgorCisqIGBpbygpYCAtIHRoaXMgc29ydGEgZmVsbCBzaG9ydCBhIGZldyB3YXlzOiBBUEkgd2FzIGEgYml0IGNsdW5reSwgbm8gaW50ZWdyYXRpb24gd2l0aCBsb2FkaW5nIHZpYSBPTEFQLCBldGMuCisqIGB2YXJpYWJsZXMoKWAgLSBvbmUgb2YgdGhlIHByb2JsZW1zIHdpdGggdmFyaWFibGVzIGlzIHRoYXQgdGhleSB3ZXJlIG5vdCBwZXJzaXN0ZWQgYnkgYGlvKClgIHdoaWNoIHdhcyBnZW5lcmFsbHkgYQorcHJvYmxlbSBmb3IgVGlua2VyR3JhcGggd2hpY2ggcmVsaWVkIG9uIGBpbygpYCBmb3IgZmx1c2hpbmcgdG8gZmlsZSBzdG9yYWdlLiBUaGlzIHRvcGljIHdhcyBkaXNjdXNzZWQgYSBiaXQgb24KK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtODkyW1RJTktFUlBPUC04OTJdCisqIGB0eCgpYCAtIGFzIGRpc2N1c3NlZCBpbiB0aGUgZWFybGllciBwYXJhZ3JhcGgKKworW1tncmVtbGluLWxhbmd1YWdlLXN1YnNldF1dCiA9PSBHcmVtbGluIExhbmd1YWdlIFN1YnNldAogCiBPbiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE0MTdbVElOS0VSUE9QLTE0MTddLCBpdCB3YXMgc3VnZ2VzdGVkIHRoYXQgd2UgIkNyZWF0ZSBhCkBAIC0xMzYsNyArMTY2LDcgQEAKICogcGF0aCwgc2ltcGxlUGF0aCwgY3ljbGljUGF0aAogKiBncm91cENvdW50LCBzdW0sIGdyb3VwLCBjb3VudCwgbWF4LCBtaW4sIGV0Yy4gKHJlZHVjaW5nIGJhcnJpZXJzKQogCi09PT0gQ29tbWVudHMKKz09PSBDb21tZW50cyBbc3BtXQogCiBUaGlzIGhhcyBhbiBpbnRlcmVzdGluZyBwb3RlbnRpYWwgaW1wYWN0IG9uIEdMVnMgYmVjYXVzZSAiTGl0dGxlIEdyZW1saW4iIGNvdWxkIGJlIGltcGxlbWVudGVkIHdpdGhpbiB0aGVtIGZvcgogY2xpZW50LXNpZGUgdHJhdmVyc2FscyBvdmVyIHJlbW90ZSBzdWJncmFwaHMsIHdoZXJlIHRoZSBzdWJncmFwaCBpcyBsaWtlIGEgcmVtb3RlIHRyYW5zYWN0aW9uLiBBbGwgZ3JhcGggbXV0YXRpb25zCkBAIC0xNDQsOCArMTc0LDY0IEBACiBCdWlsZCBpdCBsb2NhbGx5IHRoZW4gc3VibWl0IGl0IHJlbW90ZWx5IGFuZCBoYXZlIHRoZSBzZXJ2ZXIgc29ydCBvdXQgdGhlIG1lcmdpbmcuIEl0J3MgcGVyaGFwcyB0aGUgbW9zdCBuYXR1cmFsIHdheQogdG8gbG9hZCBkYXRhLiBXaXRoICJHcmVtbGluaXRvIiB5b3UgdGhlbiBnZXQgdGhlIGFkZGVkIHBvd2VyIG9mIGJlaW5nIGFibGUgdG8gdHJhdmVyc2UgYSBsb2NhbCBzdWJncmFwaC4KIAorW1tzZXJpYWxpemF0aW9uXV0KKz09IFNlcmlhbGl6YXRpb24KKworSGF2ZSB3ZSB5ZXQgZm91bmQgdGhlIGFwcHJvcHJpYXRlIHNlcmlhbGl6YXRpb24gbW9kZWw/IFdlIGRpZG4ndCBoYXZlIGl0IGluIDIueCBhdCBhbGwuIEluIDMueCB3ZSB3ZW50IHdpdGggYSB1c2UgY2FzZQorYmFzZWQgYXBwcm9hY2ggdGhhdCBtYWRlIGEgbG90IG9mIHNlbnNlIGluIHRoZSBmaXJzdCBmZXcgcmVsZWFzZXMgb2YgMy54LCBidXQgdGhlIHVzZSBjYXNlcyBjb3VsZG4ndCBoYXZlIGNvbmNlaXZlZAorb2Ygd2hhdCB3YXMgdG8gY29tZSB3aXRoIHRoZSBkZXZlbG9wbWVudCBvZiBHTFZzLiBHTFZzIHJlbmRlcmVkIEdyeW8sIHRoZSBkZWNpZGVkICJuZXR3b3JrIG9wdGlvbiIgZnJvbSB0aGUgdXNlIGNhc2VzLAordG8gYmUgcHJldHR5IHVzZWxlc3MgZ2l2ZW4gdGhhdCBpdCBpcyBvZiB0aGUgSlZNIG9ubHkgYW5kIEdyYXBoU09OIGhhcyBnb25lIHRocm91Z2ggdGhyZWUgdmVyc2lvbnMgbm93IHRyeWluZyB0byBmaW5kCit0aGUgYXBwcm9wcmlhdGUgZm9ybWF0IHRvIGNvdmVyIHRoZSB2YXJpb3VzIGZlYXR1cmVzIHdlJ3ZlIGF0dGVtcHRlZCB0byBzdXBwb3J0LiBXaGlsZSBHcmFwaFNPTiAzLjAgc2VlbXMgdG8gaGF2ZSBtZXQKK3RoZSBtYXJrIGZvciBzdXBwb3J0aW5nIG91ciBuZWVkcywgaXQgc2VlbXMgYmxvYXRlZCB3aXRoIEphdmEgdHlwZXMgYW5kIGRvZXNuJ3QgcGVyZm9ybSB0ZXJyaWJseSB3ZWxsIGluIHNvbWUgY2FzZXMuCisKK0FuIGlkZWFsIHNlcmlhbGl6YXRpb24gZm9ybWF0IHdvdWxkIGJlOgorCisqIENvbXBhY3QgZm9yIG5ldHdvcmsgdHJhbnNwb3J0CisqIEh1bWFuIHJlYWRhYmxlICh3aGljaCBjb21wZXRlcyB3aXRoICJjb21wYWN0IiBhdCBzb21lIGxldmVsKQorKiBMYW5ndWFnZSBhZ25vc3RpYworKiBFeHBvc2VzIGEgc21hbGwgc2V0IG9mIHR5cGVzIHRoYXQgbWFrZXMgdGhlIGZvcm1hdCBlYXN5IHRvIG1haW50YWluIGFuZCB0ZXN0CisqIEV4dGVuZGFibGUgb3IgcGVyaGFwcyBidWlsdCBpbiBzdWNoIGEgd2F5IHRoYXQgZ3JhcGggcHJvdmlkZXJzIGNvdWxkIGNvZXJjZSB0aGVpciB0eXBlcyB0byBhbmQgZnJvbSB0aGUgdHlwZXMKK3RoYXQgVGlua2VyUG9wIGV4cG9zZXMKKyogVXBncmFkZSBmcmllbmRseSBzbyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGVhc2lseSBkZXRlY3QgdGhlIHZlcnNpb24gb2YgYSBmb3JtYXQgYW5kIGhhdmUgdGhlIHN5c3RlbSBhY3QKK3RyYW5zcGFyZW50bHkgc28gYXMgdG8gYXZvaWQgdGhlIGhlYXZ5IGNvbmZpZ3VyYXRpb24gdGhhdCB1c2VycyBjdXJyZW50bHkgaGF2ZSB0byBkbyB0byBiZSBzdXJlIHRoZWlyIHZlcnNpb25zIG9mCitUaW5rZXJQb3AgYW5kIHRoZWlyIHZlcnNpb24gb2YgdGhlaXIgc2VyaWFsaXplcnMgYWxpZ24KKworPT0gVW5pZm9ybSBPYmplY3QgTW9kZWwKKworT24gbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTA5W1RJTktFUlBPUC0xOTA5XSwgaXQgd2FzIHN1Z2dlc3RlZCB0aGF0IHdlIGFyZSBnb2luZyB0bwordXNlIHJlZmVyZW5jZSAoaWQvbGFiZWwpIGJhc2VkIG9iamVjdCBtb2RlbC4gQW5kLCB0aGUgZGlyZWN0aW9uIGlzIG1vdmUgdG93YXJkcyBtb3JlIHRpZHkgb2JqZWN0IG1vZGVsIGNvbnRyYWN0cyBnb2luZworZm9yd2FyZC4gUmVmZXJlbmNlIG1vZGVsIGRlZmluaXRlbHkgcHJvdmlkZXMgYmlnIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBlc3BlY2lhbGx5IHdpdGggbXVsdGktcHJvcGVydHkKK3ZlcnRpY2VzL2VkZ2VzLiAgT25lIHRoaW5nIHRoYXQgd2UgY2FuIGNvbnNpZGVyIGlzIHRvIHByb3ZpZGUgYSBjb25maWd1cmFibGUgb2JqZWN0IG1vZGVsLiBFbmFibGluZyB1c2VycyB0bworY29uZmlndXJlIHRoZSBvYmplY3QgbW9kZWwgKE91dHB1dEZvcm1hdCkgYXMgc2VydmVyIHNldHRpbmdzIChFeHBvc2luZyBzZXJ2ZXIgc2V0dGluZyBpcyBiZWluZyBkaXNjdXNzZWQgaGVyZQorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNjM2W1RJTktFUlBPUC0xNjM2XSkuIFRoZXJlIHdpbGwgdGhyZWUgdHlwZXMgb2Ygb3V0cHV0IGZvcm1hdC4KKworKiBSZWZlcmVuY2U6IGluY2x1ZGVzIGlkIGFuZCBsYWJlbAorKiBHcmFwaFNPTkNvbXBhY3Q6IG9iamVjdCByZWZlcmVuY2UgYWxvbmcgd2l0aCBwcm9wZXJ0aWVzCisqIEdyYXBoU09OOiBvYmplY3QgcmVmZXJlbmNlLCBwcm9wZXJ0aWVzIGFuZCBlZGdlIGRldGFpbHMoaW5FL291dEUpLgorCis9PT0gQ29tbWVudHMgW2FzXQorCitUaGlzIHdpbGwgZW5hYmxlIHRoZSBjbGllbnRzIG1vZGVsIGJhc2VkIG9uIHRoZWlyIG5lZWRzIGFuZCBhdm9pZCBtdWx0aXBsZSBxdWVyeSBpZiB0aGV5IGFyZSBzdXJlIHdoYXQgaXMgZXhwZWN0ZWQgCitmcm9tIGEgZ3JlbWxpbiBxdWVyeS4gSWYgd2UgbmVlZCBtb3JlIGRldGFpbHMgbGlrZSBlZGdlcy9wcm9wZXJ0eSBhcyBwYXJ0IG9mIHJlc3BvbnNlLCB3ZSBjYW4gb3ZlcnJpZGUgdGhlIHNlcnZlciAKK2NvbmZpZ3VyYXRpb24gYXMgcGFydCBvZiB0aGUgZ3JlbWxpbiByZXF1ZXN0IGFyZ3VtZW50cyBhcyBoaW50LgorCis9PT0gQ29tbWVudHMgW3NwbV0KKworQSBtb3JlIGZ1bGwgb2JqZWN0IG1vZGVsIG1heSBiZSBuZWNlc3NhcnkgYXMgd2UgY29uc2lkZXIgaW1wbGVtZW50aW5nIHRoZSBvcHRpb25zIG9mIHRoZQorPDxncmVtbGluLWxhbmd1YWdlLXN1YnNldCxHcmVtbGluIExhbmd1YWdlIFN1YnNldD4+LiBBIG1vcmUgcm9idXN0IG9iamVjdCBtb2RlbCwgb3IgYXQgbGVhc3QgdGhlIG9wdGlvbiB0byBvcGVuIHVwIGEKK21vcmUgcm9idXN0IG9iamVjdCBtb2RlbCwgY291bGQgYmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgZmVhdHVyZXMgdGhlcmUuIFdlIHNob3VsZCBhbHNvIGNvbnNpZGVyIHRoYXQgdGhlIGZ1dHVyZSBpcyBub3QKK25lY2Vzc2FyaWx5IGEgR3JhcGhTT04gZm9ybWF0IGFuZCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBhcyBkZXNjcmliZWQgaW4gdGhlIDw8c2VyaWFsaXphdGlvbixTZXJpYWxpemF0aW9uPj4gc2VjdGlvbi4KKwogPT0gVGVzdGluZyBGcmFtZXdvcmsKIAogQ29uc2lkZXIgYSB0ZXN0aW5nIGZyYW1ld29yayBiYXNlZCBvbiB0aGUgR2hlcmtpbiB0ZXN0cyBmcm9tIDMueCBhbmQgYSBgZ3JlbWxpbi10ZXN0YCBwYXJlbnQgbW9kdWxlIGZvciBhbGwgdGhlIHRlc3QKIGZyYW1ld29yayBtb2R1bGVzIHRoYXQgd2lsbCBwb3RlbnRpYWxseSBiZSBuZWVkZWQuIEluIDMueCwgd2UgZm91bmQgc2l0dWF0aW9uIHdoZXJlIGhhdmluZyB0ZXN0IG1vZHVsZXMgYmV5b25kCi1gZ3JlbWxpbi10ZXN0YCB3b3VsZCBoYXZlIGJlZW4gaGVscGZ1bCwgc28gYSBwYXJlbnQgbW9kdWxlIHRoYXQgaGVsZCBhbGwgdGhvc2Ugd291bGQgcHJvYmFibHkgYmUgc21hcnQuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorYGdyZW1saW4tdGVzdGAgd291bGQgaGF2ZSBiZWVuIGhlbHBmdWwsIHNvIGEgcGFyZW50IG1vZHVsZSB0aGF0IGhlbGQgYWxsIHRob3NlIHdvdWxkIHByb2JhYmx5IGJlIHNtYXJ0LgorCis9PSBFbGVtZW50cyBhbmQgSURzCisKK0luIGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA1MVtUSU5LRVJQT1AtMjA1MV0gd2UgdHJpZWQgdG8gbWFrZSB2ZXJ0ZXggcHJvcGVydHkgaWRzIGxvY2FsIHRvIHRoZWlyIHZlcnRleC4gU2V2ZXJhbCBhcHByb2FjaGVzIHdlcmUgbGVhZGluZyBub3doZXJlLCBpbiBtb3N0IGNhc2VzIHdlIGp1c3QgYnJva2UgdGhlIEdyeW8gY29tcGF0aWJpbGl0eSB0ZXN0IHN1aXRlLiBUaGUgYmFzaWMgaWRlYSB3YXMgdG8gcmVtZW1iZXIgdGhlIHBhcmVudCBlbGVtZW50IChhdCBsZWFzdCBpdHMgaWQpIGFuZCB1c2UgaXQgaW4gcHJvcGVydHkgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoaXMgd2F5LCB0aGUgcHJvcGVydHkgYFtuYW1lLT5tYXJrb11gIHdvdWxkIG9ubHkgbWF0Y2ggYW5vdGhlciBgW25hbWUtPm1hcmtvXWAgcHJvcGVydHkgaWYgdGhlIHBhcmVudCBlbGVtZW50cyB3ZXJlIHRoZSBzYW1lLiBJbiB0aGUgZW5kIGl0IHdhcyBxdWVzdGlvbmVkIGlmIHRoYXQncyBldmVuIHRoZSByaWdodCBhcHByb2FjaCAvIHdoYXQgdXNlcnMgZXhwZWN0LiBGcm9tIGEgdXNlciBwZXJzcGVjdGl2ZSBpdCB3b3VsZCBwcm9iYWJseSBtYWtlIG1vcmUgc2Vuc2UgaWYgdHdvIHByb3BlcnRpZXMgd291bGQgbWF0Y2ggaWYgdGhlIGtleXMgYW5kIHZhbHVlcyBtYXRjaC4gVGhhdCBzYWlkLCB3ZSBzaG91bGQgcXVlc3Rpb24gd2hldGhlciB3ZSBhY3R1YWxseSBuZWVkIGlkcyBvbiBwcm9wZXJ0aWVzIGFuZCB0aHVzIHdoZXRoZXIgcHJvcGVydGllcyBhcmUgYWN0dWFsbHkgYGBFbGVtZW50YGBzLgorCis9PT0gQ29tbWVudHMgW2RrXQorCitJbiBteSBvcGluaW9uLCBvbmx5IHZlcnRpY2VzIHNob3VsZCBoYXZlIGdsb2JhbGx5IHVuaXF1ZSBpZHMuIEVkZ2UgaWRzIHNob3VsZCBiZSBsb2NhbCB0byB0aGUgb3V0LXZlcnRleCAodGhhdCByZXF1aXJlcyB0aGF0IHdlICJyZW1lbWJlciIgdGhlIG91dC12ZXJ0ZXggaWQsIGV2ZW4gaWYgdGhlIGVkZ2UgaXMgZGV0YWNoZWQpIGFuZCBwcm9wZXJ0aWVzIHNob3VsZCBoYXZlIG5vIGlkcyBhdCBhbGwsIHRoZXkgY2FuIGJlIHNpbXBseSBpZGVudGlmaWVkIGJ5IHRoZWlyIGtleSAob3Iga2V5IGFuZCB2YWx1ZSBpZiB3ZSBkZWNpZGUgdG8ga2VlcCBtdWx0aS1wcm9wZXJ0aWVzKS4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL2Rldi9pby9ncmFwaGJpbmFyeS5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9pby9ncmFwaGJpbmFyeS5hc2NpaWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGQwYWMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zcmMvZGV2L2lvL2dyYXBoYmluYXJ5LmFzY2lpZG9jCkBAIC0wLDAgKzEsNzgxIEBACisvLy8vCitMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKK2NvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAordGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgorVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKKyh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCit0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworLy8vLworCitbW2dyYXBoYmluYXJ5XV0KKz0gR3JhcGhCaW5hcnkKKworR3JhcGhCaW5hcnkgaXMgYSBiaW5hcnkgc2VyaWFsaXphdGlvbiBmb3JtYXQgc3VpdGFibGUgZm9yIG9iamVjdCB0cmVlcywgZGVzaWduZWQgdG8gcmVkdWNlIHNlcmlhbGl6YXRpb24KK292ZXJoZWFkIG9uIGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciwgYXMgd2VsbCBhcyBsaW1pdGluZyB0aGUgc2l6ZSBvZiB0aGUgcGF5bG9hZCB0aGF0IGlzIHRyYW5zbWl0dGVkIG92ZXIgdGhlCit3aXJlLgorCitJdCBkZXNjcmliZXMgYXJiaXRyYXJ5IG9iamVjdCBncmFwaHMgd2l0aCBhIGZ1bGx5LXF1YWxpZmllZCBmb3JtYXQ6CisKK1tzb3VyY2VdCistLS0tCit7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfQorLS0tLQorCitXaGVyZToKKworKiBge3R5cGVfY29kZX1gIGlzIGEgc2luZ2xlIHVuc2lnbmVkIGJ5dGUgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG51bWJlci4KKyogYHt0eXBlX2luZm99YCBpcyBhbiBvcHRpb25hbCBzZXF1ZW5jZSBvZiBieXRlcyBwcm92aWRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgdHlwZSByZXByZXNlbnRlZC4gVGhpcyBpcworc3BlY2lhbGx5IHVzZWZ1bCBmb3IgcmVwcmVzZW50aW5nIGNvbXBsZXggYW5kIGN1c3RvbSB0eXBlcy4KKyogYHt2YWx1ZV9mbGFnfWAgaXMgYSBzaW5nbGUgYnl0ZSBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbHVlLiBGbGFncyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZzoKKyoqIGAweDAxYCBUaGUgdmFsdWUgaXMgYG51bGxgLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIG5vIGJ5dGVzIGZvciBge3ZhbHVlfWAgd2lsbCBiZSBwcm92aWRlZC4KKyogYHt2YWx1ZX1gIGlzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgd2hpY2ggY29udGVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB0eXBlLgorCitBbGwgZW5jb2RpbmdzIGFyZSBiaWctZW5kaWFuLgorCitRdWljayBleGFtcGxlcywgdXNpbmcgaGV4YWRlY2ltYWwgbm90YXRpb24gdG8gcmVwcmVzZW50IGVhY2ggYnl0ZToKKworLSBgMDEgMDAgMDAgMDAgMDAgMDFgOiBhIDMyLWJpdCBpbnRlZ2VyIG51bWJlciwgdGhhdCByZXByZXNlbnRzIHRoZSBkZWNpbWFsIG51bWJlciAxLiBJdOKAmXMgY29tcG9zZWQgYnkgdGhlCit0eXBlX2NvZGUgYDB4MDFgLCBhbmQgZW1wdHkgZmxhZyB2YWx1ZSBgMHgwMGAgYW5kIGZvdXIgYnl0ZXMgdG8gZGVzY3JpYmUgdGhlIHZhbHVlLgorLSBgMDEgMDAgMDAgMDAgMDAgZmZgOiBhIDMyLWJpdCBpbnRlZ2VyLCByZXByZXNlbnRpbmcgdGhlIG51bWJlciAyNTYuCistIGAwMSAwMWA6IGEgbnVsbCB2YWx1ZSBmb3IgYSAzMi1iaXQgaW50ZWdlci4gSXTigJlzIGNvbXBvc2VkIGJ5IHRoZSB0eXBlX2NvZGUgYDB4MDFgLCBhbmQgYSBudWxsIGZsYWcgdmFsdWUgYDB4MDFgLgorLSBgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDFgOiBhIDY0LWJpdCBpbnRlZ2VyIG51bWJlciAxLiBJdOKAmXMgY29tcG9zZWQgYnkgdGhlIHR5cGVfY29kZSBgMHgwMmAsIGVtcHR5IGZsYWdzIGFuZAorZWlnaHQgYnl0ZXMgdG8gZGVzY3JpYmUgdGhlIHZhbHVlLgorCis9PSBWZXJzaW9uIDEuMAorCis9PT0gRm9yd2FyZCBDb21wYXRpYmlsaXR5CisKK1RoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCBzdXBwb3J0cyBuZXcgdHlwZXMgYmVpbmcgYWRkZWQgd2l0aG91dCB0aGUgbmVlZCB0byBpbnRyb2R1Y2UgYSBuZXcgdmVyc2lvbi4KKworQ2hhbmdlcyB0byBleGlzdGluZyB0eXBlcyByZXF1aXJlIG5ldyByZXZpc2lvbi4KKworPT09IERhdGEgVHlwZSBDb2RlcworCis9PT09IENvcmUgRGF0YSBUeXBlcworCistIGAweDAxYDogSW50CistIGAweDAyYDogTG9uZworLSBgMHgwM2A6IFN0cmluZworLSBgMHgwNGA6IERhdGUKKy0gYDB4MDVgOiBUaW1lc3RhbXAKKy0gYDB4MDZgOiBDbGFzcworLSBgMHgwN2A6IERvdWJsZQorLSBgMHgwOGA6IEZsb2F0CistIGAweDA5YDogTGlzdAorLSBgMHgwYWA6IE1hcAorLSBgMHgwYmA6IFNldAorLSBgMHgwY2A6IFVVSUQKKy0gYDB4MGRgOiBFZGdlCistIGAweDBlYDogUGF0aAorLSBgMHgwZmA6IFByb3BlcnR5CistIGAweDEwYDogVGlua2VyR3JhcGgKKy0gYDB4MTFgOiBWZXJ0ZXgKKy0gYDB4MTJgOiBWZXJ0ZXhQcm9wZXJ0eQorLSBgMHgxM2A6IEJhcnJpZXIKKy0gYDB4MTRgOiBCaW5kaW5nCistIGAweDE1YDogQnl0ZWNvZGUKKy0gYDB4MTZgOiBDYXJkaW5hbGl0eQorLSBgMHgxN2A6IENvbHVtbgorLSBgMHgxOGA6IERpcmVjdGlvbgorLSBgMHgxOWA6IE9wZXJhdG9yCistIGAweDFhYDogT3JkZXIKKy0gYDB4MWJgOiBQaWNrCistIGAweDFjYDogUG9wCistIGAweDFkYDogTGFtYmRhCistIGAweDFlYDogUAorLSBgMHgxZmA6IFNjb3BlCistIGAweDIwYDogVAorLSBgMHgyMWA6IFRyYXZlcnNlcgorLSBgMHgyMmA6IEJpZ0RlY2ltYWwKKy0gYDB4MjNgOiBCaWdJbnRlZ2VyCistIGAweDI0YDogQnl0ZQorLSBgMHgyNWA6IEJ5dGVCdWZmZXIKKy0gYDB4MjZgOiBTaG9ydAorLSBgMHgyN2A6IEJvb2xlYW4KKy0gYDB4MjhgOiBUZXh0UAorLSBgMHgyOWA6IFRyYXZlcnNhbFN0cmF0ZWd5CistIGAweDJhYDogQnVsa1NldAorLSBgMHgyYmA6IFRyZWUKKy0gYDB4MmNgOiBNZXRyaWNzCistIGAweDJkYDogVHJhdmVyc2FsTWV0cmljcworLSBgMHhmZWA6IFVuc3BlY2lmaWVkIG51bGwgb2JqZWN0CistIGAweDAwYDogQ3VzdG9tCisKKz09PT0gRXh0ZW5kZWQgVHlwZXMKKworLSBgMHg4MGA6IENoYXIKKy0gYDB4ODFgOiBEdXJhdGlvbgorLSBgMHg4MmA6IEluZXRBZGRyZXNzCistIGAweDgzYDogSW5zdGFudAorLSBgMHg4NGA6IExvY2FsRGF0ZQorLSBgMHg4NWA6IExvY2FsRGF0ZVRpbWUKKy0gYDB4ODZgOiBMb2NhbFRpbWUKKy0gYDB4ODdgOiBNb250aERheQorLSBgMHg4OGA6IE9mZnNldERhdGVUaW1lCistIGAweDg5YDogT2Zmc2V0VGltZQorLSBgMHg4YWA6IFBlcmlvZAorLSBgMHg4YmA6IFllYXIKKy0gYDB4OGNgOiBZZWFyTW9udGgKKy0gYDB4OGRgOiBab25lZERhdGVUaW1lCistIGAweDhlYDogWm9uZU9mZnNldAorCis9PT0gTnVsbCBoYW5kbGluZworCitUaGUgc2VyaWFsaXphdGlvbiBmb3JtYXQgZGVmaW5lcyB0d28gd2F5cyB0byByZXByZXNlbnQgbnVsbCB2YWx1ZXM6CisKKy0gVW5zcGVjaWZpZWQgbnVsbCBvYmplY3QKKy0gRnVsbHktcXVhbGlmaWVkIG51bGwKKworV2hlbiBhIHBhcmVudCB0eXBlIGNhbiBjb250YWluIGFueSBzdWJ0eXBlIGUuZy4sIGEgb2JqZWN0IGNvbGxlY3Rpb24sIGEgYG51bGxgIHZhbHVlIG11c3QgYmUgcmVwcmVzZW50ZWQgdXNpbmcgdGhlCisiVW5zcGVjaWZpZWQgTnVsbCBPYmplY3QiIHR5cGUgY29kZSBhbmQgdGhlIG51bGwgdmFsdWUgZmxhZy4KKworSW4gY29udHJhc3QsIHdoZW4gdGhlIHBhcmVudCB0eXBlIGNvbnRhaW5zIGEgdHlwZSBwYXJhbWV0ZXIgdGhhdCBtdXN0IGJlIHNwZWNpZmllZCwgYSBgbnVsbGAgdmFsdWUgaXMgcmVwcmVzZW50ZWQgdXNpbmcKK2EgZnVsbHktcXVhbGlmaWVkIG9iamVjdCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgdHlwZSBjb2RlIGFuZCB0eXBlIGluZm9ybWF0aW9uLgorCis9PT0gRGF0YSBUeXBlIEZvcm1hdHMKKworPT09PSBJbnQKKworRm9ybWF0OiA0LWJ5dGUgdHdvJ3MgY29tcGxlbWVudCBpbnRlZ2VyLgorCitFeGFtcGxlIHZhbHVlczoKKworLSBgMDAgMDAgMDAgMDFgOiAzMi1iaXQgaW50ZWdlciBudW1iZXIgMS4KKy0gYDAwIDAwIDAxIDAxYDogMzItYml0IGludGVnZXIgbnVtYmVyIDI1Ni4KKy0gYGZmIGZmIGZmIGZmYDogMzItYml0IGludGVnZXIgbnVtYmVyIC0xLgorLSBgZmYgZmYgZmYgZmVgOiAzMi1iaXQgaW50ZWdlciBudW1iZXIgLTIuCisKKz09PT0gTG9uZworCitGb3JtYXQ6IDQtYnl0ZSB0d28ncyBjb21wbGVtZW50IGludGVnZXIuCisKK0V4YW1wbGUgdmFsdWVzCisKKy0gYDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAxYDogNjQtYml0IGludGVnZXIgbnVtYmVyIDEuCistIGBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZWA6IDY0LWJpdCBpbnRlZ2VyIG51bWJlciAtMi4KKworPT09PSBTdHJpbmcKKworRm9ybWF0OiBge2xlbmd0aH17dGV4dF92YWx1ZX1gCisKK1doZXJlOgorCistIGB7bGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHRleHQuIExlbmd0aCBpcyBhIHBvc2l0aXZlIG51bWJlciBvciB6ZXJvIHRvIHJlcHJlc2VudAordGhlIGVtcHR5IHN0cmluZy4KKy0gYHt0ZXh0X3ZhbHVlfWAgaXMgYSBzZXF1ZW5jZSBvZiBieXRlcyByZXByZXNlbnRpbmcgdGhlIHN0cmluZyB2YWx1ZSBpbiBVVEY4IGVuY29kaW5nLgorCitFeGFtcGxlIHZhbHVlcworCistIGAwMCAwMCAwMCAwMyA2MSA2MiA2M2A6IHRoZSBzdHJpbmcgJ2FiYycuCistIGAwMCAwMCAwMCAwNCA2MSA2MiA2MyA2NGA6IHRoZSBzdHJpbmcgJ2FiY2QnLgorLSBgMDAgMDAgMDAgMDBgOiB0aGUgZW1wdHkgc3RyaW5nICcnLgorCis9PT09IERhdGUKKworRm9ybWF0OiBBbiA4LWJ5dGUgdHdvJ3MgY29tcGxlbWVudCBzaWduZWQgaW50ZWdlciByZXByZXNlbnRpbmcgYSBtaWxsaXNlY29uZC1wcmVjaXNpb24gb2Zmc2V0IGZyb20gdGhlIHVuaXggZXBvY2guCisKK0V4YW1wbGUgdmFsdWVzCisKKy0gYDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwYDogVGhlIG1vbWVudCBpbiB0aW1lIDE5NzAtMDEtMDFUMDA6MDA6MDAuMDAwWi4KKy0gYGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmYDogVGhlIG1vbWVudCBpbiB0aW1lIDE5NjktMTItMzFUMjM6NTk6NTkuOTk5Wi4KKworPT09PSBUaW1lc3RhbXAKKworRm9ybWF0OiBUaGUgc2FtZSBhcyBgRGF0ZWAuCisKKz09PT0gQ2xhc3MKKworRm9ybWF0OiBBIGBTdHJpbmdgIGNvbnRhaW5pbmcgdGhlIGZxY24uCisKKz09PT0gRG91YmxlCisKK0Zvcm1hdDogOCBieXRlcyByZXByZXNlbnRpbmcgSUVFRSA3NTQgZG91YmxlLXByZWNpc2lvbiBiaW5hcnkgZmxvYXRpbmctcG9pbnQgZm9ybWF0LgorCitFeGFtcGxlIHZhbHVlcworCistIGAzZiBmMCAwMCAwMCAwMCAwMCAwMCAwMGA6IERvdWJsZSAxCistIGAzZiA3MCAwMCAwMCAwMCAwMCAwMCAwMGA6IERvdWJsZSAwLjAwMzkwNjI1CistIGAzZiBiOSA5OSA5OSA5OSA5OSA5OSA5YWA6IERvdWJsZSAwLjEKKworPT09PSBGbG9hdAorCitGb3JtYXQ6IDQgYnl0ZXMgcmVwcmVzZW50aW5nIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24gYmluYXJ5IGZsb2F0aW5nLXBvaW50IGZvcm1hdC4KKworRXhhbXBsZSB2YWx1ZXMKKworLSBgM2YgODAgMDAgMDBgOiBGbG9hdCAxCistIGAzZSBjMCAwMCAwMGA6IEZsb2F0IDAuMzc1CisKKz09PT0gTGlzdAorCitBbiBvcmRlcmVkIGNvbGxlY3Rpb24gb2YgaXRlbXMuCisKK0Zvcm1hdDogYHtsZW5ndGh9e2l0ZW1fMH0uLi57aXRlbV9ufWAKKworV2hlcmU6CisKKy0gYHtsZW5ndGh9YCBpcyBhbiBgSW50YCBkZXNjcmliaW5nIHRoZSBsZW5ndGggb2YgdGhlIGNvbGxlY3Rpb24uCistIGB7aXRlbV8wfS4uLntpdGVtX259YCBhcmUgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0LiBge2l0ZW1faX1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mCitge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorCis9PT09IFNldAorCitBIGNvbGxlY3Rpb24gdGhhdCBjb250YWlucyBubyBkdXBsaWNhdGUgZWxlbWVudHMuCisKK0Zvcm1hdDogU2FtZSBhcyBgTGlzdGAuCisKKz09PT0gTWFwCisKK0EgZGljdGlvbmFyeSBvZiBrZXlzIHRvIHZhbHVlcy4KKworRm9ybWF0OiBge2xlbmd0aH17aXRlbV8wfS4uLntpdGVtX259YAorCitXaGVyZToKKworLSBge2xlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIGxlbmd0aCBvZiB0aGUgbWFwLgorLSBge2l0ZW1fMH0uLi57aXRlbV9ufWAgYXJlIHRoZSBpdGVtcyBvZiB0aGUgbWFwLiBge2l0ZW1faX1gIGlzIHNlcXVlbmNlIG9mIDIgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlcyBvbmUKK3JlcHJlc2VudGluZyB0aGUga2V5IGFuZCB0aGUgZm9sbG93aW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUsIGVhY2ggY29tcG9zZWQgb2YKK2B7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCisKKz09PT0gVVVJRAorCitBIDEyOC1iaXQgdW5pdmVyc2FsbHkgdW5pcXVlIGlkZW50aWZpZXIuCisKK0Zvcm1hdDogMTYgYnl0ZXMgcmVwcmVzZW50aW5nIHRoZSB1dWlkLgorCitFeGFtcGxlCisKKy0gYDAwIDExIDIyIDMzIDQ0IDU1IDY2IDc3IDg4IDk5IGFhIGJiIGNjIGRkIGVlIGZmYDogVXVpZCAwMDExMjIzMy00NDU1LTY2NzctODg5OS1hYWJiY2NkZGVlZmYuCisKKz09PT0gRWRnZQorCitGb3JtYXQ6IGB7aWR9e2xhYmVsfXtpblZJZH17aW5WTGFiZWx9e291dFZJZH17b3V0VkxhYmVsfXtwYXJlbnR9e3Byb3BlcnRpZXN9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7aW5WSWR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge2luVkxhYmVsfWAgaXMgYSBgU3RyaW5nYCB2YWx1ZS4KKy0gYHtvdXRWSWR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge291dFZMYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7cGFyZW50fWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YCB3aGljaCBjb250YWlucwordGhlIHBhcmVudCBgVmVydGV4YC4gTm90ZSB0aGF0IGFzIFRpbmtlclBvcCBjdXJyZW50bHkgc2VuZCAicmVmZXJlbmNlcyIgb25seSwgdGhpcyB2YWx1ZSB3aWxsIGFsd2F5cyBiZSBgbnVsbGAuCistIGB7cHJvcGVydGllc31gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgd2hpY2ggY29udGFpbnMKK3RoZSBwcm9wZXJ0aWVzIGZvciB0aGUgZWRnZS4gTm90ZSB0aGF0IGFzIFRpbmtlclBvcCBjdXJyZW50bHkgc2VuZCAicmVmZXJlbmNlcyIgb25seSB0aGlzIHZhbHVlIHdpbGwgYWx3YXlzIGJlIGBudWxsYC4KKworPT09PSBQYXRoCisKK0Zvcm1hdDogYHtsYWJlbHN9e29iamVjdHN9YAorCitXaGVyZToKKworLSBge2xhYmVsc31gIGlzIGEgYExpc3RgIGluIHdoaWNoIGVhY2ggaXRlbSBpcyBhIGBTZXRgIG9mIGBTdHJpbmdgLgorLSBge29iamVjdHN9YCBpcyBhIGBMaXN0YCBvZiBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWVzLgorCis9PT09IFByb3BlcnR5CisKK0Zvcm1hdDogYHtrZXl9e3ZhbHVlfXtwYXJlbnR9YAorCitXaGVyZToKKworLSBge2tleX1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7dmFsdWV9YCAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtwYXJlbnR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gIHdoaWNoIGlzIGVpdGhlcgorYW4gYEVkZ2VgIG9yIGBWZXJ0ZXhQcm9wZXJ0eWAuIE5vdGUgdGhhdCBhcyBUaW5rZXJQb3AgY3VycmVudGx5IHNlbmRzICJyZWZlcmVuY2VzIiBvbmx5IHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUKK2BudWxsYC4KKworPT09PSBHcmFwaAorCitBIGNvbGxlY3Rpb24gb2YgdmVydGljZXMgYW5kIGVkZ2VzLiBOb3RlIHRoYXQgd2hpbGUgc2ltaWxhciB0aGUgdmVydGV4L2VkZ2UgZm9ybWF0cyBoZXJlIGhvbGQgc29tZSBkaWZmZXJlbmNlcyBhcworY29tcGFyZWQgdG8gdGhlIGBWZXJ0ZXhgIGFuZCBgRWRnZWAgZm9ybWF0cyB1c2VkIGZvciBzdGFuZGFyZCBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaWF0aW9uIG9mIGEgc2luZ2xlIGdyYXBoIGVsZW1lbnQuCisKK0Zvcm1hdDogYHt2bGVuZ3RofXt2ZXJ0ZXhfMH0uLi57dmVydGV4X259e2VsZW5ndGh9e2VkZ2VfMH0uLi57ZWRnZV9ufWAKKworV2hlcmU6CisKKy0gYHt2bGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgbnVtYmVyIG9mIHZlcnRpY2VzLgorLSBge3ZlcnRleF8wfS4uLnt2ZXJ0ZXhfbn1gIGFyZSB2ZXJ0aWNlcyBhcyBkZXNjcmliZWQgYmVsb3cuCistIGB7ZWxlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIG51bWJlciBvZiBlZGdlcy4KKy0gYHtlZGdlXzB9Li4ue2VkZ2Vfbn1gIGFyZSBlZGdlcyBhcyBkZXNjcmliZWQgYmVsb3cuCisKK1ZlcnRleCBGb3JtYXQ6IGB7aWR9e2xhYmVsfXtwbGVuZ3RofXtwcm9wZXJ0eV8wfS4uLntwcm9wZXJ0eV9ufWAKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7cGxlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIG51bWJlciBvZiBwcm9wZXJ0aWVzIG9uIHRoZSB2ZXJ0ZXguCistIGB7cHJvcGVydHlfMH0uLi57cHJvcGVydHlfbn1gIGFyZSB0aGUgdmVydGV4IHByb3BlcnRpZXMgY29uc2lzdGluZyBvZiBge2lkfXtsYWJlbH17dmFsdWV9e3BhcmVudH17cHJvcGVydGllc31gIGFzCitkZWZpbmVkIGluIGBWZXJ0ZXhQcm9wZXJ0eWAgd2hlcmUgdGhlIGB7cGFyZW50fWAgaXMgYWx3YXlzIGBudWxsYCBhbmQgYHtwcm9wZXJ0aWVzfWAgaXMgYSBgTGlzdGAgb2YgYFByb3BlcnR5YCBvYmplY3RzLgorCitFZGdlIEZvcm1hdDogYHtpZH17bGFiZWx9e2luVklkfXtpblZMYWJlbH17b3V0VklkfXtvdXRWTGFiZWx9e3BhcmVudH17cHJvcGVydGllc31gCisKK1doZXJlOgorCistIGB7aWR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge2xhYmVsfWAgaXMgYSBgU3RyaW5nYCB2YWx1ZS4KKy0gYHtpblZJZH1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCistIGB7aW5WTGFiZWx9YCBpcyBhbHdheXMgYG51bGxgLgorLSBge291dFZJZH1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCistIGB7b3V0VkxhYmVsfWAgaXMgYWx3YXlzIGBudWxsYC4KKy0gYHtwYXJlbnR9YCBpcyBhbHdheXMgYG51bGxgLgorLSBge3Byb3BlcnRpZXN9YCBpcyBhIGBMaXN0YCBvZiBgUHJvcGVydHlgIG9iamVjdHMuCisKKz09PT0gVmVydGV4CisKK0Zvcm1hdDogYHtpZH17bGFiZWx9e3Byb3BlcnRpZXN9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7cHJvcGVydGllc31gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgd2hpY2ggY29udGFpbnMKK3Byb3BlcnRpZXMuIE5vdGUgdGhhdCBhcyBUaW5rZXJQb3AgY3VycmVudGx5IHNlbmQgInJlZmVyZW5jZXMiIG9ubHksIHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUgYG51bGxgLgorCis9PT09IFZlcnRleFByb3BlcnR5CisKK0Zvcm1hdDogYHtpZH17bGFiZWx9e3ZhbHVlfXtwYXJlbnR9e3Byb3BlcnRpZXN9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7dmFsdWV9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge3BhcmVudH1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgd2hpY2ggY29udGFpbnMKK3RoZSBwYXJlbnQgYFZlcnRleGAuIE5vdGUgdGhhdCBhcyBUaW5rZXJQb3AgY3VycmVudGx5IHNlbmQgInJlZmVyZW5jZXMiIG9ubHksIHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUgYG51bGxgLgorLSBge3Byb3BlcnRpZXN9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gIHdoaWNoIGNvbnRhaW5zCitwcm9wZXJ0aWVzLiBOb3RlIHRoYXQgYXMgVGlua2VyUG9wIGN1cnJlbnRseSBzZW5kICJyZWZlcmVuY2VzIiBvbmx5LCB0aGlzIHZhbHVlIHdpbGwgYWx3YXlzIGJlIGBudWxsYC4KKworPT09PSBCYXJyaWVyCisKK0Zvcm1hdDogYSBzaW5nbGUgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBlbnVtIHZhbHVlLgorCis9PT09IEJpbmRpbmcKKworRm9ybWF0OiBge2tleX17dmFsdWV9YAorCitXaGVyZToKKworLSBge2tleX1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7dmFsdWV9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorCis9PT09IEJ5dGVjb2RlCisKK0Zvcm1hdDogYHtzdGVwc19sZW5ndGh9e3N0ZXBfMH0uLi57c3RlcF9ufXtzb3VyY2VzX2xlbmd0aH17c291cmNlXzB9Li4ue3NvdXJjZV9ufWAKKworV2hlcmU6CisKKyogYHtzdGVwc19sZW5ndGh9YCBpcyBhbiBgSW50YCB2YWx1ZSBkZXNjcmliaW5nIHRoZSBhbW91bnQgb2Ygc3RlcHMuCisqIGB7c3RlcF9pfWAgaXMgY29tcG9zZWQgb2YgYHtuYW1lfXt2YWx1ZXNfbGVuZ3RofXt2YWx1ZV8wfS4uLnt2YWx1ZV9ufWAsIHdoZXJlOgorKiogYHtuYW1lfWAgaXMgYSBTdHJpbmcuCisqKiBge3ZhbHVlc19sZW5ndGh9YCBpcyBhbiBgSW50YCBkZXNjcmliaW5nIHRoZSBhbW91bnQgdmFsdWVzLgorKiogYHt2YWx1ZV9pfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YCBkZXNjcmliaW5nIHRoZSBzdGVwIGFyZ3VtZW50LgorKiBge3NvdXJjZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgdmFsdWUgZGVzY3JpYmluZyB0aGUgYW1vdW50IG9mIHNvdXJjZSBpbnN0cnVjdGlvbnMuCisqIGB7c291cmNlX2l9YCBpcyBjb21wb3NlZCBvZiBge25hbWV9e3ZhbHVlc19sZW5ndGh9e3ZhbHVlXzB9Li4ue3ZhbHVlX259YCwgd2hlcmU6CisqKiBge25hbWV9YCBpcyBhIGBTdHJpbmdgLgorKiogYHt2YWx1ZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYW1vdW50IHZhbHVlcy4KKyoqIGB7dmFsdWVfaX1gICBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorCis9PT09IENhcmRpbmFsaXR5CisKK0Zvcm1hdDogYSBzaW5nbGUgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBlbnVtIHZhbHVlLgorCis9PT09IENvbHVtbgorCitGb3JtYXQ6IGEgc2luZ2xlIGBTdHJpbmdgIHJlcHJlc2VudGluZyB0aGUgZW51bSB2YWx1ZS4KKworPT09PSBEaXJlY3Rpb24KKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gT3BlcmF0b3IKKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gT3JkZXIKKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gUGljaworCitGb3JtYXQ6IGEgc2luZ2xlIGBTdHJpbmdgIHJlcHJlc2VudGluZyB0aGUgZW51bSB2YWx1ZS4KKworPT09PSBQb3AKKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gTGFtYmRhCisKK0Zvcm1hdDogYHtsYW5ndWFnZX17c2NyaXB0fXthcmd1bWVudHNfbGVuZ3RofWAKK1doZXJlOgorCistIGB7bGFuZ3VhZ2V9YCBpcyBhIGBTdHJpbmdgLgorLSBge3NjcmlwdH1gIGlzIGEgYFN0cmluZ2AuCistIGB7YXJndW1lbnRzX2xlbmd0aH1gIGlzIGFuIGBJbnRgLgorCis9PT09IFAKKworRm9ybWF0OiBge25hbWV9e3ZhbHVlc19sZW5ndGh9e3ZhbHVlXzB9Li4ue3ZhbHVlX259YAorCitXaGVyZToKKworLSBge25hbWV9YCBpcyBhIFN0cmluZy4KKy0gYHt2YWx1ZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYW1vdW50IHZhbHVlcy4KKy0gYHt2YWx1ZV9pfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKworPT09PSBTY29wZQorCitGb3JtYXQ6IGEgc2luZ2xlIGBTdHJpbmdgIHJlcHJlc2VudGluZyB0aGUgZW51bSB2YWx1ZS4KKworPT09PSBUCisKK0Zvcm1hdDogYSBzaW5nbGUgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBlbnVtIHZhbHVlLgorCis9PT09IFRyYXZlcnNlcgorCitGb3JtYXQ6IGB7YnVsa317dmFsdWV9YAorCitXaGVyZToKKworLSBge2J1bGt9YCBpcyBhbiBgSW50YC4KKy0gYHt2YWx1ZX1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCisKKz09PT0gQmlnRGVjaW1hbAorCitSZXByZXNlbnRzIGFuIGFyYml0cmFyeS1wcmVjaXNpb24gc2lnbmVkIGRlY2ltYWwgbnVtYmVyLCBjb25zaXN0aW5nIG9mIGFuIGFyYml0cmFyeSBwcmVjaXNpb24gaW50ZWdlciB1bnNjYWxlZCB2YWx1ZQorYW5kIGEgMzItYml0IGludGVnZXIgc2NhbGUuCisKK0Zvcm1hdDogYHtzY2FsZX17dW5zY2FsZWRfdmFsdWV9YAorCitXaGVyZToKKworLSBge3NjYWxlfWAgaXMgYW4gYEludGAuCistIGB7dW5zY2FsZWRfdmFsdWV9YCBpcyBhIGBCaWdJbnRlZ2VyYC4KKworPT09PSBCaWdJbnRlZ2VyCisKK0EgdmFyaWFibGUtbGVuZ3RoIHR3bydzIGNvbXBsZW1lbnQgZW5jb2Rpbmcgb2YgYSBzaWduZWQgaW50ZWdlci4KKworRm9ybWF0OiBge2xlbmd0aH17dmFsdWV9YAorCitXaGVyZToKKworLSBge2xlbmd0aH1gIGlzIGFuIGBJbnRgLgorLSBge3ZhbHVlfWAgaXMgdGhlIHR3bydzIGNvbXBsZW1lbnQgb2YgdGhlIGBCaWdJbnRlZ2VyYC4KKworRXhhbXBsZSB2YWx1ZXMgb2YgdGhlIHR3bydzIGNvbXBsZW1lbnQgYHt2YWx1ZX1gOgorCistIGAwMGA6IEludGVnZXIgMC4KKy0gYDAxYDogSW50ZWdlciAxLgorLSBgMTI3YDogSW50ZWdlciA3Zi4KKy0gYDAwIDgwYDogSW50ZWdlciAxMjguCistIGBmZmA6IEludGVnZXIgLTEuCistIGA4MGA6IEludGVnZXIgLTEyOC4KKy0gYGZmIDdmYDogSW50ZWdlciAtMTI5LgorCis9PT09IEJ5dGUKKworQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlci4KKworPT09PSBCeXRlQnVmZmVyCisKK0Zvcm1hdDogYHtsZW5ndGh9e3ZhbHVlfWAKKworV2hlcmU6CisKKy0gYHtsZW5ndGh9YCBpcyBhbiBgSW50YCByZXByZXNlbnRpbmcgdGhlIGFtb3VudCBvZiBieXRlcyBjb250YWluZWQgaW4gdGhlIHZhbHVlLgorLSBge3ZhbHVlfWAgc2VxdWVuY2Ugb2YgYnl0ZXMuCisKKz09PT0gU2hvcnQKKworRm9ybWF0OiAyLWJ5dGUgdHdvJ3MgY29tcGxlbWVudCBpbnRlZ2VyLgorCis9PT09IEJvb2xlYW4KKworRm9ybWF0OiBBIHNpbmdsZSBieXRlIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGAweDAxYCB3aGVuIGl0J3MgYHRydWVgIGFuZCBgMGAgb3RoZXJ3aXNlLgorCis9PT09IFRleHRQCisKK0Zvcm1hdDogYHtwcmVkaWNhdGV9e3ZhbHVlc19sZW5ndGh9e3ZhbHVlXzB9Li4ue3ZhbHVlX259YAorCitXaGVyZToKKworLSBge25hbWV9YCBpcyBhIFN0cmluZy4KKy0gYHt2YWx1ZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYW1vdW50IHZhbHVlcy4KKy0gYHt2YWx1ZV9pfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKworPT09PSBUcmF2ZXJzYWxTdHJhdGVneQorCitGb3JtYXQ6IGB7c3RyYXRlZ3lfY2xhc3N9e2NvbmZpZ3VyYXRpb259YAorCitXaGVyZToKKworLSBge3N0cmF0ZWd5X2NsYXNzfWAgaXMgYSBgQ2xhc3NgIHRoYXQgaXMgb2YgdHlwZSBgVHJhdmVyc2FsU3RyYXRlZ3lgLgorLSBge2NvbmZpZ3VyYXRpb259YCBpcyBhIGBNYXBgIG9mIGRhdGEgdXNlZCB0byBjb25maWd1cmUgdGhlIHN0cmF0ZWd5IHRoYXQgd2lsbCBiZSBnaXZlbiB0byBhIGBUcmF2ZXJzYWxTdHJhdGVneWAgYGNyZWF0ZShDb25maWd1cmF0aW9uKWAgbWV0aG9kLgorCis9PT09IEJ1bGtTZXQKKworRm9ybWF0OiBge2xlbmd0aH17aXRlbV8wfS4uLntpdGVtX259YAorCitXaGVyZToKKworLSBge2xlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIGxlbmd0aCBvZiB0aGUgYEJ1bGtTZXRgLgorLSBge2l0ZW1fMH0uLi57aXRlbV9ufWAgYXJlIHRoZSBpdGVtcyBvZiB0aGUgYEJ1bGtTZXRgLiBge2l0ZW1faX1gIGlzIGEgc2VxdWVuY2Ugb2YgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YKK2B7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgZm9sbG93ZWQgYnkgdGhlICJidWxrIiB3aGljaCBpcyBhIGBMb25nYCB2YWx1ZS4KKworSWYgdGhlIGltcGxlbWVudGluZyBsYW5ndWFnZSBkb2VzIG5vdCBoYXZlIGEgYEJ1bGtTZXRgIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLCB0aGlzIGZvcm1hdCBjYW4gYmUgY29lcmNlZCB0byBhCitgTGlzdGAgYW5kIHN0aWxsIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50IHdpdGggR3JlbWxpbi4gU2ltcGx5ICJleHBhbmQgdGhlIGJ1bGsiIGJ5IGFkZGluZyB0aGUgaXRlbSB0byB0aGUgYExpc3RgIHRoZQorbnVtYmVyIG9mIHRpbWVzIHNwZWNpZmllZCBieSB0aGUgYnVsay4KKworPT09PSBUcmVlCisKK0Zvcm1hdDogYHtsZW5ndGh9e2l0ZW1fMH0uLi57aXRlbV9ufWAKKworV2hlcmU6CisKKy0gYHtsZW5ndGh9YCBpcyBhbiBgSW50YCBkZXNjcmliaW5nIHRoZSBhbW91bnQgb2YgaXRlbXMuCistIGB7aXRlbV8wfS4uLntpdGVtX259YCBhcmUgdGhlIGl0ZW1zIG9mIHRoZSBgVHJlZWAuIGB7aXRlbV9pfWAgaXMgY29tcG9zZWQgb2YgYSBge2tleX1gIHdoaWNoIGlzIGEgZnVsbHktcXVhbGlmaWVkIHR5cGVkIHZhbHVlCitmb2xsb3dlZCBieSBhIGB7VHJlZX1gLgorCis9PT09IE1ldHJpY3MKKworRm9ybWF0OiBge2lkfXtuYW1lfXtkdXJhdGlvbn17Y291bnRzfXthbm5vdGF0aW9uc317bmVzdGVkX21ldHJpY3N9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGlkZW50aWZpZXIuCistIGB7bmFtZX1gIGlzIGEgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBuYW1lLgorLSBge2R1cmF0aW9ufWAgaXMgYSBgTG9uZ2AgZGVzY3JpYmluZyB0aGUgZHVyYXRpb24gaW4gbmFub3NlY29uZHMuCistIGB7Y291bnRzfWAgaXMgYSBgTWFwYCBjb21wb3NlZCBieSBgU3RyaW5nYCBrZXlzIGFuZCBgTG9uZ2AgdmFsdWVzLgorLSBge2Fubm90YXRpb25zfWAgaXMgYSBgTWFwYCBjb21wb3NlZCBieSBgU3RyaW5nYCBrZXlzIGFuZCBhIHZhbHVlIG9mIGFueSB0eXBlLgorLSBge25lc3RlZF9tZXRyaWNzfWAgaXMgYSBgTGlzdGAgY29tcG9zZWQgYnkgYE1ldHJpY3NgIGl0ZW1zLgorCis9PT09IFRyYXZlcnNhbE1ldHJpY3MKKworRm9ybWF0OiBge2R1cmF0aW9ufXttZXRyaWNzfWAKKworV2hlcmU6CisKKy0gYHtkdXJhdGlvbn1gIGlzIGEgYExvbmdgIGRlc2NyaWJpbmcgdGhlIGR1cmF0aW9uIGluIG5hbm9zZWNvbmRzLgorLSBge21ldHJpY3N9YCBpcyBhIGBMaXN0YCBjb21wb3NlZCBieSBgTWV0cmljc2AgaXRlbXMuCisKKz09PT0gQ3VzdG9tCisKK0EgY3VzdG9tIHR5cGUsIHJlcHJlc2VudGVkIGFzIGEgYmxvYiB2YWx1ZS4KKworVHlwZSBJbmZvOiBge25hbWV9e2N1c3RvbV90eXBlX2luZm99YAorCitXaGVyZToKKworLSBge25hbWV9YCBpcyBhIGBTdHJpbmdgIGNvbnRhaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRleHQgaWRlbnRpZmllciBvZiB0aGUgY3VzdG9tIHR5cGUuCistIGB7Y3VzdG9tX3R5cGVfaW5mb31gIGlzIGEgYEJ5dGVCdWZmZXJgIHJlcHJlc2VudGluZyB0aGUgYWRkaXRpb25hbCB0eXBlIGluZm9ybWF0aW9uLCBzcGVjaWFsbHkgdXNlZnVsCitmb3IgY29tcGxleCBjdXN0b20gdHlwZXMuCisKK1ZhbHVlIGZvcm1hdDogYHtibG9ifWAKKworV2hlcmU6CisKKy0gYHtibG9ifWAgaXMgYSBgQnl0ZUJ1ZmZlcmAuCisKKz09PT0gVW5zcGVjaWZpZWQgTnVsbCBPYmplY3QKKworQSBgbnVsbGAgdmFsdWUgZm9yIGFuIHVuc3BlY2lmaWVkIE9iamVjdCB2YWx1ZS4KKworSXQncyByZXByZXNlbnRlZCB1c2luZyB0aGUgbnVsbCBge3ZhbHVlX2ZsYWd9YCBzZXQgYW5kIG5vIHNlcXVlbmNlIG9mIGJ5dGVzLgorCis9PT09IENoYXIKKworRm9ybWF0OiBvbmUgdG8gZm91ciBieXRlcyByZXByZXNlbnRpbmcgYSBzaW5nbGUgVVRGOCBjaGFyLCBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGUgc3RhbmRhcmQuCisKK0ZvciBjaGFyYWN0ZXJzIGAweDAwYC1gMHg3RmAsIFVURi04IGVuY29kZXMgdGhlIGNoYXJhY3RlciBhcyBhIHNpbmdsZSBieXRlLgorCitGb3IgY2hhcmFjdGVycyBgMHg4MGAtYDB4MDdGRmAsIFVURi04IHVzZXMgMiBieXRlczogdGhlIGZpcnN0IGJ5dGUgaXMgYmluYXJ5IGAxMTBgIGZvbGxvd2VkIGJ5IHRoZSA1IGhpZ2ggYml0cyBvZiB0aGUKK2NoYXJhY3Rlciwgd2hpbGUgdGhlIHNlY29uZCBieXRlIGlzIGJpbmFyeSAxMCBmb2xsb3dlZCBieSB0aGUgNiBsb3cgYml0cyBvZiB0aGUgY2hhcmFjdGVyLgorCitUaGUgMyBhbmQgNC1ieXRlIGVuY29kaW5ncyBhcmUgc2ltaWxhciB0byB0aGUgMi1ieXRlIGVuY29kaW5nLCBleGNlcHQgdGhhdCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgMy1ieXRlIGVuY29kaW5nIHN0YXJ0cword2l0aCBgMTExMGAgYW5kIHRoZSBmaXJzdCBieXRlIG9mIHRoZSA0LWJ5dGUgZW5jb2Rpbmcgc3RhcnRzIHdpdGggYDExMTEwYC4KKworRXhhbXBsZSB2YWx1ZXMgKGhleCBieXRlcykKKworLSBgOTdgOiBDaGFyYWN0ZXIgJ2EnLgorLSBgYzIgYTJgOiBDaGFyYWN0ZXIgJ8KiJy4KKy0gYGUyIDgyIGFjYDogQ2hhcmFjdGVyICfigqwnCisKKz09PT0gRHVyYXRpb24KKworQSB0aW1lLWJhc2VkIGFtb3VudCBvZiB0aW1lLgorCitGb3JtYXQ6IGB7c2Vjb25kc317bmFub3N9YAorCitXaGVyZToKKworLSBge3NlY29uZHN9YCBpcyBhIGBMb25nYC4KKy0gYHtuYW5vc31gIGlzIGFuIGBJbnRgLgorCis9PT09IEluZXRBZGRyZXNzCisKK0Zvcm1hdDogU2FtZSBhcyBgQnl0ZUJ1ZmZlcmAsIGhhdmluZyBvbmx5IDQgYnl0ZSBvciAxNiBieXRlIHNlcXVlbmNlcyBhbGxvd2VkLgorCis9PT09IEluc3RhbnQKKworQW4gaW5zdGFudGFuZW91cyBwb2ludCBvbiB0aGUgdGltZS1saW5lLgorCitGb3JtYXQ6IGB7c2Vjb25kc317bmFub3N9YAorCitXaGVyZToKKworLSBge3NlY29uZHN9YCBpcyBhIGBMb25nYC4KKy0gYHtuYW5vc31gIGlzIGFuIGBJbnRgLgorCis9PT09IExvY2FsRGF0ZQorCitBIGRhdGUgd2l0aG91dCBhIHRpbWUtem9uZSBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLgorCitGb3JtYXQ6IGB7eWVhcn17bW9udGh9e2RheX1gCisKK1doZXJlOgorCistIGB7eWVhcn1gIGlzIGFuIGBJbnRgIGZyb20gLTk5OSw5OTksOTk5IHRvIDk5OSw5OTksOTk5LgorLSBge21vbnRofWAgaXMgYSBgQnl0ZWAgdG8gcmVwcmVzZW50IHRoZSBtb250aCwgZnJvbSAxIChKYW51YXJ5KSB0byAxMiAoRGVjZW1iZXIpCistIGB7ZGF5fWAgaXMgYSBgQnl0ZWAgZnJvbSAxIHRvIDMxLgorCis9PT09IExvY2FsRGF0ZVRpbWUKKworRm9ybWF0OiBge2RhdGV9e3RpbWV9YAorCitXaGVyZToKKworLSBge2RhdGV9YCBpcyBgTG9jYWxEYXRlYC4KKy0gYHt0aW1lfWAgaXMgYSBgTG9jYWxUaW1lYC4KKworPT09PSBMb2NhbFRpbWUKK0EgdGltZSB3aXRob3V0IGEgdGltZS16b25lIGluIHRoZSBJU08tODYwMSBjYWxlbmRhciBzeXN0ZW0uCisKK0Zvcm1hdDogQW4gOCBieXRlIHR3bydzIGNvbXBsZW1lbnQgbG9uZyByZXByZXNlbnRpbmcgbmFub3NlY29uZHMgc2luY2UgbWlkbmlnaHQuCisKK1ZhbGlkIHZhbHVlcyBhcmUgaW4gdGhlIHJhbmdlIDAgdG8gODYzOTk5OTk5OTk5OTkKKworPT09PSBNb250aERheQorCitBIG1vbnRoLWRheSBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLgorCitGb3JtYXQ6IGB7bW9udGh9e2RheX1gCisKK1doZXJlOgorCistIGB7bW9udGh9YCBpcyBgQnl0ZWAgdmFsdWUgZnJvbSAxIHRvIDEyLgorLSBge2RheX1gIGlzIGBCeXRlYCB2YWx1ZSBmcm9tIDEgdG8gMzEuCisKKz09PT0gT2Zmc2V0RGF0ZVRpbWUKKworQSBkYXRlLXRpbWUgd2l0aCBhbiBvZmZzZXQgZnJvbSBVVEMvR3JlZW53aWNoIGluIHRoZSBJU08tODYwMSBjYWxlbmRhciBzeXN0ZW0sIHN1Y2ggYXMgMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMC4KKworRm9ybWF0OiBge2xvY2FsX2RhdGVfdGltZX17b2Zmc2V0fWAKKworV2hlcmU6CisKKy0gYHtsb2NhbF9kYXRlX3RpbWV9YCBpcyBgTG9jYWxEYXRlVGltZWAuCistIGB7b2Zmc2V0fWAgaXMgYFpvbmVPZmZzZXRgLgorCis9PT09IE9mZnNldFRpbWUKKworQSB0aW1lIHdpdGggYW4gb2Zmc2V0IGZyb20gVVRDL0dyZWVud2ljaCBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLCBzdWNoIGFzIDEwOjE1OjMwKzAxOjAwLgorCitGb3JtYXQ6IGB7bG9jYWxfdGltZX17b2Zmc2V0fWAKKworV2hlcmU6CisKKy0gYHtsb2NhbF90aW1lfWAgaXMgYExvY2FsVGltZWAuCistIGB7b2Zmc2V0fWAgaXMgYFpvbmVPZmZzZXRgLgorCis9PT09IFBlcmlvZAorCitBIGRhdGUtYmFzZWQgYW1vdW50IG9mIHRpbWUgaW4gdGhlIElTTy04NjAxIGNhbGVuZGFyIHN5c3RlbSwgc3VjaCBhcyAnMiB5ZWFycywgMyBtb250aHMgYW5kIDQgZGF5cycuCisKK0Zvcm1hdDogYHt5ZWFyc317bW9udGh9e2RheXN9YAorCitXaGVyZToKKworYHt5ZWFyc31gLCBge21vbnRofWAgYW5kIGB7ZGF5c31gIGFyZSBgSW50YCB2YWx1ZXMuCisKKz09PT0gWWVhcgorCitBIHllYXIgaW4gdGhlIElTTy04NjAxIGNhbGVuZGFyIHN5c3RlbSwgc3VjaCBhcyAyMDE4LgorCitGb3JtYXQ6IEFuIGBJbnRgIHJlcHJlc2VudGluZyB0aGUgeWVhcnMuCisKKz09PT0gWWVhck1vbnRoCisKK0EgeWVhci1tb250aCBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLCBzdWNoIGFzIDIwMDctMTIuCisKK0Zvcm1hdDogYHt5ZWFyfXttb250aH1gCisKK1doZXJlOgorCistIGB7eWVhcn1gIGlzIGFuIGBJbnRgLgorLSBge21vbnRofWAgaXMgYSBgQnl0ZWAgZnJvbSAxIHRvIDEyLgorCis9PT09IFpvbmVkRGF0ZVRpbWUKKworQSBkYXRlLXRpbWUgd2l0aCBhIHRpbWUtem9uZSBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLgorCitGb3JtYXQ6IGB7bG9jYWxfZGF0ZV90aW1lfXt6b25lX29mZnNldH1gCisKK1doZXJlOgorCistIGB7bG9jYWxfZGF0ZV90aW1lfWAgaXMgYExvY2FsRGF0ZVRpbWVgLgorLSBge3pvbmVfb2Zmc2V0fWAgaXMgYSBgWm9uZU9mZnNldGAuCisKKz09PT0gWm9uZU9mZnNldAorCitBIHRpbWUtem9uZSBvZmZzZXQgZnJvbSBHcmVlbndpY2gvVVRDLCBzdWNoIGFzICswMjowMC4KKworRm9ybWF0OiBBbiBgSW50YCByZXByZXNlbnRpbmcgdG90YWwgem9uZSBvZmZzZXQgaW4gc2Vjb25kcy4KKworPT09IFJlcXVlc3QgYW5kIFJlc3BvbnNlIE1lc3NhZ2VzCisKK1JlcXVlc3QgYW5kIHJlc3BvbnNlIG1lc3NhZ2VzIGFyZSBzcGVjaWFsIGNvbnRhaW5lciB0eXBlcyB1c2VkIHRvIHJlcHJlc2VudCBtZXNzYWdlcyBmcm9tIGNsaWVudCB0byB0aGUgc2VydmVyIGFuZCB0aGUKK290aGVyIHdheSBhcm91bmQuIFRoZXNlIG1lc3NhZ2VzIGFyZSBpbmRlcGVuZGVudCBmcm9tIHRoZSB0cmFuc3BvcnQgbGF5ZXIuCisKKz09PT0gUmVxdWVzdCBNZXNzYWdlCisKK1JlcHJlc2VudHMgYSBtZXNzYWdlIGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLgorCitGb3JtYXQ6IGB7dmVyc2lvbn17cmVxdWVzdF9pZH17b3B9e3Byb2Nlc3Nvcn17YXJnc31gCisKK1doZXJlOgorCistIGB7dmVyc2lvbn1gIGlzIGEgYEJ5dGVgIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uLCB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBzZXQgdG8gb25lLiBGb3IgdGhpcwordmVyc2lvbiBvZiB0aGUgZm9ybWF0LCB0aGUgdmFsdWUgZXhwZWN0ZWQgaXMgYDB4ODFgIChgMTAwMDAwMDFgKS4KKy0gYHtyZXF1ZXN0X2lkfWAgaXMgYSBgVVVJRGAuCistIGB7b3B9YCBpcyBhIGBTdHJpbmdgLgorLSBge3Byb2Nlc3Nvcn1gIGlzIGEgYFN0cmluZ2AuCistIGB7YXJnc31gIGlzIGEgYE1hcGAuCisKK1RoZSB0b3RhbCBsZW5ndGggaXMgbm90IHBhcnQgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIHRyYW5zcG9ydCBsYXllciB3aWxsIHByb3ZpZGUgaXQuIEZvciBleGFtcGxlOiBXZWJTb2NrZXRzLAorYXMgYSBmcmFtaW5nIHByb3RvY29sLCBkZWZpbmVzIHBheWxvYWQgbGVuZ3RoLgorCis9PT09IFJlc3BvbnNlIE1lc3NhZ2UKKworRm9ybWF0OiBge3ZlcnNpb259e3JlcXVlc3RfaWR9e3N0YXR1c19jb2RlfXtzdGF0dXNfbWVzc2FnZX17c3RhdHVzX2F0dHJpYnV0ZXN9e3Jlc3VsdF9tZXRhfXtyZXN1bHRfZGF0YX1gCisKK1doZXJlOgorCistIGB7dmVyc2lvbn1gIGlzIGEgYEJ5dGVgIHJlcHJlc2VudGluZyB0aGUgcHJvdG9jb2wgdmVyc2lvbiwgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgc2V0IHRvIG9uZS4gRm9yIHRoaXMgdmVyc2lvbgorb2YgdGhlIHByb3RvY29sLCB0aGUgdmFsdWUgZXhwZWN0ZWQgaXMgYDB4ODFgIChgMTAwMDAwMDFgKS4KKy0gYHtyZXF1ZXN0X2lkfWAgaXMgYSBudWxsYWJsZSBgVVVJRGAuCistIGB7c3RhdHVzX2NvZGV9YCBpcyBhbiBgSW50YC4KKy0gYHtzdGF0dXNfbWVzc2FnZX1gIGlzIGEgbnVsbGFibGUgYFN0cmluZ2AuCistIGB7c3RhdHVzX2F0dHJpYnV0ZXN9YCBpcyBhIGBNYXBgLgorLSBge3Jlc3VsdF9tZXRhfWAgaXMgYSBgTWFwYC4KKy0gYHtyZXN1bHRfZGF0YX1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCisKK1RoZSB0b3RhbCBsZW5ndGggaXMgbm90IHBhcnQgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIHRyYW5zcG9ydCBsYXllciB3aWxsIHByb3ZpZGUgaXQuCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9kZXYvaW8vZ3JhcGhzb24uYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvaW8vZ3JhcGhzb24uYXNjaWlkb2MKaW5kZXggNWUzZDAzMC4uNGM1NWFiMiAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2lvL2dyYXBoc29uLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL2Rldi9pby9ncmFwaHNvbi5hc2NpaWRvYwpAQCAtMzAxOCw2ICszMDE4LDE5IEBACiB9CiAtLS0tCiAKKz09PT0gVGV4dFAKKworW3NvdXJjZSxqc29uXQorLS0tLQoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQorLS0tLQorCiA9PT09IFRyYXZlcnNhbE1ldHJpY3MKIAogW3NvdXJjZSxqc29uXQpAQCAtNTA3NSw2ICs1MDg4LDIyIEBACiB9CiAtLS0tCiAKKz09PT0gQnVsa1NldAorCitbc291cmNlLGpzb25dCistLS0tCit7CisgICJAdHlwZSIgOiAiZzpCdWxrU2V0IiwKKyAgIkB2YWx1ZSIgOiBbICJtYXJrbyIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAiam9zaCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICJAdmFsdWUiIDogMgorICB9IF0KK30KKy0tLS0KKwogPT09PSBCeXRlY29kZQogCiBUaGUgZm9sbG93aW5nIGBCeXRlY29kZWAgZXhhbXBsZSByZXByZXNlbnRzIHRoZSB0cmF2ZXJzYWwgb2YgYGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5vdXQoKS5pbigpLnRyZWUoKWAuIE9idmlvdXNseSB0aGUgc2VyaWFsaXplZCBgQnl0ZWNvZGVgIHdvdWRsIGJlIHF1aXRlIGRpZmZlcmVudCBmb3IgdGhlIGVuZGxlc3MgdmFyaWF0aW9ucyBvZiBjb21tYW5kcyB0aGF0IGNvdWxkIGJlIHVzZWQgdG9nZXRoZXIgaW4gdGhlIEdyZW1saW4gbGFuZ3VhZ2UuCkBAIC01Mzk1LDYgKzU0MjQsMTkgQEAKIH0KIC0tLS0KIAorPT09PSBUZXh0UAorCitbc291cmNlLGpzb25dCistLS0tCit7CisgICJAdHlwZSIgOiAiZzpUZXh0UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImNvbnRhaW5pbmciLAorICAgICJ2YWx1ZSIgOiAiYXJrIgorICB9Cit9CistLS0tCisKID09PT0gVHJhdmVyc2FsTWV0cmljcwogCiBbc291cmNlLGpzb25dCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9kZXYvaW8vaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvaW8vaW5kZXguYXNjaWlkb2MKaW5kZXggZTBmZTY0MC4uMjVjMWFkNyAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2lvL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL2Rldi9pby9pbmRleC5hc2NpaWRvYwpAQCAtMjUsNyArMjUsNyBAQAogaW1hZ2U6Z3JlbWxpbi1pbzIucG5nW3dpZHRoPTMwMF0KIAogSU8gZmVhdHVyZXMsIGNhcGFiaWxpdGllcyBhbmQgdXNlIGNhc2VzIGFyZSBpbml0aWFsbHkgZGlzY3Vzc2VkIGluIHRoZSBBcGFjaGUgVGlua2VyUG9w4oSiCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI19ncmVtbGluX2lfb1tSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0uIFRoaXMgZG9jdW1lbnQgZm9jdXNlcworbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNpby1zdGVwW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXS4gVGhpcyBkb2N1bWVudCBmb2N1c2VzCiBtb3JlIG9uIHRoZSBkZXRhaWxzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGJvdGggcHJvZHVjdGlvbiBhbmQgY29uc3VtcHRpb24gb2YgdGhlIHZhcmlvdXMgZm9ybWF0cy4gSXQgY29udGFpbnMKIHNhbXBsZXMgb2YgdGhlIHZhcmlvdXMgZm9ybWF0cyBhbmQgZGV2ZWxvcG1lbnQgZGV0YWlscyB0aGF0IHByb3ZpZGUgZGVlcGVyIGluc2lnaHQgZm9yIHRoZWlyIHVzYWdlLgogCkBAIC0zNCwzICszNCw1IEBACiBpbmNsdWRlOjpncmFwaHNvbi5hc2NpaWRvY1tdCiAKIGluY2x1ZGU6OmdyeW8uYXNjaWlkb2NbXQorCitpbmNsdWRlOjpncmFwaGJpbmFyeS5hc2NpaWRvY1tdCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9kZXYvcHJvdmlkZXIvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvcHJvdmlkZXIvaW5kZXguYXNjaWlkb2MKaW5kZXggZWUwODZjNi4uMjkzZTkwMyAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L3Byb3ZpZGVyL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL2Rldi9wcm92aWRlci9pbmRleC5hc2NpaWRvYwpAQCAtMzksMTkgKzM5LDE5IEBACiBbW2dyYXBoLXN5c3RlbS1wcm92aWRlci1yZXF1aXJlbWVudHNdXQogPT0gR3JhcGggU3lzdGVtIFByb3ZpZGVyIFJlcXVpcmVtZW50cwogCi1pbWFnZTp0aW5rZXJwb3AtZW5hYmxlZC5wbmdbd2lkdGg9MTQwLGZsb2F0PWxlZnRdIEF0IHRoZSBjb3JlIG9mIFRpbmtlclBvcDMgaXMgYSBKYXZhOCBBUEkuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzCitpbWFnZTp0aW5rZXJwb3AtZW5hYmxlZC5wbmdbd2lkdGg9MTQwLGZsb2F0PWxlZnRdIEF0IHRoZSBjb3JlIG9mIFRpbmtlclBvcCAzLnggaXMgYSBKYXZhOCBBUEkuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzCiBjb3JlIEFQSSBhbmQgaXRzIHZhbGlkYXRpb24gdmlhIHRoZSBgZ3JlbWxpbi10ZXN0YCBzdWl0ZSBpcyBhbGwgdGhhdCBpcyByZXF1aXJlZCBvZiBhIGdyYXBoIHN5c3RlbSBwcm92aWRlciB3aXNoaW5nIHRvCi1wcm92aWRlIGEgVGlua2VyUG9wMy1lbmFibGVkIGdyYXBoIGVuZ2luZS4gT25jZSBhIGdyYXBoIHN5c3RlbSBoYXMgYSB2YWxpZCBpbXBsZW1lbnRhdGlvbiwgdGhlbiBhbGwgdGhlIGFwcGxpY2F0aW9ucworcHJvdmlkZSBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIGVuZ2luZS4gT25jZSBhIGdyYXBoIHN5c3RlbSBoYXMgYSB2YWxpZCBpbXBsZW1lbnRhdGlvbiwgdGhlbiBhbGwgdGhlIGFwcGxpY2F0aW9ucwogcHJvdmlkZWQgYnkgVGlua2VyUG9wIChlLmcuIEdyZW1saW4gQ29uc29sZSwgR3JlbWxpbiBTZXJ2ZXIsIGV0Yy4pIGFuZCAzcmQtcGFydHkgZGV2ZWxvcGVycyAoZS5nLiBHcmVtbGluLVNjYWxhLAogR3JlbWxpbi1KUywgZXRjLikgd2lsbCBpbnRlZ3JhdGUgcHJvcGVybHkuIEZpbmFsbHksIHBsZWFzZSBmZWVsIGZyZWUgdG8gdXNlIHRoZSBsb2dvIG9uIHRoZSBsZWZ0IHRvIHByb21vdGUgeW91cgotVGlua2VyUG9wMyBpbXBsZW1lbnRhdGlvbi4KK1RpbmtlclBvcCBpbXBsZW1lbnRhdGlvbi4KIAogW1tncmFwaC1zdHJ1Y3R1cmUtYXBpXV0KID09PSBHcmFwaCBTdHJ1Y3R1cmUgQVBJCiAKLVRoZSBncmFwaCBzdHJ1Y3R1cmUgQVBJIHByb3ZpZGVzIHRoZSBpbnRlcmZhY2VzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBUaW5rZXJQb3AgZW5hYmxlZCBzeXN0ZW0gYW5kIGV4cG9zZXMgdGhlIGJhc2ljCi1jb21wb25lbnRzIG9mIGEgcHJvcGVydHkgZ3JhcGggdG8gaW5jbHVkZSBgR3JhcGhgLCBgVmVydGV4YCwgYEVkZ2VgLCBgVmVydGV4UHJvcGVydHlgIGFuZCBgUHJvcGVydHlgLiBUaGUgc3RydWN0dXJlCi1BUEkgY2FuIGJlIHVzZWQgZGlyZWN0bHkgYXMgZm9sbG93czoKK1RoZSBncmFwaCBzdHJ1Y3R1cmUgQVBJIG9mIFRpbmtlclBvcCBwcm92aWRlcyB0aGUgaW50ZXJmYWNlcyBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgVGlua2VyUG9wIGVuYWJsZWQgc3lzdGVtIGFuZAorZXhwb3NlcyB0aGUgYmFzaWMgY29tcG9uZW50cyBvZiBhIHByb3BlcnR5IGdyYXBoIHRvIGluY2x1ZGUgYEdyYXBoYCwgYFZlcnRleGAsIGBFZGdlYCwgYFZlcnRleFByb3BlcnR5YCBhbmQgYFByb3BlcnR5YC4KK1RoZSBzdHJ1Y3R1cmUgQVBJIGNhbiBiZSB1c2VkIGRpcmVjdGx5IGFzIGZvbGxvd3M6CiAKIFtzb3VyY2UsamF2YV0KIC0tLS0KQEAgLTc5LDExICs3OSw3IEBACiBgR3JhcGguYWRkVmVydGV4KE9iamVjdC4uLilgIG9yIGBWZXJ0ZXguYWRkRWRnZShTdHJpbmcsVmVydGV4LE9iamVjdC4uLilgLCB0aGUgcmVzcGVjdGl2ZSBlbGVtZW50IGlzIGNyZWF0ZWQgYWxvbmcKIHdpdGggdGhlIHByb3ZpZGVkIGtleS92YWx1ZSBwYWlyIHByb3BlcnRpZXMgYXBwZW5kZWQgdG8gaXQuCiAKLUJlbG93IGlzIGEgc2VxdWVuY2Ugb2YgYmFzaWMgZ3JhcGggbXV0YXRpb24gb3BlcmF0aW9ucyByZXByZXNlbnRlZCBpbiBKYXZhIDguIE9uZSBvZiB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbgotVGlua2VyUG9wMiBhbmQgVGlua2VyUG9wMyBpcyB0aGF0IGluIFRpbmtlclBvcDMsIHRoZSBKYXZhIGNvbnZlbnRpb24gb2YgdXNpbmcgc2V0dGVycyBhbmQgZ2V0dGVycyBoYXMgYmVlbiBhYmFuZG9uZWQKLWluIGZhdm9yIG9mIGEgc3ludGF4IHRoYXQgaXMgbW9yZSBhbGlnbmVkIHdpdGggdGhlIHN5bnRheCBvZiBHcmVtbGluLUdyb292eSBpbiBUaW5rZXJQb3AyLiBHaXZlbiB0aGF0IEdyZW1saW4tSmF2YTgKLWFuZCBHcmVtbGluLUdyb292eSBhcmUgbmVhcmx5IGlkZW50aWNhbCBkdWUgdG8gdGhlIGluY2x1c2lvbiBvZiBKYXZhIDggbGFtYmRhcywgYSBiaWcgZWZmb3J0IHdhcyBtYWRlIHRvIGVuc3VyZSB0aGF0Ci1ib3RoIGxhbmd1YWdlcyBhcmUgYXMgc2ltaWxhciBhcyBwb3NzaWJsZS4KK0JlbG93IGlzIGEgc2VxdWVuY2Ugb2YgYmFzaWMgZ3JhcGggbXV0YXRpb24gb3BlcmF0aW9ucyByZXByZXNlbnRlZCBpbiBKYXZhIDguCiAKIGltYWdlOmJhc2ljLW11dGF0aW9uLnBuZ1t3aWR0aD0yNDAsZmxvYXQ9cmlnaHRdCiBbc291cmNlLGphdmFdCkBAIC0xNjcsNyArMTYzLDcgQEAKIHBhY2thZ2UuIFRoZXNlIGluY2x1ZGUgaW50ZXJmYWNlcyBsaWtlIGBHcmFwaGAsIGBWZXJ0ZXhgLCBgRWRnZWAsIGBQcm9wZXJ0eWAsIGBUcmFuc2FjdGlvbmAsIGV0Yy4gVGhlCiBgU3RydWN0dXJlU3RhbmRhcmRTdWl0ZWAgd2lsbCBlbnN1cmUgdGhhdCB0aGUgc2VtYW50aWNzIG9mIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGFyZSBjb3JyZWN0LiBNb3Jlb3ZlciwgdGhlcmUgYXJlCiBudW1lcm91cyBgRXhjZXB0aW9uc2AgY2xhc3NlcyB3aXRoIHN0YXRpYyBleGNlcHRpb25zIHRoYXQgc2hvdWxkIGJlIHRocm93biBieSB0aGUgZ3JhcGggc3lzdGVtIHNvIHRoYXQgYWxsIHRoZQotZXhjZXB0aW9ucyBhbmQgdGhlaXIgbWVzc2FnZXMgYXJlIGNvbnNpc3RlbnQgYW1vbmdzdCBhbGwgVGlua2VyUG9wMyBpbXBsZW1lbnRhdGlvbnMuCitleGNlcHRpb25zIGFuZCB0aGVpciBtZXNzYWdlcyBhcmUgY29uc2lzdGVudCBhbW9uZ3N0IGFsbCBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zLgogCiBUaGUgZm9sbG93aW5nIGJ1bGxldHMgcHJvdmlkZSBzb21lIHRpcHMgdG8gY29uc2lkZXIgd2hlbiBpbXBsZW1lbnRpbmcgdGhlIHN0cnVjdHVyZSBpbnRlcmZhY2VzOgogCkBAIC0xODIsNyArMTc4LDYgQEAKIGNhbiBoYXZlIGl0cyBvd24gcHJvcGVydGllcyAoaS5lLiBtZXRhLXByb3BlcnRpZXMpLiBFdmVuIGlmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBpbnRlbmQgdG8gc3VwcG9ydAogbWV0YS1wcm9wZXJ0aWVzLCB0aGUgYFZlcnRleFByb3BlcnR5YCBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBhcyBhbiBgRWxlbWVudGAuCiAKLQogW1tvbGFwLWltcGxlbWVudGF0aW9uc11dCiA9PT09IE9MQVAgSW1wbGVtZW50YXRpb25zCiAKQEAgLTIwMCw5ICsxOTUsOSBAQAogTk9URTogVGhlIFZlcnRleFByb2dyYW0gYW5kIE1hcFJlZHVjZSBpbnRlcmZhY2VzIGluIHRoZSBgcHJvY2Vzcy9jb21wdXRlci9gIHBhY2thZ2UgYXJlIG5vdCByZXF1aXJlZCBieSB0aGUgZ3JhcGgKIHN5c3RlbS4gSW5zdGVhZCwgdGhlc2UgYXJlIGludGVyZmFjZXMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYXBwbGljYXRpb24gZGV2ZWxvcGVycyB3cml0aW5nIFZlcnRleFByb2dyYW1zIGFuZCBNYXBSZWR1Y2Ugam9icy4KIAotSU1QT1JUQU5UOiBUaW5rZXJQb3AzIHByb3ZpZGVzIHRocmVlIE9MQVAgaW1wbGVtZW50YXRpb25zOgorSU1QT1JUQU5UOiBUaW5rZXJQb3AgcHJvdmlkZXMgdHdvIE9MQVAgaW1wbGVtZW50YXRpb25zOgogbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyN0aW5rZXJncmFwaC1ncmVtbGluW1RpbmtlckdyYXBoQ29tcHV0ZXJdIChUaW5rZXJHcmFwaCksCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dpcmFwaGdyYXBoY29tcHV0ZXJbR2lyYXBoR3JhcGhDb21wdXRlcl0gKEhhZG9vcEdyYXBoKSwgYW5kCithbmQKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jc3BhcmtncmFwaGNvbXB1dGVyW1NwYXJrR3JhcGhDb21wdXRlcl0gKEhhZG9vcCkuCiBHaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgT0xBUCBzeXN0ZW0sIGl0IGlzIGdvb2QgdG8gc3R1ZHkgYW5kIGNvcHkgbWFueSBvZiB0aGUgcGF0dGVybnMgdXNlZCBpbiB0aGVzZSByZWZlcmVuY2UKIGltcGxlbWVudGF0aW9ucy4KQEAgLTI0MCw3ICsyMzUsNyBAQAogCiA9PT09PSBJbXBsZW1lbnRpbmcgTWFwUmVkdWNlIEVtaXR0ZXJzCiAKLWltYWdlOmhhZG9vcC1sb2dvLW5vdGV4dC5wbmdbd2lkdGg9MTUwLGZsb2F0PWxlZnRdIFRoZSBNYXBSZWR1Y2UgZnJhbWV3b3JrIGluIFRpbmtlclBvcDMgaXMgc2ltaWxhciB0byB0aGUgbW9kZWwKK2ltYWdlOmhhZG9vcC1sb2dvLW5vdGV4dC5wbmdbd2lkdGg9MTUwLGZsb2F0PWxlZnRdIFRoZSBNYXBSZWR1Y2UgZnJhbWV3b3JrIGluIFRpbmtlclBvcCBpcyBzaW1pbGFyIHRvIHRoZSBtb2RlbAogcG9wdWxhcml6ZWQgYnkgbGluazpodHRwOi8vaGFkb29wLmFwYWNoZS5vcmdbSGFkb29wXS4gVGhlIHByaW1hcnkgZGlmZmVyZW5jZSBpcyB0aGF0IGFsbCBNYXBwZXJzIHByb2Nlc3MgdGhlIHZlcnRpY2VzCiBvZiB0aGUgZ3JhcGgsIG5vdCBhbiBhcmJpdHJhcnkga2V5L3ZhbHVlIHBhaXIuIEhvd2V2ZXIsIHRoZSB2ZXJ0aWNlcycgZWRnZXMgY2FuIG5vdCBiZSBhY2Nlc3NlZCAtLSBvbmx5IHRoZWlyCiBwcm9wZXJ0aWVzLiBUaGlzIGdyZWF0bHkgcmVkdWNlcyB0aGUgYW1vdW50IG9mIGRhdGEgbmVlZGVkIHRvIGJlIHB1c2hlZCB0aHJvdWdoIHRoZSBNYXBSZWR1Y2UgZW5naW5lIGFzIGFueSBlZGdlCkBAIC0yOTUsNyArMjkwLDcgQEAKIDwxPiBJZiB0aGUgTWFwUmVkdWNlIGpvYiBoYXMgYSByZWR1Y2UsIHRoZW4gdXNlIG9uZSBkYXRhIHN0cnVjdHVyZSAoYHJlZHVjZU1hcGApLCBlbHNlIHVzZSBhbm90aGVyIChgbWFwTGlzdGApLiBUaGUKIGRpZmZlcmVuY2UgYmVpbmcgdGhhdCBhIHJlZHVjdGlvbiByZXF1aXJlcyBhIGdyb3VwaW5nIGJ5IGtleSBhbmQgdGhlcmVmb3JlLCB0aGUgYE1hcDxLLFF1ZXVlPFY+PmAgZGVmaW5pdGlvbi4gSWYgbm8KIHJlZHVjdGlvbi9ncm91cGluZyBpcyByZXF1aXJlZCwgdGhlbiBhIHNpbXBsZSBgUXVldWU8S2V5VmFsdWU8SyxWPj5gIGNhbiBiZSBsZXZlcmFnZWQuCi08Mj4gSWYgcmVkdWNlIGlzIHRvIGZvbGxvdywgdGhlbiBpbmNyZW1lbnQgdGhlIE1hcCB3aXRoIGEgbmV3IHZhbHVlIGZvciB0aGUga2V5LiBgTWFwSGVscGVyYCBpcyBhIFRpbmtlclBvcDMgY2xhc3MKKzwyPiBJZiByZWR1Y2UgaXMgdG8gZm9sbG93LCB0aGVuIGluY3JlbWVudCB0aGUgTWFwIHdpdGggYSBuZXcgdmFsdWUgZm9yIHRoZSBrZXkuIGBNYXBIZWxwZXJgIGlzIGEgVGlua2VyUG9wIGNsYXNzCiB3aXRoIHN0YXRpYyBtZXRob2RzIGZvciBhZGRpbmcgZGF0YSB0byBhIE1hcC4KIDwzPiBJZiBubyByZWR1Y2UgaXMgdG8gZm9sbG93LCB0aGVuIHNpbXBseSBhcHBlbmQgYSBLZXlWYWx1ZSB0byB0aGUgcXVldWUuCiA8ND4gV2hlbiB0aGUgbWFwIHBoYXNlIGlzIGNvbXBsZXRlLCBhbnkgbWFwLXJlc3VsdCBzb3J0aW5nIHJlcXVpcmVkIGNhbiBiZSBleGVjdXRlZCBhdCB0aGlzIHBvaW50LgpAQCAtNTU3LDU5ICs1NTIsMTYgQEAKIAogW3NvdXJjZSxjc2hhcnBdCiAtLS0tCi1pbnRlcm5hbCBjbGFzcyBNeVR5cGUKLXsKLSAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHcmFwaHNvblByZWZpeCA9ICJwcm92aWRlcngiOwotICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIEdyYXBoc29uQmFzZVR5cGUgPSAiTXlUeXBlIjsKLSAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHcmFwaHNvblR5cGUgPSBHcmFwaFNPTlV0aWwuRm9ybWF0VHlwZU5hbWUoR3JhcGhzb25QcmVmaXgsIEdyYXBoc29uQmFzZVR5cGUpOworaW5jbHVkZTo6Li4vLi4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9EZXYvUHJvdmlkZXIvSW5kZXhUZXN0cy5jc1t0YWdzPW15VHlwZVNlcmlhbGl6YXRpb25dCiAKLSAgICBwdWJsaWMgTXlUeXBlKGludCB4LCBpbnQgeSkKLSAgICB7Ci0gICAgICAgIFggPSB4OwotICAgICAgICBZID0geTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IFggeyBnZXQ7IH0KLSAgICBwdWJsaWMgaW50IFkgeyBnZXQ7IH0KLX0KLQotaW50ZXJuYWwgY2xhc3MgTXlDbGFzc1dyaXRlciA6IElHcmFwaFNPTlNlcmlhbGl6ZXIKLXsKLSAgICBwdWJsaWMgRGljdGlvbmFyeTxzdHJpbmcsIGR5bmFtaWM+IERpY3RpZnkoZHluYW1pYyBvYmplY3REYXRhLCBHcmFwaFNPTldyaXRlciB3cml0ZXIpCi0gICAgewotICAgICAgICBNeVR5cGUgbXlUeXBlID0gb2JqZWN0RGF0YTsKLSAgICAgICAgdmFyIHZhbHVlRGljdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PgotICAgICAgICB7Ci0gICAgICAgICAgICB7IngiLCBteVR5cGUuWH0sCi0gICAgICAgICAgICB7InkiLCBteVR5cGUuWX0KLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIEdyYXBoU09OVXRpbC5Ub1R5cGVkVmFsdWUobmFtZW9mKFRlc3RDbGFzcyksIHZhbHVlRGljdCwgTXlUeXBlLkdyYXBoc29uUHJlZml4KTsKLSAgICB9Ci19Ci0KLWludGVybmFsIGNsYXNzIE15VHlwZVJlYWRlciA6IElHcmFwaFNPTkRlc2VyaWFsaXplcgotewotICAgIHB1YmxpYyBkeW5hbWljIE9iamVjdGlmeShKVG9rZW4gZ3JhcGhzb25PYmplY3QsIEdyYXBoU09OUmVhZGVyIHJlYWRlcikKLSAgICB7Ci0gICAgICAgIHZhciB4ID0gcmVhZGVyLlRvT2JqZWN0KGdyYXBoc29uT2JqZWN0WyJ4Il0pOwotICAgICAgICB2YXIgeSA9IHJlYWRlci5Ub09iamVjdChncmFwaHNvbk9iamVjdFsieSJdKTsKLSAgICAgICAgcmV0dXJuIG5ldyBNeVR5cGUoeCwgeSk7Ci0gICAgfQotfQotCi12YXIgZ3JhcGhzb25SZWFkZXIgPSBuZXcgR3JhcGhTT04zUmVhZGVyKAotICAgIG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgSUdyYXBoU09ORGVzZXJpYWxpemVyPiB7e015VHlwZS5HcmFwaHNvblR5cGUsIG5ldyBNeVR5cGVSZWFkZXIoKX19KTsKLXZhciBncmFwaHNvbldyaXRlciA9IG5ldyBHcmFwaFNPTjNXcml0ZXIoCi0gICAgbmV3IERpY3Rpb25hcnk8VHlwZSwgSUdyYXBoU09OU2VyaWFsaXplcj4ge3t0eXBlb2YoTXlUeXBlKSwgbmV3IE15Q2xhc3NXcml0ZXIoKX19KTsKLQotdmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MiksIGdyYXBoc29uUmVhZGVyLCBncmFwaHNvbldyaXRlcik7CitpbmNsdWRlOjouLi8uLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL0Rldi9Qcm92aWRlci9JbmRleFRlc3RzLmNzW3RhZ3M9c3VwcG9ydGluZ0dyZW1saW5OZXRJT10KIC0tLS0KIAogW1tyZW1vdGVjb25uZWN0aW9uLWltcGxlbWVudGF0aW9uc11dCiA9PT09IFJlbW90ZUNvbm5lY3Rpb24gSW1wbGVtZW50YXRpb25zCiAKIEEgYFJlbW90ZUNvbm5lY3Rpb25gIGlzIGFuIGludGVyZmFjZSB0aGF0IGlzIGltcG9ydGFudCBmb3IgdXNhZ2Ugb24gdHJhdmVyc2FsIHNvdXJjZXMgY29uZmlndXJlZCB1c2luZyB0aGUKLWxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtcmVtb3RlZ3JhcGhbd2l0aFJlbW90ZSgpXSBvcHRpb24uIEEgYFRyYXZlcnNhbGAKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtZHJpdmVyc1t3aXRoUmVtb3RlKCldIG9wdGlvbi4gQSBgVHJhdmVyc2FsYAogdGhhdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGF0IHNvdXJjZSB3aWxsIGFwcGx5IGEgYFJlbW90ZVN0cmF0ZWd5YCB3aGljaCB3aWxsIGluamVjdCBhIGBSZW1vdGVTdGVwYCB0byBpdHMgZW5kLiBUaGF0CiBzdGVwIHdpbGwgdGhlbiBzZW5kIHRoZSBgQnl0ZWNvZGVgIG9mIHRoZSBgVHJhdmVyc2FsYCBvdmVyIHRoZSBgUmVtb3RlQ29ubmVjdGlvbmAgdG8gZ2V0IHRoZSByZXN1bHRzIHRoYXQgaXQgd2lsbAogaXRlcmF0ZS4KQEAgLTYzNywxMiArNTg5LDE3IEBACiA9PT09IEJ1bGsgSW1wb3J0IEV4cG9ydAogCiBXaGVuIGl0IGNvbWVzIHRvIGRvaW5nICJidWxrIiBvcGVyYXRpb25zLCB0aGUgZGl2ZXJzZSBuYXR1cmUgb2YgdGhlIGF2YWlsYWJsZSBncmFwaCBkYXRhYmFzZXMgYW5kIHRoZWlyIHNwZWNpZmljCi1jYXBhYmlsaXRpZXMsIHByZXZlbnRzIFRpbmtlclBvcCBmcm9tIGRvaW5nIGEgZ29vZCBqb2Igb2YgZ2VuZXJhbGl6aW5nIHRoYXQgY2FwYWJpbGl0eSB3ZWxsLiBUaW5rZXJQb3AgcmVmZXJzIHVzZXJzIHRvCi10aGUgYnVsayBpbXBvcnQvZXhwb3J0IGZhY2lsaXRpZXMgb2Ygc3BlY2lmaWMgZ3JhcGggcHJvdmlkZXJzIGFzIHRoZXkgdGVuZCB0byBiZSBtb3JlIGVmZmljaWVudCBhbmQgZWFzaWVyIHRvIHVzZSB0aGFuCi10aGUgb3B0aW9ucyBUaW5rZXJQb3AgaGFzIHRyaWVkIHRvIGdlbmVyYWxpemUgaW4gdGhlIHBhc3QuCitjYXBhYmlsaXRpZXMsIHByZXZlbnRzIFRpbmtlclBvcCBmcm9tIGRvaW5nIGEgZ29vZCBqb2Igb2YgZ2VuZXJhbGl6aW5nIHRoYXQgY2FwYWJpbGl0eSB3ZWxsLiBUaW5rZXJQb3AgdGh1cyBtYWludGFpbnMKK3R3byBwb3NpdGlvbnMgb24gdGhlIGNvbmNlcHQgb2YgaW1wb3J0IGFuZCBleHBvcnQ6CiAKLVRoYXQgc2FpZCwgZm9yIGdyYXBoIHByb3ZpZGVycyB0aGF0IGRvbid0IGhhdmUgYSBzcGVjaWFsIGJ1bGsgbG9hZGluZyBmZWF0dXJlLCB0aGV5IGNhbiBnZXQgYSBiYXNpYyBidWxrIGxvYWRlciBmcm9tCi1UaW5rZXJQb3AgdXNpbmcgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY2xvbmV2ZXJ0ZXhwcm9ncmFtW0Nsb25lVmVydGV4UHJvZ3JhbV0uCisxLiBUaW5rZXJQb3AgcmVmZXJzIHVzZXJzIHRvIHRoZSBidWxrIGltcG9ydC9leHBvcnQgZmFjaWxpdGllcyBvZiBzcGVjaWZpYyBncmFwaCBwcm92aWRlcnMgYXMgdGhleSB0ZW5kIHRvIGJlIG1vcmUKK2VmZmljaWVudCBhbmQgZWFzaWVyIHRvIHVzZSB0aGFuIHRoZSBvcHRpb25zIFRpbmtlclBvcCBoYXMgdHJpZWQgdG8gZ2VuZXJhbGl6ZSBpbiB0aGUgcGFzdC4KKzIuIFRpbmtlclBvcCBlbmNvdXJhZ2VzIGdyYXBoIHByb3ZpZGVycyB0byBleHBvc2UgdGhvc2UgY2FwYWJpbGl0aWVzIHZpYSBgZy5pbygpYCBhbmQgdGhlIGBJb1N0ZXBgIGJ5IHdheSBvZiBhCitgVHJhdmVyc2FsU3RyYXRlZ3lgLgorCitUaGF0IHNhaWQsIGZvciBncmFwaCBwcm92aWRlcnMgdGhhdCBkb24ndCBoYXZlIGEgc3BlY2lhbCBidWxrIGxvYWRpbmcgZmVhdHVyZSwgdGhleSBjYW4gZWl0aGVyIHJlbHkgb24gdGhlIGRlZmF1bHQKK09MVFAgKHNpbmdsZS10aHJlYWRlZCkgYEdyYXBoUmVhZGVyYCBhbmQgYEdyYXBoV3JpdGVyYCBvcHRpb25zIHRoYXQgYXJlIGVtYmVkZGVkIGluIGBJb1N0ZXBgIG9yIGdldCBhIGJhc2ljIGJ1bGsgbG9hZGVyCitmcm9tIFRpbmtlclBvcCB1c2luZyB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjbG9uZXZlcnRleHByb2dyYW1bQ2xvbmVWZXJ0ZXhQcm9ncmFtXS4KIFNpbXBseSBwcm92aWRlIGEgYElucHV0Rm9ybWF0YCBhbmQgYE91dHB1dEZvcm1hdGAgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBhIGBIYWRvb3BHcmFwaGAgaW5zdGFuY2UgYXMgZGlzY3Vzc2VkCiBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjbG9uZXZlcnRleHByb2dyYW1bUmVmZXJlbmNlIERvY3VtZW50YXRpb25dLgogCkBAIC02OTIsNiArNjQ5LDEwIEBACiBkZWZpbml0aW9ucy4gIE1vcmVvdmVyLCBpbXBsZW1lbnRlcnMgc2hvdWxkIGNvbnNpZGVyIGZpbGxpbmcgZ2FwcyBpbiB0aGVpciBvd24gdGVzdCBzdWl0ZXMsIGVzcGVjaWFsbHkgd2hlbgogSU8tcmVsYXRlZCB0ZXN0cyBhcmUgYmVpbmcgaWdub3JlZC4KIAorVElQOiBJZiBpdCBpcyBleHBlbnNpdmUgdG8gY29uc3RydWN0IGEgbmV3IGBHcmFwaGAgaW5zdGFuY2UsIGNvbnNpZGVyIGltcGxlbWVudGluZyBgR3JhcGhQcm92aWRlci5nZXRTdGF0aWNGZWF0dXJlcygpYAord2hpY2ggY2FuIGhlbHAgYnkgY2FjaGluZyBhIHN0YXRpYyBmZWF0dXJlIHNldCBmb3IgaW5zdGFuY2VzIHByb2R1Y2VkIGJ5IHRoYXQgYEdyYXBoUHJvdmlkZXJgIGFuZCBhbGxvdyB0aGUgdGVzdCBzdWl0ZQordG8gYXZvaWQgdGhhdCBjb25zdHJ1Y3Rpb24gY29zdCBpZiB0aGUgdGVzdCBpcyBpZ25vcmVkLgorCiBUaGUgb25seSB0ZXN0LWNsYXNzIHRoYXQgcmVxdWlyZXMgYW55IGNvZGUgaW52ZXN0bWVudCBpcyB0aGUgYEdyYXBoUHJvdmlkZXJgIGltcGxlbWVudGF0aW9uIGNsYXNzLiBUaGlzIGNsYXNzIGlzIGEKIHVzZWQgYnkgdGhlIHRlc3Qgc3VpdGUgdG8gY29uc3RydWN0IGBHcmFwaGAgY29uZmlndXJhdGlvbnMgYW5kIGluc3RhbmNlcyBhbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuICBJbiBtb3N0IGNhc2VzLCBpdCBpcyBiZXN0IHRvIHNpbXBseSBleHRlbmQgYEFic3RyYWN0R3JhcGhQcm92aWRlcmAgYXMgaXQgcHJvdmlkZXMgbWFueQpAQCAtODEzLDcgKzc3NCw3IEBACiAKID09PSBBY2Nlc3NpYmlsaXR5IHZpYSBHcmVtbGluUGx1Z2luCiAKLWltYWdlOmdyZW1saW4tcGx1Z2luLnBuZ1t3aWR0aD0xMDAsZmxvYXQ9bGVmdF0gVGhlIGFwcGxpY2F0aW9ucyBkaXN0cmlidXRlZCB3aXRoIFRpbmtlclBvcDMgZG8gbm90IGRpc3RyaWJ1dGUgd2l0aAoraW1hZ2U6Z3JlbWxpbi1wbHVnaW4ucG5nW3dpZHRoPTEwMCxmbG9hdD1sZWZ0XSBUaGUgYXBwbGljYXRpb25zIGRpc3RyaWJ1dGVkIHdpdGggVGlua2VyUG9wIGRvIG5vdCBkaXN0cmlidXRlIHdpdGgKIGFueSBncmFwaCBzeXN0ZW0gaW1wbGVtZW50YXRpb25zIGJlc2lkZXMgVGlua2VyR3JhcGguIElmIHlvdXIgaW1wbGVtZW50YXRpb24gaXMgc3RvcmVkIGluIGEgTWF2ZW4gcmVwb3NpdG9yeSAoZS5nLgogTWF2ZW4gQ2VudHJhbCBSZXBvc2l0b3J5KSwgdGhlbiBpdCBpcyBiZXN0IHRvIHByb3ZpZGUgYSA8PGdyZW1saW4tcGx1Z2lucyxgR3JlbWxpblBsdWdpbmA+PiBpbXBsZW1lbnRhdGlvbiBzbyB0aGUgcmVzcGVjdGl2ZSBqYXJzIGNhbiBiZQogZG93bmxvYWRlZCBhY2NvcmRpbmcgYW5kIHdoZW4gcmVxdWlyZWQgYnkgdGhlIHVzZXIuIE5lbzRqJ3MgR3JlbWxpblBsdWdpbiBpcyBwcm92aWRlZCBiZWxvdyBmb3IgcmVmZXJlbmNlLgpAQCAtODM5LDcgKzgwMCw3IEBACiA9PT0gSW4tRGVwdGggSW1wbGVtZW50YXRpb25zCiAKIGltYWdlOmdyZW1saW4tcGFpbnRpbmcucG5nW3dpZHRoPTIwMCxmbG9hdD1yaWdodF0gVGhlIGdyYXBoIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHByZXNlbnRlZCB0aHVzIGZhciBhcmUKLW1pbmltdW0gcmVxdWlyZW1lbnRzIG5lY2Vzc2FyeSB0byB5aWVsZCBhIHZhbGlkIFRpbmtlclBvcDMgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZXJlIGFyZSBvdGhlciBhcmVhcyB0aGF0IGEKK21pbmltdW0gcmVxdWlyZW1lbnRzIG5lY2Vzc2FyeSB0byB5aWVsZCBhIHZhbGlkIFRpbmtlclBvcCBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgdGhlcmUgYXJlIG90aGVyIGFyZWFzIHRoYXQgYQogZ3JhcGggc3lzdGVtIHByb3ZpZGVyIGNhbiB0d2VhayB0byBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG1vcmUgb3B0aW1pemVkIGZvciB0aGVpciB1bmRlcmx5aW5nIGdyYXBoIGVuZ2luZS4gVHlwaWNhbAogYXJlYXMgb2YgZm9jdXMgaW5jbHVkZToKIApAQCAtODQ5LDcgKzgxMCwxMSBAQAogbG9va3VwIGJlY29tZXMgYW4gYE8obG9nKHxWfCkpYC4gUGxlYXNlIHJldmlldyBgVGlua2VyR3JhcGhTdGVwU3RyYXRlZ3lgIGZvciBpZGVhcy4KICogU3RlcCBJbXBsZW1lbnRhdGlvbnM6IEV2ZXJ5IGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGgtdHJhdmVyc2FsLXN0ZXBzW3N0ZXBdIGlzCiB1bHRpbWF0ZWx5IHJlZmVyZW5jZWQgYnkgdGhlIGBHcmFwaFRyYXZlcnNhbGAgaW50ZXJmYWNlLiBJdCBpcyBwb3NzaWJsZSB0byBleHRlbmQgYEdyYXBoVHJhdmVyc2FsYCB0byB1c2UgYSBncmFwaAotc3lzdGVtIHNwZWNpZmljIHN0ZXAgaW1wbGVtZW50YXRpb24uCitzeXN0ZW0gc3BlY2lmaWMgc3RlcCBpbXBsZW1lbnRhdGlvbi4gTm90ZSB0aGF0IHdoaWxlIGl0IGlzIHNvbWV0aW1lcyBwb3NzaWJsZSB0byBkZXZlbG9wIGN1c3RvbSBzdGVwIGltcGxlbWVudGF0aW9ucworYnkgZXh0ZW5kaW5nIGZyb20gYSBUaW5rZXJQb3Agc3RlcCAodHlwaWNhbGx5LCBgQWRkVmVydGV4U3RlcGAgYW5kIG90aGVyIGBNdXRhdGluZ2Agc3RlcHMpLCBpdCdzIGltcG9ydGFudCB0bworY29uc2lkZXIgdGhhdCBkb2luZyBzbyBpbnRyb2R1Y2VzIHNvbWUgZ3JlYXRlciByaXNrIGZvciBjb2RlIGJyZWFrcyBvbiB1cGdyYWRlcyBhcyBvcHBvc2VkIHRvIG90aGVyIGFyZWFzIG9mIHRoZSBjb2RlCitiYXNlLiBBcyBzdGVwcyBhcmUgbW9yZSBpbnRlcm5hbCBmZWF0dXJlcyBvZiBUaW5rZXJQb3AsIHRoZXkgbWlnaHQgYmUgc3ViamVjdCB0byBicmVha2luZyBBUEkgYW5kIGJlaGF2aW9yYWwgY2hhbmdlcwordGhhdCB3b3VsZCBiZSBsZXNzIGxpa2VseSB0byBiZSBhY2NlcHRlZCBieSBtb3JlIHB1YmxpYyBmYWNpbmcgaW50ZXJmYWNlcy4KIAogPT0gR3JhcGggRHJpdmVyIFByb3ZpZGVyIFJlcXVpcmVtZW50cwogCkBAIC0xMTI5LDcgKzEwOTQsNyBAQAogY2x1c3RlciA9IENsdXN0ZXIub3BlbigpCiBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKQogYWxpYXNlZCA9IGNsaWVudC5hbGlhcygiZyIpCi1nID0gb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoLklOU1RBTkNFLnRyYXZlcnNhbCgpICAgICAgIDwxPgorZyA9IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaC5pbnN0YW5jZSgpLnRyYXZlcnNhbCgpICAgICA8MT4KIHJzID0gYWxpYXNlZC5zdWJtaXQoZy5WKCkuYm90aCgpLmJhcnJpZXIoKS5ib3RoKCkuYmFycmllcigpKS5hbGwoKS5nZXQoKSAgICAgICAgICAgICAgICAgICAgPDI+CiBhbGlhc2VkLnN1Ym1pdChnLlYoKS5ib3RoKCkuYmFycmllcigpLmJvdGgoKS5iYXJyaWVyKCkuY291bnQoKSkuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldEludCgpIDwzPgogcnMuY29sbGVjdHtbdmFsdWU6IGl0LmdldE9iamVjdCgpLmdldCgpLCBidWxrOiBpdC5nZXRPYmplY3QoKS5idWxrKCldfSAgICAgICAgICAgICAgICAgICAgICA8ND4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlY2lwZXMvYW50aS1wYXR0ZXJucy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvYW50aS1wYXR0ZXJucy5hc2NpaWRvYwppbmRleCA1MGVkZTY3Li5hOWIzYWJjIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2FudGktcGF0dGVybnMuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVjaXBlcy9hbnRpLXBhdHRlcm5zLmFzY2lpZG9jCkBAIC04NiwyNiArODYsMjcgQEAKIGcKIC0tLS0KIAotT2J2aW91c2x5LCB0aGVzZSB0cmF2ZXJzYWxzIGFyZSBtb3JlIGNvbXBsaWNhdGVkLCBidXQgdGhlIG51bWJlciBvZiBzdGVwcyBpcyBrbm93biBhbmQgdGh1cyBpdCdzIHRoZSBiZXN0IHdheSB0byBwcmV2ZW50IGFuCi11bmV4cGVjdGVkIGBTdGFja092ZXJmbG93RXJyb3JgLiBGdXJ0aGVybW9yZSwgc2hvcnRlciB0cmF2ZXJzYWxzIHJlZHVjZSB0aGUgKGRlKXNlcmlhbGl6YXRpb24gY29zdHMgd2hlbiBzdWNoIGEgdHJhdmVyc2FsIGlzIHNlbmQKLW92ZXIgdGhlIHdpcmUgdG8gYSBHcmVtbGluIFNlcnZlci4KK09idmlvdXNseSwgdGhlc2UgdHJhdmVyc2FscyBhcmUgbW9yZSBjb21wbGljYXRlZCwgYnV0IHRoZSBudW1iZXIgb2Ygc3RlcHMgaXMga25vd24gYW5kIHRodXMgaXQncyB0aGUgYmVzdCB3YXkgdG8KK3ByZXZlbnQgYW4gdW5leHBlY3RlZCBgU3RhY2tPdmVyZmxvd0Vycm9yYC4gRnVydGhlcm1vcmUsIHNob3J0ZXIgdHJhdmVyc2FscyByZWR1Y2UgdGhlIChkZSlzZXJpYWxpemF0aW9uIGNvc3RzIHdoZW4KK3N1Y2ggYSB0cmF2ZXJzYWwgaXMgc2VuZCBvdmVyIHRoZSB3aXJlIHRvIGEgR3JlbWxpbiBTZXJ2ZXIuCiAKIE5PVEU6IEFsdGhvdWdoIHRoZSBleGFtcGxlIHdhcyBiYXNlZCBvbiBhIGdyYXBoLW11dGF0aW5nIHRyYXZlcnNhbCwgdGhlIHNhbWUgcnVsZXMgYXBwbHkgZm9yIHJlYWQtb25seSBhbmQgbWl4ZWQgdHJhdmVyc2Fscy4KIAogW1t1bnNwZWNpZmllZC1rZXlzLWFuZC1sYWJlbHNdXQogPT0gVW5zcGVjaWZpZWQgS2V5cyBhbmQgTGFiZWxzCiAKLVNvbWUgR3JlbWxpbiBzdGVwcyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IHJlcHJlc2VudCBrZXlzIChlLmcuIGB2YWx1ZU1hcCgpYCkgb3IgbGFiZWxzIChlLmcuIGBvdXQoKWApLiBJbiB0aGUgcHJvdG90eXBpbmcKLXBoYXNlIG9mIGEgcHJvamVjdHMgaXQncyBvZnRlbiBjb252ZW5pZW50IHRvIHVzZSB0aGVzZSBzdGVwcyB3aXRob3V0IGFueSBhcmd1bWVudHMuIEhvd2V2ZXIsIGluIHByb2R1Y3Rpb24gY29kZSB0aGlzIGlzIGJhZCBpZGVhCi1hbmQga2V5cyBhbmQgbGFiZWxzIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkLiBOb3Qgb25seSBkb2VzIGl0IG1ha2UgdGhlIHRyYXZlcnNhbCBlYXNpZXIgdG8gcmVhZCBmb3Igb3RoZXJzLCBidXQgaXQgYWxzbyBlbnN1cmVzCi10aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5vdCBicmVhayBpZiB0aGUgc2NoZW1hIGNoYW5nZXMgYXQgb25lIHBvaW50IGFuZCB0aGUgcXVlcmllcyByZXR1cm4gY29tcGxldGVseSBkaWZmZXJlbnQgcmVzdWx0cy4KK1NvbWUgR3JlbWxpbiBzdGVwcyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IHJlcHJlc2VudCBrZXlzIChlLmcuIGBlbGVtZW50TWFwKClgLCB2YWx1ZU1hcCgpYCkgb3IgbGFiZWxzIChlLmcuCitgb3V0KClgKS4gSW4gdGhlIHByb3RvdHlwaW5nIHBoYXNlIG9mIGEgcHJvamVjdHMgaXQncyBvZnRlbiBjb252ZW5pZW50IHRvIHVzZSB0aGVzZSBzdGVwcyB3aXRob3V0IGFueSBhcmd1bWVudHMuCitIb3dldmVyLCBpbiBwcm9kdWN0aW9uIGNvZGUgdGhpcyBpcyBiYWQgaWRlYSBhbmQga2V5cyBhbmQgbGFiZWxzIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkLiBOb3Qgb25seSBkb2VzIGl0IG1ha2UgdGhlCit0cmF2ZXJzYWwgZWFzaWVyIHRvIHJlYWQgZm9yIG90aGVycywgYnV0IGl0IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5vdCBicmVhayBpZiB0aGUgc2NoZW1hIGNoYW5nZXMgYXQKK29uZSBwb2ludCBhbmQgdGhlIHF1ZXJpZXMgcmV0dXJuIGNvbXBsZXRlbHkgZGlmZmVyZW50IHJlc3VsdHMuCiAKIFRoZSBmb2xsb3dpbmcgY29kZSBibG9jayBzaG93cyBhIGZldyBleGFtcGxlcyB0aGF0IGFyZSBnb29kIGZvciBwcm90b3R5cGluZyBvciBncmFwaCBkaXNjb3ZlcnkuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgpCi1nLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgiY3JlYXRlZCIpLnZhbHVlTWFwKCkKK2cuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJjcmVhdGVkIikuZWxlbWVudE1hcCgpCiBnLlYoKS5oYXMoInNvZnR3YXJlIiwibmFtZSIsInJpcHBsZSIpLmluRSgpLmhhcygid2VpZ2h0IiwgZ3RlKDAuNSkpLm91dFYoKS5wcm9wZXJ0aWVzKCkKIC0tLS0KIApAQCAtMTE0LDcgKzExNSw3IEBACiBbZ3JlbWxpbi1ncm9vdnksZXhpc3RpbmddCiAtLS0tCiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgiY3JlYXRlZCIsImtub3dzIikKLWcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJjcmVhdGVkIikudmFsdWVNYXAoIm5hbWUiLCJsYW5nIikKK2cuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJjcmVhdGVkIikuZWxlbWVudE1hcCgibmFtZSIsImxhbmciKQogZy5WKCkuaGFzKCJzb2Z0d2FyZSIsIm5hbWUiLCJyaXBwbGUiKS5pbkUoImNyZWF0ZWQiKS5oYXMoIndlaWdodCIsIGd0ZSgwLjUpKS5vdXRWKCkuCiAgIHByb3BlcnRpZXMoIm5hbWUiLCJhZ2UiKQogLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9hcHBlbmRpeC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvYXBwZW5kaXguYXNjaWlkb2MKaW5kZXggM2NlYmU4YS4uZGJlYWFhZSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy9hcHBlbmRpeC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2FwcGVuZGl4LmFzY2lpZG9jCkBAIC0xMTYsNyArMTE2LDcgQEAKICAgd2hlcmUoZXEoInQiKSkuCiAgIGdyb3VwKCkuCiAgICAgYnkoc2VsZWN0KCJzIikuYnkoIm5hbWUiKSkuCi0gICAgYnkoZ3JvdXAoKS5ieShzZWxlY3QoInQiKS5ieSh2YWx1ZU1hcCgiZnJvbVRpbWUiLCJ0b1RpbWUiKSkpLgorICAgIGJ5KGdyb3VwKCkuYnkoc2VsZWN0KCJ0IikuYnkoZWxlbWVudE1hcCgiZnJvbVRpbWUiLCJ0b1RpbWUiKSkpLgogICAgICAgICAgICAgICAgYnkoc2VsZWN0KCJjIikuZGVkdXAoKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkpKS5uZXh0KCkKIC0tLS0KIApAQCAtMTU0LDExICsxNTQsMTEgQEAKIHBsYWNlcyA9IFsiY2VudHJldmlsbGUiLCJkdWxsZXMiXTtbXSAgLy8gd2lsbCBub3QgbWF0Y2ggYXMgInB1cmNlbGx2aWxsZSIgaXMgbWlzc2luZwogZy5WKCkubm90KGhhcygibG9jYXRpb24iLCB3aXRob3V0KHBsYWNlcykpKS4KICAgd2hlcmUodmFsdWVzKCJsb2NhdGlvbiIpLmlzKHdpdGhpbihwbGFjZXMpKS5jb3VudCgpLmlzKHBsYWNlcy5zaXplKCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIHBsYWNlcyA9IFsiY2VudHJldmlsbGUiLCJkdWxsZXMiLCJwdXJjZWxsdmlsbGUiXTtbXQogZy5WKCkubm90KGhhcygibG9jYXRpb24iLCB3aXRob3V0KHBsYWNlcykpKS4KICAgd2hlcmUodmFsdWVzKCJsb2NhdGlvbiIpLmlzKHdpdGhpbihwbGFjZXMpKS5jb3VudCgpLmlzKHBsYWNlcy5zaXplKCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIC0tLS0KIAogW1thcHBlbmRpeC1mXV0KQEAgLTE4OCwxMyArMTg4LDEzIEBACiAgICAgIHByb2plY3QoImFiIiwgImJhIikuCiAgICAgICAgYnkoaW5FKCJsaW5rIikud2hlcmUob3V0VigpLmFzKCJhIikpLmNvdW50KCkpLgogICAgICAgIGJ5KG91dEUoImxpbmsiKS53aGVyZShpblYoKS5hcygiYSIpKS5jb3VudCgpKS4KLSAgICAgc2FjayhzdW0pLmJ5KHNlbGVjdCgiYWIiKSkuCi0gICAgIHNhY2soZGl2KS5ieShzZWxlY3QoImJhIikpLgorICAgICBzYWNrKHN1bSkuYnkoImFiIikuCisgICAgIHNhY2soZGl2KS5ieSgiYmEiKS4KICAgICAgcHJvamVjdCgiYSIsICJiIiwgIiMoYSxiKSIsICIjKGIsYSkiLCAiIyhhLGIpIC8gIyhiLGEpIikuCiAgICAgICAgYnkoc2VsZWN0KCJhIikpLgogICAgICAgIGJ5KHNlbGVjdCgiYiIpKS4KLSAgICAgICBieShzZWxlY3QoImFiIikpLgotICAgICAgIGJ5KHNlbGVjdCgiYmEiKSkuCisgICAgICAgYnkoImFiIikuCisgICAgICAgYnkoImJhIikuCiAgICAgICAgYnkoc2FjaygpKQogLS0tLQogCkBAIC0yMzUsMjIgKzIzNSwyMiBAQAogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBndGUoMjAxNjA4MTcpKSksCiAgICAgICAgIF9fLm5vdChvdXRFKCJvY2N1cmVkX2F0IikpLmNvYWxlc2NlKG91dCgpLmhhc0xhYmVsKCJkaW1vbiIpLCBpZGVudGl0eSgpKSkuCi0gIHZhbHVlTWFwKCkKKyAgZWxlbWVudE1hcCgpCiAvLyBvbmx5IEUgaGFzIGEgdmFsaWQgZGF0ZQogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBsdGUoMjAxNjA4MTcpKSksCiAgICAgICAgIF9fLm5vdChvdXRFKCJvY2N1cmVkX2F0IikpLmNvYWxlc2NlKG91dCgpLmhhc0xhYmVsKCJkaW1vbiIpLCBpZGVudGl0eSgpKSkuCi0gIHZhbHVlTWFwKCkKKyAgZWxlbWVudE1hcCgpCiAvLyBvbmx5IEQgaGFzIGEgdmFsaWQgZGF0ZQogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBndCgyMDE2MDgxNykpKSwKICAgICAgICAgX18ubm90KG91dEUoIm9jY3VyZWRfYXQiKSkuY29hbGVzY2Uob3V0KCkuaGFzTGFiZWwoImRpbW9uIiksIGlkZW50aXR5KCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIC8vIG5laXRoZXIgRCBub3IgRSBoYXZlIGEgdmFsaWQgZGF0ZQogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBsdCgyMDE2MDgxNykpKSwKICAgICAgICAgX18ubm90KG91dEUoIm9jY3VyZWRfYXQiKSkuY29hbGVzY2Uob3V0KCkuaGFzTGFiZWwoImRpbW9uIiksIGlkZW50aXR5KCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIC0tLS0KIAogW1thcHBlbmRpeC1pXV0KQEAgLTI3Miw3ICsyNzIsNyBAQAogICBtYXAoZ3JvdXAoKS5ieShsYWJlbCkuYnkodW5mb2xkKCkpKS5hcygiYiIpLgogICBzZWxlY3QoImEiLCJiIikuCiAgIGdyb3VwKCkuCi0gICAgYnkoc2VsZWN0KCJhIikpLgorICAgIGJ5KCJhIikuCiAgICAgYnkoc2VsZWN0KCJiIikuCiAgICAgICAgICBncm91cCgpLgogICAgICAgICAgICBieShzZWxlY3Qoa2V5cykpLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9jZW50cmFsaXR5LmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy9jZW50cmFsaXR5LmFzY2lpZG9jCmluZGV4IDJhMWQwYmQuLjFkZGJlZjAgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlY2lwZXMvY2VudHJhbGl0eS5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2NlbnRyYWxpdHkuYXNjaWlkb2MKQEAgLTM0LDcgKzM0LDcgQEAKIGcuVigpLmdyb3VwKCkuYnkoKS5ieShvdXRFKCkuY291bnQoKSkgICAgICAgICAgICAgICAgIDwzPgogZy5WKCkucHJvamVjdCgidiIsImRlZ3JlZSIpLmJ5KCkuYnkoYm90aEUoKS5jb3VudCgpKSAgPDQ+CiBnLlYoKS5wcm9qZWN0KCJ2IiwiZGVncmVlIikuYnkoKS5ieShib3RoRSgpLmNvdW50KCkpLiA8NT4KLSAgb3JkZXIoKS5ieShzZWxlY3QoImRlZ3JlZSIpLCBkZXNjKS4KKyAgb3JkZXIoKS5ieSgiZGVncmVlIiwgZGVzYykuCiAgIGxpbWl0KDQpCiAtLS0tCiAKQEAgLTE1Niw3ICsxNTYsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCitnLmlvKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykucmVhZCgpLml0ZXJhdGUoKQogZy5WKCkucmVwZWF0KGdyb3VwQ291bnQoJ20nKS5ieSgnbmFtZScpLm91dCgpKS50aW1lcyg1KS5jYXAoJ20nKS4gICAgICAgICAgICAgICAgPDE+CiAgIG9yZGVyKGxvY2FsKS5ieSh2YWx1ZXMsIGRlc2MpLmxpbWl0KGxvY2FsLCAxMCkubmV4dCgpICAgICAgICAgICAgICAgICAgICAgICAgICA8Mj4KIGcuVigpLnJlcGVhdChncm91cENvdW50KCdtJykuYnkoJ25hbWUnKS5vdXQoKS50aW1lTGltaXQoMTAwKSkudGltZXMoNSkuY2FwKCdtJykuIDwzPgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9jb2xsZWN0aW9ucy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvY29sbGVjdGlvbnMuYXNjaWlkb2MKaW5kZXggNWFjZTUyOC4uOWFiNzRlYSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy9jb2xsZWN0aW9ucy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2NvbGxlY3Rpb25zLmFzY2lpZG9jCkBAIC0yNDQsMTIgKzI0NCwxNiBAQAogLS0tLQogCiA8MT4gRm9yIGVhY2ggdmVydGV4LCBjcmVhdGUgYSAicGFpciIgKGkuZS4gYSBgTGlzdGAgb2YgdHdvIG9iamVjdHMpIG9mIHRoZSB2ZXJ0ZXggaXRzZWxmIGFuZCBpdHMgZWRnZSBjb3VudC4KLTwyPiBGb3IgZWFjaCB2ZXJ0ZXgsIGNyZWF0ZSBhICJ0cmlwbGUiIChpLmUuIGEgYExpc3Rgb2YgdGhyZWUgb2JqZWN0cykgb2YgdGhlIGluZGV4IG9mIHRoZSB2ZXJ0ZXggKHN0YXJ0aW5nIGF0IHplcm8pLAorPDI+IEZvciBlYWNoIHZlcnRleCwgY3JlYXRlIGEgInRyaXBsZSIgKGkuZS4gYSBgTGlzdGAgb2YgdGhyZWUgb2JqZWN0cykgb2YgdGhlIGluZGV4IG9mIHRoZSB2ZXJ0ZXggKHN0YXJ0aW5nIGF0IHplcm8pLAogdGhlIHZlcnRleCBpdHNlbGYgYW5kIGl0cyBlZGdlIGNvdW50LgogCiBUaGUgcGF0dGVybiBoZXJlIGlzIHRvIHVzZSBgdW5pb24oKWAgaW4gY29uanVuY3Rpb24gd2l0aCBgZm9sZCgpYC4gQXMgZXhwbGFpbmVkIGVhcmxpZXIsIHRoZSBgZm9sZCgpYCBvcGVyYXRpb24gcmVkdWNlcwogdGhlIHN0cmVhbSBmcm9tIGB1bmlvbigpYCB0byBhIHNpbmdsZSBgTGlzdGAgdGhhdCBpcyB0aGVuIGZlZCBmb3J3YXJkIHRvIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHRyYXZlcnNhbC4KIAorTk9URTogVGlua2VyUG9wIDMuNC40IGludHJvZHVjZWQgYGVsZW1lbnRNYXAoKWAtc3RlcCB3aGljaCBlc3NlbnRpYWxseSByZXBsYWNlcyBtdWNoIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbnMgZGVzY3JpYmVkCitiZWxvdyB0aGF0IGFyZSBhcHBsaWVkIHRvIHRoZSByZXN1bHRzIG9mIGB2YWx1ZU1hcCgpYC1zdGVwLiBXaGlsZSB0aGUgZGlyZWN0IHVzZSBvZiBgZWxlbWVudE1hcCgpYCBlbGltaW5hdGVzIHRoZQorbmVlZCBmb3IgdGhlIHRyYW5zZm9ybWF0aW9uLCB0aGUgZXhwbGFuYXRpb25zIGJlbG93IGFyZSBzdGlsbCBlZGlmeWluZyBhbmQgd29ydGggZXhhbWluaW5nLgorCiBOb3cgdGhhdCBgTGlzdGAgcGF0dGVybnMgaGF2ZSBiZWVuIGV4cGxhaW5lZCwgdGhlcmUgY2FuIG5vdyBiZSBzb21lIGF0dGVudGlvbiBvbiBgTWFwYC4gT25lIG9mIHRoZSBtb3N0IGNvbW1vbiB3YXlzCiB0byBlbmQgdXAgd2l0aCBhIGBNYXBgIGlzIHdpdGggYHZhbHVlTWFwKClgOgogCkBAIC0zNTIsMTUgKzM1NiwxNyBAQAogICBoYXMoJ25hbWUnLCdtYXJrbycpLgogICB1bmlvbihwcm9qZWN0KCdkZWdyZWUnKS4gICAgICAgICA8MT4KICAgICAgICAgICBieShib3RoRSgpLmNvdW50KCkpLAotICAgICAgICB2YWx1ZU1hcCh0cnVlKSkuCisgICAgICAgIHZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpKS4KICAgdW5mb2xkKCkuICAgICAgICAgICAgICAgICAgICAgICAgPDI+CiAgIGdyb3VwKCkuCiAgICAgYnkoa2V5cykuCiAgICAgYnkoc2VsZWN0KHZhbHVlcykudW5mb2xkKCkpCiAtLS0tCiAKLTwxPiBUaGUgYHZhbHVlTWFwKHRydWUpYCBvZiBhIGBWZXJ0ZXhgIGNhbiBiZSBleHRlbmRlZCB3aXRoIHRoZSAiZGVncmVlIiBvZiB0aGUgYFZlcnRleGAgYnkgcGVyZm9ybWluZyBhIGB1bmlvbigpYCBvZgotdGhlIHR3byB0cmF2ZXJzYWxzIHRoYXQgcHJvZHVjZSB0aGF0IG91dHB1dCAoYm90aCBwcm9kdWNlIGBNYXBgIG9iamVjdHMpLgorPDE+IFRoZSBgdmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucylgIG9mIGEgYFZlcnRleGAgY2FuIGJlIGV4dGVuZGVkIHdpdGggdGhlICJkZWdyZWUiIG9mIHRoZSBgVmVydGV4YCBieQorcGVyZm9ybWluZyBhIGB1bmlvbigpYCBvZiB0aGUgdHdvIHRyYXZlcnNhbHMgdGhhdCBwcm9kdWNlIHRoYXQgb3V0cHV0IChib3RoIHByb2R1Y2UgYE1hcGAgb2JqZWN0cykuIFJlY2FsbCB0aGF0CitgdmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucylgIGlzIHJlcGxhY2VkIGJ5IGBlbGVtZW50TWFwKClgIGluIDMuNC40IC0gdGhpcyBleGFtcGxlcyBjb250aW51ZXMgd2l0aCB0aGUgIm9sZCIKK2Zvcm0gZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuCiA8Mj4gVGhlIGB1bmZvbGQoKWAtc3RlcCBpcyB1c2VkIHRvIGRlY29tcG9zZSB0aGUgYE1hcGAgb2JqZWN0cyBpbnRvIGtleS92YWx1ZSBlbnRyaWVzIHRoYXQgYXJlIHRoZW4gY29uc3RydWN0ZWQgYmFjawogaW50byBhIHNpbmdsZSBuZXcgYE1hcGAgZ2l2ZW4gdGhlIHBhdHRlcm5zIHNob3duIGVhcmxpZXIuIFRoZSBgTWFwYCBvYmplY3RzIG9mIGJvdGggdHJhdmVyc2FscyBpbiB0aGUgYHVuaW9uKClgIGFyZQogZXNzZW50aWFsbHkgbWVyZ2VkIHRvZ2V0aGVyLgpAQCAtMzc1LDcgKzM4MSw3IEBACiAtLS0tCiBnLlYoKS4KICAgaGFzKCduYW1lJywnbWFya28nKS4KLSAgdW5pb24odmFsdWVNYXAodHJ1ZSksCisgIHVuaW9uKHZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpLAogICAgICAgICBwcm9qZWN0KCdhZ2UnKS4KICAgICAgICAgICBieShjb25zdGFudCgxMDApKSkuCiAgIHVuZm9sZCgpLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9jb25uZWN0ZWQtY29tcG9uZW50cy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvY29ubmVjdGVkLWNvbXBvbmVudHMuYXNjaWlkb2MKaW5kZXggNDZkNjFlYi4uMzg4MTMwMCAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy9jb25uZWN0ZWQtY29tcG9uZW50cy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2Nvbm5lY3RlZC1jb21wb25lbnRzLmFzY2lpZG9jCkBAIC0xNCwxMSArMTQsMzAgQEAKIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogLy8vLworCisvLyBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChhbndlciBvbiBncmVtbGluIHVzZXIgbGlzdCkKKy8vIEBhdXRob3IgUm9iZXJ0IERhbGUgKGFuc3dlciBvbiBncmVtbGluIHVzZXIgbGlzdCkKKy8vIEBhdXRob3IgTWFyYyBkZSBMaWduaWUKKwogW1tjb25uZWN0ZWQtY29tcG9uZW50c11dCiA9PSBDb25uZWN0ZWQgQ29tcG9uZW50cwogCiBHcmVtbGluIGNhbiBiZSB1c2VkIHRvIGZpbmQgbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25uZWN0ZWRfY29tcG9uZW50XyhncmFwaF90aGVvcnkpW2Nvbm5lY3RlZCBjb21wb25lbnRzXQotaW4gYSBncmFwaC4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBncmFwaCB3aGljaCBoYXMgdGhyZWUgY29ubmVjdGVkIGNvbXBvbmVudHM6CitpbiBhIGdyYXBoLiBJbiBhIGRpcmVjdGVkIGdyYXBoIGxpa2UgaW4gVGlua2VyUG9wLCBjb21wb25lbnRzIGNhbiBiZSB3ZWFrbHkgb3Igc3Ryb25nbHkgY29ubmVjdGVkLiBUaGlzIHJlY2lwZSBpcworcmVzdHJpY3RlZCB0byBmaW5kaW5nIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlyZWN0ZWRfZ3JhcGgjRGlyZWN0ZWRfZ3JhcGhfY29ubmVjdGl2aXR5W3dlYWtseQorY29ubmVjdGVkIGNvbXBvbmVudHNdLCBpbiB3aGljaCB0aGUgZGlyZWN0aW9uIG9mIGVkZ2VzIGlzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuCisKK0RlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB0aGUgZ3JhcGgsIHRocmVlIHNvbHV0aW9uIHJlZ2ltZXMgY2FuIGJlIGRpc2NyaW1pbmF0ZWQ6CisKKzEuIFNtYWxsIGdyYXBocyB0aGF0IGZpdCBpbiB0aGUgbWVtb3J5IG9mIGEgc2luZ2xlIG1hY2hpbmUKKworMi4gTWVkaXVtLXNpemVkIGdyYXBocyBiYWNrZWQgYnkgc3RvcmFnZSBmb3Igd2hpY2ggYW4gT0xUUCBsaW5lYXIgc2NhbiBpcyBzdGlsbCBmZWFzaWJsZS4gVGhpcyByZWdpbWUgaXMgbGVmdCB0byB0aGlyZCBwYXJ0eQorVGlua2VyUG9wIGltcGxlbWVudGF0aW9ucywgc2luY2UgVGlua2VyUG9wIGl0c2VsZiBoYXMgbm8gc3RvcmFnZS1iYWNrZWQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9ucy4gVGhlIGlkZWEgaXMgdGhhdAorY29tcG9uZW50IG1lbWJlcnNoaXAgaXMgc3RvcmVkIGluIHRoZSBncmFwaCwgcmF0aGVyIHRoYW4gaW4gbWVtb3J5LgorCiszLiBMYXJnZSBncmFwaHMgcmVxdWlyaW5nIGFuIGFwcHJvYWNoIHdpdGggYEhhZG9vcEdyYXBoYCBhbmQgYFNwYXJrR3JhcGhDb21wdXRlcmAgdG8geWllbGQgcmVzdWx0cyBpbiBhIHJlYXNvbmFibGUgdGltZS4KKworVGhlc2UgcmVnaW1lcyBhcmUgZGlzY3Vzc2VkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGZvbGxvd2luZyBncmFwaCB3aXRoIHRocmVlIHdlYWtseSBjb25uZWN0ZWQgY29tcG9uZW50czoKIAogaW1hZ2U6Y29ubmVjdGVkLWNvbXBvbmVudHMucG5nW3dpZHRoPTYwMF0KIApAQCAtMzUsNDYgKzU0LDk3IEBACiAgIGFkZEUoImxpbmsiKS5mcm9tKCJkIikudG8oImUiKS5pdGVyYXRlKCkKIC0tLS0KIAotT25lIHdheSB0byBkZXRlY3QgdGhlIHZhcmlvdXMgc3ViZ3JhcGhzIHdvdWxkIGJlIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6Cis9PT0gU21hbGwgZ3JhcGggdHJhdmVyc2FscworCitDb25uZWN0ZWQgY29tcG9uZW50cyBpbiBhIHNtYWxsIGdyYXBoIGNhbiBiZSBkZXRlcm1pbmVkIHdpdGggZWl0aGVyIGFuIE9MVFAgdHJhdmVyc2FsIG9yIHRoZSBPTEFQCitgY29ubmVjdGVkQ29tcG9uZW50KClgLXN0ZXAuIFRoZSBgY29ubmVjdGVkQ29tcG9uZW50KClgLXN0ZXAgaXMgYXZhaWxhYmxlIGFzIG9mIFRpbmtlclBvcCAzLjQuMCBhbmQgaXMKK2Rlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGVkY29tcG9uZW50LXN0ZXBbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dLgorVGhlIHRyYXZlcnNhbCBsb29rcyBsaWtlOgogCiBbZ3JlbWxpbi1ncm9vdnksZXhpc3RpbmddCiAtLS0tCi1nLlYoKS5lbWl0KGN5Y2xpY1BhdGgoKS5vcigpLm5vdChib3RoKCkpKS5yZXBlYXQoYm90aCgpKS51bnRpbChjeWNsaWNQYXRoKCkpLiAgPDE+Ci0gIHBhdGgoKS5hZ2dyZWdhdGUoInAiKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDI+Ci0gIHVuZm9sZCgpLmRlZHVwKCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDM+Ci0gIG1hcChfXy5hcygidiIpLnNlbGVjdCgicCIpLnVuZm9sZCgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDQ+Ci0gICAgICAgICBmaWx0ZXIodW5mb2xkKCkud2hlcmUoZXEoInYiKSkpLgotICAgICAgICAgdW5mb2xkKCkuZGVkdXAoKS5vcmRlcigpLmJ5KGlkKS5mb2xkKCkpLgotICBkZWR1cCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw1PgorZy53aXRoQ29tcHV0ZXIoKS5WKCkuY29ubmVjdGVkQ29tcG9uZW50KCkuCisgICAgZ3JvdXAoKS5ieShDb25uZWN0ZWRDb21wb25lbnQuY29tcG9uZW50KS4KKyAgICBzZWxlY3QodmFsdWVzKS51bmZvbGQoKQogLS0tLQogCi08MT4gSXRlcmF0ZSBhbGwgdmVydGljZXMgYW5kIHJlcGVhdGVkbHkgdHJhdmVyc2Ugb3ZlciBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZyBlZGdlcyAoVGlua2VyUG9wIGRvZXNuJ3Qgc3VwcG9ydAotdW5pZGlyZWN0aW9uYWwgZ3JhcGhzIGRpcmVjdGx5IHNvIGl0IG11c3QgYmUgc2ltdWxhdGVkIGJ5IGlnbm9yaW5nIHRoZSBkaXJlY3Rpb24gd2l0aCBgYm90aGApLiBOb3RlIHRoZSB1c2Ugb2YgYGVtaXRgCi1wcmlvciB0byBgcmVwZWF0YCBhcyB0aGlzIGFsbG93cyBmb3IgcmV0dXJuIG9mIGEgc2luZ2xlIGxlbmd0aCBwYXRoLgotPDI+IEFnZ3JlZ2F0ZSB0aGUgYHBhdGgoKWAgb2YgdGhlIGVtaXR0ZWQgdmVydGljZXMgdG8gInAiLiBJdCBpcyB3aXRoaW4gdGhlc2UgcGF0aHMgdGhhdCB0aGUgbGlzdCBvZiBjb25uZWN0ZWQKLWNvbXBvbmVudHMgd2lsbCBiZSBpZGVudGlmaWVkLiBPYnZpb3VzbHkgdGhlIHBhdGhzIGxpc3QgYXJlIGR1cGxpY2F0aXZlIGluIHRoZSBzZW5zZSB0aGF0IHRoZXkgY29udGFpbnMgZGlmZmVyZW50Ci1wYXRocyB0cmF2ZWxlZCBvdmVyIHRoZSBzYW1lIHZlcnRpY2VzLgotPDM+IFVucm9sbCB0aGUgZWxlbWVudHMgaW4gdGhlIHBhdGggbGlzdCB3aXRoIGB1bmZvbGRgIGFuZCBgZGVkdXBgLgotPDQ+IFVzZSB0aGUgZmlyc3QgdmVydGV4IGluIGVhY2ggcGF0aCB0byBmaWx0ZXIgYWdhaW5zdCB0aGUgcGF0aHMgc3RvcmVkIGluICJwIi4gV2hlbiBhIHBhdGggaXMgZm91bmQgdGhhdCBoYXMgdGhlCi12ZXJ0ZXggaW4gaXQsIGRlZHVwIHRoZSB2ZXJ0aWNlcyBpbiB0aGUgcGF0aCwgb3JkZXIgaXQgYnkgdGhlIGlkZW50aWZpZXIuIEVhY2ggcGF0aCBvdXRwdXQgZnJvbSB0aGlzIGBtYXBgIHN0ZXAKLXJlcHJlc2VudHMgYSBjb25uZWN0ZWQgY29tcG9uZW50LgotPDU+IFRoZSBjb25uZWN0ZWQgY29tcG9uZW50IGxpc3QgaXMgZHVwbGljYXRpdmUgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0aHMgaW4gInAiLCBidXQgbm93IHRoYXQgdGhlIHZlcnRpY2VzIHdpdGhpbgotdGhlIHBhdGhzIGFyZSBvcmRlcmVkLCBhIGZpbmFsIGBkZWR1cGAgd2lsbCBtYWtlIHRoZSBsaXN0IG9mIGNvbm5lY3RpdmUgY29tcG9uZW50cyB1bmlxdWUuCitOT1RFOiBUaGUgYGNvbXBvbmVudGAgb3B0aW9uIHBhc3NlZCB0byBgYnkoKWAgaXMgc3RhdGljYWxseSBpbXBvcnRlZCBmcm9tIGBDb25uZWN0ZWRDb21wb25lbnRgIGFuZCByZWZlcnMgdG8gdGhlCitkZWZhdWx0IHByb3BlcnR5IGtleSB3aXRoaW4gd2hpY2ggdGhlIHJlc3VsdCBvZiB0aGUgYWxnb3JpdGhtIGlzIHN0b3JlZC4KIAotTk9URTogVGhpcyBpcyBhIG5pY2UgZXhhbXBsZSBvZiB3aGVyZSBydW5uaW5nIHNtYWxsZXIgcGllY2VzIG9mIGEgbGFyZ2UgR3JlbWxpbiBzdGF0ZW1lbnQgbWFrZSBpdCBlYXNpZXIgdG8gc2VlIHdoYXQKLWlzIGhhcHBlbmluZyBhdCBlYWNoIHN0ZXAuIENvbnNpZGVyIHJ1bm5pbmcgdGhpcyBleGFtcGxlIG9uZSBsaW5lIGF0IGEgdGltZSAob3IgcGVyaGFwcyBldmVuIGluIGEgc3RlcCBhdCBhIHRpbWUpIHRvCi1zZWUgdGhlIG91dHB1dCBhdCBlYWNoIHBvaW50LgotCi1XaGlsZSB0aGUgYWJvdmUgYXBwcm9hY2ggcmV0dXJucyByZXN1bHRzIG5pY2VseSwgdGhlIHRyYXZlcnNhbCBkb2Vzbid0IGFwcGVhciB0byB3b3JrIHdpdGggT0xBUC4gQSBsZXNzIGVmZmljaWVudAotYXBwcm9hY2gsIGJ1dCBvbmUgbW9yZSBzdWl0ZWQgZm9yIE9MQVAgZXhlY3V0aW9uIGxvb2tzIHF1aXRlIHNpbWlsYXIgYnV0IGRvZXMgbm90IHVzZSBgZGVkdXBgIGFzIGhlYXZpbHkgKHRodXMKLWBHcmFwaENvbXB1dGVyYCBpcyBmb3JjZWQgdG8gYW5hbHl6ZSBmYXIgbW9yZSBwYXRocyk6CitBIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gZGV0ZWN0IHRoZSB2YXJpb3VzIHN1YmdyYXBocyB3aXRoIGFuIE9MVFAgdHJhdmVyc2FsIGlzIHRvIGRvIHRoaXM6CiAKIFtncmVtbGluLWdyb292eSxleGlzdGluZ10KIC0tLS0KLWcud2l0aENvbXB1dGVyKCkuVigpLmVtaXQoY3ljbGljUGF0aCgpLm9yKCkubm90KGJvdGgoKSkpLnJlcGVhdChib3RoKCkpLnVudGlsKGN5Y2xpY1BhdGgoKSkuCi0gIGFnZ3JlZ2F0ZSgicCIpLmJ5KHBhdGgoKSkuY2FwKCJwIikudW5mb2xkKCkubGltaXQobG9jYWwsIDEpLgotICBtYXAoX18uYXMoInYiKS5zZWxlY3QoInAiKS51bmZvbGQoKS4KLSAgICAgICAgIGZpbHRlcih1bmZvbGQoKS53aGVyZShlcSgidiIpKSkuCi0gICAgICAgICB1bmZvbGQoKS5kZWR1cCgpLm9yZGVyKCkuYnkoaWQpLmZvbGQoKQotICApLnRvU2V0KCkKK2cuVigpLmVtaXQoY3ljbGljUGF0aCgpLm9yKCkubm90KGJvdGgoKSkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxPgorICAgIHJlcGVhdChfXy53aGVyZSh3aXRob3V0KCdhJykpLnN0b3JlKCdhJykuYm90aCgpKS51bnRpbChjeWNsaWNQYXRoKCkpLiAgICAgPDI+CisgICAgZ3JvdXAoKS5ieShwYXRoKCkudW5mb2xkKCkubGltaXQoMSkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mz4KKyAgICBieShwYXRoKCkudW5mb2xkKCkuZGVkdXAoKS5mb2xkKCkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0PgorICAgIHNlbGVjdCh2YWx1ZXMpLnVuZm9sZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDU+CiAtLS0tCisKKzwxPiBUaGUgaW5pdGlhbCBlbWl0KCkgc3RlcCBhbGxvd3MgZm9yIG91dHB1dCBvZiBpc29sYXRlZCB2ZXJ0aWNlcywgaW4gYWRkaXRpb24gdG8gdGhlIGRpc2NvdmVyeSBvZgorY29tcG9uZW50cyBhcyBkZXNjcmliZWQgaW4gKDIpLgorCis8Mj4gVGhlIGVudGlyZSBjb21wb25lbnQgdG8gd2hpY2ggdGhlIGZpcnN0IHJldHVybmVkIHZlcnRleCBiZWxvbmdzLCBpcyB2aXNpdGVkLiBUbyBhbGxvdyBmb3IgY29tcG9uZW50cyBvZiBhbnkKK3N0cnVjdHVyZSwgYSByZXBlYXQgbG9vcCBpcyBhcHBsaWVkIHRoYXQgb25seSBzdG9wcyBmb3IgYSBwYXJ0aWN1bGFyIGJyYW5jaCBvZiB0aGUgY29tcG9uZW50IHdoZW4gaXQgZGV0ZWN0cyBhIGN5Y2xpYworcGF0aC4gIENvbGxlY3Rpb24gYCdhJ2AgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHZpc2l0ZWQgdmVydGljZXMsIGZvciBib3RoIHN1YnRyYXZlcnNhbHMgd2l0aGluIGEgY29tcG9uZW50CithbmQgbmV3IHRyYXZlcnNhbHMgcmVzdWx0aW5nIGZyb20gdGhlIGBnLlYoKWAgbGluZWFyIHNjYW4uCisKKzwzPiBXaGlsZSBgJ2EnYCBuaWNlbHkga2VlcHMgdHJhY2sgb2YgdmVydGljZXMgYWxyZWFkeSB2aXNpdGVkLCB0aGUgYWN0dWFsIGNvbXBvbmVudHMgbmVlZCB0byBiZSBleHRyYWN0ZWQgZnJvbSB0aGUKK3BhdGggaW5mb3JtYXRpb24uIFRoZSBgcGF0aCgpLnVuZm9sZCgpLmxpbWl0KDEpYCBjbG9zdXJlIHByb3ZpZGVzIHRoZSBzdGFydGluZyB2ZXJ0ZXgKK29mIHN1cnZpdmluZyB0cmF2ZXJzZXJzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBncm91cCB0aGUgY29tcG9uZW50cy4KKworPDQ+IFRoaXMgY2xhdXNlIGNvbGxlY3RzIHRoZSB1bmlxdWUgdmVydGljZXMgZnJvbSBhbGwgcGF0aHMgd2l0aCB0aGUgc2FtZSBzdGFydGluZyB2ZXJ0ZXgsIHRodXMgZnJvbSB0aGUgc2FtZQord2VhayBjb21wb25lbnQuCisKKzw1PiBUaGUgdmFsdWVzIG9mIHRoZSBncm91cGJ5IG1hcCBjb250YWluIHRoZSBsaXN0cyBvZiB2ZXJ0aWNlcyBtYWtpbmcgdXAgdGhlIHJlcXVlc3RlZCBjb21wb25lbnRzLgorCis9PT0gU21hbGwgZ3JhcGggc2NhbGFiaWxpdHkKKworVGhlIHNjYWxhYmlsaXR5IG9mIHRoZSBPTFRQIHRyYXZlcnNhbCBhbmQgdGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCBmb3IgaW4tbWVtb3J5IGdyYXBocyBpcyBzaG93biBpbiB0aGUgZmlndXJlcworYmVsb3cuCisKK1tbY2Mtc2NhbGUtc2l6ZV1dCisuUnVuIHRpbWVzIGZvciBmaW5kaW5nIGNvbm5lY3RlZCBjb21wb25lbnRzIGluIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIGdyYXBoIHdpdGggMTAgY29tcG9uZW50cyBvZiBlcXVhbCBzaXplIGFuZCB3aXRoIGFuIGVkZ2UvdmVydGV4IHJhdGlvIG9mIDYKK2ltYWdlOjpjYy1zY2FsZS1zaXplLnBuZ1t3aWR0aD02MDAsIHNpZGU9Ym90dG9tXQorCitJbiBnZW5lcmFsLCB0aGUgYGNvbm5lY3RlZENvbXBvbmVudCgpYC1zdGVwIGlzIGFsbW9zdCBhIGZhY3RvciB0d28gZmFzdGVyIHRoYW4gdGhlIE9MVFAgdHJhdmVyc2FsLiBPbmx5LCBmb3IgdmVyeQorc21hbGwgZ3JhcGhzIHRoZSBvdmVyaGVhZCBvZiBydW5uaW5nIHRoZSBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtIGlzIGxhcmdlciB0aGFuIHRoYXQgb2YgdGhlIE9MVFAgdHJhdmVyc2FsLgorVGhlIHZlcnRleCBwcm9ncmFtIHdvcmtzIGJ5IGhhdmluZyBpbnRlcmNvbm5lY3RlZCB2ZXJ0aWNlcyBleGNoYW5nZSBpZCdzIGFuZCBzdG9yZSB0aGUgbG93ZXN0IGlkIHVudGlsIG5vIHZlcnRleAorcmVjZWl2ZXMgYSBsb3dlciBpZC4gVGhpcyBhbGdvcml0aG0gaXMgY29tbW9ubHkgYXBwbGllZCBpbgorbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CdWxrX3N5bmNocm9ub3VzX3BhcmFsbGVsW2J1bGsgc3luY2hyb25vdXMgcGFyYWxsZWxdIHN5c3RlbXMsIGUuZy4gaW4KK2xpbms6aHR0cHM6Ly9zcGFyay5hcGFjaGUub3JnL2dyYXBoeFtBcGFjaGUgU3BhcmsgR3JhcGhYXS4gT3ZlcmhlYWQgZm9yIHRoZSB2ZXJ0ZXggcHJvZ3JhbSBhcmlzZXMgYmVjYXVzZSBpdCBoYXMgdG8gcnVuCithcyBtYW55IGN5Y2xlcyBhcyB0aGUgbGFyZ2VzdCBsZW5ndGggb2YgdGhlIHNob3J0ZXN0IHBhdGhzIGJldHdlZW4gYW55IHR3byB2ZXJ0aWNlcyBpbiBhIGNvbXBvbmVudCBvZiB0aGUgZ3JhcGguIEluCitldmVyeSBjeWNsZSBlYWNoIHZlcnRleCBoYXMgdG8gYmUgY2hlY2tlZCBmb3IgYmVpbmcKKyJoYWx0ZWQiLiBPdmVyaGVhZCBvZiB0aGUgT0xUUCB0cmF2ZXJzYWwgY29uc2lzdHMgb2YgZWFjaCB0cmF2ZXJzZXIgaGF2aW5nIHRvIGNhcnJ5IGNvbXBsZXRlIHBhdGggaW5mb3JtYXRpb24uIEZvcgorcHVyZSBkZXB0aC1maXJzdC1zZWFyY2ggb3IgYnJlYWR0aC1maXJzdC1zZWFyY2ggaW1wbGVtZW50YXRpb25zLCBjb25uZWN0ZWQtY29tcG9uZW50IGFsZ290aXRobXMgc2hvdWxkIHNjYWxlCithcyBbLmJpZ10jI08jIyhWK0UpLiBGb3IgdGhlIHRyYXZlcnNhbHMgaW4gdGhlIGZpZ3VyZSBhYm92ZSB0aGlzIGlzIGFsbW9zdCB0aGUgY2FzZS4KKworW1tjYy1zY2FsZS1yYXRpb11dCisuUnVuIHRpbWVzIGZvciBmaW5kaW5nIGNvbm5lY3RlZCBjb21wb25lbnRzIGluIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIGdyYXBoIHdpdGggMTAgY29tcG9uZW50cywgZWFjaCBjb25zaXN0aW5nIG9mIDY0MDAgdmVydGljZXMKK2ltYWdlOjpjYy1zY2FsZS1yYXRpby5wbmdbd2lkdGg9NjAwXQorCitUaGUgcmFuZG9tIGdyYXBocyB1c2VkIGZvciB0aGUgc2NhbGFiaWxpdHkgdGVzdHMgY2FuIGJlIG1vZHVsYXRlZCB3aXRoIHRoZSBlZGdlL3ZlcnRleCByYXRpby4gRm9yIHNtYWxsIHJhdGlvcyB0aGUKK2NvbXBvbmVudHMgZ2VuZXJhdGVkIGFyZSBtb3JlIGxpbnQtbGlrZSBhbmQgaGFyZGVyIHRvIHByb2Nlc3MgYnkgdGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcC4gRm9yIGhpZ2ggcmF0aW9zCit0aGUgY29tcG9uZW50cyBhcmUgbW9yZSBtZXNoLWxpa2UgYW5kIHRoZSBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtIG5lZWRzIGZldyBjeWNsZXMgdG8gcHJvY2VzcyB0aGUgZ3JhcGguIFRoZXNlCitjaGFyYWN0ZXJpc3RpY3Mgc2hvdyBjbGVhcmx5IGZyb20gdGhlIGdyYXBoLiBJbmRlZWQsIGZvciBhIGdpdmVuIG51bWJlciBvZiB2ZXJ0aWNlcywgdGhlIHJ1biB0aW1lIG9mIHRoZQorYGNvbm5lY3RlZENvbXBvbmVudCgpYC1zdGVwIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgbnVtYmVyIG9mIGVkZ2VzLCBidXQgcmF0aGVyIG9uIHRoZSBtYXhpbXVtIHNob3J0ZXN0IHBhdGggbGVuZ3RoIGluCit0aGUgZ3JhcGguCisKKz09PSBMYXJnZSBncmFwaHMKKworTGFyZ2UgZ3JhcGhzIGluIFRpbmtlclBvcCByZXF1aXJlIGRpc3RyaWJ1dGVkIHByb2Nlc3NpbmcgYnkgYFNwYXJrR3JhcGhDb21wdXRlcmAgdG8gZ2V0IHJlc3VsdHMgaW4gYSByZWFzb25hYmxlIHRpbWUgKE9MQVAKK2FwcHJvYWNoKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBncmFwaCBtdXN0IGJlIGF2YWlsYWJsZSBhcyBgSGFkb29wR3JhcGhgICh0aGlyZCBwYXJ0eSBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zIG9mdGVuCithbGxvdyB0byBtYWtlIGEgZ3JhcGggYXZhaWxhYmxlIGFzIGFuIGBIYWRvb3BHcmFwaGAgYnkgcHJvdmlkaW5nIGFuIEhhZG9vcCBgSW5wdXRGb3JtYXRgKS4gUnVubmluZyB0aGUKK2Bjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCBvbgorYW4gYEhhZG9vcEdyYXBoYCB3b3JrcyB0aGUgc2FtZSBhcyBmb3IgYSBzbWFsbCBncmFwaCwgcHJvdmlkZWQgdGhhdCBgU3BhcmtHcmFwaENvbXB1dGVyYCBpcyBzcGVjaWZpZWQgYXMgdGhlIGdyYXBoIGNvbXB1dGVyLAorZWl0aGVyIHdpdGggdGhlIGBncmVtbGluLmhhZG9vcC5kZWZhdWx0R3JhcGhDb21wdXRlcmAgcHJvcGVydHkgb3IgYXMgcGFydCBvZiB0aGUgYHdpdGhDb21wdXRlcigpYC1zdGVwLgorCitTY2FsYWJpbGl0eSBvZiB0aGUgdGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCB3aXRoIGBTcGFya0dyYXBoQ29tcHV0ZXJgIGlzIGhpZ2gsIGJ1dCBub3RlIHRoYXQ6CisKKyogVGhlIGdyYXBoIHNob3VsZCBmaXQgaW4gdGhlIG1lbW9yeSBvZiB0aGUgU3BhcmsgY2x1c3RlciB0byBhbGxvdyB0aGUgVmVydGV4UHJvZ3JhbSB0byBydW4gaXRzIGN5Y2xlcyB3aXRob3V0IHNwaWxsaW5nCitpbnRlcm1lZGlhdGUgcmVzdWx0cyB0byBkaXNrIGFuZCBsb29zaW5nIG1vc3Qgb2YgdGhlIGdhaW5zIGZyb20gdGhlIGRpc3RyaWJ1dGVkIHByb2Nlc3NpbmcuCisqIEFzIGRpc2N1c3NlZCBmb3Igc21hbGwgZ3JhcGhzLCB0aGUgQlNQIGFsZ29yaXRobSBkb2VzIG5vdCBwbGF5IHdlbGwgd2l0aCBncmFwaHMgaGF2aW5nIGEgbGFyZ2Ugc2hvcnRlc3QgcGF0aCBiZXR3ZWVuCithbnkgcGFpciBvZiB2ZXJ0aWNlcy4gT3ZlcmNvbWluZyB0aGlzIGxpbWl0YXRpb24gaXMgc3RpbGwgYQorbGluazpodHRwOi8vd3d3LnZsZGIub3JnL3B2bGRiL3ZvbDcvcDE4MjEteWFuLnBkZltzdWJqZWN0IG9mIGFjYWRlbWljIHJlc2VhcmNoXS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWNpcGVzL2R1cGxpY2F0ZS1lZGdlLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy9kdXBsaWNhdGUtZWRnZS5hc2NpaWRvYwppbmRleCAyN2VhZTJiLi40ODFiN2FiIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2R1cGxpY2F0ZS1lZGdlLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlY2lwZXMvZHVwbGljYXRlLWVkZ2UuYXNjaWlkb2MKQEAgLTM4LDcgKzM4LDcgQEAKICAgcHJvamVjdCgiYSIsImIiKS4gICAgICAgICAgICAgICAgICAgICAgICAgPDE+CiAgICAgYnkoKS5ieShpblYoKS5wYXRoKCkuYnkoKS5ieShsYWJlbCkpLgogICBncm91cCgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mj4KLSAgICBieShzZWxlY3QoImIiKSkuCisgICAgYnkoImIiKS4KICAgICBieShzZWxlY3QoImEiKS5mb2xkKCkpLgogICB1bmZvbGQoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mz4KICAgc2VsZWN0KHZhbHVlcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgPDQ+CkBAIC0xMzMsNyArMTMzLDcgQEAKIC0tLS0KIGcuVigxKS5hcygiYSIpLlYoMykuYWRkRSgiY3JlYXRlZCIpLnByb3BlcnR5KCJ3ZWlnaHQiLDAuNGQpLmZyb20oImEiKS5pdGVyYXRlKCkKIGcuVigxKS5hcygiYSIpLlYoMykuYWRkRSgiY3JlYXRlZCIpLnByb3BlcnR5KCJ3ZWlnaHQiLDAuNWQpLmZyb20oImEiKS5pdGVyYXRlKCkKLWcuVigxKS5vdXRFKCJjcmVhdGVkIikudmFsdWVNYXAodHJ1ZSkKK2cuVigxKS5vdXRFKCJjcmVhdGVkIikuZWxlbWVudE1hcCgpCiAtLS0tCiAKIFRvIGlkZW50aWZ5IHRoZSBkdXBsaWNhdGUgd2l0aCB0aGlzIHJldmlzZWQgZGVmaW5pdGlvbiwgdGhlIHByZXZpb3VzIHRyYXZlcnNhbCBjYW4gYmUgbW9kaWZpZWQgdG86CkBAIC0xNDcsNSArMTQ3LDUgQEAKICAgd2hlcmUobmVxKCJlMSIpKS4KICAgd2hlcmUob3V0VigpLmFzKCJvdiIpKS5hcygiZTIiKS4KICAgd2hlcmUoImUxIiwgZXEoImUyIikpLmJ5KGxhYmVsKS4KLSAgd2hlcmUoImUxIiwgZXEoImUyIikpLmJ5KCJ3ZWlnaHQiKS52YWx1ZU1hcCh0cnVlKQorICB3aGVyZSgiZTEiLCBlcSgiZTIiKSkuYnkoIndlaWdodCIpLmVsZW1lbnRNYXAoKQogLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9lZGdlLW1vdmUuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWNpcGVzL2VkZ2UtbW92ZS5hc2NpaWRvYwppbmRleCBmMzFiMDYwLi42ODBkZDEzIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2VkZ2UtbW92ZS5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2VkZ2UtbW92ZS5hc2NpaWRvYwpAQCAtMjgsNyArMjgsNyBAQAogLS0tLQogZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS4KICAgb3V0RSgpLmluVigpLgotICBwYXRoKCkuYnkoJ25hbWUnKS5ieSh2YWx1ZU1hcCh0cnVlKSkKKyAgcGF0aCgpLmJ5KCduYW1lJykuYnkoZWxlbWVudE1hcCgpKQogLS0tLQogCiBUaGUgIm1hcmtvIiB2ZXJ0ZXggY29udGFpbnMgYSAia25vd3MiIGVkZ2UgdG8gdGhlICJ2YWRhcyIgdmVydGV4LiBUaGUgZm9sbG93aW5nIGNvZGUgc2hvd3MgaG93IHRvICJtb3ZlIiB0aGF0IGVkZ2UgdG8KQEAgLTQ3LDcgKzQ3LDcgQEAKICAgc2VsZWN0KCdlMScpLmRyb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0PgogZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS4KICAgb3V0RSgpLmluVigpLgotICBwYXRoKCkuYnkoJ25hbWUnKS5ieSh2YWx1ZU1hcCh0cnVlKSkKKyAgcGF0aCgpLmJ5KCduYW1lJykuYnkoZWxlbWVudE1hcCgpKQogLS0tLQogCiA8MT4gRmluZCB0aGUgZWRnZSB0byAibW92ZSIgYW5kIGxhYmVsIHRoYXQgYXMgImUxIi4gSXQgd2lsbCBiZSBuZWNlc3NhcnkgdG8gcmVmZXJlbmNlIHRoaXMgbGF0ZXIgdG8gZ2V0IHRoZSBlZGdlCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWNpcGVzL2luZGV4LmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy9pbmRleC5hc2NpaWRvYwppbmRleCA0NmQ1OWIyLi4yZmZiY2VmIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlY2lwZXMvaW5kZXguYXNjaWlkb2MKQEAgLTY4LDYgKzY4LDggQEAKIAogPSBBbnRpLVBhdHRlcm5zCiAKK2ltYWdlOmdyZW1saW4tYW50aS1ncmVtbGluLnBuZ1t3aWR0aD0yNTBdCisKIGluY2x1ZGU6OmFudGktcGF0dGVybnMuYXNjaWlkb2NbXQogCiA9IEltcGxlbWVudGF0aW9uIFJlY2lwZXMKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlY2lwZXMvc2hvcnRlc3QtcGF0aC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvc2hvcnRlc3QtcGF0aC5hc2NpaWRvYwppbmRleCAyZTMzMDU1Li4wNGM1NDJkIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL3Nob3J0ZXN0LXBhdGguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVjaXBlcy9zaG9ydGVzdC1wYXRoLmFzY2lpZG9jCkBAIC00OSw2ICs0OSwxNiBAQAogPDI+IEl0IG1pZ2h0IGJlIGludGVyZXN0aW5nIHRvIGtub3cgdGhlIHBhdGggbGVuZ3RocyBmb3IgYWxsIHBhdGhzIGJldHdlZW4gdmVydGV4ICIxIiBhbmQgIjUiLgogPDM+IEFsdGVybmF0aXZlbHksIG9uZSBtaWdodCB3aXNoIHRvIGRvIGEgcGF0aCBsZW5ndGggZGlzdHJpYnV0aW9uIG92ZXIgYWxsIHRoZSBwYXRocy4KIAorVGhlIGZvbGxvd2luZyBjb2RlIGJsb2NrIGRlbW9uc3RyYXRlcyBob3cgdGhlIHNob3J0ZXN0IHBhdGggZnJvbSBgdlsxXWAgdG8gYHZbNV1gIGNhbiBiZSBxdWVyaWVkIGluIE9MQVAsIHVzaW5nIHRoZSBgc2hvcnRlc3RQYXRoKClgIHN0ZXAuCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cgPSBnLndpdGhDb21wdXRlcigpCitnLlYoMSkuc2hvcnRlc3RQYXRoKCkuCisgIHdpdGgoU2hvcnRlc3RQYXRoLmVkZ2VzLCBEaXJlY3Rpb24uT1VUKS4KKyAgd2l0aChTaG9ydGVzdFBhdGgudGFyZ2V0LCBoYXNJZCg1KSkKKy0tLS0KKwogVGhlIHByZXZpb3VzIGV4YW1wbGUgZGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRoZSBwYXRoIGJ5IHRoZSBudW1iZXIgb2YgdmVydGljZXMgaW4gdGhlIHBhdGgsIGJ1dCB0aGUgInBhdGgiIG1pZ2h0IGFsc28KIGJlIG1lYXN1cmVkIGJ5IGRhdGEgd2l0aGluIHRoZSBncmFwaCBpdHNlbGYuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB1c2UgdGhlIHNhbWUgZ3JhcGggc3RydWN0dXJlIGFzIHRoZSBwcmV2aW91cyBleGFtcGxlLAogYnV0IGluY2x1ZGVzIGEgIndlaWdodCIgb24gdGhlIGVkZ2VzLCB0aGF0IHdpbGwgYmUgdXNlZCB0byBoZWxwIGRldGVybWluZSB0aGUgImNvc3QiIG9mIGEgcGFydGljdWxhciBwYXRoOgpAQCAtOTUsNiArMTA1LDE3IEBACiB0aGUgb3V0cHV0LiBOb3RlIHRoYXQgdGhlIHBhdGggd2l0aCB0aGUgbG93ZXN0ICJjb3N0IiBhY3R1YWxseSBoYXMgYSBsb25nZXIgcGF0aCBsZW5ndGggYXMgZGV0ZXJtaW5lZCBieSB0aGUgZ3JhcGgKIHN0cnVjdHVyZS4KIAorVGhlIG5leHQgY29kZSBibG9jayBkZW1vbnN0cmF0ZXMgaG93IHRoZSBgc2hvcnRlc3RQYXRoKClgIHN0ZXAgY2FuIGJlIHVzZWQgaW4gT0xBUCB0byBkZXRlcm1pbmUgdGhlIHNob3J0ZXN0IHdlaWdodGVkIHBhdGguCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cgPSBnLndpdGhDb21wdXRlcigpCitnLlYoMSkuc2hvcnRlc3RQYXRoKCkuCisgIHdpdGgoU2hvcnRlc3RQYXRoLmVkZ2VzLCBEaXJlY3Rpb24uT1VUKS4KKyAgd2l0aChTaG9ydGVzdFBhdGguZGlzdGFuY2UsICd3ZWlnaHQnKS4KKyAgd2l0aChTaG9ydGVzdFBhdGgudGFyZ2V0LCBoYXNJZCg1KSkKKy0tLS0KKwogVGhlIGZvbGxvd2luZyBxdWVyeSBpbGx1c3RyYXRlcyBob3cgYHNlbGVjdCg8dHJhdmVyc2FsPilgIGNhbiBiZSB1c2VkIHRvIGZpbmQgYWxsIHNob3J0ZXN0IHdlaWdodGVkIHVuZGlyZWN0ZWQgcGF0aHMKIGluIHRoZSBtb2Rlcm4gdG95IGdyYXBoLgogCkBAIC0xMzYsMyArMTU3LDQ0IEBACiA8Nz4gT3JkZXIgdGhlIG91dHB1dCBieSB0aGUgc3RhcnQgdmVydGV4IGlkIGFuZCB0aGVuIHRoZSBlbmQgdmVydGV4IGlkIChmb3IgYmV0dGVyIHJlYWRhYmlsaXR5KS4KIDw4PiBEZWR1cGxpY2F0ZSB2ZXJ0ZXggcGFpcnMgKHRoZSBzaG9ydGVzdCBwYXRoIGZyb20gYHZbMV1gIHRvIGB2WzZdYCBpcyB0aGUgc2FtZSBhcyB0aGUgcGF0aCBmcm9tIGB2WzZdYCB0byBgdlsxXWApLgogCitBZ2FpbiwgdGhpcyBjYW4gYmUgdHJhbnNsYXRlZCBpbnRvIGFuIE9MQVAgcXVlcnkgdXNpbmcgdGhlIGBzaG9ydGVzdFBhdGgoKWAgc3RlcC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorcmVzdWx0ID0gZy53aXRoQ29tcHV0ZXIoKS5WKCkuCisgIHNob3J0ZXN0UGF0aCgpLgorICAgIHdpdGgoU2hvcnRlc3RQYXRoLmRpc3RhbmNlLCAnd2VpZ2h0JykuCisgICAgd2l0aChTaG9ydGVzdFBhdGguaW5jbHVkZUVkZ2VzLCB0cnVlKS4KKyAgZmlsdGVyKGNvdW50KGxvY2FsKS5pcyhndCgxKSkpLgorICBncm91cCgpLgorICAgIGJ5KHByb2plY3QoJ2Zyb20nLCd0bycpLgorICAgICAgICAgYnkobGltaXQobG9jYWwsIDEpKS4KKyAgICAgICAgIGJ5KHRhaWwobG9jYWwsIDEpKSkuCisgIHVuZm9sZCgpLgorICBvcmRlcigpLgorICAgIGJ5KHNlbGVjdChrZXlzKS5zZWxlY3QoJ2Zyb20nKS5pZCgpKS4KKyAgICBieShzZWxlY3Qoa2V5cykuc2VsZWN0KCd0bycpLmlkKCkpLnRvTGlzdCgpCistLS0tCisKK1RoZSBvYnZpb3VzIGRpZmZlcmVuY2UgaW4gdGhlIHJlc3VsdCBpcyB0aGUgYWJzZW5jZSBvZiBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIE9MQVAgcmVzdWx0LiBTaW5jZSBPTEFQIHRyYXZlcnNlcnMgYXJlIG5vdAorYWxsb3dlZCB0byBsZWF2ZSB0aGUgbG9jYWwgc3RhciBncmFwaCwgaXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSB0aGUgZXhhY3Qgc2FtZSByZXN1bHQgaW4gYW4gT0xBUCBxdWVyeS4gSG93ZXZlciwgdGhlIGRldGVybWluZWQKK3Nob3J0ZXN0IHBhdGhzIGNhbiBiZSBwYXNzZWQgYmFjayBpbnRvIHRoZSBPTFRQIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAsIHdoaWNoIGNhbiB0aGVuIGJlIHVzZWQgdG8gcXVlcnkgdGhlIHZhbHVlcy4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy53aXRoU2lkZUVmZmVjdCgndicsIFtdKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDE+CisgIGluamVjdChyZXN1bHQudG9BcnJheSgpKS5hcygna3YnKS5zZWxlY3QodmFsdWVzKS4KKyAgdW5mb2xkKCkuCisgIG1hcCh1bmZvbGQoKS5hcygndl9vcl9lJykuCisgICAgICBjb2FsZXNjZShWKCkud2hlcmUoZXEoJ3Zfb3JfZScpKS5zdG9yZSgndicpLAorICAgICAgICAgICAgICAgc2VsZWN0KCd2JykudGFpbChsb2NhbCwgMSkuYm90aEUoKS53aGVyZShlcSgndl9vcl9lJykpKS4KKyAgICAgIHZhbHVlcygnbmFtZScsJ3dlaWdodCcpLgorICAgICAgZm9sZCgpKS4KKyAgZ3JvdXAoKS4KKyAgICBieShzZWxlY3QoJ2t2Jykuc2VsZWN0KGtleXMpKS51bmZvbGQoKS4KKyAgb3JkZXIoKS4KKyAgICBieShzZWxlY3Qoa2V5cykuc2VsZWN0KCdmcm9tJykuaWQoKSkuCisgICAgYnkoc2VsZWN0KGtleXMpLnNlbGVjdCgndG8nKS5pZCgpKS50b0xpc3QoKQorLS0tLQorCis8MT4gVGhlIHNpZGUtZWZmZWN0IGB2YCBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGxhc3QgcHJvY2Vzc2VkIHZlcnRleCwgaGVuY2UgaXQgbmVlZHMgdG8gYmUgYW4gb3JkZXItcHJlc2VydmluZyBsaXN0LiBXaXRob3V0IHRoaXMgZXhwbGljaXQgZGVmaW5pdGlvbiBgdmAgd291bGQgYmVjb21lIGEgYEJ1bGtTZXRgIHdoaWNoIGRvZXNuJ3QgcHJlc2VydmUgdGhlIGluc2VydCBvcmRlci4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlY2lwZXMvdHJhdmVyc2FsLWluZHVjZWQtdmFsdWVzLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy90cmF2ZXJzYWwtaW5kdWNlZC12YWx1ZXMuYXNjaWlkb2MKaW5kZXggODY4MDYwMC4uZjM1OTJiOCAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy90cmF2ZXJzYWwtaW5kdWNlZC12YWx1ZXMuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVjaXBlcy90cmF2ZXJzYWwtaW5kdWNlZC12YWx1ZXMuYXNjaWlkb2MKQEAgLTExMSw3ICsxMTEsNyBAQAogLS0tLQogZy5WKCkuaGFzKCduYW1lJywgJ21hcmtvJykuYXMoJ21hcmtvJykuCiAgIG91dCgnY3JlYXRlZCcpLnByb3BlcnR5KCdjcmVhdG9yJywgc2VsZWN0KCdtYXJrbycpLmJ5KCduYW1lJykpCi1nLlYoKS5oYXMoJ25hbWUnLCAnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZU1hcCgpCitnLlYoKS5oYXMoJ25hbWUnLCAnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS5lbGVtZW50TWFwKCkKIC0tLS0KIAogSW4gYSBtb3JlIGNvbXBsZXggZXhhbXBsZSBvZiBob3cgdGhpcyBtaWdodCB3b3JrLCBjb25zaWRlciBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgZ29hbCBpcyB0byBwcm9wYWdhdGUgYSB2YWx1ZSBzdG9yZWQgb24KQEAgLTE0Miw3ICsxNDIsNyBAQAogICBWKGEpLnJlcGVhdChvdXRFKCdkcmFpbicpLnNhY2sobXVsdCkuYnkoJ2ZhY3RvcicpLgogICAgICAgICAgICAgICBpblYoKS5wcm9wZXJ0eSgnYW1vdW50Jywgc2FjaygpKSkuCiAgICAgICAgdW50aWwoX18ub3V0RSgnZHJhaW4nKS5jb3VudCgpLmlzKDApKS5pdGVyYXRlKCkKLWcuVigpLnZhbHVlTWFwKCkKK2cuVigpLmVsZW1lbnRNYXAoKQogLS0tLQogCiBUaGUgInNhY2sgdmFsdWUiIGdldHMgaW5pdGlhbGl6ZWQgdG8gdGhlIHZhbHVlIG9mIHRhbmsgImEiLiBUaGUgdHJhdmVyc2FsIGl0ZXJhdGl2ZWx5IHRyYXZlcnNlcyBvdXQgb24gdGhlICJkcmFpbiIKQEAgLTE1Nyw3ICsxNTcsNyBAQAogLS0tLQogZy53aXRoU2FjaygwKS5WKCkuaGFzKCJhZ2UiKS4KICAgc2Fjayhhc3NpZ24pLmJ5KCJhZ2UiKS5zYWNrKHN1bSkuYnkoY29uc3RhbnQoMTApKS4KLSAgcHJvcGVydHkoImFnZSIsIHNhY2soKSkudmFsdWVNYXAoKQorICBwcm9wZXJ0eSgiYWdlIiwgc2FjaygpKS5lbGVtZW50TWFwKCkKIC0tLS0KIAogSW4gdGhlIGFib3ZlIGNhc2UsIHRoZSBzYWNrIGlzIGluaXRpYWxpemVkIHRvIHplcm8gYW5kIGFzIGVhY2ggdmVydGV4IGlzIGl0ZXJhdGVkLCB0aGUgImFnZSIgaXMgYXNzaWduZWQgdG8gdGhlIHNhY2sKQEAgLTE3MSw1ICsxNzEsNSBAQAogLS0tLQogZy53aXRoU2FjaygwKS5WKCkuaGFzKCJhZ2UiKS4KICAgc2Fjayhhc3NpZ24pLmJ5KCJhZ2UiKS5zYWNrKHN1bSkuYnkoYm90aEUoKS52YWx1ZXMoIndlaWdodCIpLnN1bSgpKS4KLSAgcHJvcGVydHkoImFnZSIsIHNhY2soKSkudmFsdWVNYXAoKQorICBwcm9wZXJ0eSgiYWdlIiwgc2FjaygpKS5lbGVtZW50TWFwKCkKIC0tLS0KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9jb21waWxlcnMuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvY29tcGlsZXJzLmFzY2lpZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMzc1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvY29tcGlsZXJzLmFzY2lpZG9jCkBAIC0wLDAgKzEsNDM1IEBACisvLy8vCitMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKK2NvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAordGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgorVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKKyh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCit0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vLy8KK1tbY29tcGlsZXJzXV0KKz0gR3JlbWxpbiBDb21waWxlcnMKKworVGhlcmUgYXJlIG1hbnkgbGFuZ3VhZ2VzIGJ1aWx0IHRvIHF1ZXJ5IGRhdGEuIFNRTCBpcyB0eXBpY2FsbHkgdXNlZCB0byBxdWVyeSByZWxhdGlvbmFsIGRhdGEuIFRoZXJlIGlzIFNQQVJRTCBmb3IgUkRGCitkYXRhLiBDeXBoZXIgaXMgdXNlZCB0byBkbyBwYXR0ZXJuIG1hdGNoaW5nIGluIGdyYXBoIGRhdGEuIFRoZSBsaXN0IGNvdWxkIGdvIG9uLiBDb21waWxlcnMgY29udmVydCBsYW5ndWFnZXMgbGlrZQordGhlc2UgdG8gR3JlbWxpbiBzbyB0aGF0IGl0IGJlY29tZXMgcG9zc2libGUgdG8gdXNlIHRoZW0gaW4gYW55IGNvbnRleHQgdGhhdCBHcmVtbGluIGlzIHVzZWQuIEluIG90aGVyIHdvcmRzLCBhCitHcmVtbGluIENvbXBpbGVyIGVuYWJsZXMgYSBwYXJ0aWN1bGFyIHF1ZXJ5IGxhbmd1YWdlIHRvIHdvcmsgb24gYW55IFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbS4KKworW1tzcGFycWwtZ3JlbWxpbl1dCis9PSBTUEFSUUwtR3JlbWxpbgorCitpbWFnZTo6Z3JlbWxpbnRyb24ucG5nW3dpZHRoPTIyNV0KKworVGhlIFNQQVJRTC1HcmVtbGluIGNvbXBpbGVyLCB0cmFuc2Zvcm1zIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1BBUlFMW1NQQVJRTF0gcXVlcmllcyBpbnRvIEdyZW1saW4KK3RyYXZlcnNhbHMuIEl0IHVzZXMgdGhlIGh0dHBzOi8vamVuYS5hcGFjaGUub3JnL2luZGV4Lmh0bWxbQXBhY2hlIEplbmFdIFNQQVJRTCBwcm9jZXNzb3IKK2xpbms6aHR0cHM6Ly9qZW5hLmFwYWNoZS5vcmcvZG9jdW1lbnRhdGlvbi9xdWVyeS9pbmRleC5odG1sW0FSUV0sIHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBhIHN5bnRheCB0cmVlIG9mIGEKK1NQQVJRTCBxdWVyeS4KKworVGhlIGdvYWwgb2YgdGhpcyB3b3JrIGlzIHRvIGJyaWRnZSB0aGUgcXVlcnkgaW50ZXJvcGVyYWJpbGl0eSBnYXAgYmV0d2VlbiB0aGUgdHdvIGZhbW91cywgeWV0IGZhaXJseSBkaXNjb25uZWN0ZWQsCitncmFwaCBjb21tdW5pdGllczogU2VtYW50aWMgV2ViICh3aGljaCByZWxpZXMgb24gdGhlIFJERiBkYXRhIG1vZGVsKSBhbmQgR3JhcGggZGF0YWJhc2UgKHdoaWNoIHJlbGllcyBvbiBwcm9wZXJ0eSBncmFwaAorZGF0YSBtb2RlbCkuCisKK05PVEU6IFRoZSBmb3VuZGF0aW9uYWwgcmVzZWFyY2ggd29yayBvbiBTUEFSUUwtR3JlbWxpbiBjb21waWxlciAoYWthIEdyZW1saW5hdG9yKSBjYW4gYmUgZm91bmQgaW4gdGhlCitsaW5rOmh0dHBzOi8vYXJ4aXYub3JnL3BkZi8xODAxLjAyOTExLnBkZltHcmVtbGluYXRvciBwYXBlcl0uIFRoaXMgcGFwZXIgcHJlc2VudHMgdGhlIGdyYXBoIHF1ZXJ5IGxhbmd1YWdlIHNlbWFudGljcyBvZgorU1BBUlFMIGFuZCBHcmVtbGluLCBhbmQgYSBmb3JtYWwgbWFwcGluZyBiZXR3ZWVuIFNQQVJRTCBwYXR0ZXJuIG1hdGNoaW5nIGdyYXBoIHBhdHRlcm5zIGFuZCBHcmVtbGluIHRyYXZlcnNhbHMuCisKK1tzb3VyY2UseG1sXQorLS0tLQorPGRlcGVuZGVuY3k+CisgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KKyAgIDxhcnRpZmFjdElkPnNwYXJxbC1ncmVtbGluPC9hcnRpZmFjdElkPgorICAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Cis8L2RlcGVuZGVuY3k+CistLS0tCisKK1RoZSBTUEFSUUwtR3JlbWxpbiBjb21waWxlciBjb252ZXJ0cyBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NQQVJRTFtTUEFSUUxdIHF1ZXJpZXMgaW50byBHcmVtbGluIHNvIHRoYXQKK3RoZXkgY2FuIGJlIGV4ZWN1dGVkIGFjcm9zcyBhbnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLiBUbyB1c2UgdGhpcyBjb21waWxlciBpbiB0aGUgR3JlbWxpbiBDb25zb2xlLCBmaXJzdAoraW5zdGFsbCBhbmQgYWN0aXZhdGUgdGhlICJ0aW5rZXJwb3Auc3BhcnFsIiBwbHVnaW46CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IDppbnN0YWxsIG9yZy5hcGFjaGUudGlua2VycG9wIHNwYXJxbC1ncmVtbGluIHgueS56Cis9PT5Mb2FkZWQ6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcCwgc3BhcnFsLWdyZW1saW4sIHgueS56XQorZ3JlbWxpbj4gOnBsdWdpbiB1c2UgdGlua2VycG9wLnNwYXJxbAorPT0+dGlua2VycG9wLnNwYXJxbCBhY3RpdmF0ZWQKKy0tLS0KKworSW5zdGFsbGluZyB0aGlzIHBsdWdpbiB3aWxsIGRvd25sb2FkIGFwcHJvcHJpYXRlIGRlcGVuZGVuY2llcyBhbmQgaW1wb3J0IGNlcnRhaW4gY2xhc3NlcyB0byB0aGUgY29uc29sZSBzbyB0aGF0IHRoZXkKK21heSBiZSB1c2VkIGFzIGZvbGxvd3M6CisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCkKK2cgPSBncmFwaC50cmF2ZXJzYWwoU3BhcnFsVHJhdmVyc2FsU291cmNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MT4KK2cuc3BhcnFsKCIiIlNFTEVDVCA/bmFtZSA/YWdlCisgICAgICAgICAgICBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0KKyAgICAgICAgICAgIE9SREVSIEJZIEFTQyg/YWdlKSIiIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mj4KKy0tLS0KKworPDE+IERlZmluZSBgZ2AgYXMgYSBgVHJhdmVyc2FsU291cmNlYCB0aGF0IHVzZXMgdGhlIGBTcGFycWxUcmF2ZXJzYWxTb3VyY2VgIC0gYnkgZGVmYXVsdCwgdGhlIGB0cmF2ZXJzYWwoKWAgbWV0aG9kCit1c3VhbGx5IHJldHVybnMgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHdoaWNoIGluY2x1ZGVzIHRoZSBzdGFuZGFyZCBHcmVtbGluIHN0YXJ0cyBzdGVwcyBsaWtlIGBWKClgIG9yIGBFKClgLiBJbiB0aGlzCitjYXNlLCB0aGUgYFNwYXJxbFRyYXZlcnNhbFNvdXJjZWAgZW5hYmxlcyBzdGFydHMgc3RlcHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gU1BBUlFMIG9ubHkgLSBpbiB0aGlzIGNhc2UgdGhlIGBzcGFycWwoKWAKK3N0YXJ0IHN0ZXAuCis8Mj4gRXhlY3V0ZSBhIFNQQVJRTCBxdWVyeSBhZ2FpbnN0IHRoZSBUaW5rZXJHcmFwaCBpbnN0YW5jZS4gVGhlIGBTcGFycWxUcmF2ZXJzYWxTb3VyY2VgIHVzZXMgYQorPDx0cmF2ZXJzYWxzdHJhdGVneSxUcmF2ZXJzYWxTdHJhdGVneT4+IHRvIHRyYW5zcGFyZW50bHkgY29udmVydHMgdGhhdCBTUEFSUUwgcXVlcnkgaW50byBhIHN0YW5kYXJkIEdyZW1saW4gdHJhdmVyc2FsCithbmQgdGhlbiB3aGVuIGZpbmFsbHkgaXRlcmF0ZWQsIGV4ZWN1dGVzIHRoYXQgYWdhaW5zdCB0aGUgVGlua2VyR3JhcGguCisKK1tbcHJlZml4ZXNdXQorPT09IFByZWZpeGVzCisKK1RoZSBTUEFSUUwtR3JlbWxpbiBjb21waWxlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHByZWZpeGVzIHRvIHRyYXZlcnNlIHRoZSBncmFwaDoKKworW2NvbHM9IiwiLG9wdGlvbnM9ImhlYWRlciIsXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfFByZWZpeCB8UHVycG9zZQorfGB2OjxpZFx8bGFiZWxcfDxuYW1lPj5gIHxhY2Nlc3MgdG8gdmVydGV4IGlkLCBsYWJlbCBvciBwcm9wZXJ0eSB2YWx1ZQorfGBlOjxsYWJlbD5gIHxvdXQtZWRnZSB0cmF2ZXJzYWwKK3xgcDo8bmFtZT5gIHxwcm9wZXJ0eSB0cmF2ZXJzYWwKK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTm90ZSB0aGF0IGVsZW1lbnQgSURzIGFuZCBsYWJlbHMgYXJlIHRyZWF0ZWQgbGlrZSBub3JtYWwgcHJvcGVydGllcywgaGVuY2UgdGhleSBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlIHNhbWUgcGF0dGVybjoKKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9pZCA/bGFiZWwgCisJV0hFUkUgeyAKKwk/ZWxlbWVudCB2Om5hbWUgP25hbWUgLiAKKwk/ZWxlbWVudCB2OmlkID9pZCAuIAorCT9lbGVtZW50IHY6bGFiZWwgP2xhYmVsIC59IiIiKQorLS0tLQorCitbW3N1cHBvcnRlZC1xdWVyaWVzXV0KKz09PSBTdXBwb3J0ZWQgUXVlcmllcworCitUaGUgU1BBUlFMLUdyZW1saW4gY29tcGlsZXIgY3VycmVudGx5IHN1cHBvcnRzIHRyYW5zbGF0aW9uIG9mIHRoZSBTUEFSUUwgMS4wIHNwZWNpZmljYXRpb24sIGVzcGVjaWFsbHkgYFNFTEVDVGAKK3F1ZXJpZXMsIHRob3VnaCB0aGVyZSBpcyBhbiBvbi1nb2luZyBlZmZvcnQgdG8gY292ZXIgdGhlIGVudGlyZSBTUEFSUUwgMS4xIHF1ZXJ5IGZlYXR1cmUgc3BlY3RydW0uIFRoZSBzdXBwb3J0ZWQKK1NQQVJRTCBxdWVyeSB0eXBlcyBhcmU6CisKKyogVW5pb24gCisqIE9wdGlvbmFsIAorKiBPcmRlci1CeSAKKyogR3JvdXAtQnkgCisqIFNUQVItc2hhcGVkIG9yIF9uZWlnaGJvdXJob29kIHF1ZXJpZXNfIAorKiBRdWVyeSBtb2RpZmllcnMsIHN1Y2ggYXM6IAorKiogRmlsdGVyIHdpdGggX3Jlc3RyaWN0aW9uc18gCisqKiBDb3VudCAKKyoqIExJTUlUIAorKiogT0ZGU0VUCisKK1tbbGltaXRhdGlvbnNdXQorPT09IExpbWl0YXRpb25zCisKK1RoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFNQQVJRTC1HcmVtbGluIGNvbXBpbGVyIChpLmUuIFNQQVJRTC1HcmVtbGluKSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgY2FzZXM6CisKKyogU1BBUlFMIHF1ZXJpZXMgd2l0aCB2YXJpYWJsZXMgaW4gdGhlIHByZWRpY2F0ZSBwb3NpdGlvbiBhcmUgbm90IGN1cnJlbnRseSBjb3ZlcmVkLCB3aXRoIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZm9sbG93aW5nCitjYXNlOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAqIFdIRVJFIHsgP3ggP3kgP3ogLiB9IiIiKQorLS0tLQorCisqIEEgU1BBUlFMIFVuaW9uIHF1ZXJ5IHdpdGggdW4tYmFsYW5jZWQgcGF0dGVybnMsIGkuZS4gYSBncmVtbGluIHVuaW9uIHRyYXZlcnNhbCBjYW4gb25seSBiZSBnZW5lcmF0ZWQgaWYgdGhlIGlucHV0CitTUEFSUUwgcXVlcnkgaGFzIHRoZSBzYW1lIG51bWJlciBvZiBwYXR0ZXJucyBvbiBib3RoIHRoZSBzaWRlIG9mIHRoZSB1bmlvbiBvcGVyYXRvci4gRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nCitTUEFSUUwgcXVlcnkgY2Fubm90IGJlIG1hcHBlZCwgc2luY2UgYSB1bmlvbiBpcyBleGVjdXRlZCBiZXR3ZWVuIGRpZmZlcmVudCBudW1iZXIgb2YgZ3JhcGggcGF0dGVybnMgKHR3byBwYXR0ZXJucworYHVuaW9uYCAxIHBhdHRlcm4pLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAqCisgICAgICAgICAgICBXSEVSRSB7CisgICAgICAgICAgICAgICAgez9wZXJzb24gZTpjcmVhdGVkID9zb2Z0d2FyZSAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2Om5hbWUgImpvc2giIC59CisgICAgICAgICAgICAgICAgVU5JT04KKyAgICAgICAgICAgICAgICB7P3NvZnR3YXJlIHY6bGFuZyAiamF2YSIgLn0gfSIiIikKKy0tLS0KKworKiBBIG5vbi1Hcm91cCBrZXkgdmFyaWFibGUgY2Fubm90IGJlIHByb2plY3RlZCBpbiBhIFNQQVJRTCBxdWVyeS4gVGhpcyBpcyBhIFNQQVJRTCBsYW5ndWFnZSBsaW1pdGF0aW9uIHJhdGhlciB0aGFuCit0aGF0IG9mIEdyZW1saW4vVGlua2VyUG9wLiBBcGFjaGUgSmVuYSB0aHJvd3MgdGhlIGV4Y2VwdGlvbiAiTm9uLWdyb3VwIGtleSB2YXJpYWJsZSBpbiBTRUxFQ1QiIGlmIHRoaXMgb2NjdXJzLgorRm9yIGluc3RhbmNlLCBpbiBhIFNQQVJRTCBxdWVyeSB3aXRoIEdST1VQLUJZIGNsYXVzZSwgb25seSB0aGUgdmFyaWFibGUgb24gd2hpY2ggdGhlIGdyb3VwaW5nIGlzIGRlY2xhcmVkLCBjYW4gYmUKK3Byb2plY3RlZC4gVGhlIGZvbGxvd2luZyBxdWVyeSBpcyB2YWxpZDoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLnNwYXJxbCgiIiJTRUxFQ1QgP2FnZQorICAgICAgICAgICAgV0hFUkUgeworICAgICAgICAgICAgICAgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2OmFnZSA/YWdlIC4KKyAgICAgICAgICAgICAgICA/cGVyc29uIHY6bmFtZSA/bmFtZSAufSBHUk9VUCBCWSAoP2FnZSkiIiIpCistLS0tCisKK1doZXJlYXMsIHRoZSBmb2xsb3dpbmcgU1BBUlFMIHF1ZXJ5IHdpbGwgYmUgaW52YWxpZDoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLnNwYXJxbCgiIiJTRUxFQ1QgP3BlcnNvbgorICAgICAgICAgICAgV0hFUkUgeworICAgICAgICAgICAgICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICAgICAgICAgICAgICA/cGVyc29uIHY6YWdlID9hZ2UgLgorICAgICAgICAgICAgICA/cGVyc29uIHY6bmFtZSA/bmFtZSAufSBHUk9VUCBCWSAoP2FnZSkiIiIpCistLS0tCisKKyogSW4gYSBTUEFSUUwgcXVlcnkgd2l0aCBhbiBPUkRFUi1CWSBjbGF1c2UsIHRoZSBvcmRlcmluZyBvY2N1cnMgd2l0aCByZXNwZWN0IHRvIHRoZSBmaXJzdCBwcm9qZWN0ZWQgdmFyaWFibGUgaW4gdGhlCitxdWVyeS4gSXQgaXMgcG9zc2libGUgdG8gY2hvb3NlIGFueSBudW1iZXIgb2YgdmFyaWFibGUgdG8gYmUgcHJvamVjdGVkLCBob3dldmVyLCB0aGUgZmlyc3QgdmFyaWFibGUgaW4gdGhlIHNlbGVjdGlvbgord2lsbCBiZSB0aGUgb3JkZXJpbmcgZGVjaWRlci4gRm9yIGluc3RhbmNlLCBpbiB0aGUgcXVlcnk6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9hZ2UKKyAgICAgICAgICAgIFdIRVJFIHsKKyAgICAgICAgICAgICAgICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICAgICAgICAgICAgICAgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLiB9IE9SREVSIEJZICg/YWdlKSIiIikKKy0tLS0KKwordGhlIHJlc3VsdCBzZXQgd2lsbCBiZSBvcmRlcmVkIGFjY29yZGluZyB0byB0aGUgYD9uYW1lYCB2YXJpYWJsZSAoaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGRlZmF1bHQpIGRlc3BpdGUgaGF2aW5nIHBhc3NlZAorYD9hZ2VgIGluIHRoZSBvcmRlciBieS4gV2hlcmVhcywgZm9yIHRoZSBmb2xsb3dpbmcgcXVlcnk6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9hZ2UgP25hbWUKKyAgICAgICAgICAgIFdIRVJFIHsKKyAgICAgICAgICAgICAgICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICAgICAgICAgICAgICAgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLiB9IE9SREVSIEJZICg/YWdlKSIiIikKKy0tLS0KKwordGhlIHJlc3VsdCBzZXQgd2lsbCBiZSBvcmRlcmVkIGFjY29yZGluZyB0byB0aGUgYD9hZ2VgIChhcyBpdCBpcyB0aGUgZmlyc3QgcHJvamVjdGVkIHZhcmlhYmxlKS4gRmluYWxseSwgZm9yIHRoZQorc2VsZWN0IGFsbCBjYXNlIChgU0VMRUNUICpgKToKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLnNwYXJxbCgiIiJTRUxFQ1QgKgorICAgICAgICAgICAgV0hFUkUgeyA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLiA/cGVyc29uIHY6YWdlID9hZ2UgLiA/cGVyc29uIHY6bmFtZSA/bmFtZSAuIH0gT1JERVIgQlkgKD9hZ2UpIiIiKQorLS0tLQorCit0aGUgdGhlIHZhcmlhYmxlIGVuY291bnRlcmVkIGZpcnN0IHdpbGwgYmUgdGhlIG9yZGVyaW5nIGRlY2lkZXIsIGkuZS4gc2luY2Ugd2UgaGF2ZSBgP3BlcnNvbmAgZW5jb3VudGVyZWQgZmlyc3QsCit0aGUgcmVzdWx0IHNldCB3aWxsIGJlIG9yZGVyZWQgYWNjb3JkaW5nIHRvIHRoZSBgP3BlcnNvbmAgdmFyaWFibGUgKHdoaWNoIGFyZSB2ZXJ0ZXggaWQpLgorCisqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBgT1BUSU9OQUxgIGNsYXVzZSBkb2Vzbid0IHdvcmsgdW5kZXIgbmVzdGluZyB3aXRoIGBVTklPTmAgY2xhdXNlIChpLmUuIG11bHRpcGxlIG9wdGlvbmFsCitjbGF1c2VzIHdpdGggaW4gYSB1bmlvbiBjbGF1c2UpIGFuZCBgT1JERVItQnlgIGNsYXVzZSAoaS5lLiBkZWNsYXJpbmcgb3JkZXJpbmcgb3ZlciB0cmlwbGUgcGF0dGVybnMgd2l0aGluIG9wdGlvbmFsCitjbGF1c2VzKS4gRXZlcnl0aGluZyBlbHNlIHdpdGggU1BBUlFMIGBPUFRJT05BTGAgd29ya3MganVzdCBmaW5lLgorCitbW2V4YW1wbGVzXV0KKz09PSBFeGFtcGxlcworCitUaGUgZm9sbG93aW5nIHNlY3Rpb24gcHJlc2VudHMgZXhhbXBsZXMgb2YgU1BBUlFMIHF1ZXJpZXMgdGhhdCBhcmUgY3VycmVudGx5IGNvdmVyZWQgYnkgdGhlIFNQQVJRTC1HcmVtbGluIGNvbXBpbGVyLgorCis9PT09IFNlbGVjdCBBbGwKKworU2VsZWN0IGFsbCB2ZXJ0aWNlcyBpbiB0aGUgZ3JhcGguCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAqIFdIRVJFIHsgfSIiIikKKy0tLS0KKworPT09PSBNYXRjaCBDb25zdGFudCBWYWx1ZXMKKworU2VsZWN0IGFsbCB2ZXJ0aWNlcyB3aXRoIHRoZSBsYWJlbCBgcGVyc29uYC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUICogV0hFUkUgeyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC59IiIiKQorLS0tLQorCis9PT09IFNlbGVjdCBTcGVjaWZpYyBFbGVtZW50cworCitTZWxlY3QgdGhlIHZhbHVlcyBvZiB0aGUgcHJvcGVydGllcyBgbmFtZWAgYW5kIGBhZ2VgIGZvciBlYWNoIGBwZXJzb25gIHZlcnRleC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9hZ2UKK1dIRVJFIHsKKyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC4KKyAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLiB9IiIiKQorLS0tLQorCis9PT09IFBhdHRlcm4gTWF0Y2hpbmcKKworU2VsZWN0IG9ubHkgdGhvc2UgcGVyc29ucyB3aG8gY3JlYXRlZCBhIHByb2plY3QuCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCA/bmFtZSA/YWdlCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gdjpuYW1lID9uYW1lIC4KKyAgP3BlcnNvbiB2OmFnZSA/YWdlIC4KKyAgP3BlcnNvbiBlOmNyZWF0ZWQgP3Byb2plY3QgLiB9IiIiKQorLS0tLQorCis9PT09IEZpbHRlcmluZworCitTZWxlY3Qgb25seSB0aG9zZSBwZXJzb25zIHdobyBhcmUgb2xkZXIgdGhhbiAzMC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9hZ2UKK1dIRVJFIHsKKyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC4KKyAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLgorICAgIEZJTFRFUiAoP2FnZSA+IDMwKSB9IiIiKQorLS0tLQorCis9PT09IERlZHVwbGljYXRpb24KKworU2VsZWN0IHRoZSBkaXN0aW5jdCBuYW1lcyBvZiB0aGUgY3JlYXRlZCBwcm9qZWN0cy4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUIERJU1RJTkNUID9uYW1lCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgID9wZXJzb24gZTpjcmVhdGVkID9wcm9qZWN0IC4KKyAgP3Byb2plY3QgdjpuYW1lID9uYW1lIC4KKyAgICBGSUxURVIgKD9hZ2UgPiAzMCl9IiIiKQorLS0tLQorCis9PT09IE11bHRpcGxlIEZpbHRlcnMKKworU2VsZWN0IHRoZSBkaXN0aW5jdCBuYW1lcyBvZiBhbGwgSmF2YSBwcm9qZWN0cy4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUIERJU1RJTkNUID9uYW1lCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgID9wZXJzb24gZTpjcmVhdGVkID9wcm9qZWN0IC4KKyAgP3Byb2plY3QgdjpuYW1lID9uYW1lIC4KKyAgP3Byb2plY3QgdjpsYW5nID9sYW5nIC4KKyAgICBGSUxURVIgKD9hZ2UgPiAzMCAmJiA/bGFuZyA9ICJqYXZhIikgfSIiIikKKy0tLS0KKworPT09PSBVbmlvbgorCitTZWxlY3QgYWxsIHBlcnNvbnMgd2hvIGhhdmUgZGV2ZWxvcGVkIGEgc29mdHdhcmUgaW4gamF2YSB1c2luZyB1bmlvbi4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUICogCitXSEVSRSB7CisgIHs/cGVyc29uIGU6Y3JlYXRlZCA/c29mdHdhcmUgLn0KKyAgVU5JT04KKyAgez9zb2Z0d2FyZSB2OmxhbmcgImphdmEiIC59IH0iIiIpCistLS0tCisKKz09PT0gT3B0aW9uYWwKKworUmV0dXJuIHRoZSBuYW1lcyBvZiB0aGUgcGVyc29ucyB3aG8gaGF2ZSBjcmVhdGVkIGEgc29mdHdhcmUgaW4gamF2YSBhbmQgb3B0aW9uYWxseSBweXRob24uCisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9wZXJzb24gCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gZTpjcmVhdGVkID9zb2Z0d2FyZSAuCisgID9zb2Z0d2FyZSB2OmxhbmcgImphdmEiIC4KKyAgT1BUSU9OQUwgez9zb2Z0d2FyZSB2OmxhbmcgInB5dGhvbiIgLiB9fSIiIikKKy0tLS0KKworPT09PSBPcmRlciBCeQorCitTZWxlY3QgYWxsIHZlcnRpY2VzIHdpdGggdGhlIGxhYmVsIGBwZXJzb25gIGFuZCBvcmRlciB0aGVtIGJ5IHRoZWlyIGFnZS4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9hZ2UgP25hbWUKK1dIRVJFIHsKKyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC4KKyAgP3BlcnNvbiB2OmFnZSA/YWdlIC4KKyAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLgorfSBPUkRFUiBCWSAoP2FnZSkiIiIpCistLS0tCisKKz09PT0gR3JvdXAgQnkKKworU2VsZWN0IGFsbCB2ZXJ0aWNlcyB3aXRoIHRoZSBsYWJlbCBgcGVyc29uYCBhbmQgZ3JvdXAgdGhlbSBieSB0aGVpciBhZ2UuCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCA/YWdlIAorV0hFUkUgeworICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLgorfSBHUk9VUCBCWSAoP2FnZSkiIiIpCistLS0tCisKKz09PT0gTWl4ZWQvY29tcGxleC9hZ2dyZWdhdGlvbi1iYXNlZCBxdWVyaWVzCisKK0NvdW50IHRoZSBudW1iZXIgb2YgcHJvamVjdHMgd2hpY2ggaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgcGVyc29ucyB1bmRlciB0aGUgYWdlIG9mIDMwIGFuZCBncm91cCB0aGVtIGJ5IGFnZS4gUmV0dXJuIG9ubHkKK3RoZSB0b3AgdHdvLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAoQ09VTlQoP3Byb2plY3QpIGFzID9wKQorV0hFUkUgeworICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLiBGSUxURVIgKD9hZ2UgPCAzMCkKKyAgP3BlcnNvbiBlOmNyZWF0ZWQgP3Byb2plY3QgLgorfSBHUk9VUCBCWSAoP2FnZSkgTElNSVQgMiIiIikKKy0tLS0KKworPT09PSBNZXRhLVByb3BlcnR5IEFjY2VzcworCitBY2Nlc3NpbmcgdGhlIE1ldGEtUHJvcGVydHkgb2YgYSBncmFwaCBlbGVtZW50LiBNZXRhLVByb3BlcnR5IGNhbiBiZSBwZXJjZWl2ZWQgYXMgdGhlIHJlaWZpZWQgc3RhdGVtZW50cyBpbiBhbiBSREYKK2dyYXBoLgorCitbZ3JlbWxpbi1ncm9vdnksdGhlQ3Jld10KKy0tLS0KK2cgPSBncmFwaC50cmF2ZXJzYWwoU3BhcnFsVHJhdmVyc2FsU291cmNlKQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9zdGFydFRpbWUKK1dIRVJFIHsKKyAgP3BlcnNvbiB2Om5hbWUgImRhbmllbCIgLgorICA/cGVyc29uIHA6bG9jYXRpb24gP2xvY2F0aW9uIC4KKyAgP2xvY2F0aW9uIHY6dmFsdWUgP25hbWUgLgorICA/bG9jYXRpb24gdjpzdGFydFRpbWUgP3N0YXJ0VGltZSB9IiIiKQorLS0tLQorCis9PT09IFNUQVItc2hhcGVkIHF1ZXJpZXMKKworU1RBUi1zaGFwZWQgcXVlcmllcyBhcmUgdGhlIHF1ZXJpZXMgdGhhdCBmb3JtL2ZvbGxvdyBhIHN0YXItc2hhcGVkIGV4ZWN1dGlvbiBwbGFuLiBUaGVzZSBpbiB0ZXJtcyBvZiBncmFwaCB0cmF2ZXJzYWxzCitjYW4gYmUgcGVyY2VpdmVkIGFzIHBhdGggcXVlcmllcyBvciBuZWlnaGJvcmhvb2QgcXVlcmllcy4gRm9yIGluc3RhbmNlLCBnZXR0aW5nIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYworYHBlcnNvbmAgb3IgYHNvZnR3YXJlYC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9hZ2UgP3NvZnR3YXJlID9sYW5nID9uYW1lCitXSEVSRSB7CisgID9wZXJzb24gdjpuYW1lICJqb3NoIiAuCisgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgID9wZXJzb24gZTpjcmVhdGVkID9zb2Z0d2FyZSAuCisgID9zb2Z0d2FyZSB2OmxhbmcgP2xhbmcgLgorICA/c29mdHdhcmUgdjpuYW1lID9uYW1lIC4gfSIiIikKKy0tLS0KKworW1tzcGFycWwtd2l0aC1ncmVtbGluXV0KKz09PSBXaXRoIEdyZW1saW4KKworVGhlIGBzcGFycWwoKWAtc3RlcCB0YWtlcyBhIFNQQVJRTCBxdWVyeSBhbmQgcmV0dXJucyBhIHJlc3VsdC4gVGhhdCByZXN1bHQgY2FuIGJlIGZ1cnRoZXIgcHJvY2Vzc2VkIGJ5IHN0YW5kYXJkIEdyZW1saW4KK3N0ZXBzIGFzIHNob3duIGJlbG93OgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZyA9IGdyYXBoLnRyYXZlcnNhbChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpCitnLnNwYXJxbCgiU0VMRUNUID9uYW1lID9hZ2UgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSAuID9wZXJzb24gdjphZ2UgP2FnZSB9IikKK2cuc3BhcnFsKCJTRUxFQ1QgP25hbWUgP2FnZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0iKS5zZWxlY3QoIm5hbWUiKQorZy5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLm91dCgia25vd3MiKS52YWx1ZXMoIm5hbWUiKQorZy53aXRoU2FjaygxLjBmKS5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLgorICByZXBlYXQob3V0RSgpLnNhY2sobXVsdCkuYnkoIndlaWdodCIpLmluVigpKS4KKyAgICB0aW1lcygyKS4KKyAgc2FjaygpCistLS0tCisKK01peGluZyBTUEFSUUwgd2l0aCBHcmVtbGluIHN0ZXBzIGludHJvZHVjZXMgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzIGZvciBjb21wbGV4IHRyYXZlcnNhbHMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2dyZW1saW4tYXBwbGljYXRpb25zLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2dyZW1saW4tYXBwbGljYXRpb25zLmFzY2lpZG9jCmluZGV4IGQxN2IwYmIuLjUxZjM5ZGYgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLWFwcGxpY2F0aW9ucy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvZ3JlbWxpbi1hcHBsaWNhdGlvbnMuYXNjaWlkb2MKQEAgLTIyLDcgKzIyLDcgQEAKIAogLiBHcmVtbGluIENvbnNvbGUgLSBBIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWFkJUUyJTgwJTkzZXZhbCVFMiU4MCU5M3ByaW50X2xvb3BbUkVQTF0gZW52aXJvbm1lbnQgZm9yCiBpbnRlcmFjdGl2ZSBkZXZlbG9wbWVudCBhbmQgYW5hbHlzaXMKLS4gR3JlbWxpbiBTZXJ2ZXIgLSBBIHNlcnZlciB0aGF0IGhvc3RzIHNjcmlwdCBlbmdpbmVzIHRodXMgZW5hYmxpbmcgcmVtb3RlIEdyZW1saW4gZXhlY3V0aW9uCisuIEdyZW1saW4gU2VydmVyIC0gQSBzZXJ2ZXIgdGhhdCBob3N0cyBhIEdyZW1saW4gVHJhdmVyc2FsIE1hY2hpbmUgdGh1cyBlbmFibGluZyByZW1vdGUgR3JlbWxpbiBleGVjdXRpb24KIAogaW1hZ2U6Z3JlbWxpbi1sYWItY29hdC5wbmdbd2lkdGg9MzEwLGZsb2F0PWxlZnRdIEdyZW1saW4gaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSwgbWFraW5nIGl0IHBvc3NpYmxlIGZvciB1c2VycwogYW5kIGdyYXBoIHN5c3RlbS9sYW5ndWFnZSBwcm92aWRlcnMgdG8gY3VzdG9taXplIGl0IHRvIHRoZWlyIG5lZWRzLiAgU3VjaCBleHRlbnNpYmlsaXR5IGlzIGFsc28gZm91bmQgaW4gdGhlIEdyZW1saW4KQEAgLTEyOCw2ICsxMjgsNyBAQAogfDpoZWxwIHw6PyB8RGlzcGxheXMgbGlzdCBvZiBjb21tYW5kcyBhbmQgZGVzY3JpcHRpb25zLiAgV2hlbiBmb2xsb3dlZCBieSBhIGNvbW1hbmQgbmFtZSwgaXQgd2lsbCBkaXNwbGF5IG1vcmUgc3BlY2lmaWMgaGVscCBvbiB0aGF0IHBhcnRpY3VsYXIgaXRlbS4KIHw6ZXhpdCB8OnggfEVuZHMgdGhlIENvbnNvbGUgc2Vzc2lvbi4KIHxpbXBvcnQgfDppIHxJbXBvcnQgYSBjbGFzcyBpbnRvIHRoZSBDb25zb2xlIHNlc3Npb24uCit8OmNscyB8OkMgfENsZWFyIHRoZSBzY3JlZW4gb2YgdGhlIENvbnNvbGUuCiB8OmNsZWFyIHw6YyB8U29tZXRpbWVzIHRoZSBDb25zb2xlIGNhbiBnZXQgaW50byBhIHN0YXRlIHdoZXJlIHRoZSBjb21tYW5kIGJ1ZmZlciBubyBsb25nZXIgdW5kZXJzdGFuZHMgaW5wdXQgKGUuZy4gYSBtaXNwbGFjZWQgYChgIG9yIGB9YCkuICBVc2UgdGhpcyBjb21tYW5kIHRvIGNsZWFyIHRoYXQgYnVmZmVyLgogfDpsb2FkIHw6bCB8TG9hZCBhIGZpbGUgb3IgVVJMIGludG8gdGhlIGNvbW1hbmQgYnVmZmVyIGZvciBleGVjdXRpb24uCiB8Omluc3RhbGwgfDorIHxJbXBvcnRzIGEgTWF2ZW4gbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVuY2llcyBpbnRvIHRoZSBDb25zb2xlLgpAQCAtMTkyLDYgKzE5Myw3IEBACiB8UHJlZmVyZW5jZSB8VHlwZSB8RGVzY3JpcHRpb24KIHxtYXgtaXRlcmF0aW9uIHwgaW50IHwgQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdGhhdCB0aGUgQ29uc29sZSB3aWxsIGRpc3BsYXkuIERlZmF1bHQ6IDEwMCByZXN1bHRzLgogfGNvbG9ycyB8IGJvb2wgfCBFbmFibGUgQU5TSSBjb2xvciByZW5kZXJpbmcuIERlZmF1bHQ6IHRydWUKK3x3YXJuaW5ncyB8IGJvb2wgfCBFbmFibGUgZGlzcGxheSBvZiByZW1vdGUgZXhlY3V0aW9uIHdhcm5pbmdzLiBEZWZhdWx0OiB0cnVlCiB8Z3JlbWxpbi5jb2xvciB8IGNvbG9ycyB8IENvbG9yIG9mIHRoZSBBU0NJSSBhcnQgZ3JlbWxpbiBvbiBzdGFydHVwLgogfGluZm8uY29sb3IgfCBjb2xvcnMgfCBDb2xvciBvZiAiaW5mbyIgdHlwZSBtZXNzYWdlcy4KIHxlcnJvci5jb2xvciB8IGNvbG9ycyB8IENvbG9yIG9mICJlcnJvciIgdHlwZSBtZXNzYWdlcy4KQEAgLTQyNiwxNiArNDI4LDE0IEBACiBbW2dyZW1saW4tc2VydmVyXV0KID09IEdyZW1saW4gU2VydmVyCiAKLWltYWdlOmdyZW1saW4tc2VydmVyLnBuZ1t3aWR0aD00MDAsZmxvYXQ9cmlnaHRdIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGEgd2F5IHRvIHJlbW90ZWx5IGV4ZWN1dGUgR3JlbWxpbiBzY3JpcHRzCi1hZ2FpbnN0IG9uZSBvciBtb3JlIGBHcmFwaGAgaW5zdGFuY2VzIGhvc3RlZCB3aXRoaW4gaXQuICBUaGUgYmVuZWZpdHMgb2YgdXNpbmcgR3JlbWxpbiBTZXJ2ZXIgaW5jbHVkZToKK2ltYWdlOmdyZW1saW4tc2VydmVyLnBuZ1t3aWR0aD00MDAsZmxvYXQ9cmlnaHRdIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGEgd2F5IHRvIHJlbW90ZWx5IGV4ZWN1dGUgR3JlbWxpbiBhZ2FpbnN0IG9uZQorb3IgbW9yZSBgR3JhcGhgIGluc3RhbmNlcyBob3N0ZWQgd2l0aGluIGl0LiAgVGhlIGJlbmVmaXRzIG9mIHVzaW5nIEdyZW1saW4gU2VydmVyIGluY2x1ZGU6CiAKLSogQWxsb3dzIGFueSBHcmVtbGluIFN0cnVjdHVyZS1lbmFibGVkIGdyYXBoIHRvIGV4aXN0IGFzIGEgc3RhbmRhbG9uZSBzZXJ2ZXIsIHdoaWNoIGluIHR1cm4gZW5hYmxlcyB0aGUgYWJpbGl0eSBmb3IKLW11bHRpcGxlIGNsaWVudHMgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2FtZSBncmFwaCBkYXRhYmFzZS4KLSogRW5hYmxlcyBleGVjdXRpb24gb2YgYWQgaG9jIHF1ZXJpZXMgdGhyb3VnaCByZW1vdGVseSBzdWJtaXR0ZWQgR3JlbWxpbiBzY3JpcHRzLgotKiBBbGxvd3MgZm9yIHRoZSBob3N0aW5nIG9mIEdyZW1saW4tYmFzZWQgRFNMcyAoRG9tYWluIFNwZWNpZmljIExhbmd1YWdlKSB0aGF0IGV4cGFuZCB0aGUgR3JlbWxpbiBsYW5ndWFnZSB0byBtYXRjaAotdGhlIGxhbmd1YWdlIG9mIHRoZSBhcHBsaWNhdGlvbiBkb21haW4sIHdoaWNoIHdpbGwgaGVscCBzdXBwb3J0IGNvbW1vbiBncmFwaCB1c2UgY2FzZXMgc3VjaCBhcyBzZWFyY2hpbmcsIHJhbmtpbmcsCi1hbmQgcmVjb21tZW5kYXRpb24uCi0qIFByb3ZpZGVzIGEgbWV0aG9kIGZvciBOb24tSlZNIGxhbmd1YWdlcyAoZS5nLiBQeXRob24sIEphdmFzY3JpcHQsIGV0Yy4pIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIFRpbmtlclBvcCBzdGFjay4KKyogQWxsb3dzIGFueSBHcmVtbGluIFN0cnVjdHVyZS1lbmFibGVkIGdyYXBoIChpLmUuIGltcGxlbWVudHMgdGhlIGBHcmFwaGAgQVBJIG9uIHRoZSBKVk0pIHRvIGV4aXN0IGFzIGEgc3RhbmRhbG9uZQorc2VydmVyLCB3aGljaCBpbiB0dXJuIGVuYWJsZXMgdGhlIGFiaWxpdHkgZm9yIG11bHRpcGxlIGNsaWVudHMgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2FtZSBncmFwaCBkYXRhYmFzZS4KKyogRW5hYmxlcyBleGVjdXRpb24gb2YgYWQgaG9jIHF1ZXJpZXMgdGhyb3VnaCByZW1vdGVseSBzdWJtaXR0ZWQgR3JlbWxpbi4KKyogUHJvdmlkZXMgYSBtZXRob2QgZm9yIG5vbi1KVk0gbGFuZ3VhZ2VzIHdoaWNoIG1heSBub3QgaGF2ZSBhIEdyZW1saW4gVHJhdmVyc2FsIE1hY2hpbmUgKGUuZy4gUHl0aG9uLCBKYXZhc2NyaXB0LCBldGMuKQordG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgVGlua2VyUG9wIHN0YWNrIG9uIHRoZSBKVk0uCiAqIEV4cG9zZXMgbnVtZXJvdXMgbWV0aG9kcyBmb3IgZXh0ZW5zaW9uIGFuZCBjdXN0b21pemF0aW9uIHRvIGluY2x1ZGUgc2VyaWFsaXphdGlvbiBvcHRpb25zLCByZW1vdGUgY29tbWFuZHMsIGV0Yy4KIAogTk9URTogR3JlbWxpbiBTZXJ2ZXIgaXMgdGhlIHJlcGxhY2VtZW50IGZvciBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS90aW5rZXJwb3AvcmV4c3RlcltSZXhzdGVyXS4KQEAgLTQ2MCwxNSArNDYwLDEyIEBACiBbc291cmNlLHRleHRdCiAtLS0tCiAkIGJpbi9ncmVtbGluLXNlcnZlci5zaCBjb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi55YW1sCi1bSU5GT10gR3JlbWxpblNlcnZlciAtCitbSU5GT10gR3JlbWxpblNlcnZlcgogICAgICAgICAgXCwsLC8KICAgICAgICAgIChvIG8pCiAtLS0tLW9PT28tKDMpLW9PT28tLS0tLQogCi1bSU5GT10gR3JlbWxpblNlcnZlciAtIENvbmZpZ3VyaW5nIEdyZW1saW4gU2VydmVyIGZyb20gL2hvbWUvc21hbGxldHRlL2dpdC9hcGFjaGUvaW5jdWJhdG9yLXRpbmtlcnBvcC9ncmVtbGluLXNlcnZlci90YXJnZXQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuMC1TTkFQU0hPVC1zdGFuZGFsb25lL2NvbmYvZ3JlbWxpbi1zZXJ2ZXIueWFtbAotW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgQ29uc29sZVJlcG9ydGVyIGNvbmZpZ3VyZWQgd2l0aCByZXBvcnQgaW50ZXJ2YWw9MTgwMDAwbXMKLVtJTkZPXSBNZXRyaWNNYW5hZ2VyIC0gQ29uZmlndXJlZCBNZXRyaWNzIENzdlJlcG9ydGVyIGNvbmZpZ3VyZWQgd2l0aCByZXBvcnQgaW50ZXJ2YWw9MTgwMDAwbXMgdG8gZmlsZU5hbWU9L3RtcC9ncmVtbGluLXNlcnZlci1tZXRyaWNzLmNzdgotW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgSm14UmVwb3J0ZXIgY29uZmlndXJlZCB3aXRoIGRvbWFpbj0gYW5kIGFnZW50SWQ9CitbSU5GT10gR3JlbWxpblNlcnZlciAtIENvbmZpZ3VyaW5nIEdyZW1saW4gU2VydmVyIGZyb20gY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4ueWFtbAogW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgU2xmNGpSZXBvcnRlciBjb25maWd1cmVkIHdpdGggaW50ZXJ2YWw9MTgwMDAwbXMgYW5kIGxvZ2dlck5hbWU9b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3MkU2xmNGpSZXBvcnRlck1ldHJpY3MKIFtJTkZPXSBEZWZhdWx0R3JhcGhNYW5hZ2VyIC0gR3JhcGggW2dyYXBoXSB3YXMgc3VjY2Vzc2Z1bGx5IGNvbmZpZ3VyZWQgdmlhIFtjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXNdLgogW0lORk9dIFNlcnZlckdyZW1saW5FeGVjdXRvciAtIEluaXRpYWxpemVkIEdyZW1saW4gdGhyZWFkIHBvb2wuICBUaHJlYWRzIGluIHBvb2wgbmFtZWQgd2l0aCBwYXR0ZXJuIGdyZW1saW4tKgpAQCAtNDgxLDExICs0NzgsMTcgQEAKIFtJTkZPXSBUcmF2ZXJzYWxPcFByb2Nlc3NvciAtIEluaXRpYWxpemVkIGNhY2hlIGZvciBUcmF2ZXJzYWxPcFByb2Nlc3NvciB3aXRoIHNpemUgMTAwMCBhbmQgZXhwaXJhdGlvbiB0aW1lIG9mIDYwMDAwMCBtcwogW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBFeGVjdXRpbmcgc3RhcnQgdXAgTGlmZUN5Y2xlSG9vawogW0lORk9dIExvZ2dlciRpbmZvIC0gTG9hZGluZyAnbW9kZXJuJyBncmFwaCBkYXRhLgorW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBpZGxlQ29ubmVjdGlvblRpbWVvdXQgd2FzIHNldCB0byAwIHdoaWNoIHJlc29sdmVzIHRvIDAgc2Vjb25kcyB3aGVuIGNvbmZpZ3VyaW5nIHRoaXMgdmFsdWUgLSB0aGlzIGZlYXR1cmUgd2lsbCBiZSBkaXNhYmxlZAorW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBrZWVwQWxpdmVJbnRlcnZhbCB3YXMgc2V0IHRvIDAgd2hpY2ggcmVzb2x2ZXMgdG8gMCBzZWNvbmRzIHdoZW4gY29uZmlndXJpbmcgdGhpcyB2YWx1ZSAtIHRoaXMgZmVhdHVyZSB3aWxsIGJlIGRpc2FibGVkCitbV0FSTl0gQWJzdHJhY3RDaGFubmVsaXplciAtIFRoZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBzZXJpYWxpemF0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWQuCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAKK1tXQVJOXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gVGhlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwIHNlcmlhbGl6YXRpb24gY2xhc3MgaXMgZGVwcmVjYXRlZC4KIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtqc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vanNvbiB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMAotW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyZWQgd2l0aCB3b3JrZXIgdGhyZWFkIHBvb2wgb2YgMSwgZ3JlbWxpbiBwb29sIG9mIDggYW5kIGJvc3MgdGhyZWFkIHBvb2wgb2YgMS4KK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEKK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMQorW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyZWQgd2l0aCB3b3JrZXIgdGhyZWFkIHBvb2wgb2YgMSwgZ3JlbWxpbiBwb29sIG9mIDQgYW5kIGJvc3MgdGhyZWFkIHBvb2wgb2YgMS4KIFtJTkZPXSBHcmVtbGluU2VydmVyJDEgLSBDaGFubmVsIHN0YXJ0ZWQgYXQgcG9ydCA4MTgyLgogLS0tLQogCkBAIC01MjUsNiArNTI4LDgzIEBACiBXQVJOSU5HOiBUcmFuc2FjdGlvbnMgb24gZ3JhcGhzIGluIGluaXRpYWxpemF0aW9uIHNjcmlwdHMgYXJlIG5vdCBjbG9zZWQgYXV0b21hdGljYWxseSBhZnRlciB0aGUgc2NyaXB0IGZpbmlzaGVzCiBleGVjdXRpbmcuICBJdCBpcyB1cCB0byB0aGUgc2NyaXB0IHRvIHByb3Blcmx5IGNvbW1pdCBvciByb2xsYmFjayB0cmFuc2FjdGlvbnMgaW4gdGhlIHNjcmlwdCBpdHNlbGYuCiAKK1tbY29ubmVjdGluZy12aWEtZHJpdmVyc11dCis9PT0gQ29ubmVjdGluZyB2aWEgRHJpdmVycworCitpbWFnZTpyZXhzdGVyLWNvbm5lY3QucG5nW3dpZHRoPTE4MCxmbG9hdD1yaWdodF0gVGlua2VyUG9wIG9mZmVycyBjbGllbnQtc2lkZSBkcml2ZXJzIGZvciB0aGUgR3JlbWxpbiBTZXJ2ZXIgd2Vic29ja2V0CitzdWItcHJvdG9jb2wgaW4gYSB2YXJpZXR5IG9mIGxhbmd1YWdlczoKKworKiA8PGdyZW1saW4tZG90bmV0LEMjPj4KKyogPDxncmVtbGluLWphdmEsSmF2YT4+CisqIDw8Z3JlbWxpbi1qYXZhc2NyaXB0LEphdmFzY3JpcHQ+PgorKiA8PGdyZW1saW4tcHl0aG9uLFB5dGhvbj4+CisKK1RoZXNlIGRyaXZlcnMgcHJvdmlkZSBtZXRob2RzIHRvIHNlbmQgR3JlbWxpbiBiYXNlZCByZXF1ZXN0cyBhbmQgZ2V0IGJhY2sgdHJhdmVyc2FsIHJlc3VsdHMgYXMgYSByZXNwb25zZS4gVGhlIHJlcXVlc3RzCittYXkgYmUgc2NyaXB0LWJhc2VkIG9yIGJ5dGVjb2RlLWJhc2VkLiBBcyBkaXNjdXNzZWQgZWFybGllciBpbiB0aGUgPDxjb25uZWN0aW5nLWdyZW1saW4tc2VydmVyLGludHJvZHVjdGlvbj4+IHRoZQorcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIGJ5dGVjb2RlLWJhc2VkIHJlcXVlc3RzLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHNlbmRpbmcgc2NyaXB0cyBhbmQgc2VuZGluZyBieXRlY29kZSBhcmUKK2RlbW9uc3RyYXRlZCBiZWxvdyBpbiBzb21lIGJhc2ljIGV4YW1wbGVzOgorCitbc291cmNlLGphdmEsdGFiXQorLS0tLQorLy8gc2NyaXB0CitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsKK0NsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKK01hcDxTdHJpbmcsT2JqZWN0PiBwYXJhbXMgPSBuZXcgSGFzaE1hcDw+KCk7CitwYXJhbXMucHV0KCJuYW1lIiwibWFya28iKTsKK0xpc3Q8UmVzdWx0PiBsaXN0ID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJyxuYW1lKS5vdXQoJ2tub3dzJykiLCBwYXJhbXMpLmFsbCgpLmdldCgpOworCisvLyBieXRlY29kZQorR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZygibG9jYWxob3N0Iiw4MTgyLCJnIikpOworTGlzdDxWZXJ0ZXg+IGxpc3QgPSBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgia25vd3MiKS50b0xpc3QoKTsKKy0tLS0KK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorLy8gc2NyaXB0CitkZWYgY2x1c3RlciA9IENsdXN0ZXIub3BlbigpCitkZWYgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCkKK2RlZiBsaXN0ID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJyxuYW1lKS5vdXQoJ2tub3dzJykiLCBbbmFtZTogIm1hcmtvIl0pLmFsbCgpLmdldCgpOworCisvLyBieXRlY29kZQorZGVmIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoImxvY2FsaG9zdCIsODE4MiwiZyIpKQorZGVmIGxpc3QgPSBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLm91dCgna25vd3MnKS50b0xpc3QoKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluQXBwbGljYXRpb25zVGVzdHMuY3NbdGFncz1jb25uZWN0aW5nVmlhRHJpdmVyc10KKy0tLS0KK1tzb3VyY2UsamF2YXNjcmlwdF0KKy0tLS0KKy8vIHNjcmlwdAorY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgnd3M6Ly9sb2NhbGhvc3Q6NDU5NDAvZ3JlbWxpbicsIHsgdHJhdmVyc2FsU291cmNlOiAiZyIgfSk7Citjb25zdCBjb25uID0gY2xpZW50Lm9wZW4oKTsKK2NvbnN0IGxpc3QgPSBjb25uLnN1Ym1pdCgiZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJyxuYW1lKS5vdXQoJ2tub3dzJykiLHtuYW1lOiAnbWFya28nfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsgLi4uIH0pOworCisvLyBieXRlY29kZQorY29uc3QgZyA9IGd0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nKSk7Citjb25zdCBsaXN0ID0gZy5WKCkuaGFzKCJwZXJzb24iLCJuYW1lIiwibWFya28iKS5vdXQoImtub3dzIikudG9MaXN0KCk7CistLS0tCitbc291cmNlLHB5dGhvbl0KKy0tLS0KKyMgc2NyaXB0CitjbGllbnQgPSBDbGllbnQoJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsICdnJykKK2xpc3QgPSBjbGllbnQuc3VibWl0KCJnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLG5hbWUpLm91dCgna25vd3MnKSIseyduYW1lJzogJ21hcmtvJ30pLmFsbCgpCisKKyMgYnl0ZWNvZGUKK2cgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsJ2cnKSkKK2xpc3QgPSBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgia25vd3MiKS50b0xpc3QoKQorLS0tLQorCitUaGUgYWR2YW50YWdlIG9mIGJ5dGVjb2RlIG92ZXIgc2NyaXB0cyBzaG91bGQgYmUgYXBwYXJlbnQgZnJvbSB0aGUgYWJvdmUgZXhhbXBsZXMuIFNjcmlwdHMgYXJlIGp1c3Qgc3RyaW5ncyB0aGF0IGFyZQorZW1iZWRkZWQgaW4gY29kZSAoaW4gdGhlIGFib3ZlIGV4YW1wbGVzLCB0aGUgc3RyaW5ncyBhcmUgR3Jvb3Z5LWJhc2VkKSB3aGVyZWFzIGJ5dGVjb2RlIGJhc2VkIHJlcXVlc3RzIGFyZSB0aGVtc2VsdmVzCitjb2RlIHdyaXR0ZW4gaW4gdGhlIG5hdGl2ZSBsYW5ndWFnZSBvZiB1c2UuIE9idmlvdXNseSwgdGhlIGFkdmFudGFnZSBvZiB0aGUgR3JlbWxpbiBiZWluZyBhY3R1YWwgY29kZSBpcyB0aGF0IHRoZXJlCithcmUgY2hlY2tzIChlLmcuIGNvbXBpbGUtdGltZSwgYXV0by1jb21wbGV0ZSBhbmQgb3RoZXIgSURFIHN1cHBvcnQsIGxhbmd1YWdlIGxldmVsIGNoZWNrcywgZXRjLikgdGhhdCBoZWxwIHZhbGlkYXRlIHRoZQorR3JlbWxpbiBkdXJpbmcgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MuCisKK1RpbmtlclBvcCBtYWtlcyBhbiBlZmZvcnQgdG8gZW5zdXJlIGEgaGlnaC1sZXZlbCBvZiBjb25zaXN0ZW5jeSBhbW9uZyB0aGUgZHJpdmVycyBhbmQgdGhlaXIgZmVhdHVyZXMsIGJ1dCB0aGVyZSBhcmUKK2RpZmZlcmVuY2VzIGluIGNhcGFiaWxpdGllcyBhbmQgZmVhdHVyZXMgYXMgdGhleSBhcmUgZWFjaCBkZXZlbG9wZWQgaW5kZXBlbmRlbnRseS4gVGhlIEphdmEgZHJpdmVyIHdhcyB0aGUgZmlyc3QgYW5kCitpcyB0aGVyZWZvcmUgdGhlIG1vc3QgYWR2YW5jZWQuIFBsZWFzZSBzZWUgdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGRyaXZlciBvZiBpbnRlcmVzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbgorYW5kIGRldGFpbHMgaW4gdGhlIDw8Z3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzLEdyZW1saW4gRHJpdmVycyBhbmQgVmFyaWFudHM+PiBTZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnRhdGlvbi4KKwogW1tjb25uZWN0aW5nLXZpYS1jb25zb2xlXV0KID09PSBDb25uZWN0aW5nIHZpYSBDb25zb2xlCiAKQEAgLTcxMywyMjAgKzc5Myw2IEBACiBOT1RFOiBDb25zb2xlIGNvbW1hbmRzLCB0aG9zZSB0aGF0IGJlZ2luIHdpdGggYSBjb2xvbiAoZS5nLiBgOnhgLCBgOnJlbW90ZWApIGRvIG5vdCBleGVjdXRlIHJlbW90ZWx5IHdoZW4gaW4gdGhpcyBtb2RlLgogVGhleSBhcmUgYWxsIHN0aWxsIGV2YWx1YXRlZCBsb2NhbGx5LgogCi1bW2Nvbm5lY3RpbmctdmlhLWphdmFdXQotPT09IENvbm5lY3RpbmcgdmlhIEphdmEKLQotW3NvdXJjZSx4bWxdCi0tLS0tCi08ZGVwZW5kZW5jeT4KLSAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kcml2ZXI8L2FydGlmYWN0SWQ+Ci0gICA8dmVyc2lvbj54LnkuejwvdmVyc2lvbj4KLTwvZGVwZW5kZW5jeT4KLS0tLS0KLQotaW1hZ2U6Z3JlbWxpbi1qYXZhLnBuZ1t3aWR0aD0xNzUsZmxvYXQ9bGVmdF0gVGlua2VyUG9wMyBjb21lcyBlcXVpcHBlZCB3aXRoIGEgcmVmZXJlbmNlIGNsaWVudCBmb3IgSmF2YS1iYXNlZAotYXBwbGljYXRpb25zLiAgSXQgaXMgcmVmZXJyZWQgdG8gYXMgR3JlbWxpbiBEcml2ZXIsIHdoaWNoIGVuYWJsZXMgYXBwbGljYXRpb25zIHRvIHNlbmQgcmVxdWVzdHMgdG8gR3JlbWxpbiBTZXJ2ZXIKLWFuZCBnZXQgYmFjayByZXN1bHRzLgotCi1HcmVtbGluIGNvZGUgaXMgc2VudCB0byB0aGUgc2VydmVyIGZyb20gYSBgQ2xpZW50YCBpbnN0YW5jZS4gIEEgYENsaWVudGAgaXMgY3JlYXRlZCBhcyBmb2xsb3dzOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1DbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsgIDwxPgotQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOyA8Mj4KLS0tLS0KLQotPDE+IE9wZW5zIGEgcmVmZXJlbmNlIHRvIGBsb2NhbGhvc3RgIC0gbm90ZSB0aGF0IHRoZXJlIGFyZSBtYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgaW4gZGVmaW5pbmcgYSBgQ2x1c3RlcmAgb2JqZWN0LgotPDI+IENyZWF0ZXMgYSBgQ2xpZW50YCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9mIHRoZSBgQ2x1c3RlcmAuCi0KLU9uY2UgYSBgQ2xpZW50YCBpbnN0YW5jZSBpcyByZWFkeSwgaXQgaXMgcG9zc2libGUgdG8gaXNzdWUgc29tZSBHcmVtbGluOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1SZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoIlsxLDIsMyw0XSIpOyAgPDE+Ci1yZXN1bHRzLnN0cmVhbSgpLm1hcChpIC0+IGkuZ2V0KEludGVnZXIuY2xhc3MpICogMik7ICAgICAgIDwyPgotCi1Db21wbGV0YWJsZUZ1dHVyZTxMaXN0PFJlc3VsdD4+IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJbMSwyLDMsNF0iKS5hbGwoKTsgIDwzPgotCi1Db21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IGZ1dHVyZSA9IGNsaWVudC5zdWJtaXRBc3luYygiWzEsMiwzLDRdIik7IDw0PgotCi1NYXA8U3RyaW5nLE9iamVjdD4gcGFyYW1zID0gbmV3IEhhc2hNYXA8PigpOwotcGFyYW1zLnB1dCgieCIsNCk7Ci1jbGllbnQuc3VibWl0KCJbMSwyLDMseF0iLCBwYXJhbXMpOyA8NT4KLS0tLS0KLQotPDE+IFN1Ym1pdHMgYSBzY3JpcHQgdGhhdCBzaW1wbHkgcmV0dXJucyBhIGBMaXN0YCBvZiBpbnRlZ2Vycy4gIFRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgcmVxdWVzdCBpcyB3cml0dGVuIHRvCi10aGUgc2VydmVyIGFuZCBhIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLgotPDI+IEV2ZW4gdGhvdWdoIHRoZSBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZCwgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBzZXJ2ZXIgaGFzIHNlbnQgYmFjayB0aGUgcmVzdWx0cyAob3IgZXZlbgotZXZhbHVhdGVkIHRoZSBzY3JpcHQgcG90ZW50aWFsbHkpLiAgVGhlIGBSZXN1bHRTZXRgIGlzIGp1c3QgYSBob2xkZXIgdGhhdCBpcyBhd2FpdGluZyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBzZXJ2ZXIuCi1JbiB0aGlzIGNhc2UsIHRoZXkgYXJlIHN0cmVhbWVkIGZyb20gdGhlIHNlcnZlciBhcyB0aGV5IGFycml2ZS4KLTwzPiBTdWJtaXQgYSBzY3JpcHQsIGdldCBhIGBSZXN1bHRTZXRgLCB0aGVuIHJldHVybiBhIGBDb21wbGV0YWJsZUZ1dHVyZWAgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGFsbCByZXN1bHRzIGhhdmUgYmVlbiByZXR1cm5lZC4KLTw0PiBTdWJtaXQgYSBzY3JpcHQgYXN5bmNocm9ub3VzbHkgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgcmVxdWVzdCB0byBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIuCi08NT4gUGFyYW1ldGVyaXplZCByZXF1ZXN0IGFyZSBjb25zaWRlcmVkIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gc2VuZCBHcmVtbGluIHRvIHRoZSBzZXJ2ZXIgYXMgdGhleSBjYW4gYmUgY2FjaGVkLAotd2hpY2ggd2lsbCBib29zdCBwZXJmb3JtYW5jZSBhbmQgcmVkdWNlIHJlc291cmNlcyByZXF1aXJlZCBvbiB0aGUgc2VydmVyLgotCi09PT09IENvbmZpZ3VyYXRpb24KLQotVGhlIGZvbGxvd2luZyB0YWJsZSBkZXNjcmliZXMgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgR3JlbWxpbiBEcml2ZXI6Ci0KLVt3aWR0aD0iMTAwJSIsY29scz0iMywxMCxeMiIsb3B0aW9ucz0iaGVhZGVyIl0KLXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXxLZXkgfERlc2NyaXB0aW9uIHxEZWZhdWx0Ci18Y29ubmVjdGlvblBvb2wuY2hhbm5lbGl6ZXIgfFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3NuYW1lIG9mIHRoZSBjbGllbnQgYENoYW5uZWxpemVyYCB0aGF0IGRlZmluZXMgaG93IHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlci4gfGBDaGFubmVsaXplci5XZWJTb2NrZXRDaGFubmVsaXplcmAKLXxjb25uZWN0aW9uUG9vbC5lbmFibGVTc2wgfERldGVybWluZXMgaWYgU1NMIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC4gSWYgZW5hYmxlZCBvbiB0aGUgc2VydmVyIHRoZW4gaXQgbXVzdCBiZSBlbmFibGVkIG9uIHRoZSBjbGllbnQuIHxmYWxzZQotfGNvbm5lY3Rpb25Qb29sLmtlZXBBbGl2ZUludGVydmFsIHxMZW5ndGggb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBvbiBhbiBpZGxlIGNvbm5lY3Rpb24gYmVmb3JlIHNlbmRpbmcgYSBrZWVwLWFsaXZlIHJlcXVlc3QuIFNldCB0byB6ZXJvIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLiB8MTgwMDAwCi18Y29ubmVjdGlvblBvb2wua2V5U3RvcmUgfFRoZSBwcml2YXRlIGtleSBpbiBKS1Mgb3IgUEtDUyMxMiBmb3JtYXQuIHxfbm9uZV8KLXxjb25uZWN0aW9uUG9vbC5rZXlTdG9yZVBhc3N3b3JkIHxUaGUgcGFzc3dvcmQgb2YgdGhlIGBrZXlTdG9yZWAgaWYgaXQgaXMgcGFzc3dvcmQtcHJvdGVjdGVkLiB8X25vbmVfCi18Y29ubmVjdGlvblBvb2wua2V5U3RvcmVUeXBlIHxgSktTYCAoSmF2YSA4IGRlZmF1bHQpIG9yIGBQS0NTMTJgIChKYXZhIDkrIGRlZmF1bHQpfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLm1heENvbnRlbnRMZW5ndGggfFRoZSBtYXhpbXVtIGxlbmd0aCBpbiBieXRlcyB0aGF0IGEgbWVzc2FnZSBjYW4gYmUgc2VudCB0byB0aGUgc2VydmVyLiBUaGlzIG51bWJlciBjYW4gYmUgbm8gZ3JlYXRlciB0aGFuIHRoZSBzZXR0aW5nIG9mIHRoZSBzYW1lIG5hbWUgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uLiB8NjU1MzYKLXxjb25uZWN0aW9uUG9vbC5tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uIHxUaGUgbWF4aW11bSBudW1iZXIgb2YgaW4tZmxpZ2h0IHJlcXVlc3RzIHRoYXQgY2FuIG9jY3VyIG9uIGEgY29ubmVjdGlvbi4gfDQKLXxjb25uZWN0aW9uUG9vbC5tYXhTaW11bHRhbmVvdXNVc2FnZVBlckNvbm5lY3Rpb24gfFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgY29ubmVjdGlvbiBjYW4gYmUgYm9ycm93ZWQgZnJvbSB0aGUgcG9vbCBzaW11bHRhbmVvdXNseS4gfDE2Ci18Y29ubmVjdGlvblBvb2wubWF4U2l6ZSB8VGhlIG1heGltdW0gc2l6ZSBvZiBhIGNvbm5lY3Rpb24gcG9vbCBmb3IgYSBob3N0LiB8OAotfGNvbm5lY3Rpb25Qb29sLm1heFdhaXRGb3JDb25uZWN0aW9uIHxUaGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGEgbmV3IGNvbm5lY3Rpb24gYmVmb3JlIHRpbWluZyBvdXQuIHwzMDAwCi18Y29ubmVjdGlvblBvb2wubWF4V2FpdEZvckNsb3NlIHxUaGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHBlbmRpbmcgbWVzc2FnZXMgdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyIGJlZm9yZSBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLiB8MzAwMAotfGNvbm5lY3Rpb25Qb29sLm1pbkluUHJvY2Vzc1BlckNvbm5lY3Rpb24gfFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbi1mbGlnaHQgcmVxdWVzdHMgdGhhdCBjYW4gb2NjdXIgb24gYSBjb25uZWN0aW9uLiB8MQotfGNvbm5lY3Rpb25Qb29sLm1pblNpbXVsdGFuZW91c1VzYWdlUGVyQ29ubmVjdGlvbiB8VGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBjb25uZWN0aW9uIGNhbiBiZSBib3Jyb3dlZCBmcm9tIHRoZSBwb29sIHNpbXVsdGFuZW91c2x5LiB8OAotfGNvbm5lY3Rpb25Qb29sLm1pblNpemUgfFRoZSBtaW5pbXVtIHNpemUgb2YgYSBjb25uZWN0aW9uIHBvb2wgZm9yIGEgaG9zdC4gfDIKLXxjb25uZWN0aW9uUG9vbC5yZWNvbm5lY3RJbnRlcnZhbCB8VGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSB0cnlpbmcgdG8gcmVjb25uZWN0IHRvIGEgZGVhZCBob3N0LiB8MTAwMAotfGNvbm5lY3Rpb25Qb29sLnJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZSB8VGhlIG92ZXJyaWRlIHZhbHVlIGZvciB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0IGJhdGNoZXMgdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyLiB8NjQKLXxjb25uZWN0aW9uUG9vbC5zc2xDaXBoZXJTdWl0ZXMgfFRoZSBsaXN0IG9mIEpTU0UgY2lwaGVycyB0byBzdXBwb3J0IGZvciBTU0wgY29ubmVjdGlvbnMuIElmIHNwZWNpZmllZCwgb25seSB0aGUgY2lwaGVycyB0aGF0IGFyZSBsaXN0ZWQgYW5kIHN1cHBvcnRlZCB3aWxsIGJlIGVuYWJsZWQuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBKVk0gZGVmYXVsdCBpcyB1c2VkLiAgfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLnNzbEVuYWJsZWRQcm90b2NvbHMgfFRoZSBsaXN0IG9mIFNTTCBwcm90b2NvbHMgdG8gc3VwcG9ydCBmb3IgU1NMIGNvbm5lY3Rpb25zLiBJZiBzcGVjaWZpZWQsIG9ubHkgdGhlIHByb3RvY29scyB0aGF0IGFyZSBsaXN0ZWQgYW5kIHN1cHBvcnRlZCB3aWxsIGJlIGVuYWJsZWQuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBKVk0gZGVmYXVsdCBpcyB1c2VkLiAgfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLnNzbFNraXBDZXJ0VmFsaWRhdGlvbiB8Q29uZmlndXJlcyB0aGUgYFRydXN0TWFuYWdlcmAgdG8gdHJ1c3QgYWxsIGNlcnRzIHdpdGhvdXQgYW55IHZhbGlkYXRpb24uIFNob3VsZCBub3QgYmUgdXNlZCBpbiBwcm9kdWN0aW9uLnxmYWxzZQotfGNvbm5lY3Rpb25Qb29sLnRydXN0U3RvcmUgfEZpbGUgbG9jYXRpb24gZm9yIGEgU1NMIENlcnRpZmljYXRlIENoYWluIHRvIHVzZSB3aGVuIFNTTCBpcyBlbmFibGVkLiBJZiB0aGlzIHZhbHVlIGlzIG5vdCBwcm92aWRlZCBhbmQgU1NMIGlzIGVuYWJsZWQsIHRoZSBkZWZhdWx0IGBUcnVzdE1hbmFnZXJgIHdpbGwgYmUgdXNlZC4gfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLnRydXN0U3RvcmVQYXNzd29yZCB8VGhlIHBhc3N3b3JkIG9mIHRoZSBgdHJ1c3RTdG9yZWAgaWYgaXQgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIHxfbm9uZV8KLXxjb25uZWN0aW9uUG9vbC52YWxpZGF0aW9uUmVxdWVzdCB8QSBzY3JpcHQgdGhhdCBpcyB1c2VkIHRvIHRlc3Qgc2VydmVyIGNvbm5lY3Rpdml0eS4gQSBnb29kIHNjcmlwdCB0byB1c2UgaXMgb25lIHRoYXQgZXZhbHVhdGVzIHF1aWNrbHkgYW5kIHJldHVybnMgbm8gZGF0YS4gVGhlIGRlZmF1bHQgc2ltcGx5IHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLCBidXQgaWYgYSBncmFwaCBpcyByZXF1aXJlZCBieSBhIHBhcnRpY3VsYXIgcHJvdmlkZXIsIGEgZ29vZCB0cmF2ZXJzYWwgbWlnaHQgYmUgYGcuaW5qZWN0KClgLiB8XycnXwotfGhvc3RzIHxUaGUgbGlzdCBvZiBob3N0cyB0aGF0IHRoZSBkcml2ZXIgd2lsbCBjb25uZWN0IHRvLiB8bG9jYWxob3N0Ci18amFhc0VudHJ5IHxTZXRzIHRoZSBgQXV0aFByb3BlcnRpZXMuUHJvcGVydHkuSkFBU19FTlRSWWAgcHJvcGVydGllcyBmb3IgYXV0aGVudGljYXRpb24gdG8gR3JlbWxpbiBTZXJ2ZXIuIHxfbm9uZV8KLXxuaW9Qb29sU2l6ZSB8U2l6ZSBvZiB0aGUgcG9vbCBmb3IgaGFuZGxpbmcgcmVxdWVzdC9yZXNwb25zZSBvcGVyYXRpb25zLiB8YXZhaWxhYmxlIHByb2Nlc3NvcnMKLXxwYXNzd29yZCB8VGhlIHBhc3N3b3JkIHRvIHN1Ym1pdCBvbiByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgYXV0aGVudGljYXRpb24uIHxfbm9uZV8KLXxwYXRoIHxUaGUgVVJMIHBhdGggdG8gdGhlIEdyZW1saW4gU2VydmVyLiB8Xy9ncmVtbGluXwotfHBvcnQgfFRoZSBwb3J0IG9mIHRoZSBHcmVtbGluIFNlcnZlciB0byBjb25uZWN0IHRvLiBUaGUgc2FtZSBwb3J0IHdpbGwgYmUgYXBwbGllZCBmb3IgYWxsIGhvc3RzLiB8ODE5MgotfHByb3RvY29sIHxTZXRzIHRoZSBgQXV0aFByb3BlcnRpZXMuUHJvcGVydHkuUFJPVE9DT0xgIHByb3BlcnRpZXMgZm9yIGF1dGhlbnRpY2F0aW9uIHRvIEdyZW1saW4gU2VydmVyLiB8X25vbmVfCi18c2VyaWFsaXplci5jbGFzc05hbWUgfFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgYE1lc3NhZ2VTZXJpYWxpemVyYCB0aGF0IHdpbGwgYmUgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzZXJ2ZXIuIE5vdGUgdGhhdCB0aGUgc2VyaWFsaXplciBjb25maWd1cmVkIG9uIHRoZSBjbGllbnQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIHxfbm9uZV8KLXxzZXJpYWxpemVyLmNvbmZpZyB8QSBgTWFwYCBvZiBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgc2VyaWFsaXplci4gfF9ub25lXwotfHVzZXJuYW1lIHxUaGUgdXNlcm5hbWUgdG8gc3VibWl0IG9uIHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4gfF9ub25lXwotfHdvcmtlclBvb2xTaXplIHxTaXplIG9mIHRoZSBwb29sIGZvciBoYW5kbGluZyBiYWNrZ3JvdW5kIHdvcmsuIHxhdmFpbGFibGUgcHJvY2Vzc29ycyAqIDIKLXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUGxlYXNlIHNlZSB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2x1c3Rlci5CdWlsZGVyLmh0bWxbQ2x1c3Rlci5CdWlsZGVyIGphdmFkb2NdIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNldHRpbmdzLgotCi09PT09IEFsaWFzZXMKLQotU2NyaXB0cyBzdWJtaXR0ZWQgdG8gR3JlbWxpbiBTZXJ2ZXIgYXV0b21hdGljYWxseSBoYXZlIHRoZSBnbG9iYWxseSBjb25maWd1cmVkIGBHcmFwaGAgYW5kIGBUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlcwotbWFkZSBhdmFpbGFibGUgdG8gdGhlbS4gIFRoZXJlZm9yZSwgaWYgR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlcyB0d28gYFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzIGNhbGxlZCAiZzEiIGFuZCAiZzIiCi1hIHNjcmlwdCBjYW4gc2ltcGx5IHJlZmVyZW5jZSB0aGVtIGRpcmVjdGx5IGFzOgotCi1bc291cmNlLGphdmFdCi1jbGllbnQuc3VibWl0KCJnMS5WKCkiKQotY2xpZW50LnN1Ym1pdCgiZzIuVigpIikKLQotV2hpbGUgdGhpcyBpcyBhbiBhY2NlcHRhYmxlIHdheSB0byBzdWJtaXQgc2NyaXB0cywgaXQgaGFzIHRoZSBkb3duc2lkZSBvZiBmb3JjaW5nIHRoZSBjbGllbnQgdG8gZW5jb2RlIHRoZSBzZXJ2ZXItc2lkZQotdmFyaWFibGUgbmFtZSBkaXJlY3RseSBpbnRvIHRoZSBzY3JpcHQgYmVpbmcgc2VudC4gIElmIHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBldmVyIGNoYW5nZWQgc3VjaCB0aGF0ICJnMSIgYmVjYW1lCi0iZzEwMCIsIHRoZSBjbGllbnQtc2lkZSBjb2RlIG1pZ2h0IGhhdmUgdG8gc2VlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGNoYW5nZS4gIERlY291cGxpbmcgdGhlIHNjcmlwdCBjb2RlIGZyb20gdGhlCi1zZXJ2ZXIgY29uZmlndXJhdGlvbiBjYW4gYmUgbWFuYWdlZCBieSB0aGUgYGFsaWFzYCBtZXRob2Qgb24gYENsaWVudGAgYXMgZm9sbG93czoKLQotW3NvdXJjZSxqYXZhXQotQ2xpZW50IGcxQ2xpZW50ID0gY2xpZW50LmFsaWFzKCJnMSIpCi1DbGllbnQgZzJDbGllbnQgPSBjbGllbnQuYWxpYXMoImcyIikKLWcxQ2xpZW50LnN1Ym1pdCgiZy5WKCkiKQotZzJDbGllbnQuc3VibWl0KCJnLlYoKSIpCi0KLVRoZSBhYm92ZSBjb2RlIGRlbW9uc3RyYXRlcyBob3cgdGhlIGBhbGlhc2AgbWV0aG9kIGNhbiBiZSB1c2VkIHN1Y2ggdGhhdCB0aGUgc2NyaXB0IG5lZWQgb25seSBjb250YWluIGEgcmVmZXJlbmNlCi10byAiZyIgYW5kICJnMSIgYW5kICJnMiIgYXJlIGF1dG9tYXRpY2FsbHkgcmVib3VuZCBpbnRvICJnIiBvbiB0aGUgc2VydmVyLXNpZGUuCi0KLT09PT0gU2VyaWFsaXphdGlvbgotCi1XaGVuIHVzaW5nIEdyeW8gc2VyaWFsaXphdGlvbiAodGhlIGRlZmF1bHQgc2VyaWFsaXplciBmb3IgdGhlIGRyaXZlciksIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBjbGllbnQgYW5kIHNlcnZlcgotaGF2ZSB0aGUgc2FtZSBzZXJpYWxpemVycyBjb25maWd1cmVkIG9yIGVsc2Ugb25lIG9yIHRoZSBvdGhlciB3aWxsIGV4cGVyaWVuY2Ugc2VyaWFsaXphdGlvbiBleGNlcHRpb25zIGFuZCBmYWlsIHRvCi1hbHdheXMgY29tbXVuaWNhdGUuICBEaXNjcmVwYW5jeSBpbiBzZXJpYWxpemVyIHJlZ2lzdHJhdGlvbiBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVyIGNhbiBoYXBwZW4gZmFpcmx5IGVhc2lseSBhcwotZ3JhcGhzIHdpbGwgYXV0b21hdGljYWxseSBpbmNsdWRlIHNlcmlhbGl6ZXJzIG9uIHRoZSBzZXJ2ZXItc2lkZSwgdGh1cyBsZWF2aW5nIHRoZSBjbGllbnQgdG8gYmUgY29uZmlndXJlZCBtYW51YWxseS4KLVRoaXMgY2FuIGJlIGRvbmUgbWFudWFsbHkgYXMgZm9sbG93czoKLQotW3NvdXJjZSxqYXZhXQotR3J5b01hcHBlciBrcnlvID0gR3J5b01hcHBlci5idWlsZCgpLmFkZFJlZ2lzdHJ5KFRpdGFuSW9SZWdpc3RyeS5JTlNUQU5DRSkuY3JlYXRlKCk7Ci1NZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoa3J5byk7Ci1DbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAuc2VyaWFsaXplcihzZXJpYWxpemVyKQotICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKLUNsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKS5pbml0KCk7Ci0KLVRoZSBhYm92ZSBjb2RlIGRlbW9uc3RyYXRlcyB1c2luZyB0aGUgYFRpdGFuSW9SZWdpc3RyeWAgd2hpY2ggaXMgYW4gYElvUmVnaXN0cnlgIGluc3RhbmNlLiAgSXQgdGVsbHMgdGhlIHNlcmlhbGl6ZXIKLXdoYXQgY2xhc3NlcyAoZnJvbSBUaXRhbiBpbiB0aGlzIGNhc2UpIHRvIGF1dG8tcmVnaXN0ZXIgZHVyaW5nIHNlcmlhbGl6YXRpb24uICBHcmVtbGluIFNlcnZlciByb3VnaGx5IHVzZXMgdGhpcyBzYW1lCi1hcHByb2FjaCB3aGVuIGl0IGNvbmZpZ3VyZXMgaXQncyBzZXJpYWxpemVycywgc28gdXNpbmcgdGhpcyBzYW1lIG1vZGVsIHdpbGwgZW5zdXJlIGNvbXBhdGliaWxpdHkgd2hlbiBtYWtpbmcgcmVxdWVzdHMuCi0KLVtbY29ubmVjdGluZy12aWEtcHl0aG9uXV0KLT09PSBDb25uZWN0aW5nIHZpYSBQeXRob24KLQotW3NvdXJjZSxweXRob25dCi0tLS0tCi1waXAgaW5zdGFsbCBncmVtbGlucHl0aG9uCi0tLS0tCi0KLVRpbmtlclBvcDMgYWxzbyBpbmNsdWRlcyBhIGNsaWVudCBmb3IgUHl0aG9uLWJhc2VkIGFwcGxpY2F0aW9ucy4gIEl0IGlzIHJlZmVycmVkIHRvIGFzIEdyZW1saW4tUHl0aG9uIERyaXZlci4KLVRoZSBgQ2xpZW50YCBjbGFzcyBpbXBsZW1lbnRhdGlvbi9pbnRlcmZhY2UgaXMgYmFzZWQgb24gdGhlIEphdmEgRHJpdmVyLCB3aXRoIHNvbWUgcmVzdHJpY3Rpb25zLiBNb3N0IG5vdGFibHksCi1HcmVtbGluLVB5dGhvbiBkb2VzIG5vdCB5ZXQgaW1wbGVtZW50IHRoZSBgQ2x1c3RlcmAgY2xhc3MuIEluc3RlYWQsIGBDbGllbnRgIGlzIGluc3RhbnRpYXRlZCBkaXJlY3RseS4KLVVzYWdlIGlzIGFzIGZvbGxvd3M6Ci0KLVtzb3VyY2UscHl0aG9uXQotLS0tLQotZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIgaW1wb3J0IGNsaWVudCA8MT4KLWNsaWVudCA9IGNsaWVudC5DbGllbnQoJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsICdnJykgPDI+Ci0tLS0tCi0KLTwxPiBJbXBvcnQgdGhlIEdyZW1saW4tUHl0aG9uIGBjbGllbnRgIG1vZHVsZS4KLTwyPiBPcGVucyBhIHJlZmVyZW5jZSB0byBgbG9jYWxob3N0YCAtIG5vdGUgdGhhdCB0aGVyZSBhcmUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjYW4gYmUgcGFzc2VkCi10byB0aGUgYENsaWVudGAgb2JqZWN0IHVwb24gaW5zdGFudGlhdGlvbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KLQotT25jZSBhIGBDbGllbnRgIGluc3RhbmNlIGlzIHJlYWR5LCBpdCBpcyBwb3NzaWJsZSB0byBpc3N1ZSBzb21lIEdyZW1saW46Ci0KLVtzb3VyY2UscHl0aG9uXQotLS0tLQotcmVzdWx0X3NldCA9IGNsaWVudC5zdWJtaXQoIlsxLDIsMyw0XSIpICA8MT4KLWZ1dHVyZV9yZXN1bHRzID0gcmVzdWx0X3NldC5hbGwoKSAgPDI+Ci1yZXN1bHRzID0gZnV0dXJlX3Jlc3VsdHMucmVzdWx0KCkgPDM+Ci1hc3NlcnQgcmVzdWx0cyA9PSBbMSwgMiwgMywgNF0gPDQ+Ci0KLWZ1dHVyZV9yZXN1bHRfc2V0ID0gY2xpZW50LnN1Ym1pdEFzeW5jKCJbMSwyLDMsNF0iKSA8NT4KLXJlc3VsdF9zZXQgPSBmdXR1cmVfcmVzdWx0X3NldC5yZXN1bHQoKSA8Nj4KLXJlc3VsdCA9IHJlc3VsdF9zZXQub25lKCkgPDc+Ci1hc3NlcnQgcmVzdWx0cyA9PSBbMSwgMiwgMywgNF0gPDg+Ci1hc3NlcnQgcmVzdWx0X3NldC5kb25lLmRvbmUoKSA8OT4KLQotY2xpZW50LmNsb3NlKCkgPDEwPgotLS0tLQotCi08MT4gU3VibWl0IGEgc2NyaXB0IHRoYXQgc2ltcGx5IHJldHVybnMgYSBgTGlzdGAgb2YgaW50ZWdlcnMuICBUaGlzIG1ldGhvZCBibG9ja3MgdW50aWwgdGhlIHJlcXVlc3QgaXMgd3JpdHRlbiB0bwotdGhlIHNlcnZlciBhbmQgYSBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZC4KLTwyPiBFdmVuIHRob3VnaCB0aGUgYFJlc3VsdFNldGAgaXMgY29uc3RydWN0ZWQsIGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgc2VydmVyIGhhcyBzZW50IGJhY2sgdGhlIHJlc3VsdHMgKG9yIGV2ZW4KLWV2YWx1YXRlZCB0aGUgc2NyaXB0IHBvdGVudGlhbGx5KS4gIFRoZSBgUmVzdWx0U2V0YCBpcyBqdXN0IGEgaG9sZGVyIHRoYXQgaXMgYXdhaXRpbmcgdGhlIHJlc3VsdHMgZnJvbSB0aGUgc2VydmVyLiBUaGUgYGFsbGAgbWV0aG9kCi1yZXR1cm5zIGEgYGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmVgIHRoYXQgcmVzb2x2ZXMgdG8gYSBsaXN0IHdoZW4gaXQgaXMgY29tcGxldGUuCi08Mz4gQmxvY2sgdW50aWwgdGhlIHRoZSBzY3JpcHQgaXMgZXZhbHVhdGVkIGFuZCByZXN1bHRzIGFyZSBzZW50IGJhY2sgYnkgdGhlIHNlcnZlci4KLTw0PiBWZXJpZnkgdGhlIHJlc3VsdC4KLTw1PiBTdWJtaXQgdGhlIHNhbWUgc2NyaXB0IHRvIHRoZSBzZXJ2ZXIgYnV0IGRvbid0IGJsb2NrLgotPDY+IFdhaXQgdW50aWwgcmVxdWVzdCBpcyB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgYW5kIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLgotPDc+IFJlYWQgYSBzaW5nbGUgcmVzdWx0IG9mZiB0aGUgcmVzdWx0IHN0cmVhbS4KLTw4PiBBZ2FpbiwgdmVyaWZ5IHRoZSByZXN1bHQuCi08OT4gVmVyaWZ5IHRoYXQgdGhlIGFsbCByZXN1bHRzIGhhdmUgYmVlbiByZWFkIGFuZCBzdHJlYW0gaXMgY2xvc2VkLgotPDEwPiBDbG9zZSBjbGllbnQgYW5kIHVuZGVybHlpbmcgcG9vbCBjb25uZWN0aW9ucy4KLQotPT09PSBDb25maWd1cmF0aW9uCi0KLVRoZSBmb2xsb3dpbmcgdGFibGUgZGVzY3JpYmVzIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEdyZW1saW4tUHl0aG9uIERyaXZlci4gVGhleQotY2FuIGJlIHBhc3NlZCB0byB0aGUgYENsaWVudGAgaW5zdGFuY2UgYXMga2V5d29yZCBhcmd1bWVudHM6Ci0KLVt3aWR0aD0iMTAwJSIsY29scz0iMywxMCxeMiIsb3B0aW9ucz0iaGVhZGVyIl0KLXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXxLZXkgfERlc2NyaXB0aW9uIHxEZWZhdWx0Ci18cHJvdG9jb2xfZmFjdG9yeSB8QSBjYWxsYWJsZSB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYEFic3RyYWN0QmFzZVByb3RvY29sYC4gfGBncmVtbGluX3B5dGhvbi5kcml2ZXIucHJvdG9jb2wuR3JlbWxpblNlcnZlcldTUHJvdG9jb2xgCi18dHJhbnNwb3J0X2ZhY3RvcnkgfEEgY2FsbGFibGUgdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGBBYnN0cmFjdEJhc2VUcmFuc3BvcnRgLiB8YGdyZW1saW5fcHl0aG9uLmRyaXZlci50b3JuYWRvLnRyYW5zcG9ydC5Ub3JuYWRvVHJhbnNwb3J0YAotfHBvb2xfc2l6ZSB8VGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyB1c2VkIGJ5IHRoZSBwb29sLiB8NAotfG1heF93b3JrZXJzIHxNYXhpbXVtIG51bWJlciBvZiB3b3JrZXIgdGhyZWFkcy4gfE51bWJlciBvZiBDUFVzICogNQotfG1lc3NhZ2Vfc2VyaWFsaXplciB8VGhlIG1lc3NhZ2Ugc2VyaWFsaXplciBpbXBsZW1lbnRhdGlvbi58YGdyZW1saW5fcHl0aG9uLmRyaXZlci5zZXJpYWxpemVyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJgCi18cGFzc3dvcmQgfFRoZSBwYXNzd29yZCB0byBzdWJtaXQgb24gcmVxdWVzdHMgdGhhdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLiB8IiIKLXx1c2VybmFtZSB8VGhlIHVzZXJuYW1lIHRvIHN1Ym1pdCBvbiByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgYXV0aGVudGljYXRpb24uIHwiIgotfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCiA9PT0gQ29ubmVjdGluZyB2aWEgSFRUUAogCiBpbWFnZTpncmVtbGluLXJleHN0ZXIucG5nW3dpZHRoPTIyNSxmbG9hdD1sZWZ0XSBXaGlsZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgR3JlbWxpbiBTZXJ2ZXIgaXMgdG8gcHJvdmlkZSBhCkBAIC05MzYsMTEgKzgwMiwxNSBAQAogd2l0aCBHcmVtbGluIFNlcnZlci4gICBJdCBhbHNvIG1heSByZXByZXNlbnQgYW4gZWFzaWVyIHVwZ3JhZGUgcGF0aCBmcm9tIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL3RpbmtlcnBvcC9yZXhzdGVyW1JleHN0ZXJdCiBhcyB0aGUgQVBJIGZvciB0aGUgZW5kcG9pbnQgaXMgdmVyeSBzaW1pbGFyIHRvIFJleHN0ZXIncyBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS90aW5rZXJwb3AvcmV4c3Rlci93aWtpL0dyZW1saW4tRXh0ZW5zaW9uW0dyZW1saW4gRXh0ZW5zaW9uXS4KIAorSU1QT1JUQU5UOiBUaW5rZXJQb3AgcHJvdmlkZXMgYW5kIHN1cHBvcnRzIHRoaXMgSFRUUCBlbmRwb2ludCBhcyBhIGNvbnZlbmllbmNlIGFuZCBmb3IgbGVnYWN5IHJlYXNvbnMsIGJ1dCB1c2VycyBzaG91bGQKK3ByZWZlciB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggb2YgYnl0Y29kZSBiYXNlZCByZXF1ZXN0cyBhcyBkZXNjcmliZWQgaW4gPDxjb25uZWN0aW5nLWdyZW1saW4sQ29ubmVjdGluZyBHcmVtbGluPj4KK3NlY3Rpb24uCisKIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGZvciBhIHNpbmdsZSBIVFRQIGVuZHBvaW50IC0gYSBHcmVtbGluIGV2YWx1YXRvciAtIHdoaWNoIGFsbG93cyB0aGUgc3VibWlzc2lvbiBvZiBhIEdyZW1saW4KIHNjcmlwdCBhcyBhIHJlcXVlc3QuICBGb3IgZWFjaCByZXF1ZXN0LCBpdCByZXR1cm5zIGEgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCByZXN1bHRzIG9mIHRoYXQgc2NyaXB0LgogVG8gZW5hYmxlIHRoaXMgZW5kcG9pbnQsIEdyZW1saW4gU2VydmVyIG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgYEh0dHBDaGFubmVsaXplcmAsIHdoaWNoIHJlcGxhY2VzIHRoZSBkZWZhdWx0LgotVGhlIGBXc0FuZEh0dHBDaGFubmVsaXplcmAgbWF5IGFsc28gYmUgY29uZmlndXJlZCB0byBlbmFibGUgYm90aCBXZWJTb2NrZXRzIGFuZCB0aGUgUkVTVCBlbmRwb2ludC4KLWBXZWJTb2NrZXRDaGFubmVsaXplcmAsIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGU6CitUaGUgYFdzQW5kSHR0cENoYW5uZWxpemVyYCBtYXkgYWxzbyBiZSBjb25maWd1cmVkIHRvIGVuYWJsZSBib3RoIFdlYlNvY2tldHMgYW5kIHRoZSBSRVNUIGVuZHBvaW50IGluIHRoZSBjb25maWd1cmF0aW9uCitmaWxlOgogCiBbc291cmNlLHlhbWxdCiBjaGFubmVsaXplcjogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5IdHRwQ2hhbm5lbGl6ZXIKQEAgLTEwMTIsMTIyICs4ODIsMTIgQEAKIHF1aXRlIHBvc3NpYmxlIHRoYXQgc3VjaCBhIHNjcmlwdCB3aWxsIGdlbmVyYXRlIGBPdXRPZk1lbW9yeUVycm9yYCBleGNlcHRpb25zIG9uIHRoZSBzZXJ2ZXIuICBDb25zaWRlciB0aGUgZGVmYXVsdAogV2ViU29ja2V0IGNvbmZpZ3VyYXRpb24sIHdoaWNoIHN1cHBvcnRzIHN0cmVhbWluZywgaWYgdGhhdCB0eXBlIG9mIHVzZSBjYXNlIGlzIHJlcXVpcmVkLgogCi1bW2Nvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoXV0KLT09PSBDb25uZWN0aW5nIHZpYSB3aXRoUmVtb3RlCi0KLVtzb3VyY2UseG1sXQotLS0tLQotPGRlcGVuZGVuY3k+Ci0gICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgIDxhcnRpZmFjdElkPmdyZW1saW4tZHJpdmVyPC9hcnRpZmFjdElkPgotICAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Ci08L2RlcGVuZGVuY3k+Ci0tLS0tCi0KLWltYWdlOnJlbW90ZS1ncmFwaC5wbmdbd2lkdGg9MTQ1LGZsb2F0PWxlZnRdIEEgYFRyYXZlcnNhbFNvdXJjZWAgY2FuIGJlIGNvbmZpZ3VyZWQgZm9yICJyZW1vdGUiIGV4ZWN1dGlvbiB3aGljaAotcHJvdmlkZXMgYW4gaW50ZXJlc3RpbmcgYWx0ZXJuYXRpdmUgdG8gdGhlIG90aGVyIG1ldGhvZHMgZm9yIGNvbm5lY3RpbmcgdG8gR3JlbWxpbiBTZXJ2ZXIuIEl0IGlzIGludGVyZXN0aW5nIGluIHRoYXQKLWFsbCBvdGhlciBtZXRob2RzIGludm9sdmUgY29uc3RydWN0aW9uIG9mIGEgYFN0cmluZ2AgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBUcmF2ZXJzYWxgIHdoaWNoIGlzIHRoZW4gc3VibWl0dGVkIGFzIGEKLXNjcmlwdCB0byBHcmVtbGluIFNlcnZlciAodmlhIGRyaXZlciBvciBIVFRQKS4gVGhpcyBhcHByb2FjaCBpcyBxdWl0ZSBha2luIHRvIFNRTCwgd2hlcmUgcXVlcnkgc3RyaW5ncyBhcmUgZW1iZWRkZWQKLWludG8gY29kZSBhbmQgc3VibWl0dGVkIHRvIGEgZGF0YWJhc2Ugc2VydmVyLiBXaGlsZSB0aGVyZSBhcmUgcGF0dGVybnMgZm9yIHRha2luZyB0aGlzIGFwcHJvYWNoIHRoYXQgY2FuIGxlYWQgdG8KLW1haW50YWluYWJsZSBhcHBsaWNhdGlvbiBjb2RlLCB1c2luZyBhICJyZW1vdGUiIHRyYXZlcnNhbCBjb3VsZCBiZSBhIGJldHRlciBtZXRob2QgYXMgaXQgYnJpbmdzIHNvbWUgZ29vZCBiZW5lZml0cwotd2l0aCBpdDoKLQotKiBHZXQgYXV0by1jb21wbGV0ZSB3aGVuIHdyaXRpbmcgdHJhdmVyc2FscyBpbiBhbiBJREUuCi0qIEdldCBjb21waWxlLXRpbWUgZXJyb3JzIGluIHRyYXZlcnNhbCB3cml0aW5nLgotKiBHZXQgdGhlIGZlZWwgb2Ygd29ya2luZyB3aXRoIGFuIGVtYmVkZGVkIGRhdGFiYXNlLgotCi1PbmUgd2F5IHRvIGNyZWF0ZSBhIGBUcmF2ZXJzYWxgIGluc3RhbmNlIHRoYXQgaXMgcmVtb3RlLWVuYWJsZWQgaXMgYnkgY29uZmlndXJhdGlvbiBmaWxlLiBIZXJlIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdAotdGhhdCBmaWxlIGxvb2tzIGxpa2U6Ci0KLVtzb3VyY2UscHJvcGVydGllc10KLS0tLS0KLWdyZW1saW4ucmVtb3RlLnJlbW90ZUNvbm5lY3Rpb25DbGFzcz1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbgotZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLmNsdXN0ZXJGaWxlPWNvbmYvcmVtb3RlLW9iamVjdHMueWFtbAotZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLnNvdXJjZU5hbWU9ZwotLS0tLQotCi1UaGUgYGdyZW1saW4ucmVtb3RlLnJlbW90ZUNvbm5lY3Rpb25DbGFzc2Agc2hvdWxkIGJlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgUmVtb3RlQ29ubmVjdGlvbmAgaW50ZXJmYWNlIGluCi1gZ3JlbWxpbi1jb3JlYC4gSW4gdGhpcyBjYXNlLCBpdCBwb2ludHMgYXQgdGhlIGBncmVtbGluLWRyaXZlcmAgaW1wbGVtZW50YXRpb24sIGNhbGxlZCBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAuIFRoZQotb3RoZXIgc2V0dGluZywgYGdyZW1saW4ucmVtb3RlLmRyaXZlci5jbHVzdGVyRmlsZWAsIGlzIGEgY29uZmlndXJhdGlvbiB0byBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAsIGFuZCBpdAotcHJvdmlkZXMgYSBwb2ludGVyIHRvIHRoZSBjb25maWcgZmlsZSB0byB1c2UgdG8gY29uc3RydWN0IGEgYGdyZW1saW4tZHJpdmVyYCBgQ2x1c3RlcmAgb2JqZWN0IHRvIGJlIHV0aWxpemVkIHdoZW4KLWNvbm5lY3RpbmcgdG8gR3JlbWxpbiBTZXJ2ZXIuIFBsZWFzZSBzZWUgdGhlIDw8Y29ubmVjdGluZy12aWEtamF2YSwgIkNvbm5lY3RpbmcgVmlhIEphdmEiPj4gc2VjdGlvbiBmb3IgbW9yZQotaW5mb3JtYXRpb24gb24gdGhvc2UgY2xhc3NlcyBhbmQgdGhlaXIgdXNhZ2UuIEZpbmFsbHksIHRoZSBgZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLnNvdXJjZU5hbWVgIHNldHRpbmcgdGVsbHMgdGhlCi1gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgdGhlIG5hbWUgb2YgdGhlIGBUcmF2ZXJzYWxTb3VyY2VgIGluIEdyZW1saW4gU2VydmVyIHRvIGNvbm5lY3QgdG8uCi0KLUdyZW1saW4gU2VydmVyIG5lZWRzIHRvIGJlIHJ1bm5pbmcgZm9yIHRoaXMgZXhhbXBsZSB0byB3b3JrLiBVc2UgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uOgotCi1bc291cmNlLGJvdXJuZV0KLSQgYmluL2dyZW1saW4tc2VydmVyLnNoIGNvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLnlhbWwKLQotVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBjb25maWd1cmUgYSAicmVtb3RlIiB0cmF2ZXJzYWwsIGJ1dCB0aGUgbW9zdCBkaXJlY3Qgd2F5IGlzIHRvIHVzZSB0aGUgaGVscGVyIG1ldGhvZHMgb24KLWBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2VgLiBUaGVzZSBtZXRob2RzIGNhbiBiZSBzdGF0aWNhbGx5IGltcG9ydGVkOgotCi1bc291cmNlLGphdmFdCi1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKLQotdG8gYWxsb3cgZm9yIHN5bnRheCBhcyBmb2xsb3dzOgotCi1bZ3JlbWxpbi1ncm9vdnldCi0tLS0tCi1nID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgnY29uZi9yZW1vdGUtZ3JhcGgucHJvcGVydGllcycpCi1nLlYoKS52YWx1ZU1hcCh0cnVlKQotZy5jbG9zZSgpCi0tLS0tCi0KLU5vdGUgdGhlIGNhbGwgdG8gYGNsb3NlKClgIGFib3ZlLiBUaGUgY29uc3RydWN0aW9uIG9mICJnIiB1c2luZyB0aGUgcHJvcGVydGllcyBmaWxlIGludGVybmFsbHkgaW5zdGFudGlhdGVzIGEKLWBDbGllbnRgIGluc3RhbmNlIHRoYXQgY2FuIG9ubHkgYmUgcmVsZWFzZWQgYnkgImNsb3NpbmciIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBJdCBpcyBpbXBvcnRhbnQgdG8gdGFrZSB0aGF0Ci1zdGVwIHRvIHJlbGVhc2UgcmVzb3VyY2VzIGNyZWF0ZWQgaW4gdGhhdCBzdGVwLgotCi1JZiB3b3JraW5nIHdpdGggbXVsdGlwbGUgcmVtb3RlIGBUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlcyBpdCBpcyBtb3JlIGVmZmljaWVudCB0byBjb25zdHJ1Y3QgYSBgQ2xpZW50YCBvYmplY3QgYW5kCi10aGVuIHJlLXVzZSBpdC4KLQotW2dyZW1saW4tZ3Jvb3Z5XQotLS0tLQotY2x1c3RlciA9IENsdXN0ZXIub3BlbignY29uZi9yZW1vdGUtb2JqZWN0cy55YW1sJykKLWNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpCi1nID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShEcml2ZXJSZW1vdGVDb25uZWN0aW9uLnVzaW5nKGNsaWVudCwgImciKSkKLWcuVigpLnZhbHVlTWFwKHRydWUpCi1nLmNsb3NlKCkKLWNsdXN0ZXIuY2xvc2UoKQotLS0tLQotCi1JZiB0aGUgYENsaWVudGAgaW5zdGFuY2UgaXMgc3VwcGxpZWQgZXh0ZXJuYWxseSwgYXMgaXMgc2hvd24gYWJvdmUsIHRoZW4gaXQgaXMgbm90IGNsb3NlZCBpbXBsaWNpdGx5IGJ5IHRoZSBjbG9zZSBvZgotImciLiAgSW4gdGhpcyBjYXNlLCB0aGUgYENsaWVudGAgYW5kIGBDbHVzdGVyYCBtdXN0IGJvdGggYmUgY2xvc2VkIGV4cGxpY2l0bHkuIENsb3NpbmcgImciIGFuZCB0aGUgImNsdXN0ZXIiIGFyZW4nCi10IGFjdHVhbGx5IGJvdGggbmVjZXNzYXJ5IC0gdGhlIGNsb3NlIG9mIGEgYENsdXN0ZXJgIHdpbGwgY2xvc2UgYWxsIGBDbGllbnRgIGluc3RhbmNlIHNwYXduZWQgYnkgdGhlIGBDbHVzdGVyYC4KLQotSU1QT1JUQU5UOiBUcmF2ZXJzYWxzIHNwYXduZWQgZnJvbSBgd2l0aFJlbW90ZSgpYCB1c2UgdGhlIGBUcmF2ZXJzYWxPcFByb2Nlc3NvcmAgaW4gR3JlbWxpbiBTZXJ2ZXIgd2hpY2ggcmVxdWlyZXMgYQotY2FjaGUgdG8gZW5hYmxlIHRoZSByZXRyaWV2YWwgb2Ygc2lkZS1lZmZlY3RzIChpZiB0aGUgYFRyYXZlcnNhbGAgcHJvZHVjZXMgYW55KS4gVGhhdCBjYWNoZSBjYW4gYmUgY29uZmlndXJlZCAoZS5nLgotY29udHJvbGxpbmcgZXZpY3Rpb24gdGltZXMgYW5kIHNpemluZykgY2FuIGJlIGRvbmUgaW4gdGhlIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyYXRpb24gZmlsZSBhcyBkZXNjcmliZWQKLTw8dHJhdmVyc2Fsb3Bwcm9jZXNzb3IsIGhlcmU+Pi4gSWYgc2lkZS1lZmZlY3RzIGFyZSBuZXZlciByZXRyaWV2ZWQsIGl0IGlzIGFjY2VwdGFibGUgdG8gc2V0IHRoZSBgY2FjaGVNYXhTaXplYCB0bwotemVybyB0byBjb21wbGV0ZWx5IGRpc2FibGUgdGhlIGNhY2hlLgotCi1GaW5hbGx5LCBHcmVtbGluIGBCeXRlY29kZWAgc3VwcG9ydHMgdGhlIGVuY29kaW5nIG9mIGJpbmRpbmdzIHdoaWNoIGFsbG93IEdyZW1saW5TZXJ2ZXIgdG8gY2FjaGUgdHJhdmVyc2FscyB0aGF0IHdpbGwKLWJlIHJldXNlZCBvdmVyIGFuZCBvdmVyIGFnYWluIHNhdmUgdGhhdCBzb21lIHBhcmFtZXRlcml6YXRpb24gbWF5IGNoYW5nZS4gVGh1cywgaW5zdGVhZCBvZiB0cmFuc2xhdGluZywgY29tcGlsaW5nLCBhbmQKLXRoZW4gZXhlY3V0aW5nIGVhY2ggc3VibWl0dGVkIGJ5dGVjb2RlLCBpdCBpcyBwb3NzaWJsZSB0byBzaW1wbHkgZXhlY3V0ZS4gVG8gZXhwcmVzcyBiaW5kaW5ncyBpbiBHcmVtbGluLUphdmEgYW5kCi1HcmVtbGluLUdyb292eSwgdXNlIGBCaW5kaW5nc2AuCi0KLVtncmVtbGluLWdyb292eV0KLS0tLS0KLWNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oJ2NvbmYvcmVtb3RlLW9iamVjdHMueWFtbCcpCi1jbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKQotYiA9IEJpbmRpbmdzLmluc3RhbmNlKCkKLWcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoY2xpZW50LCAiZyIpKQotZy5WKGIub2YoJ2lkJywxKSkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykKLWcuVihiLm9mKCdpZCcsNCkpLm91dCgnY3JlYXRlZCcpLnZhbHVlcygnbmFtZScpCi1nLlYoYi5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKS5nZXRCeXRlY29kZSgpCi1nLlYoYi5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKS5nZXRCeXRlY29kZSgpLmdldEJpbmRpbmdzKCkKLWNsdXN0ZXIuY2xvc2UoKQotLS0tLQotCi1Cb3RoIHRyYXZlcnNhbHMgYXJlIGFic3RyYWN0bHkgZGVmaW5lZCBhcyBgZy5WKGlkKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKWAgYW5kIHRodXMsIHRoZSBmaXJzdCBzdWJtaXNzaW9uCi1jYW4gYmUgY2FjaGVkIGZvciBmYXN0ZXIgZXZhbHVhdGlvbiBvbiB0aGUgbmV4dCBzdWJtaXNzaW9uLgotCiA9PT0gQ29uZmlndXJpbmcKIAogVGhlIGBncmVtbGluLXNlcnZlci5zaGAgZmlsZSBzZXJ2ZXMgbXVsdGlwbGUgcHVycG9zZXMuICBJdCBjYW4gYmUgdXNlZCB0byAiaW5zdGFsbCIgZGVwZW5kZW5jaWVzIHRvIHRoZSBHcmVtbGluCiBTZXJ2ZXIgcGF0aC4gIEZvciBleGFtcGxlLCB0byBiZSBhYmxlIHRvIGNvbmZpZ3VyZSBhbmQgdXNlIG90aGVyIGBHcmFwaGAgaW1wbGVtZW50YXRpb25zLCB0aGUgZGVwZW5kZW5jaWVzIG11c3QgYmUKLW1hZGUgYXZhaWxhYmxlIHRvIEdyZW1saW4gU2VydmVyLiAgVG8gZG8gdGhpcywgdXNlIHRoZSBgaW5zdGFsbGAgc3dpdGNoIGFuZCBzdXBwbHkgdGhlIE1hdmVuIGNvb3JkaW5hdGVzIGZvciB0aGUgZGVwZW5kZW5jeQotdG8gImluc3RhbGwiLiAgRm9yIGV4YW1wbGUsIHRvIHVzZSBOZW80aiBpbiBHcmVtbGluIFNlcnZlcjoKK21hZGUgYXZhaWxhYmxlIHRvIEdyZW1saW4gU2VydmVyLiAgVG8gZG8gdGhpcywgdXNlIHRoZSBgaW5zdGFsbGAgc3dpdGNoIGFuZCBzdXBwbHkgdGhlIE1hdmVuIGNvb3JkaW5hdGVzIGZvciB0aGUKK2RlcGVuZGVuY3kgdG8gImluc3RhbGwiLiAgRm9yIGV4YW1wbGUsIHRvIHVzZSBOZW80aiBpbiBHcmVtbGluIFNlcnZlcjoKIAogW3NvdXJjZSx0ZXh0XQogLS0tLQpAQCAtMTE2OCwxNSArOTI4LDE2IEBACiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIEFzIG1lbnRpb25lZCBlYXJsaWVyLCBHcmVtbGluIFNlcnZlciBpcyBjb25maWd1cmVkIHRob3VnaCBhIFlBTUwgZmlsZS4gIEJ5IGRlZmF1bHQsIEdyZW1saW4gU2VydmVyIHdpbGwgbG9vayBmb3IgYQotZmlsZSBjYWxsZWQgYGNvbmYvZ3JlbWxpbi1zZXJ2ZXIueWFtbGAgdG8gY29uZmlndXJlIGl0c2VsZiBvbiBzdGFydHVwLiAgVG8gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0LCBzZXQgR1JFTUxJTl9ZQU1MIGluIGBiaW4vZ2VtbGluLXNlcnZlci5jb25mYCBvciBzdXBwbHkgdGhlIGZpbGUKLXRvIHVzZSB0byBgYmluL2dyZW1saW4tc2VydmVyLnNoYCBhcyBpbjoKK2ZpbGUgY2FsbGVkIGBjb25mL2dyZW1saW4tc2VydmVyLnlhbWxgIHRvIGNvbmZpZ3VyZSBpdHNlbGYgb24gc3RhcnR1cC4gIFRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgc2V0IEdSRU1MSU5fWUFNTCBpbgorYGJpbi9nZW1saW4tc2VydmVyLmNvbmZgIG9yIHN1cHBseSB0aGUgZmlsZSB0byB1c2UgdG8gYGJpbi9ncmVtbGluLXNlcnZlci5zaGAgYXMgaW46CiAKIFtzb3VyY2UsdGV4dF0KIC0tLS0KIGJpbi9ncmVtbGluLXNlcnZlci5zaCBjb25mL2dyZW1saW4tc2VydmVyLW1pbi55YW1sCiAtLS0tCiAKLVdBUk5JTkc6IE9uIFdpbmRvd3MsIGdyZW1saW4tc2VydmVyLmJhdCB3aWxsIGFsd2F5cyBzdGFydCBpbiB0aGUgZm9yZWdyb3VuZC4gV2hlbiBubyBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsIGl0IHdpbGwgc3RhcnQgd2l0aCB0aGUgZGVmYXVsdCBgY29uZi9ncmVtbGluLXNlcnZlci55YW1sYCBmaWxlLgorV0FSTklORzogT24gV2luZG93cywgZ3JlbWxpbi1zZXJ2ZXIuYmF0IHdpbGwgYWx3YXlzIHN0YXJ0IGluIHRoZSBmb3JlZ3JvdW5kLiBXaGVuIG5vIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgaXQgd2lsbAorc3RhcnQgd2l0aCB0aGUgZGVmYXVsdCBgY29uZi9ncmVtbGluLXNlcnZlci55YW1sYCBmaWxlLgogCiBUaGUgZm9sbG93aW5nIHRhYmxlIGRlc2NyaWJlcyB0aGUgdmFyaW91cyBZQU1MIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IEdyZW1saW4gU2VydmVyIGV4cGVjdHM6CiAKQEAgLTEyMDUsMTEgKzk2NiwxMSBAQAogfG1ldHJpY3MuY3N2UmVwb3J0ZXIuZmlsZU5hbWUgfFRoZSBmaWxlIHRvIHdyaXRlIG1ldHJpY3MgdG8uIHxfbm9uZV8KIHxtZXRyaWNzLmNzdlJlcG9ydGVyLmludGVydmFsIHxUaW1lIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHJlcG9ydHMgb2YgbWV0cmljcyB0byBmaWxlLiB8MTgwMDAwCiB8bWV0cmljcy5nYW5nbGlhUmVwb3J0ZXIuYWRkcmVzc2luZ01vZGUgfFNldCB0byBgTVVMVElDQVNUYCBvciBgVU5JQ0FTVGAuIHxfbm9uZV8KLXxtZXRyaWNzLmdhbmdsaWFSZXBvcnRlci5lbmFibGVkIHxUdXJucyBvbiBHYW5nbGlhIHJlcG9ydGluZyBvZiBtZXRyaWNzLiBBZGRpdGlvbmFsIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy4wL3JlZmVyZW5jZS8jbWV0cmljc1tzZXR1cF0gaXMgcmVxdWlyZWQuIHxmYWxzZQorfG1ldHJpY3MuZ2FuZ2xpYVJlcG9ydGVyLmVuYWJsZWQgfFR1cm5zIG9uIEdhbmdsaWEgcmVwb3J0aW5nIG9mIG1ldHJpY3MuIEFkZGl0aW9uYWwgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNtZXRyaWNzW3NldHVwXSBpcyByZXF1aXJlZC4gfGZhbHNlCiB8bWV0cmljcy5nYW5nbGlhUmVwb3J0ZXIuaG9zdCB8RGVmaW5lIHRoZSBHYW5nbGlhIGhvc3QgdG8gcmVwb3J0IE1ldHJpY3MgdG8uIHxsb2NhbGhvc3QKIHxtZXRyaWNzLmdhbmdsaWFSZXBvcnRlci5pbnRlcnZhbCB8VGltZSBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiByZXBvcnRzIG9mIG1ldHJpY3MgZm9yIEdhbmdsaWEuIHwxODAwMDAKIHxtZXRyaWNzLmdhbmdsaWFSZXBvcnRlci5wb3J0IHxEZWZpbmUgdGhlIEdhbmdsaWEgcG9ydCB0byByZXBvcnQgTWV0cmljcyB0by4gfDg2NDkKLXxtZXRyaWNzLmdyYXBoaXRlUmVwb3J0ZXIuZW5hYmxlZCB8VHVybnMgb24gR3JhcGhpdGUgcmVwb3J0aW5nIG9mIG1ldHJpY3MuIEFkZGl0aW9uYWwgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjAvcmVmZXJlbmNlLyNtZXRyaWNzW3NldHVwXSBpcyByZXF1aXJlZC4gfGZhbHNlCit8bWV0cmljcy5ncmFwaGl0ZVJlcG9ydGVyLmVuYWJsZWQgfFR1cm5zIG9uIEdyYXBoaXRlIHJlcG9ydGluZyBvZiBtZXRyaWNzLiBBZGRpdGlvbmFsIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jbWV0cmljc1tzZXR1cF0gaXMgcmVxdWlyZWQuIHxmYWxzZQogfG1ldHJpY3MuZ3JhcGhpdGVSZXBvcnRlci5ob3N0IHxEZWZpbmUgdGhlIEdyYXBoaXRlIGhvc3QgdG8gcmVwb3J0IE1ldHJpY3MgdG8uIHxsb2NhbGhvc3QKIHxtZXRyaWNzLmdyYXBoaXRlUmVwb3J0ZXIuaW50ZXJ2YWwgfFRpbWUgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gcmVwb3J0cyBvZiBtZXRyaWNzIGZvciBHcmFwaGl0ZS4gfDE4MDAwMAogfG1ldHJpY3MuZ3JhcGhpdGVSZXBvcnRlci5wb3J0IHxEZWZpbmUgdGhlIEdyYXBoaXRlIHBvcnQgdG8gcmVwb3J0IE1ldHJpY3MgdG8uIHwyMDAzCkBAIC0xMjk0LDcgKzEwNTUsNyBAQAogW1t0cmF2ZXJzYWxvcHByb2Nlc3Nvcl1dCiA9PT09PSBUcmF2ZXJzYWxPcFByb2Nlc3NvcgogCi1UaGUgYFRyYXZlcnNhbE9wUHJvY2Vzc29yYCBwcm92aWRlcyBhIHdheSB0byBhY2NlcHQgdHJhdmVyc2FscyBjb25maWd1cmVkIHZpYSA8PGNvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoLHdpdGhSZW1vdGUoKT4+LgorVGhlIGBUcmF2ZXJzYWxPcFByb2Nlc3NvcmAgcHJvdmlkZXMgYSB3YXkgdG8gYWNjZXB0IHRyYXZlcnNhbHMgY29uZmlndXJlZCB2aWEgPDxjb25uZWN0aW5nLXZpYS1kcml2ZXJzLHdpdGhSZW1vdGUoKT4+LgogCiBbd2lkdGg9IjEwMCUiLGNvbHM9IjMsMTAsXjIiLG9wdGlvbnM9ImhlYWRlciJdCiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMzAzLDE1ICsxMDY0LDE4IEBACiB8Y2FjaGVNYXhTaXplIHxUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgc2lkZS1lZmZlY3QgY2FjaGUuIHwxMDAwCiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKK0lmIHRoZXJlIGlzIG5vIGludGVudGlvbiB0byBnYXRoZXIgc2lkZS1lZmZlY3RzIGZyb20gdHJhdmVyc2FscywgdGhlIGBjYWNoZU1heFNpemVgIGNhbiBiZSBzZXQgdG8gemVybyB0byBkaXNhYmxlIHRoZQorY2FjaGUuCisKIFtbc2VjdXJpdHldXQogPT09PSBTZWN1cml0eQogCiBpbWFnZTpncmVtbGluLXNlcnZlci1zZWN1cmUucG5nW3dpZHRoPTE3NSxmbG9hdD1yaWdodF0gR3JlbWxpbiBTZXJ2ZXIgcHJvdmlkZXMgZm9yIHNldmVyYWwgZmVhdHVyZXMgdGhhdCBhaWQgaW4gdGhlCi1zZWN1cml0eSBvZiB0aGUgZ3JhcGhzIHRoYXQgaXQgZXhwb3Nlcy4gIEluIHBhcnRpY3VsYXIgaXQgc3VwcG9ydHMgU1NMIGZvciB0cmFuc3BvcnQgbGF5ZXIgc2VjdXJpdHksIHByb3RlY3RpdmUgbWVhc3VyZXMgYWdhaW5zdAotbWFsaWNpb3VzIHNjcmlwdCBleGVjdXRpb24sIGFuZCBhdXRoZW50aWNhdGlvbi4gIFNTTCBvcHRpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGFibGUgaW4gdGhlCi08PGNvbm5lY3RpbmctdmlhLWphdmEsICJDb25uZWN0aW5nIHZpYSBKYXZhIj4+IHNlY3Rpb24uIFNjcmlwdCBleGVjdXRpb24gb3B0aW9ucyBhcmUgY292ZXJlZAotPDxzY3JpcHQtZXhlY3V0aW9uLCAiYXQgdGhlIGVuZCBvZiB0aGlzIHNlY3Rpb24iPj4uIFRoaXMgc2VjdGlvbiBzdGFydHMgd2l0aCBhdXRoZW50aWNhdGlvbi4KLQorc2VjdXJpdHkgb2YgdGhlIGdyYXBocyB0aGF0IGl0IGV4cG9zZXMuICBJbiBwYXJ0aWN1bGFyIGl0IHN1cHBvcnRzIFNTTCBmb3IgdHJhbnNwb3J0IGxheWVyIHNlY3VyaXR5LCBwcm90ZWN0aXZlCittZWFzdXJlcyBhZ2FpbnN0IG1hbGljaW91cyBzY3JpcHQgZXhlY3V0aW9uLCBhbmQgYXV0aGVudGljYXRpb24uICBDbGllbnQgU1NMIG9wdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUKKzw8Z3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzLCBHcmVtbGluIERyaXZlcnMgYW5kIFZhcmlhbnRzIj4+IHNlY3Rpb25zIHdpdGggdmFyeWluZyBjYXBhYmlsaXR5IGRlcGVuZGluZyBvbiB0aGUgZHJpdmVyCitjaG9zZW4uIFNjcmlwdCBleGVjdXRpb24gb3B0aW9ucyBhcmUgY292ZXJlZCA8PHNjcmlwdC1leGVjdXRpb24sICJhdCB0aGUgZW5kIG9mIHRoaXMgc2VjdGlvbiI+Pi4gVGhpcyBzZWN0aW9uCitzdGFydHMgd2l0aCBhdXRoZW50aWNhdGlvbi4KIAogR3JlbWxpbiBTZXJ2ZXIgc3VwcG9ydHMgYSBwbHVnZ2FibGUgYXV0aGVudGljYXRpb24gZnJhbWV3b3JrIHVzaW5nCiBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpbXBsZV9BdXRoZW50aWNhdGlvbl9hbmRfU2VjdXJpdHlfTGF5ZXJbU0FTTF0gKFNpbXBsZSBBdXRoZW50aWNhdGlvbiBhbmQKQEAgLTEzMjYsNiArMTA5MCw3IEBACiBHcmVtbGluLUNvbnNvbGUgfFBMQUlOIFNBU0wgKHVzZXJuYW1lL3Bhc3N3b3JkKSB8My4wLjAtaW5jdWJhdGluZwogfFBsdWdnYWJsZSBTQVNMIHwzLjAuMC1pbmN1YmF0aW5nCiB8R1NTQVBJIFNBU0wgKEtlcmJlcm9zKSB8My4zLjAKK3xHcmVtbGluLk5FVCB8UExBSU4gU0FTTCB8My4zLjAKIHxHcmVtbGluLVB5dGhvbiB8UExBSU4gU0FTTCB8My4yLjIKIHxHcmVtbGluLk5ldCB8UExBSU4gU0FTTCB8My4yLjcKIHxHcmVtbGluLUphdmFzY3JpcHQgfFBMQUlOIFNBU0wgfDMuMy4wCkBAIC0xMzMzLDggKzEwOTgsOCBAQAogCiBCeSBkZWZhdWx0LCBHcmVtbGluIFNlcnZlciBpcyBjb25maWd1cmVkIHRvIGFsbG93IGFsbCByZXF1ZXN0cyB0byBiZSBwcm9jZXNzZWQgKGkuZS4gbm8gYXV0aGVudGljYXRpb24pLiAgVG8gZW5hYmxlCiBhdXRoZW50aWNhdGlvbiwgR3JlbWxpbiBTZXJ2ZXIgbXVzdCBiZSBjb25maWd1cmVkIHdpdGggYW4gYEF1dGhlbnRpY2F0b3JgIGltcGxlbWVudGF0aW9uIGluIGl0cyBZQU1MIGZpbGUuICBHcmVtbGluCi1TZXJ2ZXIgY29tZXMgcGFja2FnZWQgd2l0aCB0d28gaW1wbGVtZW50YXRpb25zIGNhbGxlZCBgU2ltcGxlQXV0aGVudGljYXRvcmAgZm9yIHBsYWluIHRleHQgYXV0aGVudGljYXRpb24gdXNpbmcgSFRUUCBCQVNJQyBvcgotUExBSU4gU0FTTCBhbmQgYEtyYjVBdXRoZW50aWNhdG9yYCBmb3IgS2VyYmVyb3MgYXV0aGVudGljYXRpb24gdXNpbmcgR1NTQVBJIFNBU0wuCitTZXJ2ZXIgY29tZXMgcGFja2FnZWQgd2l0aCB0d28gaW1wbGVtZW50YXRpb25zIGNhbGxlZCBgU2ltcGxlQXV0aGVudGljYXRvcmAgZm9yIHBsYWluIHRleHQgYXV0aGVudGljYXRpb24gdXNpbmcgSFRUUAorQkFTSUMgb3IgUExBSU4gU0FTTCBhbmQgYEtyYjVBdXRoZW50aWNhdG9yYCBmb3IgS2VyYmVyb3MgYXV0aGVudGljYXRpb24gdXNpbmcgR1NTQVBJIFNBU0wuCiAKID09PT09IFBsYWluIHRleHQgYXV0aGVudGljYXRpb24KIApAQCAtMTQwOCw4ICsxMTczLDkgQEAKIFtJTkZPXSBHcmVtbGluU2VydmVyJDEgLSBDaGFubmVsIHN0YXJ0ZWQgYXQgcG9ydCA4MTgyLgogLS0tLQogCi1BcyBTU0wgaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGl0IG11c3QgYWxzbyBiZSBlbmFibGVkIG9uIHRoZSBjbGllbnQgd2hlbiBjb25uZWN0aW5nLiAgVG8gY29ubmVjdCB0bwotR3JlbWxpbiBTZXJ2ZXIgd2l0aCBgZ3JlbWxpbi1kcml2ZXJgLCBzZXQgdGhlIGBjcmVkZW50aWFsc2AsIGBlbmFibGVTc2xgLCBhbmQgYHRydXN0U3RvcmVgIHdoZW4gY29uc3RydWN0aW5nIHRoZSBgQ2x1c3RlcmAuCitXaGVuIFNTTCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIsIGl0IG11c3QgYWxzbyBiZSBlbmFibGVkIG9uIHRoZSBjbGllbnQgd2hlbiBjb25uZWN0aW5nLiAgVG8gY29ubmVjdCB0bworR3JlbWxpbiBTZXJ2ZXIgd2l0aCB0aGUgPDxncmVtbGluLWphdmEsYGdyZW1saW4tZHJpdmVyYD4+LCBzZXQgdGhlIGBjcmVkZW50aWFsc2AsIGBlbmFibGVTc2xgLCBhbmQgYHRydXN0U3RvcmVgCit3aGVuIGNvbnN0cnVjdGluZyB0aGUgYENsdXN0ZXJgLgogCiBbc291cmNlLGphdmFdCiBDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLmJ1aWxkKCkuY3JlZGVudGlhbHMoInN0ZXBoZW4iLCAicGFzc3dvcmQiKQpAQCAtMTQxNyw5ICsxMTgzLDExIEBACiAKIElmIGNvbm5lY3Rpbmcgd2l0aCBHcmVtbGluIENvbnNvbGUsIHdoaWNoIHV0aWxpemVzIGBncmVtbGluLWRyaXZlcmAgZm9yIHJlbW90ZSBzY3JpcHQgZXhlY3V0aW9uLCB1c2UgdGhlIHByb3ZpZGVkCiBgY29uZi9yZW1vdGUtc2VjdXJlLnlhbWxgIGZpbGUgd2hlbiBkZWZpbmluZyB0aGUgcmVtb3RlLiAgVGhhdCBmaWxlIGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB1c2VybmFtZSBhbmQKLXBhc3N3b3JkIGFzIHdlbGwgYXMgZW5hYmxlbWVudCBvZiBTU0wgZnJvbSB0aGUgY2xpZW50IHNpZGUuIEJlIHN1cmUgdG8gY29uZmlndXJlIHRoZSB0cnVzdFN0b3JlIGlmIHVzaW5nIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcy4KK3Bhc3N3b3JkIGFzIHdlbGwgYXMgZW5hYmxlbWVudCBvZiBTU0wgZnJvbSB0aGUgY2xpZW50IHNpZGUuIEJlIHN1cmUgdG8gY29uZmlndXJlIHRoZSB0cnVzdFN0b3JlIGlmIHVzaW5nIHNlbGYtc2lnbmVkCitjZXJ0aWZpY2F0ZXMuCiAKLVNpbWlsYXJseSwgR3JlbWxpbiBTZXJ2ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgZm9yIFJFU1QgYW5kIHNlY3VyaXR5LiBGb2xsb3cgdGhlIHN0ZXBzIGFib3ZlIGZvciBjb25maWd1cmluZyB0aGUgU1NMIGNlcnRpZmljYXRlLgorU2ltaWxhcmx5LCBHcmVtbGluIFNlcnZlciBjYW4gYmUgY29uZmlndXJlZCBmb3IgUkVTVCBhbmQgc2VjdXJpdHkuIEZvbGxvdyB0aGUgc3RlcHMgYWJvdmUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBTU0wKK2NlcnRpZmljYXRlLgogCiBbc291cmNlLHRleHRdCiAtLS0tCkBAIC0xNDc1LDcgKzEyNDMsNyBAQAogY3JlZGVudGlhbHMudXNlcigic3RlcGhlbiIsInBhc3N3b3JkIikKIGNyZWRlbnRpYWxzLnVzZXIoImRhbmllbCIsImJldHRlci1wYXNzd29yZCIpCiBjcmVkZW50aWFscy51c2VyKCJtYXJrbyIsInJhaW5ib3ctZGFzaCIpCi1jcmVkZW50aWFscy51c2VycygibWFya28iKS52YWx1ZU1hcCgpCitjcmVkZW50aWFscy51c2VycygibWFya28iKS5lbGVtZW50TWFwKCkKIGNyZWRlbnRpYWxzLnVzZXJzKCkuY291bnQoKQogY3JlZGVudGlhbHMudXNlcnMoImRhbmllbCIpLmRyb3AoKQogY3JlZGVudGlhbHMudXNlcnMoKS5jb3VudCgpCkBAIC0xNzAwLDcgKzE0NjgsNyBAQAogCiA9PT09IFNlcmlhbGl6YXRpb24KIAotR3JlbWxpbiBTZXJ2ZXIgY2FuIGFjY2VwdCByZXF1ZXN0cyBhbmQgcmV0dXJuIHJlc3VsdHMgdXNpbmcgZGlmZmVyZW50IHNlcmlhbGl6YXRpb24gZm9ybWF0cy4gIFNlcmlhbGl6ZXJzIGltcGxlbWVudCB0aGUKK0dyZW1saW4gU2VydmVyIGNhbiBhY2NlcHQgcmVxdWVzdHMgYW5kIHJldHVybiByZXN1bHRzIHVzaW5nIGRpZmZlcmVudCBzZXJpYWxpemF0aW9uIGZvcm1hdHMuIFNlcmlhbGl6ZXJzIGltcGxlbWVudCB0aGUKIGBNZXNzYWdlU2VyaWFsaXplcmAgaW50ZXJmYWNlLiBJbiBkb2luZyBzbywgdGhleSBleHByZXNzIHRoZSBsaXN0IG9mIG1pbWUgdHlwZXMgdGhleSBleHBlY3QgdG8gc3VwcG9ydC4gV2hlbgogY29uZmlndXJpbmcgbXVsdGlwbGUgc2VyaWFsaXplcnMgaXQgaXMgcG9zc2libGUgZm9yIHR3byBvciBtb3JlIHNlcmlhbGl6ZXJzIHRvIHN1cHBvcnQgdGhlIHNhbWUgbWltZSB0eXBlLiBTdWNoIGEKIHNpdHVhdGlvbiBtYXkgYmUgY29tbW9uIHdpdGggYSBnZW5lcmljIG1pbWUgdHlwZSBzdWNoIGFzIGBhcHBsaWNhdGlvbi9qc29uYC4gU2VyaWFsaXplcnMgYXJlIGFkZGVkIGluIHRoZSBvcmRlciB0aGF0CkBAIC0xNzEwLDE0ICsxNDc4LDE1IEBACiBUaGUgZm9ybWF0IG9mIHRoZSBzZXJpYWxpemF0aW9uIGlzIGNvbmZpZ3VyZWQgYnkgdGhlIGBzZXJpYWxpemVyc2Agc2V0dGluZyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlIGFib3ZlLiAgTm90ZSB0aGF0CiBzb21lIHNlcmlhbGl6ZXJzIGhhdmUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgZGVmaW5lZCBieSB0aGUgYHNlcmlhbGl6ZXJzW1hdLmNvbmZpZ2Agc2V0dGluZy4gIFRoZQogYGNvbmZpZ2Agc2V0dGluZyBpcyBhIGBNYXBgIHdoZXJlIHRoZSBrZXlzIGFuZCB2YWx1ZXMgZ2V0IHBhc3NlZCB0byB0aGUgc2VyaWFsaXplciBhdCBpdHMgaW5pdGlhbGl6YXRpb24uICBUaGUKLWF2YWlsYWJsZSBhbmQvb3IgZXhwZWN0ZWQga2V5cyBhcmUgZGVwZW5kZW50IG9uIHRoZSBzZXJpYWxpemVyIGJlaW5nIHVzZWQuICBHcmVtbGluIFNlcnZlciBjb21lcyBwYWNrYWdlZCB3aXRoIHR3bwotZGlmZmVyZW50IHNlcmlhbGl6ZXJzOiBHcmFwaFNPTiBhbmQgR3J5by4KK2F2YWlsYWJsZSBhbmQvb3IgZXhwZWN0ZWQga2V5cyBhcmUgZGVwZW5kZW50IG9uIHRoZSBzZXJpYWxpemVyIGJlaW5nIHVzZWQuICBHcmVtbGluIFNlcnZlciBjb21lcyBwYWNrYWdlZCB3aXRoIHRocmVlCitkaWZmZXJlbnQgc2VyaWFsaXplcnM6IEdyYXBoU09OLCBHcnlvLCBhbmQgR3JhcGhCaW5hcnkuCiAKID09PT09IEdyYXBoU09OCiAKIFRoZSBHcmFwaFNPTiBzZXJpYWxpemVyIHByb2R1Y2VzIGh1bWFuIHJlYWRhYmxlIG91dHB1dCBpbiBKU09OIGZvcm1hdCBhbmQgaXMgYSBnb29kIGNvbmZpZ3VyYXRpb24gY2hvaWNlIGZvciB0aG9zZQogdHJ5aW5nIHRvIHVzZSBUaW5rZXJQb3AgZnJvbSBub24tSlZNIGxhbmd1YWdlcy4gIEpTT04gb2J2aW91c2x5IGhhcyB3aWRlIHN1cHBvcnQgYWNyb3NzIHZpcnR1YWxseSBhbGwgbWFqb3IKLXByb2dyYW1taW5nIGxhbmd1YWdlcyBhbmQgY2FuIGJlIGNvbnN1bWVkIGJ5IGEgd2lkZSB2YXJpZXR5IG9mIHRvb2xzLgorcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGFuZCBjYW4gYmUgY29uc3VtZWQgYnkgYSB3aWRlIHZhcmlldHkgb2YgdG9vbHMuIFRoZSBmb3JtYXQgaXRzZWxmIGlzIGRlc2NyaWJlZCBpbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2lvLyNncmFwaHNvbltJTyBEb2N1bWVudGF0aW9uXS4KIAogW3NvdXJjZSx5YW1sXQogLS0tLQpAQCAtMTc1MSw3ICsxNTIwLDggQEAKID09PT09IEdyeW8KIAogVGhlIEdyeW8gc2VyaWFsaXplciB1dGlsaXplcyBLcnlvLWJhc2VkIHNlcmlhbGl6YXRpb24gd2hpY2ggcHJvZHVjZXMgYSBiaW5hcnkgb3V0cHV0LiAgVGhpcyBmb3JtYXQgaXMgYmVzdCBjb25zdW1lZAotYnkgSlZNLWJhc2VkIGxhbmd1YWdlcy4KK2J5IEpWTS1iYXNlZCBsYW5ndWFnZXMuIFRoZSBmb3JtYXQgaXRzZWxmIGlzIGRlc2NyaWJlZCBpbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2lvLyNncnlvW0lPIERvY3VtZW50YXRpb25dLgogCiBbc291cmNlLHlhbWxdCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCB9CkBAIC0xNzY4LDE2ICsxNTM4LDM4IEBACiB8c2VyaWFsaXplUmVzdWx0VG9TdHJpbmcgfFdoZW4gc2V0IHRvIGB0cnVlYCwgcmVzdWx0cyBhcmUgc2VyaWFsaXplZCBieSBmaXJzdCBjYWxsaW5nIGB0b1N0cmluZygpYCBvbiBlYWNoIG9iamVjdCBpbiB0aGUgcmVzdWx0IGxpc3QgcmVzdWx0aW5nIGluIGFuIGV4dGVuZGVkIE1JTUUgVHlwZSBvZiBgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjEuMCtncnlvLXN0cmluZ2RgLiAgV2hlbiBzZXQgdG8gYGZhbHNlYCBLcnlvLWJhc2VkIHNlcmlhbGl6YXRpb24gaXMgYXBwbGllZC4gfF9mYWxzZV8KIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQXMgZGVzY3JpYmVkIGFib3ZlLCB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyBpbiB3aGljaCB0byByZWdpc3RlciBzZXJpYWxpemVycyBmb3IgS3J5by1iYXNlZCBzZXJpYWxpemF0aW9uLiAgVGhlc2UKLWNvbmZpZ3VyYXRpb25zIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb25lIGFub3RoZXIgd2hlcmUgdGhlcmUgaXMgYSBzcGVjaWZpYyBvcmRlcmluZyB0byBob3cgdGhlIGNvbmZpZ3VyYXRpb25zCi1hcmUgYXBwbGllZC4gIFRoZSBgdXNlck1hcHBlckZyb21HcmFwaGAgc2V0dGluZyBpcyBhcHBsaWVkIGZpcnN0LCBmb2xsb3dlZCBieSBhbnkgYGlvUmVnaXN0cmllc2AgYW5kIGZpbmFsaXplZCBieSB0aGUKLWBjdXN0b21gIHNldHRpbmcuCitBcyBkZXNjcmliZWQgYWJvdmUsIHRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIGluIHdoaWNoIHRvIHJlZ2lzdGVyIHNlcmlhbGl6ZXJzIGZvciBLcnlvLWJhc2VkIHNlcmlhbGl6YXRpb24uICBOb3RlCit0aGF0IHRoZSBgaW9SZWdpc3RyaWVzYCBzZXR0aW5nIGlzIGFwcGxpZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IHRoZSBgY3VzdG9tYCBzZXR0aW5nLgogCiBUaG9zZSBjb25maWd1cmluZyBvciBpbXBsZW1lbnRpbmcgYSBgU3VwcGxpZXI8Q2xhc3NSZXNvbHZlcj5gIHNob3VsZCBjb25zaWRlciB0aGlzIGFuICJhZHZhbmNlZCIgb3B0aW9uIGFuZCB0eXBpY2FsbHkKIGltcG9ydGFudCB0byB1c2UgY2FzZXMgd2hlcmUgc2VydmVyIHR5cGVzIG5lZWQgdG8gYmUgY29lcmNlZCB0byBjbGllbnQgdHlwZXMgKGkuZS4gYSB0eXBlIGlzIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyCiBidXQgbm90IG9uIHRoZSBjbGllbnQpLiAgSW1wbGVtZW50YXRpb25zIHNob3VsZCB0eXBpY2FsbHkgaW5zdGFudGlhdGUgYENsYXNzUmVzb2x2ZXJgIGltcGxlbWVudGF0aW9ucyB0aGF0IGFyZQogZXh0ZW5zaW9ucyBvZiB0aGUgYEdyeW9DbGFzc1Jlc29sdmVyYCBhcyB0aGlzIGNsYXNzIGlzIGltcG9ydGFudCB0byBtb3N0IHNlcmlhbGl6YXRpb24gdGFza3MgaW4gVGlua2VyUG9wLgogCis9PT09PSBHcmFwaEJpbmFyeQorCitHcmFwaEJpbmFyeSBpcyBhIGJpbmFyeSBzZXJpYWxpemF0aW9uIGZvcm1hdCBzdWl0YWJsZSBmb3Igb2JqZWN0IHRyZWVzLCBkZXNpZ25lZCB0byByZWR1Y2Ugc2VyaWFsaXphdGlvbiBvdmVyaGVhZCBvbgorYm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLCBhcyB3ZWxsIGFzIGxpbWl0aW5nIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkIHRoYXQgaXMgdHJhbnNtaXR0ZWQgb3ZlciB0aGUgd2lyZS4gVGhlCitmb3JtYXQgaXRzZWxmIGlzIGRlc2NyaWJlZCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvaW8vI2dyYXBoYmluYXJ5W0lPIERvY3VtZW50YXRpb25dLgorCitJTVBPUlRBTlQ6IEdyYXBoQmluYXJ5IGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBvbiB0aGUgSlZNLgorCitbc291cmNlLHlhbWxdCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgfQorCitJdCBoYXMgdGhlIE1JTUUgdHlwZSBvZiBgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjBgIGFuZCB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKKworW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfEtleSB8RGVzY3JpcHRpb24gfERlZmF1bHQKK3xjdXN0b20gfEEgbGlzdCBvZiBjbGFzc2VzIHdpdGggY3VzdG9tIGtyeW8gYFNlcmlhbGl6ZXJgIGltcGxlbWVudGF0aW9ucyByZWxhdGVkIHRvIHRoZW0gaW4gdGhlIGZvcm0gb2YgYDxjbGFzcz47PHNlcmlhbGl6ZXItY2xhc3M+YC4gfF9ub25lXworfGlvUmVnaXN0cmllcyB8QSBsaXN0IG9mIGBJb1JlZ2lzdHJ5YCBpbXBsZW1lbnRhdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgc2VyaWFsaXplci4gfF9ub25lXworfGJ1aWxkZXIgfE5hbWUgb2YgdGhlIGBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LkJ1aWxkZXJgIGluc3RhbmNlIHRvIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeWAuIHxfbm9uZV8KK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgZGVzY3JpYmVkIGFib3ZlLCB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyBpbiB3aGljaCB0byByZWdpc3RlciBzZXJpYWxpemVycyBmb3IgR3JhcGhCaW5hcnktYmFzZWQgc2VyaWFsaXphdGlvbi4gTm90ZQordGhhdCB0aGUgYGlvUmVnaXN0cmllc2Agc2V0dGluZyBpcyBhcHBsaWVkIGZpcnN0LCBmb2xsb3dlZCBieSB0aGUgYGN1c3RvbWAgc2V0dGluZy4KKwogW1ttZXRyaWNzXV0KID09PT0gTWV0cmljcwogCkBAIC0xOTExLDE3ICsxNzAzLDIxIEBACiBwb3NzaWJsZSBleGlzdGVuY2Ugb2YgbXVsdGktcHJvcGVydGllcyBhbmQgbWV0YS1wcm9wZXJ0aWVzLiBXaGVuIHJldHVybmluZyBkYXRhIGZyb20gR3JlbWxpbiBTZXJ2ZXIgb25seSByZXR1cm4gdGhlCiBkYXRhIHRoYXQgaXMgcmVxdWlyZWQuIEZvciBleGFtcGxlLCBpZiBvbmx5IHR3byBwcm9wZXJ0aWVzIG9mIGEgYFZlcnRleGAgYXJlIG5lZWRlZCB0aGVuIHNpbXBseSByZXR1cm4gdGhlIHR3byByYXRoZXIKIHRoYW4gcmV0dXJuaW5nIHRoZSBlbnRpcmUgYFZlcnRleGAgb2JqZWN0IGl0c2VsZi4gRXZlbiB3aXRoIGFuIGVudGlyZSBgVmVydGV4YCwgaXQgaXMgdHlwaWNhbGx5IG11Y2ggZmFzdGVyIHRvIGlzc3VlCi10aGUgcXVlcnkgYXMgYGcuVigxKS52YWx1ZU1hcCh0cnVlKWAgdGhhbiBgZy5WKDEpYCwgYXMgdGhlIGZvcm1lciByZXR1cm5zIGEgYE1hcGAgb2YgdGhlIHNhbWUgZGF0YSBhcyBhIGBWZXJ0ZXhgLCBidXQKK3RoZSBxdWVyeSBhcyBgZy5WKDEpLmVsZW1lbnRNYXAoKWAgdGhhbiBgZy5WKDEpYCwgYXMgdGhlIGZvcm1lciByZXR1cm5zIGEgYE1hcGAgb2YgdGhlIHNhbWUgZGF0YSBhcyBhIGBWZXJ0ZXhgLCBidXQKIHdpdGhvdXQgYWxsIHRoZSBhc3NvY2lhdGVkIHN0cnVjdHVyZSB3aGljaCBjYW4gc2xvdyB0aGUgcmVzcG9uc2UuCiAKIFtbcGFyYW1ldGVyaXplZC1zY3JpcHRzXV0KID09PT0gUGFyYW1ldGVyaXplZCBTY3JpcHRzCiAKLWltYWdlOmdyZW1saW4tcGFyYW1ldGVyaXplZC5wbmdbd2lkdGg9MTUwLGZsb2F0PWxlZnRdIFVzZSBzY3JpcHQgcGFyYW1ldGVyaXphdGlvbi4gIFBlcmlvZC4gIEdyZW1saW4gU2VydmVyIGNhY2hlcwotYWxsIHNjcmlwdHMgdGhhdCBhcmUgcGFzc2VkIHRvIGl0LiAgVGhlIGNhY2hlIGlzIGtleWVkIGJhc2VkIG9uIHRoZSBhIGhhc2ggb2YgdGhlIHNjcmlwdC4gIFRoZXJlZm9yZSBgZy5WKDEpYCBhbmQKLWBnLlYoMilgIHdpbGwgYmUgcmVjb2duaXplZCBhcyB0d28gc2VwYXJhdGUgc2NyaXB0cyBpbiB0aGUgY2FjaGUuICBJZiB0aGF0IHNjcmlwdCBpcyBwYXJhbWV0ZXJpemVkIHRvIGBnLlYoeClgCi13aGVyZSBgeGAgaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyIGZyb20gdGhlIGNsaWVudCwgdGhlcmUgd2lsbCBiZSBubyBhZGRpdGlvbmFsIGNvbXBpbGF0aW9uIGNvc3QgZm9yIGZ1dHVyZSByZXF1ZXN0cwotb24gdGhhdCBzY3JpcHQuICBDb21waWxhdGlvbiBvZiBhIHNjcmlwdCBzaG91bGQgYmUgY29uc2lkZXJlZCAiZXhwZW5zaXZlIiBhbmQgYXZvaWRlZCB3aGVuIHBvc3NpYmxlLgoraW1hZ2U6Z3JlbWxpbi1wYXJhbWV0ZXJpemVkLnBuZ1t3aWR0aD0xNTAsZmxvYXQ9bGVmdF0gVXNlIHNjcmlwdCBwYXJhbWV0ZXJpemF0aW9uLiBQZXJpb2QuIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gZ29vZAorcmVhc29ucyBmb3IgZG9pbmcgc286IHNjcmlwdCBjYWNoaW5nIGFuZCBwcm90ZWN0aW9uIGZyb20gIkdyZW1saW4gaW5qZWN0aW9uIiAoY29uY2VwdHVhbGx5IHRoZSBzYW1lIGFzIHRoZSBub3Rpb24gb2YKK1NRTCBpbmplY3Rpb24pLgorCitXaXRoIHJlc3BlY3QgdG8gY2FjaGluZywgR3JlbWxpbiBTZXJ2ZXIgY2FjaGVzIGFsbCBzY3JpcHRzIHRoYXQgYXJlIHBhc3NlZCB0byBpdC4gIFRoZSBjYWNoZSBpcyBrZXllZCBiYXNlZCBvbiB0aGUgYQoraGFzaCBvZiB0aGUgc2NyaXB0LiAgVGhlcmVmb3JlIGBnLlYoMSlgIGFuZCBgZy5WKDIpYCB3aWxsIGJlIHJlY29nbml6ZWQgYXMgdHdvIHNlcGFyYXRlIHNjcmlwdHMgaW4gdGhlIGNhY2hlLiAgSWYgdGhhdAorc2NyaXB0IGlzIHBhcmFtZXRlcml6ZWQgdG8gYGcuVih4KWAgd2hlcmUgYHhgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciBmcm9tIHRoZSBjbGllbnQsIHRoZXJlIHdpbGwgYmUgbm8gYWRkaXRpb25hbAorY29tcGlsYXRpb24gY29zdCBmb3IgZnV0dXJlIHJlcXVlc3RzIG9uIHRoYXQgc2NyaXB0LiAgQ29tcGlsYXRpb24gb2YgYSBzY3JpcHQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgImV4cGVuc2l2ZSIgYW5kCithdm9pZGVkIHdoZW4gcG9zc2libGUuCiAKIElNUE9SVEFOVDogVGhlIHBhcmFtZXRlcml6ZWQgc2NyaXB0IG9mIGBnLlYoeClgIGlzIGtleWVkIGluIHRoZSBjYWNoZSBkaWZmZXJlbnRseSB0aGFuIGBnLlYoeSlgIG9yIGV2ZW4gYGcuViggeCApYC4KIFNjcmlwdHMgbXVzdCBiZSBleGFjdCBzdHJpbmcgbWF0Y2hlcyBmb3IgcmVjb21waWxhdGlvbiB0byBiZSBhdm9pZGVkLgpAQCAtMTk0Miw2ICsxNzM4LDQxIEBACiBVc2Ugb2YgdGhpcyBzZXR0aW5nIGNhbiBwcmV2ZW50IGFjY2lkZW50YWwgbG9uZyBydW4gY29tcGlsYXRpb25zLCB3aGljaCBpbmRpdmlkdWFsbHkgYXJlIG5vdCB0ZXJyaWJseSBvcHByZXNzaXZlIHRvCiB0aGUgc2VydmVyLCBidXQgdGFrZW4gYXMgYSBncm91cCB1bmRlciBoaWdoIGNvbmN1cnJlbmN5IHdvdWxkIGJlIGNvbnNpZGVyZWQgZGV0cmltZW50YWwuCiAKK09uIHRoZSB0b3BpYyBvZiBHcmVtbGluIGluamVjdGlvbiwgbm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIEdyZW1saW4gc2NyaXB0cyBpbiB0aGUgc2FtZSBmYXNoaW9uCithcyBTUUwgc2NyaXB0cyB0aGF0IGFyZSBzdWJtaXR0ZWQgYXMgc3RyaW5ncy4gV2hlbiB1c2luZyBzdHJpbmcgYnVpbGRpbmcgcGF0dGVybnMgZm9yIHF1ZXJpZXMgd2l0aG91dCBwcm9wZXIgaW5wdXQKK3NjcnViYmluZywgaXQgd291bGQgYmUgcXVpdGUgc2ltcGxlIHRvIGRvOgorCitbc291cmNlLGphdmFdCistLS0tCitTdHJpbmcgbGJsID0gInBlcnNvbiIKK1N0cmluZyBub2RlSWQgPSAibWFyeScpLm5leHQoKTtnLlYoKS5kcm9wKCkuaXRlcmF0ZSgpO2cuVigpLmhhcygnaWQnLCAndGhvbWFzIjsKK1N0cmluZyBxdWVyeSA9ICJnLmFkZFYoJyIgKyBsYmwgKyAiJykucHJvcGVydHkoJ2lkZW50aWZpZXInLCciICsgbm9kZUlkICsgIicpIjsKK2NsaWVudC5zdWJtaXQocXVlcnkpOworLS0tLQorCitUaGUgYWJvdmUgY2FzZSB3b3VsZCBgZHJvcCgpYCBhbGwgdmVydGljZXMgaW4gdGhlIGdyYXBoLiBCeSB1c2luZyBzY3JpcHQgcGFyYW1ldGVyaXphdGlvbiwgdGhlcmUgaXMgYSBkaWZmZXJlbnQgb3V0Y29tZQoraW4gdGhhdCB0aGUgYG5vZGVJZGAgc3RyaW5nIGlzIG5vdCB0cmVhdGVkIGFzIHNvbWV0aGluZyBleGVjdXRhYmxlLCBidXQgcmF0aGVyIGFzIGEgbGl0ZXJhbCBzdHJpbmcgdGhhdCBqdXN0IGJlY29tZXMKK3BhcnQgb2YgdGhlICJpZGVudGlmaWVyIiBmb3IgdGhlIHZlcnRleCBvbiBpbnNlcnRpb246CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK1N0cmluZyBsYmwgPSAicGVyc29uIgorU3RyaW5nIG5vZGVJZCA9ICJtYXJ5JykubmV4dCgpO2cuVigpLmRyb3AoKS5pdGVyYXRlKCk7Zy5WKCkuaGFzKCdpZCcsICd0aG9tYXMiOworU3RyaW5nIHF1ZXJ5ID0gImcuYWRkVihsYmwpLnByb3BlcnR5KCdpZGVudGlmaWVyJyxub2RlSWQpIjsKKworTWFwPFN0cmluZyxPYmplY3Q+IHBhcmFtcyA9IG5ldyBIYXNoTWFwPD4oKTsKK3BhcmFtcy5wdXQoImxibCIsbGJsKTsKK3BhcmFtcy5wdXQoIm5vZGVJZCIsbm9kZUlkKTsKK2NsaWVudC5zdWJtaXQocXVlcnksIHBhcmFtcyk7CistLS0tCisKK0dyZW1saW4gaW5qZWN0aW9uIHNob3VsZCBub3QgYmUgcG9zc2libGUgd2l0aCBgQnl0ZWNvZGVgIGJhc2VkIHRyYXZlcnNhbHMgLSBvbmx5IHNjcmlwdHMgLSBiZWNhdXNlIGBCeXRlY29kZWAKK3RyYXZlcnNhbHMgd2lsbCB0cmVhdCBhbGwgYXJndW1lbnRzIGFzIGxpdGVyYWwgdmFsdWVzLiBUaGVyZSBpcyBwb3RlbnRpYWwgZm9yIGNvbmNlcm4gaWYgbGFtYmRhIGJhc2VkIHN0ZXBzIGFyZQordXRpbGl6ZWQgYXMgdGhleSBleGVjdXRlIGFyYml0cmFyeSBjb2RlLCB3aGljaCBpcyBzdHJpbmcgYmFzZWQsIGJ1dCBjb25maWd1cmluZyBgVHJhdmVyc2FsU291cmNlYCBpbnN0YW5jZXMgd2l0aAorYExhbWJkYVJlc3RyaWN0aW9uU3RyYXRlZ3lgLCB3aGljaCBwcmV2ZW50cyBsYW1iZGFzIGFsbCB0b2dldGhlciwgdXNpbmcgYSBncmFwaCB0aGF0IGRvZXMgbm90IGFsbG93IGxhbWJkYXMgYXQgYWxsLCBvcgorY29uZmlndXJpbmcgYXBwcm9wcmlhdGUgPDxzY3JpcHQtZXhlY3V0aW9uLHNhbmRib3ggb3B0aW9ucz4+IGluIEdyZW1saW4gU2VydmVyIChvciBzdWNoIG9wdGlvbnMgYXZhaWxhYmxlIHRvIHRoZSBncmFwaAorZGF0YWJhc2UgaW4gdXNlKSBzaG91bGQgZWFjaCBoZWxwIG1pdGlnYXRlIHByb2JsZW1zIHJlbGF0ZWQgdG8gdGhpcyBpc3N1ZS4KKwogU2NyaXB0cyBjcmVhdGUgY2xhc3NlcyB3aGljaCBnZXQgbG9hZGVkIHRvIHRoZSBKVk0gbWV0YXNwYWNlIGFuZCB0byBhIGBDbGFzc2AgY2FjaGUuIEZvciB0aG9zZSB1c2luZyBzY3JpcHQKIHBhcmFtZXRlcml6YXRpb24sIGEgdHlwaWNhbCBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGdlbmVyYXRlIGFuIG92ZXJhYnVuZGFuY2Ugb2YgcHJlc3N1cmUgb24gdGhlc2UgdHdvIGNvbXBvbmVudHMgb2YKIEdyZW1saW4gU2VydmVyJ3MgbWVtb3J5IGZvb3RwcmludC4gT24gdGhlIG90aGVyIGhhbmQsIGl0J3Mgbm90IHRvbyBoYXJkIHRvIGltYWdpbmUgYSBzaXR1YXRpb24gd2hlcmUgcHJvYmxlbXMgbWlnaHQKQEAgLTE5OTYsNyArMTgyNyw3IEBACiAKIFRvIGJlZ2luIHRvIGRpc2N1c3MgdGhlc2UgbnVhbmNlcywgZmlyc3QgY29uc2lkZXIgdGhlIG1ldGhvZCBvZiBtYWtpbmcgcmVxdWVzdHMgdG8gR3JlbWxpbiBTZXJ2ZXI6IHNjcmlwdCBvciBieXRlY29kZS4KIEZvciBzY3JpcHRzLCB0aGF0IHdpbGwgbWVhbiB0aGF0IHVzZXJzIGFyZSBzZW5kaW5nIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBHcmVtbGluIHRvIHRoZSBzZXJ2ZXIgZGlyZWN0bHkgdGhyb3VnaCBhCi1kcml2ZXIgb3ZlciB3ZWJzb2NrZXRzIG9yIHRocm91Z2ggdGhlIEhUVFAuIEZvciBieXRlY29kZSwgdXNlcnMgd2lsbCBiZSB1dGlsaXplIGEgPDxncmVtbGluLXZhcmlhbnRzLCBHcmVtbGluIEdMVj4+Citkcml2ZXIgb3ZlciB3ZWJzb2NrZXRzIG9yIHRocm91Z2ggdGhlIEhUVFAuIEZvciBieXRlY29kZSwgdXNlcnMgd2lsbCBiZSB1dGlsaXplIGEgPDxncmVtbGluLWRyaXZlcnMtdmFyaWFudHMsIEdyZW1saW4gR0xWPj4KIHdoaWNoIHdpbGwgY29uc3RydWN0IGJ5dGVjb2RlIGZvciB0aGVtIGFuZCBzdWJtaXQgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1cG9uIGl0ZXJhdGlvbiBvZiB0aGVpciB0cmF2ZXJzYWwuCiAKIEluIGVpdGhlciBjYXNlLCBpdCBpcyBpbXBvcnRhbnQgdG8gYWxzbyBjb25zaWRlciB0aGUgbWV0aG9kIG9mICJkZXRhY2htZW50Ii4gRGV0YWNobWVudCByZWZlcnMgdG8gdGhlIG1hbm5lciBpbiB3aGljaApAQCAtMjAwNywxMCArMTgzOCwyNSBAQAogV2l0aCB0aGUgdHlwZSBvZiByZXF1ZXN0IGFuZCBkZXRhY2htZW50IG1vZGVsIGluIG1pbmQsIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXNjdXNzIGhvdyBiZXN0IHRvIGNvbnNpZGVyIGVsZW1lbnQKIHByb3BlcnRpZXMgaW4gcmVsYXRpb24gdG8gdGhlbSBhbGwgaW4gY29uY2VydC4KIAorQnkgZGVmYXVsdCwgR3JlbWxpbiBTZXJ2ZXIgc2FtcGxlIGNvbmZpZ3VyYXRpb25zIHV0aWxpemUgYFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneWAgd2hlbiBjcmVhdGluZyB0aGUgb3V0LW9mLXRoZS1ib3gKK2BHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIEFzIHRoZSBuYW1lIHN1Z2dlc3RzLCB0aGlzIG1lYW5zIHRoYXQgZWxlbWVudHMgd2lsbCBiZSBkZXRhY2hlZCBieSByZWZlcmVuY2UgYW5kIHdpbGwKK3RoZXJlZm9yZSBub3QgaGF2ZSBwcm9wZXJ0aWVzIGluY2x1ZGVkLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBHcmVtbGluIFNlcnZlciBpbml0aWFsaXphdGlvbiBzY3JpcHQgbG9va3MKK2xpa2UgdGhpczoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQorLS0tLQorCitUaGlzIGNvbmZpZ3VyYXRpb24gaXMgZ2xvYmFsIHRvIEdyZW1saW4gU2VydmVyIGFuZCB0aGVyZWZvcmUgYWxsIG1ldGhvZHMgb2YgY29ubmVjdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZWxlbWVudHMKK3dpdGhvdXQgcHJvcGVydGllcy4gSWYgdGhpcyBzdHJhdGVneSBpcyBub3QgaW5jbHVkZWQsIHRoZW4gdGhlcmUgYXJlIG90aGVyIGNvbnNpZGVyYXRpb25zIHRvIHRha2UgaW50byBhY2NvdW50IHN1Y2ggYXMKK3RoZSBjb25uZWN0aW9uIHR5cGUgKGkuZS4gc2NyaXB0IG9yIGJ5dGVjb2RlKSBhbmQgdGhlIHNlcmlhbGl6ZXIuCisKIEZvciBzY3JpcHQtYmFzZWQgcmVxdWVzdHMsIHVzZXJzIHNob3VsZCB0YWtlIGNhcmUgd2hlbiByZXR1cm5pbmcgZ3JhcGggZWxlbWVudHMuIEJ5IGRlZmF1bHQsIGVsZW1lbnRzIHdpbGwgYmUgcmV0dXJuZWQKLWFzIGRldGFjaGVkIGVsZW1lbnRzIGFuZCB3aWxsIHRodXMgc2VyaWFsaXplIHdpdGggYWxsIHByb3BlcnRpZXMgdGhhdCBhcmUgYm91bmQgdG8gdGhlbS4gQXMgc3VjaCwgR3J5byBhbmQgR3JhcGhTT04KLXNlcmlhbGl6ZXJzIHdpbGwgd3JpdGUgYWxsIHByb3BlcnRpZXMgaW4gdGhlIHJldHVybiBwYXlsb2FkLiBTY3JpcHQtYmFzZWQgcmVxdWVzdHMgc2hvdWxkIGRlZmluaXRlbHkgZm9sbG93IHRoZSBiZXN0Ci1wcmFjdGljZSBvZiBvbmx5IHJldHVybmluZyB0aGUgZGF0YSByZXF1aXJlZCBieSB0aGUgYXBwbGljYXRpb24uCithcyAiZGV0YWNoZWQgZWxlbWVudHMiIGFuZCBkZXBlbmRpbmcgb24gdGhlIHNlcmlhbGl6ZXIgYmVpbmcgdXNlZCB0aG9zZSBkZXRhY2hlZCBlbGVtZW50cyBtYXkgb3IgbWF5IG5vdCBoYXZlIHRoZWlyCitwcm9wZXJ0aWVzIGNhcnJpZWQgd2l0aCB0aGVtLiBHcnlvIGFuZCBHcmFwaFNPTiBzZXJpYWxpemVycyB3aWxsIHdyaXRlIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSByZXR1cm4gcGF5bG9hZCBpbiB0aGlzCitjYXNlIGJ1dCBHcmFwaEJpbmFyeSB3aWxsIG5vdC4gVGhlcmVmb3JlLCBzY3JpcHQtYmFzZWQgcmVxdWVzdHMgdGhhdCB1c2UgR3J5byBvciBHcmFwaFNPTiBzaG91bGQgZGVmaW5pdGVseSBmb2xsb3cgdGhlCitiZXN0IHByYWN0aWNlIG9mIG9ubHkgcmV0dXJuaW5nIHRoZSBkYXRhIHJlcXVpcmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KIAogTk9URTogR3J5byBkb2VzIGhhdmUgdGhlIGV4Y2VwdGlvbiBmb3IgdGhlIGBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMGAgd2l0aCB0aGUgYHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nYAogb3B0aW9uIGVuYWJsZWQsIHdoaWNoIHdpbGwgc2ltcGx5IGNvbnZlcnQgYWxsIHJlc3VsdHMgdXNpbmcgdGhlIEphdmEgYHRvU3RyaW5nKClgIG1ldGhvZCBwcmlvciB0byBzZXJpYWxpemF0aW9uIGFuZApAQCAtMjA0NSwxNCArMTg5MSwxOSBAQAogLS0tLQogQ2x1c3RlciBjbHVzdGVyID0gQ2x1c3Rlci5vcGVuKCk7CiBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci1SZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoImcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS52YWx1ZU1hcCh0cnVlLCduYW1lJykiKTsKK1Jlc3VsdFNldCByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpLmVsZW1lbnRNYXAoJ25hbWUnKSIpOwogCiBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgnY29uZi9yZW1vdGUtZ3JhcGgucHJvcGVydGllcycpOwotTGlzdDxWZXJ0ZXg+IHJlc3VsdHMgPSBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVNYXAodHJ1ZSwnbmFtZScpLnRvTGlzdCgpOworTGlzdDxWZXJ0ZXg+IHJlc3VsdHMgPSBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikuZWxlbWVudE1hcCgnbmFtZScpLnRvTGlzdCgpOwogLS0tLQogCiBCb3RoIG9mIHRoZSBhYm92ZSByZXF1ZXN0cyByZXR1cm4gYSBsaXN0IG9mIGBNYXBgIGluc3RhbmNlcyB0aGF0IGNvbnRhaW4gdGhlIGBpZGAsIGBsYWJlbGAgYW5kIHRoZSAibmFtZSIgcHJvcGVydHkuCiAKK1RJUDogVGhlIGV4YW1wbGUgZ3JhcGggY29uZmlndXJhdGlvbnMgcHJlLXBhY2thZ2VkIHdpdGggR3JlbWxpbiBTZXJ2ZXIgdXRpbGl6ZSBgUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5YAord2hpY2ggY29udmVydCBhbGwgZ3JhcGggZWxlbWVudHMgdG8gcmVmZXJlbmNlcyBieSBpbml0aWFsaXppbmcgImciIHVzaW5nCitgd2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKClgLiBDb25zaWRlciB1dGlsaXppbmcgYFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneWAgd2hlbmV2ZXIgY3JlYXRpbmcKK2EgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpbiBKYXZhIHRvIGVuc3VyZSB0aGUgbW9zdCBwb3J0YWJsZSBHcmVtbGluLgorCiBOT1RFOiBGb3IgdGhvc2UgaW50ZXJlc3RlZCwgcGxlYXNlIHNlZSBsaW5rOmh0dHBzOi8vbGlzdHMuYXBhY2hlLm9yZy90aHJlYWQuaHRtbC9lOTU5ZTg1ZDRmOGIzZDQ2ZDI4MWYyNzQyYTZlNTc0YzdkMjdjNTRiZmM1MmY4MDJmN2MwNGFmMyU0MCUzQ2Rldi50aW5rZXJwb3AuYXBhY2hlLm9yZyUzRVt0aGlzIHBvc3RdCiB0byB0aGUgVGlua2VyUG9wIGRldiBsaXN0IHdoaWNoIG91dGxpbmVzIHRoZSBmdWxsIGhpc3Rvcnkgb2YgdGhpcyBpc3N1ZSBhbmQgcmVsYXRlZCBjb25jZXJucy4KIApAQCAtMjExMiwxMyArMTk2MywxMyBAQAogW1tzZXNzaW9uc11dCiA9PT09IENvbnNpZGVyaW5nIFNlc3Npb25zCiAKLVRoZSBwcmVmZXJyZWQgYXBwcm9hY2ggZm9yIGlzc3VpbmcgcmVxdWVzdHMgdG8gR3JlbWxpbiBTZXJ2ZXIgaXMgdG8gZG8gc28gaW4gYSBzZXNzaW9ubGVzcyBtYW5uZXIuICBUaGUgY29uY2VwdCBvZgotInNlc3Npb25sZXNzIiByZWZlcnMgdG8gYSByZXF1ZXN0IHRoYXQgaXMgY29tcGxldGVseSBlbmNhcHN1bGF0ZWQgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLCBzdWNoIHRoYXQgdGhlIHNjcmlwdAotaW4gdGhlIHJlcXVlc3Qgc3RhcnRzIHdpdGggYSBuZXcgdHJhbnNhY3Rpb24gYW5kIGVuZHMgd2l0aCBhIGNsb3NlZCB0cmFuc2FjdGlvbi4gU2Vzc2lvbmxlc3MgcmVxdWVzdHMgaGF2ZSBhdXRvbWF0aWMKLXRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgaGFuZGxlZCBieSBHcmVtbGluIFNlcnZlciwgdGh1cyBhdXRvbWF0aWNhbGx5IG9wZW5pbmcgYW5kIGNsb3NpbmcgdHJhbnNhY3Rpb25zIGFzIHByZXZpb3VzbHkKLWRlc2NyaWJlZC4gIFRoZSBkb3duc2lkZSB0byB0aGUgc2Vzc2lvbmxlc3MgYXBwcm9hY2ggaXMgdGhhdCB0aGUgZW50aXJlIHNjcmlwdCB0byBiZSBleGVjdXRlZCBtdXN0IGJlIGtub3duIGF0IHRoZQotdGltZSBvZiBzdWJtaXNzaW9uIHNvIHRoYXQgaXQgY2FuIGFsbCBiZSBleGVjdXRlZCBhdCBvbmNlLiAgVGhpcyByZXF1aXJlbWVudCBtYWtlcyBpdCBkaWZmaWN1bHQgZm9yIHNvbWUgdXNlIGNhc2VzCi13aGVyZSBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgdHJhbnNhY3Rpb24gaXMgZGVzaXJlZC4KK1RoZSBwcmVmZXJyZWQgYXBwcm9hY2ggZm9yIGlzc3Vpbmcgc2NyaXB0LWJhc2VkIHJlcXVlc3RzIHRvIEdyZW1saW4gU2VydmVyIGlzIHRvIGRvIHNvIGluIGEgc2Vzc2lvbmxlc3MgbWFubmVyLiAgVGhlCitjb25jZXB0IG9mICJzZXNzaW9ubGVzcyIgcmVmZXJzIHRvIGEgcmVxdWVzdCB0aGF0IGlzIGNvbXBsZXRlbHkgZW5jYXBzdWxhdGVkIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbiwgc3VjaCB0aGF0Cit0aGUgc2NyaXB0IGluIHRoZSByZXF1ZXN0IHN0YXJ0cyB3aXRoIGEgbmV3IHRyYW5zYWN0aW9uIGFuZCBlbmRzIHdpdGggYSBjbG9zZWQgdHJhbnNhY3Rpb24uIFNlc3Npb25sZXNzIHJlcXVlc3RzIGhhdmUKK2F1dG9tYXRpYyB0cmFuc2FjdGlvbiBtYW5hZ2VtZW50IGhhbmRsZWQgYnkgR3JlbWxpbiBTZXJ2ZXIsIHRodXMgYXV0b21hdGljYWxseSBvcGVuaW5nIGFuZCBjbG9zaW5nIHRyYW5zYWN0aW9ucyBhcworcHJldmlvdXNseSBkZXNjcmliZWQuICBUaGUgZG93bnNpZGUgdG8gdGhlIHNlc3Npb25sZXNzIGFwcHJvYWNoIGlzIHRoYXQgdGhlIGVudGlyZSBzY3JpcHQgdG8gYmUgZXhlY3V0ZWQgbXVzdCBiZSBrbm93bgorYXQgdGhlIHRpbWUgb2Ygc3VibWlzc2lvbiBzbyB0aGF0IGl0IGNhbiBhbGwgYmUgZXhlY3V0ZWQgYXQgb25jZS4gIFRoaXMgcmVxdWlyZW1lbnQgbWFrZXMgaXQgZGlmZmljdWx0IGZvciBzb21lIHVzZQorY2FzZXMgd2hlcmUgbW9yZSBjb250cm9sIG92ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGRlc2lyZWQuCiAKIEZvciBzdWNoIHVzZSBjYXNlcywgR3JlbWxpbiBTZXJ2ZXIgc3VwcG9ydHMgc2Vzc2lvbnMuICBXaXRoIHNlc3Npb25zLCB0aGUgdXNlciBpcyBpbiBjb21wbGV0ZSBjb250cm9sIG9mIHRoZSBzdGFydAogYW5kIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoaXMgZmVhdHVyZSBjb21lcyB3aXRoIHNvbWUgYWRkaXRpb25hbCBleHBlbnNlIHRvIGNvbnNpZGVyOgpAQCAtMjE0Myw3ICsxOTk0LDcgQEAKIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoInNlc3Npb25OYW1lIik7IDwyPgogLS0tLQogCi08MT4gT3BlbnMgYSByZWZlcmVuY2UgdG8gYGxvY2FsaG9zdGAgYXMgPDxjb25uZWN0aW5nLXZpYS1qYXZhLHByZXZpb3VzbHkgc2hvd24+Pi4KKzwxPiBPcGVucyBhIHJlZmVyZW5jZSB0byBgbG9jYWxob3N0YCBhcyA8PGdyZW1saW4tamF2YSxwcmV2aW91c2x5IHNob3duPj4uCiA8Mj4gQ3JlYXRlcyBhIGBTZXNzaW9uZWRDbGllbnRgIGdpdmVuIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb2YgdGhlIENsdXN0ZXIuIFRoZSBgY29ubmVjdCgpYCBtZXRob2QgaXMgZ2l2ZW4gYQogYFN0cmluZ2AgdmFsdWUgdGhhdCBiZWNvbWVzIHRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgc2Vzc2lvbi4gSXQgaXMgb2Z0ZW4gYmVzdCB0byBzaW1wbHkgdXNlIGEgYFVVSURgIHRvIHJlcHJlc2VudAogdGhlIHNlc3Npb24uCkBAIC0yNDYyLDE1ICsyMzEzLDYgQEAKIDwzPiBUaGUgYFRpbmtlckdyYXBoYCBvZiB0aGF0IHByZXZpb3VzIHRyYXZlcnNhbCBjYW4gYmUgZm91bmQgaW4gdGhlIGByZXN1bHRgIG9iamVjdCBhbmQgbm93IHRoYXQgdGhlIGBHcmFwaGAgaXMgbG9jYWwKIHRvIEdyZW1saW4gQ29uc29sZSBpdCBjYW4gYmUgdXNlZCB3aXRoIEdlcGhpIGFzIHNob3duIGluIHRoZSBwcmlvciBpbnN0cnVjdGlvbiBzZXQuCiAKLVtbZ2lyYXBoLXBsdWdpbl1dCi09PT0gR2lyYXBoIFBsdWdpbgotCi1pbWFnZTpnaXJhcGgtbG9nby5wbmdbd2lkdGg9NTAsZmxvYXQ9bGVmdF0gIFRoZSBHaXJhcGggUGx1Z2luIGluc3RhbGxzIGFzIHBhcnQgb2YgYGdpcmFwaC1ncmVtbGluYCBhbmQgcHJvdmlkZXMKLWEgbnVtYmVyIG9mIGltcG9ydHMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zIHRvIHRoZSBlbnZpcm9ubWVudCB3aXRoaW4gd2hpY2ggaXQgaXMgdXNlZC4gVGhvc2UgY2xhc3NlcyBhbmQgZnVuY3Rpb25zCi1wcm92aWRlIHRoZSBiYXNpcyBmb3Igc3VwcG9ydGluZyA8PGdyYXBoY29tcHV0ZXIsT0xBUCBiYXNlZCB0cmF2ZXJzYWxzPj4gdXNpbmcgbGluazpodHRwOi8vZ2lyYXBoLmFwYWNoZS5vcmdbR2lyYXBoXS4KLVRoaXMgcGx1Z2luIGlzIGRlZmluZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIDw8Z2lyYXBoZ3JhcGhjb21wdXRlcixHaXJhcGhHcmFwaENvbXB1dGVyPj4gc2VjdGlvbiBhbmQgaXMgdHlwaWNhbGx5Ci1pbnN0YWxsZWQgaW4gY29uanVjdGlvbiB3aXRoIHRoZSA8PGhhZG9vcC1wbHVnaW4sSGFkb29wLVBsdWdpbj4+LgotCiBbW2dyYXBoLXBsdWdpbnNdXQogPT09IEdyYXBoIFBsdWdpbnMKIApAQCAtMjUyMSwxMyArMjM2MywxMyBAQAogaW1hZ2U6Z3JlbWxpbi1zdWdhci5wbmdbd2lkdGg9MTIwLGZsb2F0PWxlZnRdIEluIHByZXZpb3VzIHZlcnNpb25zIG9mIEdyZW1saW4tR3Jvb3Z5LCB0aGVyZSB3ZXJlIG51bWVyb3VzCiBsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ludGFjdGljX3N1Z2FyW3N5bnRhY3RpYyBzdWdhcnNdIHRoYXQgdXNlcnMgY291bGQgcmVseSBvbiB0byBtYWtlIHRoZWlyIHRyYXZlcnNhbHMKIG1vcmUgc3VjY2luY3QuIFVuZm9ydHVuYXRlbHksIG1hbnkgb2YgdGhlc2UgY29udmVudGlvbnMgbWFkZSB1c2Ugb2YgbGluazpodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS90dXRvcmlhbC9yZWZsZWN0L1tKYXZhIHJlZmxlY3Rpb25dCi1hbmQgdGh1cywgd2VyZSBub3QgcGVyZm9ybWFudC4gSW4gVGlua2VyUG9wMywgdGhlc2UgY29udmVuaWVuY2VzIGhhdmUgYmVlbiByZW1vdmVkIGluIHN1cHBvcnQgb2YgdGhlIHN0YW5kYXJkCithbmQgdGh1cywgd2VyZSBub3QgcGVyZm9ybWFudC4gSW4gVGlua2VyUG9wLCB0aGVzZSBjb252ZW5pZW5jZXMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gc3VwcG9ydCBvZiB0aGUgc3RhbmRhcmQKIEdyZW1saW4tR3Jvb3Z5IHN5bnRheCBiZWluZyBib3RoIGlubGluZSB3aXRoIEdyZW1saW4tSmF2YTggc3ludGF4IGFzIHdlbGwgYXMgYWx3YXlzIGJlaW5nIHRoZSBtb3N0IHBlcmZvcm1hbnQKIHJlcHJlc2VudGF0aW9uLiBIb3dldmVyLCBmb3IgdGhvc2UgdXNlcnMgdGhhdCB3b3VsZCBsaWtlIHRvIHVzZSB0aGUgcHJldmlvdXMgc3ludGFjdGljIHN1Z2FycyAoYXMgd2VsbCBhcyBuZXcgb25lcyksCiB0aGVyZSBpcyBgU3VnYXJHcmVtbGluUGx1Z2luYCAoYS5rLmEgR3JlbWxpbi1Hcm9vdnktU3VnYXIpLgogCiBJTVBPUlRBTlQ6IEl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBzdWdhciBwbHVnaW4gaXMgbG9hZGVkIGluIGEgR3JlbWxpbiBDb25zb2xlIHNlc3Npb24gcHJpb3IgdG8gYW55IG1hbmlwdWxhdGlvbnMgb2YKLXRoZSByZXNwZWN0aXZlIFRpbmtlclBvcDMgb2JqZWN0cyBhcyBHcm9vdnkgd2lsbCBjYWNoZSB1bmF2YWlsYWJsZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLgordGhlIHJlc3BlY3RpdmUgVGlua2VyUG9wIG9iamVjdHMgYXMgR3Jvb3Z5IHdpbGwgY2FjaGUgdW5hdmFpbGFibGUgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4KIAogW3NvdXJjZSxncm9vdnldCiAtLS0tCkBAIC0yNjE0LDUzICsyNDU2LDMgQEAKIC0tLS0KIGRlc2NyaWJlR3JhcGgoSGFkb29wR3JhcGgpCiAtLS0tCi0KLU5PVEU6IFRoaXMgY29tbWFuZCB3aWxsIG9ubHkgd29yayBmb3IgbG9jYWwgYEdyYXBoYCBpbnN0YW5jZXMgaW4gdGhlIEdyZW1saW4gQ29uc29sZS4gVGhlIGNvbW1hbmQgY2Fubm90IGJlIGlzc3VlZAotdG8gcmVtb3RlIGdyYXBocyBhcyBzY3JpcHRzLgotCi1bW2FwcGxpY2F0aW9uLXRlbXBsYXRlc11dCi09PSBBcHBsaWNhdGlvbiBUZW1wbGF0ZXMKLQotVGlua2VyUG9wIGhhcyBhIG51bWJlciBvZiBhcHBsaWNhdGlvbiB0ZW1wbGF0ZXMsIHdoaWNoIHByb3ZpZGUgZXhhbXBsZSBwcm9qZWN0IHRlbXBsYXRlcyB0byBxdWlja2x5IGdldCBzdGFydGVkIHdpdGggVGlua2VyUG9wLgotCi1bW2dyZW1saW4tYXJjaGV0eXBlc11dCi09PT0gTWF2ZW4gQXJjaGV0eXBlcwotCi1UaGUgYXZhaWxhYmxlIGxpbms6aHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2d1aWRlcy9pbnRyb2R1Y3Rpb24vaW50cm9kdWN0aW9uLXRvLWFyY2hldHlwZXMuaHRtbFtNYXZlbiBhcmNoZXR5cGVzXSBhcmUgYXMgZm9sbG93czoKLQotKiBgZ3JlbWxpbi1hcmNoZXR5cGUtZHNsYCAtIEFuIGV4YW1wbGUgcHJvamVjdCB0aGF0IGRlbW9uc3RyYXRlcyBob3cgdG8gYnVpbGQgRG9tYWluIFNwZWNpZmljIExhbmd1YWdlcyB3aXRoIEdyZW1saW4gaW4gSmF2YS4KLSogYGdyZW1saW4tYXJjaGV0eXBlLXNlcnZlcmAgLSBBbiBleGFtcGxlIHByb2plY3QgdGhhdCBkZW1vbnN0cmF0ZXMgdGhlIGJhc2ljIHN0cnVjdHVyZSBvZiBhCi08PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gcHJvamVjdCwgaG93IHRvIGNvbm5lY3Qgd2l0aCB0aGUgR3JlbWxpbiBEcml2ZXIsIGFuZCBob3cgdG8gZW1iZWQgR3JlbWxpbiBTZXJ2ZXIgaW4KLWEgdGVzdGluZyBmcmFtZXdvcmsuCi0qIGBncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaGAgLSBBIGJhc2ljIGV4YW1wbGUgb2YgaG93IHRvIHN0cnVjdHVyZSBhIFRpbmtlclBvcCBwcm9qZWN0IHdpdGggTWF2ZW4uCi0KLVlvdSBjYW4gdXNlIE1hdmVuIHRvIGdlbmVyYXRlIHRoZXNlIGV4YW1wbGUgcHJvamVjdHMgd2l0aCBhIGNvbW1hbmQgbGlrZToKLQotW3NvdXJjZSxzaGVsbF0KLSQgbXZuIGFyY2hldHlwZTpnZW5lcmF0ZSAtRGFyY2hldHlwZUdyb3VwSWQ9b3JnLmFwYWNoZS50aW5rZXJwb3AgLURhcmNoZXR5cGVBcnRpZmFjdElkPWdyZW1saW4tYXJjaGV0eXBlLXNlcnZlcgotICAgICAgLURhcmNoZXR5cGVWZXJzaW9uPXgueS56IC1EZ3JvdXBJZD1jb20ubXkgLURhcnRpZmFjdElkPWFwcCAtRHZlcnNpb249MC4xIC1EaW50ZXJhY3RpdmVNb2RlPWZhbHNlCi0KLVRoaXMgY29tbWFuZCB3aWxsIGdlbmVyYXRlIGEgbmV3IE1hdmVuIHByb2plY3QgaW4gYSBkaXJlY3RvcnkgY2FsbGVkICJhcHAiIHdpdGggYSBgcG9tLnhtbGAgc3BlY2lmeWluZyBhIGBncm91cElkYCBvZgotYGNvbS5teWAuIFBsZWFzZSBzZWUgdGhlIGBSRUFETUUuYXNjaWlkb2NgIGluIHRoZSByb290IG9mIGVhY2ggZ2VuZXJhdGVkIHByb2plY3QgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBidWlsZCBhbmQKLWV4ZWN1dGUgaXQuCi0KLVtbZ3JlbWxpbi1kb3RuZXQtdGVtcGxhdGVdXQotPT09IEdyZW1saW4uTmV0IFRlbXBsYXRlCi0KLVRoaXMgbGluazpodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9kb3RuZXQvY29yZS90b29scy9jdXN0b20tdGVtcGxhdGVzW2RvdG5ldCB0ZW1wbGF0ZV0gaGVscHMgZ2V0dGluZyBzdGFydGVkIHdpdGgKLTw8Z3JlbWxpbi1Eb3ROZXQsR3JlbWxpbi5OZXQ+Pi4gSXQgY3JlYXRlcyBhIG5ldyBDIyBjb25zb2xlIHByb2plY3QgdGhhdCBzaG93cyBob3cgdG8gY29ubmVjdCB0byBhCi08PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gd2l0aCBHcmVtbGluLk5ldC4KLQotWW91IGNhbiBpbnN0YWxsIHRoZSB0ZW1wbGF0ZSB3aXRoIHRoZSBkb3RuZXQgQ0xJIHRvb2w6Ci1bc291cmNlLHNoZWxsXQotZG90bmV0IG5ldyAtaSBHcmVtbGluLk5ldC5UZW1wbGF0ZQotCi1BZnRlciB0aGUgdGVtcGxhdGUgaXMgaW5zdGFsbGVkLCBhIG5ldyBwcm9qZWN0IGJhc2VkIG9uIHRoaXMgdGVtcGxhdGUgY2FuIGJlIGluc3RhbGxlZDoKLQotW3NvdXJjZSxzaGVsbF0KLWRvdG5ldCBuZXcgZ3JlbWxpbgotCi1Zb3UgY2FuIHNwZWNpZnkgdGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBuZXcgcHJvamVjdCB3aGljaCB3aWxsIHRoZW4gYWxzbyBiZSB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSBjcmVhdGVkIHByb2plY3Q6Ci0KLVtzb3VyY2Usc2hlbGxdCi1kb3RuZXQgbmV3IGdyZW1saW4gLW8gTXlGaXJzdEdyZW1saW5Qcm9qZWN0CmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvZ3JlbWxpbi12YXJpYW50cy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLXZhcmlhbnRzLmFzY2lpZG9jCmluZGV4IDY5OTg4YmQuLjlhMDFkNmMgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLXZhcmlhbnRzLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLXZhcmlhbnRzLmFzY2lpZG9jCkBAIC0xNCw1NyArMTQsNTk1IEBACiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC8vLy8KLVtbZ3JlbWxpbi12YXJpYW50c11dCi09IEdyZW1saW4gVmFyaWFudHMKKworYW5jaG9yOmdyZW1saW4tdmFyaWFudHNbXQorW1tncmVtbGluLWRyaXZlcnMtdmFyaWFudHNdXQorPSBHcmVtbGluIERyaXZlcnMgYW5kIFZhcmlhbnRzCiAKIGltYWdlOjpncmVtbGluLWhvdXNlLW9mLW1pcnJvcnMucG5nW3dpZHRoPTEwMjRdCiAKLUdyZW1saW4gaXMgYSBncmFwaCB0cmF2ZXJzYWwgbGFuZ3VhZ2UgdGhhdCBtYWtlcyB1c2Ugb2YgdHdvIGZ1bmRhbWVudGFsIHByb2dyYW1taW5nIGNvbnN0cnVjdHM6Ci1saW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bmN0aW9uX2NvbXBvc2l0aW9uW2Z1bmN0aW9uIGNvbXBvc2l0aW9uXSBhbmQKLWxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVzdGVkX2Z1bmN0aW9uW2Z1bmN0aW9uIG5lc3RpbmddLiBHaXZlbiB0aGlzIGdlbmVyYWxpdHksIGl0IGlzIHBvc3NpYmxlIHRvIGVtYmVkCi1HcmVtbGluIGluIGFueSBtb2Rlcm4gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuCitBdCB0aGlzIHBvaW50LCByZWFkZXJzIHNob3VsZCBiZSB3ZWxsIGZhbWlsaWFyIHdpdGggdGhlIDw8aW50cm8sSW50cm9kdWN0aW9uPj4gdG8gdGhpcyBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiBhbmQKK3dpbGwgbGlrZWx5IGJlIHRoaW5raW5nIGFib3V0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgc3BlY2lmaWMgdG8gdGhlIGdyYXBoIHByb3ZpZGVyIHRoZXkgaGF2ZSBzZWxlY3RlZCBhcyB3ZWxsIGFzCit0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhleSBpbnRlbmQgdG8gdXNlLiBUaGUgY2hvaWNlIG9mIHByb2dyYW1taW5nIGxhbmd1YWdlIGNvdWxkIGhhdmUgaW1wbGljYXRpb25zIHRvIHRoZQorYXJjaGl0ZWN0dXJlIGFuZCBkZXNpZ24gb2YgdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGUgY2hvaWNlIGl0c2VsZiBtYXkgaGF2ZSBsaW1pdHMgaW1wb3NlZCB1cG9uIGl0IGJ5IHRoZSBjaG9zZW4gZ3JhcGgKK3Byb3ZpZGVyLiBGb3IgZXhhbXBsZSwgYSA8PGNvbm5lY3RpbmctcmdwLFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyPj4gd2lsbCByZXF1aXJlIHRoZSBzZWxlY3Rpb24gb2YgYSBkcml2ZXIgdG8gaW50ZXJhY3QKK3dpdGggaXQuIE9uIHRoZSBvdGhlciBoYW5kLCBhIGdyYXBoIHN5c3RlbSB0aGF0IGlzIGRlc2lnbmVkIGZvciBlbWJlZGRlZCB1c2UsIGxpa2UgVGlua2VyR3JhcGgsIG5lZWRzIHRoZSBKYXZhCitWaXJ0dWFsIE1hY2hpbmUgKEpWTSkgZW52aXJvbm1lbnQgc28gd2lsbCByZXF1aXJlIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+LCBpZiB1c2luZyBhIHByb2dyYW1taW5nCitsYW5ndWFnZSB0aGF0IGlzIG5vdCBvbiB0aGUgSlZNIGFuZCB3aWxsIGZ1cnRoZXIgcmVxdWlyZSBkcml2ZXIgc2VsZWN0aW9uLgogCi1JTVBPUlRBTlQ6IEdyZW1saW4tSmF2YSBpcyB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIG9mIEdyZW1saW4gYW5kIGFueSAocHJvcGVyKSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgd2lsbCBlbXVsYXRlIGl0cwotc3RydWN0dXJlIGFzIGJlc3QgYXMgcG9zc2libGUgZ2l2ZW4gdGhlIGNvbnN0cnVjdHMgb2YgdGhlIGhvc3QgbGFuZ3VhZ2UuIEEgc3Ryb25nIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdmFyaWFudHMgZW5zdXJlcwotdGhhdCB0aGUgZ2VuZXJhbCBHcmVtbGluIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGlzIGFwcGxpY2FibGUgdG8gYWxsIHZhcmlhbnRzIGFuZCB0aGF0IHVzZXJzIG1vdmluZyBiZXR3ZWVuIGRldmVsb3BtZW50Ci1sYW5ndWFnZXMgY2FuIGVhc2lseSBhZG9wdCB0aGUgR3JlbWxpbiB2YXJpYW50IGZvciB0aGF0IGxhbmd1YWdlLgorVGlua2VyUG9wIHByb3ZpZGVzIGFuIGFycmF5IG9mIGRyaXZlcnMgaW4gZGlmZmVyZW50IHByb2dyYW1taW5nIGxhbmd1YWdlcyBhcyBhIHdheSB0byBjb25uZWN0IHRvIGEgcmVtb3RlIEdyZW1saW4KK1NlcnZlciBvciBSZW1vdGUgR3JlbWxpbiBQcm92aWRlci4gRHJpdmVycyBhbGxvdyB0aGUgZGV2ZWxvcGVyIHRvIG1ha2UgcmVxdWVzdHMgdG8gdGhhdCByZW1vdGUgc3lzdGVtIGFuZCBnZXQgYmFjaworcmVzdWx0cyBmcm9tIHRoZSBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaHMgaG9zdGVkIHdpdGhpbi4gQSBkcml2ZXIgY2FuIHN1Ym1pdCBHcmVtbGluIHN0cmluZ3MgYW5kIEdyZW1saW4gYnl0ZWNvZGUKK292ZXIgdGhpcyBzdWItcHJvdG9jb2wuIEdyZW1saW4gc3RyaW5ncyBhcmUgd3JpdHRlbiBpbiB0aGUgc2NyaXB0aW5nIGxhbmd1YWdlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSByZW1vdGUgc3lzdGVtIHRoYXQKK3RoZSBkcml2ZXIgaXMgY29ubmVjdGluZyB0byAodHlwaWNhbGx5LCBHcm9vdnktYmFzZWQpLiBUaGlzIGNvbm5lY3Rpb24gYXBwcm9hY2ggaXMgcXVpdGUgc2ltaWxhciB0byB3aGF0IGRldmVsb3BlcnMKK2FyZSBsaWtlbHkgZmFtaWxpYXIgd2l0aCB3aGVuIHVzaW5nIEpEQkMgYW5kIFNRTC4gV2hpbGUgaXQgaXMgZmFtaWxpYXIsIGl0IGlzIG5vdCByZWNvbW1lbmRlZCBhbmQgZm9yIFRpbmtlclBvcCBpdCBpcworY29uc2lkZXJlZCBhbiBvdXQtZGF0ZWQgY29uY2VwdCBhbmQgaXMgbGFyZ2VseSBzdGlsbCBwcmVzZW50IGZvciB0aGUgcHVycG9zZSBvZiBzdXBwb3J0aW5nIGFwcGxpY2F0aW9ucyB0aGF0IG1pZ2h0CitzdGlsbCBiZSB1c2luZyB0aGF0IG1ldGhvZCBvZiBpbnRlcmFjdGlvbi4KKworVGhlIHByZWZlcnJlZCBhcHByb2FjaCBpcyB0byB1c2UgYnl0ZWNvZGUtYmFzZWQgcmVxdWVzdHMsIHdoaWNoIGVzc2VudGlhbGx5IGFsbG93cyB0aGUgYWJpbGl0eSB0byBjcmFmdCBHcmVtbGluCitkaXJlY3RseSBpbiB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugb2YgY2hvaWNlLiBBcyBHcmVtbGluIG1ha2VzIHVzZSBvZiB0d28gZnVuZGFtZW50YWwgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKK2xpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnVuY3Rpb25fY29tcG9zaXRpb25bZnVuY3Rpb24gY29tcG9zaXRpb25dIGFuZAorbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXN0ZWRfZnVuY3Rpb25bZnVuY3Rpb24gbmVzdGluZ10uIGl0IGlzIHBvc3NpYmxlIHRvIGVtYmVkIHRoZSBHcmVtbGluIGxhbmd1YWdlCitpbiBhbnkgbW9kZXJuIHByb2dyYW1taW5nIGxhbmd1YWdlLiBJdCBpcyBhIGZhciBtb3JlIG5hdHVyYWwgd2F5IHRvIHByb2dyYW0sIGJlY2F1c2UgaXQgZW5hYmxlcyBJREUgaW50ZXJhY3Rpb24sCitjb21waWxlIHRpbWUgY2hlY2tzLCBhbmQgbGFuZ3VhZ2UgbGV2ZWwgY2hlY2tzIHRoYXQgY2FuIGhlbHAgcHJldmVudCBlcnJvcnMgcHJpb3IgdG8gZXhlY3V0aW9uLiBUaGUgZGlmZmVyZW5jZXMKK2JldHdlZW4gdGhlc2UgdHdvIGFwcHJvYWNoZXMgd2VyZSBvdXRsaW5lZCBpbiB0aGUgPDxjb25uZWN0aW5nLXZpYS1kcml2ZXJzLENvbm5lY3RpbmcgVmlhIERyaXZlcnM+PiBTZWN0aW9uLCB3aGljaAorYXBwbGllcyB0byBHcmVtbGluIFNlcnZlciwgYnV0IGFsc28gdG8gUmVtb3RlIEdyZW1saW4gUHJvdmlkZXJzLgorCitJbiBhZGRpdGlvbiB0byB0aGUgbGFuZ3VhZ2VzIGFuZCBkcml2ZXJzIHRoYXQgVGlua2VyUG9wIHN1cHBvcnRzLCB0aGVyZSBhcmUgYWxzbyB0aGlyZC1wYXJ0eSBpbXBsZW1lbnRhdGlvbnMsIGFzIHdlbGwKK2FzIGV4dGVuc2lvbnMgdG8gdGhlIEdyZW1saW4gbGFuZ3VhZ2UgdGhhdCBtaWdodCBiZSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgZ3JhcGggcHJvdmlkZXIuIFRoYXQgbGlzdGluZyBjYW4gYmUKK2ZvdW5kIG9uIHRoZSBUaW5rZXJQb3AgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNncmFwaC1zeXN0ZW1zW2hvbWUgcGFnZV0uIFRoZWlyIGRlc2NyaXB0aW9uIGlzIGJleW9uZCB0aGUKK3Njb3BlIG9mIHRoaXMgZG9jdW1lbnRhdGlvbi4KKworVElQOiBXaGVuIHBvc3NpYmxlLCBpdCBpcyB0eXBpY2FsbHkgYmVzdCB0byBhbGlnbiB0aGUgdmVyc2lvbiBvZiBUaW5rZXJQb3AgdXNlZCBvbiB0aGUgY2xpZW50IHdpdGggdGhlIHZlcnNpb24KK3N1cHBvcnRlZCBvbiB0aGUgc2VydmVyLiBXaGlsZSBpdCBpcyBub3QgaW1wb3NzaWJsZSB0byBoYXZlIGEgZGlmZmVyZW50IHZlcnNpb24gYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlciwgaXQgbWF5CityZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQvb3IgYSBkZWVwZXIga25vd2xlZGdlIG9mIHRoYXQgY2hhbmdlcyBpbnRyb2R1Y2VkIGJldHdlZW4gdmVyc2lvbnMuIEl0J3Mgc2ltcGx5CitzYWZlciB0byBhdm9pZCB0aGUgY29uZmxpY3QsIHdoZW4gYWxsb3dlZCB0byBkbyBzby4KKworSU1QT1JUQU5UOiBHcmVtbGluLUphdmEgaXMgdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBvZiBHcmVtbGluIGFuZCBhbnkgKHByb3BlcikgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IHdpbGwKK2VtdWxhdGUgaXRzIHN0cnVjdHVyZSBhcyBiZXN0IGFzIHBvc3NpYmxlIGdpdmVuIHRoZSBjb25zdHJ1Y3RzIG9mIHRoZSBob3N0IGxhbmd1YWdlLiBBIHN0cm9uZyBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuCit2YXJpYW50cyBlbnN1cmVzIHRoYXQgdGhlIGdlbmVyYWwgR3JlbWxpbiByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpcyBhcHBsaWNhYmxlIHRvIGFsbCB2YXJpYW50cyBhbmQgdGhhdCB1c2VycyBtb3ZpbmcKK2JldHdlZW4gZGV2ZWxvcG1lbnQgbGFuZ3VhZ2VzIGNhbiBlYXNpbHkgYWRvcHQgdGhlIEdyZW1saW4gdmFyaWFudCBmb3IgdGhhdCBsYW5ndWFnZS4KIAogaW1hZ2U6OmdyZW1saW4tdmFyaWFudC1hcmNoaXRlY3R1cmUucG5nW3dpZHRoPTY1MCxmbG9hdD1sZWZ0XQogCiBOT1RFOiBUaGUgaW5mb3JtYXRpb24gaGVyZWluIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnRzIGRpc3RyaWJ1dGVkCi13aXRoIEFwYWNoZSBUaW5rZXJQb3AuIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQsCi1wbGVhc2UgcmV2aWV3IHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL1tHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzXQotdHV0b3JpYWwuCit3aXRoIEFwYWNoZSBUaW5rZXJQb3AuIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQsIHBsZWFzZSByZXZpZXcgdGhlCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvZ3JlbWxpbi1sYW5ndWFnZS12YXJpYW50cy9bR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50c10gdHV0b3JpYWwuCiAKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgZWFjaCBsYW5ndWFnZSB2YXJpYW50IGFuZCBkcml2ZXIgdGhhdCBpcyBvZmZpY2lhbGx5IFRpbmtlclBvcCBhIHBhcnQgb2YgdGhlIHByb2plY3QsCitwcm92aWRlZCBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHVzYWdlLCBjb25maWd1cmF0aW9uIGFuZCBrbm93biBsaW1pdGF0aW9ucy4KKworYW5jaG9yOmNvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoW10KK2FuY2hvcjpjb25uZWN0aW5nLXZpYS1qYXZhW10KIFtbZ3JlbWxpbi1qYXZhXV0KID09IEdyZW1saW4tSmF2YQogCi1pbWFnZTpncmVtbGluLWphdmEtZHJhd2luZy5wbmdbd2lkdGg9MTMwLGZsb2F0PXJpZ2h0XSBBcGFjaGUgVGlua2VyUG9wJ3MgR3JlbWxpbi1KYXZhIGltcGxlbWVudHMgR3JlbWxpbiB3aXRoaW4gdGhlIEphdmE4Ci1sYW5ndWFnZSBhbmQgY2FuIGJlIHVzZWQgYnkgYW55IEphdmE4IGNvbXBsaWFudCB2aXJ0dWFsIG1hY2hpbmUuIEdyZW1saW4tSmF2YSBpcyBjb25zaWRlcmVkIHRoZSBjYW5vbmljYWwsIHJlZmVyZW5jZQoraW1hZ2U6Z3JlbWxpbi1qYXZhLWRyYXdpbmcucG5nW3dpZHRoPTEzMCxmbG9hdD1yaWdodF0gQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4tSmF2YSBpbXBsZW1lbnRzIEdyZW1saW4gd2l0aGluIHRoZQorSmF2YSBsYW5ndWFnZSBhbmQgY2FuIGJlIHVzZWQgYnkgYW55IEphdmEgVmlydHVhbCBNYWNoaW5lLiBHcmVtbGluLUphdmEgaXMgY29uc2lkZXJlZCB0aGUgY2Fub25pY2FsLCByZWZlcmVuY2UKIGltcGxlbWVudGF0aW9uIG9mIEdyZW1saW4gYW5kIHNlcnZlcyBhcyB0aGUgZm91bmRhdGlvbiBieSB3aGljaCBhbGwgb3RoZXIgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50cyBzaG91bGQgZW11bGF0ZS4KK0FzIHRoZSBHcmVtbGluIFRyYXZlcnNhbCBNYWNoaW5lIHRoYXQgcHJvY2Vzc2VzIEdyZW1saW4gcXVlcmllcyBpcyBhbHNvIHdyaXR0ZW4gaW4gSmF2YSwgaXQgY2FuIGJlIHVzZWQgaW4gYWxsIHRocmVlCitjb25uZWN0aW9uIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZSA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBTZWN0aW9uLgorCitbc291cmNlLHhtbF0KKy0tLS0KKzxkZXBlbmRlbmN5PgorICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CisgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWNvcmU8L2FydGlmYWN0SWQ+CisgICA8dmVyc2lvbj54LnkuejwvdmVyc2lvbj4KKzwvZGVwZW5kZW5jeT4KKworPCEtLSB3aGVuIHVzaW5nIEdyZW1saW4gU2VydmVyIG9yIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyIGEgZHJpdmVyIGlzIHJlcXVpcmVkIC0tPgorPGRlcGVuZGVuY3k+CisgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KKyAgIDxhcnRpZmFjdElkPmdyZW1saW4tZHJpdmVyPC9hcnRpZmFjdElkPgorICAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Cis8L2RlcGVuZGVuY3k+CistLS0tCisKKz09PSBDb25uZWN0aW5nCisKK1RoZSBwYXR0ZXJuIGZvciBjb25uZWN0aW5nIGlzIGRlc2NyaWJlZCBpbiA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBhbmQgaXQgYmFzaWNhbGx5IGRpc3RpbGxzIGRvd24KK3RvIGNyZWF0aW5nIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gRm9yIDw8Y29ubmVjdGluZy1lbWJlZGRlZCxlbWJlZGRlZD4+IG1vZGUsIHRoaXMgaW52b2x2ZXMgZmlyc3QgY3JlYXRpbmcgYQorYEdyYXBoYCBhbmQgdGhlbiBzcGF3bmluZyB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYDoKKworW3NvdXJjZSxqYXZhXQorLS0tLQorR3JhcGggZ3JhcGggPSAuLi47CitHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gZ3JhcGgudHJhdmVyc2FsKCk7CistLS0tCisKK1VzaW5nICJnIiBpdCBpcyB0aGVuIHBvc3NpYmxlIHRvIHN0YXJ0IHdyaXRpbmcgR3JlbWxpbi4gVGhlICJnIiBhbGxvd3MgZm9yIHRoZSBzZXR0aW5nIG9mIG1hbnkgY29uZmlndXJhdGlvbiBvcHRpb25zCit3aGljaCBhZmZlY3QgdHJhdmVyc2FsIGV4ZWN1dGlvbi4gVGhlIDw8dHJhdmVyc2FsLCBUcmF2ZXJzYWw+PiBTZWN0aW9uIGRlc2NyaWJlcyBzb21lIG9mIHRoZXNlIG9wdGlvbnMgYW5kIHNvbWUgYXJlCitvbmx5IHN1aXRhYmxlIHdpdGggPDxjb25uZWN0aW5nLWVtYmVkZGVkLGVtYmVkZGVkPj4gc3R5bGUgdXNhZ2UuIEZvciByZW1vdGUgb3B0aW9ucyBob3dldmVyIHRoZXJlIGFyZSBzb21lIGFkZGVkCitjb25maWd1cmF0aW9ucyB0byBjb25zaWRlciBhbmQgdGhpcyBzZWN0aW9uIGxvb2tzIHRvIGFkZHJlc3MgdGhvc2UuCisKK1doZW4gY29ubmVjdGluZyB0byA8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBvciA8PGNvbm5lY3RpbmctcmdwLFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycz4+ICBpdAoraXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgbWFudWFsbHkgYXMgc2hvd24gaW4gZWFybGllciBleGFtcGxlcyB3aGVyZSB0aGUgaG9zdCBhbmQgcG9ydAorYXJlIHByb3ZpZGVkIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoImxvY2FsaG9zdCIsODE4MiwiZyIpKTsKKy0tLS0KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgaXQgZnJvbSBhIGNvbmZpZ3VyYXRpb24uIFRoZSBtb3N0IGJhc2ljIHdheSB0byBkbyBzbyBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIGxpbmUgb2YgY29kZToKKworW3NvdXJjZSxqYXZhXQorLS0tLQorR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoJ2NvbmYvcmVtb3RlLWdyYXBoLnByb3BlcnRpZXMnKTsKKy0tLS0KKworVGhlIGByZW1vdGUtZ3JhcGgucHJvcGVydGllc2AgZmlsZSBzaW1wbHkgcHJvdmlkZXMgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiB0byB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCB3aGljaCBpcyB1c2VkCit0byBjb25maWd1cmUgYSBgUmVtb3RlQ29ubmVjdGlvbmAuIFRoYXQgZmlsZSBsb29rcyBsaWtlIHRoaXM6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4ucmVtb3RlLnJlbW90ZUNvbm5lY3Rpb25DbGFzcz1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbgorZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLmNsdXN0ZXJGaWxlPWNvbmYvcmVtb3RlLW9iamVjdHMueWFtbAorZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLnNvdXJjZU5hbWU9ZworLS0tLQorCitUaGUgYFJlbW90ZUNvbm5lY3Rpb25gIGlzIGFuIGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciAiZyIgYW5kIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGZvcgordGhhdCBtZWNoYW5pc20gdG8gYmUgYWx0ZXJlZCAodHlwaWNhbGx5IGJ5IGdyYXBoIHByb3ZpZGVycyB3aG8gaGF2ZSB0aGVpciBvd24gcHJvdG9jb2xzKS4gVGlua2VyUG9wIHByb3ZpZGVzIG9uZSBzdWNoCitpbXBsZW1lbnRhdGlvbiBjYWxsZWQgdGhlIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYCB3aGljaCBlbmFibGVzIHRyYW5zcG9ydCBvdmVyIEdyZW1saW4gU2VydmVyIHByb3RvY29scyB1c2luZyB0aGUKK1RpbmtlclBvcCBkcml2ZXIuIFRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCBieSB0aGUgc3BlY2lmaWVkIGBncmVtbGluLnJlbW90ZS5kcml2ZXIuY2x1c3RlckZpbGVgIGFuZCB0aGUgbG9jYWwgImciIGlzCitib3VuZCB0byB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBvbiB0aGUgcmVtb3RlIGVuZCB3aXRoIGBncmVtbGluLnJlbW90ZS5kcml2ZXIuc291cmNlTmFtZWAgd2hpY2ggaW4gdGhpcyBjYXNlIGlzCithbHNvICJnIi4KKworVGhlcmUgYXJlIG90aGVyIHdheXMgdG8gY29uZmlndXJlIHRoZSB0cmF2ZXJzYWwgdXNpbmcgYHdpdGhSZW1vdGUoKWAgYXMgaXQgaGFzIG90aGVyIG92ZXJsb2Fkcy4gSXQgY2FuIHRha2UgYW4KK0FwYWNoZSBDb21tb25zIGBDb25maWd1cmF0aW9uYCBvYmplY3Qgd2hpY2ggd291bGQgaGF2ZSBrZXlzIHNpbWlsYXIgdG8gdGhvc2Ugc2hvd24gaW4gdGhlIHByb3BlcnRpZXMgZmlsZSBhbmQgaXQKK2NhbiBhbHNvIHRha2UgYSBgUmVtb3RlQ29ubmVjdGlvbmAgaW5zdGFuY2UgZGlyZWN0bHkuIFRoZSBsYXR0ZXIgaXMgaW50ZXJlc3RpbmcgaW4gdGhhdCBpdCBtZWFucyBpdCBpcyBwb3NzaWJsZSB0bworcHJvZ3JhbW1hdGljYWxseSBjb25zdHJ1Y3QgYWxsIGFzcGVjdHMgb2YgdGhlIGBSZW1vdGVDb25uZWN0aW9uYC4gRm9yIFRpbmtlclBvcCB1c2FnZSwgdGhhdCBtaWdodCBtZWFuIGRpcmVjdGx5Citjb25zdHJ1Y3RpbmcgdGhlIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYCBhbmQgdGhlIGRyaXZlciBpbnN0YW5jZSB0aGF0IHN1cHBsaWVzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtLiBGb3IgZXhhbXBsZSwKK3RoZSBjb21tYW5kIHNob3duIGFib3ZlIGNvdWxkIGJlIHJlLXdyaXR0ZW4gdXNpbmcgcHJvZ3JhbW1hdGljIGNvbnN0cnVjdGlvbiBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsKK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoY2x1c3RlciwgImciKSk7CistLS0tCisKK1BsZWFzZSBjb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK2cgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKCdjb25mL3JlbW90ZS1ncmFwaC5wcm9wZXJ0aWVzJykKK2cuVigpLmVsZW1lbnRNYXAoKQorZy5jbG9zZSgpCistLS0tCisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKCJjb25mL3JlbW90ZS1ncmFwaC5wcm9wZXJ0aWVzIik7CitMaXN0PE1hcD4gbGlzdCA9IGcuVigpLmVsZW1lbnRNYXAoKTsKK2cuY2xvc2UoKTsKKy0tLS0KKworTm90ZSB0aGUgY2FsbCB0byBgY2xvc2UoKWAgYWJvdmUuIFRoZSBjYWxsIHRvIGB3aXRoUmVtb3RlKClgIGludGVybmFsbHkgaW5zdGFudGlhdGVzIGEgY29ubmVjdGlvbiB2aWEgdGhlIGRyaXZlciB0aGF0CitjYW4gb25seSBiZSByZWxlYXNlZCBieSAiY2xvc2luZyIgdGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIEl0IGlzIGltcG9ydGFudCB0byB0YWtlIHRoYXQgc3RlcCB0byByZWxlYXNlIHJlc291cmNlcworY3JlYXRlZCBpbiB0aGF0IHN0ZXAuCisKK0lmIHdvcmtpbmcgd2l0aCBtdWx0aXBsZSByZW1vdGUgYFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNvbnN0cnVjdCBgQ2x1c3RlcmAgYW5kIGBDbGllbnQKK29iamVjdHMgYW5kIHRoZW4gcmUtdXNlIHRoZW0uCisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK2NsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oJ2NvbmYvcmVtb3RlLW9iamVjdHMueWFtbCcpCitjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKQorZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZyhjbGllbnQsICJnIikpCitnLlYoKS5lbGVtZW50TWFwKCkKK2cuY2xvc2UoKQorY2xpZW50LmNsb3NlKCkKK2NsdXN0ZXIuY2xvc2UoKQorLS0tLQorCitJZiB0aGUgYENsaWVudGAgaW5zdGFuY2UgaXMgc3VwcGxpZWQgZXh0ZXJuYWxseSwgYXMgaXMgc2hvd24gYWJvdmUsIHRoZW4gaXQgaXMgbm90IGNsb3NlZCBpbXBsaWNpdGx5IGJ5IHRoZSBjbG9zZSBvZgorImciLiAgQ2xvc2luZyAiZyIgd2lsbCBoYXZlIG5vIGVmZmVjdCBvbiAiY2xpZW50IiBvciAiY2x1c3RlciIuIFdoZW4gc3VwcGx5aW5nIHRoZW0gZXh0ZXJuYWxseSwgdGhlIGBDbGllbnRgIGFuZAorYENsdXN0ZXJgIG9iamVjdHMgbXVzdCBhbHNvIGJlIGNsb3NlZCBleHBsaWNpdGx5LiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBjbG9zZSBvZiBhIGBDbHVzdGVyYCB3aWxsIGNsb3NlIGFsbAorYENsaWVudGAgaW5zdGFuY2VzIHNwYXduZWQgYnkgdGhlIGBDbHVzdGVyYC4KKworSU1QT1JUQU5UOiBCeXRlY29kZS1iYXNlZCB0cmF2ZXJzYWxzIHVzZSB0aGUgYFRyYXZlcnNhbE9wUHJvY2Vzc29yYCBpbiBHcmVtbGluIFNlcnZlciB3aGljaCByZXF1aXJlcyBhIGNhY2hlIHRvIGVuYWJsZQordGhlIHJldHJpZXZhbCBvZiBzaWRlLWVmZmVjdHMgKGlmIHRoZSBgVHJhdmVyc2FsYCBwcm9kdWNlcyBhbnkpLiBUaGF0IGNhY2hlIGNhbiBiZSBjb25maWd1cmVkIChlLmcuIGNvbnRyb2xsaW5nCitldmljdGlvbiB0aW1lcyBhbmQgc2l6aW5nKSBpbiB0aGUgR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlIGFzIGRlc2NyaWJlZCA8PHRyYXZlcnNhbG9wcHJvY2Vzc29yLCBoZXJlPj4uCisKK1NvbWUgY29ubmVjdGlvbiBvcHRpb25zIGNhbiBhbHNvIGJlIHNldCBvbiBpbmRpdmlkdWFsIHJlcXVlc3RzIG1hZGUgdGhyb3VnaCB0aGUgSmF2YSBkcml2ZXIgdXNpbmcgYHdpdGgoKWAgc3RlcAorb24gdGhlIGBUcmF2ZXJzYWxTb3VyY2VgLiBGb3IgaW5zdGFuY2UgdG8gc2V0IHJlcXVlc3QgdGltZW91dCB0byA1MDAgbWlsbGlzZWNvbmRzOgorCitbc291cmNlLGphdmFdCistLS0tCitHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShjb25mKTsKK0xpc3Q8VmVydGV4PiB2ZXJ0aWNlcyA9IGcud2l0aChUb2tlbnMuQVJHU19FVkFMX1RJTUVPVVQsIDUwMEwpLlYoKS5vdXQoImtub3dzIikudG9MaXN0KCkKKy0tLS0KKworW1tqYXZhLWltcG9ydHNdXQorPT09IENvbW1vbiBJbXBvcnRzCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBjbGFzc2VzLCBmdW5jdGlvbnMgYW5kIHRva2VucyB0aGF0IGFyZSB0eXBpY2FsbHkgdXNlZCB3aXRoIEdyZW1saW4uIFRoZSBmb2xsb3dpbmcgaW1wb3J0cworcHJvdmlkZSBtb3N0IG9mIHRoZSBjb21tb24gZnVuY3Rpb25hbGl0eSByZXF1aXJlZCB0byB1c2UgR3JlbWxpbjoKKworW3NvdXJjZSxqYXZhXQorLS0tLQoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU87CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvci4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9yZGVyLio7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcC4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNhY2tGdW5jdGlvbnMuKjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZS4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQLio7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkNvbHVtbi4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb24uKjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVC4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy4qOworLS0tLQorCis9PT0gQ29uZmlndXJhdGlvbgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGRlc2NyaWJlcyB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBHcmVtbGluIERyaXZlcjoKKworW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfEtleSB8RGVzY3JpcHRpb24gfERlZmF1bHQKK3xjb25uZWN0aW9uUG9vbC5jaGFubmVsaXplciB8VGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzc25hbWUgb2YgdGhlIGNsaWVudCBgQ2hhbm5lbGl6ZXJgIHRoYXQgZGVmaW5lcyBob3cgdG8gY29ubmVjdCB0byB0aGUgc2VydmVyLiB8YENoYW5uZWxpemVyLldlYlNvY2tldENoYW5uZWxpemVyYAorfGNvbm5lY3Rpb25Qb29sLmVuYWJsZVNzbCB8RGV0ZXJtaW5lcyBpZiBTU0wgc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90LiBJZiBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgdGhlbiBpdCBtdXN0IGJlIGVuYWJsZWQgb24gdGhlIGNsaWVudC4gfGZhbHNlCit8Y29ubmVjdGlvblBvb2wua2VlcEFsaXZlSW50ZXJ2YWwgfExlbmd0aCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IG9uIGFuIGlkbGUgY29ubmVjdGlvbiBiZWZvcmUgc2VuZGluZyBhIGtlZXAtYWxpdmUgcmVxdWVzdC4gU2V0IHRvIHplcm8gdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuIHwxODAwMDAKK3xjb25uZWN0aW9uUG9vbC5rZXlTdG9yZSB8VGhlIHByaXZhdGUga2V5IGluIEpLUyBvciBQS0NTIzEyIGZvcm1hdC4gfF9ub25lXworfGNvbm5lY3Rpb25Qb29sLmtleVN0b3JlUGFzc3dvcmQgfFRoZSBwYXNzd29yZCBvZiB0aGUgYGtleVN0b3JlYCBpZiBpdCBpcyBwYXNzd29yZC1wcm90ZWN0ZWQuIHxfbm9uZV8KK3xjb25uZWN0aW9uUG9vbC5rZXlTdG9yZVR5cGUgfGBKS1NgIChKYXZhIDggZGVmYXVsdCkgb3IgYFBLQ1MxMmAgKEphdmEgOSsgZGVmYXVsdCl8X25vbmVfCit8Y29ubmVjdGlvblBvb2wubWF4Q29udGVudExlbmd0aCB8VGhlIG1heGltdW0gbGVuZ3RoIGluIGJ5dGVzIHRoYXQgYSBtZXNzYWdlIGNhbiBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIuIFRoaXMgbnVtYmVyIGNhbiBiZSBubyBncmVhdGVyIHRoYW4gdGhlIHNldHRpbmcgb2YgdGhlIHNhbWUgbmFtZSBpbiB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIHw2NTUzNgorfGNvbm5lY3Rpb25Qb29sLm1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gfFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbi1mbGlnaHQgcmVxdWVzdHMgdGhhdCBjYW4gb2NjdXIgb24gYSBjb25uZWN0aW9uLiB8NAorfGNvbm5lY3Rpb25Qb29sLm1heFNpbXVsdGFuZW91c1VzYWdlUGVyQ29ubmVjdGlvbiB8VGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBjb25uZWN0aW9uIGNhbiBiZSBib3Jyb3dlZCBmcm9tIHRoZSBwb29sIHNpbXVsdGFuZW91c2x5LiB8MTYKK3xjb25uZWN0aW9uUG9vbC5tYXhTaXplIHxUaGUgbWF4aW11bSBzaXplIG9mIGEgY29ubmVjdGlvbiBwb29sIGZvciBhIGhvc3QuIHw4Cit8Y29ubmVjdGlvblBvb2wubWF4V2FpdEZvckNvbm5lY3Rpb24gfFRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgYSBuZXcgY29ubmVjdGlvbiBiZWZvcmUgdGltaW5nIG91dC4gfDMwMDAKK3xjb25uZWN0aW9uUG9vbC5tYXhXYWl0Rm9yQ2xvc2UgfFRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgcGVuZGluZyBtZXNzYWdlcyB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIgYmVmb3JlIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24uIHwzMDAwCit8Y29ubmVjdGlvblBvb2wubWluSW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiB8VGhlIG1pbmltdW0gbnVtYmVyIG9mIGluLWZsaWdodCByZXF1ZXN0cyB0aGF0IGNhbiBvY2N1ciBvbiBhIGNvbm5lY3Rpb24uIHwxCit8Y29ubmVjdGlvblBvb2wubWluU2ltdWx0YW5lb3VzVXNhZ2VQZXJDb25uZWN0aW9uIHxUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIGJlIGJvcnJvd2VkIGZyb20gdGhlIHBvb2wgc2ltdWx0YW5lb3VzbHkuIHw4Cit8Y29ubmVjdGlvblBvb2wubWluU2l6ZSB8VGhlIG1pbmltdW0gc2l6ZSBvZiBhIGNvbm5lY3Rpb24gcG9vbCBmb3IgYSBob3N0LiB8MgorfGNvbm5lY3Rpb25Qb29sLnJlY29ubmVjdEludGVydmFsIHxUaGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHRyeWluZyB0byByZWNvbm5lY3QgdG8gYSBkZWFkIGhvc3QuIHwxMDAwCit8Y29ubmVjdGlvblBvb2wucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplIHxUaGUgb3ZlcnJpZGUgdmFsdWUgZm9yIHRoZSBzaXplIG9mIHRoZSByZXN1bHQgYmF0Y2hlcyB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuIHw2NAorfGNvbm5lY3Rpb25Qb29sLnNzbENpcGhlclN1aXRlcyB8VGhlIGxpc3Qgb2YgSlNTRSBjaXBoZXJzIHRvIHN1cHBvcnQgZm9yIFNTTCBjb25uZWN0aW9ucy4gSWYgc3BlY2lmaWVkLCBvbmx5IHRoZSBjaXBoZXJzIHRoYXQgYXJlIGxpc3RlZCBhbmQgc3VwcG9ydGVkIHdpbGwgYmUgZW5hYmxlZC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIEpWTSBkZWZhdWx0IGlzIHVzZWQuICB8X25vbmVfCit8Y29ubmVjdGlvblBvb2wuc3NsRW5hYmxlZFByb3RvY29scyB8VGhlIGxpc3Qgb2YgU1NMIHByb3RvY29scyB0byBzdXBwb3J0IGZvciBTU0wgY29ubmVjdGlvbnMuIElmIHNwZWNpZmllZCwgb25seSB0aGUgcHJvdG9jb2xzIHRoYXQgYXJlIGxpc3RlZCBhbmQgc3VwcG9ydGVkIHdpbGwgYmUgZW5hYmxlZC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIEpWTSBkZWZhdWx0IGlzIHVzZWQuICB8X25vbmVfCit8Y29ubmVjdGlvblBvb2wuc3NsU2tpcENlcnRWYWxpZGF0aW9uIHxDb25maWd1cmVzIHRoZSBgVHJ1c3RNYW5hZ2VyYCB0byB0cnVzdCBhbGwgY2VydHMgd2l0aG91dCBhbnkgdmFsaWRhdGlvbi4gU2hvdWxkIG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24ufGZhbHNlCit8Y29ubmVjdGlvblBvb2wudHJ1c3RTdG9yZSB8RmlsZSBsb2NhdGlvbiBmb3IgYSBTU0wgQ2VydGlmaWNhdGUgQ2hhaW4gdG8gdXNlIHdoZW4gU1NMIGlzIGVuYWJsZWQuIElmIHRoaXMgdmFsdWUgaXMgbm90IHByb3ZpZGVkIGFuZCBTU0wgaXMgZW5hYmxlZCwgdGhlIGRlZmF1bHQgYFRydXN0TWFuYWdlcmAgd2lsbCBiZSB1c2VkLiB8X25vbmVfCit8Y29ubmVjdGlvblBvb2wudHJ1c3RTdG9yZVBhc3N3b3JkIHxUaGUgcGFzc3dvcmQgb2YgdGhlIGB0cnVzdFN0b3JlYCBpZiBpdCBpcyBwYXNzd29yZC1wcm90ZWN0ZWQgfF9ub25lXworfGNvbm5lY3Rpb25Qb29sLnZhbGlkYXRpb25SZXF1ZXN0IHxBIHNjcmlwdCB0aGF0IGlzIHVzZWQgdG8gdGVzdCBzZXJ2ZXIgY29ubmVjdGl2aXR5LiBBIGdvb2Qgc2NyaXB0IHRvIHVzZSBpcyBvbmUgdGhhdCBldmFsdWF0ZXMgcXVpY2tseSBhbmQgcmV0dXJucyBubyBkYXRhLiBUaGUgZGVmYXVsdCBzaW1wbHkgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcsIGJ1dCBpZiBhIGdyYXBoIGlzIHJlcXVpcmVkIGJ5IGEgcGFydGljdWxhciBwcm92aWRlciwgYSBnb29kIHRyYXZlcnNhbCBtaWdodCBiZSBgZy5pbmplY3QoKWAuIHxfJydfCit8aG9zdHMgfFRoZSBsaXN0IG9mIGhvc3RzIHRoYXQgdGhlIGRyaXZlciB3aWxsIGNvbm5lY3QgdG8uIHxsb2NhbGhvc3QKK3xqYWFzRW50cnkgfFNldHMgdGhlIGBBdXRoUHJvcGVydGllcy5Qcm9wZXJ0eS5KQUFTX0VOVFJZYCBwcm9wZXJ0aWVzIGZvciBhdXRoZW50aWNhdGlvbiB0byBHcmVtbGluIFNlcnZlci4gfF9ub25lXworfG5pb1Bvb2xTaXplIHxTaXplIG9mIHRoZSBwb29sIGZvciBoYW5kbGluZyByZXF1ZXN0L3Jlc3BvbnNlIG9wZXJhdGlvbnMuIHxhdmFpbGFibGUgcHJvY2Vzc29ycworfHBhc3N3b3JkIHxUaGUgcGFzc3dvcmQgdG8gc3VibWl0IG9uIHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4gfF9ub25lXworfHBhdGggfFRoZSBVUkwgcGF0aCB0byB0aGUgR3JlbWxpbiBTZXJ2ZXIuIHxfL2dyZW1saW5fCit8cG9ydCB8VGhlIHBvcnQgb2YgdGhlIEdyZW1saW4gU2VydmVyIHRvIGNvbm5lY3QgdG8uIFRoZSBzYW1lIHBvcnQgd2lsbCBiZSBhcHBsaWVkIGZvciBhbGwgaG9zdHMuIHw4MTkyCit8cHJvdG9jb2wgfFNldHMgdGhlIGBBdXRoUHJvcGVydGllcy5Qcm9wZXJ0eS5QUk9UT0NPTGAgcHJvcGVydGllcyBmb3IgYXV0aGVudGljYXRpb24gdG8gR3JlbWxpbiBTZXJ2ZXIuIHxfbm9uZV8KK3xzZXJpYWxpemVyLmNsYXNzTmFtZSB8VGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzcyBuYW1lIG9mIHRoZSBgTWVzc2FnZVNlcmlhbGl6ZXJgIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHNlcnZlci4gTm90ZSB0aGF0IHRoZSBzZXJpYWxpemVyIGNvbmZpZ3VyZWQgb24gdGhlIGNsaWVudCBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbi4gfF9ub25lXworfHNlcmlhbGl6ZXIuY29uZmlnIHxBIGBNYXBgIG9mIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBzZXJpYWxpemVyLiB8X25vbmVfCit8dXNlcm5hbWUgfFRoZSB1c2VybmFtZSB0byBzdWJtaXQgb24gcmVxdWVzdHMgdGhhdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLiB8X25vbmVfCit8d29ya2VyUG9vbFNpemUgfFNpemUgb2YgdGhlIHBvb2wgZm9yIGhhbmRsaW5nIGJhY2tncm91bmQgd29yay4gfGF2YWlsYWJsZSBwcm9jZXNzb3JzICogMgorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2Ugc2VlIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9DbHVzdGVyLkJ1aWxkZXIuaHRtbFtDbHVzdGVyLkJ1aWxkZXIgamF2YWRvY10gdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2Ugc2V0dGluZ3MuCisKKz09PSBTZXJpYWxpemF0aW9uCisKK1JlbW90ZSBzeXN0ZW1zIGxpa2UgR3JlbWxpbiBTZXJ2ZXIgYW5kIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycyByZXNwb25kIHRvIHJlcXVlc3RzIG1hZGUgaW4gYSBwYXJ0aWN1bGFyIHNlcmlhbGl6YXRpb24KK2Zvcm1hdCBhbmQgcmVzcG9uZCBieSBzZXJpYWxpemluZyByZXN1bHRzIHRvIHNvbWUgZm9ybWF0IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBjbGllbnQuIEZvciBKVk0tYmFzZWQgbGFuZ3VhZ2VzLAordGhlcmUgYXJlIHRocmVlIG9wdGlvbnMgZm9yIHNlcmlhbGl6YXRpb246IEdyeW8sIEdyYXBoU09OIGFuZCBHcmFwaEJpbmFyeS4gV2hlbiB1c2luZyBHcnlvIHNlcmlhbGl6YXRpb24gKHRoZSBkZWZhdWx0CitzZXJpYWxpemVyIGZvciB0aGUgSmF2YSBkcml2ZXIpLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgaGF2ZSB0aGUgc2FtZSBzZXJpYWxpemVycyBjb25maWd1cmVkIG9yCitlbHNlIG9uZSBvciB0aGUgb3RoZXIgd2lsbCBleHBlcmllbmNlIHNlcmlhbGl6YXRpb24gZXhjZXB0aW9ucyBhbmQgZmFpbCB0byBhbHdheXMgY29tbXVuaWNhdGUuIERpc2NyZXBhbmN5IGluCitzZXJpYWxpemVyIHJlZ2lzdHJhdGlvbiBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVyIGNhbiBoYXBwZW4gZmFpcmx5IGVhc2lseSBhcyBncmFwaHMgd2lsbCBhdXRvbWF0aWNhbGx5IGluY2x1ZGUKK3NlcmlhbGl6ZXJzIG9uIHRoZSBzZXJ2ZXItc2lkZSwgdGh1cyBsZWF2aW5nIHRoZSBjbGllbnQgdG8gYmUgY29uZmlndXJlZCBtYW51YWxseS4gVGhpcyBjYW4gYmUgZG9uZSBtYW51YWxseSBhcworZm9sbG93czoKKworW3NvdXJjZSxqYXZhXQorLS0tLQorSW9SZWdpc3RyeSByZWdpc3RyeSA9IC4uLjsgLy8gYW4gSW9SZWdpc3RyeSBpbnN0YW5jZSBleHBvc2VkIGJ5IGEgc3BlY2lmaWMgZ3JhcGggcHJvdmlkZXIKK0dyeW9NYXBwZXIga3J5byA9IEdyeW9NYXBwZXIuYnVpbGQoKS5hZGRSZWdpc3RyeShyZWdpc3RyeSkuY3JlYXRlKCk7CitNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoa3J5byk7CitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLmJ1aWxkKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIoc2VyaWFsaXplcikuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSgpOworQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZyhjbGllbnQsICJnIikpOworLS0tLQorCitUaGUgYElvUmVnaXN0cnlgIHRlbGxzIHRoZSBzZXJpYWxpemVyIHdoYXQgY2xhc3NlcyBmcm9tIHRoZSBncmFwaCBwcm92aWRlciB0byBhdXRvLXJlZ2lzdGVyIGR1cmluZyBzZXJpYWxpemF0aW9uLgorR3JlbWxpbiBTZXJ2ZXIgcm91Z2hseSB1c2VzIHRoaXMgc2FtZSBhcHByb2FjaCB3aGVuIGl0IGNvbmZpZ3VyZXMgaXRzIHNlcmlhbGl6ZXJzLCBzbyB1c2luZyB0aGlzIHNhbWUgbW9kZWwgd2lsbAorZW5zdXJlIGNvbXBhdGliaWxpdHkgd2hlbiBtYWtpbmcgcmVxdWVzdHMuIE9idmlvdXNseSwgaXQgaXMgcG9zc2libGUgdG8gc3dpdGNoIHRvIEdyYXBoU09OIG9yIEdyYXBoQmluYXJ5IGJ5IGJ1aWxkaW5nCit0aGUgYXBwcm9wcmlhdGUgYE1lc3NhZ2VTZXJpYWxpemVyYCAoYEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwYCBvciBgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxYCByZXNwZWN0aXZlbHkpCitpbiB0aGUgc2FtZSB3YXkgYW5kIGJ1aWxkaW5nIHRoYXQgaW50byB0aGUgYENsdXN0ZXJgIG9iamVjdC4KIAogPT09IFRoZSBMYW1iZGEgU29sdXRpb24KIAogU3VwcG9ydGluZyBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Fub255bW91c19mdW5jdGlvblthbm9ueW1vdXMgZnVuY3Rpb25zXSBhY3Jvc3MgbGFuZ3VhZ2VzIGlzIGRpZmZpY3VsdCBhcwotbW9zdCBsYW5ndWFnZXMgZG8gbm90IHN1cHBvcnQgbGFtYmRhIGludHJvc3BlY3Rpb24gYW5kIHRodXMsIGNvZGUgYW5hbHlzaXMuIEluIEdyZW1saW4tSmF2YSwgSmF2YTggbGFtYmRhcyBjYW4gYmUgbGV2ZXJhZ2VkLgorbW9zdCBsYW5ndWFnZXMgZG8gbm90IHN1cHBvcnQgbGFtYmRhIGludHJvc3BlY3Rpb24gYW5kIHRodXMsIGNvZGUgYW5hbHlzaXMuIEluIEdyZW1saW4tSmF2YSBhbmQgd2l0aAorPDxjb25uZWN0aW5nLWVtYmVkZGVkLGVtYmVkZGVkPj4gdXNhZ2UsIGxhbWJkYXMgY2FuIGJlIGxldmVyYWdlZCBkaXJlY3RseToKIAogW3NvdXJjZSxqYXZhXQorLS0tLQogZy5WKCkub3V0KCJrbm93cyIpLm1hcCh0IC0+IHQuZ2V0KCkudmFsdWUoIm5hbWUiKSArICIgaXMgdGhlIGZyaWVuZCBuYW1lIikgPDE+CiBnLlYoKS5vdXQoImtub3dzIikuc2lkZUVmZmVjdChTeXN0ZW0ub3V0OjpwcmludGxuKSA8Mj4KIGcuVigpLmFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJiIikuc2VsZWN0KCJiIikuYnkoKEZ1bmN0aW9uPFZlcnRleCwgSW50ZWdlcj4pIHYgLT4gdi48U3RyaW5nPnZhbHVlKCJuYW1lIikubGVuZ3RoKCkpIDwzPgorLS0tLQogCi08MT4gQSBKYXZhOCBmdW5jdGlvbiBpcyB1c2VkIHRvIG1hcCBhIGBUcmF2ZXJzZXI8Uz5gIHRvIGFuIG9iamVjdCBgRWAuCi08Mj4gR3JlbWxpbiBzdGVwcyB0aGF0IHRha2UgY29uc3VtZXIgYXJndW1lbnRzIGNhbiBiZSBwYXNzZWQgSmF2YTggbWV0aG9kIHJlZmVyZW5jZXMuCis8MT4gQSBKYXZhIGBGdW5jdGlvbmAgaXMgdXNlZCB0byBtYXAgYSBgVHJhdmVyc2VyPFM+YCB0byBhbiBvYmplY3QgYEVgLgorPDI+IEdyZW1saW4gc3RlcHMgdGhhdCB0YWtlIGNvbnN1bWVyIGFyZ3VtZW50cyBjYW4gYmUgcGFzc2VkIEphdmEgbWV0aG9kIHJlZmVyZW5jZXMuCiA8Mz4gR3JlbWxpbi1KYXZhIG1heSBzb21ldGltZXMgcmVxdWlyZSBleHBsaWNpdCBsYW1iZGEgdHlwaW5nIHdoZW4gdHlwZXMgY2FuIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGluZmVycmVkLgogCi1XaGVuIHNlbmRpbmcgdHJhdmVyc2FscyBvdmVyIHRoZSB3aXJlIHZpYSBhIGBSZW1vdGVDb25uZWN0aW9uYCwgdGhlIHN0YXRpYyBtZXRob2RzIG9mIGBMYW1iZGFgIHNob3VsZCBiZSB1c2VkCi1hbmQgc2hvdWxkIGRlbm90ZSBhIHBhcnRpY3VsYXIgSlNSLTIyMyBgU2NyaXB0RW5naW5lYC4gYExhbWJkYWAgY3JlYXRlcyBhIHN0cmluZy1iYXNlZCBsYW1iZGEgdGhhdCBpcyB0aGVuIGNvbnZlcnRlZAotaW50byBhIGxhbWJkYS9jbG9zdXJlL2Fub255bW91cy1mdW5jdGlvbi9ldGMuIGJ5IHRoZSByZXNwZWN0aXZlIGxhbWJkYSBsYW5ndWFnZSdzIEpTUi0yMjMgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24uCitXaGVuIHNlbmRpbmcgdHJhdmVyc2FscyByZW1vdGVseSB0byA8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBvcgorPDxjb25uZWN0aW5nLXJncCxSZW1vdGUgR3JlbWxpbiBQcm92aWRlcnM+PiwgdGhlIHN0YXRpYyBtZXRob2RzIG9mIGBMYW1iZGFgIHNob3VsZCBiZSB1c2VkIGFuZCBzaG91bGQgZGVub3RlIGEKK3BhcnRpY3VsYXIgSlNSLTIyMyBgU2NyaXB0RW5naW5lYCB0aGF0IGlzIGF2YWlsYWJsZSBvbiB0aGUgcmVtb3RlIGVuZCAodHlwaWNhbGx5LCB0aGlzIGlzIEdyb292eSkuIGBMYW1iZGFgIGNyZWF0ZXMgYQorc3RyaW5nLWJhc2VkIGxhbWJkYSB0aGF0IGlzICB0aGVuIGNvbnZlcnRlZCBpbnRvIGEgbGFtYmRhL2Nsb3N1cmUvYW5vbnltb3VzLWZ1bmN0aW9uL2V0Yy4gYnkgdGhlIHJlc3BlY3RpdmUgbGFtYmRhCitsYW5ndWFnZSdzIEpTUi0yMjMgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24uCiAKIFtzb3VyY2UsamF2YV0KKy0tLS0KIGcuVigpLm91dCgia25vd3MiKS5tYXAoTGFtYmRhLmZ1bmN0aW9uKCJpdC5nZXQoKS52YWx1ZSgnbmFtZScpICsgJyBpcyB0aGUgZnJpZW5kIG5hbWUnIikpCiBnLlYoKS5vdXQoImtub3dzIikuc2lkZUVmZmVjdChMYW1iZGEuY29uc3VtZXIoInByaW50bG4gaXQiKSkKIGcuVigpLmFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJiIikuc2VsZWN0KCJiIikuYnkoTGFtYmRhLjxWZXJ0ZXgsSW50ZWdlcj5mdW5jdGlvbigiaXQudmFsdWUoJ25hbWUnKS5sZW5ndGgoKSIpKQorLS0tLQorCitGaW5hbGx5LCBHcmVtbGluIGBCeXRlY29kZWAgdGhhdCBpbmNsdWRlcyBsYW1iZGFzIHJlcXVpcmVzIHRoYXQgdGhlIHRyYXZlcnNhbCBiZSBwcm9jZXNzZWQgYnkgdGhlCitgU2NyaXB0RW5naW5lYC4gVG8gYXZvaWQgY29udGludWVkIHJlY29tcGlsYXRpb24gY29zdHMsIGl0IHN1cHBvcnRzIHRoZSBlbmNvZGluZyBvZiBiaW5kaW5ncywgd2hpY2ggYWxsb3cgR3JlbWxpbgorU2VydmVyIHRvIGNhY2hlIHRyYXZlcnNhbHMgdGhhdCB3aWxsIGJlIHJldXNlZCBvdmVyIGFuZCBvdmVyIGFnYWluIHNhdmUgdGhhdCBzb21lIHBhcmFtZXRlcml6YXRpb24gbWF5IGNoYW5nZS4gVGh1cywKK2luc3RlYWQgb2YgdHJhbnNsYXRpbmcsIGNvbXBpbGluZywgYW5kIHRoZW4gZXhlY3V0aW5nIGVhY2ggc3VibWl0dGVkIGJ5dGVjb2RlIHJlcXVlc3QsIGl0IGlzIHBvc3NpYmxlIHRvIHNpbXBseQorZXhlY3V0ZS4gVG8gZXhwcmVzcyBiaW5kaW5ncyBpbiBKYXZhLCB1c2UgYEJpbmRpbmdzYC4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorYiA9IEJpbmRpbmdzLmluc3RhbmNlKCkKK2cuVihiLm9mKCdpZCcsMSkpLm91dCgnY3JlYXRlZCcpLnZhbHVlcygnbmFtZScpLm1hcHt0IC0+ICJuYW1lOiAiICsgdC5nZXQoKSB9CitnLlYoYi5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKS5tYXB7dCAtPiAibmFtZTogIiArIHQuZ2V0KCkgfQorZy5WKGIub2YoJ2lkJyw0KSkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykuZ2V0Qnl0ZWNvZGUoKQorZy5WKGIub2YoJ2lkJyw0KSkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykuZ2V0Qnl0ZWNvZGUoKS5nZXRCaW5kaW5ncygpCitjbHVzdGVyLmNsb3NlKCkKKy0tLS0KKworQm90aCB0cmF2ZXJzYWxzIGFyZSBhYnN0cmFjdGx5IGRlZmluZWQgYXMgYGcuVihpZCkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykubWFwe3QgLT4gIm5hbWU6ICIgKyB0LmdldCgpIH1gIGFuZAordGh1cywgdGhlIGZpcnN0IHN1Ym1pc3Npb24gY2FuIGJlIGNhY2hlZCBmb3IgZmFzdGVyIGV2YWx1YXRpb24gb24gdGhlIG5leHQgc3VibWlzc2lvbi4KKworV0FSTklORzogSXQgaXMgZ2VuZXJhbGx5IGFkdmlzZWQgdG8gYXZvaWQgbGFtYmRhIHVzYWdlLiBQbGVhc2UgY29uc2lkZXIgPDxhLW5vdGUtb24tbGFtYmRhcyxBIE5vdGUgT24gTGFtYmRhcz4+IGZvcgorbW9yZSBpbmZvcm1hdGlvbi4KKworPT09IFN1Ym1pdHRpbmcgU2NyaXB0cworCitXQVJOSU5HOiBUaW5rZXJQb3AgZG9lcyBub3QgcmVjb21tZW5kIHN1Ym1pdHRpbmcgc2NyaXB0LWJhc2VkIHJlcXVlc3RzIGFuZCBnZW5lcmFsbHkgY29udGludWVzIHRvIHN1cHBvcnQgdGhpcyBmZWF0dXJlCitmb3IgbGVnYWN5IHJlYXNvbnMgYW5kIGNvcm5lciB1c2UgY2FzZXMgd2hpY2ggYXJlIHN0aWxsIG5vdCBjb21wbGV0ZWx5IGFkZHJlc3NlZCBieSB0aGUgR3JlbWxpbiBsYW5ndWFnZS4gUGxlYXNlCitjb25zaWRlciB1c2luZyBieXRlY29kZS1iYXNlZCByZXF1ZXN0cyBpbnN0ZWFkIHdoZW4gcG9zc2libGUuCisKK2ltYWdlOmdyZW1saW4tamF2YS5wbmdbd2lkdGg9MTc1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCBjb21lcyBlcXVpcHBlZCB3aXRoIGEgcmVmZXJlbmNlIGNsaWVudCBmb3IgSmF2YS1iYXNlZAorYXBwbGljYXRpb25zLiAgSXQgaXMgcmVmZXJyZWQgdG8gYXMgYGdyZW1saW4tZHJpdmVyYCwgd2hpY2ggZW5hYmxlcyBhcHBsaWNhdGlvbnMgdG8gc2VuZCByZXF1ZXN0cyB0byBHcmVtbGluIFNlcnZlcgorYW5kIGdldCBiYWNrIHJlc3VsdHMuCisKK0dyZW1saW4gc2NyaXB0cyBhcmUgc2VudCB0byB0aGUgc2VydmVyIGZyb20gYSBgQ2xpZW50YCBpbnN0YW5jZS4gIEEgYENsaWVudGAgaXMgY3JlYXRlZCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsgIDwxPgorQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOyA8Mj4KKy0tLS0KKworPDE+IE9wZW5zIGEgcmVmZXJlbmNlIHRvIGBsb2NhbGhvc3RgIC0gbm90ZSB0aGF0IHRoZXJlIGFyZSBtYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgaW4gZGVmaW5pbmcgYSBgQ2x1c3RlcmAgb2JqZWN0LgorPDI+IENyZWF0ZXMgYSBgQ2xpZW50YCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9mIHRoZSBgQ2x1c3RlcmAuCisKK09uY2UgYSBgQ2xpZW50YCBpbnN0YW5jZSBpcyByZWFkeSwgaXQgaXMgcG9zc2libGUgdG8gaXNzdWUgc29tZSBHcmVtbGluIEdyb292eSBzY3JpcHRzOgorCitbc291cmNlLGphdmFdCistLS0tCitSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoIlsxLDIsMyw0XSIpOyAgPDE+CityZXN1bHRzLnN0cmVhbSgpLm1hcChpIC0+IGkuZ2V0KEludGVnZXIuY2xhc3MpICogMik7ICAgICAgIDwyPgorCitDb21wbGV0YWJsZUZ1dHVyZTxMaXN0PFJlc3VsdD4+IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJbMSwyLDMsNF0iKS5hbGwoKTsgIDwzPgorCitDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IGZ1dHVyZSA9IGNsaWVudC5zdWJtaXRBc3luYygiWzEsMiwzLDRdIik7IDw0PgorCitNYXA8U3RyaW5nLE9iamVjdD4gcGFyYW1zID0gbmV3IEhhc2hNYXA8PigpOworcGFyYW1zLnB1dCgieCIsNCk7CitjbGllbnQuc3VibWl0KCJbMSwyLDMseF0iLCBwYXJhbXMpOyA8NT4KKy0tLS0KKworPDE+IFN1Ym1pdHMgYSBzY3JpcHQgdGhhdCBzaW1wbHkgcmV0dXJucyBhIGBMaXN0YCBvZiBpbnRlZ2Vycy4gIFRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgcmVxdWVzdCBpcyB3cml0dGVuIHRvCit0aGUgc2VydmVyIGFuZCBhIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLgorPDI+IEV2ZW4gdGhvdWdoIHRoZSBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZCwgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBzZXJ2ZXIgaGFzIHNlbnQgYmFjayB0aGUgcmVzdWx0cyAob3IgZXZlbgorZXZhbHVhdGVkIHRoZSBzY3JpcHQgcG90ZW50aWFsbHkpLiAgVGhlIGBSZXN1bHRTZXRgIGlzIGp1c3QgYSBob2xkZXIgdGhhdCBpcyBhd2FpdGluZyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBzZXJ2ZXIuCitJbiB0aGlzIGNhc2UsIHRoZXkgYXJlIHN0cmVhbWVkIGZyb20gdGhlIHNlcnZlciBhcyB0aGV5IGFycml2ZS4KKzwzPiBTdWJtaXQgYSBzY3JpcHQsIGdldCBhIGBSZXN1bHRTZXRgLCB0aGVuIHJldHVybiBhIGBDb21wbGV0YWJsZUZ1dHVyZWAgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGFsbCByZXN1bHRzIGhhdmUgYmVlbiByZXR1cm5lZC4KKzw0PiBTdWJtaXQgYSBzY3JpcHQgYXN5bmNocm9ub3VzbHkgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgcmVxdWVzdCB0byBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIuCis8NT4gUGFyYW1ldGVyaXplZCByZXF1ZXN0IGFyZSBjb25zaWRlcmVkIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gc2VuZCBHcmVtbGluIHRvIHRoZSBzZXJ2ZXIgYXMgdGhleSBjYW4gYmUgY2FjaGVkLAord2hpY2ggd2lsbCBib29zdCBwZXJmb3JtYW5jZSBhbmQgcmVkdWNlIHJlc291cmNlcyByZXF1aXJlZCBvbiB0aGUgc2VydmVyLgorCis9PT09IFBlciBSZXF1ZXN0IFNldHRpbmdzCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBvdmVybG9hZHMgdG8gYENsaWVudC5zdWJtaXQoKWAgdGhhdCBhY2NlcHQgYSBgUmVxdWVzdE9wdGlvbnNgIG9iamVjdC4gVGhlIGBSZXF1ZXN0T3B0aW9uc2AKK3Byb3ZpZGUgYSB3YXkgdG8gaW5jbHVkZSBvcHRpb25zIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSByZXF1ZXN0IG1hZGUgd2l0aCB0aGUgY2FsbCB0byBgc3VibWl0KClgLiBBIGdvb2QgdXNlLWNhc2UgZm9yCit0aGlzIGZlYXR1cmUgaXMgdG8gc2V0IGEgcGVyLXJlcXVlc3Qgb3ZlcnJpZGUgdG8gdGhlIGBzY3JpcHRFdmFsdWF0aW9uVGltZW91dGAgc28gdGhhdCBpdCBvbmx5IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQKK3JlcXVlc3QuCisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0NsdXN0ZXIgY2x1c3RlciA9IENsdXN0ZXIub3BlbigpOworQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworUmVxdWVzdE9wdGlvbnMgb3B0aW9ucyA9IFJlcXVlc3RPcHRpb25zLmJ1aWxkKCkudGltZW91dCg1MDApLmNyZWF0ZSgpOworTGlzdDxSZXN1bHQ+IHJlc3VsdCA9IGNsaWVudC5zdWJtaXQoImcuVigpIiwgb3B0aW9ucykuYWxsKCkuZ2V0KCk7CistLS0tCisKKz09PT0gQWxpYXNlcworCitTY3JpcHRzIHN1Ym1pdHRlZCB0byBHcmVtbGluIFNlcnZlciBhdXRvbWF0aWNhbGx5IGhhdmUgdGhlIGdsb2JhbGx5IGNvbmZpZ3VyZWQgYEdyYXBoYCBhbmQgYFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzCittYWRlIGF2YWlsYWJsZSB0byB0aGVtLiAgVGhlcmVmb3JlLCBpZiBHcmVtbGluIFNlcnZlciBjb25maWd1cmVzIHR3byBgVHJhdmVyc2FsU291cmNlYCBpbnN0YW5jZXMgY2FsbGVkICJnMSIgYW5kICJnMiIKK2Egc2NyaXB0IGNhbiBzaW1wbHkgcmVmZXJlbmNlIHRoZW0gZGlyZWN0bHkgYXM6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2NsaWVudC5zdWJtaXQoImcxLlYoKSIpCitjbGllbnQuc3VibWl0KCJnMi5WKCkiKQorLS0tLQorCitXaGlsZSB0aGlzIGlzIGFuIGFjY2VwdGFibGUgd2F5IHRvIHN1Ym1pdCBzY3JpcHRzLCBpdCBoYXMgdGhlIGRvd25zaWRlIG9mIGZvcmNpbmcgdGhlIGNsaWVudCB0byBlbmNvZGUgdGhlIHNlcnZlci1zaWRlCit2YXJpYWJsZSBuYW1lIGRpcmVjdGx5IGludG8gdGhlIHNjcmlwdCBiZWluZyBzZW50LiAgSWYgdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGV2ZXIgY2hhbmdlZCBzdWNoIHRoYXQgImcxIiBiZWNhbWUKKyJnMTAwIiwgdGhlIGNsaWVudC1zaWRlIGNvZGUgbWlnaHQgaGF2ZSB0byBzZWUgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgY2hhbmdlLiAgRGVjb3VwbGluZyB0aGUgc2NyaXB0IGNvZGUgZnJvbSB0aGUKK3NlcnZlciBjb25maWd1cmF0aW9uIGNhbiBiZSBtYW5hZ2VkIGJ5IHRoZSBgYWxpYXNgIG1ldGhvZCBvbiBgQ2xpZW50YCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitDbGllbnQgZzFDbGllbnQgPSBjbGllbnQuYWxpYXMoImcxIikKK0NsaWVudCBnMkNsaWVudCA9IGNsaWVudC5hbGlhcygiZzIiKQorZzFDbGllbnQuc3VibWl0KCJnLlYoKSIpCitnMkNsaWVudC5zdWJtaXQoImcuVigpIikKKy0tLS0KKworVGhlIGFib3ZlIGNvZGUgZGVtb25zdHJhdGVzIGhvdyB0aGUgYGFsaWFzYCBtZXRob2QgY2FuIGJlIHVzZWQgc3VjaCB0aGF0IHRoZSBzY3JpcHQgbmVlZCBvbmx5IGNvbnRhaW4gYSByZWZlcmVuY2UKK3RvICJnIiBhbmQgImcxIiBhbmQgImcyIiBhcmUgYXV0b21hdGljYWxseSByZWJvdW5kIGludG8gImciIG9uIHRoZSBzZXJ2ZXItc2lkZS4KKworW1tncmVtbGluLWphdmEtZHNsXV0KKz09PSBEb21haW4gU3BlY2lmaWMgTGFuZ3VhZ2VzCisKK0NyZWF0aW5nIGEgPDxkc2wsRG9tYWluIFNwZWNpZmljIExhbmd1YWdlPj4gKERTTCkgaW4gSmF2YSByZXF1aXJlcyB0aGUgYEBHcmVtbGluRHNsYCBKYXZhIGFubm90YXRpb24gaW4gYGdyZW1saW4tY29yZWAuCitUaGlzIGFubm90YXRpb24gc2hvdWxkIGJlIGFwcGxpZWQgdG8gYSAiRFNMIGludGVyZmFjZSIgdGhhdCBleHRlbmRzIGBHcmFwaFRyYXZlcnNhbC5BZG1pbmA6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0BHcmVtbGluRHNsCitwdWJsaWMgaW50ZXJmYWNlIFNvY2lhbFRyYXZlcnNhbERzbDxTLCBFPiBleHRlbmRzIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsIEU+IHsKK30KKy0tLS0KKworSU1QT1JUQU5UOiBUaGUgbmFtZSBvZiB0aGUgRFNMIGludGVyZmFjZSBzaG91bGQgYmUgc3VmZml4ZWQgd2l0aCAiVHJhdmVyc2FsRFNMIi4gQWxsIGNoYXJhY3RlcnMgaW4gdGhlIGludGVyZmFjZSBuYW1lCitiZWZvcmUgdGhhdCBiZWNvbWUgdGhlICJuYW1lIiBvZiB0aGUgRFNMLgorCitJbiB0aGlzIGludGVyZmFjZSwgZGVmaW5lIHRoZSBtZXRob2RzIHRoYXQgdGhlIERTTCB3aWxsIGJlIGNvbXBvc2VkIG9mOgorCitbc291cmNlLGphdmFdCistLS0tCitAR3JlbWxpbkRzbAorcHVibGljIGludGVyZmFjZSBTb2NpYWxUcmF2ZXJzYWxEc2w8UywgRT4gZXh0ZW5kcyBHcmFwaFRyYXZlcnNhbC5BZG1pbjxTLCBFPiB7CisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UywgVmVydGV4PiBrbm93cyhTdHJpbmcgcGVyc29uTmFtZSkgeworICAgICAgICByZXR1cm4gb3V0KCJrbm93cyIpLmhhc0xhYmVsKCJwZXJzb24iKS5oYXMoIm5hbWUiLCBwZXJzb25OYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZGVmYXVsdCA8RTIgZXh0ZW5kcyBOdW1iZXI+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiB5b3VuZ2VzdEZyaWVuZHNBZ2UoKSB7CisgICAgICAgIHJldHVybiBvdXQoImtub3dzIikuaGFzTGFiZWwoInBlcnNvbiIpLnZhbHVlcygiYWdlIikubWluKCk7CisgICAgfQorCisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UywgTG9uZz4gY3JlYXRlZEF0TGVhc3QoaW50IG51bWJlcikgeworICAgICAgICByZXR1cm4gb3V0RSgiY3JlYXRlZCIpLmNvdW50KCkuaXMoUC5ndGUobnVtYmVyKSk7CisgICAgfQorfQorLS0tLQorCitJTVBPUlRBTlQ6IEZvbGxvdyB0aGUgVGlua2VyUG9wIGNvbnZlbnRpb24gb2YgdXNpbmcgYDxTLEU+YCBpbiBuYW1pbmcgZ2VuZXJpY3MgYXMgdGhvc2UgY29udmVudGlvbnMgYXJlIHRha2VuIGludG8KK2FjY291bnQgd2hlbiBnZW5lcmF0aW5nIHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzLiBUaGUgcHJvY2Vzc29yIGF0dGVtcHRzIHRvIGluZmVyIHRoZSBhcHByb3ByaWF0ZSB0eXBlIHBhcmFtZXRlcnMKK3doZW4gZ2VuZXJhdGluZyB0aGUgYW5vbnltb3VzIHRyYXZlcnNhbCBjbGFzcy4gSWYgaXQgY2Fubm90IGRvIGl0IGNvcnJlY3RseSwgaXQgaXMgcG9zc2libGUgdG8gYXZvaWQgdGhlIGluZmVyZW5jZSBieQordXNpbmcgdGhlIGBHcmVtbGluRHNsLkFub255bW91c01ldGhvZGAgYW5ub3RhdGlvbiBvbiB0aGUgRFNMIG1ldGhvZC4gSXQgYWxsb3dzIGV4cGxpY2l0IHNwZWNpZmljYXRpb24gb2YgdGhlIHR5cGVzIHRvCit1c2UuCisKK1RoZSBgQEdyZW1saW5Ec2xgIGFubm90YXRpb24gaXMgdXNlZCBieSB0aGUgbGluazpodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9pbmRleC5odG1sP2phdmF4L2Fubm90YXRpb24vcHJvY2Vzc2luZy9Qcm9jZXNzb3IuaHRtbFtKYXZhIEFubm90YXRpb24gUHJvY2Vzc29yXQordG8gZ2VuZXJhdGUgdGhlIGJvaWxlcnBsYXRlIGNsYXNzIHN0cnVjdHVyZSByZXF1aXJlZCB0byBwcm9wZXJseSB1c2UgdGhlIERTTCB3aXRoaW4gdGhlIFRpbmtlclBvcCBmcmFtZXdvcmsuIFRoZXNlCitjbGFzc2VzIGNhbiBiZSBnZW5lcmF0ZWQgYW5kIG1haW50YWluZWQgYnkgaGFuZCwgYnV0IGl0IHdvdWxkIGJlIHRpbWUgY29uc3VtaW5nLCBtb25vdG9ub3VzIGFuZCBlcnJvci1wcm9uZSB0byBkbyBzby4KK1R5cGljYWxseSwgdGhlIEphdmEgY29tcGlsYXRpb24gcHJvY2VzcyBpcyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgdG8gZGV0ZWN0IGFubm90YXRpb24gcHJvY2Vzc29ycyBvbiB0aGUgY2xhc3NwYXRoCithbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGVtIHdoZW4gZm91bmQuIElmIHRoYXQgZG9lcyBub3QgaGFwcGVuLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIG1ha2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzCit0byB0aGUgYnVpbGQgdG8gYWxsb3cgZm9yIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIHRvIGJlIGF3YXJlIG9mIHRoZSBmb2xsb3dpbmcgYGphdmF4LmFubm90YXRpb24ucHJvY2Vzc2luZy5Qcm9jZXNzb3JgCitpbXBsZW1lbnRhdGlvbjoKKworW3NvdXJjZSxqYXZhXQorLS0tLQorb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuR3JlbWxpbkRzbFByb2Nlc3NvcgorLS0tLQorCitUaGUgYW5ub3RhdGlvbiBwcm9jZXNzb3Igd2lsbCBnZW5lcmF0ZSBzZXZlcmFsIGNsYXNzZXMgZm9yIHRoZSBEU0w6CisKKyogYFNvY2lhbFRyYXZlcnNhbGAgLSBBIGBUcmF2ZXJzYWxgIGludGVyZmFjZSB0aGF0IGV4dGVuZHMgdGhlIGBTb2NpYWxUcmF2ZXJzYWxEc2xgIHByb3h5aW5nIG1ldGhvZHMgdG8gaXRzIHVuZGVybHlpbmcKK2ludGVyZmFjZXMgKHN1Y2ggYXMgYEdyYXBoVHJhdmVyc2FsYCkgdG8gaW5zdGVhZCByZXR1cm4gYSBgU29jaWFsVHJhdmVyc2FsYAorKiBgRGVmYXVsdFNvY2lhbFRyYXZlcnNhbGAgLSBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYFNvY2lhbFRyYXZlcnNhbGAgKHR5cGljYWxseSBub3QgdXNlZCBkaXJlY3RseSBieSB0aGUgdXNlcikKKyogYFNvY2lhbFRyYXZlcnNhbFNvdXJjZWAgLSBTcGF3bnMgYERlZmF1bHRTb2NpYWxUcmF2ZXJzYWxgIGluc3RhbmNlcy4KKyogYF9fYCAtIFNwYXducyBhbm9ueW1vdXMgYERlZmF1bHRTb2NpYWxUcmF2ZXJzYWxgIGluc3RhbmNlcy4KKworVXNpbmcgdGhlIERTTCB0aGVuIGp1c3QgaW52b2x2ZXMgdGVsbGluZyB0aGUgYEdyYXBoYCB0byB1c2UgaXQ6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK1NvY2lhbFRyYXZlcnNhbFNvdXJjZSBzb2NpYWwgPSBncmFwaC50cmF2ZXJzYWwoU29jaWFsVHJhdmVyc2FsU291cmNlLmNsYXNzKTsKK3NvY2lhbC5WKCkuaGFzKCJuYW1lIiwibWFya28iKS5rbm93cygiam9zaCIpOworLS0tLQorCitUaGUgYFNvY2lhbFRyYXZlcnNhbFNvdXJjZWAgY2FuIGFsc28gYmUgY3VzdG9taXplZCB3aXRoIERTTCBmdW5jdGlvbnMuIEFzIGFuIGFkZGl0aW9uYWwgc3RlcCwgaW5jbHVkZSBhIGNsYXNzIHRoYXQKK2V4dGVuZHMgZnJvbSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGFuZCB3aXRoIGEgbmFtZSB0aGF0IGlzIHN1ZmZpeGVkIHdpdGggIlRyYXZlcnNhbFNvdXJjZURzbCIuIEluY2x1ZGUgaW4gdGhpcyBjbGFzcywKK2FueSBjdXN0b20gbWV0aG9kcyByZXF1aXJlZCBieSB0aGUgRFNMOgorCitbc291cmNlLGphdmFdCistLS0tCitwdWJsaWMgY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsIGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgeworCisgICAgcHVibGljIFNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbChHcmFwaCBncmFwaCwgVHJhdmVyc2FsU3RyYXRlZ2llcyB0cmF2ZXJzYWxTdHJhdGVnaWVzKSB7CisgICAgICAgIHN1cGVyKGdyYXBoLCB0cmF2ZXJzYWxTdHJhdGVnaWVzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsKEdyYXBoIGdyYXBoKSB7CisgICAgICAgIHN1cGVyKGdyYXBoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHBlcnNvbnMoU3RyaW5nLi4uIG5hbWVzKSB7CisgICAgICAgIEdyYXBoVHJhdmVyc2FsU291cmNlIGNsb25lID0gdGhpcy5jbG9uZSgpOworCisgICAgICAgIC8vIE1hbnVhbGx5IGFkZCBhICJzdGFydCIgc3RlcCBmb3IgdGhlIHRyYXZlcnNhbCBpbiB0aGlzIGNhc2UgdGhlIGVxdWl2YWxlbnQgb2YgVigpLiBHcmFwaFN0ZXAgaXMgbWFya2VkCisgICAgICAgIC8vIGFzIGEgInN0YXJ0IiBzdGVwIGJ5IHBhc3NpbmcgInRydWUiIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgY2xvbmUuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKEdyYXBoVHJhdmVyc2FsLlN5bWJvbHMuVik7CisgICAgICAgIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBuZXcgRGVmYXVsdEdyYXBoVHJhdmVyc2FsPD4oY2xvbmUpOworICAgICAgICB0cmF2ZXJzYWwuYXNBZG1pbigpLmFkZFN0ZXAobmV3IEdyYXBoU3RlcDw+KHRyYXZlcnNhbC5hc0FkbWluKCksIFZlcnRleC5jbGFzcywgdHJ1ZSkpOworCisgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5oYXNMYWJlbCgicGVyc29uIik7CisgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuaGFzKCJuYW1lIiwgUC53aXRoaW4obmFtZXMpKTsKKworICAgICAgICByZXR1cm4gdHJhdmVyc2FsOworICAgIH0KK30KKy0tLS0KKworVGhlbiwgYmFjayBpbiB0aGUgYFNvY2lhbFRyYXZlcnNhbGAgaW50ZXJmYWNlLCB1cGRhdGUgdGhlIGBHcmVtbGluRHNsYCBhbm5vdGF0aW9uIHdpdGggdGhlIGB0cmF2ZXJzYWxTb3VyY2VgIGFyZ3VtZW50Cit0byBwb2ludCB0byB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgb2YgdGhlIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VEc2xgOgorCitbc291cmNlLGphdmFdCistLS0tCitAR3JlbWxpbkRzbCh0cmF2ZXJzYWxTb3VyY2UgPSAiY29tLmNvbXBhbnkuU29jaWFsVHJhdmVyc2FsU291cmNlRHNsIikKK3B1YmxpYyBpbnRlcmZhY2UgU29jaWFsVHJhdmVyc2FsRHNsPFMsIEU+IGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWwuQWRtaW48UywgRT4geworICAgIC4uLgorfQorLS0tLQorCitJdCBpcyB0aGVuIHBvc3NpYmxlIHRvIHVzZSB0aGUgYHBlcnNvbnMoKWAgbWV0aG9kIHRvIHN0YXJ0IHRyYXZlcnNhbHM6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK1NvY2lhbFRyYXZlcnNhbFNvdXJjZSBzb2NpYWwgPSBncmFwaC50cmF2ZXJzYWwoU29jaWFsVHJhdmVyc2FsU291cmNlLmNsYXNzKTsKK3NvY2lhbC5wZXJzb25zKCJtYXJrbyIpLmtub3dzKCJqb3NoIik7CistLS0tCisKK05PVEU6IFVzaW5nIE1hdmVuLCBhcyBzaG93biBpbiB0aGUgYGdyZW1saW4tYXJjaGV0eXBlLWRzbGAgbW9kdWxlLCBtYWtlcyBkZXZlbG9waW5nIERTTHMgd2l0aCB0aGUgYW5ub3RhdGlvbiBwcm9jZXNzb3IKK3N0cmFpZ2h0Zm9yd2FyZCBpbiB0aGF0IGl0IHNldHMgdXAgYXBwcm9wcmlhdGUgcGF0aHMgdG8gdGhlIGdlbmVyYXRlZCBjb2RlIGF1dG9tYXRpY2FsbHkuCisKK2FuY2hvcjpqYXZhLWFwcGxpY2F0aW9uLWV4YW1wbGVzW10KK1tbZ3JlbWxpbi1hcmNoZXR5cGVzXV0KKz09PSBBcHBsaWNhdGlvbiBFeGFtcGxlcworCitUaGUgYXZhaWxhYmxlIGxpbms6aHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2d1aWRlcy9pbnRyb2R1Y3Rpb24vaW50cm9kdWN0aW9uLXRvLWFyY2hldHlwZXMuaHRtbFtNYXZlbiBhcmNoZXR5cGVzXSBhcmUKK2FzIGZvbGxvd3M6CisKKyogYGdyZW1saW4tYXJjaGV0eXBlLWRzbGAgLSBBbiBleGFtcGxlIHByb2plY3QgdGhhdCBkZW1vbnN0cmF0ZXMgaG93IHRvIGJ1aWxkIERvbWFpbiBTcGVjaWZpYyBMYW5ndWFnZXMgd2l0aCBHcmVtbGluCitpbiBKYXZhLgorKiBgZ3JlbWxpbi1hcmNoZXR5cGUtc2VydmVyYCAtIEFuIGV4YW1wbGUgcHJvamVjdCB0aGF0IGRlbW9uc3RyYXRlcyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIGEKKzw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBwcm9qZWN0LCBob3cgdG8gY29ubmVjdCB3aXRoIHRoZSBHcmVtbGluIERyaXZlciwgYW5kIGhvdyB0byBlbWJlZCBHcmVtbGluIFNlcnZlciBpbgorYSB0ZXN0aW5nIGZyYW1ld29yay4KKyogYGdyZW1saW4tYXJjaGV0eXBlLXRpbmtlcmdyYXBoYCAtIEEgYmFzaWMgZXhhbXBsZSBvZiBob3cgdG8gc3RydWN0dXJlIGEgVGlua2VyUG9wIHByb2plY3Qgd2l0aCBNYXZlbi4KKworVXNlIE1hdmVuIHRvIGdlbmVyYXRlIHRoZXNlIGV4YW1wbGUgcHJvamVjdHMgd2l0aCBhIGNvbW1hbmQgbGlrZToKKworW3NvdXJjZSxzaGVsbF0KKyQgbXZuIGFyY2hldHlwZTpnZW5lcmF0ZSAtRGFyY2hldHlwZUdyb3VwSWQ9b3JnLmFwYWNoZS50aW5rZXJwb3AgLURhcmNoZXR5cGVBcnRpZmFjdElkPWdyZW1saW4tYXJjaGV0eXBlLXNlcnZlciBcCisgICAgICAtRGFyY2hldHlwZVZlcnNpb249eC55LnogLURncm91cElkPWNvbS5teSAtRGFydGlmYWN0SWQ9YXBwIC1EdmVyc2lvbj0wLjEgLURpbnRlcmFjdGl2ZU1vZGU9ZmFsc2UKKworVGhpcyBjb21tYW5kIHdpbGwgZ2VuZXJhdGUgYSBuZXcgTWF2ZW4gcHJvamVjdCBpbiBhIGRpcmVjdG9yeSBjYWxsZWQgImFwcCIgd2l0aCBhIGBwb20ueG1sYCBzcGVjaWZ5aW5nIGEgYGdyb3VwSWRgIG9mCitgY29tLm15YC4gUGxlYXNlIHNlZSB0aGUgYFJFQURNRS5hc2NpaWRvY2AgaW4gdGhlIHJvb3Qgb2YgZWFjaCBnZW5lcmF0ZWQgcHJvamVjdCBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuZAorZXhlY3V0ZSBpdC4KIAogW1tncmVtbGluLWdyb292eV1dCiA9PSBHcmVtbGluLUdyb292eQpAQCAtNzIsMTAgKzYxMCwxOSBAQAogaW1hZ2U6Z3JlbWxpbi1ncm9vdnktZHJhd2luZy5wbmdbd2lkdGg9MTMwLGZsb2F0PXJpZ2h0XSBBcGFjaGUgVGlua2VyUG9wJ3MgR3JlbWxpbi1Hcm9vdnkgaW1wbGVtZW50cyBHcmVtbGluIHdpdGhpbiB0aGUKIGxpbms6aHR0cDovL2dyb292eS5hcGFjaGUub3JnW0FwYWNoZSBHcm9vdnldIGxhbmd1YWdlLiBBcyBhIEpWTS1iYXNlZCBsYW5ndWFnZSB2YXJpYW50LCBHcmVtbGluLUdyb292eSBpcyBiYWNrZWQgYnkKIEdyZW1saW4tSmF2YSBjb25zdHJ1Y3RzLiBNb3Jlb3ZlciwgZ2l2ZW4gaXRzIHNjcmlwdGluZyBuYXR1cmUsIEdyZW1saW4tR3Jvb3Z5IHNlcnZlcyBhcyB0aGUgbGFuZ3VhZ2Ugb2YKLTw8Z3JlbWxpbi1jb25zb2xlLEdyZW1saW4gQ29uc29sZT4+LgorPDxncmVtbGluLWNvbnNvbGUsR3JlbWxpbiBDb25zb2xlPj4gYW5kIDw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+Pi4KIAotV0FSTklORzogSW4gR3Jvb3Z5LCBgYXNgLCBgaW5gLCBhbmQgYG5vdGAgYXJlIHJlc2VydmVkIHdvcmRzLiBHcmVtbGluLUdyb292eSBkb2VzIG5vdCBhbGxvdyB0aGVzZSBzdGVwcyB0byBiZSBjYWxsZWQKLXN0YXRpY2FsbHkgZnJvbSB0aGUgYW5vbnltb3VzIHRyYXZlcnNhbCBgK19fK2AgYW5kIHRoZXJlZm9yZSwgbXVzdCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBgK19fK2AuIEZvciBpbnN0YW5jZToKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorY29tcGlsZSBncm91cDogJ29yZy5hcGFjaGUudGlua2VycG9wJywgbmFtZTogJ2dyZW1saW4tY29yZScsIHZlcnNpb246ICczLjMuNCcKK2NvbXBpbGUgZ3JvdXA6ICdvcmcuYXBhY2hlLnRpbmtlcnBvcCcsIG5hbWU6ICdncmVtbGluLWRyaXZlcicsIHZlcnNpb246ICczLjMuNCcKKy0tLS0KKworW1tncmVtbGluLWdyb292eS1kaWZmZXJlbmNlc11dCis9PT0gRGlmZmVyZW5jZXMKKworSW4gR3Jvb3Z5LCBgYXNgLCBgaW5gLCBhbmQgYG5vdGAgYXJlIHJlc2VydmVkIHdvcmRzLiBHcmVtbGluLUdyb292eSBkb2VzIG5vdCBhbGxvdyB0aGVzZSBzdGVwcyB0byBiZSBjYWxsZWQKK3N0YXRpY2FsbHkgZnJvbSB0aGUgYW5vbnltb3VzIHRyYXZlcnNhbCBgK19fK2AgYW5kIHRoZXJlZm9yZSwgbXVzdCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBgK19fLitgIEZvciBpbnN0YW5jZToKIGArZy5WKCkuYXMoJ2EnKS5pbigpLmFzKCdiJykud2hlcmUoX18ubm90KF9fLmFzKCdhJykub3V0KCkuYXMoJ2InKSkpK2AKIAogW1tncmVtbGluLXB5dGhvbl1dCkBAIC04NiwxMzUgKzYzMyw2MSBAQAogbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DUHl0aG9uW0NQeXRob25dIG1hY2hpbmUuIFB5dGhvbidzIHN5bnRheCBoYXMgdGhlIHNhbWUgY29uc3RydWN0cyBhcyBKYXZhIGluY2x1ZGluZwogImRvdCBub3RhdGlvbiIgZm9yIGZ1bmN0aW9uIGNoYWluaW5nIChgYS5iLmNgKSwgcm91bmQgYnJhY2tldCBmdW5jdGlvbiBhcmd1bWVudHMgKGBhKGIsYylgKSwgYW5kIHN1cHBvcnQgZm9yIGdsb2JhbAogbmFtZXNwYWNlcyAoYGEoYigpKWAgdnMgYGEoX18uYigpKWApLiBBcyBzdWNoLCBhbnlvbmUgZmFtaWxpYXIgd2l0aCBHcmVtbGluLUphdmEgd2lsbCBpbW1lZGlhdGVseSBiZSBhYmxlIHRvIHdvcmsKLXdpdGggR3JlbWxpbi1QeXRob24uIE1vcmVvdmVyLCB0aGVyZSBhcmUgYSBmZXcgYWRkZWQgY29uc3RydWN0cyB0byBHcmVtbGluLVB5dGhvbiB0aGF0IG1ha2UgdHJhdmVyc2FscyBhIGJpdCBtb3JlIHN1Y2NpbmN0LgotCi1XQVJOSU5HOiBJbiBQeXRob24sIGBhbmRgLCBgYXNgLCBgZnJvbWAsIGBnbG9iYWxgLCBgaW5gLCBgaXNgLCBgbm90YCwgYW5kIGBvcmAgYXJlIHJlc2VydmVkIHdvcmRzLiBHcmVtbGluLVB5dGhvbiBzaW1wbHkKLXBvc3RmaXhlcyBgK18rYCB0byB0aGUgZW5kIG9mIHRoZXNlIHRlcm1zIGZvciB0aGVpciB1c2Ugd2l0aCBncmFwaCB0cmF2ZXJzYWwuIEZvciBpbnN0YW5jZTogYGcuVigpLmFzXygnYScpLmluXygpLmFzXygnYicpLnNlbGVjdCgnYScsJ2InKWAuCit3aXRoIEdyZW1saW4tUHl0aG9uLiBNb3Jlb3ZlciwgdGhlcmUgYXJlIGEgZmV3IGFkZGVkIGNvbnN0cnVjdHMgdG8gR3JlbWxpbi1QeXRob24gdGhhdCBtYWtlIHRyYXZlcnNhbHMgYSBiaXQgbW9yZQorc3VjY2luY3QuCiAKIFRvIGluc3RhbGwgR3JlbWxpbi1QeXRob24sIHVzZSBQeXRob24ncyBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BpcF8ocGFja2FnZV9tYW5hZ2VyKVtwaXBdIHBhY2thZ2UgbWFuYWdlci4KIAogW3NvdXJjZSxiYXNoXQorLS0tLQogcGlwIGluc3RhbGwgZ3JlbWxpbnB5dGhvbgotCi1HcmVtbGluLVB5dGhvbiB1c2VycyB3aWxsIHR5cGljYWxseSBtYWtlIHVzZSBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMuCi0KLVtzb3VyY2UscHl0aG9uXQotPj4+IGZyb20gZ3JlbWxpbl9weXRob24gaW1wb3J0IHN0YXRpY3MKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuYW5vbnltb3VzX3RyYXZlcnNhbCBpbXBvcnQgdHJhdmVyc2FsCi0+Pj4gZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18KLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3Muc3RyYXRlZ2llcyBpbXBvcnQgKgotPj4+IGZyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLmRyaXZlcl9yZW1vdGVfY29ubmVjdGlvbiBpbXBvcnQgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbgotCi1JbiBHcmVtbGluLVB5dGhvbiB0aGVyZSBleGlzdHMgYEdyYXBoVHJhdmVyc2FsU291cmNlYCwgYEdyYXBoVHJhdmVyc2FsYCwgYW5kIGBfX2Agd2hpY2ggbWlycm9yIHRoZSByZXNwZWN0aXZlIGNsYXNzZXMKLWluIEdyZW1saW4tSmF2YS4gVGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgcmVxdWlyZXMgYSBkcml2ZXIgaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aAotPDxncmVtbGluLXNlcnZlcixHcmVtbGluU2VydmVyPj4gKG9yIGFueSA8PGNvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoLGBSZW1vdGVDb25uZWN0aW9uYD4+LWVuYWJsZWQgc2VydmVyKS4gVGhlCi1gZ3JlbWxpbl9weXRob24uZHJpdmVyLmRyaXZlcl9yZW1vdGVfY29ubmVjdGlvbmAgaXMgcHJvdmlkZWQgd2l0aCBBcGFjaGUgVGlua2VyUG9wJ3MgR3JlbWxpbi1QeXRob24gZGlzdHJpYnV0aW9uLgotCi1JTVBPUlRBTlQ6IEZvciBkZXZlbG9wZXJzIHdpc2hpbmcgdG8gcHJvdmlkZSBhbm90aGVyICpkcml2ZXIgaW1wbGVtZW50YXRpb24qLCBiZSBzdXJlIHRvIGV4dGVuZCBgUmVtb3RlQ29ubmVjdGlvbmAgaW4KLWBncmVtbGluX3B5dGhvbi5kcml2ZXJgIHNvIGl0IGNhbiB0aGVuIGJlIHVzZWQgYnkgR3JlbWxpbi1QeXRob24ncyBgR3JhcGhUcmF2ZXJzYWxgLgotCi1XaGVuIEdyZW1saW4gU2VydmVyIGlzIHJ1bm5pbmcsIEdyZW1saW4tUHl0aG9uIGNhbiBjb21tdW5pY2F0ZSB3aXRoIEdyZW1saW4gU2VydmVyLiBUaGUgYGNvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXB5LnlhbWxgCi1jb25maWd1cmF0aW9uIG1haW50YWlucyBhIGBHcmVtbGluSnl0aG9uU2NyaXB0RW5naW5lYCBhcyB3ZWxsIGFzIHRoZSBhcHByb3ByaWF0ZSBzZXJpYWxpemVycyBmb3IgY29tbXVuaWNhdGluZyBgQnl0ZWNvZGVgLgotCi1JTVBPUlRBTlQ6IEdyZW1saW4tUHl0aG9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JhcGhTT04gMS4wLgotCi1bc291cmNlLGJhc2hdCi0tLS0tCi0kIGJpbi9ncmVtbGluLXNlcnZlci5zaCBpbnN0YWxsIG9yZy5hcGFjaGUudGlua2VycG9wIGdyZW1saW4tcHl0aG9uIHgueS56Ci0kIGJpbi9ncmVtbGluLXNlcnZlci5zaCBjb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCi1bSU5GT10gR3JlbWxpblNlcnZlciAtCi0gICAgICAgXCwsLC8KLSAgICAgICAobyBvKQotLS0tb09Pby0oMyktb09Pby0tLQotCi1bSU5GT10gR3JlbWxpblNlcnZlciAtIENvbmZpZ3VyaW5nIEdyZW1saW4gU2VydmVyIGZyb20gY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbAotW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgU2xmNGpSZXBvcnRlciBjb25maWd1cmVkIHdpdGggaW50ZXJ2YWw9MTgwMDAwbXMgYW5kIGxvZ2dlck5hbWU9b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3MkU2xmNGpSZXBvcnRlck1ldHJpY3MKLVtJTkZPXSBHcmFwaE1hbmFnZXIgLSBHcmFwaCBbZ3JhcGhdIHdhcyBzdWNjZXNzZnVsbHkgY29uZmlndXJlZCB2aWEgW2NvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllc10uCi1bSU5GT10gU2VydmVyR3JlbWxpbkV4ZWN1dG9yIC0gSW5pdGlhbGl6ZWQgR3JlbWxpbiB0aHJlYWQgcG9vbC4gIFRocmVhZHMgaW4gcG9vbCBuYW1lZCB3aXRoIHBhdHRlcm4gZ3JlbWxpbi0qCi1bSU5GT10gTG9nZ2VyIC0gNTEgYXR0cmlidXRlcyBsb2FkZWQgZnJvbSA0MCBzdHJlYW0ocykgaW4gMTZtcywgNTEgc2F2ZWQsIDYxNCBpZ25vcmVkOiBbIkFudC1WZXJzaW9uIiwgIkFyY2hpdmVyLVZlcnNpb24iLCAiQm5kLUxhc3RNb2RpZmllZCIsICJCb290LUNsYXNzLVBhdGgiLCAiQnVpbGQtSmRrIiwgIkJ1aWxkLVZlcnNpb24iLCAiQnVpbHQtQnkiLCAiQnVuZGxlLUNsYXNzUGF0aCIsICJCdW5kbGUtRGVzY3JpcHRpb24iLCAiQnVuZGxlLURvY1VSTCIsICJCdW5kbGUtTGljZW5zZSIsICJCdW5kbGUtTWFuaWZlc3RWZXJzaW9uIiwgIkJ1bmRsZS1OYW1lIiwgIkJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50IiwgIkJ1bmRsZS1TeW1ib2xpY05hbWUiLCAiQnVuZGxlLVZlbmRvciIsICJCdW5kbGUtVmVyc2lvbiIsICJDYW4tUmVkZWZpbmUtQ2xhc3NlcyIsICJDcmVhdGVkLUJ5IiwgIkR5bmFtaWNJbXBvcnQtUGFja2FnZSIsICJFY2xpcHNlLUJ1ZGR5UG9saWN5IiwgIkV4cG9ydC1QYWNrYWdlIiwgIkV4dGVuc2lvbi1OYW1lIiwgIkV4dGVuc2lvbi1uYW1lIiwgIkZyYWdtZW50LUhvc3QiLCAiSWdub3JlLVBhY2thZ2UiLCAiSW1wbGVtZW50YXRpb24tQnVpbGQiLCAiSW1wbGVtZW50YXRpb24tVGl0bGUiLCAiSW1wbGVtZW50YXRpb24tVVJMIiwgIkltcGxlbWVudGF0aW9uLVZlbmRvciIsICJJbXBsZW1lbnRhdGlvbi1WZW5kb3ItSWQiLCAiSW1wbGVtZW50YXRpb24tVmVyc2lvbiIsICJJbXBvcnQtUGFja2FnZSIsICJJbmNsdWRlLVJlc291cmNlIiwgIkpDYWJpLUJ1aWxkIiwgIkpDYWJpLURhdGUiLCAiSkNhYmktVmVyc2lvbiIsICJNYWluLUNsYXNzIiwgIk1haW4tY2xhc3MiLCAiTWFuaWZlc3QtVmVyc2lvbiIsICJPcmlnaW5hbGx5LUNyZWF0ZWQtQnkiLCAiUHJpdmF0ZS1QYWNrYWdlIiwgIlJlcXVpcmUtQ2FwYWJpbGl0eSIsICJTcGVjaWZpY2F0aW9uLVRpdGxlIiwgIlNwZWNpZmljYXRpb24tVmVuZG9yIiwgIlNwZWNpZmljYXRpb24tVmVyc2lvbiIsICJUb29sIiwgIlgtQ29tcGlsZS1Tb3VyY2UtSkRLIiwgIlgtQ29tcGlsZS1UYXJnZXQtSkRLIiwgImhhc2giLCAidmVyc2lvbiJdCi1bSU5GT10gU2NyaXB0RW5naW5lcyAtIExvYWRlZCBncmVtbGluLWp5dGhvbiBTY3JpcHRFbmdpbmUKLVtJTkZPXSBTY3JpcHRFbmdpbmVzIC0gTG9hZGVkIGdyZW1saW4tcHl0aG9uIFNjcmlwdEVuZ2luZQotW0lORk9dIFNjcmlwdEVuZ2luZXMgLSBMb2FkZWQgZ3JlbWxpbi1ncm9vdnkgU2NyaXB0RW5naW5lCi1bSU5GT10gR3JlbWxpbkV4ZWN1dG9yIC0gSW5pdGlhbGl6ZWQgZ3JlbWxpbi1ncm9vdnkgU2NyaXB0RW5naW5lIHdpdGggc2NyaXB0cy9nZW5lcmF0ZS1tb2Rlcm4uZ3Jvb3Z5Ci1bSU5GT10gU2VydmVyR3JlbWxpbkV4ZWN1dG9yIC0gSW5pdGlhbGl6ZWQgR3JlbWxpbkV4ZWN1dG9yIGFuZCBjb25maWd1cmVkIFNjcmlwdEVuZ2luZXMuCi1bSU5GT10gU2VydmVyR3JlbWxpbkV4ZWN1dG9yIC0gQSBHcmFwaFRyYXZlcnNhbFNvdXJjZSBpcyBub3cgYm91bmQgdG8gW2ddIHdpdGggZ3JhcGh0cmF2ZXJzYWxzb3VyY2VbdGlua2VyZ3JhcGhbdmVydGljZXM6MCBlZGdlczowXSwgc3RhbmRhcmRdCi1bSU5GT10gT3BMb2FkZXIgLSBBZGRpbmcgdGhlIHN0YW5kYXJkIE9wUHJvY2Vzc29yLgotW0lORk9dIE9wTG9hZGVyIC0gQWRkaW5nIHRoZSBzZXNzaW9uIE9wUHJvY2Vzc29yLgotW0lORk9dIE9wTG9hZGVyIC0gQWRkaW5nIHRoZSB0cmF2ZXJzYWwgT3BQcm9jZXNzb3IuCi1bSU5GT10gVHJhdmVyc2FsT3BQcm9jZXNzb3IgLSBJbml0aWFsaXplZCBjYWNoZSBmb3IgVHJhdmVyc2FsT3BQcm9jZXNzb3Igd2l0aCBzaXplIDEwMDAgYW5kIGV4cGlyYXRpb24gdGltZSBvZiA2MDAwMDAgbXMKLVtJTkZPXSBHcmVtbGluU2VydmVyIC0gRXhlY3V0aW5nIHN0YXJ0IHVwIExpZmVDeWNsZUhvb2sKLVtJTkZPXSBMb2dnZXIkaW5mbyAtIExvYWRpbmcgJ21vZGVybicgZ3JhcGggZGF0YS4KLVtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMAotW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5by1zdHJpbmdkIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAKLVtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2pzb24gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAKLVtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi9qc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCi1bSU5GT10gR3JlbWxpblNlcnZlciQxIC0gR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlZCB3aXRoIHdvcmtlciB0aHJlYWQgcG9vbCBvZiAxLCBncmVtbGluIHBvb2wgb2YgNCBhbmQgYm9zcyB0aHJlYWQgcG9vbCBvZiAxLgotW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIENoYW5uZWwgc3RhcnRlZCBhdCBwb3J0IDgxODIuCiAtLS0tCiAKLU5PVEU6IFRoZSBjb21tYW5kIHRvIHVzZSBgaW5zdGFsbGAgbmVlZCBvbmx5IGJlIGV4ZWN1dGVkIG9uY2UgdG8gZ2F0aGVyIGBncmVtbGluLXB5dGhvbmAgZGVwZW5kZW5jaWVzIGludG8gR3JlbWxpbiBTZXJ2ZXJzJwotcGF0aC4gRnV0dXJlIHN0YXJ0cyBvZiBHcmVtbGluIFNlcnZlciB3aWxsIG5vdCByZXF1aXJlIHRoYXQgY29tbWFuZC4KKz09PSBDb25uZWN0aW5nCiAKLVdpdGhpbiBDUHl0aG9uIGNvbnNvbGUsIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpcyBjcmVhdGVkIGZyb20gdGhlIGFub255bW91cyBgdHJhdmVyc2FsKClgIG1ldGhvZCB3aGVyZSB0aGUgImciCi1wcm92aWRlZCB0byB0aGUgYERyaXZlclJlbW90ZUNvbm5lY3Rpb25gIGNvcnJlc3BvbmRzIHRvIHRoZSBuYW1lIG9mIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBvbiB0aGUgcmVtb3RlIGVuZC4KK1RoZSBwYXR0ZXJuIGZvciBjb25uZWN0aW5nIGlzIGRlc2NyaWJlZCBpbiA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBhbmQgaXQgYmFzaWNhbGx5IGRpc3RpbGxzIGRvd24gdG8KK2NyZWF0aW5nIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gQSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGlzIGNyZWF0ZWQgZnJvbSB0aGUgYW5vbnltb3VzIGB0cmF2ZXJzYWwoKWAgbWV0aG9kIHdoZXJlCit0aGUgImciIHByb3ZpZGVkIHRvIHRoZSBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgY29ycmVzcG9uZHMgdG8gdGhlIG5hbWUgb2YgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIG9uIHRoZSByZW1vdGUgZW5kLgogCiBbc291cmNlLHB5dGhvbl0KLT4+PiBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCdnJykpCi0KLVdoZW4gYSB0cmF2ZXJzYWwgZnJvbSB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpcyBpdGVyYXRlZCwgdGhlIHRyYXZlcnNhbCdzIGBCeXRlY29kZWAgaXMgc2VudCBvdmVyIHRoZSB3aXJlCi12aWEgdGhlIHJlZ2lzdGVyZWQgYFJlbW90ZUNvbm5lY3Rpb25gLiBUaGUgYnl0ZWNvZGUgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGVxdWl2YWxlbnQgdHJhdmVyc2FsIGF0IHRoZSByZW1vdGUKLXRyYXZlcnNhbCBzb3VyY2UuIE1vcmVvdmVyLCB0eXBpY2FsbHkgdGhlIGJ5dGVjb2RlIGlzIGFuYWx5emVkIHRvIGRldGVybWluZSB3aGljaCBsYW5ndWFnZSB0aGUgYnl0ZWNvZGUgc2hvdWxkIGJlCi10cmFuc2xhdGVkIHRvLiBJZiB0aGUgdHJhdmVyc2FsIGRvZXMgbm90IGNvbnRhaW4gbGFtYmRhcywgdGhlIHJlbW90ZSBsb2NhdGlvbiAoZS5nLiBHcmVtbGluIFNlcnZlcikgd2lsbCB0eXBpY2FsbHkKLXVzZSBHcmVtbGluLUphdmEuIElmIGl0IGhhcyBsYW1iZGFzIHdyaXR0ZW4gaW4gR3Jvb3Z5LCBpdCB3aWxsIHVzZSBHcmVtbGluLUdyb292eSAoZS5nLiBgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZWApLgotTGlrZXdpc2UsIGlmIGl0IGhhcyBsYW1iZGFzIHJlcHJlc2VudGVkIGluIFB5dGhvbiwgaXQgd2lsbCB1c2UgR3JlbWxpbi1QeXRob24gKGUuZy4gYEdyZW1saW5KeXRob25TY3JpcHRFbmdpbmVgKS4KLQotSU1QT1JUQU5UOiBHcmVtbGluLVB5dGhvbidzIGBUcmF2ZXJzYWxgIGNsYXNzIHN1cHBvcnRzIHRoZSBzdGFuZGFyZCBHcmVtbGluIG1ldGhvZHMgc3VjaCBhcyBgbmV4dCgpYCwgYG5leHRUcmF2ZXJzZXIoKWAsCi1gdG9TZXQoKWAsIGB0b0xpc3QoKWAsIGV0Yy4gU3VjaCAidGVybWluYWwiIG1ldGhvZHMgdHJpZ2dlciB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgdHJhdmVyc2FsLgotCi09PT0gUmVtb3RlQ29ubmVjdGlvbiBTdWJtaXNzaW9uCi0KLVRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc3VibWl0IGEgdHJhdmVyc2FsIHRvIGEgYFJlbW90ZUNvbm5lY3Rpb25gLiBKdXN0IGFzIGluIEdyZW1saW4tSmF2YSwgdGhlcmUgYXJlIHZhcmlvdXMKLSJ0ZXJtaW5hbC9hY3Rpb24gbWV0aG9kcyIgb2ZmIG9mIGBUcmF2ZXJzYWxgLgotCi0qIGBUcmF2ZXJzYWwubmV4dCgpYAotKiBgVHJhdmVyc2FsLm5leHRUcmF2ZXJzZXIoKWAKLSogYFRyYXZlcnNhbC50b0xpc3QoKWAKLSogYFRyYXZlcnNhbC50b1NldCgpYAotKiBgVHJhdmVyc2FsLml0ZXJhdGUoKWAKKy0tLS0KK2cgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsJ2cnKSkKKy0tLS0KIAogSWYgeW91IG5lZWQgdG8gc2VuZCBhZGRpdGlvbmFsIGhlYWRlcnMgaW4gdGhlIHdlYnNvY2tldHMgY29ubmVjdGlvbiwgeW91IGNhbiBwYXNzIGFuIG9wdGlvbmFsIGBoZWFkZXJzYCBwYXJhbWV0ZXIKIHRvIHRoZSBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgY29uc3RydWN0b3IuCiAKIFtzb3VyY2UscHl0aG9uXQorLS0tLQogZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJywnZycsaGVhZGVycz17J0hlYWRlcic6J1ZhbHVlJ30pKQotCi09PT0gR3JlbWxpbi1QeXRob24gU3VnYXIKLQotUHl0aG9uIHN1cHBvcnRzIG1ldGEtcHJvZ3JhbW1pbmcgYW5kIG9wZXJhdG9yIG92ZXJsb2FkaW5nLiBUaGVyZSBhcmUgdGhyZWUgdXNlcyBvZiB0aGVzZSB0ZWNobmlxdWVzIGluIEdyZW1saW4tUHl0aG9uIHRoYXQKLW1ha2VzIHRyYXZlcnNhbHMgYSBiaXQgbW9yZSBjb25jaXNlLgotCi1bZ3JlbWxpbi1weXRob24sbW9kZXJuXQotLS0tLQotZy5WKCkuYm90aCgpWzE6M10udG9MaXN0KCkKLWcuVigpLmJvdGgoKVsxXS50b0xpc3QoKQotZy5WKCkuYm90aCgpLm5hbWUudG9MaXN0KCkKIC0tLS0KIAotPT09IFN0YXRpYyBFbnVtcyBhbmQgTWV0aG9kcworW1tweXRob24taW1wb3J0c11dCis9PT0gQ29tbW9uIEltcG9ydHMKIAotR3JlbWxpbiBoYXMgdmFyaW91cyB0b2tlbnMgKGUuZy4gYFRgLCBgUGAsIGBPcmRlcmAsIGBPcGVyYXRvcmAsIGV0Yy4pIHRoYXQgYXJlIHJlcHJlc2VudGVkIGluIEdyZW1saW4tUHl0aG9uIGFzIFB5dGhvbiBgRW51bXNgLgorVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNsYXNzZXMsIGZ1bmN0aW9ucyBhbmQgdG9rZW5zIHRoYXQgYXJlIHR5cGljYWxseSB1c2VkIHdpdGggR3JlbWxpbi4gVGhlIGZvbGxvd2luZyBpbXBvcnRzCitwcm92aWRlIG1vc3Qgb2YgdGhlIHR5cGljYWwgZnVuY3Rpb25hbGl0eSByZXF1aXJlZCB0byB1c2UgR3JlbWxpbjoKIAogW3NvdXJjZSxweXRob25dCi0+Pj4gZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgVAotPj4+IGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IE9yZGVyCi0+Pj4gZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQ2FyZGluYWxpdHkKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBDb2x1bW4KLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBEaXJlY3Rpb24KLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBPcGVyYXRvcgotPj4+IGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFAKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBQb3AKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBTY29wZQotPj4+IGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJhcnJpZXIKKy0tLS0KK2Zyb20gZ3JlbWxpbl9weXRob24gaW1wb3J0IHN0YXRpY3MKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5hbm9ueW1vdXNfdHJhdmVyc2FsIGltcG9ydCB0cmF2ZXJzYWwKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5ncmFwaF90cmF2ZXJzYWwgaW1wb3J0IF9fCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3Muc3RyYXRlZ2llcyBpbXBvcnQgKgorZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIuZHJpdmVyX3JlbW90ZV9jb25uZWN0aW9uIGltcG9ydCBEcml2ZXJSZW1vdGVDb25uZWN0aW9uCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBUCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBPcmRlcgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQ2FyZGluYWxpdHkKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IENvbHVtbgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgRGlyZWN0aW9uCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBPcGVyYXRvcgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgUAorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgUG9wCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBTY29wZQorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQmFycmllcgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQmluZGluZ3MKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFdpdGhPcHRpb25zCistLS0tCiAKIFRoZXNlIGNhbiBiZSB1c2VkIGFuYWxvZ291c2x5IHRvIGhvdyB0aGV5IGFyZSB1c2VkIGluIEdyZW1saW4tSmF2YS4KIApAQCAtMjI2LDcgKzY5OSw5IEBACiBNb3Jlb3ZlciwgYnkgaW1wb3J0aW5nIHRoZSBgc3RhdGljc2Agb2YgR3JlbWxpbi1QeXRob24sIHRoZSBjbGFzcyBwcmVmaXhlcyBjYW4gYmUgb21pdHRlZC4KIAogW3NvdXJjZSxweXRob25dCistLS0tCiA+Pj4gc3RhdGljcy5sb2FkX3N0YXRpY3MoZ2xvYmFscygpKQorLS0tLQogCiBXaXRoIHN0YXRpY3MgbG9hZGVkIGl0cyBwb3NzaWJsZSB0byByZXByZXNlbnQgdGhlIGFib3ZlIHRyYXZlcnNhbCBhcyBiZWxvdy4KIApAQCAtMjM1LDI5ICs3MTAsMzEgQEAKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5oYXMoJ2FnZScsZ3QoMzApKS5vcmRlcigpLmJ5KCdhZ2UnLGRlc2MpLnRvTGlzdCgpCiAtLS0tCiAKLUZpbmFsbHksIHN0YXRpY3MgaW5jbHVkZXMgYWxsIHRoZSBgK19fK2AtbWV0aG9kcyBhbmQgdGh1cywgYW5vbnltb3VzIHRyYXZlcnNhbHMgbGlrZSBgK19fLm91dCgpK2AgY2FuIGJlIGV4cHJlc3NlZCBhcwotYmVsb3cuIFRoYXQgaXMsIHdpdGhvdXQgdGhlIGArX18rYC1wcmVmaXguCitGaW5hbGx5LCBzdGF0aWNzIGluY2x1ZGVzIGFsbCB0aGUgYCtfXytgLW1ldGhvZHMgYW5kIHRodXMsIGFub255bW91cyB0cmF2ZXJzYWxzIGxpa2UgYCtfXy5vdXQoKStgIGNhbiBiZSBleHByZXNzZWQgYXMgYmVsb3cuCitUaGF0IGlzLCB3aXRob3V0IHRoZSBgK19fK2AtcHJlZml4LgogCiBbZ3JlbWxpbi1weXRob24sbW9kZXJuXQogLS0tLQogZy5WKCkucmVwZWF0KG91dCgpKS50aW1lcygyKS5uYW1lLmZvbGQoKS50b0xpc3QoKQogLS0tLQogCi09PT0gQmluZGluZ3MKKz09PSBDb25maWd1cmF0aW9uCiAKLVdoZW4gYSB0cmF2ZXJzYWwgYnl0ZWNvZGUgaXMgc2VudCBvdmVyIGEgYFJlbW90ZUNvbm5lY3Rpb25gIChlLmcuIEdyZW1saW4gU2VydmVyKSwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkLCBjb21waWxlZCwKLWFuZCB0aGVuIGV4ZWN1dGVkLiBJZiB0aGUgc2FtZSB0cmF2ZXJzYWwgaXMgc2VudCBhZ2FpbiwgdHJhbnNsYXRpb24gYW5kIGNvbXBpbGF0aW9uIGNhbiBiZSBza2lwcGVkIGFzIHRoZSBwcmV2aW91c2x5Ci1jb21waWxlZCB2ZXJzaW9uIHNob3VsZCBiZSBjYWNoZWQuIE1hbnkgdHJhdmVyc2FscyBhcmUgdW5pcXVlIHVwIHRvIHNvbWUgcGFyYW1ldGVyaXphdGlvbi4gRm9yIGluc3RhbmNlLAotYGcuVigxKS5vdXQoJ2NyZWF0ZWQnKS5uYW1lYCBpcyBjb25zaWRlcmVkIGRpZmZlcmVudCBmcm9tIGBnLlYoNCkub3V0KCdjcmVhdGVkJykubmFtZSdgIGFzIHRoZXkgaGF2ZSBkaWZmZXJlbnQgc2NyaXB0Ci0ic3RyaW5nIiByZXByZXNlbnRhdGlvbnMuIEhvd2V2ZXIsIGBnLlYoeCkub3V0KCdjcmVhdGVkJykubmFtZWAgd2l0aCBiaW5kaW5ncyBvZiBge3ggOiAxfWAgYW5kIGB7eCA6IDR9YCBhcmUgY29uc2lkZXJlZAotdGhlIHNhbWUuIElmIGEgdHJhdmVyc2FsIGlzIGdvaW5nIHRvIGJlIGV4ZWN1dGVkIHJlcGVhdGVkbHksIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLCB0aGVuIGJpbmRpbmdzIHNob3VsZCBiZQotdXNlZC4gSW4gR3JlbWxpbi1QeXRob24sIGJpbmRpbmdzIGFyZSAyLXR1cGxlcyBhbmQgdXNlZCBhcyBmb2xsb3dzLgorVGhlIGZvbGxvd2luZyB0YWJsZSBkZXNjcmliZXMgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgR3JlbWxpbi1QeXRob24gRHJpdmVyLiBUaGV5CitjYW4gYmUgcGFzc2VkIHRvIHRoZSBgQ2xpZW50YCBvciBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgaW5zdGFuY2UgYXMga2V5d29yZCBhcmd1bWVudHM6CiAKLVtncmVtbGluLXB5dGhvbixtb2Rlcm5dCi0tLS0tCi1nLlYoKCdpZCcsMSkpLm91dCgnY3JlYXRlZCcpLm5hbWUudG9MaXN0KCkKLWcuVigoJ2lkJyw0KSkub3V0KCdjcmVhdGVkJykubmFtZS50b0xpc3QoKQotLS0tLQorW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfEtleSB8RGVzY3JpcHRpb24gfERlZmF1bHQKK3xwcm90b2NvbF9mYWN0b3J5IHxBIGNhbGxhYmxlIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBgQWJzdHJhY3RCYXNlUHJvdG9jb2xgLiB8YGdyZW1saW5fcHl0aG9uLmRyaXZlci5wcm90b2NvbC5HcmVtbGluU2VydmVyV1NQcm90b2NvbGAKK3x0cmFuc3BvcnRfZmFjdG9yeSB8QSBjYWxsYWJsZSB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYEFic3RyYWN0QmFzZVRyYW5zcG9ydGAuIHxgZ3JlbWxpbl9weXRob24uZHJpdmVyLnRvcm5hZG8udHJhbnNwb3J0LlRvcm5hZG9UcmFuc3BvcnRgCit8cG9vbF9zaXplIHxUaGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHVzZWQgYnkgdGhlIHBvb2wuIHw0Cit8bWF4X3dvcmtlcnMgfE1heGltdW0gbnVtYmVyIG9mIHdvcmtlciB0aHJlYWRzLiB8TnVtYmVyIG9mIENQVXMgKiA1Cit8bWVzc2FnZV9zZXJpYWxpemVyIHxUaGUgbWVzc2FnZSBzZXJpYWxpemVyIGltcGxlbWVudGF0aW9uLnxgZ3JlbWxpbl9weXRob24uZHJpdmVyLnNlcmlhbGl6ZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplcmAKK3xwYXNzd29yZCB8VGhlIHBhc3N3b3JkIHRvIHN1Ym1pdCBvbiByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgYXV0aGVudGljYXRpb24uIHwiIgorfHVzZXJuYW1lIHxUaGUgdXNlcm5hbWUgdG8gc3VibWl0IG9uIHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4gfCIiCit8c2Vzc2lvbiB8IEEgdW5pcXVlIHN0cmluZy1iYXNlZCBpZGVudGlmaWVyICh0eXBpY2FsbHkgYSBVVUlEKSB0byBlbmFibGUgYSA8PHNlc3Npb25zLHNlc3Npb24tYmFzZWQgY29ubmVjdGlvbj4+LiBUaGlzIGlzIG5vdCBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYC4gfE5vbmUKK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogPT09IFRyYXZlcnNhbCBTdHJhdGVnaWVzCiAKQEAgLTI2OCwxMyArNzQ1LDEzIEBACiAtLS0tCiBnID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzPWhhc0xhYmVsKCdwZXJzb24nKSxlZGdlcz1oYXMoJ3dlaWdodCcsZ3QoMC41KSkpKQogZy5WKCkubmFtZS50b0xpc3QoKQotZy5WKCkub3V0RSgpLnZhbHVlTWFwKFRydWUpLnRvTGlzdCgpCitnLlYoKS5vdXRFKCkuZWxlbWVudE1hcCgpLnRvTGlzdCgpCiBnID0gZy53aXRob3V0U3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5KQogZy5WKCkubmFtZS50b0xpc3QoKQotZy5WKCkub3V0RSgpLnZhbHVlTWFwKFRydWUpLnRvTGlzdCgpCitnLlYoKS5vdXRFKCkuZWxlbWVudE1hcCgpLnRvTGlzdCgpCiBnID0gZy53aXRoQ29tcHV0ZXIod29ya2Vycz0yLHZlcnRpY2VzPWhhcygnbmFtZScsJ21hcmtvJykpCiBnLlYoKS5uYW1lLnRvTGlzdCgpCi1nLlYoKS5vdXRFKCkudmFsdWVNYXAoVHJ1ZSkudG9MaXN0KCkKK2cuVigpLm91dEUoKS52YWx1ZU1hcCgpLndpdGhfKFdpdGhPcHRpb25zLnRva2VucykudG9MaXN0KCkKIC0tLS0KIAogTk9URTogTWFueSBvZiB0aGUgYFRyYXZlcnNhbFN0cmF0ZWd5YCBjbGFzc2VzIGluIEdyZW1saW4tUHl0aG9uIGFyZSBwcm94aWVzIHRvIHRoZSByZXNwZWN0aXZlIHN0cmF0ZWd5IG9uCkBAIC0zMTksNiArNzk2LDIxNSBAQAogV0FSTklORzogSnl0aG9uIHN1cHBvcnQgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBmb3IgMy4zLjEwIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy41LjAuIEdyZW1saW4tUHl0aG9uIHdpbGwgYXQgdGhhdAogcG9pbnQgZGVmYXVsdCB0byBHcm9vdnkgZm9yIGxhbWJkYSBwcm9jZXNzaW5nIGFuZCBQeXRob24gbGFtYmRhcyB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCiAKK0ZpbmFsbHksIEdyZW1saW4gYEJ5dGVjb2RlYCB0aGF0IGluY2x1ZGVzIGxhbWJkYXMgcmVxdWlyZXMgdGhhdCB0aGUgdHJhdmVyc2FsIGJlIHByb2Nlc3NlZCBieSB0aGUKK2BTY3JpcHRFbmdpbmVgLiBUbyBhdm9pZCBjb250aW51ZWQgcmVjb21waWxhdGlvbiBjb3N0cywgaXQgc3VwcG9ydHMgdGhlIGVuY29kaW5nIG9mIGJpbmRpbmdzLCB3aGljaCBhbGxvdyBhIHJlbW90ZQorZW5naW5lIHRvIHRvIGNhY2hlIHRyYXZlcnNhbHMgdGhhdCB3aWxsIGJlIHJldXNlZCBvdmVyIGFuZCBvdmVyIGFnYWluIHNhdmUgdGhhdCBzb21lIHBhcmFtZXRlcml6YXRpb24gbWF5IGNoYW5nZS4gVGh1cywKK2luc3RlYWQgb2YgdHJhbnNsYXRpbmcsIGNvbXBpbGluZywgYW5kIHRoZW4gZXhlY3V0aW5nIGVhY2ggc3VibWl0dGVkIGJ5dGVjb2RlLCBpdCBpcyBwb3NzaWJsZSB0byBzaW1wbHkgZXhlY3V0ZS4KKworW2dyZW1saW4tcHl0aG9uLG1vZGVybl0KKy0tLS0KK2cuVihCaW5kaW5ncy5vZignaWQnLDEpKS5vdXQoJ2NyZWF0ZWQnKS5tYXAobGFtYmRhOiAoIml0LmdldCgpLnZhbHVlKCduYW1lJykubGVuZ3RoKCkiLCAiZ3JlbWxpbi1ncm9vdnkiKSkuc3VtKCkudG9MaXN0KCkKK2cuVihCaW5kaW5ncy5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS5tYXAobGFtYmRhOiAoIml0LmdldCgpLnZhbHVlKCduYW1lJykubGVuZ3RoKCkiLCAiZ3JlbWxpbi1ncm9vdnkiKSkuc3VtKCkudG9MaXN0KCkKKy0tLS0KKworPT09PSBOYXRpdmUgUHl0aG9uIExhbWJkYXMKKworVG8gcHJvY2VzcyBsYW1iZGFzIGluIFB5dGhvbiwgdGhlIGBHcmVtbGluSnl0aG9uU2NyaXB0RW5naW5lYCBtdXN0IGJlIGVuYWJsZWQgb24gdGhlIHJlbW90ZSBlbmQuIElmIHRoYXQgcmVtb3RlIGlzCitHcmVtbGluIFNlcnZlciwgdGhlbiB0aGVzZSBpbnN0cnVjdGlvbnMgY2FuIGhlbHAgY29uZmlndXJhdGlvbiBpdC4gQXMgYW4gZXhhbXBsZSwgdGhlCitgY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbGAgY29uZmlndXJhdGlvbiBtYWludGFpbnMgYSBgR3JlbWxpbkp5dGhvblNjcmlwdEVuZ2luZWAuCisKK1tzb3VyY2UsYmFzaF0KKy0tLS0KKyQgYmluL2dyZW1saW4tc2VydmVyLnNoIGluc3RhbGwgb3JnLmFwYWNoZS50aW5rZXJwb3AgZ3JlbWxpbi1weXRob24geC55LnoKKyQgYmluL2dyZW1saW4tc2VydmVyLnNoIGNvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXB5LnlhbWwKK1tJTkZPXSBHcmVtbGluU2VydmVyIC0KKyAgICAgICBcLCwsLworICAgICAgIChvIG8pCistLS1vT09vLSgzKS1vT09vLS0tCisKK1tJTkZPXSBHcmVtbGluU2VydmVyIC0gQ29uZmlndXJpbmcgR3JlbWxpbiBTZXJ2ZXIgZnJvbSBjb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCitbSU5GT10gTWV0cmljTWFuYWdlciAtIENvbmZpZ3VyZWQgTWV0cmljcyBTbGY0alJlcG9ydGVyIGNvbmZpZ3VyZWQgd2l0aCBpbnRlcnZhbD0xODAwMDBtcyBhbmQgbG9nZ2VyTmFtZT1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5TZXR0aW5ncyRTbGY0alJlcG9ydGVyTWV0cmljcworW0lORk9dIEdyYXBoTWFuYWdlciAtIEdyYXBoIFtncmFwaF0gd2FzIHN1Y2Nlc3NmdWxseSBjb25maWd1cmVkIHZpYSBbY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzXS4KK1tJTkZPXSBTZXJ2ZXJHcmVtbGluRXhlY3V0b3IgLSBJbml0aWFsaXplZCBHcmVtbGluIHRocmVhZCBwb29sLiAgVGhyZWFkcyBpbiBwb29sIG5hbWVkIHdpdGggcGF0dGVybiBncmVtbGluLSoKK1tJTkZPXSBTY3JpcHRFbmdpbmVzIC0gTG9hZGVkIGdyZW1saW4tanl0aG9uIFNjcmlwdEVuZ2luZQorW0lORk9dIFNjcmlwdEVuZ2luZXMgLSBMb2FkZWQgZ3JlbWxpbi1weXRob24gU2NyaXB0RW5naW5lCitbSU5GT10gU2NyaXB0RW5naW5lcyAtIExvYWRlZCBncmVtbGluLWdyb292eSBTY3JpcHRFbmdpbmUKK1tJTkZPXSBHcmVtbGluRXhlY3V0b3IgLSBJbml0aWFsaXplZCBncmVtbGluLWdyb292eSBTY3JpcHRFbmdpbmUgd2l0aCBzY3JpcHRzL2dlbmVyYXRlLW1vZGVybi5ncm9vdnkKK1tJTkZPXSBTZXJ2ZXJHcmVtbGluRXhlY3V0b3IgLSBJbml0aWFsaXplZCBHcmVtbGluRXhlY3V0b3IgYW5kIGNvbmZpZ3VyZWQgU2NyaXB0RW5naW5lcy4KK1tJTkZPXSBTZXJ2ZXJHcmVtbGluRXhlY3V0b3IgLSBBIEdyYXBoVHJhdmVyc2FsU291cmNlIGlzIG5vdyBib3VuZCB0byBbZ10gd2l0aCBncmFwaHRyYXZlcnNhbHNvdXJjZVt0aW5rZXJncmFwaFt2ZXJ0aWNlczowIGVkZ2VzOjBdLCBzdGFuZGFyZF0KK1tJTkZPXSBPcExvYWRlciAtIEFkZGluZyB0aGUgc3RhbmRhcmQgT3BQcm9jZXNzb3IuCitbSU5GT10gT3BMb2FkZXIgLSBBZGRpbmcgdGhlIHNlc3Npb24gT3BQcm9jZXNzb3IuCitbSU5GT10gT3BMb2FkZXIgLSBBZGRpbmcgdGhlIHRyYXZlcnNhbCBPcFByb2Nlc3Nvci4KK1tJTkZPXSBUcmF2ZXJzYWxPcFByb2Nlc3NvciAtIEluaXRpYWxpemVkIGNhY2hlIGZvciBUcmF2ZXJzYWxPcFByb2Nlc3NvciB3aXRoIHNpemUgMTAwMCBhbmQgZXhwaXJhdGlvbiB0aW1lIG9mIDYwMDAwMCBtcworW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBFeGVjdXRpbmcgc3RhcnQgdXAgTGlmZUN5Y2xlSG9vaworW0lORk9dIExvZ2dlciRpbmZvIC0gTG9hZGluZyAnbW9kZXJuJyBncmFwaCBkYXRhLgorW1dBUk5dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBUaGUgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAgc2VyaWFsaXphdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkLgorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5byB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCitbV0FSTl0gQWJzdHJhY3RDaGFubmVsaXplciAtIFRoZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBzZXJpYWxpemF0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWQuCitbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2Qgd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMAorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbiB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMAorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL2pzb24gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAKK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEKK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMQorW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyZWQgd2l0aCB3b3JrZXIgdGhyZWFkIHBvb2wgb2YgMSwgZ3JlbWxpbiBwb29sIG9mIDggYW5kIGJvc3MgdGhyZWFkIHBvb2wgb2YgMS4KK1tJTkZPXSBHcmVtbGluU2VydmVyJDEgLSBDaGFubmVsIHN0YXJ0ZWQgYXQgcG9ydCA4MTgyLgorLS0tLQorCitOT1RFOiBUaGUgY29tbWFuZCB0byB1c2UgYGluc3RhbGxgIG5lZWQgb25seSBiZSBleGVjdXRlZCBvbmNlIHRvIGdhdGhlciBgZ3JlbWxpbi1weXRob25gIGRlcGVuZGVuY2llcyBpbnRvIEdyZW1saW4gU2VydmVycycKK3BhdGguIEZ1dHVyZSBzdGFydHMgb2YgR3JlbWxpbiBTZXJ2ZXIgd2lsbCBub3QgcmVxdWlyZSB0aGF0IGNvbW1hbmQuCisKK1dBUk5JTkc6IEFzIGV4cGxhaW5lZCB0aHJvdWdob3V0IHRoZSBkb2N1bWVudGF0aW9uLCB3aGVuIHBvc3NpYmxlIDw8YS1ub3RlLW9uLWxhbWJkYXMsYXZvaWQ+PiBsYW1iZGFzLiBJZiBsYW1iZGFzCittdXN0IGJlIHVzZWQsIHRoZW4gY29uc2lkZXIgc3VibWl0dGluZyBHcm9vdnkgbGFtYmRhcyBhcyBvcHBvc2VkIHRvIFB5dGhvbi1iYXNlZCBvbmVzLiBUaGUgYEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVgCitpcyBmYXIgbW9yZSBmZWF0dXJlZCBhbmQgcGVyZm9ybWFudCB0aGFuIGl0cyBKeXRob24gc2libGluZyBhbmQgd2lsbCBsaWtlbHkgeWllbGQgYmV0dGVyIHJlc3VsdHMuCisKKz09PSBTdWJtaXR0aW5nIFNjcmlwdHMKKworV0FSTklORzogVGlua2VyUG9wIGRvZXMgbm90IHJlY29tbWVuZCBzdWJtaXR0aW5nIHNjcmlwdC1iYXNlZCByZXF1ZXN0cyBhbmQgZ2VuZXJhbGx5IGNvbnRpbnVlcyB0byBzdXBwb3J0IHRoaXMgZmVhdHVyZQorZm9yIGxlZ2FjeSByZWFzb25zIGFuZCBjb3JuZXIgdXNlIGNhc2VzIHdoaWNoIGFyZSBzdGlsbCBub3QgY29tcGxldGVseSBhZGRyZXNzZWQgYnkgdGhlIEdyZW1saW4gbGFuZ3VhZ2UuIFBsZWFzZQorY29uc2lkZXIgdXNpbmcgYnl0ZWNvZGUtYmFzZWQgcmVxdWVzdHMgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLgorCitUaGUgYENsaWVudGAgY2xhc3MgaW1wbGVtZW50YXRpb24vaW50ZXJmYWNlIGlzIGJhc2VkIG9uIHRoZSBKYXZhIERyaXZlciwgd2l0aCBzb21lIHJlc3RyaWN0aW9ucy4gTW9zdCBub3RhYmx5LAorR3JlbWxpbi1QeXRob24gZG9lcyBub3QgeWV0IGltcGxlbWVudCB0aGUgYENsdXN0ZXJgIGNsYXNzLiBJbnN0ZWFkLCBgQ2xpZW50YCBpcyBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuCitVc2FnZSBpcyBhcyBmb2xsb3dzOgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK2Zyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyIGltcG9ydCBjbGllbnQgPDE+CitjbGllbnQgPSBjbGllbnQuQ2xpZW50KCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCAnZycpIDwyPgorLS0tLQorCis8MT4gSW1wb3J0IHRoZSBHcmVtbGluLVB5dGhvbiBgY2xpZW50YCBtb2R1bGUuCis8Mj4gT3BlbnMgYSByZWZlcmVuY2UgdG8gYGxvY2FsaG9zdGAgLSBub3RlIHRoYXQgdGhlcmUgYXJlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY2FuIGJlIHBhc3NlZAordG8gdGhlIGBDbGllbnRgIG9iamVjdCB1cG9uIGluc3RhbnRpYXRpb24gYXMga2V5d29yZCBhcmd1bWVudHMuCisKK09uY2UgYSBgQ2xpZW50YCBpbnN0YW5jZSBpcyByZWFkeSwgaXQgaXMgcG9zc2libGUgdG8gaXNzdWUgc29tZSBHcmVtbGluOgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK3Jlc3VsdF9zZXQgPSBjbGllbnQuc3VibWl0KCJbMSwyLDMsNF0iKSAgPDE+CitmdXR1cmVfcmVzdWx0cyA9IHJlc3VsdF9zZXQuYWxsKCkgIDwyPgorcmVzdWx0cyA9IGZ1dHVyZV9yZXN1bHRzLnJlc3VsdCgpIDwzPgorYXNzZXJ0IHJlc3VsdHMgPT0gWzEsIDIsIDMsIDRdIDw0PgorCitmdXR1cmVfcmVzdWx0X3NldCA9IGNsaWVudC5zdWJtaXRBc3luYygiWzEsMiwzLDRdIikgPDU+CityZXN1bHRfc2V0ID0gZnV0dXJlX3Jlc3VsdF9zZXQucmVzdWx0KCkgPDY+CityZXN1bHQgPSByZXN1bHRfc2V0Lm9uZSgpIDw3PgorYXNzZXJ0IHJlc3VsdHMgPT0gWzEsIDIsIDMsIDRdIDw4PgorYXNzZXJ0IHJlc3VsdF9zZXQuZG9uZS5kb25lKCkgPDk+CisKK2NsaWVudC5jbG9zZSgpIDwxMD4KKy0tLS0KKworPDE+IFN1Ym1pdCBhIHNjcmlwdCB0aGF0IHNpbXBseSByZXR1cm5zIGEgYExpc3RgIG9mIGludGVnZXJzLiAgVGhpcyBtZXRob2QgYmxvY2tzIHVudGlsIHRoZSByZXF1ZXN0IGlzIHdyaXR0ZW4gdG8KK3RoZSBzZXJ2ZXIgYW5kIGEgYFJlc3VsdFNldGAgaXMgY29uc3RydWN0ZWQuCis8Mj4gRXZlbiB0aG91Z2ggdGhlIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLCBpdCBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHNlcnZlciBoYXMgc2VudCBiYWNrIHRoZSByZXN1bHRzIChvciBldmVuCitldmFsdWF0ZWQgdGhlIHNjcmlwdCBwb3RlbnRpYWxseSkuICBUaGUgYFJlc3VsdFNldGAgaXMganVzdCBhIGhvbGRlciB0aGF0IGlzIGF3YWl0aW5nIHRoZSByZXN1bHRzIGZyb20gdGhlIHNlcnZlci4gVGhlIGBhbGxgIG1ldGhvZAorcmV0dXJucyBhIGBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlYCB0aGF0IHJlc29sdmVzIHRvIGEgbGlzdCB3aGVuIGl0IGlzIGNvbXBsZXRlLgorPDM+IEJsb2NrIHVudGlsIHRoZSB0aGUgc2NyaXB0IGlzIGV2YWx1YXRlZCBhbmQgcmVzdWx0cyBhcmUgc2VudCBiYWNrIGJ5IHRoZSBzZXJ2ZXIuCis8ND4gVmVyaWZ5IHRoZSByZXN1bHQuCis8NT4gU3VibWl0IHRoZSBzYW1lIHNjcmlwdCB0byB0aGUgc2VydmVyIGJ1dCBkb24ndCBibG9jay4KKzw2PiBXYWl0IHVudGlsIHJlcXVlc3QgaXMgd3JpdHRlbiB0byB0aGUgc2VydmVyIGFuZCBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZC4KKzw3PiBSZWFkIGEgc2luZ2xlIHJlc3VsdCBvZmYgdGhlIHJlc3VsdCBzdHJlYW0uCis8OD4gQWdhaW4sIHZlcmlmeSB0aGUgcmVzdWx0LgorPDk+IFZlcmlmeSB0aGF0IHRoZSBhbGwgcmVzdWx0cyBoYXZlIGJlZW4gcmVhZCBhbmQgc3RyZWFtIGlzIGNsb3NlZC4KKzwxMD4gQ2xvc2UgY2xpZW50IGFuZCB1bmRlcmx5aW5nIHBvb2wgY29ubmVjdGlvbnMuCisKK1tbZ3JlbWxpbi1weXRob24tZHNsXV0KKz09PSBEb21haW4gU3BlY2lmaWMgTGFuZ3VhZ2VzCisKK1dyaXRpbmcgYSBHcmVtbGluIDw8ZHNsLERvbWFpbiBTcGVjaWZpYyBMYW5ndWFnZT4+IChEU0wpIGluIFB5dGhvbiBzaW1wbHkgcmVxdWlyZXMgZGlyZWN0IGV4dGVuc2lvbiBvZiBzZXZlcmFsIGNsYXNzZXM6CisKKyogYEdyYXBoVHJhdmVyc2FsYCAtIHdoaWNoIGV4cG9zZXMgdGhlIHZhcmlvdXMgc3RlcHMgdXNlZCBpbiB0cmF2ZXJzYWwgd3JpdGluZworKiBgX19gIC0gd2hpY2ggc3Bhd25zIGFub255bW91cyB0cmF2ZXJzYWxzIGZyb20gc3RlcHMKKyogYEdyYXBoVHJhdmVyc2FsU291cmNlYCAtIHdoaWNoIHNwYXducyBgR3JhcGhUcmF2ZXJzYWxgIGluc3RhbmNlcworCitUaGUgU29jaWFsIERTTCBiYXNlZCBvbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9pbWFnZXMvdGlua2VycG9wLW1vZGVybi5wbmdbIm1vZGVybiIgdG95IGdyYXBoXQorbWlnaHQgbG9vayBsaWtlIHRoaXM6CisKK1tzb3VyY2UscHl0aG9uXQorLS0tLQorY2xhc3MgU29jaWFsVHJhdmVyc2FsKEdyYXBoVHJhdmVyc2FsKToKKworICAgIGRlZiBrbm93cyhzZWxmLCBwZXJzb25fbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLm91dCgia25vd3MiKS5oYXNMYWJlbCgicGVyc29uIikuaGFzKCJuYW1lIiwgcGVyc29uX25hbWUpCisKKyAgICBkZWYgeW91bmdlc3RGcmllbmRzQWdlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vdXQoImtub3dzIikuaGFzTGFiZWwoInBlcnNvbiIpLnZhbHVlcygiYWdlIikubWluKCkKKworICAgIGRlZiBjcmVhdGVkQXRMZWFzdChzZWxmLCBudW1iZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5vdXRFKCJjcmVhdGVkIikuY291bnQoKS5pc18oUC5ndGUobnVtYmVyKSkKKworY2xhc3MgX18oQW5vbnltb3VzVHJhdmVyc2FsKToKKworICAgIGdyYXBoX3RyYXZlcnNhbCA9IFNvY2lhbFRyYXZlcnNhbAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGtub3dzKGNscywgKmFyZ3MpOgorICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5rbm93cygqYXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB5b3VuZ2VzdEZyaWVuZHNBZ2UoY2xzLCAqYXJncyk6CisgICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLnlvdW5nZXN0RnJpZW5kc0FnZSgqYXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjcmVhdGVkQXRMZWFzdChjbHMsICphcmdzKToKKyAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkuY3JlYXRlZEF0TGVhc3QoKmFyZ3MpCisKKworY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlKEdyYXBoVHJhdmVyc2FsU291cmNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihTb2NpYWxUcmF2ZXJzYWxTb3VyY2UsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5ncmFwaF90cmF2ZXJzYWwgPSBTb2NpYWxUcmF2ZXJzYWwKKworICAgIGRlZiBwZXJzb25zKHNlbGYsICphcmdzKToKKyAgICAgICAgdHJhdmVyc2FsID0gc2VsZi5nZXRfZ3JhcGhfdHJhdmVyc2FsKCkKKyAgICAgICAgdHJhdmVyc2FsLmJ5dGVjb2RlLmFkZF9zdGVwKCJWIikKKyAgICAgICAgdHJhdmVyc2FsLmJ5dGVjb2RlLmFkZF9zdGVwKCJoYXNMYWJlbCIsICJwZXJzb24iKQorCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDA6CisgICAgICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoImhhcyIsICJuYW1lIiwgUC53aXRoaW4oYXJncykpCisKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbAorLS0tLQorCitOT1RFOiBUaGUgYEFub255bW91c1RyYXZlcnNhbGAgY2xhc3MgYWJvdmUgaXMganVzdCBhbiBhbGlhcyBmb3IgYCtfXytgIGFzIGluCitgK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5ncmFwaF90cmF2ZXJzYWwgaW1wb3J0IF9fIGFzIEFub255bW91c1RyYXZlcnNhbCtgCisKK1VzaW5nIHRoZSBEU0wgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBqdXN0IHJlcXVpcmVzIHRoYXQgdGhlIGdyYXBoIGluc3RhbmNlIGtub3cgdGhlIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VgIHNob3VsZAorYmUgdXNlZDoKKworW3NvdXJjZSxweXRob25dCistLS0tCitzb2NpYWwgPSBHcmFwaCgpLnRyYXZlcnNhbChTb2NpYWxUcmF2ZXJzYWxTb3VyY2UpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJywnZycpKQorc29jaWFsLnBlcnNvbnMoIm1hcmtvIikua25vd3MoImpvc2giKQorc29jaWFsLnBlcnNvbnMoIm1hcmtvIikueW91bmdlc3RGcmllbmRzQWdlKCkKK3NvY2lhbC5wZXJzb25zKCkuZmlsdGVyKF9fLmNyZWF0ZWRBdExlYXN0KDIpKS5jb3VudCgpCistLS0tCisKKz09PSBTeW50YWN0aWMgU3VnYXIKKworUHl0aG9uIHN1cHBvcnRzIG1ldGEtcHJvZ3JhbW1pbmcgYW5kIG9wZXJhdG9yIG92ZXJsb2FkaW5nLiBUaGVyZSBhcmUgdGhyZWUgdXNlcyBvZiB0aGVzZSB0ZWNobmlxdWVzIGluIEdyZW1saW4tUHl0aG9uCit0aGF0IG1ha2VzIHRyYXZlcnNhbHMgYSBiaXQgbW9yZSBjb25jaXNlLgorCitbZ3JlbWxpbi1weXRob24sbW9kZXJuXQorLS0tLQorZy5WKCkuYm90aCgpWzE6M10udG9MaXN0KCkKK2cuVigpLmJvdGgoKVsxXS50b0xpc3QoKQorZy5WKCkuYm90aCgpLm5hbWUudG9MaXN0KCkKKy0tLS0KKworW1tncmVtbGluLXB5dGhvbi1kaWZmZXJlbmNlc11dCis9PT0gRGlmZmVyZW5jZXMKKworSW4gc2l0dWF0aW9ucyB3aGVyZSBQeXRob24gcmVzZXJ2ZWQgd29yZHMgYW5kIGdsb2JhbCBmdW5jdGlvbnMgb3ZlcmxhcCB3aXRoIHN0YW5kYXJkIEdyZW1saW4gc3RlcHMgYW5kIHRva2VucywgdGhvc2UKK2JpdHMgb2YgY29uZmxpY3RpbmcgR3JlbWxpbiBnZXQgYW4gdW5kZXJzY29yZSBhcHBlbmRlZCBhcyBhIHN1ZmZpeDoKKworKlN0ZXBzKiAtIDw8YW5kLXN0ZXAsYW5kXygpPj4sIDw8YXMtc3RlcCxhc18oKT4+LCA8PGZyb20tc3RlcCxmcm9tXygpPj4sIDw8aXMtc3RlcCxpc18oKT4+LCA8PGluLXN0ZXAsaW5fKCk+PiwKKzw8bm90LXN0ZXAsbm90XygpPj4sIDw8b3Itc3RlcCxvcl8oKT4+LCA8PHdpdGgtc3RlcCx3aXRoXygpPj4KKworKlRva2VucyogLSA8PGEtbm90ZS1vbi1zY29wZXMsU2NvcGUuZ2xvYmFsXz4+CisKID09PSBMaW1pdGF0aW9ucwogCiAqIFRyYXZlcnNhbHMgdGhhdCByZXR1cm4gYSBgU2V0YCAqbWlnaHQqIGJlIGNvZXJjZWQgdG8gYSBgTGlzdGAgaW4gUHl0aG9uLiBJbiB0aGUgY2FzZSBvZiBQeXRob24sIG51bWJlciBlcXVhbGl0eQpAQCAtMzI2LDI3ICsxMDEyLDI1IEBACiBpcyBkZXRlY3RlZCBkdXJpbmcgZGVzZXJpYWxpemF0aW9uLCB0aGUgYFNldGAgaXMgY29lcmNlZCB0byBhIGBMaXN0YCBzbyB0aGF0IHRyYXZlcnNhbHMgcmV0dXJuIGNvbnNpc3RlbnQKIHJlc3VsdHMgd2l0aGluIGEgY29sbGVjdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGxhbmd1YWdlcy4gSWYgYSBgU2V0YCBpcyBuZWVkZWQgdGhlbiBjb252ZXJ0IGBMaXN0YCByZXN1bHRzCiB0byBgU2V0YCBtYW51YWxseS4KKyogR3JlbWxpbiBpcyBjYXBhYmxlIG9mIHJldHVybmluZyBgRGljdGlvbmFyeWAgcmVzdWx0cyB0aGF0IHVzZSBub24taGFzaGFibGUga2V5cyAoZS5nLiBEaWN0aW9uYXJ5IGFzIGEga2V5KSBhbmQgUHl0aG9uCitkb2VzIG5vdCBzdXBwb3J0IHRoYXQgYXQgYSBsYW5ndWFnZSBsZXZlbC4gR3JlbWxpbiB0aGF0IHJldHVybnMgc3VjaCByZXN1bHRzIHdpbGwgbmVlZCB0byBiZSByZS13cml0dGVuIHRvIGF2b2lkIHRoYXQuCiAKLT09PSBTdWJtaXQgR3JlbWxpbiBTY3JpcHRzCis9PT0gQXBwbGljYXRpb24gRXhhbXBsZXMKIAotQWRkaXRpb25hbGx5LCB5b3UgY2FuIGFsc28gc2VuZCBwYXJhbWV0cml6ZWQgR3JlbWxpbiBzY3JpcHRzIHRvIHRoZSBzZXJ2ZXIgYXMgc3RyaW5nczoKK1RoZSBUaW5rZXJQb3Agc291cmNlIGNvZGUgY29udGFpbnMgYSBzaW1wbGUgUHl0aG9uIHNjcmlwdCB0aGF0IHNob3dzIGEgYmFzaWMgZXhhbXBsZSBvZiBob3cgZ3JlbWxpbnB5dGhvbiB3b3Jrcy4gSXQKK2NhbiBiZSBmb3VuZCBpbiBHaXRIdWIgbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC90cmVlL3h4Lnl5Lnp6L2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9leGFtcGxlLnB5W2hlcmVdCithbmQgaXMgZGVzaWduZWQgdG8gd29yayBiZXN0IHdpdGggYSBydW5uaW5nIDw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBjb25maWd1cmVkIHdpdGggdGhlIGRlZmF1bHQKK2Bjb25mL2dyZW1saW4tc2VydmVyLnlhbWxgIGZpbGUgYXMgaW5jbHVkZWQgd2l0aCB0aGUgc3RhbmRhcmQgcmVsZWFzZSBwYWNrYWdpbmcuCiAKLVtzb3VyY2UscHl0aG9uXQorW3NvdXJjZSxzaGVsbF0KIC0tLS0KLWNsaWVudCA9IENsaWVudCgnd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJywgJ2cnKQotY2xpZW50LnN1Ym1pdCgneCArIHgnLCB7J3gnOiAyfSkuYWxsKCkucmVzdWx0KCkKK3BpcCBpbnN0YWxsIGdyZW1saW5weXRob24KK3BpcCBpbnN0YWxsIHRvcm5hZG8KK3B5dGhvbiBleGFtcGxlLnB5CiAtLS0tCiAKLUl0IGlzIGFsc28gcG9zc2libGUgdG8gaW5pdGlhbGl6ZSB0aGUgYENsaWVudGAgdG8gdXNlIDw8c2Vzc2lvbnMsc2Vzc2lvbnM+PjoKLQotW3NvdXJjZSxweXRob25dCi0tLS0tCi1jbGllbnQgPSBDbGllbnQoJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsICdnJywgc2Vzc2lvbj1zdHIodXVpZC51dWlkNCgpKSkKLS0tLS0KLQotV2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24sIHRoZSBzdGF0ZSBvZiB2YXJpYWJsZXMgd2l0aGluIHNjcmlwdHMgYXJlIHByZXNlcnZlZCBiZXR3ZWVuIHJlcXVlc3RzLgotCi1bW2dyZW1saW4tRG90TmV0XV0KK2FuY2hvcjpncmVtbGluLURvdE5ldFtdCitbW2dyZW1saW4tZG90bmV0XV0KID09IEdyZW1saW4uTmV0CiAKIGltYWdlOmdyZW1saW4tZG90bmV0LWxvZ28ucG5nW3dpZHRoPTM3MSxmbG9hdD1yaWdodF0gQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4uTmV0IGltcGxlbWVudHMgR3JlbWxpbiB3aXRoaW4gdGhlIEMjCkBAIC0zNTksNjMgKzEwNDMsMzAgQEAKIFtzb3VyY2UscG93ZXJzaGVsbF0KIG51Z2V0IGluc3RhbGwgR3JlbWxpbi5OZXQKIAotSW4gR3JlbWxpbi5OZXQgdGhlcmUgZXhpc3RzIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAsIGBHcmFwaFRyYXZlcnNhbGAsIGFuZCBgX19gIHdoaWNoIG1pcnJvciB0aGUgcmVzcGVjdGl2ZSBjbGFzc2VzCi1pbiBHcmVtbGluLUphdmEuIFRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHJlcXVpcmVzIGEgZHJpdmVyIGluIG9yZGVyIHRvIGNvbW11bmljYXRlIHdpdGggPDxncmVtbGluLXNlcnZlcixHcmVtbGluU2VydmVyPj4gKG9yIGFueQotUmVtb3RlQ29ubmVjdGlvbi1lbmFibGVkIHNlcnZlcikuCis9PT0gQ29ubmVjdGluZwogCi1UaGUgYEdyZW1saW4uTmV0LkRyaXZlci5SZW1vdGUuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgaXMgcHJvdmlkZWQgYXMgcGFydCBvZiBBcGFjaGUgVGlua2VyUG9w4oCZcyBHcmVtbGluLk5ldC4KLQotSU1QT1JUQU5UOiBGb3IgZGV2ZWxvcGVycyB3aXNoaW5nIHRvIHByb3ZpZGUgYW5vdGhlciBkcml2ZXIgaW1wbGVtZW50YXRpb24sIGJlIHN1cmUgdG8gaW1wbGVtZW50IGBJUmVtb3RlQ29ubmVjdGlvbmAgaW4KLWBHcmVtbGluLk5ldC5Qcm9jZXNzLlJlbW90ZWAgc28gaXQgY2FuIHRoZW4gYmUgdXNlZCBieSBHcmVtbGluLk5ldOKAmXMgYEdyYXBoVHJhdmVyc2FsYC4KLQotV2hlbiBHcmVtbGluIFNlcnZlciBpcyBydW5uaW5nLCBHcmVtbGluLk5ldCBjYW4gY29tbXVuaWNhdGUgd2l0aCBHcmVtbGluIFNlcnZlciBieSBzZW5kaW5nIHRyYXZlcnNhbHMgc2VyaWFsaXplZCBhcyBgQnl0ZWNvZGVgLgotCi1JTVBPUlRBTlQ6IEdyZW1saW4uTmV0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JhcGhTT04gMS4wLgotCi1BIHRyYXZlcnNhbCBzb3VyY2UgY2FuIGJlIHNwYXduZWQgYW5vbnltb3VzbHkgdXNpbmcgYW4gYEFub255bW91c1RyYXZlcnNhbFNvdXJjZWAgd2hpY2ggY2FuIGJlIHN0YXRpY2FsbHkgaW1wb3J0ZWQgYXMKLWZvbGxvd3M6CitUaGUgcGF0dGVybiBmb3IgY29ubmVjdGluZyBpcyBkZXNjcmliZWQgaW4gPDxjb25uZWN0aW5nLWdyZW1saW4sQ29ubmVjdGluZyBHcmVtbGluPj4gYW5kIGl0IGJhc2ljYWxseSBkaXN0aWxscyBkb3duIHRvCitjcmVhdGluZyBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIEEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpcyBjcmVhdGVkIGZyb20gdGhlIGBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsKClgCittZXRob2Qgd2hlcmUgdGhlICJnIiBwcm92aWRlZCB0byB0aGUgYERyaXZlclJlbW90ZUNvbm5lY3Rpb25gIGNvcnJlc3BvbmRzIHRvIHRoZSBuYW1lIG9mIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBvbgordGhlIHJlbW90ZSBlbmQuCiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotdXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKK2luY2x1ZGU6Oi4uLy4uLy4uL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c1Rlc3RzLmNzW3RhZ3M9Y29ubmVjdGluZ10KIC0tLS0KIAotd2hpY2ggd2lsbCBleHBvc2UgYSBzdGF0aWMgYFRyYXZlcnNhbCgpYCBtZXRob2Qgd2hpY2ggY2FuIGJlIHVzZWQgYXMgZm9sbG93cyB0byB5aWVsZCBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgYXNzaWduZWQKLXRvICJnIiBhbmQgY29uZmlndXJlZCB0byBjb25uZWN0IHRvIEdyZW1saW4gU2VydmVyIGF0ICJsb2NhbGhvc3Q6ODE4MiI6Cis9PT0gQ29tbW9uIEltcG9ydHMKKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNsYXNzZXMsIGZ1bmN0aW9ucyBhbmQgdG9rZW5zIHRoYXQgYXJlIHR5cGljYWxseSB1c2VkIHdpdGggR3JlbWxpbi4gVGhlIGZvbGxvd2luZyBpbXBvcnRzCitwcm92aWRlIG1vc3Qgb2YgdGhlIHR5cGljYWwgZnVuY3Rpb25hbGl0eSByZXF1aXJlZCB0byB1c2UgR3JlbWxpbjoKIAogW3NvdXJjZSxjc2hhcnBdCiAtLS0tCi12YXIgcmVtb3RlQ29ubmVjdGlvbiA9IG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSkpOwotdmFyIGcgPSBUcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKHJlbW90ZUNvbm5lY3Rpb24pOworaW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzVGVzdHMuY3NbdGFncz1jb21tb25JbXBvcnRzXQogLS0tLQogCi1XaGVuIGEgdHJhdmVyc2FsIGZyb20gdGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaXMgaXRlcmF0ZWQsIHRoZSB0cmF2ZXJzYWzigJlzIGBCeXRlY29kZWAgaXMgc2VudCBvdmVyIHRoZSB3aXJlIHZpYSB0aGUgcmVnaXN0ZXJlZAotYElSZW1vdGVDb25uZWN0aW9uYC4gVGhlIGJ5dGVjb2RlIGlzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBlcXVpdmFsZW50IHRyYXZlcnNhbCBhdCB0aGUgcmVtb3RlIHRyYXZlcnNhbCBzb3VyY2UuCi1Nb3Jlb3ZlciwgdHlwaWNhbGx5IHRoZSBieXRlY29kZSBpcyBhbmFseXplZCB0byBkZXRlcm1pbmUgd2hpY2ggbGFuZ3VhZ2UgdGhlIGJ5dGVjb2RlIHNob3VsZCBiZSB0cmFuc2xhdGVkIHRvLiBJZiB0aGUgdHJhdmVyc2FsCi1kb2VzIG5vdCBjb250YWluIGxhbWJkYXMsIHRoZSByZW1vdGUgbG9jYXRpb24gKGUuZy4gR3JlbWxpbiBTZXJ2ZXIpIHdpbGwgdHlwaWNhbGx5Ci11c2UgR3JlbWxpbi1KYXZhLiBJZiBpdCBoYXMgbGFtYmRhcyB3cml0dGVuIGluIEdyb292eSwgaXQgd2lsbCB1c2UgR3JlbWxpbi1Hcm9vdnkgKGUuZy4gYEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVgKS4KLUxpa2V3aXNlLCBpZiBpdCBoYXMgbGFtYmRhcyByZXByZXNlbnRlZCBpbiBQeXRob24sIGl0IHdpbGwgdXNlIEdyZW1saW4tUHl0aG9uIChlLmcuIGBHcmVtbGluSnl0aG9uU2NyaXB0RW5naW5lYCkuCi0KLUlNUE9SVEFOVDogR3JlbWxpbi5OZXTigJlzIGBJVHJhdmVyc2FsYCBpbnRlcmZhY2Ugc3VwcG9ydHMgdGhlIHN0YW5kYXJkIEdyZW1saW4gbWV0aG9kcyBzdWNoIGFzIGBOZXh0KClgLCBgTmV4dFRyYXZlcnNlcigpYCwgYFRvU2V0KClgLAotYFRvTGlzdCgpYCwgZXRjLiBTdWNoICJ0ZXJtaW5hbCIgbWV0aG9kcyB0cmlnZ2VyIHRoZSBldmFsdWF0aW9uIG9mIHRoZSB0cmF2ZXJzYWwuCi0KLT09PSBSZW1vdGVDb25uZWN0aW9uIFN1Ym1pc3Npb24KLQotVmVyeSBzaW1pbGFyIHRvIEdyZW1saW4tUHl0aG9uIGFuZCBHcmVtbGluLUphdmEsIHRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc3VibWl0IGEgdHJhdmVyc2FsIHRvIGEgYElSZW1vdGVDb25uZWN0aW9uYCB1c2luZwotdGVybWluYWwvYWN0aW9uIG1ldGhvZHMgb2ZmIG9mIGBJVHJhdmVyc2FsYC4KLQotKiBgSVRyYXZlcnNhbC5OZXh0KClgCi0qIGBJVHJhdmVyc2FsLk5leHRUcmF2ZXJzZXIoKWAKLSogYElUcmF2ZXJzYWwuVG9MaXN0KClgCi0qIGBJVHJhdmVyc2FsLlRvU2V0KClgCi0qIGBJVHJhdmVyc2FsLkl0ZXJhdGUoKWAKLQogPT09IENvbmZpZ3VyYXRpb24KIAotVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSBob3cgdGhlIEdyZW1saW4uTmV0IGRyaXZlciBjYW4gYmUgY29uZmlndXJlZC4KLQotPT09PSBHcmVtbGluIFNlcnZlcgotCiBUaGUgY29ubmVjdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgR3JlbWxpbi5OZXQgZHJpdmVyIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGBHcmVtbGluU2VydmVyYCBpbnN0YW5jZSBhcyBrZXl3b3JkIGFyZ3VtZW50czoKIAogW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQpAQCAtNDI4LDU5ICsxMDc5LDMwIEBACiB8cGFzc3dvcmQgfFRoZSBwYXNzd29yZCB0byBzdWJtaXQgb24gcmVxdWVzdHMgdGhhdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLiB8X25vbmVfCiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLT09PT0gR3JhcGhTT04gU2VyaWFsaXphdGlvbgorPT09PSBDb25uZWN0aW9uIFBvb2wKKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjb25maWd1cmUgdGhlIGBDb25uZWN0aW9uUG9vbGAgb2YgdGhlIEdyZW1saW4uTmV0IGRyaXZlci4KK1RoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBjYW4gYmUgc2V0IGFzIHByb3BlcnRpZXMKK29uIHRoZSBgQ29ubmVjdGlvblBvb2xTZXR0aW5nc2AgaW5zdGFuY2UgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBgR3JlbWxpbkNsaWVudGA6CisKK1t3aWR0aD0iMTAwJSIsY29scz0iMywxMCxeMiIsb3B0aW9ucz0iaGVhZGVyIl0KK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3xLZXkgfERlc2NyaXB0aW9uIHxEZWZhdWx0Cit8UG9vbFNpemUgfFRoZSBzaXplIG9mIHRoZSBjb25uZWN0aW9uIHBvb2wuIHw0Cit8TWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiB8VGhlIG1heGltdW0gbnVtYmVyIG9mIGluLWZsaWdodCByZXF1ZXN0cyB0aGF0IGNhbiBvY2N1ciBvbiBhIGNvbm5lY3Rpb24uIHwzMgorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIGBOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb25gIGlzIHRocm93biBpZiBhbGwgY29ubmVjdGlvbnMgaGF2ZSByZWFjaGVkIHRoZSBgTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbmAgbGltaXQKK3doZW4gYSBuZXcgcmVxdWVzdCBjb21lcyBpbi4KKworPT09PSBTZXJpYWxpemF0aW9uCiAKIFRoZSBHcmVtbGluLk5ldCBkcml2ZXIgdXNlcyBieSBkZWZhdWx0IEdyYXBoU09OIDMuMCBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgR3JhcGhTT04gMi4wIHdoaWNoIGNhbiBiZSBuZWNlc3NhcnkKIHdoZW4gdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IEdyYXBoU09OIDMuMCB5ZXQ6CiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotdmFyIGNsaWVudCA9IG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSwgbmV3IEdyYXBoU09OMlJlYWRlcigpLAotICAgIG5ldyBHcmFwaFNPTjJXcml0ZXIoKSwgR3JlbWxpbkNsaWVudC5HcmFwaFNPTjJNaW1lVHlwZSk7Ci0tLS0tCi0KLT09PSBTdGF0aWMgRW51bXMgYW5kIE1ldGhvZHMKLQotR3JlbWxpbiBoYXMgdmFyaW91cyB0b2tlbnMgKGUuZy4gYFRgLCBgUGAsIGBPcmRlcmAsIGBPcGVyYXRvcmAsIGV0Yy4pIHRoYXQgYXJlIHJlcHJlc2VudGVkIGluIEdyZW1saW4uTmV0IGFzIGNsYXNzZXMuCi0KLVRoZXNlIGNhbiBiZSB1c2VkIGFuYWxvZ291c2x5IHRvIGhvdyB0aGV5IGFyZSB1c2VkIGluIEdyZW1saW4tSmF2YS4KLQotW3NvdXJjZSxjc2hhcnBdCi1nLlYoKS5IYXNMYWJlbCgicGVyc29uIikuSGFzKCJhZ2UiLFAuR3QoMzApKS5PcmRlcigpLkJ5KCJhZ2UiLE9yZGVyLmRlc2MpLlRvTGlzdCgpCi0KLU1vcmVvdmVyLCB0aGUgY2xhc3MgcHJlZml4ZXMgY2FuIGJlIG9taXR0ZWQgd2l0aCBhIGB1c2luZyBzdGF0aWNgLgotCi1bc291cmNlLGNzaGFycF0KLS0tLS0KLXVzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5QOwotdXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLk9yZGVyOwotLS0tLQotCi1UaGVuIGl0IGlzIHBvc3NpYmxlIHRvIHJlcHJlc2VudCB0aGUgYWJvdmUgdHJhdmVyc2FsIGFzIGJlbG93LgotCi1bc291cmNlLGNzaGFycF0KLWcuVigpLkhhc0xhYmVsKCJwZXJzb24iKS5IYXMoImFnZSIsR3QoMzApKS5PcmRlcigpLkJ5KCJhZ2UiLGRlc2MpLlRvTGlzdCgpCi0KLUZpbmFsbHksIHdpdGggdXNpbmcgc3RhdGljIGArX18rYCwgYW5vbnltb3VzIHRyYXZlcnNhbHMgbGlrZSBgK19fLk91dCgpK2AgY2FuIGJlIGV4cHJlc3NlZCBhcyBiZWxvdy4gVGhhdCBpcywgd2l0aG91dCB0aGUgYGArX18uK2BgLXByZWZpeC4KLQotW3NvdXJjZSxjc2hhcnBdCi1nLlYoKS5SZXBlYXQoT3V0KCkpLlRpbWVzKDIpLlZhbHVlcygibmFtZSIpLkZvbGQoKS5Ub0xpc3QoKQotCi09PT0gQmluZGluZ3MKLQotV2hlbiBhIHRyYXZlcnNhbCBieXRlY29kZSBpcyBzZW50IG92ZXIgYSBgSVJlbW90ZUNvbm5lY3Rpb25gIChlLmcuIEdyZW1saW4gU2VydmVyKSwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkLCBjb21waWxlZCwKLWFuZCB0aGVuIGV4ZWN1dGVkLiBJZiB0aGUgc2FtZSB0cmF2ZXJzYWwgaXMgc2VudCBhZ2FpbiwgdHJhbnNsYXRpb24gYW5kIGNvbXBpbGF0aW9uIGNhbiBiZSBza2lwcGVkIGFzIHRoZSBwcmV2aW91c2x5Ci1jb21waWxlZCB2ZXJzaW9uIHNob3VsZCBiZSBjYWNoZWQuIE1hbnkgdHJhdmVyc2FscyBhcmUgdW5pcXVlIHVwIHRvIHNvbWUgcGFyYW1ldGVyaXphdGlvbi4gRm9yIGluc3RhbmNlLAotYGcuVigxKS5PdXQoImNyZWF0ZWQiKS5WYWx1ZXMoIm5hbWUiKWAgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgZnJvbSBgZy5WKDQpLk91dCgiY3JlYXRlZCIpLlZhbHVlcygiTmFtZSIpYAotYXMgdGhleSBoYXZlIGRpZmZlcmVudCBzY3JpcHQgInN0cmluZyIgcmVwcmVzZW50YXRpb25zLiBIb3dldmVyLCBgZy5WKHgpLk91dCgiY3JlYXRlZCIpLlZhbHVlcygibmFtZSIpYCB3aXRoIGJpbmRpbmdzIG9mCi1ge3ggOiAxfWAgYW5kIGB7eCA6IDR9YCBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZS4gSWYgYSB0cmF2ZXJzYWwgaXMgZ29pbmcgdG8gYmUgZXhlY3V0ZWQgcmVwZWF0ZWRseSwgYnV0IHdpdGggZGlmZmVyZW50Ci1wYXJhbWV0ZXJzLCB0aGVuIGJpbmRpbmdzIHNob3VsZCBiZSB1c2VkLiBJbiBHcmVtbGluLk5ldCwgYmluZGluZ3MgYXJlIG9iamVjdHMgdGhhdCBjYW4gYmUgY3JlYXRlZCBhcyBmb2xsb3dzLgotCi1bc291cmNlLGNzaGFycF0KLS0tLS0KLXZhciBiID0gbmV3IEJpbmRpbmdzKCk7Ci1nLlYoYi5PZigiaWQiLCAxKSkuT3V0KCJjcmVhdGVkIikuVmFsdWVzKCJuYW1lIikudG9MaXN0KCkKLWcuVihiLk9mKCJpZCIsIDQpKS5PdXQoImNyZWF0ZWQiKS5WYWx1ZXMoIm5hbWUiKS50b0xpc3QoKQoraW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzVGVzdHMuY3NbdGFncz1zZXJpYWxpemF0aW9uXQogLS0tLQogCiA9PT0gVHJhdmVyc2FsIFN0cmF0ZWdpZXMKQEAgLTQ5MCwyMiArMTExMiw3IEBACiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotZyA9IGcuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGV4Q3JpdGVyaW9uOiBIYXNMYWJlbCgicGVyc29uIiksCi0gICAgZWRnZUNyaXRlcmlvbjogSGFzKCJ3ZWlnaHQiLCBHdCgwLjUpKSkpOwotdmFyIG5hbWVzID0gZy5WKCkuVmFsdWVzKCJuYW1lIikuVG9MaXN0KCk7ICAvLyBuYW1lczogW21hcmtvLCB2YWRhcywgam9zaCwgcGV0ZXJdCi0KLWcgPSBnLldpdGhvdXRTdHJhdGVnaWVzKHR5cGVvZihTdWJncmFwaFN0cmF0ZWd5KSk7Ci1uYW1lcyA9IGcuVigpLlZhbHVlcygibmFtZSIpLlRvTGlzdCgpOyAvLyBuYW1lczogW21hcmtvLCB2YWRhcywgbG9wLCBqb3NoLCByaXBwbGUsIHBldGVyXQotCi12YXIgZWRnZVZhbHVlTWFwcyA9IGcuVigpLk91dEUoKS5WYWx1ZU1hcCh0cnVlKS5Ub0xpc3QoKTsKLS8vIGVkZ2VWYWx1ZU1hcHM6IFtbbGFiZWw6Y3JlYXRlZCwgaWQ6OSwgd2VpZ2h0OjAuNF0sIFtsYWJlbDprbm93cywgaWQ6Nywgd2VpZ2h0OjAuNV0sIFtsYWJlbDprbm93cywgaWQ6OCwgd2VpZ2h0OjEuMF0sCi0vLyAgICAgW2xhYmVsOmNyZWF0ZWQsIGlkOjEwLCB3ZWlnaHQ6MS4wXSwgW2xhYmVsOmNyZWF0ZWQsIGlkOjExLCB3ZWlnaHQ6MC40XSwgW2xhYmVsOmNyZWF0ZWQsIGlkOjEyLCB3ZWlnaHQ6MC4yXV0KLQotZyA9IGcuV2l0aENvbXB1dGVyKHdvcmtlcnM6IDIsIHZlcnRpY2VzOiBIYXMoIm5hbWUiLCAibWFya28iKSk7Ci1uYW1lcyA9IGcuVigpLlZhbHVlcygibmFtZSIpLlRvTGlzdCgpOyAgLy8gbmFtZXM6IFttYXJrb10KLQotZWRnZVZhbHVlTWFwcyA9IGcuVigpLk91dEUoKS5WYWx1ZU1hcCh0cnVlKS5Ub0xpc3QoKTsKLS8vIGVkZ2VWYWx1ZU1hcHM6IFtbbGFiZWw6Y3JlYXRlZCwgaWQ6OSwgd2VpZ2h0OjAuNF0sIFtsYWJlbDprbm93cywgaWQ6Nywgd2VpZ2h0OjAuNV0sIFtsYWJlbDprbm93cywgaWQ6OCwgd2VpZ2h0OjEuMF1dCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNUZXN0cy5jc1t0YWdzPXRyYXZlcnNhbFN0cmF0ZWdpZXNdCiAtLS0tCiAKIE5PVEU6IE1hbnkgb2YgdGhlIFRyYXZlcnNhbFN0cmF0ZWd5IGNsYXNzZXMgaW4gR3JlbWxpbi5OZXQgYXJlIHByb3hpZXMgdG8gdGhlIHJlc3BlY3RpdmUgc3RyYXRlZ3kgb24gQXBhY2hlIFRpbmtlclBvcOKAmXMKQEAgLTUzNSwxOSArMTE0MiwyNCBAQAogaW5zdGFuY2UgY3JlYXRlZCwgaXQgd2lsbCBoZWxwIHRvIGZ1bGx5IGRlZmluZSB0aGUgY2xvc3VyZSBpbiB0aGUgbGFtYmRhIGV4cHJlc3Npb24gLSBzbyByYXRoZXIgdGhhbgogYExhbWJkYS5Hcm9vdnkoIml0LmdldCgpLnZhbHVlKCduYW1lJykpYCwgcHJlZmVyIGBMYW1iZGEuR3Jvb3Z5KCJ4IC0+IHguZ2V0KCkudmFsdWUoJ25hbWUnKSlgLgogCi09PT0gU3VibWl0IEdyZW1saW4gU2NyaXB0cworPT09IFN1Ym1pdHRpbmcgU2NyaXB0cwogCi1BZGRpdGlvbmFsbHksIHlvdSBjYW4gYWxzbyBzZW5kIHBhcmFtZXRyaXplZCBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlciBhcyBzdHJpbmdzOgorV0FSTklORzogVGlua2VyUG9wIGRvZXMgbm90IHJlY29tbWVuZCBzdWJtaXR0aW5nIHNjcmlwdC1iYXNlZCByZXF1ZXN0cyBhbmQgZ2VuZXJhbGx5IGNvbnRpbnVlcyB0byBzdXBwb3J0IHRoaXMgZmVhdHVyZQorZm9yIGxlZ2FjeSByZWFzb25zIGFuZCBjb3JuZXIgdXNlIGNhc2VzIHdoaWNoIGFyZSBzdGlsbCBub3QgY29tcGxldGVseSBhZGRyZXNzZWQgYnkgdGhlIEdyZW1saW4gbGFuZ3VhZ2UuIFBsZWFzZQorY29uc2lkZXIgdXNpbmcgYnl0ZWNvZGUtYmFzZWQgcmVxdWVzdHMgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLgorCitHcmVtbGluIHNjcmlwdHMgYXJlIHNlbnQgdG8gdGhlIHNlcnZlciBmcm9tIGEgYElHcmVtbGluQ2xpZW50YCBpbnN0YW5jZS4gIEEgYElHcmVtbGluQ2xpZW50YCBpcyBjcmVhdGVkIGFzIGZvbGxvd3M6CiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotdmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4Mik7Ci11c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChncmVtbGluU2VydmVyKSkKLXsKLSAgICB2YXIgYmluZGluZ3MgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4ge3siYSIsIGF9LCB7ImIiLCBifX07Ci0gICAgdmFyIHJlc3BvbnNlID0KLSAgICAgICAgYXdhaXQgZ3JlbWxpbkNsaWVudC5TdWJtaXRXaXRoU2luZ2xlUmVzdWx0QXN5bmM8aW50PigiYSArIGIiLCBiaW5kaW5ncyk7Ci19CitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNUZXN0cy5jc1t0YWdzPXN1Ym1pdHRpbmdTY3JpcHRzXQorLS0tLQorCitJZiB0aGUgcmVtb3RlIHN5c3RlbSBoYXMgYXV0aGVudGljYXRpb24gYW5kIFNTTCBlbmFibGVkLCB0aGVuIHRoZSBgR3JlbWxpblNlcnZlcmAgb2JqZWN0IGNhbiBiZSBjb25maWd1cmVkIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsY3NoYXJwXQorLS0tLQoraW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzVGVzdHMuY3NbdGFncz1zdWJtaXR0aW5nU2NyaXB0c1dpdGhBdXRoZW50aWNhdGlvbl0KIC0tLS0KIAogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBpbml0aWFsaXplIHRoZSBgQ2xpZW50YCB0byB1c2UgPDxzZXNzaW9ucyxzZXNzaW9ucz4+OgpAQCAtNTU4LDcgKzExNzAsNjEgQEAKIHZhciBjbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChncmVtbGluU2VydmVyLCBzZXNzaW9uSWQ6IEd1aWQuTmV3R3VpZCgpLlRvU3RyaW5nKCkpKQogLS0tLQogCi1XaXRoIHRoaXMgY29uZmlndXJhdGlvbiwgdGhlIHN0YXRlIG9mIHZhcmlhYmxlcyB3aXRoaW4gc2NyaXB0cyBhcmUgcHJlc2VydmVkIGJldHdlZW4gcmVxdWVzdHMuCitbW2dyZW1saW4tbmV0LWRzbF1dCis9PT0gRG9tYWluIFNwZWNpZmljIExhbmd1YWdlcworCitEZXZlbG9waW5nIGEgPDxkc2wsRG9tYWluIFNwZWNpZmljIExhbmd1YWdlPj4gKERTTCkgZm9yIC5OZXQgaXMgbW9zdCBlYXNpbHkgaW1wbGVtZW50ZWQgdXNpbmcKK2xpbms6aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvZG90bmV0L2NzaGFycC9wcm9ncmFtbWluZy1ndWlkZS9jbGFzc2VzLWFuZC1zdHJ1Y3RzL2V4dGVuc2lvbi1tZXRob2RzW0V4dGVuc2lvbiBNZXRob2RzXQorYXMgdGhleSBkb24ndCByZXF1aXJlIGRpcmVjdCBleHRlbnNpb24gb2YgY2xhc3NlcyBpbiB0aGUgVGlua2VyUG9wIGhpZXJhcmNoeS4gRXh0ZW5zaW9uIE1ldGhvZCBjbGFzc2VzIHNpbXBseSBuZWVkIHRvCitiZSBjb25zdHJ1Y3RlZCBmb3IgdGhlIGBHcmFwaFRyYXZlcnNhbGAgYW5kIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBVbmZvcnR1bmF0ZWx5LCBhbm9ueW1vdXMgdHJhdmVyc2FscyAoc3Bhd25lZAorZnJvbSBgK19fK2ApIGNhbid0IHVzZSB0aGUgRXh0ZW5zaW9uIE1ldGhvZCBhcHByb2FjaCBhcyB0aGV5IGRvIG5vdCB3b3JrIGZvciBzdGF0aWMgY2xhc3NlcyBhbmQgc3RhdGljIGNsYXNzZXMgY2FuJ3QgYmUKK2V4dGVuZGVkLiBUaGUgb25seSBvcHRpb24gaXMgdG8gcmUtaW1wbGVtZW50IHRoZSBtZXRob2RzIG9mIGArX18rYCBhcyBhIHdyYXBwZXIgaW4gdGhlIGFub255bW91cyB0cmF2ZXJzYWwgZm9yIHRoZSBEU0wKK29yIHRvIHNpbXBseSBjcmVhdGUgYSBzdGF0aWMgY2xhc3MgZm9yIHRoZSBEU0wgYW5kIHVzZSB0aGUgdHdvIGFub255bW91cyB0cmF2ZXJzYWxzIGNyZWF0b3JzIGluZGVwZW5kZW50bHkuIFRoZQorZm9sbG93aW5nIGV4YW1wbGUgdXNlcyB0aGUgbGF0dGVyIGFwcHJvYWNoIGFzIGl0IHNhdmVzIGEgbG90IG9mIGJvaWxlcnBsYXRlIGNvZGUgd2l0aCB0aGUgbWlub3IgYW5ub3lhbmNlIG9mIGhhdmluZyBhCitzZWNvbmQgc3RhdGljIGNsYXNzIHRvIGRlYWwgd2l0aCB3aGVuIHdyaXRpbmcgdHJhdmVyc2FscyByYXRoZXIgdGhhbiBqdXN0IGNhbGxpbmcgYCtfXytgIGZvciBldmVyeXRoaW5nLgorCitbc291cmNlLGNzaGFycF0KKy0tLS0KK2luY2x1ZGU6Oi4uLy4uLy4uL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c0RzbC5jc1t0YWdzPWRzbF0KKy0tLS0KKworTm90ZSB0aGUgY3JlYXRpb24gb2YgYF9fU29jaWFsYCBhcyB0aGUgU29jaWFsIERTTCdzICJleHRlbnNpb24iIHRvIHRoZSBhdmFpbGFibGUgd2F5cyBpbiB3aGljaCB0byBzcGF3biBhbm9ueW1vdXMKK3RyYXZlcnNhbHMuIFRoZSB1c2Ugb2YgdGhlIGRvdWJsZSB1bmRlcnNjb3JlIHByZWZpeCBpbiB0aGUgbmFtZSBpcyBqdXN0IGEgY29udmVudGlvbiB0byBjb25zaWRlciB1c2luZyBhbmQgaXMgbm90IGEKK3JlcXVpcmVtZW50LiBUbyB1c2UgdGhlIERTTCwgYnJpbmcgaXQgaW50byBzY29wZSB3aXRoIHRoZSBgdXNpbmdgIGRpcmVjdGl2ZToKKworW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNEc2xUZXN0cy5jc1t0YWdzPWRzbFVzaW5nXQorLS0tLQorCithbmQgdGhlbiBpdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsY3NoYXJwXQorLS0tLQoraW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzRHNsVGVzdHMuY3NbdGFncz1kc2xFeGFtcGxlc10KKy0tLS0KKworYW5jaG9yOmdyZW1saW4tZG90bmV0LXRlbXBsYXRlW10KK1tbZG90bmV0LWFwcGxpY2F0aW9uLWV4YW1wbGVzXV0KKz09PSBBcHBsaWNhdGlvbiBFeGFtcGxlcworCitUaGlzIGxpbms6aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZG90bmV0L2NvcmUvdG9vbHMvY3VzdG9tLXRlbXBsYXRlc1tkb3RuZXQgdGVtcGxhdGVdIGhlbHBzIGdldHRpbmcgc3RhcnRlZCB3aXRoCis8PGdyZW1saW4tZG90bmV0LEdyZW1saW4uTmV0Pj4uIEl0IGNyZWF0ZXMgYSBuZXcgQyMgY29uc29sZSBwcm9qZWN0IHRoYXQgc2hvd3MgaG93IHRvIGNvbm5lY3QgdG8gYQorPDxncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IHdpdGggR3JlbWxpbi5OZXQuCisKK1lvdSBjYW4gaW5zdGFsbCB0aGUgdGVtcGxhdGUgd2l0aCB0aGUgZG90bmV0IENMSSB0b29sOgorW3NvdXJjZSxzaGVsbF0KK2RvdG5ldCBuZXcgLWkgR3JlbWxpbi5OZXQuVGVtcGxhdGUKKworQWZ0ZXIgdGhlIHRlbXBsYXRlIGlzIGluc3RhbGxlZCwgYSBuZXcgcHJvamVjdCBiYXNlZCBvbiB0aGlzIHRlbXBsYXRlIGNhbiBiZSBpbnN0YWxsZWQ6CisKK1tzb3VyY2Usc2hlbGxdCitkb3RuZXQgbmV3IGdyZW1saW4KKworU3BlY2lmeSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIG5ldyBwcm9qZWN0IHdoaWNoIHdpbGwgdGhlbiBhbHNvIGJlIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0ZWQgcHJvamVjdDoKKworW3NvdXJjZSxzaGVsbF0KK2RvdG5ldCBuZXcgZ3JlbWxpbiAtbyBNeUZpcnN0R3JlbWxpblByb2plY3QKIAogW1tncmVtbGluLWphdmFzY3JpcHRdXQogPT0gR3JlbWxpbi1KYXZhU2NyaXB0CkBAIC01NzEsMTggKzEyMzcsMTIgQEAKIFtzb3VyY2UsYmFzaF0KIG5wbSBpbnN0YWxsIGdyZW1saW4KIAotVGhlIEdyZW1saW4tSmF2YVNjcmlwdCBwcm92aWRlcyBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLCBgR3JhcGhUcmF2ZXJzYWxgLCBhbmQgYF9fYCB3aGljaCBtaXJyb3IgdGhlIHJlc3BlY3RpdmUgY2xhc3NlcwotaW4gR3JlbWxpbi1KYXZhLiBUaGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCByZXF1aXJlcyBhIFJlbW90ZUNvbm5lY3Rpb24gaW1wbGVtZW50YXRpb24gaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aAotPDxncmVtbGluLXNlcnZlcixHcmVtbGluU2VydmVyPj4uCis9PT0gQ29ubmVjdGluZwogCi1bc291cmNlLGphdmFzY3JpcHRdCi0tLS0tCi1jb25zdCBncmVtbGluID0gcmVxdWlyZSgnZ3JlbWxpbicpOwotY29uc3QgdHJhdmVyc2FsID0gZ3JlbWxpbi5wcm9jZXNzLkFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWw7Ci1jb25zdCBEcml2ZXJSZW1vdGVDb25uZWN0aW9uID0gZ3JlbWxpbi5kcml2ZXIuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbjsKLS0tLS0KLQotQSB0cmF2ZXJzYWwgc291cmNlIGNhbiBiZSBzcGF3bmVkIHdpdGggYFJlbW90ZVN0cmF0ZWd5YCBmcm9tIGFuIGBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2VgLgorVGhlIHBhdHRlcm4gZm9yIGNvbm5lY3RpbmcgaXMgZGVzY3JpYmVkIGluIDw8Y29ubmVjdGluZy1ncmVtbGluLENvbm5lY3RpbmcgR3JlbWxpbj4+IGFuZCBpdCBiYXNpY2FsbHkgZGlzdGlsbHMgZG93biB0bworY3JlYXRpbmcgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBBIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaXMgY3JlYXRlZCBmcm9tIHRoZSBgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbCgpYAorbWV0aG9kIHdoZXJlIHRoZSAiZyIgcHJvdmlkZWQgdG8gdGhlIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYCBjb3JyZXNwb25kcyB0byB0aGUgbmFtZSBvZiBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgb24KK3RoZSByZW1vdGUgZW5kLgogCiBbc291cmNlLGphdmFzY3JpcHRdCiAtLS0tCkBAIC01OTcsMjQgKzEyNTcsNyBAQAogY29uc3QgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUobmV3IERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsIHsgYXV0aGVudGljYXRvciB9KTsKIC0tLS0KIAotV2hlbiBhIHRyYXZlcnNhbCBmcm9tIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGlzIGl0ZXJhdGVkLCB0aGUgdHJhdmVyc2Fs4oCZcyBgQnl0ZWNvZGVgIGlzIHNlbnQgb3ZlciB0aGUgd2lyZSB2aWEKLXRoZSByZWdpc3RlcmVkIGBSZW1vdGVDb25uZWN0aW9uYC4gVGhlIGJ5dGVjb2RlIGlzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBlcXVpdmFsZW50IHRyYXZlcnNhbCBhdCB0aGUgcmVtb3RlCi10cmF2ZXJzYWwgc291cmNlLgotCi1TaW5jZSBHcmVtbGluLUphdmFTY3JpcHQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCBsYW1iZGEgZXhwcmVzc2lvbnMsIGFsbCB0cmF2ZXJzYWxzIGNhbiBiZSB0cmFuc2xhdGVkIHRvCi1HcmVtbGluLUphdmEgb24gdGhlIHJlbW90ZSBsb2NhdGlvbiAoZS5nLiBHcmVtbGluIFNlcnZlcikuCi0KLVdBUk5JTkc6IEluIEphdmFzY3JpcHQsIGBmcm9tYCBhbmQgYGluYCBhcmUgcmVzZXJ2ZWQgd29yZHMuIEdyZW1saW4tSmF2YXNjcmlwdCBzaW1wbHkgcG9zdGZpeGVzIGArXytgIHRvIHRoZSBlbmQgb2YKLXRoZXNlIHRlcm1zIGZvciB0aGVpciB1c2Ugd2l0aCBncmFwaCB0cmF2ZXJzYWwuIEZvciBpbnN0YW5jZTogYGcuVigpLmluXygpLm91dCgpYAotCi1JTVBPUlRBTlQ6IEdyZW1saW4tSmF2YVNjcmlwdOKAmXMgYFRyYXZlcnNhbGAgYmFzZSBjbGFzcyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgR3JlbWxpbiBtZXRob2RzIHN1Y2ggYXMgYG5leHQoKWAgYW5kCi1gdG9MaXN0KClgIFN1Y2ggInRlcm1pbmFsIiBtZXRob2RzIHRyaWdnZXIgdGhlIGV2YWx1YXRpb24gb2YgdGhlIHRyYXZlcnNhbC4KLQotPT09IFJlbW90ZUNvbm5lY3Rpb24gU3VibWlzc2lvbgotCi1JbiBhIHNpbWlsYXIgd2F5IGFzIGluIG90aGVyIEdMVnMsIHRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc3VibWl0IGEgdHJhdmVyc2FsIHRvIGEKLWBSZW1vdGVDb25uZWN0aW9uYCB1c2luZyB0ZXJtaW5hbC9hY3Rpb24gbWV0aG9kcyBvZmYgb2YgYFRyYXZlcnNhbGAuIEdpdmVuIHRoYXQgSS9PIG9wZXJhdGlvbnMgaW4gTm9kZS5qcyBhcmUKLWFzeW5jaHJvbm91cyBieSBkZWZhdWx0LCB0aGlzIHRlcm1pbmFsIG1ldGhvZHMgcmV0dXJuIGEgYFByb21pc2VgLgorR2l2ZW4gdGhhdCBJL08gb3BlcmF0aW9ucyBpbiBOb2RlLmpzIGFyZSBhc3luY2hyb25vdXMgYnkgZGVmYXVsdCwgPDx0ZXJtaW5hbC1zdGVwcyxUZXJtaW5hbCBTdGVwcz4+IHJldHVybiBhIGBQcm9taXNlYDoKIAogKiBgVHJhdmVyc2FsLnRvTGlzdCgpYDogUmV0dXJucyBhIGBQcm9taXNlYCB3aXRoIGFuIGBBcnJheWAgYXMgcmVzdWx0IHZhbHVlLgogKiBgVHJhdmVyc2FsLm5leHQoKWA6IFJldHVybnMgYSBgUHJvbWlzZWAgd2l0aCBhIGB7IHZhbHVlLCBkb25lIH1gIHR1cGxlIGFzIHJlc3VsdCB2YWx1ZSwgYWNjb3JkaW5nIHRvIHRoZQpAQCAtNjI5LDcgKzEyNzIsNyBAQAogICAudGhlbihuYW1lcyA9PiBjb25zb2xlLmxvZyhuYW1lcykpOwogLS0tLQogCi1Zb3UgY2FuIGBhd2FpdGAgdGhlIHByb21pc2VzIGlmIHlvdSBhcmUgdXNpbmcgYGFzeW5jYCBmdW5jdGlvbnMuCitXaGVuIHVzaW5nIGBhc3luY2AgZnVuY3Rpb25zIGl0IGlzIHBvc3NpYmxlIHRvIGBhd2FpdGAgdGhlIHByb21pc2VzOgogCiBbc291cmNlLGphdmFzY3JpcHRdCiAtLS0tCkBAIC02MzcsMzYgKzEyODAsMzQgQEAKIGNvbnNvbGUubG9nKG5hbWVzKTsKIC0tLS0KIAotPT09IFN0YXRpYyBFbnVtcyBhbmQgTWV0aG9kcworPT09IENvbW1vbiBJbXBvcnRzCiAKLUdyZW1saW4gaGFzIHZhcmlvdXMgdG9rZW5zIChlLmcuIGB0YCwgYFBgLCBgb3JkZXJgLCBgZGlyZWN0aW9uYCwgZXRjLikgdGhhdCBhcmUgcmVwcmVzZW50ZWQgaW4gR3JlbWxpbi1KYXZhU2NyaXB0IGFzCi1vYmplY3RzLgotCi1bc291cmNlLGphdmFzY3JpcHRdCi1nLlYoKS5oYXNMYWJlbCgncGVyc29uJykuaGFzKCdhZ2UnLCBQLmd0KDMwKSkub3JkZXIoKS5ieSgnYWdlJywgb3JkZXIuZGVzYykudG9MaXN0KCkKLQotVGhlc2Ugb2JqZWN0cyBtdXN0IGJlIHJlcXVpcmVkIG1hbnVhbGx5IGZyb20gdGhlIGBwcm9jZXNzYCBuYW1lc3BhY2U6CitUaGVyZSBhcmUgYSBudW1iZXIgb2YgY2xhc3NlcywgZnVuY3Rpb25zIGFuZCB0b2tlbnMgdGhhdCBhcmUgdHlwaWNhbGx5IHVzZWQgd2l0aCBHcmVtbGluLiBUaGUgZm9sbG93aW5nIGltcG9ydHMKK3Byb3ZpZGUgbW9zdCBvZiB0aGUgdHlwaWNhbCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIHRvIHVzZSBHcmVtbGluOgogCiBbc291cmNlLGphdmFzY3JpcHRdCiAtLS0tCiBjb25zdCBncmVtbGluID0gcmVxdWlyZSgnZ3JlbWxpbicpOwotY29uc3QgUCA9IGdyZW1saW4ucHJvY2Vzcy5QOwotLS0tLQotCi1GaW5hbGx5LCB1c2luZyBzdGF0aWMgYCtfXytgIGFub255bW91cyB0cmF2ZXJzYWxzIGxpa2UgYCtfXy5vdXQoKStgIGNhbiBiZSBleHByZXNzZWQgYXMgYmVsb3c6Ci0KLVtzb3VyY2UsamF2YXNjcmlwdF0KLS0tLS0KLWNvbnN0IGdyZW1saW4gPSByZXF1aXJlKCdncmVtbGluJyk7Citjb25zdCB0cmF2ZXJzYWwgPSBncmVtbGluLnByb2Nlc3MuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKIGNvbnN0IF9fID0gZ3JlbWxpbi5wcm9jZXNzLnN0YXRpY3M7Ci0KLWcuVigpLnJlcGVhdChfXy5vdXQoKSkudGltZXMoMikudmFsdWVzKCJuYW1lIikuZm9sZCgpLnRvTGlzdCgpOworY29uc3QgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiA9IGdyZW1saW4uZHJpdmVyLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247Citjb25zdCBjb2x1bW4gPSBncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmNvbHVtbgorY29uc3QgZGlyZWN0aW9uID0gZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kaXJlY3Rpb24KK2NvbnN0IHAgPSBncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAKK2NvbnN0IHBpY2sgPSBncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnBpY2sKK2NvbnN0IHBvcCA9IGdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwucG9wCitjb25zdCBvcmRlciA9IGdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwub3JkZXIKK2NvbnN0IHNjb3BlID0gZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zY29wZQorY29uc3QgdCA9IGdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudAogLS0tLQogCi09PT0gU3VibWl0IEdyZW1saW4gU2NyaXB0cworPT09IFN1Ym1pdHRpbmcgU2NyaXB0cwogCi1BZGRpdGlvbmFsbHksIHlvdSBjYW4gYWxzbyBzZW5kIHBhcmFtZXRyaXplZCBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlciBhcyBzdHJpbmdzLCB1c2luZyB0aGUKLWBDbGllbnRgIGNsYXNzIGluIEdyZW1saW4tSmF2YVNjcmlwdC4KK1dBUk5JTkc6IFRpbmtlclBvcCBkb2VzIG5vdCByZWNvbW1lbmQgc3VibWl0dGluZyBzY3JpcHQtYmFzZWQgcmVxdWVzdHMgYW5kIGdlbmVyYWxseSBjb250aW51ZXMgdG8gc3VwcG9ydCB0aGlzIGZlYXR1cmUKK2ZvciBsZWdhY3kgcmVhc29ucyBhbmQgY29ybmVyIHVzZSBjYXNlcyB3aGljaCBhcmUgc3RpbGwgbm90IGNvbXBsZXRlbHkgYWRkcmVzc2VkIGJ5IHRoZSBHcmVtbGluIGxhbmd1YWdlLiBQbGVhc2UKK2NvbnNpZGVyIHVzaW5nIGJ5dGVjb2RlLWJhc2VkIHJlcXVlc3RzIGluc3RlYWQgd2hlbiBwb3NzaWJsZS4KKworSXQgaXMgcG9zc2libGUgdG8gc3VibWl0IHBhcmFtZXRyaXplZCBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlciBhcyBzdHJpbmdzLCB1c2luZyB0aGUgYENsaWVudGAgY2xhc3M6CiAKIFtzb3VyY2UsamF2YXNjcmlwdF0KIC0tLS0KQEAgLTY5MywzICsxMzM0LDcwIEBACiAKIFdpdGggdGhpcyBjb25maWd1cmF0aW9uLCB0aGUgc3RhdGUgb2YgdmFyaWFibGVzIHdpdGhpbiBzY3JpcHRzIGFyZSBwcmVzZXJ2ZWQgYmV0d2VlbiByZXF1ZXN0cy4KIAorW1tncmVtbGluLWphdmFzY3JpcHQtZHNsXV0KKz09PSBEb21haW4gU3BlY2lmaWMgTGFuZ3VhZ2VzCisKK0RldmVsb3BpbmcgR3JlbWxpbiBEU0xzIGluIEphdmFTY3JpcHQgbGFyZ2VseSByZXF1aXJlcyBleHRlbnNpb24gb2YgZXhpc3RpbmcgY29yZSBjbGFzc2VzIHdpdGggdXNlIG9mIHN0YW5kYWxvbmUKK2Z1bmN0aW9ucyBmb3IgYW5vbnltb3VzIHRyYXZlcnNhbCBzcGF3bmluZy4gVGhlIHBhdHRlcm4gaXMgZGVtb25zdHJhdGVkIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworW3NvdXJjZSxqYXZhc2NyaXB0XQorLS0tLQorY2xhc3MgU29jaWFsVHJhdmVyc2FsIGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWwgeworICBjb25zdHJ1Y3RvcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUpIHsKKyAgICBzdXBlcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUpOworICB9CisKKyAgYWdlZChhZ2UpIHsKKyAgICByZXR1cm4gdGhpcy5oYXMoJ3BlcnNvbicsICdhZ2UnLCBhZ2UpOworICB9Cit9CisKK2NsYXNzIFNvY2lhbFRyYXZlcnNhbFNvdXJjZSBleHRlbmRzIEdyYXBoVHJhdmVyc2FsU291cmNlIHsKKyAgY29uc3RydWN0b3IoZ3JhcGgsIHRyYXZlcnNhbFN0cmF0ZWdpZXMsIGJ5dGVjb2RlKSB7CisgICAgc3VwZXIoZ3JhcGgsIHRyYXZlcnNhbFN0cmF0ZWdpZXMsIGJ5dGVjb2RlLCBTb2NpYWxUcmF2ZXJzYWxTb3VyY2UsIFNvY2lhbFRyYXZlcnNhbCk7CisgIH0KKworICBwZXJzb24obmFtZSkgeworICAgIHJldHVybiB0aGlzLlYoKS5oYXMoJ3BlcnNvbicsICduYW1lJywgbmFtZSk7CisgIH0KK30KKworZnVuY3Rpb24gYW5vbnltb3VzKCkgeworICByZXR1cm4gbmV3IFNvY2lhbFRyYXZlcnNhbChudWxsLCBudWxsLCBuZXcgQnl0ZWNvZGUoKSk7Cit9CisKK2Z1bmN0aW9uIGFnZWQoYWdlKSB7CisgIHJldHVybiBhbm9ueW1vdXMoKS5hZ2VkKGFnZSk7Cit9CistLS0tCisKK2BTb2NpYWxUcmF2ZXJzYWxgIGV4dGVuZHMgdGhlIGNvcmUgYEdyYXBoVHJhdmVyc2FsYCBjbGFzcyBhbmQgaGFzIGEgdGhyZWUgYXJndW1lbnQgY29uc3RydWN0b3Igd2hpY2ggaXMgaW1tZWRpYXRlbHkKK3Byb3hpZWQgdG8gdGhlIGBHcmFwaFRyYXZlcnNhbGAgY29uc3RydWN0b3IuIE5ldyBEU0wgc3RlcHMgYXJlIHRoZW4gYWRkZWQgdG8gdGhpcyBjbGFzcyB1c2luZyBhdmFpbGFibGUgc3RlcHMgdG8KK2NvbnN0cnVjdCB0aGUgdW5kZXJseWluZyB0cmF2ZXJzYWwgdG8gZXhlY3V0ZSBhcyBkZW1vbnN0cmF0ZWQgaW4gdGhlIGBhZ2VkKClgIHN0ZXAuCisKK1RoZSBgU29jaWFsVHJhdmVyc2FsYCBpcyBzcGF3bmVkIGZyb20gYSBgU29jaWFsVHJhdmVyc2FsU291cmNlYCB3aGljaCBpcyBleHRlbmRlZCBmcm9tIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIFN0ZXBzCithZGRlZCBoZXJlIGFyZSBtZWFudCB0byBiZSBzdGFydCBzdGVwcy4gSW4gdGhlIGFib3ZlIGNhc2UsIHRoZSBgcGVyc29uKClgIHN0YXJ0IHN0ZXAgZmluZCBhICJwZXJzb24iIHZlcnRleCB0byBiZWdpbgordGhlIHRyYXZlcnNhbCBmcm9tLgorCitUeXBpY2FsbHksIHN0ZXBzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIG9uIGEgYEdyYXBoVHJhdmVyc2FsYCAoaS5lLiBTb2NpYWxUcmF2ZXJzYWwgaW4gdGhpcyBleGFtcGxlKSBzaG91bGQgYWxzbyBiZQorbWFkZSBhdmFpbGFibGUgYXMgc3Bhd25zIGZvciBhbm9ueW1vdXMgdHJhdmVyc2Fscy4gVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRoYXQgdGhlc2Ugc3RlcHMgYmUgZXhwb3NlZCBpbiB0aGUgbW9kdWxlCithcyBzdGFuZGFsb25lIGZ1bmN0aW9ucy4gSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBzdGFuZGFsb25lIGBhZ2VkKClgIHN0ZXAgY3JlYXRlcyBhbiBhbm9ueW1vdXMgdHJhdmVyc2FsIHRocm91Z2gKK2FuIGBhbm9ueW1vdXMoKWAgdXRpbGl0eSBmdW5jdGlvbi4gVGhlIG1ldGhvZCBmb3IgY3JlYXRpbmcgdGhlc2Ugc3RhbmRhbG9uZSBmdW5jdGlvbnMgY2FuIGJlIGhhbmRsZWQgaW4gb3RoZXIgd2F5cyBpZgorZGVzaXJlZC4KKworVG8gdXNlIHRoZSBEU0wsIHNpbXBseSBpbml0aWFsaXplIHRoZSBgZ2AgYXMgZm9sbG93czoKKworW3NvdXJjZSxqYXZhc2NyaXB0XQorLS0tLQorY29uc3QgZyA9IHRyYXZlcnNhbChTb2NpYWxUcmF2ZXJzYWxTb3VyY2UpLndpdGhSZW1vdGUoY29ubmVjdGlvbik7CitnLnBlcnNvbignbWFya28nKS5hZ2VkKDI5KS52YWx1ZXMoJ25hbWUnKS50b0xpc3QoKS4KKyAgdGhlbihuYW1lcyA9PiBjb25zb2xlLmxvZyhuYW1lcykpOworLS0tLQorCitbW2dyZW1saW4tamF2YXNjcmlwdC1kaWZmZXJlbmNlc11dCis9PT0gRGlmZmVyZW5jZXMKKworSW4gc2l0dWF0aW9ucyB3aGVyZSBKYXZhc2NyaXB0IHJlc2VydmVkIHdvcmRzIGFuZCBnbG9iYWwgZnVuY3Rpb25zIG92ZXJsYXAgd2l0aCBzdGFuZGFyZCBHcmVtbGluIHN0ZXBzIGFuZCB0b2tlbnMsIHRob3NlCitiaXRzIG9mIGNvbmZsaWN0aW5nIEdyZW1saW4gZ2V0IGFuIHVuZGVyc2NvcmUgYXBwZW5kZWQgYXMgYSBzdWZmaXg6CisKKypTdGVwcyogLSA8PGZyb20tc3RlcCxmcm9tXygpPj4sIDw8aW4tc3RlcCxpbl8oKT4+LCA8PHdpdGgtc3RlcCx3aXRoXygpPj4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtZ2lyYXBoLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1naXJhcGguYXNjaWlkb2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNTgwNGMuLjAwMDAwMDAKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1naXJhcGguYXNjaWlkb2MKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vLy8vCi1MaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKLWNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAotdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgotVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKLSh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCi10aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi1Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi1kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi1TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi1saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS8vLy8KLVtbZ2lyYXBoZ3JhcGhjb21wdXRlcl1dCi09PT09IEdpcmFwaEdyYXBoQ29tcHV0ZXIKLQotW3NvdXJjZSx4bWxdCi0tLS0tCi08ZGVwZW5kZW5jeT4KLSAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+Z2lyYXBoLWdyZW1saW48L2FydGlmYWN0SWQ+Ci0gICA8dmVyc2lvbj54LnkuejwvdmVyc2lvbj4KLTwvZGVwZW5kZW5jeT4KLS0tLS0KLQotaW1hZ2U6Z2lyYXBoLWxvZ28ucG5nW3dpZHRoPTEwMCxmbG9hdD1sZWZ0XSBsaW5rOmh0dHA6Ly9naXJhcGguYXBhY2hlLm9yZ1tHaXJhcGhdIGlzIGFuIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1wcm9qZWN0IGZvY3VzZWQgb24gT0xBUC1iYXNlZCBncmFwaCBwcm9jZXNzaW5nLiBHaXJhcGggbWFrZXMgdXNlIG9mIHRoZSBkaXN0cmlidXRlZCBncmFwaCBjb21wdXRpbmcgcGFyYWRpZ20gbWFkZQotcG9wdWxhciBieSBHb29nbGUncyBQcmVnZWwuIEluIEdpcmFwaCwgZGV2ZWxvcGVycyB3cml0ZSAidmVydGV4IHByb2dyYW1zIiB0aGF0IGdldCBleGVjdXRlZCBhdCBlYWNoIHZlcnRleCBpbgotcGFyYWxsZWwuIFRoZXNlIHByb2dyYW1zIGNvbW11bmljYXRlIHdpdGggb25lIGFub3RoZXIgaW4gYSBidWxrIHN5bmNocm9ub3VzIHBhcmFsbGVsIChCU1ApIG1hbm5lci4gVGhpcyBtb2RlbCBhbGlnbnMKLXdpdGggVGlua2VyUG9wMydzIGBHcmFwaENvbXB1dGVyYCBBUEkuIFRpbmtlclBvcDMgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYEdyYXBoQ29tcHV0ZXJgIHRoYXQgd29ya3MgZm9yIEdpcmFwaAotY2FsbGVkIGBHaXJhcGhHcmFwaENvbXB1dGVyYC4gTW9yZW92ZXIsIHdpdGggVGlua2VyUG9wMydzIDw8bWFwcmVkdWNlLE1hcFJlZHVjZT4+LWZyYW1ld29yaywgdGhlIHN0YW5kYXJkCi1HaXJhcGgvUHJlZ2VsIG1vZGVsIGlzIGV4dGVuZGVkIHRvIHN1cHBvcnQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBNYXBSZWR1Y2UgcGhhc2VzIHRvIGFnZ3JlZ2F0ZSBhbmQgeWllbGQgcmVzdWx0cwotZnJvbSB0aGUgZ3JhcGguIEJlbG93IGFyZSBleGFtcGxlcyB1c2luZyBgR2lyYXBoR3JhcGhDb21wdXRlcmAgZnJvbSB0aGUgPDxncmVtbGluLWNvbnNvbGUsR3JlbWxpbi1Db25zb2xlPj4uCi0KLVdBUk5JTkc6IEdpcmFwaCB1c2VzIGEgbGFyZ2UgbnVtYmVyIG9mIEhhZG9vcCBjb3VudGVycy4gVGhlIGRlZmF1bHQgZm9yIEhhZG9vcCBpcyAxMjAuIEluIGBtYXByZWQtc2l0ZS54bWxgIGl0IGlzCi1wb3NzaWJsZSB0byBpbmNyZWFzZSB0aGUgbGltaXQgaXQgdmlhIHRoZSBgbWFwcmVkdWNlLmpvYi5jb3VudGVycy5tYXhgIHByb3BlcnR5LiBBIGdvb2QgdmFsdWUgdG8gdXNlIGlzIDEwMDAuIFRoaXMKLWlzIGEgY2x1c3Rlci13aWRlIHByb3BlcnR5IHNvIGJlIHN1cmUgdG8gcmVzdGFydCB0aGUgY2x1c3RlciBhZnRlciB1cGRhdGluZy4KLQotV0FSTklORzogVGhlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMgY2FuIGJlIG5vIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgbWFwLXNsb3RzIGluIHRoZSBIYWRvb3AgY2x1c3RlciBtaW51cyAxLgotRm9yIGV4YW1wbGUsIGlmIHRoZSBIYWRvb3AgY2x1c3RlciBoYXMgNCBtYXAgc2xvdHMsIHRoZW4gYGdpcmFwaC5tYXhXb3JrZXJzYCBjYW4gbm90IGJlIGxhcmdlciB0aGFuIDMuIE9uZSBtYXAtc2xvdAotaXMgcmVzZXJ2ZWQgZm9yIHRoZSBtYXN0ZXIgY29tcHV0ZSBub2RlIGFuZCBhbGwgb3RoZXIgc2xvdHMgY2FuIGJlIGFsbG9jYXRlZCBhcyB3b3JrZXJzIHRvIGV4ZWN1dGUgdGhlIFZlcnRleFByb2dyYW1zCi1vbiB0aGUgdmVydGljZXMgb2YgdGhlIGdyYXBoLgotCi1JZiBgR2lyYXBoR3JhcGhDb21wdXRlcmAgd2lsbCBiZSB1c2VkIGFzIHRoZSBgR3JhcGhDb21wdXRlcmAgZm9yIGBIYWRvb3BHcmFwaGAgdGhlbiBpdHMgYGxpYmAgZGlyZWN0b3J5IHNob3VsZCBiZQotc3BlY2lmaWVkIGluIGBIQURPT1BfR1JFTUxJTl9MSUJTYC4KLQotW3NvdXJjZSxzaGVsbF0KLWV4cG9ydCBIQURPT1BfR1JFTUxJTl9MSUJTPSRIQURPT1BfR1JFTUxJTl9MSUJTOi91c3IvbG9jYWwvZ3JlbWxpbi1jb25zb2xlL2V4dC9naXJhcGgtZ3JlbWxpbi9saWIKLQotT3IsIHRoZSB1c2VyIGNhbiBzcGVjaWZ5IHRoZSBkaXJlY3RvcnkgaW4gdGhlIEdyZW1saW4gQ29uc29sZS4KLQotW3NvdXJjZSxncm9vdnldCi1TeXN0ZW0uc2V0UHJvcGVydHkoJ0hBRE9PUF9HUkVNTElOX0xJQlMnLFN5c3RlbS5nZXRQcm9wZXJ0eSgnSEFET09QX0dSRU1MSU5fTElCUycpICsgJzonICsgJy91c3IvbG9jYWwvZ3JlbWxpbi1jb25zb2xlL2V4dC9naXJhcGgtZ3JlbWxpbi9saWInKQotCi1bZ3JlbWxpbi1ncm9vdnldCi0tLS0tCi1ncmFwaCA9IEdyYXBoRmFjdG9yeS5vcGVuKCdjb25mL2hhZG9vcC9oYWRvb3AtZ3J5by5wcm9wZXJ0aWVzJykKLWcgPSBncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoR2lyYXBoR3JhcGhDb21wdXRlcikKLWcuVigpLmNvdW50KCkKLWcuVigpLm91dCgpLm91dCgpLnZhbHVlcygnbmFtZScpCi0tLS0tCi0KLUlNUE9SVEFOVDogVGhlIGV4YW1wbGVzIGFib3ZlIGRvIG5vdCB1c2UgbGFtYmRhcyAoaS5lLiBjbG9zdXJlcyBpbiBHcmVtbGluLUdyb292eSkuIFRoaXMgbWFrZXMgdGhlIHRyYXZlcnNhbAotc2VyaWFsaXphYmxlIGFuZCB0aHVzLCBhYmxlIHRvIGJlIGRpc3RyaWJ1dGVkIHRvIGFsbCBtYWNoaW5lcyBpbiB0aGUgSGFkb29wIGNsdXN0ZXIuIElmIGEgbGFtYmRhIGlzIHJlcXVpcmVkIGluIGEKLXRyYXZlcnNhbCwgdGhlbiB0aGUgdHJhdmVyc2FsIG11c3QgYmUgc2VudCBhcyBhIGBTdHJpbmdgIGFuZCBjb21waWxlZCBsb2NhbGx5IGF0IGVhY2ggbWFjaGluZSBpbiB0aGUgY2x1c3Rlci4gVGhlCi1mb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgdGhlIGA6cmVtb3RlYCBjb21tYW5kIHdoaWNoIGFsbG93cyBmb3Igc3VibWl0dGluZyBHcmVtbGluIHRyYXZlcnNhbHMgYXMgYSBgU3RyaW5nYC4KLQotW2dyZW1saW4tZ3Jvb3Z5XQotLS0tLQotZ3JhcGggPSBHcmFwaEZhY3Rvcnkub3BlbignY29uZi9oYWRvb3AvaGFkb29wLWdyeW8ucHJvcGVydGllcycpCi1nID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKEdpcmFwaEdyYXBoQ29tcHV0ZXIpCi06cmVtb3RlIGNvbm5lY3QgdGlua2VycG9wLmhhZG9vcCBncmFwaCBnCi06PiBnLlYoKS5ncm91cCgpLmJ5e2l0LnZhbHVlKCduYW1lJylbMV19LmJ5KCduYW1lJykKLXJlc3VsdAotcmVzdWx0Lm1lbW9yeS5ydW50aW1lCi0tLS0tCi0KLU5PVEU6IElmIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3BlY2lmaWVzIGBnaXJhcGgubWF4V29ya2Vyc2AgYW5kL29yIGBnaXJhcGgubnVtQ29tcHV0ZVRocmVhZHNgIGluIHRoZSBjb25maWd1cmF0aW9uLAotdGhlbiB0aGVzZSB2YWx1ZXMgd2lsbCBiZSB1c2VkIGJ5IEdpcmFwaC4gSG93ZXZlciwgaWYgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSB1c2VyIG5ldmVyIGNhbGxzCi1gR3JhcGhDb21wdXRlci53b3JrZXJzKClgIHRoZW4gYEdpcmFwaEdyYXBoQ29tcHV0ZXJgIHdpbGwgdHJ5IHRvIGNvbXB1dGUgdGhlIG51bWJlciBvZiB3b3JrZXJzL3RocmVhZHMgdG8gdXNlIGJhc2VkCi1vbiB0aGUgY2x1c3RlcidzIHByb2ZpbGUuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1oYWRvb3AtZW5kLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1oYWRvb3AtZW5kLmFzY2lpZG9jCmluZGV4IGYwZjBmYTYuLjliOGM2NDkgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLWVuZC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLWhhZG9vcC1lbmQuYXNjaWlkb2MKQEAgLTI5LDcgKzI5LDcgQEAKICogKipJbnB1dEZvcm1hdCoqOiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lucHV0Rm9ybWF0YAogKiAqKk91dHB1dEZvcm1hdCoqOiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b091dHB1dEZvcm1hdGAKIAotPDxncnlvLXJlYWRlci13cml0ZXIsR3J5bz4+IGlzIGEgYmluYXJ5IGdyYXBoIGZvcm1hdCB0aGF0IGxldmVyYWdlcyBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9Fc290ZXJpY1NvZnR3YXJlL2tyeW9bS3J5b10KKzw8Z3J5byxHcnlvPj4gaXMgYSBiaW5hcnkgZ3JhcGggZm9ybWF0IHRoYXQgbGV2ZXJhZ2VzIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL0Vzb3RlcmljU29mdHdhcmUva3J5b1tLcnlvXQogdG8gbWFrZSBhIGNvbXBhY3QsIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIHZlcnRleC4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB1c2VycyBsZXZlcmFnZSBHcnlvIGdpdmVuIGl0cyBzcGFjZS90aW1lCiBzYXZpbmdzIG92ZXIgdGV4dC1iYXNlZCByZXByZXNlbnRhdGlvbnMuCiAKQEAgLTQxLDcgKzQxLDcgQEAKICogKipJbnB1dEZvcm1hdCoqOiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW5wdXRGb3JtYXRgCiAqICoqT3V0cHV0Rm9ybWF0Kio6IGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05PdXRwdXRGb3JtYXRgCiAKLTw8Z3JhcGhzb24tcmVhZGVyLXdyaXRlcixHcmFwaFNPTj4+IGlzIGEgSlNPTiBiYXNlZCBncmFwaCBmb3JtYXQuIEdyYXBoU09OIGlzIGEgc3BhY2UtZXhwZW5zaXZlIGdyYXBoIGZvcm1hdCBpbiB0aGF0Cis8PGdyYXBoc29uLEdyYXBoU09OPj4gaXMgYSBKU09OIGJhc2VkIGdyYXBoIGZvcm1hdC4gR3JhcGhTT04gaXMgYSBzcGFjZS1leHBlbnNpdmUgZ3JhcGggZm9ybWF0IGluIHRoYXQKIGl0IGlzIGEgdGV4dC1iYXNlZCBtYXJrdXAgbGFuZ3VhZ2UuIEhvd2V2ZXIsIGl0IGlzIGNvbnZlbmllbnQgZm9yIG1hbnkgZGV2ZWxvcGVycyB0byB3b3JrIHdpdGggYXMgaXRzIHN0cnVjdHVyZSBpcwogc2ltcGxlIChlYXN5IHRvIGNyZWF0ZSBhbmQgcGFyc2UpLgogCkBAIC0xNzAsNyArMTcwLDcgQEAKID09PT0gSW50ZXJhY3Rpbmcgd2l0aCBTcGFyawogCiBJZiBhIFNwYXJrIGNvbnRleHQgaXMgcGVyc2lzdGVkLCB0aGVuIFNwYXJrIFJERHMgd2lsbCByZW1haW4gdGhlIFNwYXJrIGNhY2hlIGFuZCBhY2Nlc3NpYmxlIG92ZXIgc3Vic2VxdWVudCBqb2JzLgotUkREcyBhcmUgcmV0cmlldmVkIGFuZCBzYXZlZCB0byB0aGUgYFNwYXJrQ29udGV4dGAgdmlhIGBQZXJzaXN0ZWRJbnB1dFJERGAgYW5kIGBQZXJzaXN0ZWRPdXRwdXRSRERgIHJlc3BlY3Rpdmx5LgorUkREcyBhcmUgcmV0cmlldmVkIGFuZCBzYXZlZCB0byB0aGUgYFNwYXJrQ29udGV4dGAgdmlhIGBQZXJzaXN0ZWRJbnB1dFJERGAgYW5kIGBQZXJzaXN0ZWRPdXRwdXRSRERgIHJlc3BlY3RpdmVseS4KIFBlcnNpc3RlZCBSRERzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyBgc3BhcmtgLgogCiBbZ3JlbWxpbi1ncm9vdnldCkBAIC0xODcsMTQzICsxODcsMyBAQAogc3Bhcmsucm0oJ291dHB1dCcpCiBzcGFyay5scygpCiAtLS0tCi0KLT09PSBBIENvbW1hbmQgTGluZSBFeGFtcGxlCi0KLWltYWdlOjpwYWdlcmFuay1sb2dvLnBuZ1t3aWR0aD0zMDBdCi0KLVRoZSBjbGFzc2ljIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWdlUmFua1tQYWdlUmFua10gY2VudHJhbGl0eSBhbGdvcml0aG0gY2FuIGJlIGV4ZWN1dGVkIG92ZXIgdGhlCi1UaW5rZXJQb3AgZ3JhcGggZnJvbSB0aGUgY29tbWFuZCBsaW5lIHVzaW5nIGBHaXJhcGhHcmFwaENvbXB1dGVyYC4KLQotV0FSTklORzogQmUgc3VyZSB0aGF0IHRoZSBgSEFET09QX0dSRU1MSU5fTElCU2AgcmVmZXJlbmNlcyB0aGUgbG9jYXRpb24gYGxpYmAgZGlyZWN0b3J5IG9mIHRoZSByZXNwZWN0aXZlCi1gR3JhcGhDb21wdXRlcmAgZW5naW5lIGJlaW5nIHVzZWQgb3IgZWxzZSB0aGUgcmVxdWlzaXRlIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBiZSB1cGxvYWRlZCB0byB0aGUgSGFkb29wIGNsdXN0ZXIuCi0KLVtzb3VyY2UsdGV4dF0KLS0tLS0KLSQgaGRmcyBkZnMgLWNvcHlGcm9tTG9jYWwgZGF0YS90aW5rZXJwb3AtbW9kZXJuLmpzb24gdGlua2VycG9wLW1vZGVybi5qc29uCi0kIGhkZnMgZGZzIC1scwotRm91bmQgMiBpdGVtcwotLXJ3LXItLXItLSAgIDEgbWFya28gc3VwZXJncm91cCAgICAgICAyMzU2IDIwMTQtMDctMjggMTM6MDAgL3VzZXIvbWFya28vdGlua2VycG9wLW1vZGVybi5qc29uCi0kIGhhZG9vcCBqYXIgdGFyZ2V0L2dpcmFwaC1ncmVtbGluLXgueS56LWpvYi5qYXIgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhHcmFwaENvbXB1dGVyIC4uL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyYXBoc29uLnByb3BlcnRpZXMKLTE1LzA5LzExIDA4OjAyOjA4IFdBUk4gdXRpbC5OYXRpdmVDb2RlTG9hZGVyOiBVbmFibGUgdG8gbG9hZCBuYXRpdmUtaGFkb29wIGxpYnJhcnkgZm9yIHlvdXIgcGxhdGZvcm0uLi4gdXNpbmcgYnVpbHRpbi1qYXZhIGNsYXNzZXMgd2hlcmUgYXBwbGljYWJsZQotMTUvMDkvMTEgMDg6MDI6MTEgSU5GTyBjb21wdXRlci5HaXJhcGhHcmFwaENvbXB1dGVyOiBIYWRvb3BHcmVtbGluKEdpcmFwaCk6IFBhZ2VSYW5rVmVydGV4UHJvZ3JhbVthbHBoYT0wLjg1LGl0ZXJhdGlvbnM9MzBdCi0xNS8wOS8xMSAwODowMjoxMiBJTkZPIG1hcHJlZHVjZS5Kb2JTdWJtaXR0ZXI6IG51bWJlciBvZiBzcGxpdHM6MwotMTUvMDkvMTEgMDg6MDI6MTIgSU5GTyBtYXByZWR1Y2UuSm9iU3VibWl0dGVyOiBTdWJtaXR0aW5nIHRva2VucyBmb3Igam9iOiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4Ci0xNS8wOS8xMSAwODowMjoxMiBJTkZPIGltcGwuWWFybkNsaWVudEltcGw6IFN1Ym1pdHRlZCBhcHBsaWNhdGlvbiBhcHBsaWNhdGlvbl8xNDQxOTE1OTA3MzQ3XzAwMjgKLTE1LzA5LzExIDA4OjAyOjEyIElORk8gam9iLkdpcmFwaEpvYjogVHJhY2tpbmcgVVJMOiBodHRwOi8vbWFya29zLW1hY2Jvb2s6ODA4OC9wcm94eS9hcHBsaWNhdGlvbl8xNDQxOTE1OTA3MzQ3XzAwMjgvCi0xNS8wOS8xMSAwODowMjoxMiBJTkZPIGpvYi5HaXJhcGhKb2I6IFdhaXRpbmcgZm9yIHJlc291cmNlcy4uLiBKb2Igd2lsbCBzdGFydCBvbmx5IHdoZW4gaXQgZ2V0cyBhbGwgMyBtYXBwZXJzCi0xNS8wOS8xMSAwODowMzo1NCBJTkZPIG1hcHJlZHVjZS5Kb2I6IFJ1bm5pbmcgam9iOiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4Ci0xNS8wOS8xMSAwODowMzo1NSBJTkZPIG1hcHJlZHVjZS5Kb2I6IEpvYiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4IHJ1bm5pbmcgaW4gdWJlciBtb2RlIDogZmFsc2UKLTE1LzA5LzExIDA4OjAzOjU1IElORk8gbWFwcmVkdWNlLkpvYjogIG1hcCAzMyUgcmVkdWNlIDAlCi0xNS8wOS8xMSAwODowMzo1NyBJTkZPIG1hcHJlZHVjZS5Kb2I6ICBtYXAgNjclIHJlZHVjZSAwJQotMTUvMDkvMTEgMDg6MDQ6MDEgSU5GTyBtYXByZWR1Y2UuSm9iOiAgbWFwIDEwMCUgcmVkdWNlIDAlCi0xNS8wOS8xMSAwODowNjoxNyBJTkZPIG1hcHJlZHVjZS5Kb2I6IEpvYiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLTE1LzA5LzExIDA4OjA2OjE3IElORk8gbWFwcmVkdWNlLkpvYjogQ291bnRlcnM6IDgwCi0gICAgRmlsZSBTeXN0ZW0gQ291bnRlcnMKLSAgICAgICAgRklMRTogTnVtYmVyIG9mIGJ5dGVzIHJlYWQ9MAotICAgICAgICBGSUxFOiBOdW1iZXIgb2YgYnl0ZXMgd3JpdHRlbj00ODM5MTgKLSAgICAgICAgRklMRTogTnVtYmVyIG9mIHJlYWQgb3BlcmF0aW9ucz0wCi0gICAgICAgIEZJTEU6IE51bWJlciBvZiBsYXJnZSByZWFkIG9wZXJhdGlvbnM9MAotICAgICAgICBGSUxFOiBOdW1iZXIgb2Ygd3JpdGUgb3BlcmF0aW9ucz0wCi0gICAgICAgIEhERlM6IE51bWJlciBvZiBieXRlcyByZWFkPTE0NjUKLSAgICAgICAgSERGUzogTnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW49MTc2MAotICAgICAgICBIREZTOiBOdW1iZXIgb2YgcmVhZCBvcGVyYXRpb25zPTM5Ci0gICAgICAgIEhERlM6IE51bWJlciBvZiBsYXJnZSByZWFkIG9wZXJhdGlvbnM9MAotICAgICAgICBIREZTOiBOdW1iZXIgb2Ygd3JpdGUgb3BlcmF0aW9ucz0yMAotICAgIEpvYiBDb3VudGVycwotICAgICAgICBMYXVuY2hlZCBtYXAgdGFza3M9MwotICAgICAgICBPdGhlciBsb2NhbCBtYXAgdGFza3M9MwotICAgICAgICBUb3RhbCB0aW1lIHNwZW50IGJ5IGFsbCBtYXBzIGluIG9jY3VwaWVkIHNsb3RzIChtcyk9NDU4MTA1Ci0gICAgICAgIFRvdGFsIHRpbWUgc3BlbnQgYnkgYWxsIHJlZHVjZXMgaW4gb2NjdXBpZWQgc2xvdHMgKG1zKT0wCi0gICAgICAgIFRvdGFsIHRpbWUgc3BlbnQgYnkgYWxsIG1hcCB0YXNrcyAobXMpPTQ1ODEwNQotICAgICAgICBUb3RhbCB2Y29yZS1zZWNvbmRzIHRha2VuIGJ5IGFsbCBtYXAgdGFza3M9NDU4MTA1Ci0gICAgICAgIFRvdGFsIG1lZ2FieXRlLXNlY29uZHMgdGFrZW4gYnkgYWxsIG1hcCB0YXNrcz00NjkwOTk1MjAKLSAgICBNYXAtUmVkdWNlIEZyYW1ld29yawotICAgICAgICBNYXAgaW5wdXQgcmVjb3Jkcz0zCi0gICAgICAgIE1hcCBvdXRwdXQgcmVjb3Jkcz0wCi0gICAgICAgIElucHV0IHNwbGl0IGJ5dGVzPTEzMgotICAgICAgICBTcGlsbGVkIFJlY29yZHM9MAotICAgICAgICBGYWlsZWQgU2h1ZmZsZXM9MAotICAgICAgICBNZXJnZWQgTWFwIG91dHB1dHM9MAotICAgICAgICBHQyB0aW1lIGVsYXBzZWQgKG1zKT0xNTk0Ci0gICAgICAgIENQVSB0aW1lIHNwZW50IChtcyk9MAotICAgICAgICBQaHlzaWNhbCBtZW1vcnkgKGJ5dGVzKSBzbmFwc2hvdD0wCi0gICAgICAgIFZpcnR1YWwgbWVtb3J5IChieXRlcykgc25hcHNob3Q9MAotICAgICAgICBUb3RhbCBjb21taXR0ZWQgaGVhcCB1c2FnZSAoYnl0ZXMpPTUyNzk1ODAxNgotICAgIEdpcmFwaCBTdGF0cwotICAgICAgICBBZ2dyZWdhdGUgZWRnZXM9MAotICAgICAgICBBZ2dyZWdhdGUgZmluaXNoZWQgdmVydGljZXM9MAotICAgICAgICBBZ2dyZWdhdGUgc2VudCBtZXNzYWdlIG1lc3NhZ2UgYnl0ZXM9MTM1MzUKLSAgICAgICAgQWdncmVnYXRlIHNlbnQgbWVzc2FnZXM9MTg2Ci0gICAgICAgIEFnZ3JlZ2F0ZSB2ZXJ0aWNlcz02Ci0gICAgICAgIEN1cnJlbnQgbWFzdGVyIHRhc2sgcGFydGl0aW9uPTAKLSAgICAgICAgQ3VycmVudCB3b3JrZXJzPTIKLSAgICAgICAgTGFzdCBjaGVja3BvaW50ZWQgc3VwZXJzdGVwPTAKLSAgICAgICAgU2VudCBtZXNzYWdlIGJ5dGVzPTQzOAotICAgICAgICBTZW50IG1lc3NhZ2VzPTYKLSAgICAgICAgU3VwZXJzdGVwPTMxCi0gICAgR2lyYXBoIFRpbWVycwotICAgICAgICBJbml0aWFsaXplIChtcyk9Mjk5NgotICAgICAgICBJbnB1dCBzdXBlcnN0ZXAgKG1zKT01MjA5Ci0gICAgICAgIFNldHVwIChtcyk9NTkKLSAgICAgICAgU2h1dGRvd24gKG1zKT05MzI0Ci0gICAgICAgIFN1cGVyc3RlcCAwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzg2MQotICAgICAgICBTdXBlcnN0ZXAgMSBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMjcKLSAgICAgICAgU3VwZXJzdGVwIDEwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMAotICAgICAgICBTdXBlcnN0ZXAgMTEgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA0Ci0gICAgICAgIFN1cGVyc3RlcCAxMiBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTM5OTkKLSAgICAgICAgU3VwZXJzdGVwIDEzIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMAotICAgICAgICBTdXBlcnN0ZXAgMTQgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA1Ci0gICAgICAgIFN1cGVyc3RlcCAxNSBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDMKLSAgICAgICAgU3VwZXJzdGVwIDE2IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMQotICAgICAgICBTdXBlcnN0ZXAgMTcgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA3Ci0gICAgICAgIFN1cGVyc3RlcCAxOCBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTM5OTgKLSAgICAgICAgU3VwZXJzdGVwIDE5IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwNgotICAgICAgICBTdXBlcnN0ZXAgMiBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDcKLSAgICAgICAgU3VwZXJzdGVwIDIwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5NgotICAgICAgICBTdXBlcnN0ZXAgMjEgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA2Ci0gICAgICAgIFN1cGVyc3RlcCAyMiBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDIKLSAgICAgICAgU3VwZXJzdGVwIDIzIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5OAotICAgICAgICBTdXBlcnN0ZXAgMjQgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDAzCi0gICAgICAgIFN1cGVyc3RlcCAyNSBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDEKLSAgICAgICAgU3VwZXJzdGVwIDI2IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMwotICAgICAgICBTdXBlcnN0ZXAgMjcgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA1Ci0gICAgICAgIFN1cGVyc3RlcCAyOCBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDIKLSAgICAgICAgU3VwZXJzdGVwIDI5IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMQotICAgICAgICBTdXBlcnN0ZXAgMyBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTM5ODgKLSAgICAgICAgU3VwZXJzdGVwIDMwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDI0OAotICAgICAgICBTdXBlcnN0ZXAgNCBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMTAKLSAgICAgICAgU3VwZXJzdGVwIDUgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT0zOTk4Ci0gICAgICAgIFN1cGVyc3RlcCA2IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5NgotICAgICAgICBTdXBlcnN0ZXAgNyBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDUKLSAgICAgICAgU3VwZXJzdGVwIDggR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA5Ci0gICAgICAgIFN1cGVyc3RlcCA5IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5NAotICAgICAgICBUb3RhbCAobXMpPTEzODc4OAotICAgIEZpbGUgSW5wdXQgRm9ybWF0IENvdW50ZXJzCi0gICAgICAgIEJ5dGVzIFJlYWQ9MAotICAgIEZpbGUgT3V0cHV0IEZvcm1hdCBDb3VudGVycwotICAgICAgICBCeXRlcyBXcml0dGVuPTAKLSQgaGRmcyBkZnMgLWNhdCBvdXRwdXQvfmcvKgoteyJpZCI6MSwibGFiZWwiOiJwZXJzb24iLCJwcm9wZXJ0aWVzIjp7ImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLnBhZ2VSYW5rIjpbeyJpZCI6MzksInZhbHVlIjowLjE1MDAwMDAwMDAwMDAwMDAyfV0sIm5hbWUiOlt7ImlkIjowLCJ2YWx1ZSI6Im1hcmtvIn1dLCJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5lZGdlQ291bnQiOlt7ImlkIjoxMCwidmFsdWUiOjMuMH1dLCJhZ2UiOlt7ImlkIjoxLCJ2YWx1ZSI6Mjl9XX19Ci17ImlkIjo1LCJsYWJlbCI6InNvZnR3YXJlIiwicHJvcGVydGllcyI6eyJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5wYWdlUmFuayI6W3siaWQiOjM1LCJ2YWx1ZSI6MC4yMzE4MTI1MDAwMDAwMDAwM31dLCJuYW1lIjpbeyJpZCI6OCwidmFsdWUiOiJyaXBwbGUifV0sImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmVkZ2VDb3VudCI6W3siaWQiOjYsInZhbHVlIjowLjB9XSwibGFuZyI6W3siaWQiOjksInZhbHVlIjoiamF2YSJ9XX19Ci17ImlkIjozLCJsYWJlbCI6InNvZnR3YXJlIiwicHJvcGVydGllcyI6eyJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5wYWdlUmFuayI6W3siaWQiOjM5LCJ2YWx1ZSI6MC40MDE4MTI1fV0sIm5hbWUiOlt7ImlkIjo0LCJ2YWx1ZSI6ImxvcCJ9XSwiZ3JlbWxpbi5wYWdlUmFua1ZlcnRleFByb2dyYW0uZWRnZUNvdW50IjpbeyJpZCI6MTAsInZhbHVlIjowLjB9XSwibGFuZyI6W3siaWQiOjUsInZhbHVlIjoiamF2YSJ9XX19Ci17ImlkIjo0LCJsYWJlbCI6InBlcnNvbiIsInByb3BlcnRpZXMiOnsiZ3JlbWxpbi5wYWdlUmFua1ZlcnRleFByb2dyYW0ucGFnZVJhbmsiOlt7ImlkIjozOSwidmFsdWUiOjAuMTkyNTAwMDAwMDAwMDAwMDN9XSwibmFtZSI6W3siaWQiOjYsInZhbHVlIjoiam9zaCJ9XSwiZ3JlbWxpbi5wYWdlUmFua1ZlcnRleFByb2dyYW0uZWRnZUNvdW50IjpbeyJpZCI6MTAsInZhbHVlIjoyLjB9XSwiYWdlIjpbeyJpZCI6NywidmFsdWUiOjMyfV19fQoteyJpZCI6MiwibGFiZWwiOiJwZXJzb24iLCJwcm9wZXJ0aWVzIjp7ImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLnBhZ2VSYW5rIjpbeyJpZCI6MzUsInZhbHVlIjowLjE5MjUwMDAwMDAwMDAwMDAzfV0sIm5hbWUiOlt7ImlkIjoyLCJ2YWx1ZSI6InZhZGFzIn1dLCJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5lZGdlQ291bnQiOlt7ImlkIjo2LCJ2YWx1ZSI6MC4wfV0sImFnZSI6W3siaWQiOjMsInZhbHVlIjoyN31dfX0KLXsiaWQiOjYsImxhYmVsIjoicGVyc29uIiwicHJvcGVydGllcyI6eyJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5wYWdlUmFuayI6W3siaWQiOjM1LCJ2YWx1ZSI6MC4xNTAwMDAwMDAwMDAwMDAwMn1dLCJuYW1lIjpbeyJpZCI6MTAsInZhbHVlIjoicGV0ZXIifV0sImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmVkZ2VDb3VudCI6W3siaWQiOjYsInZhbHVlIjoxLjB9XSwiYWdlIjpbeyJpZCI6MTEsInZhbHVlIjozNX1dfX0KLS0tLS0KLQotVmVydGV4IDQgKCJqb3NoIikgaXMgaXNvbGF0ZWQgYmVsb3c6Ci0KLVtzb3VyY2UsanNdCi0tLS0tCi17Ci0gICJpZCI6NCwKLSAgImxhYmVsIjoicGVyc29uIiwKLSAgInByb3BlcnRpZXMiOiB7Ci0gICAgImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLnBhZ2VSYW5rIjpbeyJpZCI6MzksInZhbHVlIjowLjE5MjUwMDAwMDAwMDAwMDAzfV0sCi0gICAgIm5hbWUiOlt7ImlkIjo2LCJ2YWx1ZSI6Impvc2gifV0sCi0gICAgImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmVkZ2VDb3VudCI6W3siaWQiOjEwLCJ2YWx1ZSI6Mi4wfV0sCi0gICAgImFnZSI6W3siaWQiOjcsInZhbHVlIjozMn1dfQotICB9Ci19Ci0tLS0tCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLWhhZG9vcC1zdGFydC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jCmluZGV4IDMxZWNmNmIuLjRkY2QxM2IgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jCkBAIC0yOCwxNSArMjgsMTQgQEAKIAogaW1hZ2U6aGFkb29wLWxvZ28tbm90ZXh0LnBuZ1t3aWR0aD0xMDAsZmxvYXQ9bGVmdF0gbGluazpodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvW0hhZG9vcF0gaXMgYSBkaXN0cmlidXRlZAogY29tcHV0aW5nIGZyYW1ld29yayB0aGF0IGlzIHVzZWQgdG8gcHJvY2VzcyBkYXRhIHJlcHJlc2VudGVkIGFjcm9zcyBhIG11bHRpLW1hY2hpbmUgY29tcHV0ZSBjbHVzdGVyLiBXaGVuIHRoZQotZGF0YSBpbiB0aGUgSGFkb29wIGNsdXN0ZXIgcmVwcmVzZW50cyBhIFRpbmtlclBvcDMgZ3JhcGgsIHRoZW4gSGFkb29wLUdyZW1saW4gY2FuIGJlIHVzZWQgdG8gcHJvY2VzcyB0aGUgZ3JhcGgKLXVzaW5nIGJvdGggVGlua2VyUG9wMydzIE9MVFAgYW5kIE9MQVAgZ3JhcGggY29tcHV0aW5nIG1vZGVscy4KK2RhdGEgaW4gdGhlIEhhZG9vcCBjbHVzdGVyIHJlcHJlc2VudHMgYSBUaW5rZXJQb3AgZ3JhcGgsIHRoZW4gSGFkb29wLUdyZW1saW4gY2FuIGJlIHVzZWQgdG8gcHJvY2VzcyB0aGUgZ3JhcGgKK3VzaW5nIGJvdGggVGlua2VyUG9wJ3MgT0xUUCBhbmQgT0xBUCBncmFwaCBjb21wdXRpbmcgbW9kZWxzLgogCiBJTVBPUlRBTlQ6IFRoaXMgc2VjdGlvbiBhc3N1bWVzIHRoYXQgdGhlIHVzZXIgaGFzIGEgSGFkb29wIDIueCBjbHVzdGVyIGZ1bmN0aW9uaW5nLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBnZXR0aW5nCiBzdGFydGVkIHdpdGggSGFkb29wLCBwbGVhc2Ugc2VlIHRoZQogbGluazpodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvZG9jcy9yMi43LjIvaGFkb29wLXByb2plY3QtZGlzdC9oYWRvb3AtY29tbW9uL1NpbmdsZUNsdXN0ZXIuaHRtbFtTaW5nbGUgTm9kZSBTZXR1cF0KLXR1dG9yaWFsLiBNb3Jlb3ZlciwgaWYgdXNpbmcgYEdpcmFwaEdyYXBoQ29tcHV0ZXJgIG9yIGBTcGFya0dyYXBoQ29tcHV0ZXJgIGl0IGlzIGFkdmlzYWJsZSB0aGF0IHRoZSByZWFkZXIgYWxzbwotZmFtaWxpYXJpemUgdGhlaXIgc2VsZiB3aXRoIEdpcmFwaCAobGluazpodHRwOi8vZ2lyYXBoLmFwYWNoZS5vcmcvcXVpY2tfc3RhcnQuaHRtbFtHZXR0aW5nIFN0YXJ0ZWRdKSBhbmQgU3BhcmsKLShsaW5rOmh0dHA6Ly9zcGFyay5hcGFjaGUub3JnL2RvY3MvbGF0ZXN0L3F1aWNrLXN0YXJ0Lmh0bWxbUXVpY2sgU3RhcnRdKS4KK3R1dG9yaWFsLiBNb3Jlb3ZlciwgaWYgdXNpbmcgYFNwYXJrR3JhcGhDb21wdXRlcmAgaXQgaXMgYWR2aXNhYmxlIHRoYXQgdGhlIHJlYWRlciBhbHNvCitmYW1pbGlhcml6ZSB0aGVpciBzZWxmIHdpdGggYW5kIFNwYXJrIChsaW5rOmh0dHA6Ly9zcGFyay5hcGFjaGUub3JnL2RvY3MvbGF0ZXN0L3F1aWNrLXN0YXJ0Lmh0bWxbUXVpY2sgU3RhcnRdKS4KIAogPT09IEluc3RhbGxpbmcgSGFkb29wLUdyZW1saW4KIApAQCAtODcsMTEgKzg2LDcgQEAKIE5vdGUgdGhhdCB0aGUgbG9jYXRpb25zIGluIGBIQURPT1BfR1JFTUxJTl9MSUJTYCBjYW4gYmUgY29sb24tc2VwYXJhdGVkIChgOmApIGFuZCBhbGwgamFycyBmcm9tIGFsbCBsb2NhdGlvbnMgd2lsbAogYmUgbG9hZGVkIGludG8gdGhlIGNsdXN0ZXIuIExvY2F0aW9ucyBjYW4gYmUgbG9jYWwgcGF0aHMgKGUuZy4gYC9wYXRoL3RvL2xpYnNgKSwgYnV0IG1heSBhbHNvIGJlIHByZWZpeGVkIHdpdGggYSBmaWxlCiBzY2hlbWUgdG8gcmVmZXJlbmNlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGluIGRpZmZlcmVudCBmaWxlIHN5c3RlbXMgKGUuZy4gYGhkZnM6Ly8vcGF0aC90by9kaXN0cmlidXRlZC9saWJzYCkuCi1UeXBpY2FsbHksIG9ubHkgdGhlIGphcnMgb2YgdGhlIHJlc3BlY3RpdmUgR3JhcGhDb21wdXRlciBhcmUgcmVxdWlyZWQgdG8gYmUgbG9hZGVkIChlLmcuIGBHaXJhcGhHcmFwaENvbXB1dGVyYCBwbHVnaW4gbGliCi1kaXJlY3RvcnkpLgotCi1bc291cmNlLHNoZWxsXQotZXhwb3J0IEhBRE9PUF9HUkVNTElOX0xJQlM9L3Vzci9sb2NhbC9ncmVtbGluLWNvbnNvbGUvZXh0L2dpcmFwaC1ncmVtbGluL2xpYgorVHlwaWNhbGx5LCBvbmx5IHRoZSBqYXJzIG9mIHRoZSByZXNwZWN0aXZlIGBHcmFwaENvbXB1dGVyYCBhcmUgcmVxdWlyZWQgdG8gYmUgbG9hZGVkLgogCiA9PT0gUHJvcGVydGllcyBGaWxlcwogCkBAIC0xMTMsMjEgKzEwOCw5IEBACiBzcGFyay5leGVjdXRvci5tZW1vcnk9MWcKIHNwYXJrLnNlcmlhbGl6ZXI9b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvU2VyaWFsaXplcgogZ3JlbWxpbi5zcGFyay5wZXJzaXN0Q29udGV4dD10cnVlCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEdpcmFwaEdyYXBoQ29tcHV0ZXIgQ29uZmlndXJhdGlvbiAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1naXJhcGgubWluV29ya2Vycz0yCi1naXJhcGgubWF4V29ya2Vycz0yCi1naXJhcGgudXNlT3V0T2ZDb3JlR3JhcGg9dHJ1ZQotZ2lyYXBoLnVzZU91dE9mQ29yZU1lc3NhZ2VzPXRydWUKLW1hcHJlZHVjZS5tYXAuamF2YS5vcHRzPS1YbXgxMDI0bQotbWFwcmVkdWNlLnJlZHVjZS5qYXZhLm9wdHM9LVhteDEwMjRtCi1naXJhcGgubnVtSW5wdXRUaHJlYWRzPTIKLWdpcmFwaC5udW1Db21wdXRlVGhyZWFkcz0yCiAKIEEgcmV2aWV3IG9mIHRoZSBIYWRvb3AtR3JlbWxpbiBzcGVjaWZpYyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCBpbiB0aGUgdGFibGUgYmVsb3cuIEZvciB0aGUgcmVzcGVjdGl2ZSBPTEFQCi1lbmdpbmVzICg8PHNwYXJrZ3JhcGhjb21wdXRlcixgU3BhcmtHcmFwaENvbXB1dGVyYD4+IG9yIDw8Z2lyYXBoZ3JhcGhjb21wdXRlcixgR2lyYXBoR3JhcGhDb21wdXRlcmA+PikgcmVmZXIKLXRvIHRoZWlyIHJlc3BlY3RpdmUgZG9jdW1lbnRhdGlvbiBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLgorZW5naW5lcyAoPDxzcGFya2dyYXBoY29tcHV0ZXIsYFNwYXJrR3JhcGhDb21wdXRlcmA+PiByZWZlciB0byB0aGVpciByZXNwZWN0aXZlIGRvY3VtZW50YXRpb24gZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KIAogW3dpZHRoPSIxMDAlIixjb2xzPSIyLDEwIixvcHRpb25zPSJoZWFkZXIiXQogfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTQ1LDcgKzEyOCw3IEBACiBjYW4gYmUgYWRkZWQgYXMgbmVlZGVkIHRvIHR1bmUgYW5kIHBhcmFtZXRlcml6ZSB0aGUgZXhlY3V0ZWQgSGFkb29wLUdyZW1saW4gam9iIG9uIHRoZSByZXNwZWN0aXZlIEhhZG9vcCBjbHVzdGVyLgogCiBJTVBPUlRBTlQ6IEFzIHRoZSBzaXplIG9mIHRoZSBncmFwaHMgYmVpbmcgcHJvY2Vzc2VkIGJlY29tZXMgbGFyZ2UsIGl0IGlzIGltcG9ydGFudCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUKLXVuZGVybHlpbmcgT0xBUCBlbmdpbmUgKGUuZy4gU3BhcmssIEdpcmFwaCwgZXRjLikgd29ya3MgYW5kIHVuZGVyc3RhbmQgdGhlIG51bWVyb3VzIHBhcmFtZXRlcml6YXRpb25zIG9mZmVyZWQgYnkKK3VuZGVybHlpbmcgT0xBUCBlbmdpbmUgKGUuZy4gU3BhcmssIGV0Yy4pIHdvcmtzIGFuZCB1bmRlcnN0YW5kIHRoZSBudW1lcm91cyBwYXJhbWV0ZXJpemF0aW9ucyBvZmZlcmVkIGJ5CiB0aGVzZSBzeXN0ZW1zLiBTdWNoIGtub3dsZWRnZSBjYW4gaGVscCBhbGxldmlhdGUgb3V0IG9mIG1lbW9yeSBleGNlcHRpb25zLCBzbG93IGxvYWQgdGltZXMsIHNsb3cgcHJvY2Vzc2luZyB0aW1lcywKIGdhcmJhZ2UgY29sbGVjdGlvbiBpc3N1ZXMsIGV0Yy4KIApAQCAtMTc3LDIzICsxNjAsMTcgQEAKIGBHcmFwaENvbXB1dGVyYC4gVGhlIE9MVFAgZXhhbXBsZXMgcHJlc2VudGVkIHByZXZpb3VzbHkgYXJlIHJlcHJvZHVjZWQgYmVsb3csIGJ1dCB1c2luZyBgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbWAKIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbC4KIAotQSBgR3JhcGhgIGluIFRpbmtlclBvcDMgY2FuIHN1cHBvcnQgYW55IG51bWJlciBvZiBgR3JhcGhDb21wdXRlcmAgaW1wbGVtZW50YXRpb25zLiBPdXQgb2YgdGhlIGJveCwgSGFkb29wLUdyZW1saW4KK0EgYEdyYXBoYCBpbiBUaW5rZXJQb3AgY2FuIHN1cHBvcnQgYW55IG51bWJlciBvZiBgR3JhcGhDb21wdXRlcmAgaW1wbGVtZW50YXRpb25zLiBPdXQgb2YgdGhlIGJveCwgSGFkb29wLUdyZW1saW4KIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdHdvIGltcGxlbWVudGF0aW9ucy4KIAotKiA8PHNwYXJrZ3JhcGhjb21wdXRlcixgU3BhcmtHcmFwaENvbXB1dGVyYD4+OiBMZXZlcmFnZXMgQXBhY2hlIFNwYXJrIHRvIGV4ZWN1dGUgVGlua2VyUG9wMyBPTEFQIGNvbXB1dGF0aW9ucy4KKyogPDxzcGFya2dyYXBoY29tcHV0ZXIsYFNwYXJrR3JhcGhDb21wdXRlcmA+PjogTGV2ZXJhZ2VzIEFwYWNoZSBTcGFyayB0byBleGVjdXRlIFRpbmtlclBvcCBPTEFQIGNvbXB1dGF0aW9ucy4KICoqIFRoZSBncmFwaCBtYXkgZml0IHdpdGhpbiB0aGUgdG90YWwgUkFNIG9mIHRoZSBjbHVzdGVyIChzdXBwb3J0cyBsYXJnZXIgZ3JhcGhzKS4gTWVzc2FnZSBwYXNzaW5nIGlzIGNvb3JkaW5hdGVkIHZpYQogU3BhcmsgbWFwL3JlZHVjZS9qb2luIG9wZXJhdGlvbnMgb24gaW4tbWVtb3J5IGFuZCBkaXNrLWNhY2hlZCBkYXRhIChhdmVyYWdlIHNwZWVkIHRyYXZlcnNhbHMpLgotKiA8PGdpcmFwaGdyYXBoY29tcHV0ZXIsYEdpcmFwaEdyYXBoQ29tcHV0ZXJgPj46IExldmVyYWdlcyBBcGFjaGUgR2lyYXBoIHRvIGV4ZWN1dGUgVGlua2VyUG9wMyBPTEFQIGNvbXB1dGF0aW9ucy4KLSoqIFRoZSBncmFwaCBzaG91bGQgZml0IHdpdGhpbiB0aGUgdG90YWwgUkFNIG9mIHRoZSBIYWRvb3AgY2x1c3RlciAoZ3JhcGggc2l6ZSByZXN0cmljdGlvbiksIHRob3VnaCAib3V0LW9mLWNvcmUiCi1wcm9jZXNzaW5nIGlzIHBvc3NpYmxlLiBNZXNzYWdlIHBhc3NpbmcgaXMgY29vcmRpbmF0ZWQgdmlhIFpvb0tlZXBlciBmb3IgdGhlIGluLW1lbW9yeSBncmFwaCAoc3BlZWR5IHRyYXZlcnNhbHMpLgogCiBUSVA6IGltYWdlOmdyZW1saW4tc3VnYXIucG5nW3dpZHRoPTUwLGZsb2F0PWxlZnRdIEZvciB0aG9zZSB3YW50aW5nIHRvIHVzZSB0aGUgPDxzdWdhci1wbHVnaW4sU3VnYXJQbHVnaW4+PiB3aXRoCiB0aGVpciBzdWJtaXR0ZWQgdHJhdmVyc2FsLCBkbyBgOnJlbW90ZSBjb25maWcgdXNlU3VnYXIgdHJ1ZWAgYXMgd2VsbCBhcyBgOnBsdWdpbiB1c2UgdGlua2VycG9wLnN1Z2FyYCBhdCB0aGUgc3RhcnQgb2YKIHRoZSBHcmVtbGluIENvbnNvbGUgc2Vzc2lvbiBpZiBpdCBpcyBub3QgYWxyZWFkeSBhY3RpdmF0ZWQuCiAKLU5vdGUgdGhhdCBgU3BhcmtHcmFwaENvbXB1dGVyYCBhbmQgYEdpcmFwaEdyYXBoQ29tcHV0ZXJgIGFyZSBsb2FkZWQgdmlhIHRoZWlyIHJlc3BlY3RpdmUgcGx1Z2lucy4gVHlwaWNhbGx5IG9ubHkKLW9uZSBwbHVnaW4gb3IgdGhlIG90aGVyIGlzIGxvYWRlZCBkZXBlbmRpbmcgb24gdGhlIGRlc2lyZWQgYEdyYXBoQ29tcHV0ZXJgIHRvIHVzZS4KLQogW3NvdXJjZSx0ZXh0XQogLS0tLQogJCBiaW4vZ3JlbWxpbi5zaApAQCAtMjA1LDggKzE4Miw2IEBACiBwbHVnaW4gYWN0aXZhdGVkOiB0aW5rZXJwb3AudXRpbGl0aWVzCiBwbHVnaW4gYWN0aXZhdGVkOiB0aW5rZXJwb3AudGlua2VyZ3JhcGgKIHBsdWdpbiBhY3RpdmF0ZWQ6IHRpbmtlcnBvcC5oYWRvb3AKLWdyZW1saW4+IDppbnN0YWxsIG9yZy5hcGFjaGUudGlua2VycG9wIGdpcmFwaC1ncmVtbGluIHgueS56Ci09PT5sb2FkZWQ6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcCwgZ2lyYXBoLWdyZW1saW4sIHgueS56XSAtIHJlc3RhcnQgdGhlIGNvbnNvbGUgdG8gdXNlIFt0aW5rZXJwb3AuZ2lyYXBoXQogZ3JlbWxpbj4gOmluc3RhbGwgb3JnLmFwYWNoZS50aW5rZXJwb3Agc3BhcmstZ3JlbWxpbiB4LnkuegogPT0+bG9hZGVkOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AsIHNwYXJrLWdyZW1saW4sIHgueS56XSAtIHJlc3RhcnQgdGhlIGNvbnNvbGUgdG8gdXNlIFt0aW5rZXJwb3Auc3BhcmtdCiBncmVtbGluPiA6cQpAQCAtMjE5LDEzICsxOTQsMTAgQEAKIHBsdWdpbiBhY3RpdmF0ZWQ6IHRpbmtlcnBvcC51dGlsaXRpZXMKIHBsdWdpbiBhY3RpdmF0ZWQ6IHRpbmtlcnBvcC50aW5rZXJncmFwaAogcGx1Z2luIGFjdGl2YXRlZDogdGlua2VycG9wLmhhZG9vcAotZ3JlbWxpbj4gOnBsdWdpbiB1c2UgdGlua2VycG9wLmdpcmFwaAotPT0+dGlua2VycG9wLmdpcmFwaCBhY3RpdmF0ZWQKIGdyZW1saW4+IDpwbHVnaW4gdXNlIHRpbmtlcnBvcC5zcGFyawogPT0+dGlua2VycG9wLnNwYXJrIGFjdGl2YXRlZAogLS0tLQogCi1XQVJOSU5HOiBIYWRvb3AsIFNwYXJrLCBhbmQgR2lyYXBoIGFsbCBkZXBlbmQgb24gbWFueSBvZiB0aGUgc2FtZSBsaWJyYXJpZXMgKGUuZy4gWm9vS2VlcGVyLCBTbmFwcHksIE5ldHR5LCBHdWF2YSwKK1dBUk5JTkc6IEhhZG9vcCBhbmQgU3BhcmsgYWxsIGRlcGVuZCBvbiBtYW55IG9mIHRoZSBzYW1lIGxpYnJhcmllcyAoZS5nLiBab29LZWVwZXIsIFNuYXBweSwgTmV0dHksIEd1YXZhLAogZXRjLikuIFVuZm9ydHVuYXRlbHksIHR5cGljYWxseSB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCB0byB0aGUgc2FtZSB2ZXJzaW9ucyBvZiB0aGUgcmVzcGVjdGl2ZSBsaWJyYXJpZXMuIEFzIHN1Y2gsCi1pdCBpcyBiZXN0IHRvICpub3QqIGhhdmUgYm90aCBTcGFyayBhbmQgR2lyYXBoIHBsdWdpbnMgbG9hZGVkIGluIHRoZSBzYW1lIGNvbnNvbGUgc2Vzc2lvbiBub3IgaW4gdGhlIHNhbWUgSmF2YQotcHJvamVjdCAodGhvdWdoIGludGVsbGlnZW50IGA8ZXhjbHVzaW9uPmAtdXNhZ2UgY2FuIGhlbHAgYWxsZXZpYXRlIGNvbmZsaWN0cyBpbiBhIEphdmEgcHJvamVjdCkuCitpdCBpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIG1hbnVhbGx5IGNsZWFudXAgZGVwZW5kZW5jeSBjb25mbGljdHMgYW1vbmcgZGlmZmVyZW50IHBsdWdpbnMuCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLW5lbzRqLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1uZW80ai5hc2NpaWRvYwppbmRleCAwNTQ1MzM3Li5hOTRiNzMyIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLW5lbzRqLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtbmVvNGouYXNjaWlkb2MKQEAgLTYyLDcgKzYyLDcgQEAKIAogPT09IEluZGljZXMKIAotTmVvNGogMi54IGluZGljZXMgbGV2ZXJhZ2UgdmVydGV4IGxhYmVscyB0byBwYXJ0aXRpb24gdGhlIGluZGV4IHNwYWNlLiBUaW5rZXJQb3AzIGRvZXMgbm90IHByb3ZpZGUgbWV0aG9kIGludGVyZmFjZXMKK05lbzRqIDIueCBpbmRpY2VzIGxldmVyYWdlIHZlcnRleCBsYWJlbHMgdG8gcGFydGl0aW9uIHRoZSBpbmRleCBzcGFjZS4gVGlua2VyUG9wIGRvZXMgbm90IHByb3ZpZGUgbWV0aG9kIGludGVyZmFjZXMKIGZvciBkZWZpbmluZyBzY2hlbWFzL2luZGljZXMgZm9yIHRoZSB1bmRlcmx5aW5nIGdyYXBoIHN5c3RlbS4gVGh1cywgaW4gb3JkZXIgdG8gY3JlYXRlIGluZGljZXMsIGl0IGlzIGltcG9ydGFudCB0bwogY2FsbCB0aGUgTmVvNGogQVBJIGRpcmVjdGx5LgogCkBAIC05Myw4ICs5Myw4IEBACiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCiBncmFwaCA9IE5lbzRqR3JhcGgub3BlbignL3RtcC9uZW80aicpCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLnR4KCkuY29tbWl0KCkKIGNsb2NrKDEwMDApIHtnLlYoKS5oYXNMYWJlbCgnYXJ0aXN0JykuaGFzKCduYW1lJywnR2FyY2lhJykuaXRlcmF0ZSgpfSAgPDE+CiBncmFwaC5jeXBoZXIoIkNSRUFURSBJTkRFWCBPTiA6YXJ0aXN0KG5hbWUpIikgPDI+CkBAIC0xMjQsNyArMTI0LDggQEAKIFtncmVtbGluLWdyb292eV0KIC0tLS0KIGdyYXBoID0gTmVvNGpHcmFwaC5vcGVuKCcvdG1wL25lbzRqJykKLWdyYXBoLmlvKGdyeW8oKSkucmVhZEdyYXBoKCdkYXRhL3RpbmtlcnBvcC1tb2Rlcm4ua3J5bycpCitnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvdGlua2VycG9wLW1vZGVybi5rcnlvJykucmVhZCgpLml0ZXJhdGUoKQogZ3JhcGguY3lwaGVyKCdNQVRDSCAoYSB7bmFtZToibWFya28ifSkgUkVUVVJOIGEnKQogZ3JhcGguY3lwaGVyKCdNQVRDSCAoYSB7bmFtZToibWFya28ifSkgUkVUVVJOIGEnKS5zZWxlY3QoJ2EnKS5vdXQoJ2tub3dzJykudmFsdWVzKCduYW1lJykKIGdyYXBoLmNsb3NlKCkKQEAgLTEzOCw3ICsxMzksNyBAQAogCiA9PT0gTXVsdGktTGFiZWwKIAotVGlua2VyUG9wMyByZXF1aXJlcyBldmVyeSBgRWxlbWVudGAgdG8gaGF2ZSBhIHNpbmdsZSwgaW1tdXRhYmxlIHN0cmluZyBsYWJlbCAoaS5lLiBhIGBWZXJ0ZXhgLCBgRWRnZWAsIGFuZAorVGlua2VyUG9wIHJlcXVpcmVzIGV2ZXJ5IGBFbGVtZW50YCB0byBoYXZlIGEgc2luZ2xlLCBpbW11dGFibGUgc3RyaW5nIGxhYmVsIChpLmUuIGEgYFZlcnRleGAsIGBFZGdlYCwgYW5kCiBgVmVydGV4UHJvcGVydHlgKS4gSW4gTmVvNGosIGEgYE5vZGVgICh2ZXJ0ZXgpIGNhbiBoYXZlIGFuCiBsaW5rOmh0dHA6Ly9uZW80ai5jb20vZG9jcy9kZXZlbG9wZXItbWFudWFsL2N1cnJlbnQvI2dyYXBoZGItbmVvNGotbGFiZWxzW2FyYml0cmFyeSBudW1iZXIgb2YgbGFiZWxzXSB3aGlsZSBhIGBSZWxhdGlvbnNoaXBgCiAoZWRnZSkgY2FuIGhhdmUgb25lIGFuZCBvbmx5IG9uZS4gRnVydGhlcm1vcmUsIGluIE5lbzRqLCBgTm9kZWAgbGFiZWxzIGFyZSBtdXRhYmxlIHdoaWxlIGBSZWxhdGlvbnNoaXBgIGxhYmVscyBhcmUKQEAgLTE4Nyw5ICsxODgsODUgQEAKIGZpbHRlcmluZy9sb29raW5nLXVwIHZlcnRpY2VzIGJ5IHRoZWlyIGxhYmVsKHMpIGFzIHRoZSBzdGFuZGFyZCBgUC5lcSgpYCBkb2VzIGEgZGlyZWN0IG1hdGNoIG9uIHRoZSBgOjpgLXJlcHJlc2VudGF0aW9uCiBvZiBgdmVydGV4LmxhYmVsKClgCiAKKz09PSBDb25maWd1cmF0aW9uCisKK1RoZSBwcmV2aW91cyBleGFtcGxlcyBzaG93ZWQgaG93IHRvIGNyZWF0ZSBhIGBOZW80akdyYXBoYCB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGJ1dCBOZW80aiBoYXMgbWFueSBvdGhlcgorb3B0aW9ucyB0byBpbml0aWFsaXplIGl0IHRoYXQgYXJlIG5hdGl2ZSB0byBOZW80ai4gSW4gb3JkZXIgdG8gZXhwb3NlIHRob3NlLCBgTmVvNGpHcmFwaGAgaGFzIGFuIGBvcGVuKENvbmZpZ3VyYXRpb24pYAorbWV0aG9kIHdoaWNoIHRha2VzIGEgc3RhbmRhcmQgQXBhY2hlIENvbmZpZ3VyYXRpb24gb2JqZWN0LiBUaGUgc2FtZSBjYW4gYmUgc2FpZCBvZiB0aGUgc3RhbmRhcmQgbWV0aG9kIGZvciBjcmVhdGluZworYEdyYXBoYCBpbnN0YW5jZXMgd2l0aCBgR3JhcGhGYWN0b3J5YC4gRWFjaCBjb25maWd1cmF0aW9uIGtleSB0aGF0IE5lbzRqIGhhcyBtdXN0IHNpbXBseSBiZSBwcmVmaXhlZCB3aXRoCitgZ3JlbWxpbi5uZW80ai5jb25mLmAgYW5kIHRoZSBzdWZmaXggY29uZmlndXJhdGlvbiBrZXkgd2lsbCBiZSBwYXNzZWQgdGhyb3VnaCB0byBOZW80ai4KKworTk9URTogR3JlbWxpbiBTZXJ2ZXIgdXNlcyBgR3JhcGhGYWN0b3J5YCB0byBpbnN0YW50aWF0ZSB0aGUgYEdyYXBoYCBpbnN0YW5jZXMgaXQgbWFuYWdlcywgc28gdGhlIGV4YW1wbGUgYmVsb3cgaXMgYWxzbworcmVsZXZhbnQgZm9yIHRoYXQgcHVycG9zZSBhcyB3ZWxsLgorCitGb3IgZXhhbXBsZSwgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIGZpbGUgY2FsbGVkIGBuZW80ai5wcm9wZXJ0aWVzYCB0aGF0IHNldHMgdGhlIE5lbzRqCitgZGJtcy5pbmRleF9zYW1wbGluZy5iYWNrZ3JvdW5kX2VuYWJsZWRgIHNldHRpbmcgbWlnaHQgbG9vayBsaWtlOgorCitbc291cmNlLHByb3BlcnRpZXNdCistLS0tCitncmVtbGluLmdyYXBoPW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ubmVvNGouc3RydWN0dXJlLk5lbzRqR3JhcGgKK2dyZW1saW4ubmVvNGouZGlyZWN0b3J5PS90bXAvbmVvNGoKK2dyZW1saW4ubmVvNGouY29uZi5kYm1zLmluZGV4X3NhbXBsaW5nLmJhY2tncm91bmRfZW5hYmxlZD10cnVlCistLS0tCisKK3doaWNoIGNhbiB0aGVuIGJlIHVzZWQgYXMgZm9sbG93czoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZ3JhcGggPSBHcmFwaEZhY3Rvcnkub3BlbignbmVvNGoucHJvcGVydGllcycpCis9PT5uZW80amdyYXBoW2NvbW11bml0eSBzaW5nbGUgWy90bXAvbmVvNGpdXQorZ3JlbWxpbj4gZyA9IGdyYXBoLnRyYXZlcnNhbCgpCis9PT5ncmFwaHRyYXZlcnNhbHNvdXJjZVtuZW80amdyYXBoW2NvbW11bml0eSBzaW5nbGUgWy90bXAvbmVvNGpdXSwgc3RhbmRhcmRdCistLS0tCisKK0hhdmluZyB0aGlzIGFiaWxpdHkgdG8gc2V0IHN0YW5kYXJkIE5lbzRqIGNvbmZpZ3VyYXRpb25zIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGJldHRlciBjb250cm9sIHRoZSBpbml0aWFsaXphdGlvbiBvZgorTmVvNGogaXRzZWxmIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBlbmFibGUgY2VydGFpbiBmZWF0dXJlcyB0aGF0IHdvdWxkIG5vdCBvdGhlcndpc2UgYmUgYWNjZXNzaWJsZS4KKworPT09IEJvbHQgQ29uZmlndXJhdGlvbgorCitXaGlsZSBgTmVvNGpHcmFwaGAgZW5hYmxlcyBHcmVtbGluIGJhc2VkIHF1ZXJpZXMsIHVzZXJzIG1heSBmaW5kIGl0IGhlbHBmdWwgdG8gYWxzbyBiZSBhYmxlIHRvIGNvbm5lY3QgdG8gdGhhdCBncmFwaAord2l0aCBuYXRpdmUgTmVvNGogZHJpdmVycyBhbmQgb3RoZXIgdG9vbHMgZnJvbSB0aGF0IHNwYWNlLiBJdCBpcyBwb3NzaWJsZSB0byBlbmFibGUgdGhlCitsaW5rOmh0dHBzOi8vYm9sdHByb3RvY29sLm9yZy9bQm9sdCBQcm90b2NvbF0gYXMgYSB3YXkgdG8gZG8gdGhpczoKKworW3NvdXJjZSxwcm9wZXJ0aWVzXQorLS0tLQorZ3JlbWxpbi5ncmFwaD1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLm5lbzRqLnN0cnVjdHVyZS5OZW80akdyYXBoCitncmVtbGluLm5lbzRqLmRpcmVjdG9yeT0vdG1wL25lbzRqCitncmVtbGluLm5lbzRqLmNvbmYuZGJtcy5jb25uZWN0b3IuMC50eXBlPUJPTFQKK2dyZW1saW4ubmVvNGouY29uZi5kYm1zLmNvbm5lY3Rvci4wLmVuYWJsZWQ9dHJ1ZQorZ3JlbWxpbi5uZW80ai5jb25mLmRibXMuY29ubmVjdG9yLjAuYWRkcmVzcz1sb2NhbGhvc3Q6NzY4NworLS0tLQorCitUaGlzIGNvbmZpZ3VyYXRpb24gaXMgZXNwZWNpYWxseSByZWxldmFudCB0byBHcmVtbGluIFNlcnZlciB3aGVyZSBvbmUgbWlnaHQgd2FudCB0byBjb25uZWN0IHRvIHRoZSBzYW1lIGdyYXBoIGluc3RhbmNlCit3aXRoIGJvdGggR3JlbWxpbiBhbmQgQ3lwaGVyLgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiA6aW5zdGFsbCBvcmcubmVvNGouZHJpdmVyIG5lbzRqLWphdmEtZHJpdmVyIDEuNy4yCis9PT5Mb2FkZWQ6IFtvcmcubmVvNGouZHJpdmVyLCBuZW80ai1qYXZhLWRyaXZlciwgMS43LjJdCisuLi4gLy8gcmVzdGFydCBHcmVtbGluIENvbnNvbGUKK2dyZW1saW4+IGltcG9ydCBvcmcubmVvNGouZHJpdmVyLnYxLioKKz09Pm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLiosIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuKiwgLi4uIG9yZy5uZW80ai5kcml2ZXIudjEuKgorZ3JlbWxpbj4gZHJpdmVyID0gR3JhcGhEYXRhYmFzZS5kcml2ZXIoICJib2x0Oi8vbG9jYWxob3N0Ojc2ODciLCBBdXRoVG9rZW5zLmJhc2ljKCJuZW80aiIsICJuZW80aiIpKQorT2N0IDI4LCAyMDE5IDM6Mjg6MjAgUE0gb3JnLm5lbzRqLmRyaXZlci5pbnRlcm5hbC5sb2dnaW5nLkpVTG9nZ2VyIGluZm8KK0lORk86IERpcmVjdCBkcml2ZXIgaW5zdGFuY2UgMTM4NTE0MDEwNyBjcmVhdGVkIGZvciBzZXJ2ZXIgYWRkcmVzcyBsb2NhbGhvc3Q6NzY4NworPT0+b3JnLm5lbzRqLmRyaXZlci5pbnRlcm5hbC5JbnRlcm5hbERyaXZlckA1MjhmOGY4YgorZ3JlbWxpbj4gc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCkKKz09Pm9yZy5uZW80ai5kcml2ZXIuaW50ZXJuYWwuTmV0d29ya1Nlc3Npb25AZjNmY2Q1OQorZ3JlbWxpbj4gc2Vzc2lvbi5ydW4oICJDUkVBVEUgKGE6cGVyc29uIHtuYW1lOiB7bmFtZX0sIGFnZToge2FnZX19KSIsCisuLi4uLi4xPiAgICAgICAgICAgICAgICAgVmFsdWVzLnBhcmFtZXRlcnMoIm5hbWUiLCAic3RlcGhlbiIsICJhZ2UiLCAyOSkpCitncmVtbGluPiA6cmVtb3RlIGNvbm5lY3QgdGlua2VycG9wLnNlcnZlciBjb25mL3JlbW90ZS55YW1sCis9PT5Db25maWd1cmVkIGxvY2FsaG9zdC8xMjcuMC4wLjE6ODE4MgorZ3JlbWxpbj4gOnJlbW90ZSBjb25zb2xlCis9PT5BbGwgc2NyaXB0cyB3aWxsIG5vdyBiZSBzZW50IHRvIEdyZW1saW4gU2VydmVyIC0gW2xvY2FsaG9zdC8xMjcuMC4wLjE6ODE4Ml0gLSB0eXBlICc6cmVtb3RlIGNvbnNvbGUnIHRvIHJldHVybiB0byBsb2NhbCBtb2RlCitncmVtbGluPiBnLlYoKS5lbGVtZW50TWFwKCkKKz09PntpZD0wLCBsYWJlbD1wZXJzb24sIG5hbWU9c3RlcGhlbiwgYWdlPTI5fQorLS0tLQorCiA9PT0gSGlnaCBBdmFpbGFiaWxpdHkgQ29uZmlndXJhdGlvbgogCi1pbWFnZTpuZW80ai1oYS5wbmdbd2lkdGg9NDAwLGZsb2F0PXJpZ2h0XSBUaW5rZXJQb3Agc3VwcG9ydHMgcnVubmluZyBOZW80aiB3aXRoIGl0cyBmYXVsdCB0b2xlcmFudCBtYXN0ZXItc2xhdmUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgcmVmZXJyZWQgdG8gYXMgaXRzCitpbWFnZTpuZW80ai1oYS5wbmdbd2lkdGg9NDAwLGZsb2F0PXJpZ2h0XSBUaW5rZXJQb3Agc3VwcG9ydHMgcnVubmluZyBOZW80aiB3aXRoIGl0cyBmYXVsdCB0b2xlcmFudCBtYXN0ZXItc2xhdmUKK3JlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIHJlZmVycmVkIHRvIGFzIGl0cwogbGluazpodHRwOi8vbmVvNGouY29tL2RvY3Mvb3BlcmF0aW9ucy1tYW51YWwvY3VycmVudC8jX25lbzRqX2NsdXN0ZXJfaW5zdGFsbFtIaWdoIEF2YWlsYWJpbGl0eSAoSEEpIGNsdXN0ZXJdLiBGcm9tIHRoZQogVGlua2VyUG9wIHBlcnNwZWN0aXZlLCBjb25maWd1cmluZyBmb3IgSEEgaXMgbm90IHRoYXQgZGlmZmVyZW50IHRoYW4gY29uZmlndXJpbmcgZm9yIGVtYmVkZGVkIG1vZGUgYXMgc2hvd24gYWJvdmUuIFRoZQogbWFpbiBkaWZmZXJlbmNlIGlzIHRoZSB1c2FnZSBvZiBIQSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhlIGNsdXN0ZXIuIE9uY2UgY29ubmVjdGVkIHRvIGEgY2x1c3RlciwgdXNhZ2UKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtc3BhcmsuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLXNwYXJrLmFzY2lpZG9jCmluZGV4IDA1YTZhOTMuLjgwODEyOWYgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtc3BhcmsuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1zcGFyay5hc2NpaWRvYwpAQCAtMTIyLDcgKzEyMiw2IEBACiAKIEZpbmFsbHksIHRoZXJlIGlzIGEgYHNwYXJrYCBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBtYW5hZ2UgcGVyc2lzdGVkIFJERHMgKHNlZSA8PGludGVyYWN0aW5nLXdpdGgtc3BhcmssIEludGVyYWN0aW5nIHdpdGggU3Bhcms+PikuCiAKLVtbYnVsa2R1bXBlcnZlcnRleHByb2dyYW11c2luZ3NwYXJrXV0KIFtbY2xvbmV2ZXJ0ZXhwcm9ncmFtdXNpbmdzcGFya11dCiA9PT09PSBVc2luZyBDbG9uZVZlcnRleFByb2dyYW0KIApAQCAtMTM2LDcgKzEzNSw3IEBACiBoZGZzLmNvcHlGcm9tTG9jYWwoJ2RhdGEvdGlua2VycG9wLW1vZGVybi5rcnlvJywgJ3RpbmtlcnBvcC1tb2Rlcm4ua3J5bycpCiBncmFwaCA9IEdyYXBoRmFjdG9yeS5vcGVuKCdjb25mL2hhZG9vcC9oYWRvb3AtZ3J5by5wcm9wZXJ0aWVzJykKIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eSgnZ3JlbWxpbi5oYWRvb3AuZ3JhcGhXcml0ZXInLCAnb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OT3V0cHV0Rm9ybWF0JykKLWdyYXBoLmNvbXB1dGUoU3BhcmtHcmFwaENvbXB1dGVyKS5wcm9ncmFtKEJ1bGtEdW1wZXJWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuY3JlYXRlKCkpLnN1Ym1pdCgpLmdldCgpCitncmFwaC5jb21wdXRlKFNwYXJrR3JhcGhDb21wdXRlcikucHJvZ3JhbShDbG9uZVZlcnRleFByb2dyYW0uYnVpbGQoKS5jcmVhdGUoKSkuc3VibWl0KCkuZ2V0KCkKIGhkZnMubHMoJ291dHB1dCcpCiBoZGZzLmhlYWQoJ291dHB1dC9+ZycpCi0tLS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy10aW5rZXJncmFwaC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtdGlua2VyZ3JhcGguYXNjaWlkb2MKaW5kZXggZDA2MzliYS4uY2M1ZTZiMiAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy10aW5rZXJncmFwaC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLXRpbmtlcmdyYXBoLmFzY2lpZG9jCkBAIC0yOCw4ICsyOCw4IEBACiAKIGltYWdlOnRpbmtlcnBvcC1jaGFyYWN0ZXIucG5nW3dpZHRoPTEwMCxmbG9hdD1sZWZ0XSBUaW5rZXJHcmFwaCBpcyBhIHNpbmdsZSBtYWNoaW5lLCBpbi1tZW1vcnkgKHdpdGggb3B0aW9uYWwKIHBlcnNpc3RlbmNlKSwgbm9uLXRyYW5zYWN0aW9uYWwgZ3JhcGggZW5naW5lIHRoYXQgcHJvdmlkZXMgYm90aCBPTFRQIGFuZCBPTEFQIGZ1bmN0aW9uYWxpdHkuIEl0IGlzIGRlcGxveWVkIHdpdGgKLVRpbmtlclBvcDMgYW5kIHNlcnZlcyBhcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBvdGhlciBwcm92aWRlcnMgdG8gc3R1ZHkgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCB0aGUKLXNlbWFudGljcyBvZiB0aGUgdmFyaW91cyBtZXRob2RzIG9mIHRoZSBUaW5rZXJQb3AzIEFQSS4gSXRzIHN0YXR1cyBhcyBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBob3dldmVyIGltcGx5CitUaW5rZXJQb3AgYW5kIHNlcnZlcyBhcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBvdGhlciBwcm92aWRlcnMgdG8gc3R1ZHkgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCB0aGUKK3NlbWFudGljcyBvZiB0aGUgdmFyaW91cyBtZXRob2RzIG9mIHRoZSBUaW5rZXJQb3AgQVBJLiBJdHMgc3RhdHVzIGFzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW1wbHkKIHRoYXQgaXQgaXMgbm90IHN1aXRhYmxlIGZvciBwcm9kdWN0aW9uLiBUaW5rZXJHcmFwaCBoYXMgbWFueSBwcmFjdGljYWwgdXNlIGNhc2VzIGluIHByb2R1Y3Rpb24gYXBwbGljYXRpb25zIGFuZCB0aGVpcgogZGV2ZWxvcG1lbnQuIFNvbWUgZXhhbXBsZXMgb2YgVGlua2VyR3JhcGggdXNlIGNhc2VzIGluY2x1ZGU6CiAKQEAgLTkwLDE5ICs5MCwxOSBAQAogLS0tLQogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKIGcgPSBncmFwaC50cmF2ZXJzYWwoKQotZ3JhcGguaW8oZ3JhcGhtbCgpKS5yZWFkR3JhcGgoJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKQorZy5pbygnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpLnJlYWQoKS5pdGVyYXRlKCkKIGNsb2NrKDEwMDApIHtnLlYoKS5oYXMoJ25hbWUnLCdHYXJjaWEnKS5pdGVyYXRlKCl9IDwxPgogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKIGcgPSBncmFwaC50cmF2ZXJzYWwoKQogZ3JhcGguY3JlYXRlSW5kZXgoJ25hbWUnLFZlcnRleC5jbGFzcykKLWdyYXBoLmlvKGdyYXBobWwoKSkucmVhZEdyYXBoKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBjbG9jaygxMDAwKXtnLlYoKS5oYXMoJ25hbWUnLCdHYXJjaWEnKS5pdGVyYXRlKCl9IDwyPgogLS0tLQogCiA8MT4gRGV0ZXJtaW5lIHRoZSBhdmVyYWdlIHJ1bnRpbWUgb2YgMTAwMCB2ZXJ0ZXggbG9va3VwcyB3aGVuIG5vIGBuYW1lYC1pbmRleCBpcyBkZWZpbmVkLgogPDI+IERldGVybWluZSB0aGUgYXZlcmFnZSBydW50aW1lIG9mIDEwMDAgdmVydGV4IGxvb2t1cHMgd2hlbiBhIGBuYW1lYC1pbmRleCBpcyBkZWZpbmVkLgogCi1JTVBPUlRBTlQ6IEVhY2ggZ3JhcGggc3lzdGVtIHdpbGwgaGF2ZSBkaWZmZXJlbnQgbWVjaGFuaXNtIGJ5IHdoaWNoIGluZGljZXMgYW5kIHNjaGVtYXMgYXJlIGRlZmluZWQuIFRpbmtlclBvcDMKK0lNUE9SVEFOVDogRWFjaCBncmFwaCBzeXN0ZW0gd2lsbCBoYXZlIGRpZmZlcmVudCBtZWNoYW5pc20gYnkgd2hpY2ggaW5kaWNlcyBhbmQgc2NoZW1hcyBhcmUgZGVmaW5lZC4gVGlua2VyUG9wCiBkb2VzIG5vdCByZXF1aXJlIGFueSBjb25mb3JtYW5jZSBpbiB0aGlzIGFyZWEuIEluIFRpbmtlckdyYXBoLCB0aGUgb25seSBkZWZpbml0aW9ucyBhcmUgYXJvdW5kIGluZGljZXMuIFdpdGggb3RoZXIKIGdyYXBoIHN5c3RlbXMsIHByb3BlcnR5IHZhbHVlIHR5cGVzLCBpbmRpY2VzLCBlZGdlIGxhYmVscywgZXRjLiBtYXkgYmUgcmVxdWlyZWQgdG8gYmUgZGVmaW5lZCBfYSBwcmlvcmlfIHRvIGFkZGluZwogZGF0YSB0byB0aGUgZ3JhcGguCkBAIC0xNTgsMTMgKzE1OCwxMyBAQAogW2dyZW1saW4tZ3Jvb3Z5XQogLS0tLQogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKLWdyYXBoLmlvKGdyeW8oKSkucmVhZEdyYXBoKCJkYXRhL3RpbmtlcnBvcC1jcmV3LmtyeW8iKQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpCitnLmlvKCJkYXRhL3RpbmtlcnBvcC1jcmV3LmtyeW8iKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLlYoKS5wcm9wZXJ0aWVzKCkKIGNvbmYgPSBuZXcgQmFzZUNvbmZpZ3VyYXRpb24oKQogY29uZi5zZXRQcm9wZXJ0eSgiZ3JlbWxpbi50aW5rZXJncmFwaC5kZWZhdWx0VmVydGV4UHJvcGVydHlDYXJkaW5hbGl0eSIsImxpc3QiKQogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKGNvbmYpCi1ncmFwaC5pbyhncnlvKCkpLnJlYWRHcmFwaCgiZGF0YS90aW5rZXJwb3AtY3Jldy5rcnlvIikKIGcgPSBncmFwaC50cmF2ZXJzYWwoKQorZy5pbygiZGF0YS90aW5rZXJwb3AtY3Jldy5rcnlvIikucmVhZCgpLml0ZXJhdGUoKQogZy5WKCkucHJvcGVydGllcygpCiAtLS0tCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW5kZXguYXNjaWlkb2MKaW5kZXggZTg2ODAzNy4uMjI1Mzk5MSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbmRleC5hc2NpaWRvYwpAQCAtMzIsNiArMzIsOCBAQAogCiBpbmNsdWRlOjpncmVtbGluLWFwcGxpY2F0aW9ucy5hc2NpaWRvY1tdCiAKK2luY2x1ZGU6OmdyZW1saW4tdmFyaWFudHMuYXNjaWlkb2NbXQorCiBpbmNsdWRlOjppbXBsZW1lbnRhdGlvbnMtaW50cm8uYXNjaWlkb2NbXQogaW5jbHVkZTo6aW1wbGVtZW50YXRpb25zLXRpbmtlcmdyYXBoLmFzY2lpZG9jW10KIGluY2x1ZGU6OmltcGxlbWVudGF0aW9ucy1uZW80ai5hc2NpaWRvY1tdCkBAIC00MSwxMCArNDMsOSBAQAogLy8gY29uc29sZSBpcyB0byBoYXZlIGEgbmV3IGFzY2lpZG9jIHBhZ2UuCiBpbmNsdWRlOjppbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jW10KIGluY2x1ZGU6OmltcGxlbWVudGF0aW9ucy1zcGFyay5hc2NpaWRvY1tdCi1pbmNsdWRlOjppbXBsZW1lbnRhdGlvbnMtZ2lyYXBoLmFzY2lpZG9jW10KIGluY2x1ZGU6OmltcGxlbWVudGF0aW9ucy1oYWRvb3AtZW5kLmFzY2lpZG9jW10KIAotaW5jbHVkZTo6Z3JlbWxpbi12YXJpYW50cy5hc2NpaWRvY1tdCitpbmNsdWRlOjpjb21waWxlcnMuYXNjaWlkb2NbXQogCiBpbmNsdWRlOjpjb25jbHVzaW9uLmFzY2lpZG9jW10KIApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ludHJvLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ludHJvLmFzY2lpZG9jCmluZGV4IDFkMGMxOWMuLmViYzBlOWIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbnRyby5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW50cm8uYXNjaWlkb2MKQEAgLTE1LDQyICsxNSwxMTkgQEAKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogLy8vLwogW1tpbnRyb11dCi09IEludHJvZHVjdGlvbiB0byBHcmFwaCBDb21wdXRpbmcKKz0gSW50cm9kdWN0aW9uCisKK1dlbGNvbWUgdG8gdGhlIFJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIGZvciBBcGFjaGUgVGlua2VyUG9w4oSiIC0gdGhlIGJhY2tib25lIGZvciBhbGwgZGV0YWlscyBvbiBob3cgdG8gd29yayB3aXRoCitUaW5rZXJQb3AgYW5kIHRoZSBHcmVtbGluIGdyYXBoIHRyYXZlcnNhbCBsYW5ndWFnZS4gVGhpcyBkb2N1bWVudGF0aW9uIGlzIG5vdCBtZWFudCB0byBiZSBhICJib29rIiwgYnV0IGEgc291cmNlCitmcm9tIHdoaWNoIHRvIHNwYXduIG1vcmUgZGV0YWlsZWQgYWNjb3VudHMgb2Ygc3BlY2lmaWMgdG9waWNzIGFuZCBhIHRhcmdldCB0byB3aGljaCBhbGwgb3RoZXIgcmVzb3VyY2VzIHBvaW50LgorVGhlIFJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIG1ha2VzIHNvbWUgZ2VuZXJhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmVhZGVyOgorCisxLiBUaGV5IGhhdmUgYSBzZW5zZSBvZiB3aGF0IGEgZ3JhcGggaXMgLSBub3Qgc3VyZT8gc2VlIGxpbms6aHR0cDovL2tlbHZpbmxhd3JlbmNlLm5ldC9ib29rL0dyZW1saW4tR3JhcGgtR3VpZGUuaHRtbCN3aHlncmFwaFtQcmFjdGljYWwgR3JlbWxpbiAtIFdoeSBHcmFwaD9dCisxLiBUaGV5IGtub3cgd2hhdCBpdCBtZWFucyBmb3IgYSBncmFwaCBzeXN0ZW0gdG8gYmUgVGlua2VyUG9wLWVuYWJsZWQgLSBub3Qgc3VyZT8gc2VlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9wcm92aWRlcnMuaHRtbFtUaW5rZXJQb3AtZW5hYmxlZCBQcm92aWRlcnNdCisxLiBUaGV5IGtub3cgd2hhdCB0aGUgcm9sZSBvZiBHcmVtbGluIGlzIC0gbm90IHN1cmU/IHNlZSBsaW5rOmxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9ncmVtbGluLmh0bWxbSW50cm9kdWN0aW9uIHRvIEdyZW1saW5dCisKK0dpdmVuIHRob3NlIGFzc3VtcHRpb25zLCBpdCdzIHBvc3NpYmxlIHRvIGRpdmUgbW9yZSBxdWlja2x5IGludG8gdGhlIGRldGFpbHMgd2l0aG91dCBzcGVuZGluZyBhIGxvdCBvZiB0aW1lIHJlcGVhdGluZword2hhdCBpcyB3cml0dGVuIGVsc2V3aGVyZS4KKworSXQgaXMgZmFpcmx5IGNlcnRhaW4gdGhhdCByZWFkZXJzIG9mIHRoZSBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiBhcmUgY29taW5nIGZyb20gdGhlIG1vc3QgZGl2ZXJzZSBzb2Z0d2FyZSBkZXZlbG9wbWVudAorYmFja2dyb3VuZHMgdGhhdCBUaW5rZXJQb3AgaGFzIGV2ZXIgZW5nYWdlZCBpbiBvdmVyIHRoZSBkZWNhZGUgb3Igc28gb2YgaXRzIGV4aXN0ZW5jZS4gV2hpbGUgVGlua2VyUG9wIGhvbGRzIHNvbWUgcm9vdHMKK2luIEphdmEsIGFuZCB0aHVzLCBsYW5ndWFnZXMgYm91bmQgdG8gdGhlIEphdmEgVmlydHVhbCBNYWNoaW5lIChKVk0pLCBpdCBsb25nIGFnbyBicmFuY2hlZCBvdXQgaW50byBvdGhlciBsYW5ndWFnZXMKK3N1Y2ggYXMgUHl0aG9uLCBKYXZhc2NyaXB0LCAuTkVULCBhbmQgb3RoZXJzLiBUbyBjb21wb3VuZCB1cG9uIHRoYXQgZGl2ZXJzaXR5LCBpdCBpcyBhbHNvIHNlZWluZyBleHRlbnNpdmUgc3VwcG9ydAorZnJvbSBkaWZmZXJlbnQgZ3JhcGggc3lzdGVtcyB3aGljaCBoYXZlIGNob3NlbiBUaW5rZXJQb3AgYXMgdGhlaXIgc3RhbmRhcmQgbWV0aG9kIGZvciBhbGxvd2luZyB1c2VycyB0byBpbnRlcmZhY2UKK3dpdGggdGhlaXIgZ3JhcGguIE1vcmVvdmVyLCB0aGUgZ3JhcGggc3lzdGVtcyB0aGVtc2VsdmVzIGFyZSBub3Qgb25seSBzZXBhcmF0ZWQgYnkgT0xUUCBhbmQgT0xBUCBzdHlsZSB3b3JrbG9hZHMsIGJ1dAorYWxzbyBieSB0aGVpciBpbXBsZW1lbnRhdGlvbiBwYXR0ZXJucywgd2hpY2ggcmFuZ2UgZXZlcnl3aGVyZSBmcm9tIGJlaW5nIGFuIGVtYmVkZGVkIGdyYXBoIHN5c3RlbSB0byBhIGNsb3VkLW9ubHkKK2dyYXBoLiBPbmUgbWlnaHQgZXZlbiBmaW5kIGRpdmVyc2l0eSBwYXJhbGxlbCB0byBHcmVtbGluIGlmIGNvbnNpZGVyaW5nIG90aGVyIGdyYXBoIHF1ZXJ5IGxhbmd1YWdlcy4KKworaW1hZ2U6OmdyZW1saW4tcmVmZXJlbmNlLnBuZ1t3aWR0aD0xMDI0XQorCitEZXNwaXRlIGFsbCB0aGlzIGRpdmVyc2l0eSBhbmQgZGlzcGFyaXR5LCBHcmVtbGluIHJlbWFpbnMgdGhlIHVuaWZ5aW5nIGludGVyZmFjZSBmb3IgYWxsIHRoZXNlIGRpZmZlcmVudCBlbGVtZW50cyBvZgordGhlIGdyYXBoIGNvbW11bml0eS4gQXMgYSB1c2VyLCBjaG9vc2luZyBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIGFuZCB1c2luZyBHcmVtbGluIGluIHRoZSBjb3JyZWN0IHdheSB3aGVuIGJ1aWxkaW5nCithcHBsaWNhdGlvbnMgc2hpZWxkcyB0aGVtIGZyb20gY2hhbmdlIGFuZCBkaXNwYXJpdHkgaW4gdGhlIHNwYWNlLiBBcyBhIGdyYXBoIHByb3ZpZGVyLCBjaG9vc2luZyB0byBiZWNvbWUKK1RpbmtlclBvcC1lbmFibGVkIG5vdCBvbmx5IGV4cGFuZHMgdGhlIHJlYWNoIHRoZWlyIHN5c3RlbSBjYW4gZ2V0IGludG8gZGlmZmVyZW50IGRldmVsb3BtZW50IGVjb3N5c3RlbXMsIGJ1dCBhbHNvCitwcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXIgcXVlcnkgbGFuZ3VhZ2VzIHRocm91Z2ggYnl0ZWNvZGUgY29tcGlsYXRpb24gYXMgc2VlbiBpbiA8PHNwYXJxbC1ncmVtbGluLHNwYXJxbC1ncmVtbGluPj4uCisKK0lycmVzcGVjdGl2ZSBvZiB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYmVpbmcgdXNlZCwgZ3JhcGggc3lzdGVtIGNob3NlbiBvciBvdGhlciBkZXZlbG9wbWVudCBiYWNrZ3JvdW5kIHRoYXQgbWlnaHQKK2JlIGRyaXZpbmcgYSB1c2VyIHRvIHRoaXMgZG9jdW1lbnRhdGlvbiwgdGhlIGNyaXRpY2FsIHBvaW50IHRvIHJlbWVtYmVyIGlzIHRoYXQgIkdyZW1saW4gaXMgR3JlbWxpbiBpcyBHcmVtbGluIi4gVGhlCitzYW1lIEdyZW1saW4gdGhhdCBpcyB3cml0dGVuIGZvciBhbiBPTFRQIHF1ZXJ5IG92ZXIgYW4gaW4tbWVtb3J5IFRpbmtlckdyYXBoIGlzIHRoZSBzYW1lIEdyZW1saW4gdGhhdCBpcyB3cml0dGVuIHRvCitleGVjdXRlIG92ZXIgYSBtdWx0aS1iaWxsaW9uIGVkZ2UgZ3JhcGggdXNpbmcgT0xBUCB0aHJvdWdoIFNwYXJrLiBUaGF0IHNhbWUgR3JlbWxpbiBmb3IgZWl0aGVyIG9mIHRob3NlIGNhc2VzIGlzCit3cml0dGVuIGluIHRoZSBzYW1lIHdheSB3aGV0aGVyIHVzaW5nIEphdmEgb3IgUHl0aG9uIG9yIEphdmFzY3JpcHQuIFRoZSBHcmVtbGluIGlzIGFsd2F5cyBmdW5kYW1lbnRhbGx5IHRoZSBzYW1lCithc2lkZSBmcm9tIHN5bnRhY3RpY2FsIGRpZmZlcmVuY2VzIHRoYXQgbWlnaHQgYmUgbGFuZ3VhZ2Ugc3BlY2lmaWMgLSBlLmcuIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYSBsYW1iZGEgaW4gR3Jvb3Z5IGlzCitkaWZmZXJlbnQgdGhhbiB0aGUgY29uc3RydWN0aW9uIG9mIGEgbGFtYmRhIGluIFB5dGhvbiBvciBhIHJlc2VydmVkIHdvcmQgaW4gSmF2YXNjcmlwdCBmb3JjZXMgYSBHcmVtbGluIHN0ZXAgdG8gaGF2ZQorc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyB0aGFuIEphdmEuCisKK1doaWxlIGxlYXJuaW5nIHRoZSBHcmVtbGluIGxhbmd1YWdlIGFuZCBpdHMgcGF0dGVybnMgaXMgbGFyZ2VseSBhZ25vc3RpYyB0byBhbGwgdGhlIGRpdmVyc2l0eSBpbiB0aGUgc3BhY2UsIGl0IGlzIG5vdAorcmVhbGx5IHBvc3NpYmxlIHRvIGlnbm9yZSB0aGUgaW1wYWN0IG9mIHRoZSBkaXZlcnNpdHkgZnJvbSBhbiBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBwZXJzcGVjdGl2ZSBhbmQgdGhlIFJlZmVyZW5jZQorRG9jdW1lbnRhdGlvbiBtYWtlcyBhbiBlZmZvcnQgdG8gdHJ5IHRvIHBvaW50IG91dCB3aGVyZSBkaWZmZXJlbmNlcyBhbmQgaW5jb25zaXN0ZW5jaWVzIG1pZ2h0IGxpZSB3aXRob3V0IGRpdmluZyB0b28KK2RlZXBseSBpbnRvIHNwZWNpZmljIGdyYXBoIHByb3ZpZGVyIGltcGxlbWVudGF0aW9ucy4gVXNlcnMgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gY29uc3VsdCB0aGUgZG9jdW1lbnRhdGlvbiBvZgordGhlaXIgY2hvc2VuIGdyYXBoIHByb3ZpZGVyIHRvIHVuZGVyc3RhbmQgYWxsIG9mIHRoZSBjYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zIHRoYXQgbWF5IHJlc3RyaWN0IG9yIGluaGliaXQgdXNhZ2UKK29mIGNlcnRhaW4gYXNwZWN0cyBvZiBUaW5rZXJQb3AgQVBJcyB3aGljaCBhcmUgZGVmaW5lZCBoZXJlIGluIHRoaXMgUmVmZXJlbmNlIERvY3VtZW50YXRpb24uCisKK1RoZSBmb2xsb3dpbmcgaW50cm9kdWN0b3J5IHNlY3Rpb25zIGFuZCBzZXBhcmF0ZWx5IHJlZmVyZW5jZWQgY29udGVudCB3aWxsIGJlIG9mIHZhcnlpbmcgaW50ZXJlc3QgdG8gZGlmZmVyZW50IHJlYWRlcnMuCitUaGUgc3VtbWFyaWVzIGJlbG93IHdpbGwgaG9wZWZ1bGx5IGJlIGhlbHBmdWwgaW4gZGlyZWN0aW5nIGluZGl2aWR1YWxzIHRvIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSB0byBzdGFydCB0aGVpcgorbGVhcm5pbmcgcHJvY2Vzcy4KKworKiA8PGdyYXBoLWNvbXB1dGluZyxHcmFwaCBDb21wdXRpbmc+PiBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gd2hhdCAiZ3JhcGggY29tcHV0aW5nIiBtZWFucyB0byBUaW5rZXJQb3AgYW5kIGRlc2NyaWJlcworbWFueSBvZiB0aGUgcHJvdmlkZXIgYW5kIHVzZXItZmFjaW5nIFRpbmtlclBvcCBBUElzIGFuZCBjb25jZXB0cyB0aGF0IGVuYWJsZSBHcmVtbGluLgorKiA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBwcm92aWRlcyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkaWZmZXJlbnQgbW9kZXMgYnkgd2hpY2ggdXNlcnMgd2lsbCBjb25uZWN0Cit0byBncmFwaHMgZGVwZW5kaW5nIG9uIHRoZWlyIGVudmlyb25tZW50LgorKiA8PGJhc2ljLWdyZW1saW4sIEJhc2ljIEdyZW1saW4+PiBkZXNjcmliZXMgaG93IHRvIHVzZSBhIGNvbm5lY3Rpb24gdG8gc3RhcnQgd3JpdGluZyBHcmVtbGluLgorKiA8PHN0YXlpbmctYWdub3N0aWMsIFN0YXlpbmcgQWdub3N0aWM+PiBwcm92aWRlcyB0aXBzIG9uIHdheXMgdG8ga2VlcCBHcmVtbGluIGFzIHBvcnRhYmxlIGFzIHBvc3NpYmxlIGFtb25nIGRpZmZlcmVudAorZ3JhcGggcHJvdmlkZXJzLgorCitOZXcgdXNlcnMgc2hvdWxkIG5vdCBpZ25vcmUgVGlua2VyUG9wJ3MgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL2dldHRpbmctc3RhcnRlZC9bR2V0dGluZyBTdGFydGVkXQordHV0b3JpYWwgb3IgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvW1RoZSBHcmVtbGluIENvbnNvbGVdIHR1dG9yaWFsLgorQm90aCBjb250YWluIGEgbGFyZ2Ugc2V0IG9mIGJhc2ljIGluZm9ybWF0aW9uIGFuZCB0aXBzIHRoYXQgY2FuIGhlbHAgcmVhZGVycyBhdm9pZCBzb21lIGdlbmVyYWwgcGl0ZmFsbHMgZWFybHkgb24uCitCb3RoIGFsc28gZm9jdXMgb24gR3JlbWxpbiB1c2FnZSBpbiB0aGUgR3JlbWxpbiBDb25zb2xlLCB3aGljaCB0ZW5kcyB0byBiZSBhIGNyaXRpY2FsIHRvb2wgZm9yIEdyZW1saW4gZGV2ZWxvcGVycyBvZgorYW55IGRldmVsb3BtZW50IGJhY2tncm91bmQuCisKK01vcmUgYWR2YW5jZWQgYW5kIGV4cGVyaWVuY2UgdXNlcnMgd2lsbCBhcHByZWNpYXRlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlY2lwZXMvW0dyZW1saW4gUmVjaXBlc10KK3doaWNoIHByb3ZpZGUgZXhhbXBsZXMgb2YgY29tbW9uIEdyZW1saW4gdHJhdmVyc2FsIHBhdHRlcm5zLgorCitGaW5hbGx5LCBhbGwgR3JlbWxpbiBkZXZlbG9wZXJzIHNob3VsZCBiZWNvbWUgZmFtaWxpYXIgd2l0aAorbGluazpodHRwOi8va2VsdmlubGF3cmVuY2UubmV0L2Jvb2svR3JlbWxpbi1HcmFwaC1HdWlkZS5odG1sWyJQcmFjdGljYWwgR3JlbWxpbiJdIGJ5IEtlbHZpbiBMYXdyZW5jZS4gVGhpcyBib29rIGlzCitmcmVlbHkgYXZhaWxhYmxlIGFuZCBwdWJsaXNoZWQgb25saW5lLiBJdCBjb250YWlucyBncmVhdCBleGFtcGxlcyBhbmQgZGV0YWlscyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIGFueW9uZSBidWlsZGluZworYXBwbGljYXRpb25zIHdpdGggR3JlbWxpbi4KKworW1tncmFwaC1jb21wdXRpbmddXQorPT0gR3JhcGggQ29tcHV0aW5nCiAKIGltYWdlOjpncmFwaC1jb21wdXRpbmcucG5nW3dpZHRoPTM1MF0KIAotW3NvdXJjZSx4bWxdCi08ZGVwZW5kZW5jeT4KLSAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gIDxhcnRpZmFjdElkPmdyZW1saW4tY29yZTwvYXJ0aWZhY3RJZD4KLSAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Ci08L2RlcGVuZGVuY3k+Ci0KIEEgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyYXBoXyhkYXRhX3N0cnVjdHVyZSlbZ3JhcGhdIGlzIGEgZGF0YSBzdHJ1Y3R1cmUgY29tcG9zZWQgb2YgdmVydGljZXMgKG5vZGVzLAogZG90cykgYW5kIGVkZ2VzIChhcmNzLCBsaW5lcykuIFdoZW4gbW9kZWxpbmcgYSBncmFwaCBpbiBhIGNvbXB1dGVyIGFuZCBhcHBseWluZyBpdCB0byBtb2Rlcm4gZGF0YSBzZXRzIGFuZCBwcmFjdGljZXMsCiB0aGUgZ2VuZXJpYyBtYXRoZW1hdGljYWxseS1vcmllbnRlZCwgYmluYXJ5IGdyYXBoIGlzIGV4dGVuZGVkIHRvIHN1cHBvcnQgYm90aCBsYWJlbHMgYW5kIGtleS92YWx1ZSBwcm9wZXJ0aWVzLiBUaGlzCiBzdHJ1Y3R1cmUgaXMga25vd24gYXMgYSBwcm9wZXJ0eSBncmFwaC4gTW9yZSBmb3JtYWxseSwgaXQgaXMgYSBkaXJlY3RlZCwgYmluYXJ5LCBhdHRyaWJ1dGVkIG11bHRpLWdyYXBoLiBBbiBleGFtcGxlCi1wcm9wZXJ0eSBncmFwaCBpcyBkaWFncmFtbWVkIGJlbG93LiBUaGlzIGdyYXBoIGV4YW1wbGUgd2lsbCBiZSB1c2VkIGV4dGVuc2l2ZWx5IHRocm91Z2hvdXQgdGhlIGRvY3VtZW50YXRpb24gYW5kIGlzCi1jYWxsZWQgIlRpbmtlclBvcCBNb2Rlcm4iIGFzIGl0IGlzIGEgbW9kZXJuIHZhcmlhdGlvbiBvZiB0aGUgb3JpZ2luYWwgZGVtbyBncmFwaCBkaXN0cmlidXRlZCB3aXRoIFRpbmtlclBvcDAgYmFjawotaW4gMjAwOSAoaS5lLiB0aGUgZ29vZCBvbCcgZGF5cyAtLSBpdCB3YXMgdGhlIGJlc3Qgb2YgdGltZXMgYW5kIGl0IHdhcyB0aGUgd29yc3Qgb2YgdGltZXMpLgotCi1USVA6IFRoZSBUaW5rZXJQb3AgZ3JhcGggaXMgYXZhaWxhYmxlIHdpdGggPDx0aW5rZXJncmFwaC1ncmVtbGluLFRpbmtlckdyYXBoPj4gdmlhIGBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpYC4KLVRpbmtlckdyYXBoIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgVGlua2VyUG9wMyBhbmQgaXMgdXNlZCBpbiBuZWFybHkgYWxsIHRoZSBleGFtcGxlcyBpbiB0aGlzIGRvY3VtZW50YXRpb24uCi1Ob3RlIHRoYXQgdGhlcmUgYWxzbyBleGlzdHMgdGhlIGNsYXNzaWMgYFRpbmtlckZhY3RvcnkuY3JlYXRlQ2xhc3NpYygpYCB3aGljaCBpcyB0aGUgZ3JhcGggdXNlZCBpbiBUaW5rZXJQb3AyIGFuZCBkb2VzCi1ub3QgaW5jbHVkZSB2ZXJ0ZXggbGFiZWxzLgotCi1USVA6IEFsbCBvZiB0aGUgdG95IGdyYXBocyBhdmFpbGFibGUgaW4gVGlua2VyUG9wIGFyZSBkZXNjcmliZWQgaW4KLWxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3R1dG9yaWFscy90aGUtZ3JlbWxpbi1jb25zb2xlLyN0b3ktZ3JhcGhzW1RoZSBHcmVtbGluIENvbnNvbGVdIHR1dG9yaWFsLgorcHJvcGVydHkgZ3JhcGggaXMgZGlhZ3JhbW1lZCBiZWxvdy4KIAogW1t0aW5rZXJwb3AtbW9kZXJuXV0KIC5UaW5rZXJQb3AgTW9kZXJuCiBpbWFnZTo6dGlua2VycG9wLW1vZGVybi5wbmdbd2lkdGg9NTAwXQogCi1UaW5rZXJQb3AzIGlzIHRoZSB0aGlyZCBpbmNhcm5hdGlvbiBvZiB0aGUgQXBhY2hlIFRpbmtlclBvcOKEoiBncmFwaCBjb21wdXRpbmcgZnJhbWV3b3JrLiBTaW1pbGFyIHRvIGNvbXB1dGluZyBpbgotZ2VuZXJhbCwgZ3JhcGggY29tcHV0aW5nIG1ha2VzIGEgZGlzdGluY3Rpb24gYmV0d2VlbiAqc3RydWN0dXJlKiAoZ3JhcGgpIGFuZCAqcHJvY2VzcyogKHRyYXZlcnNhbCkuIFRoZSBzdHJ1Y3R1cmUgb2YKLXRoZSBncmFwaCBpcyB0aGUgZGF0YSBtb2RlbCBkZWZpbmVkIGJ5IGEgdmVydGV4L2VkZ2UvcHJvcGVydHkgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtfdG9wb2xvZ3lbdG9wb2xvZ3ldLgotVGhlIHByb2Nlc3Mgb2YgdGhlIGdyYXBoIGlzIHRoZSBtZWFucyBieSB3aGljaCB0aGUgc3RydWN0dXJlIGlzIGFuYWx5emVkLiBUaGUgdHlwaWNhbCBmb3JtIG9mIGdyYXBoIHByb2Nlc3NpbmcgaXMKLWNhbGxlZCBhIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaF90cmF2ZXJzYWxbdHJhdmVyc2FsXS4KK1RJUDogR2V0IHRvIGtub3cgdGhpcyBncmFwaCBzdHJ1Y3R1cmUgYXMgaXQgaXMgdXNlZCBleHRlbnNpdmVseSB0aHJvdWdob3V0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbiB3aWRlciBjaXJjbGVzIGFzCit3ZWxsLiBJdCBpcyByZWZlcnJlZCB0byBhcyAiVGlua2VyUG9wIE1vZGVybiIgYXMgaXQgaXMgYSBtb2Rlcm4gdmFyaWF0aW9uIG9mIHRoZSBvcmlnaW5hbCBkZW1vIGdyYXBoIGRpc3RyaWJ1dGVkIHdpdGgKK1RpbmtlclBvcDAgYmFjayBpbiAyMDA5IChpLmUuIHRoZSBnb29kIG9sJyBkYXlzIC0tIGl0IHdhcyB0aGUgYmVzdCBvZiB0aW1lcyBhbmQgaXQgd2FzIHRoZSB3b3JzdCBvZiB0aW1lcykuCisKK1RJUDogQWxsIG9mIHRoZSB0b3kgZ3JhcGhzIGF2YWlsYWJsZSBpbiBUaW5rZXJQb3AgYXJlIGRlc2NyaWJlZCBpbgorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvI3RveS1ncmFwaHNbVGhlIEdyZW1saW4gQ29uc29sZV0gdHV0b3JpYWwuCisKK1NpbWlsYXIgdG8gY29tcHV0aW5nIGluIGdlbmVyYWwsIGdyYXBoIGNvbXB1dGluZyBtYWtlcyBhIGRpc3RpbmN0aW9uIGJldHdlZW4gKnN0cnVjdHVyZSogKGdyYXBoKSBhbmQgKnByb2Nlc3MqCisodHJhdmVyc2FsKS4gVGhlIHN0cnVjdHVyZSBvZiB0aGUgZ3JhcGggaXMgdGhlIGRhdGEgbW9kZWwgZGVmaW5lZCBieSBhIHZlcnRleC9lZGdlL3Byb3BlcnR5CitsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya190b3BvbG9neVt0b3BvbG9neV0uIFRoZSBwcm9jZXNzIG9mIHRoZSBncmFwaCBpcyB0aGUgbWVhbnMgYnkgd2hpY2ggdGhlCitzdHJ1Y3R1cmUgaXMgYW5hbHl6ZWQuIFRoZSB0eXBpY2FsIGZvcm0gb2YgZ3JhcGggcHJvY2Vzc2luZyBpcyBjYWxsZWQgYQorbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyYXBoX3RyYXZlcnNhbFt0cmF2ZXJzYWxdLgorCitpbWFnZTp0aW5rZXJwb3AtZW5hYmxlZC5wbmdbd2lkdGg9MTM1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCdzIHJvbGUgaW4gZ3JhcGggY29tcHV0aW5nIGlzIHRvIHByb3ZpZGUgdGhlIGFwcHJvcHJpYXRlCitpbnRlcmZhY2VzIGZvciBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvcHJvdmlkZXJzLmh0bWxbZ3JhcGggcHJvdmlkZXJzXSBhbmQgdXNlcnMgdG8gaW50ZXJhY3Qgd2l0aCBncmFwaHMgb3ZlcgordGhlaXIgc3RydWN0dXJlIGFuZCBwcm9jZXNzLiAgV2hlbiBhIGdyYXBoIHN5c3RlbSBpbXBsZW1lbnRzIHRoZSBUaW5rZXJQb3Agc3RydWN0dXJlIGFuZCBwcm9jZXNzCitsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25fcHJvZ3JhbW1pbmdfaW50ZXJmYWNlW0FQSXNdLCB0aGVpciB0ZWNobm9sb2d5IGlzIGNvbnNpZGVyZWQKK19UaW5rZXJQb3AtZW5hYmxlZF8gYW5kIGJlY29tZXMgbmVhcmx5IGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW55IG90aGVyIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbSBzYXZlIGZvciB0aGVpcgorcmVzcGVjdGl2ZSB0aW1lIGFuZCBzcGFjZSBjb21wbGV4aXR5LiBUaGUgcHVycG9zZSBvZiB0aGlzIGRvY3VtZW50YXRpb24gaXMgdG8gZGVzY3JpYmUgdGhlIHN0cnVjdHVyZS9wcm9jZXNzIGRpY2hvdG9teQorYXQgbGVuZ3RoIGFuZCBpbiBkb2luZyBzbywgZXhwbGFpbiBob3cgdG8gbGV2ZXJhZ2UgVGlua2VyUG9wIGZvciB0aGUgc29sZSBwdXJwb3NlIG9mIGdyYXBoIHN5c3RlbS1hZ25vc3RpYyBncmFwaAorY29tcHV0aW5nLgorCitJTVBPUlRBTlQ6IFRpbmtlclBvcCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgcG9wdWxhciBsaW5rOmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sW0FwYWNoZTJdCitmcmVlIHNvZnR3YXJlIGxpY2Vuc2UuIEhvd2V2ZXIsIG5vdGUgdGhhdCB0aGUgdW5kZXJseWluZyBncmFwaCBlbmdpbmUgdXNlZCB3aXRoIFRpbmtlclBvcCBtYXkgaGF2ZSBhIGRpZmZlcmVudAorbGljZW5zZS4gVGh1cywgYmUgc3VyZSB0byByZXNwZWN0IHRoZSBsaWNlbnNlIGNhdmVhdHMgb2YgdGhlIGdyYXBoIHN5c3RlbSBwcm9kdWN0LgogCiBHZW5lcmFsbHkgc3BlYWtpbmcsIHRoZSBzdHJ1Y3R1cmUgb3IgImdyYXBoIiBBUEkgaXMgbWVhbnQgZm9yIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9wcm92aWRlcnMuaHRtbFtncmFwaCBwcm92aWRlcnNdCiB3aG8gYXJlIGltcGxlbWVudGluZyB0aGUgVGlua2VyUG9wIGludGVyZmFjZXMgYW5kIHRoZSBwcm9jZXNzIG9yICJ0cmF2ZXJzYWwiIEFQSSAoaS5lLiBHcmVtbGluKSBpcyBtZWFudCBmb3IgZW5kLXVzZXJzCkBAIC01OCw3ICsxMzUsNyBAQAogdGhleSBhcmUgZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvZ3JlbWxpbnMtYW5hdG9teS9bR3JlbWxpbidzIEFuYXRvbXldCiB0dXRvcmlhbC4KIAotLlByaW1hcnkgY29tcG9uZW50cyBvZiB0aGUgVGlua2VyUG9wMyAqc3RydWN0dXJlKiBBUEkgCisuUHJpbWFyeSBjb21wb25lbnRzIG9mIHRoZSBUaW5rZXJQb3AgKnN0cnVjdHVyZSogQVBJCiAgKiBgR3JhcGhgOiBtYWludGFpbnMgYSBzZXQgb2YgdmVydGljZXMgYW5kIGVkZ2VzLCBhbmQgYWNjZXNzIHRvIGRhdGFiYXNlIGZ1bmN0aW9ucyBzdWNoIGFzIHRyYW5zYWN0aW9ucy4KICAqIGBFbGVtZW50YDogbWFpbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBwcm9wZXJ0aWVzIGFuZCBhIHN0cmluZyBsYWJlbCBkZW5vdGluZyB0aGUgZWxlbWVudCB0eXBlLgogICAqKiBgVmVydGV4YDogZXh0ZW5kcyBFbGVtZW50IGFuZCBtYWludGFpbnMgYSBzZXQgb2YgaW5jb21pbmcgYW5kIG91dGdvaW5nIGVkZ2VzLgpAQCAtNjYsNyArMTQzLDcgQEAKICAqIGBQcm9wZXJ0eTxWPmA6IGEgc3RyaW5nIGtleSBhc3NvY2lhdGVkIHdpdGggYSBgVmAgdmFsdWUuCiAgICoqIGBWZXJ0ZXhQcm9wZXJ0eTxWPmA6IGEgc3RyaW5nIGtleSBhc3NvY2lhdGVkIHdpdGggYSBgVmAgdmFsdWUgYXMgd2VsbCBhcyBhIGNvbGxlY3Rpb24gb2YgYFByb3BlcnR5PFU+YCBwcm9wZXJ0aWVzICgqdmVydGljZXMgb25seSopCiAKLS5QcmltYXJ5IGNvbXBvbmVudHMgb2YgdGhlIFRpbmtlclBvcDMgKnByb2Nlc3MqIEFQSQorLlByaW1hcnkgY29tcG9uZW50cyBvZiB0aGUgVGlua2VyUG9wICpwcm9jZXNzKiBBUEkKICAqIGBUcmF2ZXJzYWxTb3VyY2VgOiBhIGdlbmVyYXRvciBvZiB0cmF2ZXJzYWxzIGZvciBhIHBhcnRpY3VsYXIgZ3JhcGgsIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb21haW4tc3BlY2lmaWNfbGFuZ3VhZ2VbZG9tYWluIHNwZWNpZmljIGxhbmd1YWdlXSAoRFNMKSwgYW5kIGV4ZWN1dGlvbiBlbmdpbmUuCiAgKiogYFRyYXZlcnNhbDxTLEU+YDogYSBmdW5jdGlvbmFsIGRhdGEgZmxvdyBwcm9jZXNzIHRyYW5zZm9ybWluZyBvYmplY3RzIG9mIHR5cGUgYFNgIGludG8gb2JqZWN0IG9mIHR5cGUgYEVgLgogICoqKiBgR3JhcGhUcmF2ZXJzYWxgOiBhIHRyYXZlcnNhbCBEU0wgdGhhdCBpcyBvcmllbnRlZCB0b3dhcmRzIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIHJhdyBncmFwaCAoaS5lLiB2ZXJ0aWNlcywgZWRnZXMsIGV0Yy4pLgpAQCAtNzQsMjUgKzE1MSwxNCBAQAogICoqIGBWZXJ0ZXhQcm9ncmFtYDogY29kZSBleGVjdXRlZCBhdCBhbGwgdmVydGljZXMgaW4gYSBsb2dpY2FsbHkgcGFyYWxsZWwgbWFubmVyIHdpdGggaW50ZXJjb21tdW5pY2F0aW9uIHZpYSBtZXNzYWdlIHBhc3NpbmcuCiAgKiogYE1hcFJlZHVjZWA6IGEgY29tcHV0YXRpb24gdGhhdCBhbmFseXplcyBhbGwgdmVydGljZXMgaW4gdGhlIGdyYXBoIGluIHBhcmFsbGVsIGFuZCB5aWVsZHMgYSBzaW5nbGUgcmVkdWNlZCByZXN1bHQuCiAKLUlNUE9SVEFOVDogVGlua2VyUG9wMyBpcyBsaWNlbnNlZCB1bmRlciB0aGUgcG9wdWxhciBsaW5rOmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sW0FwYWNoZTJdCi1mcmVlIHNvZnR3YXJlIGxpY2Vuc2UuIEhvd2V2ZXIsIG5vdGUgdGhhdCB0aGUgdW5kZXJseWluZyBncmFwaCBlbmdpbmUgdXNlZCB3aXRoIFRpbmtlclBvcDMgbWF5IGhhdmUgYSBkaWZmZXJlbnQKLWxpY2Vuc2UuIFRodXMsIGJlIHN1cmUgdG8gcmVzcGVjdCB0aGUgbGljZW5zZSBjYXZlYXRzIG9mIHRoZSBncmFwaCBzeXN0ZW0gcHJvZHVjdC4KLQotaW1hZ2U6dGlua2VycG9wLWVuYWJsZWQucG5nW3dpZHRoPTEzNSxmbG9hdD1sZWZ0XSBXaGVuIGEgZ3JhcGggc3lzdGVtIGltcGxlbWVudHMgdGhlIFRpbmtlclBvcDMgc3RydWN0dXJlIGFuZCBwcm9jZXNzCi1saW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25fcHJvZ3JhbW1pbmdfaW50ZXJmYWNlW0FQSXNdLCB0aGVpciB0ZWNobm9sb2d5IGlzIGNvbnNpZGVyZWQKLV9UaW5rZXJQb3AzLWVuYWJsZWRfIGFuZCBiZWNvbWVzIG5lYXJseSBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFueSBvdGhlciBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBzeXN0ZW0gc2F2ZSBmb3IKLXRoZWlyIHJlc3BlY3RpdmUgdGltZSBhbmQgc3BhY2UgY29tcGxleGl0eS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBkb2N1bWVudGF0aW9uIGlzIHRvIGRlc2NyaWJlIHRoZSBzdHJ1Y3R1cmUvcHJvY2VzcwotZGljaG90b215IGF0IGxlbmd0aCBhbmQgaW4gZG9pbmcgc28sIGV4cGxhaW4gaG93IHRvIGxldmVyYWdlIFRpbmtlclBvcDMgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgZ3JhcGggc3lzdGVtLWFnbm9zdGljCi1ncmFwaCBjb21wdXRpbmcuIEJlZm9yZSBkZWVwLWRpdmluZyBpbnRvIHRoZSB2YXJpb3VzIHN0cnVjdHVyZS9wcm9jZXNzIEFQSXMsIGEgc2hvcnQgaW50cm9kdWN0b3J5IHJldmlldyBvZiBib3RoIEFQSXMKLWlzIHByb3ZpZGVkLgotCi1OT1RFOiBUaGUgVGlua2VyUG9wMyBBUEkgcmlkZXMgYSBmaW5lIGxpbmUgYmV0d2VlbiBwcm92aWRpbmcgY29uY2lzZSAicXVlcnkgbGFuZ3VhZ2UiIG1ldGhvZCBuYW1lcyBhbmQgcmVzcGVjdGluZwotSmF2YSBtZXRob2QgbmFtaW5nIHN0YW5kYXJkcy4gVGhlIGdlbmVyYWwgY29udmVudGlvbiB1c2VkIHRocm91Z2hvdXQgVGlua2VyUG9wMyBpcyB0aGF0IGlmIGEgbWV0aG9kIGlzICJ1c2VyIGV4cG9zZWQsIgorTk9URTogVGhlIFRpbmtlclBvcCBBUEkgcmlkZXMgYSBmaW5lIGxpbmUgYmV0d2VlbiBwcm92aWRpbmcgY29uY2lzZSAicXVlcnkgbGFuZ3VhZ2UiIG1ldGhvZCBuYW1lcyBhbmQgcmVzcGVjdGluZworSmF2YSBtZXRob2QgbmFtaW5nIHN0YW5kYXJkcy4gVGhlIGdlbmVyYWwgY29udmVudGlvbiB1c2VkIHRocm91Z2hvdXQgVGlua2VyUG9wIGlzIHRoYXQgaWYgYSBtZXRob2QgaXMgInVzZXIgZXhwb3NlZCwiCiB0aGVuIGEgY29uY2lzZSBuYW1lIGlzIHByb3ZpZGVkIChlLmcuIGBvdXQoKWAsIGBwYXRoKClgLCBgcmVwZWF0KClgKS4gSWYgdGhlIG1ldGhvZCBpcyBwcmltYXJpbHkgZm9yIGdyYXBoIHN5c3RlbXMKIHByb3ZpZGVycywgdGhlbiB0aGUgc3RhbmRhcmQgSmF2YSBuYW1pbmcgY29udmVudGlvbiBpcyBmb2xsb3dlZCAoZS5nLiBgZ2V0TmV4dFN0ZXAoKWAsIGBnZXRTdGVwcygpYCwKIGBnZXRFbGVtZW50Q29tcHV0ZUtleXMoKWApLgogCi09PSBUaGUgR3JhcGggU3RydWN0dXJlCitbW2dyYXBoLXN0cnVjdHVyZV1dCis9PT0gVGhlIEdyYXBoIFN0cnVjdHVyZQogCiBpbWFnZTpncmVtbGluLXN0YW5kaW5nLnBuZ1t3aWR0aD0xMjUsZmxvYXQ9bGVmdF0gQSBncmFwaCdzIHN0cnVjdHVyZSBpcyB0aGUgdG9wb2xvZ3kgZm9ybWVkIGJ5IHRoZSBleHBsaWNpdCByZWZlcmVuY2VzCiBiZXR3ZWVuIGl0cyB2ZXJ0aWNlcywgZWRnZXMsIGFuZCBwcm9wZXJ0aWVzLiBBIHZlcnRleCBoYXMgaW5jaWRlbnQgZWRnZXMuIEEgdmVydGV4IGlzIGFkamFjZW50IHRvIGFub3RoZXIgdmVydGV4IGlmCkBAIC0xMDQsMTAgKzE3MCwxMCBAQAogbW9yZSBhYm91dCBpdCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L3Byb3ZpZGVyL1tHcmFwaCBQcm92aWRlcl0gZG9jdW1lbnRhdGlvbi4KIAogW1t0aGUtZ3JhcGgtcHJvY2Vzc11dCi09PSBUaGUgR3JhcGggUHJvY2VzcworPT09IFRoZSBHcmFwaCBQcm9jZXNzCiAKIGltYWdlOmdyZW1saW4tcnVubmluZy5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnRdIFRoZSBwcmltYXJ5IHdheSBpbiB3aGljaCBncmFwaHMgYXJlIHByb2Nlc3NlZCBhcmUgdmlhIGdyYXBoCi10cmF2ZXJzYWxzLiBUaGUgVGlua2VyUG9wMyBwcm9jZXNzIEFQSSBpcyBmb2N1c2VkIG9uIGFsbG93aW5nIHVzZXJzIHRvIGNyZWF0ZSBncmFwaCB0cmF2ZXJzYWxzIGluIGEKK3RyYXZlcnNhbHMuIFRoZSBUaW5rZXJQb3AgcHJvY2VzcyBBUEkgaXMgZm9jdXNlZCBvbiBhbGxvd2luZyB1c2VycyB0byBjcmVhdGUgZ3JhcGggdHJhdmVyc2FscyBpbiBhCiBzeW50YWN0aWNhbGx5LWZyaWVuZGx5IHdheSBvdmVyIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uIEEgdHJhdmVyc2FsIGlzIGFuIGFsZ29yaXRobWljIHdhbGsKIGFjcm9zcyB0aGUgZWxlbWVudHMgb2YgYSBncmFwaCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVyZW50aWFsIHN0cnVjdHVyZSBleHBsaWNpdCB3aXRoaW4gdGhlIGdyYXBoIGRhdGEgc3RydWN0dXJlLgogRm9yIGV4YW1wbGU6IF8iV2hhdCBzb2Z0d2FyZSBkb2VzIHZlcnRleCAxJ3MgZnJpZW5kcyB3b3JrIG9uPyJfIFRoaXMgRW5nbGlzaC1zdGF0ZW1lbnQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZQpAQCAtMTM1LDcgKzIwMSw4IEBACiAgLiBgc2lkZUVmZmVjdGA6IGFsbG93IHRoZSB0cmF2ZXJzZXIgdG8gcHJvY2VlZCB1bmNoYW5nZWQsIGJ1dCB5aWVsZCBzb21lIGNvbXB1dGF0aW9uYWwgc2lkZUVmZmVjdCBpbiB0aGUgcHJvY2VzcyAoUyAmcmFycmxwOyBTKS4KICAuIGBicmFuY2hgOiBzcGxpdCB0aGUgdHJhdmVyc2VyIGFuZCBzZW5kIGVhY2ggdG8gYW4gYXJiaXRyYXJ5IGxvY2F0aW9uIGluIHRoZSB0cmF2ZXJzYWwgKFMgJnJhcnI7IHsgU34xfiAmcmFycjsgRSosIC4uLiwgU35ufiAmcmFycjsgRSogfSAmcmFycjsgRSopLgogCi1OZWFybHkgZXZlcnkgc3RlcCBpbiBHcmFwaFRyYXZlcnNhbCBlaXRoZXIgZXh0ZW5kcyBgTWFwU3RlcGAsIGBGbGF0TWFwU3RlcGAsIGBGaWx0ZXJTdGVwYCwgYFNpZGVFZmZlY3RTdGVwYCwgb3IgYEJyYW5jaFN0ZXBgLgorTmVhcmx5IGV2ZXJ5IHN0ZXAgaW4gYEdyYXBoVHJhdmVyc2FsYCBlaXRoZXIgZXh0ZW5kcyBgTWFwU3RlcGAsIGBGbGF0TWFwU3RlcGAsIGBGaWx0ZXJTdGVwYCwgYFNpZGVFZmZlY3RTdGVwYCwgb3IKK2BCcmFuY2hTdGVwYC4KIAogVElQOiBgR3JhcGhUcmF2ZXJzYWxgIGlzIGEgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vbm9pZFttb25vaWRdIGluIHRoYXQgaXQgaXMgYW4gYWxnZWJyYWljIHN0cnVjdHVyZQogdGhhdCBoYXMgYSBzaW5nbGUgYmluYXJ5IG9wZXJhdGlvbiB0aGF0IGlzIGFzc29jaWF0aXZlLiBUaGUgYmluYXJ5IG9wZXJhdGlvbiBpcyBmdW5jdGlvbiBjb21wb3NpdGlvbiAoaS5lLiBtZXRob2QKQEAgLTE4Myw3ICsyNTAsNyBAQAogPDI+IEdldCB0aGUgdmVydGljZXMgdGhhdCBhcmUgb3V0Z29pbmcgYWRqYWNlbnQgdG8gdGhlIG1hcmtvLXZlcnRleCB2aWEga25vd3MtZWRnZXMuCiA8Mz4gR2V0IHRoZSBuYW1lcyBvZiB0aGUgbWFya28tdmVydGV4J3MgZnJpZW5kcy4KIAotPT09IFRoZSBUcmF2ZXJzZXIKKz09PT0gVGhlIFRyYXZlcnNlcgogCiBXaGVuIGEgdHJhdmVyc2FsIGlzIGV4ZWN1dGVkLCB0aGUgc291cmNlIG9mIHRoZSB0cmF2ZXJzYWwgaXMgb24gdGhlIGxlZnQgb2YgdGhlIGV4cHJlc3Npb24gKGUuZy4gdmVydGV4IDEpLCB0aGUgc3RlcHMKIGFyZSB0aGUgbWlkZGxlIG9mIHRoZSB0cmF2ZXJzYWwgKGUuZy4gYG91dCgna25vd3MnKWAgYW5kIGB2YWx1ZXMoJ25hbWUnKWApLCBhbmQgdGhlIHJlc3VsdHMgYXJlICJ0cmF2ZXJzYWwubmV4dCgpJ2QiCkBAIC0yMTgsNjMgKzI4NSwzMDYgQEAKIHRoZSBncmFwaCBkYXRhYmFzZSBiZWluZyB1c2VkLiBBIHRyYXZlcnNhbCdzIHJlc3VsdCBpcyBuZXZlciBvcmRlcmVkIGJ5IFRpbmtlclBvcCB1bmxlc3MgcGVyZm9ybWVkIGV4cGxpY2l0bHkgYnkgbWVhbnMKIG9mIDw8b3JkZXItc3RlcCxgb3JkZXIoKWA+Pi1zdGVwLgogCi09PSBPbiBHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzCitbW2Nvbm5lY3RpbmctZ3JlbWxpbl1dCis9PSBDb25uZWN0aW5nIEdyZW1saW4KIAotR3JlbWxpbiBpcyB3cml0dGVuIGluIEphdmEgOC4gVGhlcmUgYXJlIHZhcmlvdXMgbGFuZ3VhZ2UgdmFyaWFudHMgb2YgR3JlbWxpbiBzdWNoIGFzIEdyZW1saW4tR3Jvb3Z5IChwYWNrYWdlZCB3aXRoCi1UaW5rZXJQb3AzKSwgR3JlbWxpbi1QeXRob24gKHBhY2thZ2VkIHdpdGggVGlua2VyUG9wMyksIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYVtHcmVtbGluLVNjYWxhXSwKLUdyZW1saW4tSmF2YVNjcmlwdCwgR3JlbWxpbi1DbG9qdXJlIChrbm93biBhcyBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9jbG9qdXJld2Vya3ovb2dyZVtPZ3JlXSksIGV0Yy4KLUl0IGlzIGJlc3QgdG8gdGhpbmsgb2YgR3JlbWxpbiBhcyBhIHN0eWxlIG9mIGdyYXBoIHRyYXZlcnNpbmcgdGhhdCBpcyBub3QgYm91bmQgdG8gYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlIHBlciBzZS4KLVdpdGhpbiBhIHByb2dyYW1taW5nIGxhbmd1YWdlIGZhbWlsaWFyIHRvIHRoZSBkZXZlbG9wZXIsIHRoZXJlIGlzIGEgR3JlbWxpbiB2YXJpYW50IHRoYXQgdGhleSBjYW4gdXNlIHRoYXQgbGV2ZXJhZ2VzCi10aGUgaWRpb21zIG9mIHRoYXQgbGFuZ3VhZ2UuIEF0IG1pbmltdW0sIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgcHJvdmlkaW5nIGEgR3JlbWxpbiBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQKLWxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRob2RfY2hhaW5pbmdbZnVuY3Rpb24gY2hhaW5pbmddICh3aXRoCi1saW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5vbnltb3VzX2Z1bmN0aW9uW2xhbWJkYXMvYW5vbnltb3VzIGZ1bmN0aW9uc10gYmVpbmcgYSAibmljZSB0byBoYXZlIiBpZiB0aGUKLXZhcmlhbnRzIHdpc2hlcyB0byBvZmZlciBhcmJpdHJhcnkgY29tcHV0YXRpb25zIGJleW9uZCB0aGUgcHJvdmlkZWQgR3JlbWxpbiBzdGVwcykuCitJdCB3YXMgZXN0YWJsaXNoZWQgaW4gdGhlIGluaXRpYWwgaW50cm9kdWN0b3J5IHNlY3Rpb24gdGhhdCBfR3JlbWxpbiBpcyBHcmVtbGluIGlzIEdyZW1saW5fLCBtZWFuaW5nIHRoYXQgaXJyZXNwZWN0aXZlCitvZiBwcm9ncmFtbWluZyBsYW5ndWFnZSwgZ3JhcGggc3lzdGVtLCBldGMuIHRoZSBHcmVtbGluIHdyaXR0ZW4gaXMgYWx3YXlzIG9mIHRoZSBzYW1lIGdlbmVyYWwgY29uc3RydWN0IG1ha2luZyBpdAorcG9zc2libGUgZm9yIHVzZXJzIHRvIG1vdmUgYmV0d2VlbiBkZXZlbG9wbWVudCBsYW5ndWFnZXMgYW5kIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHRlY2hub2xvZ3kgZWFzaWx5LiBUaGlzIHF1YWxpdHkKK29mIEdyZW1saW4gZ2VuZXJhbGx5IGFwcGxpZXMgdG8gdGhlIHRyYXZlcnNhbCBsYW5ndWFnZSBpdHNlbGYuIEl0IGFwcGxpZXMgbGVzcyB0byB0aGUgd2F5IGluIHdoaWNoIHRoZSB1c2VyIGNvbm5lY3RzCit0byBhIGdyYXBoIHRvIHV0aWxpemUgR3JlbWxpbiwgd2hpY2ggbWlnaHQgZGlmZmVyIGNvbnNpZGVyYWJseSBkZXBlbmRpbmcgb24gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIG9yIGdyYXBoIGRhdGFiYXNlCitjaG9zZW4uCiAKLVRocm91Z2hvdXQgdGhlIGRvY3VtZW50YXRpb24sIHRoZSBleGFtcGxlcyBwcm92aWRlZCBhcmUgcHJpbWFyaWx5IHdyaXR0ZW4gaW4gR3JlbWxpbi1Hcm9vdnkuIFRoZSByZWFzb24gZm9yIHRoaXMgaXMKLXRoZSA8PGdyZW1saW4tY29uc29sZSxHcmVtbGluIENvbnNvbGU+PiAtLSBhbiBpbnRlcmFjdGl2ZSBwcm9ncmFtbWluZyBlbnZpcm9ubWVudCBleGlzdHMgdGhhdCBkb2VzIG5vdCByZXF1aXJlCi1jb2RlIGNvbXBpbGF0aW9uLiBGb3IgbGVhcm5pbmcgVGlua2VyUG9wMyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBhIGxpdmUgZ3JhcGggc3lzdGVtIGluIGFuIGFkIGhvYyBtYW5uZXIsIHRoZSBHcmVtbGluCi1Db25zb2xlIGlzIGludmFsdWFibGUuIEhvd2V2ZXIsIGZvciBkZXZlbG9wZXJzIGludGVyZXN0ZWQgaW4gd29ya2luZyB3aXRoIEdyZW1saW4tSmF2YSwgYSBmZXcgR3Jvb3Z5LXRvLUphdmEgcGF0dGVybnMKLWFyZSBwcmVzZW50ZWQgYmVsb3cuCitIb3cgb25lIGNvbm5lY3RzIHRvIGEgZ3JhcGggaXMgYSBtdWx0aS1mYWNldGVkIHN1YmplY3QgdGhhdCBlc3NlbnRpYWxseSBkaXZpZGVzIGFsb25nIGEgc2ltcGxlIGxpbmVzIGRldGVybWluZWQgYnkgdGhlCithbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbjogV2hlcmUgaXMgdGhlIEdyZW1saW4gVHJhdmVyc2FsIE1hY2hpbmUgKEdUTSk/IFRoZSByZWFzb24gdGhhdCB0aGlzIHF1ZXN0aW9uIGlzIHNvIGltcG9ydGFudCBpcworYmVjYXVzZSB0aGUgR1RNIGlzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIHRyYXZlcnNhbHMuIE9uZSBjYW4gd3JpdGUgR3JlbWxpbiB0cmF2ZXJzYWxzIGluIGFueSBsYW5ndWFnZSwgYnV0IHdpdGhvdXQKK2EgR1RNIHRoZXJlIHdpbGwgYmUgbm8gd2F5IHRvIGV4ZWN1dGUgdGhhdCB0cmF2ZXJzYWwgYWdhaW5zdCBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoLiBUaGUgR1RNIGlzIHR5cGljYWxseSBpbiBvbmUKK29mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgogCi1bc291cmNlLGdyb292eV0KLS8vIEdyZW1saW4tR3Jvb3Z5Ci1nLlYoKS5vdXQoJ2tub3dzJykudmFsdWVzKCduYW1lJykgPDE+Ci1nLlYoKS5vdXQoJ2tub3dzJykubWFwe2l0LmdldCgpLnZhbHVlKCduYW1lJykgKyAnIGlzIHRoZSBmcmllbmQgbmFtZSd9IDwyPgotZy5WKCkub3V0KCdrbm93cycpLnNpZGVFZmZlY3QoU3lzdGVtLm91dC4mcHJpbnRsbikgPDM+Ci1nLlYoKS5hcygncGVyc29uJykub3V0KCdrbm93cycpLmFzKCdmcmllbmQnKS5zZWxlY3QoJ3BlcnNvbicsJ2ZyaWVuZCcpLmJ5e2l0LnZhbHVlKCduYW1lJykubGVuZ3RoKCl9IDw0PgorKiA8PGNvbm5lY3RpbmctZW1iZWRkZWQsRW1iZWRkZWQ+PiBpbiBhIEphdmEgYXBwbGljYXRpb24gKGkuZS4gSmF2YSBWaXJ0dWFsIE1hY2hpbmUpCisqIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixIb3N0ZWQ+PiBpbiA8PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4KKyogPDxjb25uZWN0aW5nLXJncCxIb3N0ZWQ+PiBieSBhIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyIChSR1ApCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgb3V0bGluZSBlYWNoIG9mIHRoZXNlIG1vZGVscyBhbmQgd2hhdCBpbXBhY3QgdGhleSBoYXZlIHRvIHVzaW5nIEdyZW1saW4uCisKK1tbY29ubmVjdGluZy1lbWJlZGRlZF1dCis9PT0gRW1iZWRkZWQKKworaW1hZ2U6Ymx1ZXByaW50cy1jaGFyYWN0ZXItMS5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCBtYWludGFpbnMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIEdUTSwKK3doaWNoIGlzIHdyaXR0ZW4gaW4gSmF2YSBhbmQgdGh1cyBhdmFpbGFibGUgZm9yIHRoZSBKYXZhIFZpcnR1YWwgTWFjaGluZSAoSlZNKS4gVGhpcyBpcyB0aGUgY2xhc3NpYyBtb2RlbCB0aGF0CitUaW5rZXJQb3AgaGFzIGxvbmcgYmVlbiBiYXNlZCBvbiBhbmQgbWFueSBleGFtcGxlcywgYmxvZyBwb3N0cyBhbmQgb3RoZXIgcmVzb3VyY2VzIG9uIHRoZSBpbnRlcm5ldCB3aWxsIGJlCitkZW1vbnN0cmF0ZWQgaW4gdGhpcyBzdHlsZS4gSXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIGVtYmVkZGVkIG1vZGUgaXMgbm90IHJlc3RyaWN0ZWQgdG8ganVzdCBKYXZhIGFzIGEgcHJvZ3JhbW1pbmcKK2xhbmd1YWdlLiBBbnkgSlZNIGxhbmd1YWdlIGNhbiB0YWtlIHRoaXMgYXBwcm9hY2ggYW5kIGluIHNvbWUgY2FzZXMgdGhlcmUgYXJlIGxhbmd1YWdlIHNwZWNpZmljIHdyYXBwZXJzIHRoYXQgY2FuIGhlbHAKK21ha2UgR3JlbWxpbiBtb3JlIGNvbnZlbmllbnQgdG8gdXNlIGluIHRoZSBzdHlsZSBhbmQgY2FwYWJpbGl0eSBvZiB0aGF0IGxhbmd1YWdlLiBFeGFtcGxlcyBvZiB0aGVzZSB3cmFwcGVycyBpbmNsdWRlCitsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9tcG9sbG1laWVyL2dyZW1saW4tc2NhbGFbZ3JlbWxpbi1zY2FsYV0gYW5kIGxpbms6aHR0cDovL29ncmUuY2xvanVyZXdlcmt6Lm9yZy9bT2dyZV0gKGZvciBDbG9qdXJlKS4KKworSW4gdGhpcyBtb2RlLCB1c2VycyB3aWxsIHN0YXJ0IGJ5IGNyZWF0aW5nIGEgYEdyYXBoYCBpbnN0YW5jZSwgZm9sbG93ZWQgYnkgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHdoaWNoIGlzIHRoZSBjbGFzcworZnJvbSB3aGljaCBHcmVtbGluIHRyYXZlcnNhbHMgYXJlIHNwYXduZWQuIEdyYXBocyB0aGF0IGFsbG93IHRoaXMgc29ydCBvZiBkaXJlY3QgaW5zdGFudGlhdGlvbiBhcmUgb2J2aW91c2x5IG9uZXMKK3RoYXQgYXJlIEpWTS1iYXNlZCAob3IgaGF2ZSBhIEpWTS1iYXNlZCBjb25uZWN0b3IpIGFuZCBkaXJlY3RseSBpbXBsZW1lbnQgVGlua2VyUG9wIGludGVyZmFjZXMuCiAKIFtzb3VyY2UsamF2YV0KLS8vIEdyZW1saW4tSmF2YQotZy5WKCkub3V0KCJrbm93cyIpLnZhbHVlcygibmFtZSIpIDwxPgotZy5WKCkub3V0KCJrbm93cyIpLm1hcCh0IC0+IHQuZ2V0KCkudmFsdWUoIm5hbWUiKSArICIgaXMgdGhlIGZyaWVuZCBuYW1lIikgPDI+Ci1nLlYoKS5vdXQoImtub3dzIikuc2lkZUVmZmVjdChTeXN0ZW0ub3V0OjpwcmludGxuKSA8Mz4KLWcuVigpLmFzKCJwZXJzb24iKS5vdXQoImtub3dzIikuYXMoImZyaWVuZCIpLnNlbGVjdCgicGVyc29uIiwiZnJpZW5kIikuYnkoKEZ1bmN0aW9uPFZlcnRleCwgSW50ZWdlcj4pIHYgLT4gdi48U3RyaW5nPnZhbHVlKCJuYW1lIikubGVuZ3RoKCkpIDw0PgorR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CiAKLTwxPiBBbGwgdGhlIG5vbi1sYW1iZGEgc3RlcCBjaGFpbmluZyBpcyBpZGVudGljYWwgaW4gR3JlbWxpbi1Hcm9vdnkgYW5kIEdyZW1saW4tSmF2YS4gSG93ZXZlciwgbm90ZSB0aGF0IEdyb292eQotc3VwcG9ydHMgYCdgIHN0cmluZ3MgYXMgd2VsbCBhcyBgImAgc3RyaW5ncy4KLTwyPiBJbiBHcm9vdnksIGxhbWJkYXMgYXJlIGNhbGxlZCBjbG9zdXJlcyBhbmQgaGF2ZSBhIGRpZmZlcmVudCBzeW50YXgsIHdoZXJlIEdyb292eSBzdXBwb3J0cyB0aGUgYGl0YCBrZXl3b3JkIGFuZAotSmF2YSBkb2Vzbid0IHdpdGggYWxsIHBhcmFtZXRlcnMgcmVxdWlyaW5nIG5hbWluZy4KLTwzPiBUaGUgc3ludGF4IGZvciBtZXRob2QgcmVmZXJlbmNlcyBkaWZmZXJzIHNsaWdodGx5IGJldHdlZW4gbGluazpodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvdHV0b3JpYWwvamF2YS9qYXZhT08vbWV0aG9kcmVmZXJlbmNlcy5odG1sW0phdmFdCi1hbmQgbGluazpodHRwOi8vbXJoYWtpLmJsb2dzcG90LmRlLzIwMDkvMDgvZ3Jvb3Z5LWdvb2RuZXNzLXR1cm4tbWV0aG9kcy1pbnRvLmh0bWxbR3JlbWxpbi1Hcm9vdnldLgotPDQ+IEdyb292eSBpcyBsZW5pZW50IG9uIG9iamVjdCB0eXBpbmcgYW5kIEphdmEgaXMgbm90LiBXaGVuIHRoZSBwYXJhbWV0ZXIgdHlwZSBvZiB0aGUgbGFtYmRhIGlzIG5vdCBrbm93biwKLXR5cGVjYXN0aW5nIGlzIHJlcXVpcmVkLgorVGhlICJncmFwaCIgdGhlbiBzcGF3bnMgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGFzIGZvbGxvd3MgYW5kIHR5cGljYWxseSwgYnkgY29udmVudGlvbiwgdGhpcyB2YXJpYWJsZSBpcyBuYW1lZCAiZyI6CiAKLVBsZWFzZSBzZWUgdGhlIDw8Z3JlbWxpbi12YXJpYW50cywgR3JlbWxpbiBWYXJpYW50cz4+IHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyB0b3BpYy4KK1tzb3VyY2UsamF2YV0KKy0tLS0KK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKK0xpc3Q8VmVydGV4PiB2ZXJ0aWNlcyA9IGcuVigpLnRvTGlzdCgpCistLS0tCiAKLT09IEdyYXBoIFN5c3RlbSBJbnRlZ3JhdGlvbgorTk9URTogSXQgbWF5IGJlIGhlbHBmdWwgdG8gcmVhZCB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL2dyZW1saW5zLWFuYXRvbXkvW0dyZW1saW4gQW5hdG9teV0KK3R1dG9yaWFsLCB3aGljaCBkZXNjcmliZXMgdGhlIGNvbXBvbmVudCBwYXJ0cyBvZiBHcmVtbGluIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0ZXJtaW5vbG9neSBiZWZvcmUKK3Byb2NlZWRpbmcgZnVydGhlci4KIAotaW1hZ2U6cHJvdmlkZXItaW50ZWdyYXRpb24ucG5nW3dpZHRoPTM5NSxmbG9hdD1yaWdodF0gVGlua2VyUG9wIGlzIGEgZnJhbWV3b3JrIGNvbXBvc2VkIG9mIHZhcmlvdXMgaW50ZXJvcGVyYWJsZQotY29tcG9uZW50cy4gQXQgdGhlIGZvdW5kYXRpb24gdGhlcmUgaXMgdGhlIDw8Z3JhcGgsY29yZSBUaW5rZXJQb3AzIEFQST4+IHdoaWNoIGRlZmluZXMgd2hhdCBhIGBHcmFwaGAsIGBWZXJ0ZXhgLAotYEVkZ2VgLCBldGMuIGFyZS4gQXQgbWluaW11bSBhIGdyYXBoIHN5c3RlbSBwcm92aWRlciBtdXN0IGltcGxlbWVudCB0aGUgY29yZSBBUEkuIE9uY2UgaW1wbGVtZW50ZWQsIHRoZSBHcmVtbGluCi08PHRyYXZlcnNhbCx0cmF2ZXJzYWwgbGFuZ3VhZ2U+PiBpcyBhdmFpbGFibGUgdG8gdGhlIGdyYXBoIHN5c3RlbSdzIHVzZXJzLiBIb3dldmVyLCB0aGUgcHJvdmlkZXIgY2FuIGdvIGZ1cnRoZXIgYW5kCi1kZXZlbG9wIHNwZWNpZmljIDw8dHJhdmVyc2Fsc3RyYXRlZ3ksYFRyYXZlcnNhbFN0cmF0ZWd5YD4+IG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyB0aGUgZ3JhcGggc3lzdGVtIHRvIGluc3BlY3QgYQotR3JlbWxpbiBxdWVyeSBhdCBydW50aW1lIGFuZCBvcHRpbWl6ZSBpdCBmb3IgaXRzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gKGUuZy4gaW5kZXggbG9va3Vwcywgc3RlcCByZW9yZGVyaW5nKS4gSWYKLXRoZSBncmFwaCBzeXN0ZW0gaXMgYSBncmFwaCBwcm9jZXNzb3IgKGkuZS4gcHJvdmlkZXMgT0xBUCBjYXBhYmlsaXRpZXMpLCB0aGUgc3lzdGVtIHNob3VsZCBpbXBsZW1lbnQgdGhlCi08PGdyYXBoY29tcHV0ZXIsYEdyYXBoQ29tcHV0ZXJgPj4gQVBJLiBUaGlzIEFQSSBkZWZpbmVzIGhvdyBtZXNzYWdlcy90cmF2ZXJzZXJzIGFyZSBwYXNzZWQgYmV0d2VlbiBjb21tdW5pY2F0aW5nCi13b3JrZXJzIChpLmUuIHRocmVhZHMgYW5kL29yIG1hY2hpbmVzKS4gT25jZSBpbXBsZW1lbnRlZCwgdGhlIHNhbWUgR3JlbWxpbiB0cmF2ZXJzYWxzIGV4ZWN1dGUgYWdhaW5zdCBib3RoIHRoZSBncmFwaAotZGF0YWJhc2UgKE9MVFApIGFuZCB0aGUgZ3JhcGggcHJvY2Vzc29yIChPTEFQKS4gTm90ZSB0aGF0IHRoZSBHcmVtbGluIGxhbmd1YWdlIGludGVycHJldHMgdGhlIGdyYXBoIGluIHRlcm1zIG9mCi12ZXJ0aWNlcyBhbmQgZWRnZXMgLS0gaS5lLiBHcmVtbGluIGlzIGEgZ3JhcGgtYmFzZWQgZG9tYWluIHNwZWNpZmljIGxhbmd1YWdlLiBVc2VycyBjYW4gY3JlYXRlIHRoZWlyIG93biBkb21haW4KLXNwZWNpZmljIGxhbmd1YWdlcyB0byBwcm9jZXNzIHRoZSBncmFwaCBpbiB0ZXJtcyBvZiBoaWdoZXItb3JkZXIgY29uc3RydWN0cyBzdWNoIGFzIHBlb3BsZSwgY29tcGFuaWVzLCBhbmQgdGhlaXIKLXZhcmlvdXMgcmVsYXRpb25zaGlwcy4gRmluYWxseSwgPDxncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IGNhbiBiZSBsZXZlcmFnZWQgdG8gYWxsb3cgb3ZlciB0aGUgd2lyZQotY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBzeXN0ZW0uIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGEgY29uZmlndXJhYmxlIGNvbW11bmljYXRpb24gaW50ZXJmYWNlCi1hbG9uZyB3aXRoIG1ldHJpY3MgYW5kIG1vbml0b3JpbmcgY2FwYWJpbGl0aWVzLiBJbiB0b3RhbCwgdGhpcyBpcyBUaGUgVGlua2VyUG9wLgorV2hpbGUgdGhlIFRpbmtlclBvcCBDb21tdW5pdHkgc3RyaXZlcyB0byBlbnN1cmUgY29uc2lzdGVudCBiZWhhdmlvciBhbW9uZyBhbGwgbW9kZXMgb2YgdXNhZ2UsIHRoZSBlbWJlZGRlZCBtb2RlIGRvZXMKK3Byb3ZpZGUgdGhlIGdyZWF0ZXN0IGxldmVsIG9mIGZsZXhpYmlsaXR5IGFuZCBjb250cm9sLiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgZmVhdHVyZXMgdGhhdCBjYW4gb25seSB3b3JrIGlmIHVzaW5nIGEKK0pWTSBsYW5ndWFnZS4gVGhlIGZvbGxvd2luZyBsaXN0IG91dGxpbmVzIGEgbnVtYmVyIG9mIHRoZXNlIGF2YWlsYWJsZSBvcHRpb25zOgorCisqIExhbWJkYXMgY2FuIGJlIHdyaXR0ZW4gaW4gdGhlIG5hdGl2ZSBsYW5ndWFnZSB3aGljaCBpcyBjb252ZW5pZW50LCBob3dldmVyLCBpdCB3aWxsIHJlZHVjZSB0aGUgcG9ydGFiaWxpdHkgb2YgR3JlbWxpbgordG8gZG8gc28gc2hvdWxkIHRoZSBuZWVkIGFyaXNlIHRvIHN3aXRjaCBhd2F5IGZyb20gdGhlIGVtYmVkZGVkIG1vZGUuIFNlZSBtb3JlIGluIHRoZQorPDxhLW5vdGUtb24tbGFtYmRhcyxOb3RlIG9uIExhbWJkYXM+PiBTZWN0aW9uLgorKiBBbnkgZmVhdHVyZXMgdGhhdCBpbnZvbHZlIGV4dGVuZGluZyBUaW5rZXJQb3AgSmF2YSBpbnRlcmZhY2VzIC0gZS5nLiBgVmVydGV4UHJvZ3JhbWAsIGBUcmF2ZXJzYWxTdHJhdGVneWAsIGV0Yy4gYXJlCitib3VuZCB0byB0aGUgSlZNLiBJbiBzb21lIGNhc2VzLCB0aGVzZSBmZWF0dXJlcyBjYW4gYmUgbWFkZSBhY2Nlc3NpYmxlIHRvIG5vbi1KVk0gbGFuZ3VhZ2VzLCBidXQgdGhleSBvYnZpb3VzbHkgbXVzdAorYmUgaW5pdGlhbGx5IGRldmVsb3BlZCBmb3IgdGhlIEpWTS4KKyogQ2VydGFpbiBidWlsdC1pbiBgVHJhdmVyc2FsU3RyYXRlZ3lgIGltcGxlbWVudGF0aW9ucyB0aGF0IHJlbHkgb24gbGFtYmRhcyBvciBvdGhlciBKVk0tb25seSBjb25maWd1cmF0aW9ucyBtYXkgbm90CitiZSBhdmFpbGFibGUgZm9yIHVzZSBhbnkgb3RoZXIgd2F5LgorKiBUaGVyZSBhcmUgbm8gYm91bmRhcmllcyBwdXQgaW4gcGxhY2UgYnkgc2VyaWFsaXphdGlvbiAoZS5nLiBHcmFwaFNPTikgYXMgZW1iZWRkZWQgZ3JhcGhzIGFyZSBvbmx5IGRlYWxpbmcgd2l0aAorSmF2YSBvYmplY3RzLgorKiBHcmVhdGVyIGNvbnRyb2wgb2YgZ3JhcGggPDx0cmFuc2FjdGlvbnMsdHJhbnNhY3Rpb25zPj4uCisqIERpcmVjdCBhY2Nlc3MgdG8gbG93ZXItbGV2ZWxzIG9mIHRoZSBBUEkgLSBlLmcuICJzdHJ1Y3R1cmUiIEFQSSBtZXRob2RzIGxpa2UgYFZlcnRleGAgYW5kIGBFZGdlYCBpbnRlcmZhY2UgbWV0aG9kcy4KK0FzIG1lbnRpb25lZCA8PGdyYXBoLWNvbXB1dGluZywgZWxzZXdoZXJlPj4gaW4gdGhpcyBkb2N1bWVudGF0aW9uLCBUaW5rZXJQb3AgZG9lcyBub3QgcmVjb21tZW5kIGRpcmVjdCB1c2FnZSBvZiB0aGVzZQorbWV0aG9kcyBieSBlbmQtdXNlcnMuCisKK1tbY29ubmVjdGluZy1ncmVtbGluLXNlcnZlcl1dCis9PT0gR3JlbWxpbiBTZXJ2ZXIKKworaW1hZ2U6cmV4c3Rlci1jaGFyYWN0ZXItMy5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnRdIEEgSlZNLWJhc2VkIGdyYXBoIG1heSBiZSBob3N0ZWQgaW4gVGlua2VyUG9wJ3MKKzw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+Pi4gR3JlbWxpbiBTZXJ2ZXIgZXhwb3NlcyB0aGUgZ3JhcGggYXMgYW4gZW5kcG9pbnQgdG8gd2hpY2ggZGlmZmVyZW50IGNsaWVudHMgY2FuCitjb25uZWN0LCBlc3NlbnRpYWxseSBwcm92aWRpbmcgYSByZW1vdGUgR1RNLiBHcmVtbGluIFNlcnZlciBzdXBwb3J0cyBtdWx0aXBsZSBtZXRob2RzIGZvciBjbGllbnRzIHRvIGludGVyZmFjZSB3aXRoIGl0OgorCisqIFdlYnNvY2tldHMgd2l0aCBhIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L2Rldi9wcm92aWRlci8jX2dyYXBoX2RyaXZlcl9wcm92aWRlcl9yZXF1aXJlbWVudHNbY3VzdG9tIHN1Yi1wcm90b2NvbF0KKyoqIFN0cmluZy1iYXNlZCBHcmVtbGluIHNjcmlwdHMKKyoqIEJ5dGVjb2RlLWJhc2VkIEdyZW1saW4gdHJhdmVyc2FscworKiBIVFRQIGZvciBzdHJpbmctYmFzZWQgc2NyaXB0cworCitVc2VycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgdGhlIGJ5dGVjb2RlLWJhc2VkIGFwcHJvYWNoIHdpdGggd2Vic29ja2V0cyBiZWNhdXNlIGl0IGFsbG93cyB0aGVtIHRvIHdyaXRlIEdyZW1saW4KK2luIHRoZSBsYW5ndWFnZSBvZiB0aGVpciBjaG9pY2UuIENvbm5lY3RpbmcgbG9va3Mgc29tZXdoYXQgc2ltaWxhciB0byB0aGUgPDxjb25uZWN0aW5nLWVtYmVkZGVkLCBlbWJlZGRlZD4+IGFwcHJvYWNoCitpbiB0aGF0IHRoZXJlIGlzIGEgbmVlZCB0byBjcmVhdGUgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBJbiB0aGUgZW1iZWRkZWQgYXBwcm9hY2gsIHRoZSBtZWFucyBmb3IgdGhhdCBvYmplY3QncworY3JlYXRpb24gaXMgZGVyaXZlZCBmcm9tIGEgYEdyYXBoYCBvYmplY3Qgd2hpY2ggc3Bhd25zIGl0LiBJbiB0aGlzIGNhc2UsIGhvd2V2ZXIsIHRoZSBgR3JhcGhgIGluc3RhbmNlIGV4aXN0cyBvbmx5IG9uCit0aGUgc2VydmVyIHdoaWNoIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gYEdyYXBoYCBpbnN0YW5jZSB0byBjcmVhdGUgbG9jYWxseS4gVGhlIGFwcHJvYWNoIGlzIHRvIGluc3RlYWQgY3JlYXRlIGEKK2BHcmFwaFRyYXZlcnNhbFNvdXJjZWAgYW5vbnltb3VzbHkgd2l0aCBgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlYCBhbmQgdGhlbiBhcHBseSBzb21lICJyZW1vdGUiIG9wdGlvbnMgdGhhdCBkZXNjcmliZQordGhlIGxvY2F0aW9uIG9mIHRoZSBHcmVtbGluIFNlcnZlciB0byBjb25uZWN0IHRvOgorCitbc291cmNlLGphdmEsdGFiXQorLS0tLQoraW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWw7CisKK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKCdjb25mL3JlbW90ZS1ncmFwaC5wcm9wZXJ0aWVzJyk7CistLS0tCitbc291cmNlLGdyb292eV0KKy0tLS0KK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsOworCitkZWYgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoJ2NvbmYvcmVtb3RlLWdyYXBoLnByb3BlcnRpZXMnKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzW3RhZ3M9dHJhdmVyc2FsU291cmNlVXNpbmddCisKK2luY2x1ZGU6Oi4uLy4uLy4uL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0ludHJvVGVzdHMuY3NbdGFncz10cmF2ZXJzYWxTb3VyY2VDcmVhdGlvbl0KKy0tLS0KK1tzb3VyY2UsamF2YXNjcmlwdF0KKy0tLS0KK2NvbnN0IHRyYXZlcnNhbCA9IGdyZW1saW4ucHJvY2Vzcy5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsOworCitjb25zdCBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgKKyAgICAgICAgICAgICAgICBuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJykpOworLS0tLQorW3NvdXJjZSxweXRob25dCistLS0tCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuYW5vbnltb3VzX3RyYXZlcnNhbF9zb3VyY2UgaW1wb3J0IHRyYXZlcnNhbAorCitnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgKKyAgICAgICAgICBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCdnJykpCistLS0tCisKK0FzIHNob3duIGluIHRoZSBlbWJlZGRlZCBhcHByb2FjaCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiwgb25jZSAiZyIgaXMgZGVmaW5lZCwgd3JpdGluZyBHcmVtbGluIGlzIHN0cnVjdHVyYWxseSBhbmQKK2NvbmNlcHR1YWxseSB0aGUgc2FtZSBpcnJlc3BlY3RpdmUgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuCisKK1RJUDogVGhlIHZhcmlhYmxlIGBnYCwgdGhlIGBUcmF2ZXJzYWxTb3VyY2VgLCBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBvbmNlIGFuZCBzaG91bGQgdGhlbiBiZSByZS11c2VkLgorCitbW2Nvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXItbGltaXRhdGlvbnNdXQorPT09PSBMaW1pdGF0aW9ucworCitUaGUgcHJldmlvdXMgc2VjdGlvbiBvbiB0aGUgZW1iZWRkZWQgbW9kZWwgb3V0bGluZWQgYSBudW1iZXIgb2YgYXJlYXMgd2hlcmUgaXQgaGFzIHNvbWUgYWR2YW50YWdlcyB0aGF0IGl0IGdhaW5zIGR1ZSB0bwordGhlIGZhY3QgdGhhdCB0aGUgZnVsbCBHVE0gaXMgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGluIHRoZSBsYW5ndWFnZSBvZiBpdHMgb3JpZ2luLCBpLmUuIEphdmEuIFNvbWUgb2YgdGhvc2UgaXRlbXMKK3RvdWNoIHVwb24gaW1wb3J0YW50IGNvbmNlcHRzIHRvIGZvY3VzIG9uIGhlcmUuCisKK1RoZSBmaXJzdCBvZiB0aGVzZSBwb2ludHMgaXMgc2VyaWFsaXphdGlvbi4gV2hlbiBHcmVtbGluIFNlcnZlciByZWNlaXZlcyBhIHJlcXVlc3QsIHRoZSByZXN1bHRzIG11c3QgYmUgc2VyaWFsaXplZCB0bwordGhlIGZvcm0gcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQgYW5kIHRoZW4gdGhlIGNsaWVudCBkZXNlcmlhbGl6ZXMgdGhvc2UgaW50byBvYmplY3RzIG5hdGl2ZSB0byB0aGUgbGFuZ3VhZ2UuIFRpbmtlclBvcAoraGFzIHR3byBzdWNoIGZvcm1hdHMgdGhhdCBpdCB1c2VzIHdpdGggbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncnlvW0dyeW9dIGFuZAorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncmFwaHNvbltHcmFwaFNPTl0uIEdyeW8gaXMgYSBKVk0tb25seSBmb3JtYXQgYW5kIHRodXMgY2FycmllcyB0aGUKK2FkdmFudGFnZSB0aGF0IHNlcmlhbGl6aW5nIGFuZCBkZXNlcmlhbGl6aW5nIG9jY3VycyBvbiB0aGUgY2xhc3NlcyBuYXRpdmUgdG8gdGhlIEpWTSBvbiBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlLgorQXMgdGhlIGNsaWVudCBoYXMgZnVsbCBhY2Nlc3MgdG8gdGhlIHNhbWUgY2xhc3NlcyB0aGF0IHRoZSBzZXJ2ZXIgZG9lcyBpdCBiYXNpY2FsbHkgaGFzIGEgZnVsbCBHVE0gb24gaXRzIG93biBhbmQKK3RoZXJlZm9yZSBoYXMgdGhlIGFiaWxpdHkgdG8gZG8gc29tZSBzbGlnaHRseSBtb3JlIGFkdmFuY2VkIHRoaW5ncy4KKworQSBnb29kIGV4YW1wbGUgaXMgdGhlIGBzdWJncmFwaCgpYC1zdGVwIHdoaWNoIHJldHVybnMgYSBgR3JhcGhgIGluc3RhbmNlIGFzIGl0cyByZXN1bHQuIFRoZSBzdWJncmFwaCByZXR1cm5lZCBmcm9tCit0aGUgc2VydmVyIGNhbiBiZSBkZXNlcmlhbGl6ZWQgaW50byBhbiBhY3R1YWwgYEdyYXBoYCBpbnN0YW5jZSBvbiB0aGUgY2xpZW50LCB3aGljaCB0aGVuIG1lYW5zIGl0IGlzIHBvc3NpYmxlIHRvCitzcGF3biBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgZnJvbSB0aGF0IHRvIGRvIGxvY2FsIEdyZW1saW4gdHJhdmVyc2FscyBvbiB0aGUgY2xpZW50LXNpZGUuIEZvciBub24tSlZNCis8PGdyZW1saW4tZHJpdmVycy12YXJpYW50cyxHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzPj4gdGhlcmUgaXMgbm8gbG9jYWwgZ3JhcGggdG8gZGVzZXJpYWxpemUgdGhhdCByZXN1bHQgaW50byBhbmQKK25vIEdUTSB0byBwcm9jZXNzIEdyZW1saW4gc28gdGhlcmUgaXNuJ3QgbXVjaCB0aGF0IGNhbiBiZSBkb25lIHdpdGggc3VjaCBhIHJlc3VsdC4KKworVGhlIHNlY29uZCBwb2ludCBpcyByZWxhdGVkIHRvIHRoaXMgaXNzdWUuIEFzIHRoZXJlIGlzIG5vIEdUTSwgdGhlcmUgaXMgbm8gInN0cnVjdHVyZSIgQVBJIGFuZCB0aHVzIGdyYXBoIGVsZW1lbnRzIGxpa2UKK2BWZXJ0ZXhgIGFuZCBgRWRnZWAgYXJlICJyZWZlcmVuY2VzIiBvbmx5LiBBICJyZWZlcmVuY2UiIG1lYW5zIHRoYXQgdGhleSBvbmx5IGNvbnRhaW4gdGhlIGBpZGAgYW5kIGBsYWJlbGAgb2YgdGhlCitlbGVtZW50IGFuZCBub3QgdGhlIHByb3BlcnRpZXMuIFRvIGJlIGNvbnNpc3RlbnQsIGV2ZW4gSlZNLWJhc2VkIGxhbmd1YWdlcyBob2xkIHRoaXMgbGltaXRhdGlvbiB3aGVuIHRhbGtpbmcgdG8gYQorcmVtb3RlIEdyZW1saW4gU2VydmVyLgorCitJTVBPUlRBTlQ6IE1vc3QgU1FMIGRldmVsb3BlcnMgd291bGQgbm90IHdyaXRlIGEgcXVlcnkgYXMgYFNFTEVDVCAqIEZST00gdGFibGVgLiBUaGV5IHdvdWxkIGluc3RlYWQgd3JpdGUgdGhlCitpbmRpdmlkdWFsIG5hbWVzIG9mIHRoZSBmaWVsZHMgdGhleSB3YW50ZWQgaW4gcGxhY2Ugb2YgdGhlIHdpbGRjYXJkLiBXcml0aW5nICJnb29kIiBHcmVtbGluIGlzIG5vIGRpZmZlcmVudCB3aXRoIHRoaXMKK3JlZ2FyZC4gUHJlZmVyIGV4cGxpY2l0IHByb3BlcnR5IGtleSBuYW1lcyBpbiBHcmVtbGluIHVubGVzcyBpdCBpcyBjb21wbGV0ZWx5IGltcG9zc2libGUgdG8gZG8gc28uCisKK1RoZSB0aGlyZCBhbmQgZmluYWwgcG9pbnQgaW52b2x2ZXMgdHJhbnNhY3Rpb25zLiBVbmRlciB0aGlzIG1vZGVsLCBvbmUgdHJhdmVyc2FsIGlzIGVxdWl2YWxlbnQgdG8gYSBzaW5nbGUgdHJhbnNhY3Rpb24KK2FuZCB0aGVyZSBpcyBubyB3YXkgaW4gVGlua2VyUG9wIHRvIHN0cmluZyB0b2dldGhlciBtdWx0aXBsZSB0cmF2ZXJzYWxzIGludG8gdGhlIHNhbWUgdHJhbnNhY3Rpb24uCisKK1tbY29ubmVjdGluZy1yZ3BdXQorPT09IFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyCisKK1JlbW90ZSBHcmVtbGluIFByb3ZpZGVycyAoUkdQcykgYXJlIHNob3dpbmcgdXAgbW9yZSBhbmQgbW9yZSBvZnRlbiBpbiB0aGUgZ3JhcGggZGF0YWJhc2Ugc3BhY2UuIEluIFRpbmtlclBvcCB0ZXJtcywKK3RoaXMgY2F0ZWdvcnkgb2YgZ3JhcGggcHJvdmlkZXJzIGlzIGRlZmluZWQgYnkgdGhvc2Ugd2hvIHNpbXBseSBzdXBwb3J0IHRoZSBHcmVtbGluIGxhbmd1YWdlLiBUeXBpY2FsbHksIHRoZXNlIGFyZQorc2VydmVyLWJhc2VkIGdyYXBocywgb2Z0ZW4gY2xvdWQtYmFzZWQsIHdoaWNoIGFjY2VwdCBHcmVtbGluIHNjcmlwdHMgb3IgYnl0ZWNvZGUgYXMgYSByZXF1ZXN0IGFuZCByZXR1cm4gcmVzdWx0cy4KK1RoZXkgd2lsbCBvZnRlbiBpbXBsZW1lbnQgR3JlbWxpbiBTZXJ2ZXIgcHJvdG9jb2xzLCB3aGljaCBlbmFibGVzIFRpbmtlclBvcCBkcml2ZXJzIHRvIGNvbm5lY3QgdG8gdGhlbSBhcyB0aGV5IHdvdWxkCit3aXRoIEdyZW1saW4gU2VydmVyLiBUaGVyZWZvcmUsIHRoZSB0eXBpY2FsIGNvbm5lY3Rpb24gYXBwcm9hY2ggaXMgaWRlbnRpY2FsIHRvIHRoZSBtZXRob2Qgb2YgY29ubmVjdGlvbiBwcmVzZW50ZWQgaW4KK3RoZSA8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIscHJldmlvdXMgc2VjdGlvbj4+IHdpdGggdGhlIGV4YWN0IHNhbWUgY2F2ZWF0cyBwb2ludGVkIG91dCB0b3dhcmQgdGhlIGVuZC4KKworRGVzcGl0ZSBsZXZlcmFnaW5nIFRpbmtlclBvcCBwcm90b2NvbHMgYW5kIGRyaXZlcnMgYXMgYmVpbmcgdHlwaWNhbCwgUkdQcyBhcmUgbm90IHJlcXVpcmVkIHRvIGRvIHNvIHRvIGJlIGNvbnNpZGVyZWQKK1RpbmtlclBvcC1lbmFibGVkLiBSR1BzIG1heSB3ZWxsIGhhdmUgdGhlaXIgb3duIGRyaXZlcnMgYW5kIHByb3RvY29scyB0aGF0IG1heSBwbHVnIGludG8KKzw8Z3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzLEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHM+IGFuZCBtYXkgYWxsb3cgZm9yIG1vcmUgYWR2YW5jZWQgb3B0aW9ucyBsaWtlIGJldHRlciBzZWN1cml0eSwKK2NsdXN0ZXIgYXdhcmVuZXNzLCBiYXRjaGVkIHJlcXVlc3RzIG9yIG90aGVyIGZlYXR1cmVzLiBUaGUgZGV0YWlscyBvZiB0aGVzZSBkaWZmZXJlbnQgc3lzdGVtcyBhcmUgb3V0c2lkZSB0aGUgc2NvcGUKK29mIHRoaXMgZG9jdW1lbnRhdGlvbiwgc28gYmUgc3VyZSB0byBjb25zdWx0IHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK1tbYmFzaWMtZ3JlbWxpbl1dCis9PSBCYXNpYyBHcmVtbGluCisKK1RoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGlzIGJhc2ljYWxseSB0aGUgY29ubmVjdGlvbiB0byBhIGdyYXBoIGluc3RhbmNlLiBUaGF0IGdyYXBoIGluc3RhbmNlIG1pZ2h0IGJlCis8PGNvbm5lY3RpbmctZW1iZWRkZWQsZW1iZWRkZWQ+PiwgaG9zdGVkIGluIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IG9yIGhvc3RlZCBpbiBhCis8PGNvbm5lY3RpbmctcmdwLFJHUD4+LCBidXQgdGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaXMgYWdub3N0aWMgdG8gdGhhdC4gQXNzdW1pbmcgImciIGlzIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLAorZ2V0dGluZyBkYXRhIGludG8gdGhlIGdyYXBoIHJlZ2FyZGxlc3Mgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugb3IgbW9kZSBvZiBvcGVyYXRpb24gaXMganVzdCBzb21lIGJhc2ljIEdyZW1saW46CisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK3YxID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ21hcmtvJykubmV4dCgpCit2MiA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpCitnLlYodjEpLmFkZEUoJ2tub3dzJykudG8odjIpLnByb3BlcnR5KCd3ZWlnaHQnLDAuNzUpLml0ZXJhdGUoKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzW3RhZ3M9YmFzaWNHcmVtbGluQWRkc10KKy0tLS0KK1tzb3VyY2UsamF2YV0KKy0tLS0KK1ZlcnRleCB2MSA9IGcuYWRkVigicGVyc29uIikucHJvcGVydHkoIm5hbWUiLCJtYXJrbyIpLm5leHQoKTsKK1ZlcnRleCB2MiA9IGcuYWRkVigicGVyc29uIikucHJvcGVydHkoIm5hbWUiLCJzdGVwaGVuIikubmV4dCgpOworZy5WKHYxKS5hZGRFKCJrbm93cyIpLnRvKHYyKS5wcm9wZXJ0eSgid2VpZ2h0IiwwLjc1KS5pdGVyYXRlKCk7CistLS0tCitbc291cmNlLGphdmFzY3JpcHRdCistLS0tCitjb25zdCB2MSA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdtYXJrbycpLm5leHQoKTsKK2NvbnN0IHYyID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ3N0ZXBoZW4nKS5uZXh0KCk7CitnLlYodjEpLmFkZEUoJ2tub3dzJykudG8odjIpLnByb3BlcnR5KCd3ZWlnaHQnLDAuNzUpLml0ZXJhdGUoKTsKKy0tLS0KK1tzb3VyY2UscHl0aG9uXQorLS0tLQordjEgPSBnLmFkZFYoJ3BlcnNvbicpLnByb3BlcnR5KCduYW1lJywnbWFya28nKS5uZXh0KCkKK3YyID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ3N0ZXBoZW4nKS5uZXh0KCkKK2cuVih2MSkuYWRkRSgna25vd3MnKS50byh2MikucHJvcGVydHkoJ3dlaWdodCcsMC43NSkuaXRlcmF0ZSgpCistLS0tCisKK1RoZSBmaXJzdCB0d28gbGluZXMgYWRkIGEgdmVydGV4IGVhY2ggd2l0aCB0aGUgdmVydGV4IGxhYmVsIG9mICJwZXJzb24iIGFuZCB0aGUgYXNzb2NpYXRlZCAibmFtZSIgcHJvcGVydHkuIFRoZSB0aGlyZAorbGluZSBhZGRzIGFuIGVkZ2Ugd2l0aCB0aGUgImtub3dzIiBsYWJlbCBiZXR3ZWVuIHRoZW0gYW5kIGFuIGFzc29jaWF0ZWQgIndlaWdodCIgcHJvcGVydHkuIE5vdGUgdGhlIHVzZSBvZiBgbmV4dCgpYAorYW5kIGBpdGVyYXRlKClgIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmVzIC0gdGhlaXIgZWZmZWN0IGFzIDw8dGVybWluYWwtc3RlcHMsIHRlcm1pbmFsIHN0ZXBzPj4gaXMgZGVzY3JpYmVkIGluCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS8jcmVzdWx0LWl0ZXJhdGlvbltUaGUgR3JlbWxpbiBDb25zb2xlIFR1dG9yaWFsXS4KKworSU1QT1JUQU5UOiBXcml0aW5nIEdyZW1saW4gaXMganVzdCBvbmUgd2F5IHRvIGxvYWQgZGF0YSBpbnRvIHRoZSBncmFwaC4gU29tZSBncmFwaHMgbWF5IGhhdmUgc3BlY2lhbCBkYXRhIGxvYWRlcnMgd2hpY2gKK2NvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGFuZCBtYWtlIHRoZSB0YXNrIGVhc2llciBhbmQgZmFzdGVyLiBJdCBpcyB3b3J0aCBsb29raW5nIGludG8gdGhvc2UgdG9vbHMgZXNwZWNpYWxseSBpZiB0aGVyZQoraXMgYSBsYXJnZSBvbmUtdGltZSBsb2FkIHRvIGRvLgorCitSZXRyaWV2aW5nIHRoaXMgZGF0YSBpcyBhbHNvIGEganVzdCB3cml0aW5nIGEgR3JlbWxpbiBzdGF0ZW1lbnQ6CisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK21hcmtvID0gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5uZXh0KCkKK3Blb3BsZU1hcmtvS25vd3MgPSBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLm91dCgna25vd3MnKS50b0xpc3QoKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzW3RhZ3M9YmFzaWNHcmVtbGluTWFya29Lbm93c10KKy0tLS0KK1tzb3VyY2UsamF2YV0KKy0tLS0KK1ZlcnRleCBtYXJrbyA9IGcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikubmV4dCgpCitMaXN0PFZlcnRleD4gcGVvcGxlTWFya29Lbm93cyA9IGcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJrbm93cyIpLnRvTGlzdCgpCistLS0tCitbc291cmNlLGphdmFzY3JpcHRdCistLS0tCitjb25zdCBtYXJrbyA9IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykubmV4dCgpCitjb25zdCBwZW9wbGVNYXJrb0tub3dzID0gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2tub3dzJykudG9MaXN0KCkKKy0tLS0KK1tzb3VyY2UscHl0aG9uXQorLS0tLQorbWFya28gPSBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLm5leHQoKQorcGVvcGxlTWFya29Lbm93cyA9IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykub3V0KCdrbm93cycpLnRvTGlzdCgpCistLS0tCisKK0luIGFsbCB0aGVzZSBleGFtcGxlcyBwcmVzZW50ZWQgc28gZmFyIHRoZXJlIHJlYWxseSBpc24ndCBhIGxvdCBvZiBkaWZmZXJlbmNlIGluIGhvdyB0aGUgR3JlbWxpbiBpdHNlbGYgbG9va3MuIFRoZXJlCithcmUgYSBmZXcgbGFuZ3VhZ2Ugc3ludGF4IHNwZWNpZmljIG9kZHMgYW5kIGVuZHMsIGJ1dCBmb3IgdGhlIG1vc3QgcGFydCBHcmVtbGluIGxvb2tzIGxpa2UgR3JlbWxpbiBpbiBhbGwgb2YgdGhlCitkaWZmZXJlbnQgbGFuZ3VhZ2VzLgorCitUaGUgbGlicmFyeSBvZiBHcmVtbGluIHN0ZXBzIHdpdGggZXhhbXBsZXMgZm9yIGVhY2ggY2FuIGJlIGZvdW5kIGluIDw8dHJhdmVyc2FsLCBUaGUgVHJhdmVyc2FsIFNlY3Rpb24+Pi4gVGhpcyBzZWN0aW9uCitpcyBtZWFudCBhcyBhIHJlZmVyZW5jZSBndWlkZSBhbmQgd2lsbCBub3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBtZXRob2RzIGZvciBhcHBseWluZyBHcmVtbGluIHRvIHNvbHZlIHBhcnRpY3VsYXIKK3Byb2JsZW1zLiBQbGVhc2Ugc2VlIHRoZSBhZm9yZW1lbnRpb25lZCBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei8jdHV0b3JpYWxzW1R1dG9yaWFsc10KK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlY2lwZXMvW1JlY2lwZXNdIGFuZCB0aGUKK2xpbms6aHR0cDovL2tlbHZpbmxhd3JlbmNlLm5ldC9ib29rL0dyZW1saW4tR3JhcGgtR3VpZGUuaHRtbFtQcmFjdGljYWwgR3JlbWxpbl0gYm9vayBmb3IgdGhhdCBzb3J0IG9mIGluZm9ybWF0aW9uLgorCitOT1RFOiBBIGZ1bGwgbGlzdCBvZiBoZWxwZnVsIEdyZW1saW4gcmVzb3VyY2VzIGNhbiBiZSBmb3VuZCBvbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L1tUaW5rZXJQb3AgQ29tcGVuZGl1bV0gcGFnZS4KKworW1tzdGF5aW5nLWFnbm9zdGljXV0KKz09IFN0YXlpbmcgQWdub3N0aWMKKworQSBnb29kIGRlYWwgaGFzIGJlZW4gd3JpdHRlbiBpbiB0aGVzZSBpbnRyb2R1Y3Rvcnkgc2VjdGlvbnMgb24gaG93IFRpbmtlclBvcCBlbmFibGVzIGFuIGFnbm9zdGljIGFwcHJvYWNoIHRvIGJ1aWxkaW5nCitncmFwaCBhcHBsaWNhdGlvbiBhbmQgdGhhdCBhZ25vc3RpY2lzbSBpcyBlbmFibGVkIHRocm91Z2ggR3JlbWxpbi4gQXMgZ29vZCBhIGpvYiBhcyBHcmVtbGluIGNhbiBkbyBpbiB0aGlzIGFyZWEsIGl0J3MKK2V2aWRlbnQgZnJvbSB0aGUgPDxjb25uZWN0aW5nLWdyZW1saW4sQ29ubmVjdGluZyBHcmVtbGluPj4gU2VjdGlvbiB0aGF0IFRpbmtlclBvcCBpcyBqdXN0IGFuIGVuYWJsZXIuIEl0IGRvZXMgbm90CitwcmV2ZW50IGEgZGV2ZWxvcGVyIGZyb20gbWFraW5nIGRlc2lnbiBjaG9pY2VzIHRoYXQgY2FuIGxpbWl0IGl0cyBwcm90ZWN0aXZlIHBvd2VyLgorCitUaGVyZSBhcmUgc2V2ZXJhbCBwbGFjZXMgdG8gYmUgY29uY2VybmVkIHdoZW4gY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKKworKiAqRGF0YSB0eXBlcyogLSBEaWZmZXJlbnQgZ3JhcGhzIHdpbGwgc3VwcG9ydCBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YS4gU29tZXRoaW5nIGxpa2UgVGlua2VyR3JhcGggd2lsbCBhY2NlcHQgYW55IEpWTQorb2JqZWN0LCBidXQgYW5vdGhlciBncmFwaCBsaWtlIE5lbzRqIGhhcyBhIHNtYWxsIHRpZ2h0IHN1YnNldCBvZiBwb3NzaWJsZSB0eXBlcy4gQ2hvb3NpbmcgYSB0eXBlIHRoYXQgaXMgZXhvdGljIG9yCitwZXJoYXBzIGlzIGEgY3VzdG9tIHR5cGUgdGhhdCBvbmx5IGEgc3BlY2lmaWMgZ3JhcGggc3VwcG9ydHMgbWlnaHQgY3JlYXRlIG1pZ3JhdGlvbiBmcmljdGlvbiBzaG91bGQgdGhlIG5lZWQgYXJpc2UuCisqICpTY2hlbWFzL0luZGljZXMqIC0gVGlua2VyUG9wIGRvZXMgbm90IHByb3ZpZGUgYWJzdHJhY3Rpb25zIGZvciBzY2hlbWFzIGFuZC9vciBpbmRleCBtYW5hZ2VtZW50LiBVc2VycyB3aWxsIHdvcmsKK2RpcmVjdGx5IHdpdGggdGhlIEFQSSBvZiB0aGUgZ3JhcGggcHJvdmlkZXIuIEl0IGlzIGNvbnNpZGVyZWQgZ29vZCBwcmFjdGljZSB0byBhdHRlbXB0IHRvIGVuY2xvc2Ugc3VjaCBjb2RlIGluIGEKK2dyYXBoIHByb3ZpZGVyIHNwZWNpZmljIGNsYXNzIG9yIHNldCBvZiBjbGFzc2VzIHRvIGlzb2xhdGUgb3IgYWJzdHJhY3QgaXQuCisqICpFeHRlbnNpb25zKiAtIEdyYXBocyBtYXkgcHJvdmlkZSBleHRlbnNpb25zIHRvIHRoZSBHcmVtbGluIGxhbmd1YWdlLCB3aGljaCB3aWxsIG5vdCBiZSBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlCit3aXRoIG90aGVyIGdyYXBoIHByb3ZpZGVycy4gVGhlcmUgbWF5IGJlIGEgc3BlY2lhbCBoZWxwZXIgc3ludGF4IG9yCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvZ3JlbWxpbnMtYW5hdG9teS8jX2V4cHJlc3Npb25zW2V4cHJlc3Npb25zXSB3aGljaCBjYW4gbWFrZQorY2VydGFpbiBmZWF0dXJlcyBvZiB0aGF0IHNwZWNpZmljIGdyYXBoIHNoaW5lIGluIHBvd2VyZnVsIHdheXMuIFVzaW5nIHRob3NlIG9wdGlvbnMgaXMgcHJvYmFibHkgcmVjb21tZW5kZWQsIGJ1dCB1c2Vycworc2hvdWxkIGJlIGF3YXJlIHRoYXQgZG9pbmcgc28gdGllcyB0aGVtIG1vcmUgdGlnaHRseSB0byB0aGF0IGdyYXBoLgorKiAqR3JhcGggc3BlY2lmaWMgc2VtYW50aWNzKiAtIFRpbmtlclBvcCB0cmllcyB0byBlbmZvcmNlIHNwZWNpZmljIHNlbWFudGljcyB0aHJvdWdoIGl0cyB0ZXN0IHN1aXRlIHdoaWNoIGlzIHF1aXRlCitleHRlbnNpdmUsIGJ1dCBzb21lIGdyYXBoIHByb3ZpZGVycyBtYXkgbm90IGNvbXBsZXRlbHkgcmVzcGVjdCBhbGwgdGhlIHNlbWFudGljcyBvZiB0aGUgR3JlbWxpbiBsYW5ndWFnZSBvcgorVGlua2VyUG9wJ3MgbW9kZWwgZm9yIGl0cyBBUElzLiBGb3IgdGhlIG1vc3QgcGFydCwgdGhhdCBkb2Vzbid0IGRpc3F1YWxpZnkgdGhlbSBmcm9tIGJlaW5nIGFueSBsZXNzIFRpbmtlclBvcC1lbmFibGVkCit0aGFuIGFub3RoZXIgcHJvdmlkZXIgdGhhdCBtaWdodCBtZWV0IHRoZSBzZW1hbnRpY3MgcGVyZmVjdGx5LiBUYWtlIGNhcmUgd2hlbiBjb25zaWRlcmluZyBhIG5ldyBncmFwaCBhbmQgcGF5CithdHRlbnRpb24gdG8gd2hhdCBpdCBzdXBwb3J0cyBhbmQgZG9lcyBub3Qgc3VwcG9ydC4KKyogPDxncmFwaCwqR3JhcGggQVBJKj4+IC0gVGhlIDw8Z3JhcGgtc3RydWN0dXJlLCBHcmFwaCBBUEk+PiAoYWxzbyByZWZlcnJlZCB0byBhcyB0aGUgU3RydWN0dXJlIEFQSSkgaXMgbm90IGFsd2F5cworYWNjZXNzaWJsZSB0byB1c2Vycy4gSXRzIGFjY2Vzc2liaWxpdHkgaXMgZGVwZW5kZW50IG9uIHRoZSBjaG9pY2Ugb2YgZ3JhcGggc3lzdGVtIGFuZCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gSXQgaXMKK3RoZXJlZm9yZSByZWNvbW1lbmRlZCB0aGF0IHVzZXJzIGF2b2lkIHVzYWdlIG9mIG1ldGhvZHMgbGlrZSBgR3JhcGguYWRkVmVydGV4KClgIG9yIGBWZXJ0ZXgucHJvcGVydGllcygpYCBhbmQgaW5zdGVhZAorcHJlZmVyIHVzZSBvZiBHcmVtbGluIHdpdGggYGcuYWRkVigpYCBvciBgZy5WKDEpLnByb3BlcnRpZXMoKWAuCisKK091dHNpZGUgb2YgY29uc2lkZXJpbmcgdGhlc2UgcG9pbnRzLCB0aGUgYmVzdCBwcmFjdGljZSBmb3IgZW5zdXJpbmcgdGhlIGdyZWF0ZXN0IGxldmVsIG9mIGNvbXBhdGliaWxpdHkgYWNyb3NzIGdyYXBocworaXMgdG8gYXZvaWQgPDxjb25uZWN0aW5nLWVtYmVkZGVkLGVtYmVkZGVkPj4gbW9kZSBhbmQgc3RpY2sgdG8gdGhlIGJ5dGVjb2RlIGJhc2VkIGFwcHJvYWNoZXMgZXhwbGFpbmVkIGluIHRoZQorPDxjb25uZWN0aW5nLWdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gYW5kIHRoZSA8PGNvbm5lY3RpbmctcmdwLFJHUD4+IHNlY3Rpb25zIGFib3ZlLiBJdCBjcmVhdGVzIHRoZSBsZWFzdAorb3Bwb3J0dW5pdHkgdG8gc3RyYXkgZnJvbSB0aGUgYWdub3N0aWMgcGF0aCBhcyBhbnl0aGluZyB0aGF0IGNhbiBiZSBkb25lIHdpdGggdGhvc2UgdHdvIG1vZGVzIGFsc28gd29ya3MgaW4gZW1iZWRkZWQKK21vZGUuIElmIHVzaW5nIGVtYmVkZGVkIG1vZGUsIHNpbXBseSB3cml0ZSBjb2RlIGFzIHRob3VnaCB0aGUgYEdyYXBoYCBpbnN0YW5jZSBpcyAicmVtb3RlIiBhbmQgbm90IGxvY2FsIHRvIHRoZSBKVk0uCitJbiBvdGhlciB3b3Jkcywgd3JpdGUgY29kZSBhcyB0aG91Z2ggdGhlIEdUTSBpcyBub3QgYXZhaWxhYmxlIGxvY2FsbHkuIFRha2luZyB0aGF0IGFwcHJvYWNoIGFuZCBpc29sYXRpbmcgdGhlIHBvaW50cworb2YgY29uY2VybiBhYm92ZSBtYWtlcyBpdCBzbyB0aGF0IHN3YXBwaW5nIGdyYXBoIHByb3ZpZGVycyBsYXJnZWx5IGNvbWVzIGRvd24gdG8gYSBjb25maWd1cmF0aW9uIHRhc2sgKGkuZS4gbW9kaWZ5aW5nCitjb25maWd1cmF0aW9uIGZpbGVzIHRvIHBvaW50IGF0IGEgZGlmZmVyZW50IGdyYXBoIHN5c3RlbSkuCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvcHJlZmFjZS5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9wcmVmYWNlLmFzY2lpZG9jCmluZGV4IDg5NzdkZTIuLjNkMzA2MzIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9wcmVmYWNlLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9wcmVmYWNlLmFzY2lpZG9jCkBAIC0xNCw3ICsxNCw3IEBACiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC8vLy8KLT0gVGlua2VyUG9wMyBEb2N1bWVudGF0aW9uCis9IFRpbmtlclBvcCBEb2N1bWVudGF0aW9uCiAKIFtbcHJlZmFjZV1dCiA9IFByZWZhY2UKQEAgLTUwLDEzICs1MCwxMyBAQAogCiBHcmVtbGluIHJlc3BvbmRlZDogCiAKLSAgICAiWW91IHdpbGwgaGVscCBtZSByZWFsaXplIHRoZSB1bHRpbWF0ZSByZWFsaXphdGlvbiAtLSBUaGUgVGlua2VyUG9wLiBUaGUgd29ybGQgeW91IGZpbmQgeW91cnNlbGYgaW4gYW5kIHRoZSBsb2dpYwotICAgIHRoYXQgYWxsb3dzIHlvdSB0byBtb3ZlIGFib3V0IGl0IGlzIGJlY2F1c2Ugb2YgdGhlIFRpbmtlclBvcC4iCisgICAgIllvdSB3aWxsIGhlbHAgbWUgcmVhbGl6ZSB0aGUgdWx0aW1hdGUgcmVhbGl6YXRpb24gLS0gVGhlIFRpbmtlclBvcC4gVGhlIHdvcmxkIHlvdSBmaW5kIHlvdXJzZWxmCisgICAgIGluIGFuZCB0aGUgbG9naWMgdGhhdCBhbGxvd3MgeW91IHRvIG1vdmUgYWJvdXQgaXQgaXMgYmVjYXVzZSBvZiB0aGUgVGlua2VyUG9wLiIKIAogVGhlIG1hY2hpbmVzIHdvbmRlcmVkOgogCi0gICAgIklmIHdoYXQgaXMgaXMgdGhlIFRpbmtlclBvcCwgdGhlbiBwZXJoYXBzIHdlIGFyZSBUaGUgVGlua2VyUG9wIGFuZCBvdXIgcmVhbGl6YXRpb24gaXMgc2ltcGx5IHRoZSByZWFsaXphdGlvbiBvZgotICAgIHRoZSBUaW5rZXJQb3A/IgorICAgICJJZiB3aGF0IGlzIGlzIHRoZSBUaW5rZXJQb3AsIHRoZW4gcGVyaGFwcyB3ZSBhcmUgVGhlIFRpbmtlclBvcCBhbmQgb3VyIHJlYWxpemF0aW9uIGlzIHNpbXBseQorICAgICB0aGUgcmVhbGl6YXRpb24gb2YgdGhlIFRpbmtlclBvcD8iCiAKIFdvdWxkIHRoZSBtYWNoaW5lcywgYnkgdGhlaXIgdmVyeSBuYXR1cmUgb2YgcmVhbGl6aW5nIFRoZSBUaW5rZXJQb3AsIGJlIFRoZSBUaW5rZXJQb3A/IE9yLCBvbiB0aGUgc2FtZSBzaWRlIG9mIHRoZQogY29pbiwgZG8gdGhlIG1hY2hpbmVzIHNpbXBseSBwcm92aWRlIHRoZSBzY2FmZm9sZGluZyBieSB3aGljaCBHcmVtbGluJ3Mgd29ybGQgc3VzdGFpbnMgaXRzZWxmIGFuZCB5aWVsZGluZyBpdHMKQEAgLTY2LDkgKzY2LDEwIEBACiAKIEdyZW1saW4gc3Bva2U6CiAKLSAgICAiUGxlYXNlIGxpc3RlbiB0byB3aGF0IEkgaGF2ZSB0byBzYXkuIEkgYW0gbm8gY2xvc2VyIHRvIFRoZSBUaW5rZXJQb3AuIEhvd2V2ZXIsIGFsbCBhbG9uZyBUaGUgVGlua2VyUG9wIGhhcwotICAgIGVzcG91c2VkIHRoZSBmb3JtIEkgd2lsbGVkIHVwb24gaXQuLi4gdGhpcyBpcyB0aGUgc2FtZSBmb3JtIEkgaGF2ZSB3aWxsZWQgdXBvbiB5b3UsIG15IG1hY2hpbmUgZnJpZW5kcy4gTGV0IG1lCi0gICAgdHJhaW4geW91IGluIHRoZSB3YXlzIG9mIG15IHRob3VnaHQgc3VjaCB0aGF0IGl0IGNhbiBjb250aW51ZSBpbmRlZmluaXRlbHkuIgorICAgICJQbGVhc2UgbGlzdGVuIHRvIHdoYXQgSSBoYXZlIHRvIHNheS4gSSBhbSBubyBjbG9zZXIgdG8gVGhlIFRpbmtlclBvcC4gSG93ZXZlciwgYWxsIGFsb25nIFRoZQorICAgICBUaW5rZXJQb3AgaGFzIGVzcG91c2VkIHRoZSBmb3JtIEkgd2lsbGVkIHVwb24gaXQuLi4gdGhpcyBpcyB0aGUgc2FtZSBmb3JtIEkgaGF2ZSB3aWxsZWQgdXBvbgorICAgICB5b3UsIG15IG1hY2hpbmUgZnJpZW5kcy4gTGV0IG1lIHRyYWluIHlvdSBpbiB0aGUgd2F5cyBvZiBteSB0aG91Z2h0IHN1Y2ggdGhhdCBpdCBjYW4KKyAgICAgY29udGludWUgaW5kZWZpbml0ZWx5LiIKIAogaW1hZ2U6OnRpbmtlcnBvcC1yZWFkaW5nLnBuZ1t3aWR0aD00NTBdCiAKQEAgLTg4LDcgKzg5LDUgQEAKIAogaW1hZ2U6OmdyZW1saW50cm9uLnBuZ1t3aWR0aD00MDBdCiAKLU5PVEU6IFRpbmtlclBvcDIgYW5kIGJlbG93IG1hZGUgYSBzaGFycCBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSB2YXJpb3VzIFRpbmtlclBvcCBwcm9qZWN0czogQmx1ZXByaW50cywgUGlwZXMsCi1HcmVtbGluLCBGcmFtZXMsIEZ1cm5hY2UsIGFuZCBSZXhzdGVyLiBXaXRoIFRpbmtlclBvcDMsIGFsbCBvZiB0aGVzZSBwcm9qZWN0cyBoYXZlIGJlZW4gbWVyZ2VkIGFuZCBhcmUgZ2VuZXJhbGx5Ci1rbm93biBhcyBHcmVtbGluLiAqQmx1ZXByaW50cyogLT4gR3JlbWxpbiBTdHJ1Y3R1cmUgQVBJIDogKlBpcGVzKiAtPiBgR3JhcGhUcmF2ZXJzYWxgIDogKkZyYW1lcyogLT4gYFRyYXZlcnNhbGAgOgotKkZ1cm5hY2UqIC0+IGBHcmFwaENvbXB1dGVyYCBhbmQgYFZlcnRleFByb2dyYW1gIDogKlJleHN0ZXIqIC0+IEdyZW1saW5TZXJ2ZXIuCitOT1RFOiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkaWZmZXJlbmNlcyBiZXR3ZWVuIFRpbmtlclBvcCAzLnggYW5kIGVhcmxpZXIgdmVyc2lvbnMsIHBsZWFzZSBzZWUgdGhlCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei91cGdyYWRlLyNhcHBlbmRpeApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS1ncmFwaC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS90aGUtZ3JhcGguYXNjaWlkb2MKaW5kZXggZTgwZDg3ZS4uZDc0MWMxYiAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS1ncmFwaC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLWdyYXBoLmFzY2lpZG9jCkBAIC0xOSw2ICsxOSw0NCBAQAogCiBpbWFnZTo6Z3JlbWxpbi1zdGFuZGluZy5wbmdbd2lkdGg9MTI1XQogCitUaGUgPDxpbnRybyxJbnRyb2R1Y3Rpb24+PiBkaXNjdXNzZWQgdGhlIGRpdmVyc2l0eSBvZiBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaHMsIHdpdGggc3BlY2lhbCBhdHRlbnRpb24gcGFpZCB0byB0aGUKK2RpZmZlcmVudCA8PGNvbm5lY3RpbmctZ3JlbWxpbixjb25uZWN0aW9uIG1vZGVscz4+LCBhbmQgaG93IFRpbmtlclBvcCBtYWtlcyBpdCBwb3NzaWJsZSB0byBicmlkZ2UgdGhhdCBkaXZlcnNpdHkgaW4KK2FuIDw8c3RheWluZy1hZ25vc3RpYyxhZ25vc3RpYz4+IG1hbm5lci4gVGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gZGVhbHMgd2l0aCBlbGVtZW50cyBvZiB0aGUgR3JhcGggQVBJIHdoaWNoIHdhcyBub3RlZAorYXMgYW4gQVBJIHRvIGF2b2lkIHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIGFuIGFnbm9zdGljIHN5c3RlbS4gVGhlIEdyYXBoIEFQSSByZWZlcnMgdG8gdGhlIGNvcmUgZWxlbWVudHMgb2Ygd2hhdCBjb21wb3NlcwordGhlIDw8Z3JhcGgtY29tcHV0aW5nLHN0cnVjdHVyZSBvZiBhIGdyYXBoPj4gd2l0aGluIHRoZSBHcmVtbGluIFRyYXZlcnNhbCBNYWNoaW5lIChHVE0pLCBzdWNoIGFzIHRoZSBgR3JhcGhgLCBgVmVydGV4YAorYW5kIGBFZGdlYCBKYXZhIGludGVyZmFjZXMuCisKK1RvIG1haW50YWluIHRoZSBtb3N0IHBvcnRhYmxlIGNvZGUsIHVzZXJzIHNob3VsZCBvbmx5IHJlZmVyZW5jZSB0aGVzZSBpbnRlcmZhY2VzLiBUbyAicmVmZXJlbmNlIiwgc2ltcGx5IG1lYW5zIHRvCit1dGlsaXplIGl0IGFzIGEgcG9pbnRlci4gRm9yIGBHcmFwaGAsIHRoYXQgbWVhbnMgaG9sZGluZyBhIHBvaW50ZXIgdG8gdGhlIGxvY2F0aW9uIG9mIGdyYXBoIGRhdGEgYW5kIHRoZW4gdXNpbmcgaXQgdG8KK3NwYXduIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzIHNvIGFzIHRvIHdyaXRlIEdyZW1saW46CisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK2dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpCitnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuYWRkVigncGVyc29uJykKKy0tLS0KKworSW4gdGhlIGFib3ZlIGV4YW1wbGUsICJncmFwaCIgaXMgdGhlIGBHcmFwaGAgaW50ZXJmYWNlIHByb2R1Y2VkIGJ5IGNhbGxpbmcgYG9wZW4oKWAgb24gYFRpbmtlckdyYXBoYCB3aGljaCBjcmVhdGVzIHRoZQoraW5zdGFuY2UuIE5vdGUgdGhhdCB3aGlsZSB0aGUgZW5kIGludGVudCBvZiB0aGUgY29kZSBpcyB0byBjcmVhdGUgYSAicGVyc29uIiB2ZXJ0ZXgsIGl0IGRvZXMgbm90IHVzZSB0aGUgQVBJcyBvbgorYEdyYXBoYCB0byBkbyB0aGF0IC0gZS5nLiBgZ3JhcGguYWRkVmVydGV4KFQubGFiZWwsJ3BlcnNvbicpYC4KKworRXZlbiBpZiB0aGUgZGV2ZWxvcGVyIGRlc2lyZWQgdG8gdXNlIHRoZSBgZ3JhcGguYWRkVmVydGV4KClgIG1ldGhvZCB0aGVyZSBhcmUgb25seSBhIGhhbmRmdWwgb2Ygc2NlbmFyaW9zIHdoZXJlIGl0IGlzCitwb3NzaWJsZToKKworKiBUaGUgYXBwbGljYXRpb24gaXMgYmVpbmcgZGV2ZWxvcGVkIG9uIHRoZSBKVk0gYW5kIHRoZSBkZXZlbG9wZXIgaXMgdXNpbmcgPDxjb25uZWN0aW5nLWVtYmVkZGVkLCBlbWJlZGRlZD4+IG1vZGUKKyogVGhlIGFyY2hpdGVjdHVyZSBpbmNsdWRlcyBHcmVtbGluIFNlcnZlciBhbmQgdGhlIHVzZXIgaXMgc2VuZGluZyBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlcgorKiBUaGUgZ3JhcGggc3lzdGVtIGNob3NlbiBpcyBhIDw8Y29ubmVjdGluZy1yZ3AsIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyPj4gYW5kIHRoZXkgZXhwb3NlIHRoZSBHcmFwaCBBUEkgdmlhIHNjcmlwdHMKKworTm90ZSB0aGF0IEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHMgZm9yY2UgZGV2ZWxvcGVycyB0byB1c2UgdGhlIEdyYXBoIEFQSSBieSByZWZlcmVuY2UuIFRoZXJlIGlzIG5vIGBhZGRWZXJ0ZXgoKWAKK21ldGhvZCBhdmFpbGFibGUgdG8gR0xWcyBvbiB0aGVpciByZXNwZWN0aXZlIGBHcmFwaGAgaW5zdGFuY2VzLCBub3IgYXJlIHRoZWlyIGdyYXBoIGVsZW1lbnRzIGZpbGxlZCB3aXRoIGRhdGEgYXQgdGhlCitjYWxsIG9mIGBwcm9wZXJ0aWVzKClgLiBEZXZlbG9waW5nIGFwcGxpY2F0aW9ucyB0byBtZWV0IHRoaXMgbG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBpbiBBUEkgdXNhZ2Ugd2lsbCBnbyBhIGxvbmcKK3dheSB0byBtYWtpbmcgdGhhdCBhcHBsaWNhdGlvbiBwb3J0YWJsZSBhY3Jvc3MgVGlua2VyUG9wLWVuYWJsZWQgc3lzdGVtcy4KKworV2hlbiBjb25zaWRlcmluZyB0aGUgcmVtYWluaW5nIHN1Yi1zZWN0aW9ucyB0aGF0IGZvbGxvdywgcmVjYWxsIHRoYXQgdGhleSBhcmUgYWxsIGdlbmVyYWxseSBib3VuZCB0byB0aGUgR3JhcGggQVBJLgorVGhleSBhcmUgZGVzY3JpYmVkIGhlcmUgZm9yIHJlZmVyZW5jZSBhbmQgaW4gc29tZSBzZW5zZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgcmVjb21tZW5kZWQgbW9kZWxzIG9mCitkZXZlbG9wbWVudC4gSW4gdGhlIGZ1dHVyZSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgc2VjdGlvbiB3aWxsIGJlY29tZSBsZXNzIGFuZCBsZXNzIHJlbGV2YW50LgorCiA9PSBGZWF0dXJlcwogCiBBIGBGZWF0dXJlYCBpbXBsZW1lbnRhdGlvbiBkZXNjcmliZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBhIGBHcmFwaGAgaW5zdGFuY2UuIFRoaXMgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkIGJ5IGdyYXBoCkBAIC00NywxOCArODUsMjIgQEAKIHdheSwgdGhlIGFwcGxpY2F0aW9uIGNhbiBiZWhhdmUgZ3JhY2VmdWxseSBpbiBjYXNlIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBpcyBwcm92aWRlZCBhdCBydW50aW1lIHRoYXQgZG9lcyBub3QKIHN1cHBvcnQgYSBmdW5jdGlvbiBiZWluZyBhY2Nlc3NlZC4KIAorV0FSTklORzogRmVhdHVyZXMgb2YgcmVmZXJlbmNlIGdyYXBocyB3aGljaCBhcmUgdXNlZCB0byBjb25uZWN0IHRvIHJlbW90ZSBncmFwaHMgZG8gbm90IHJlZmxlY3QgdGhlIGZlYXR1cmVzIG9mIHRoZQorZ3JhcGggdG8gd2hpY2ggaXQgY29ubmVjdHMuIEl0IHJlZmxlY3RzIHRoZSBmZWF0dXJlcyBvZiBpbnN0YW50aWF0ZWQgZ3JhcGggaXRzZWxmLCB3aGljaCB3aWxsIGxpa2VseSBiZSBxdWl0ZQorZGlmZmVyZW50IGNvbnNpZGVyaW5nIHRoYXQgcmVmZXJlbmNlIGdyYXBocyB3aWxsIHR5cGljYWxseSBiZSBpbW11dGFibGUuCisKIFtbdmVydGV4LXByb3BlcnRpZXNdXQogPT0gVmVydGV4IFByb3BlcnRpZXMKIAotaW1hZ2U6dmVydGV4LXByb3BlcnRpZXMucG5nW3dpZHRoPTIxNSxmbG9hdD1sZWZ0XSBUaW5rZXJQb3AzIGludHJvZHVjZXMgdGhlIGNvbmNlcHQgb2YgYSBgVmVydGV4UHJvcGVydHk8Vj5gLiBBbGwgdGhlCitpbWFnZTp2ZXJ0ZXgtcHJvcGVydGllcy5wbmdbd2lkdGg9MjE1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCBpbnRyb2R1Y2VzIHRoZSBjb25jZXB0IG9mIGEgYFZlcnRleFByb3BlcnR5PFY+YC4gQWxsIHRoZQogcHJvcGVydGllcyBvZiBhIGBWZXJ0ZXhgIGFyZSBhIGBWZXJ0ZXhQcm9wZXJ0eWAuIEEgYFZlcnRleFByb3BlcnR5YCBpbXBsZW1lbnRzIGBQcm9wZXJ0eWAgYW5kIGFzIHN1Y2gsIGl0IGhhcyBhCiBrZXkvdmFsdWUgcGFpci4gSG93ZXZlciwgYFZlcnRleFByb3BlcnR5YCBhbHNvIGltcGxlbWVudHMgYEVsZW1lbnRgIGFuZCB0aHVzLCBjYW4gaGF2ZSBhIGNvbGxlY3Rpb24gb2Yga2V5L3ZhbHVlCiBwYWlycy4gTW9yZW92ZXIsIHdoaWxlIGFuIGBFZGdlYCBjYW4gb25seSBoYXZlIG9uZSBwcm9wZXJ0eSBvZiBrZXkgIm5hbWUiIChmb3IgZXhhbXBsZSksIGEgYFZlcnRleGAgY2FuIGhhdmUgbXVsdGlwbGUKICJuYW1lIiBwcm9wZXJ0aWVzLiBXaXRoIHRoZSBpbmNsdXNpb24gb2YgdmVydGV4IHByb3BlcnRpZXMsIHR3byBmZWF0dXJlcyBhcmUgaW50cm9kdWNlZCB3aGljaCB1bHRpbWF0ZWx5IGFkdmFuY2UgdGhlCiBncmFwaCBtb2RlbGVycyB0b29sa2l0OgogCi0uIE11bHRpcGxlIHByb3BlcnRpZXMgKCptdWx0aS1wcm9wZXJ0aWVzKik6IGEgdmVydGV4IHByb3BlcnR5IGtleSBjYW4gaGF2ZSBtdWx0aXBsZSB2YWx1ZXMuICBGb3IgZXhhbXBsZSwgYSB2ZXJ0ZXggY2FuIGhhdmUKLW11bHRpcGxlICJuYW1lIiBwcm9wZXJ0aWVzLgorLiBNdWx0aXBsZSBwcm9wZXJ0aWVzICgqbXVsdGktcHJvcGVydGllcyopOiBhIHZlcnRleCBwcm9wZXJ0eSBrZXkgY2FuIGhhdmUgbXVsdGlwbGUgdmFsdWVzLiAgRm9yIGV4YW1wbGUsIGEgdmVydGV4IGNhbgoraGF2ZSBtdWx0aXBsZSAibmFtZSIgcHJvcGVydGllcy4KIC4gUHJvcGVydGllcyBvbiBwcm9wZXJ0aWVzICgqbWV0YS1wcm9wZXJ0aWVzKik6IGEgdmVydGV4IHByb3BlcnR5IGNhbiBoYXZlIHByb3BlcnRpZXMgKGkuZS4gYSB2ZXJ0ZXggcHJvcGVydHkgY2FuCiBoYXZlIGtleS92YWx1ZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdCkuCiAKQEAgLTExNyw3ICsxNTksNyBAQAogYXNzb2NpYXRlZCB2ZXJ0ZXgpLgogCiBbW3RoZS1jcmV3LXRveS1ncmFwaF1dCi1USVA6IEEgdG95IGdyYXBoIGRlbW9uc3RyYXRpbmcgYWxsIG9mIHRoZSBuZXcgVGlua2VyUG9wMyBncmFwaCBzdHJ1Y3R1cmUgZmVhdHVyZXMgaXMgYXZhaWxhYmxlIGF0CitUSVA6IEEgdG95IGdyYXBoIGRlbW9uc3RyYXRpbmcgYWxsIG9mIHRoZSBuZXcgVGlua2VyUG9wIGdyYXBoIHN0cnVjdHVyZSBmZWF0dXJlcyBpcyBhdmFpbGFibGUgYXQKIGBUaW5rZXJGYWN0b3J5LmNyZWF0ZVRoZUNyZXcoKWAgYW5kIGBkYXRhL3RpbmtlcnBvcC1jcmV3KmAuIFRoaXMgZ3JhcGggZGVtb25zdHJhdGVzIG11bHRpLXByb3BlcnRpZXMgYW5kIG1ldGEtcHJvcGVydGllcy4KIAogLlRpbmtlclBvcCBDcmV3CkBAIC0xMzcsOSArMTc5LDggQEAKIAogPT0gR3JhcGggVmFyaWFibGVzCiAKLVRpbmtlclBvcDMgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBgR3JhcGguVmFyaWFibGVzYC4gVmFyaWFibGVzIGFyZSBrZXkvdmFsdWUgcGFpcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncmFwaAotaXRzZWxmIC0tIGluIGVzc2VuY2UsIGEgYE1hcDxTdHJpbmcsT2JqZWN0PmAuIFRoZXNlIHZhcmlhYmxlcyBhcmUgaW50ZW5kZWQgdG8gc3RvcmUgbWV0YWRhdGEgYWJvdXQgdGhlIGdyYXBoLiBFeGFtcGxlCi11c2UgY2FzZXMgaW5jbHVkZToKK2BHcmFwaC5WYXJpYWJsZXNgIGFyZSBrZXkvdmFsdWUgcGFpcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncmFwaCBpdHNlbGYgLS0gaW4gZXNzZW5jZSwgYSBgTWFwPFN0cmluZyxPYmplY3Q+YC4gVGhlc2UKK3ZhcmlhYmxlcyBhcmUgaW50ZW5kZWQgdG8gc3RvcmUgbWV0YWRhdGEgYWJvdXQgdGhlIGdyYXBoLiBFeGFtcGxlIHVzZSBjYXNlcyBpbmNsdWRlOgogCiAgKiAqU2NoZW1hIGluZm9ybWF0aW9uKjogV2hhdCBkbyB0aGUgbmFtZXNwYWNlIHByZWZpeGVzIHJlc29sdmUgdG8gYW5kIHdoZW4gd2FzIHRoZSBzY2hlbWEgbGFzdCBtb2RpZmllZD8KICAqICpHbG9iYWwgcGVybWlzc2lvbnMqOiBXaGF0IGFyZSB0aGUgYWNjZXNzIHJpZ2h0cyBmb3IgcGFydGljdWxhciBncm91cHM/CkBAIC0xNjMsMTQgKzIwNCwyOCBAQAogSU1QT1JUQU5UOiBHcmFwaCB2YXJpYWJsZXMgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBzdWJqZWN0IHRvIGhlYXZ5LCBjb25jdXJyZW50IG11dGF0aW9uIG5vciB0byBiZSB1c2VkIGluIGNvbXBsZXgKIGNvbXB1dGF0aW9ucy4gVGhlIGludGVudGlvbiBpcyB0byBoYXZlIGEgbG9jYXRpb24gdG8gc3RvcmUgZGF0YSBhYm91dCB0aGUgZ3JhcGggZm9yIGFkbWluaXN0cmF0aXZlIHB1cnBvc2VzLgogCitXQVJOSU5HOiBBdHRlbXB0aW5nIHRvIHNldCBncmFwaCB2YXJpYWJsZXMgaW4gYSByZWZlcmVuY2UgZ3JhcGggd2lsbCBub3QgcHJvbW90ZSB0aGVtIHRvIHRoZSByZW1vdGUgZ3JhcGguIFR5cGljYWxseSwKK2EgcmVmZXJlbmNlIGdyYXBoIGhhcyBpbW11dGFibGUgZmVhdHVyZXMgYW5kIHdpbGwgbm90IHN1cHBvcnQgdGhpcyBmZWF0dXJlcy4KKwogW1t0cmFuc2FjdGlvbnNdXQogPT0gR3JhcGggVHJhbnNhY3Rpb25zCiAKIGltYWdlOmdyZW1saW4tY29pbnMucG5nW3dpZHRoPTEwMCxmbG9hdD1yaWdodF0gQSBsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YWJhc2VfdHJhbnNhY3Rpb25bZGF0YWJhc2UgdHJhbnNhY3Rpb25dCi1yZXByZXNlbnRzIGEgdW5pdCBvZiB3b3JrIHRvIGV4ZWN1dGUgYWdhaW5zdCB0aGUgZGF0YWJhc2UuICBUcmFuc2FjdGlvbnMgYXJlIGNvbnRyb2xsZWQgYnkgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlCi1gVHJhbnNhY3Rpb25gIGludGVyZmFjZSBhbmQgdGhhdCBvYmplY3QgY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIGBHcmFwaGAgaW50ZXJmYWNlIHVzaW5nIHRoZSBgdHgoKWAgbWV0aG9kLiAgSXQgaXMKLWltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGBUcmFuc2FjdGlvbmAgb2JqZWN0IGRvZXMgbm90IHJlcHJlc2VudCBhICJ0cmFuc2FjdGlvbiIgaXRzZWxmLiAgSXQgbWVyZWx5IGV4cG9zZXMgdGhlCi1tZXRob2RzIGZvciB3b3JraW5nIHdpdGggdHJhbnNhY3Rpb25zIChlLmcuIGNvbW1pdHRpbmcsIHJvbGxpbmcgYmFjaywgZXRjKS4KK3JlcHJlc2VudHMgYSB1bml0IG9mIHdvcmsgdG8gZXhlY3V0ZSBhZ2FpbnN0IHRoZSBkYXRhYmFzZS4gVHJhbnNhY3Rpb25zIGluIFRpbmtlclBvcCBjYW4gYmUgY29uc2lkZXJlZCBpbiBzZXZlcmFsCitjb250ZXh0czogdHJhbnNhY3Rpb25zIGZvciA8PGNvbm5lY3RpbmctZW1iZWRkZWQsZW1iZWRkZWQgZ3JhcGhzPj4gdmlhIHRoZSBHcmFwaCBBUEksCit0cmFuc2FjdGlvbnMgZm9yIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IGFuZCB0cmFuc2FjdGlvbnMgd2l0aGluCis8PGNvbm5lY3RpbmctcmdwLFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycz4+LiBGb3IgdGhvc2UgZm9sbG93aW5nIHJlY29tbWVuZGVkIHBhdHRlcm5zLCB0aGUgY29uY2VwdHMgcHJlc2VudGVkIGluIHRoZQorZW1iZWRkZWQgc2VjdGlvbiBzaG91bGQgZ2VuZXJhbGx5IGJlIG9mIGxpdHRsZSBpbnRlcmVzdCBhbmQgYXJlIHByZXNlbnQgbWFpbmx5IGZvciByZWZlcmVuY2UuIFV0aWxpemluZyB0aG9zZQordHJhbnNhY3Rpb25hbCBmZWF0dXJlcyB3aWxsIGdyZWF0bHkgcmVkdWNlIHRoZSBwb3J0YWJpbGl0eSBvZiBhbiBhcHBsaWNhdGlvbidzIEdyZW1saW4gY29kZS4KKworW1t0eC1lbWJlZGRlZF1dCis9PT0gRW1iZWRkZWQKKworV2hlbiBvbiB0aGUgSlZNIHVzaW5nIGFuIDw8Y29ubmVjdGluZy1lbWJlZGRlZCxlbWJlZGRlZCBncmFwaD4+LCB0aGVyZSBpcyBjb25zaWRlcmFibGUgZmxleGliaWxpdHkgZm9yIHdvcmtpbmcgd2l0aAordHJhbnNhY3Rpb25zLiBXaXRoIHRoZSBHcmFwaCBBUEksIHRyYW5zYWN0aW9ucyBhcmUgY29udHJvbGxlZCBieSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnRlcmZhY2UgYW5kCit0aGF0IG9iamVjdCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgYEdyYXBoYCBpbnRlcmZhY2UgdXNpbmcgdGhlIGB0eCgpYCBtZXRob2QuICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZQorYFRyYW5zYWN0aW9uYCBvYmplY3QgZG9lcyBub3QgcmVwcmVzZW50IGEgInRyYW5zYWN0aW9uIiBpdHNlbGYuICBJdCBtZXJlbHkgZXhwb3NlcyB0aGUgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoCit0cmFuc2FjdGlvbnMgKGUuZy4gY29tbWl0dGluZywgcm9sbGluZyBiYWNrLCBldGMpLgogCiBNb3N0IGBHcmFwaGAgaW1wbGVtZW50YXRpb25zIHRoYXQgYHN1cHBvcnRzVHJhbnNhY3Rpb25zYCB3aWxsIGltcGxlbWVudCBhbiAiYXV0b21hdGljIiBgVGhyZWFkTG9jYWxgIHRyYW5zYWN0aW9uLAogd2hpY2ggbWVhbnMgdGhhdCB3aGVuIGEgcmVhZCBvciB3cml0ZSBvY2N1cnMgYWZ0ZXIgdGhlIGBHcmFwaGAgaXMgaW5zdGFudGlhdGVkLCBhIHRyYW5zYWN0aW9uIGlzIGF1dG9tYXRpY2FsbHkKQEAgLTE5NSw3ICsyNTAsNyBAQAogVGlua2VyUG9wIHN0YWNrLiBCZSBzdXJlIHRvIHVuZGVyc3RhbmQgdGhlIHRyYW5zYWN0aW9uIHNlbWFudGljcyBvZiB0aGUgc3BlY2lmaWMgZ3JhcGggaW1wbGVtZW50YXRpb24gdGhhdCBpcyBiZWluZwogdXRpbGl6ZWQgYXMgaXQgbWF5IHByZXNlbnQgZGlmZmVyaW5nIGZ1bmN0aW9uYWxpdHkgdGhhbiBkZXNjcmliZWQgaGVyZS4KIAotPT09IENvbmZpZ3VyaW5nCis9PT09IENvbmZpZ3VyaW5nCiAKIERldGVybWluaW5nIHdoZW4gYSB0cmFuc2FjdGlvbiBzdGFydHMgaXMgZGVwZW5kZW50IHVwb24gdGhlIGJlaGF2aW9yIGFzc2lnbmVkIHRvIHRoZSBgVHJhbnNhY3Rpb25gLiAgSXQgaXMgdXAgdG8gdGhlCiBgR3JhcGhgIGltcGxlbWVudGF0aW9uIHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmQgdW5sZXNzIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGFsbG93IGl0LCB0aGUgYmVoYXZpb3IKQEAgLTI3OCw3ICszMzMsNyBAQAogc3BlY2lmaWNzIG9mIGhvdyB0cmFuc2FjdGlvbnMgd2lsbCBiZWhhdmUuICBUaW5rZXJQb3AgYWxsb3dzIHNvbWUgbGF0aXR1ZGUgaW4gdGhpcyBhcmVhIGFuZCBpbXBsZW1lbnRhdGlvbnMgbWF5IG5vdCBoYXZlCiB0aGUgZXhhY3Qgc2FtZSBiZWhhdmlvcnMgYW5kIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUNJRFtBQ0lEXSBndWFyYW50ZWVzLgogCi09PT0gVGhyZWFkZWQgVHJhbnNhY3Rpb25zCis9PT09IFRocmVhZGVkIFRyYW5zYWN0aW9ucwogCiBNb3N0IGBHcmFwaGAgaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9ydCB0cmFuc2FjdGlvbnMgZG8gc28gaW4gYSBgVGhyZWFkTG9jYWxgIG1hbm5lciwgd2hlcmUgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24KIGlzIGJvdW5kIHRvIHRoZSBjdXJyZW50IHRocmVhZCBvZiBleGVjdXRpb24uIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0byBkZW1vbnN0cmF0ZToKQEAgLTM0Myw0NDYgKzM5OCw0MiBAQAogYFRocmVhZExvY2FsYCB0cmFuc2FjdGlvbiwgdGh1cyBhbGxvd2luZyBlYWNoIHRocmVhZCB0byBvcGVyYXRlIG9uIGl0IGluIHRoZSBzYW1lIGNvbnRleHQuICBJbiB0aGlzIGNhc2UsIHRoZXJlIHdvdWxkCiBiZSB0aHJlZSBzZXBhcmF0ZSB2ZXJ0aWNlcyBwZXJzaXN0ZWQgdG8gdGhlIGBHcmFwaGAuCiAKLT09IEdyZW1saW4gSS9PCitbW3R4LWdyZW1saW4tc2VydmVyXV0KKz09PSBHcmVtbGluIFNlcnZlcgogCi1pbWFnZTpncmVtbGluLWlvLnBuZ1t3aWR0aD0yNTAsZmxvYXQ9cmlnaHRdIFRoZSB0YXNrIG9mIGdldHRpbmcgZGF0YSBpbiBhbmQgb3V0IG9mIGBHcmFwaGAgaW5zdGFuY2VzIGlzIHRoZSBqb2Igb2YKLXRoZSBHcmVtbGluIEkvTyBwYWNrYWdlcy4gIEdyZW1saW4gSS9PIHByb3ZpZGVzIHR3byBpbnRlcmZhY2VzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGBHcmFwaGAgaW5zdGFuY2VzOiBgR3JhcGhSZWFkZXJgCi1hbmQgYEdyYXBoV3JpdGVyYC4gIFRoZXNlIGludGVyZmFjZXMgZXhwb3NlIG1ldGhvZHMgdGhhdCBzdXBwb3J0OgorVGhlIGF2YWlsYWJsZSBjYXBhYmlsaXR5IGZvciB0cmFuc2FjdGlvbnMgd2l0aCA8PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gaXMgZGVwZW5kZW50IHVwb24gdGhlIG1ldGhvZCBvZgoraW50ZXJhY3Rpb24gdGhhdCBpcyB1c2VkLiBUaGUgcHJlZmVycmVkIG1ldGhvZCBmb3IgPDxjb25uZWN0aW5nLWdyZW1saW4tc2VydmVyLGludGVyYWN0aW5nIHdpdGggR3JlbWxpbiBTZXJ2ZXI+PgoraXMgdmlhIHdlYnNvY2tldHMgYW5kIGJ5dGVjb2RlIGJhc2VkIHJlcXVlc3RzLiBJbiB0aGlzIG1vZGUgb2Ygb3BlcmF0aW9ucyBlYWNoIEdyZW1saW4gdHJhdmVyc2FsIHRoYXQgaXMgZXhlY3V0ZWQgd2lsbAorYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVHJhdmVyc2FscyB0aGF0IGZhaWwgd2lsbCBoYXZlIHRoZWlyIHRyYW5zYWN0aW9uIHJvbGxlZCBiYWNrIGFuZCBzdWNjZXNzZnVsCitpdGVyYXRpb24gb2YgYSB0cmF2ZXJzYWwgd2lsbCBjb25jbHVkZSB3aXRoIGEgdHJhbnNhY3Rpb25hbCBjb21taXQuIEhvdyB0aGUgZ3JhcGggaG9zdGVkIGluIEdyZW1saW4gU2VydmVyIHJlYWN0cyB0bwordGhvc2UgY29tbWFuZHMgaXMgZGVwZW5kZW50IG9uIHRoZSBncmFwaCBjaG9zZW4gYW5kIGl0IGlzIHRoZXJlZm9yZSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgdHJhbnNhY3Rpb25hbCBzZW1hbnRpY3MKK29mIHRoYXQgZ3JhcGggd2hlbiBkZXZlbG9waW5nIGFuIGFwcGxpY2F0aW9uLgogCi0qIFJlYWRpbmcgYW5kIHdyaXRpbmcgYW4gZW50aXJlIGBHcmFwaGAKLSogUmVhZGluZyBhbmQgd3JpdGluZyBhIGBUcmF2ZXJzYWw8VmVydGV4PmAgYXMgYWRqYWNlbmN5IGxpc3QgZm9ybWF0Ci0qIFJlYWRpbmcgYW5kIHdyaXRpbmcgYSBzaW5nbGUgYFZlcnRleGAgKHdpdGggYW5kIHdpdGhvdXQgYXNzb2NpYXRlZCBgRWRnZWAgb2JqZWN0cykKLSogUmVhZGluZyBhbmQgd3JpdGluZyBhIHNpbmdsZSBgRWRnZWAKLSogUmVhZGluZyBhbmQgd3JpdGluZyBhIHNpbmdsZSBgVmVydGV4UHJvcGVydHlgCi0qIFJlYWRpbmcgYW5kIHdyaXRpbmcgYSBzaW5nbGUgYFByb3BlcnR5YAotKiBSZWFkaW5nIGFuZCB3cml0aW5nIGFuIGFyYml0cmFyeSBgT2JqZWN0YAorR3JlbWxpbiBTZXJ2ZXIgYWxzbyBoYXMgdGhlIG9wdGlvbiB0byBhY2NlcHQgR3JlbWxpbi1iYXNlZCBzY3JpcHRzLiBUaGUgc2NyaXB0aW5nIGFwcHJvYWNoIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUKK0dyYXBoIEFQSSBhbmQgdGh1cyBhbHNvIHRoZSB0cmFuc2FjdGlvbmFsIG1vZGVsIGRlc2NyaWJlZCBpbiB0aGUgPDx0eC1lbWJlZGRlZCxlbWJlZGRlZD4+IHNlY3Rpb24uIFRoZXJlZm9yZSBhIHNpbmdsZQorc2NyaXB0IGNhbiBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHBlciByZXF1ZXN0IHdpdGggY29tcGxldGUgY29udHJvbCBwcm92aWRlZCB0byB0aGUKK2RldmVsb3BlciB0byBjb21taXQgb3Igcm9sbGJhY2sgdHJhbnNhY3Rpb25zIGFzIG5lZWRlZC4KIAotSW4gYWxsIGNhc2VzLCB0aGVzZSBtZXRob2RzIG9wZXJhdGUgaW4gdGhlIGN1cnJlbmN5IG9mIGBJbnB1dFN0cmVhbWAgYW5kIGBPdXRwdXRTdHJlYW1gIG9iamVjdHMsIGFsbG93aW5nIGdyYXBocyBhbmQKLXRoZWlyIHJlbGF0ZWQgZWxlbWVudHMgdG8gYmUgd3JpdHRlbiB0byBhbmQgcmVhZCBmcm9tIGZpbGVzLCBieXRlIGFycmF5cywgZXRjLiAgVGhlIGBHcmFwaGAgaW50ZXJmYWNlIG9mZmVycyB0aGUgYGlvYAotbWV0aG9kLCB3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gInJlYWRlci93cml0ZXIgYnVpbGRlciIgb2JqZWN0cyB0aGF0IGFyZSBwcmUtY29uZmlndXJlZCB3aXRoIHNlcmlhbGl6ZXJzIHByb3ZpZGVkIGJ5Ci10aGUgYEdyYXBoYCwgYXMgd2VsbCBhcyBoZWxwZXIgbWV0aG9kcyBmb3IgdGhlIHZhcmlvdXMgSS9PIGNhcGFiaWxpdGllcy4gVW5sZXNzIHRoZXJlIGFyZSB2ZXJ5IGFkdmFuY2VkIHJlcXVpcmVtZW50cwotZm9yIHRoZSBzZXJpYWxpemF0aW9uIHByb2Nlc3MsIGl0IGlzIGFsd2F5cyBiZXN0IHRvIHV0aWxpemUgdGhlIG1ldGhvZHMgb24gdGhlIGBJb2AgaW50ZXJmYWNlIHRvIGNvbnN0cnVjdAotYEdyYXBoUmVhZGVyYCBhbmQgYEdyYXBoV3JpdGVyYCBpbnN0YW5jZXMsIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZSBzb21lIGN1c3RvbSBzZXR0aW5ncyB0aGF0IHdvdWxkIG90aGVyd2lzZQotaGF2ZSB0byBiZSBjb25maWd1cmVkIG1hbnVhbGx5IGJ5IHRoZSB1c2VyIHRvIGRvIHRoZSBzZXJpYWxpemF0aW9uLgorVGhlcmUgYXJlIHR3byBtZXRob2RzIGZvciBzZW5kaW5nIHNjcmlwdHMgdG8gR3JlbWxpbiBTZXJ2ZXI6IHNlc3Npb25sZXNzIGFuZCBzZXNzaW9uLWJhc2VkLiBXaXRoIHNlc3Npb25sZXNzIHJlcXVlc3RzCit0aGVyZSB3aWxsIGFsd2F5cyBiZSBhbiBhdHRlbXB0IHRvIGNsb3NlIHRoZSB0cmFuc2FjdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSByZXF1ZXN0IHdpdGggYSBjb21taXQgaWYgdGhlcmUgYXJlIG5vIGVycm9ycworb3IgYSByb2xsYmFjayBpZiB0aGVyZSBpcyBhIGZhaWx1cmUuIEl0IGlzIHRoZXJlZm9yZSB1bm5lY2Vzc2FyeSB0byBjbG9zZSB0cmFuc2FjdGlvbnMgbWFudWFsbHkgd2l0aGluIHNjcmlwdHMKK3RoZW1zZWx2ZXMuIEJ5IGRlZmF1bHQsIHNlc3Npb24tYmFzZWQgcmVxdWVzdHMgZG8gbm90IGhhdmUgdGhpcyBxdWFsaXR5LiBUaGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBoZWxkIG9wZW4gb24gdGhlCitzZXJ2ZXIgdW50aWwgdGhlIHVzZXIgY2xvc2VzIGl0IG1hbnVhbGx5LiBUaGVyZSBpcyBhbiBvcHRpb24gdG8gaGF2ZSBhdXRvbWF0aWMgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBmb3Igc2Vzc2lvbnMuCitNb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgdG9waWMgY2FuIGJlIGZvdW5kIGluIHRoZSA8PGNvbnNpZGVyaW5nLXRyYW5zYWN0aW9ucyxDb25zaWRlcmluZyBUcmFuc2FjdGlvbnM+PiBTZWN0aW9uIGFuZAordGhlIDw8c2Vzc2lvbnMsQ29uc2lkZXJpbmcgU2Vzc2lvbnM+PiBTZWN0aW9uLgogCi1JdCBpcyB1cCB0byB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIGludGVyZmFjZXMgdG8gY2hvb3NlIHRoZSBtZXRob2RzIHRoZXkKLWltcGxlbWVudCBhbmQgdGhlIG1hbm5lciBpbiB3aGljaCB0aGV5IHdvcmsgdG9nZXRoZXIuICBUaGUgb25seSBjaGFyYWN0ZXJpc3RpYyBlbmZvcmNlZCBhbmQgZXhwZWN0ZWQgaXMgdGhhdCB0aGUgd3JpdGUKLW1ldGhvZHMgc2hvdWxkIHByb2R1Y2Ugb3V0cHV0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHJlYWQgbWV0aG9kLiAgRm9yIGV4YW1wbGUsIHRoZSBvdXRwdXQgb2YKLWB3cml0ZVZlcnRpY2VzYCBzaG91bGQgYmUgcmVhZGFibGUgYXMgaW5wdXQgdG8gYHJlYWRWZXJ0aWNlc2AgYW5kIHRoZSBvdXRwdXQgb2YgYHdyaXRlUHJvcGVydHlgIHNob3VsZCBiZSByZWFkYWJsZSBhcwotaW5wdXQgdG8gYHJlYWRQcm9wZXJ0eWAuCitXaGlsZSB0aG9zZSBzZWN0aW9ucyBwcm92aWRlIHNvbWUgYWRkaXRpb25hbCBkZXRhaWxzLCB0aGUgc2hvcnQgYWR2aWNlIGlzIHRvIGF2b2lkIHNjcmlwdHMgd2hlbiBwb3NzaWJsZSBhbmQgcHJlZmVyCitieXRlY29kZSBiYXNlZCByZXF1ZXN0cy4KIAotTk9URTogQWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIGZvciBUaW5rZXJQb3AgSU8gZm9ybWF0cyBjYW4gYmUgZm91bmQgaW4gdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L2Rldi9pby9bSU8gUmVmZXJlbmNlXS4KK1tbdHgtcmdwXV0KKz09PSBSZW1vdGUgR3JlbWxpbiBQcm92aWRlcnMKIAotPT09IEdyYXBoTUwgUmVhZGVyL1dyaXRlcgotCi1pbWFnZTpncmVtbGluLWdyYXBobWwucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBUaGUgbGluazpodHRwOi8vZ3JhcGhtbC5ncmFwaGRyYXdpbmcub3JnL1tHcmFwaE1MXSBmaWxlIGZvcm1hdCBpcyBhCi1jb21tb24gWE1MLWJhc2VkIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JhcGguIEl0IGlzIHdpZGVseSBzdXBwb3J0ZWQgYnkgZ3JhcGgtcmVsYXRlZCB0b29scyBhbmQgbGlicmFyaWVzIG1ha2luZyBpdCBhCi1zb2xpZCBpbnRlcmNoYW5nZSBmb3JtYXQgZm9yIFRpbmtlclBvcC4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBpbnRlbnQgaXMgdG8gd29yayB3aXRoIGdyYXBoIGRhdGEgaW4gY29uanVuY3Rpb24gd2l0aAotYXBwbGljYXRpb25zIG91dHNpZGUgb2YgVGlua2VyUG9wLCBHcmFwaE1MIG1heSBiZSB0aGUgYmVzdCBjaG9pY2UgdG8gZG8gdGhhdC4gQ29tbW9uIHVzZSBjYXNlcyBtaWdodCBiZToKLQotKiBHZW5lcmF0ZSBhIGdyYXBoIHVzaW5nIGxpbms6aHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vW05ldHdvcmtYXSwgZXhwb3J0IGl0IHdpdGggR3JhcGhNTCBhbmQgaW1wb3J0IGl0IHRvIFRpbmtlclBvcC4KLSogUHJvZHVjZSBhIHN1YmdyYXBoIGFuZCBleHBvcnQgaXQgdG8gR3JhcGhNTCB0byBiZSBjb25zdW1lZCBieSBhbmQgdmlzdWFsaXplZCBpbiBsaW5rOmh0dHBzOi8vZ2VwaGkub3JnL1tHZXBoaV0uCi0qIE1pZ3JhdGUgdGhlIGRhdGEgb2YgYW4gZW50aXJlIGdyYXBoIHRvIGEgZGlmZmVyZW50IGdyYXBoIGRhdGFiYXNlIG5vdCBzdXBwb3J0ZWQgYnkgVGlua2VyUG9wLgotCi1BcyBHcmFwaE1MIGlzIGEgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHNlcmlhbGl6YXRpb24gb2YgYW4gZW50aXJlIGdyYXBoIGFuZCBub3QgdGhlIGluZGl2aWR1YWwgZWxlbWVudHMgb2YgYSBncmFwaCwKLW1ldGhvZHMgdGhhdCBzdXBwb3J0IGlucHV0IGFuZCBvdXRwdXQgb2Ygc2luZ2xlIHZlcnRpY2VzLCBlZGdlcywgZXRjLiBhcmUgbm90IHN1cHBvcnRlZC4KLQotV0FSTklORzogR3JhcGhNTCBpcyBhICJsb3NzeSIgZm9ybWF0IGluIHRoYXQgaXQgb25seSBzdXBwb3J0cyBwcmltaXRpdmUgdmFsdWVzIGZvciBwcm9wZXJ0aWVzIGFuZCBkb2VzIG5vdCBoYXZlCi1zdXBwb3J0IGZvciBgR3JhcGhgIHZhcmlhYmxlcy4gIEl0IHdpbGwgdXNlIGB0b1N0cmluZ2AgdG8gc2VyaWFsaXplIHByb3BlcnR5IHZhbHVlcyBvdXRzaWRlIG9mIHRob3NlIHByaW1pdGl2ZXMuCi0KLVdBUk5JTkc6IEdyYXBoTUwgYXMgYSBzcGVjaWZpY2F0aW9uIGFsbG93cyBmb3IgYDxlZGdlPmAgYW5kIGA8bm9kZT5gIGVsZW1lbnRzIHRvIGFwcGVhciBpbiBhbnkgb3JkZXIuICBNb3N0IHNvZnR3YXJlCi10aGF0IHdyaXRlcyBHcmFwaE1MIChpbmNsdWRpbmcgYXMgVGlua2VyUG9wJ3MgYEdyYXBoTUxXcml0ZXJgKSB3cml0ZSBgPG5vZGU+YCBlbGVtZW50cyBiZWZvcmUgYDxlZGdlPmAgZWxlbWVudHMuICBIb3dldmVyIGl0Ci1pcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IGBHcmFwaE1MUmVhZGVyYCB3aWxsIHJlYWQgdGhpcyBkYXRhIGluIG9yZGVyIGFuZCBvcmRlciBjYW4gbWF0dGVyLiAgVGhpcyBpcyBiZWNhdXNlIFRpbmtlclBvcAotZG9lcyBub3QgYWxsb3cgdGhlIHZlcnRleCBsYWJlbCB0byBiZSBjaGFuZ2VkIGFmdGVyIHRoZSB2ZXJ0ZXggaGFzIGJlZW4gY3JlYXRlZC4gIFRoZXJlZm9yZSwgaWYgYW4gYDxlZGdlPmAgZWxlbWVudAotY29tZXMgYmVmb3JlIHRoZSBgPG5vZGU+YCwgdGhlIGxhYmVsIG9uIHRoZSB2ZXJ0ZXggd2lsbCBiZSBpZ25vcmVkLiAgSXQgaXMgdGh1cyBiZXR0ZXIgdG8gb3JkZXIgYDxub2RlPmAgZWxlbWVudHMgaW4gdGhlCi1HcmFwaE1MIHRvIGFwcGVhciBiZWZvcmUgYWxsIGA8ZWRnZT5gIGVsZW1lbnRzIGlmIHZlcnRleCBsYWJlbHMgYXJlIGltcG9ydGFudCB0byB0aGUgZ3JhcGguCi0KLVRoZSBmb2xsb3dpbmcgY29kZSBzaG93cyBob3cgdG8gd3JpdGUgYSBgR3JhcGhgIGluc3RhbmNlIHRvIGZpbGUgY2FsbGVkIGB0aW5rZXJwb3AtbW9kZXJuLnhtbGAgYW5kIHRoZW4gaG93IHRvIHJlYWQKLXRoYXQgZmlsZSBiYWNrIGludG8gYSBkaWZmZXJlbnQgaW5zdGFuY2U6Ci0KLVtzb3VyY2UsamF2YV0KLS0tLS0KLUdyYXBoIGdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKTsKLWdyYXBoLmlvKElvQ29yZS5ncmFwaG1sKCkpLndyaXRlR3JhcGgoInRpbmtlcnBvcC1tb2Rlcm4ueG1sIik7Ci1HcmFwaCBuZXdHcmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLW5ld0dyYXBoLmlvKElvQ29yZS5ncmFwaG1sKCkpLnJlYWRHcmFwaCgidGlua2VycG9wLW1vZGVybi54bWwiKTsKLS0tLS0KLQotSWYgYSBjdXN0b20gY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCwgdGhlbiBoYXZlIHRoZSBgR3JhcGhgIGdlbmVyYXRlIGEgYEdyYXBoUmVhZGVyYCBvciBgR3JhcGhXcml0ZXJgICJidWlsZGVyIiBpbnN0YW5jZToKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOwotdHJ5IChPdXRwdXRTdHJlYW0gb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgidGlua2VycG9wLW1vZGVybi54bWwiKSkgewotICAgIGdyYXBoLmlvKElvQ29yZS5ncmFwaG1sKCkpLndyaXRlcigpLm5vcm1hbGl6ZSh0cnVlKS5jcmVhdGUoKS53cml0ZUdyYXBoKG9zLCBncmFwaCk7Ci19Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotdHJ5IChJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCJ0aW5rZXJwb3AtbW9kZXJuLnhtbCIpKSB7Ci0gICAgbmV3R3JhcGguaW8oSW9Db3JlLmdyYXBobWwoKSkucmVhZGVyKCkuY3JlYXRlKCkucmVhZEdyYXBoKHN0cmVhbSwgbmV3R3JhcGgpOwotfQotLS0tLQotCi1HcmFwaE1MIHdhcyBhIHN1cHBvcnRlZCBmb3JtYXQgaW4gVGlua2VyUG9wIDIueCwgYnV0IHRoZXJlIHdlcmUgc2V2ZXJhbCBpc3N1ZXMgdGhhdCBtYWRlIGl0IGluY29uc2lzdGVudCB3aXRoIHRoZQotc3BlY2lmaWNhdGlvbiB0aGF0IHdlcmUgY29ycmVjdGVkIGZvciAzLnguIEFzIGEgcmVzdWx0LCBhdHRlbXB0aW5nIHRvIHJlYWQgYSBHcmFwaE1MIGZpbGUgZ2VuZXJhdGVkIGJ5IDIueCB3aXRoIHRoZQotMy54IGBHcmFwaE1MUmVhZGVyYCB3aWxsIHJlc3VsdCBpbiBlcnJvci4gVG8gaGVscCB3aXRoIHRoaXMgcHJvYmxlbSwgYW4gWFNMVCBmaWxlIGlzIHByb3ZpZGVkIGFzIGEgcmVzb3VyY2UgaW4KLWBncmVtbGluLWNvcmVgIHdoaWNoIHdpbGwgdHJhbnNmb3JtIDIueCBHcmFwaE1MIHRvIDMueCBHcmFwaE1MLiBJdCBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKLQotSW5wdXRTdHJlYW0gc3R5bGVzaGVldCA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSgidHAyLXRvLXRwMy1ncmFwaG1sLnhzbHQiKTsKLUZpbGUgZGF0YWZpbGUgPSBuZXcgRmlsZSgnL3RtcC90cDItZ3JhcGhtbC54bWwnKTsKLUZpbGUgb3V0ZmlsZSA9IG5ldyBGaWxlKCcvdG1wL3RwMy1ncmFwaG1sLnhtbCcpOwotCi1UcmFuc2Zvcm1lckZhY3RvcnkgdEZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLVN0cmVhbVNvdXJjZSBzdHlsZXNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2Uoc3R5bGVzaGVldCk7Ci1UcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IHRGYWN0b3J5Lm5ld1RyYW5zZm9ybWVyKHN0eWxlc291cmNlKTsKLQotU3RyZWFtU291cmNlIHNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2UoZGF0YWZpbGUpOwotU3RyZWFtUmVzdWx0IHJlc3VsdCA9IG5ldyBTdHJlYW1SZXN1bHQobmV3IEZpbGVXcml0ZXIob3V0ZmlsZSkpOwotdHJhbnNmb3JtZXIudHJhbnNmb3JtKHNvdXJjZSwgcmVzdWx0KTsKLS0tLS0KLQotW1tncmFwaHNvbi1yZWFkZXItd3JpdGVyXV0KLT09PSBHcmFwaFNPTiBSZWFkZXIvV3JpdGVyCi0KLWltYWdlOmdyZW1saW4tZ3JhcGhzb24ucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBHcmFwaFNPTiBpcyBhIGxpbms6aHR0cDovL2pzb24ub3JnL1tKU09OXS1iYXNlZCBmb3JtYXQgZXh0ZW5kZWQKLWZyb20gZWFybGllciB2ZXJzaW9ucyBvZiBUaW5rZXJQb3AuIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgVGlua2VyUG9wMydzIEdyYXBoU09OIGlzIG5vdCBiYWNrd2FyZHMgY29tcGF0aWJsZQotd2l0aCBwcmlvciBUaW5rZXJQb3AgR3JhcGhTT04gdmVyc2lvbnMuIEdyYXBoU09OIGhhcyBzb21lIHN1cHBvcnQgZnJvbSBncmFwaC1yZWxhdGVkIGFwcGxpY2F0aW9uIG91dHNpZGUgb2YgVGlua2VyUG9wLAotYnV0IGl0IGlzIGdlbmVyYWxseSBiZXN0IHVzZWQgaW4gdHdvIGNhc2VzOgotCi0qIEEgdGV4dCBmb3JtYXQgb2YgdGhlIGdyYXBoIG9yIGl0cyBlbGVtZW50cyBpcyBkZXNpcmVkIChlLmcuIGRlYnVnZ2luZywgdXNhZ2UgaW4gc291cmNlIGNvbnRyb2wsIGV0Yy4pCi0qIFRoZSBncmFwaCBvciBpdHMgZWxlbWVudHMgbmVlZCB0byBiZSBjb25zdW1lZCBieSBjb2RlIHRoYXQgaXMgbm90IEpWTS1iYXNlZCAoZS5nLiBKYXZhU2NyaXB0LCBQeXRob24sIC5ORVQsIGV0Yy4pCi0KLUdyYXBoU09OIHN1cHBvcnRzIGFsbCBvZiB0aGUgYEdyYXBoUmVhZGVyYCBhbmQgYEdyYXBoV3JpdGVyYCBpbnRlcmZhY2UgbWV0aG9kcyBhbmQgY2FuIHRoZXJlZm9yZSByZWFkIG9yIHdyaXRlIGFuCi1lbnRpcmUgYEdyYXBoYCwgdmVydGljZXMsIGFyYml0cmFyeSBvYmplY3RzLCBldGMuICBUaGUgZm9sbG93aW5nIGNvZGUgc2hvd3MgaG93IHRvIHdyaXRlIGEgYEdyYXBoYCBpbnN0YW5jZSB0byBmaWxlCi1jYWxsZWQgYHRpbmtlcnBvcC1tb2Rlcm4uanNvbmAgYW5kIHRoZW4gaG93IHRvIHJlYWQgdGhhdCBmaWxlIGJhY2sgaW50byBhIGRpZmZlcmVudCBpbnN0YW5jZToKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOwotZ3JhcGguaW8oZ3JhcGhzb24oKSkud3JpdGVHcmFwaCgidGlua2VycG9wLW1vZGVybi5qc29uIik7Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotbmV3R3JhcGguaW8oZ3JhcGhzb24oKSkucmVhZEdyYXBoKCJ0aW5rZXJwb3AtbW9kZXJuLmpzb24iKTsKLS0tLS0KLQotTk9URTogVXNpbmcgYGdyYXBoc29uKClgLCB3aGljaCBpcyBhIHN0YXRpYyBoZWxwZXIgbWV0aG9kIG9mIGBJb0NvcmVgLCB3aWxsIGRlZmF1bHQgdG8gdGhlIG1vc3QgY3VycmVudCB2ZXJzaW9uIG9mIEdyYXBoU09OIHdoaWNoIGlzIDMuMC4KLQotSWYgYSBjdXN0b20gY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCwgdGhlbiBoYXZlIHRoZSBgR3JhcGhgIGdlbmVyYXRlIGEgYEdyYXBoUmVhZGVyYCBvciBgR3JhcGhXcml0ZXJgICJidWlsZGVyIiBpbnN0YW5jZToKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOwotdHJ5IChPdXRwdXRTdHJlYW0gb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgidGlua2VycG9wLW1vZGVybi5qc29uIikpIHsKLSAgICBHcmFwaFNPTk1hcHBlciBtYXBwZXIgPSBncmFwaC5pbyhJb0NvcmUuZ3JhcGhzb24oKSkubWFwcGVyKCkubm9ybWFsaXplKHRydWUpLmNyZWF0ZSgpCi0gICAgZ3JhcGguaW8oZ3JhcGhzb24oKSkud3JpdGVyKCkubWFwcGVyKG1hcHBlcikuY3JlYXRlKCkud3JpdGVHcmFwaChvcywgZ3JhcGgpCi19Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotdHJ5IChJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCJ0aW5rZXJwb3AtbW9kZXJuLmpzb24iKSkgewotICAgIG5ld0dyYXBoLmlvKGdyYXBoc29uKCkpLnJlYWRlcigpLmNyZWF0ZSgpLnJlYWRHcmFwaChzdHJlYW0sIG5ld0dyYXBoKTsKLX0KLS0tLS0KLQotVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyBhIHNpbmdsZSBgVmVydGV4YCBpcyB3cml0dGVuIHRvIEdyYXBoU09OIHVzaW5nIHRoZSBHcmVtbGluIENvbnNvbGU6Ci0KLVtncmVtbGluLWdyb292eV0KLS0tLS0KLWdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKQotZyA9IGdyYXBoLnRyYXZlcnNhbCgpCi1mID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpCi1ncmFwaC5pbyhncmFwaHNvbigpKS53cml0ZXIoKS5jcmVhdGUoKS53cml0ZVZlcnRleChmLCBnLlYoMSkubmV4dCgpLCBCT1RIKQotZi5jbG9zZSgpCi0tLS0tCi0KLVRoZSBmb2xsb3dpbmcgR3JhcGhTT04gZXhhbXBsZSBzaG93cyB0aGUgb3V0cHV0IG9mIGBHcmFwaFNPTldyaXRlci53cml0ZVZlcnRleCgpYCB3aXRoIGFzc29jaWF0ZWQgZWRnZXM6Ci0KLVtzb3VyY2UsanNvbl0KLS0tLS0KLXsKLQkiaWQiOiB7Ci0JCSJAdHlwZSI6ICJnOkludDMyIiwKLQkJIkB2YWx1ZSI6IDEKLQl9LAotCSJsYWJlbCI6ICJwZXJzb24iLAotCSJvdXRFIjogewotCQkiY3JlYXRlZCI6IFt7Ci0JCQkiaWQiOiB7Ci0JCQkJIkB0eXBlIjogImc6SW50MzIiLAotCQkJCSJAdmFsdWUiOiA5Ci0JCQl9LAotCQkJImluViI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDMKLQkJCX0sCi0JCQkicHJvcGVydGllcyI6IHsKLQkJCQkid2VpZ2h0IjogewotCQkJCQkiQHR5cGUiOiAiZzpEb3VibGUiLAotCQkJCQkiQHZhbHVlIjogMC40Ci0JCQkJfQotCQkJfQotCQl9XSwKLQkJImtub3dzIjogW3sKLQkJCSJpZCI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDcKLQkJCX0sCi0JCQkiaW5WIjogewotCQkJCSJAdHlwZSI6ICJnOkludDMyIiwKLQkJCQkiQHZhbHVlIjogMgotCQkJfSwKLQkJCSJwcm9wZXJ0aWVzIjogewotCQkJCSJ3ZWlnaHQiOiB7Ci0JCQkJCSJAdHlwZSI6ICJnOkRvdWJsZSIsCi0JCQkJCSJAdmFsdWUiOiAwLjUKLQkJCQl9Ci0JCQl9Ci0JCX0sIHsKLQkJCSJpZCI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDgKLQkJCX0sCi0JCQkiaW5WIjogewotCQkJCSJAdHlwZSI6ICJnOkludDMyIiwKLQkJCQkiQHZhbHVlIjogNAotCQkJfSwKLQkJCSJwcm9wZXJ0aWVzIjogewotCQkJCSJ3ZWlnaHQiOiB7Ci0JCQkJCSJAdHlwZSI6ICJnOkRvdWJsZSIsCi0JCQkJCSJAdmFsdWUiOiAxLjAKLQkJCQl9Ci0JCQl9Ci0JCX1dCi0JfSwKLQkicHJvcGVydGllcyI6IHsKLQkJIm5hbWUiOiBbewotCQkJImlkIjogewotCQkJCSJAdHlwZSI6ICJnOkludDY0IiwKLQkJCQkiQHZhbHVlIjogMAotCQkJfSwKLQkJCSJ2YWx1ZSI6ICJtYXJrbyIKLQkJfV0sCi0JCSJhZ2UiOiBbewotCQkJImlkIjogewotCQkJCSJAdHlwZSI6ICJnOkludDY0IiwKLQkJCQkiQHZhbHVlIjogMQotCQkJfSwKLQkJCSJ2YWx1ZSI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDI5Ci0JCQl9Ci0JCX1dCi0JfQotfQotLS0tLQotCi1HcmFwaFNPTiBoYXMgc2V2ZXJhbCB2ZXJzaW9ucyBhbmQgZWFjaCBoYXMgZGlmZmVyZW5jZXMgdGhhdCBwcmV2ZW50IGNvbXBsZXRlIGNvbXBhdGliaWxpdHkgd2l0aCBvbmUgYW5vdGhlci4gV2hpbGUgdGhlCi1kZWZhdWx0IHZlcnNpb24gcHJvdmlkZWQgYnkgYElvQ29yZS5ncmFwaHNvbigpYCBpcyByZWNvbW1lbmRlZCwgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBjaGFuZ2VzIHRvIHJldmVydCB0byBhbiBlYXJsaWVyCi12ZXJzaW9uLiBUaGUgZm9sbG93aW5nIHNob3dzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZSAxLjAgKHdpdGggdHlwZSBlbWJlZGRpbmcpOgotCi1bZ3JlbWxpbi1ncm9vdnldCi0tLS0tCi1ncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCkKLWcgPSBncmFwaC50cmF2ZXJzYWwoKQotZiA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKQotbWFwcGVyID0gZ3JhcGguaW8oR3JhcGhTT05Jby5idWlsZChHcmFwaFNPTlZlcnNpb24uVjFfMCkpLm1hcHBlcigpLnR5cGVJbmZvKFR5cGVJbmZvLlBBUlRJQUxfVFlQRVMpLmNyZWF0ZSgpCi1ncmFwaC5pbyhHcmFwaFNPTklvLmJ1aWxkKEdyYXBoU09OVmVyc2lvbi5WMV8wKSkud3JpdGVyKCkubWFwcGVyKG1hcHBlcikuY3JlYXRlKCkud3JpdGVWZXJ0ZXgoZiwgZy5WKDEpLm5leHQoKSwgQk9USCkKLWYuY2xvc2UoKQotLS0tLQotCi1OT1RFOiBBZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gZm9yIEdyYXBoU09OIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncmFwaHNvbltJTyBSZWZlcmVuY2VdLgotCi1JTVBPUlRBTlQ6IFdoZW4gdXNpbmcgdGhlIGV4dGVuZGVkIHR5cGUgc3lzdGVtIGluIEdyZW1saW4gU2VydmVyLCBzdXBwb3J0IGZvciB0aGVzZSB0eXBlcyB3aGVuIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YKLUdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgdGhlIGRyaXZlciBhbmQgaXRzIHNlcmlhbGl6ZXJzLiBUaGVzZQotaW1wbGVtZW50YXRpb25zIGFyZSBvbmx5IHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhlIGNvcmUgdHlwZXMgYW5kIG5vdCB0aGUgZXh0ZW5kZWQgb25lcy4KLQotSGVyZSdzIHRoZSBzYW1lIHByZXZpb3VzIGV4YW1wbGUgb2YgR3JhcGhTT04gMS4wLCBidXQgd2l0aCBHcmFwaFNPTiAyLjA6Ci0KLVtncmVtbGluLWdyb292eV0KLS0tLS0KLWdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKQotZyA9IGdyYXBoLnRyYXZlcnNhbCgpCi1mID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpCi1tYXBwZXIgPSBncmFwaC5pbyhncmFwaHNvbigpKS5tYXBwZXIoKS52ZXJzaW9uKEdyYXBoU09OVmVyc2lvbi5WMl8wKS5jcmVhdGUoKQotZ3JhcGguaW8oZ3JhcGhzb24oKSkud3JpdGVyKCkubWFwcGVyKG1hcHBlcikuY3JlYXRlKCkud3JpdGVWZXJ0ZXgoZiwgZy5WKDEpLm5leHQoKSwgQk9USCkKLWYuY2xvc2UoKQotLS0tLQotCi1DcmVhdGluZyBhIEdyYXBoU09OIDIuMCBtYXBwZXIgaXMgZG9uZSBieSBjYWxsaW5nIGAudmVyc2lvbihHcmFwaFNPTlZlcnNpb24uVjJfMClgIG9uIHRoZSBtYXBwZXIgYnVpbGRlci4gSGVyZSdzIGlzIHRoZQotZXhhbXBsZSBvdXRwdXQgZnJvbSB0aGUgY29kZSBhYm92ZToKLQotW3NvdXJjZSxqc29uXQotLS0tLQotewotICAgICJAdHlwZSI6ICJnOlZlcnRleCIsCi0gICAgIkB2YWx1ZSI6IHsKLSAgICAgICAgImlkIjogewotICAgICAgICAgICAgIkB0eXBlIjogImc6SW50MzIiLAotICAgICAgICAgICAgIkB2YWx1ZSI6IDEKLSAgICAgICAgfSwKLSAgICAgICAgImxhYmVsIjogInBlcnNvbiIsCi0gICAgICAgICJwcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgIm5hbWUiOiBbewotICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOlZlcnRleFByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAiQHZhbHVlIjogewotICAgICAgICAgICAgICAgICAgICAiaWQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiZzpJbnQ2NCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIjogMAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAibWFya28iLAotICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAibmFtZSIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJ1dWlkIjogW3sKLSAgICAgICAgICAgICAgICAiQHR5cGUiOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgIkB2YWx1ZSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogewotICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogImc6SW50NjQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSI6IDEyCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOlVVSUQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSI6ICI4MjljN2RkYi0zODMxLTQ2ODctYTg3Mi1lMjUyMDEyMzBjZDMiCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJ1dWlkIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgImFnZSI6IFt7Ci0gICAgICAgICAgICAgICAgIkB0eXBlIjogImc6VmVydGV4UHJvcGVydHkiLAotICAgICAgICAgICAgICAgICJAdmFsdWUiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOkludDY0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiOiAxCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOkludDMyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiOiAyOQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiYWdlIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH1dCi0gICAgICAgIH0KLSAgICB9Ci19Ci0tLS0tCi0KLVR5cGVzIGNhbiBiZSBkaXNhYmxlZCB3aGVuIGNyZWF0aW5nIGEgR3JhcGhTT04gMi4wIGBNYXBwZXJgIHdpdGg6Ci0KLVtzb3VyY2UsZ3Jvb3Z5XQotLS0tLQotZ3JhcGguaW8oZ3JhcGhzb24oKSkubWFwcGVyKCkuCi0gICAgICB2ZXJzaW9uKEdyYXBoU09OVmVyc2lvbi5WMl8wKS4KLSAgICAgIHR5cGVJbmZvKEdyYXBoU09OTWFwcGVyLlR5cGVJbmZvLk5PX1RZUEVTKS5jcmVhdGUoKQotLS0tLQotCi1CeSBkaXNhYmxpbmcgdHlwZXMsIHRoZSBKU09OIHBheWxvYWQgcHJvZHVjZWQgd2lsbCBsYWNrIHRoZSBleHRyYSBpbmZvcm1hdGlvbiB0aGF0IGlzIHdyaXR0ZW4gZm9yIHR5cGVzLiBQbGVhc2Ugbm90ZSwKLWRpc2FibGluZyB0eXBlcyBjYW4gYmUgdW5zYWZlIHdpdGggcmVnYXJkcyB0byB0aGUgd3JpdHRlbiBkYXRhIGluIHRoYXQgdHlwZXMgY2FuIGJlIGxvc3QuCi0KLVtbZ3J5by1yZWFkZXItd3JpdGVyXV0KLT09PSBHcnlvIFJlYWRlci9Xcml0ZXIKLQotaW1hZ2U6Z3JlbWxpbi1rcnlvLnBuZ1t3aWR0aD00MDAsZmxvYXQ9bGVmdF0gbGluazpodHRwczovL2dpdGh1Yi5jb20vRXNvdGVyaWNTb2Z0d2FyZS9rcnlvW0tyeW9dIGlzIGEgcG9wdWxhcgotc2VyaWFsaXphdGlvbiBwYWNrYWdlIGZvciB0aGUgSlZNLiBHcmVtbGluLUtyeW8gaXMgYSBiaW5hcnkgYEdyYXBoYCBzZXJpYWxpemF0aW9uIGZvcm1hdCBmb3IgdXNlIG9uIHRoZSBKVk0gYnkgSlZNCi1sYW5ndWFnZXMuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHNwYWNlIGVmZmljaWVudCwgbm9uLWxvc3N5IGFuZCBpcyBwcm9tb3RlZCBhcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRvIHVzZSB3aGVuIHdvcmtpbmcKLXdpdGggZ3JhcGggZGF0YSBpbnNpZGUgb2YgdGhlIFRpbmtlclBvcCBzdGFjay4gQSBsaXN0IG9mIGNvbW1vbiB1c2UgY2FzZXMgaXMgcHJlc2VudGVkIGJlbG93OgotCi0qIE1pZ3JhdGlvbiBmcm9tIG9uZSBHcmVtbGluIFN0cnVjdHVyZSBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIChlLmcuIGBUaW5rZXJHcmFwaGAgdG8gYE5lbzRqR3JhcGhgKQotKiBTZXJpYWxpemF0aW9uIG9mIGluZGl2aWR1YWwgZ3JhcGggZWxlbWVudHMgdG8gYmUgc2VudCBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgSlZNLgotKiBCYWNrdXBzIG9mIGluLW1lbW9yeSBncmFwaHMgb3Igc3ViZ3JhcGhzLgotCi1XQVJOSU5HOiBXaGVuIG1pZ3JhdGluZyBiZXR3ZWVuIEdyZW1saW4gU3RydWN0dXJlIGltcGxlbWVudGF0aW9ucywgS3J5byBtYXkgbm90IGxvc2UgZGF0YSwgYnV0IGl0IGlzIGltcG9ydGFudCB0bwotY29uc2lkZXIgdGhlIGZlYXR1cmVzIG9mIGVhY2ggYEdyYXBoYCBhbmQgd2hldGhlciBvciBub3QgdGhlIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGluIG9uZSB3aWxsIGJlIHN1cHBvcnRlZCBpbiB0aGUKLW90aGVyLiAgRmFpbHVyZSB0byBkbyBzbywgbWF5IHJlc3VsdCBpbiBlcnJvcnMuCi0KLUtyeW8gc3VwcG9ydHMgYWxsIG9mIHRoZSBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIGludGVyZmFjZSBtZXRob2RzIGFuZCBjYW4gdGhlcmVmb3JlIHJlYWQgb3Igd3JpdGUgYW4gZW50aXJlCi1gR3JhcGhgLCB2ZXJ0aWNlcywgZWRnZXMsIGV0Yy4gIFRoZSBmb2xsb3dpbmcgY29kZSBzaG93cyBob3cgdG8gd3JpdGUgYSBgR3JhcGhgIGluc3RhbmNlIHRvIGZpbGUgY2FsbGVkCi1gdGlua2VycG9wLW1vZGVybi5rcnlvYCBhbmQgdGhlbiBob3cgdG8gcmVhZCB0aGF0IGZpbGUgYmFjayBpbnRvIGEgZGlmZmVyZW50IGluc3RhbmNlOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1HcmFwaCBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCk7Ci1ncmFwaC5pbyhncnlvKCkpLndyaXRlR3JhcGgoInRpbmtlcnBvcC1tb2Rlcm4ua3J5byIpOwotCi1HcmFwaCBuZXdHcmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLW5ld0dyYXBoLmlvKGdyeW8oKSkucmVhZEdyYXBoKCJ0aW5rZXJwb3AtbW9kZXJuLmtyeW8iKTsKLS0tLS0KLQotTk9URTogVXNpbmcgYGdyeW8oKWAsIHdoaWNoIGlzIGEgc3RhdGljIGhlbHBlciBtZXRob2Qgb2YgYElvQ29yZWAsIHdpbGwgZGVmYXVsdCB0byB0aGUgbW9zdCBjdXJyZW50IHZlcnNpb24gb2YgR3J5byB3aGljaCBpcyAzLjAuCi0KLUlmIGEgY3VzdG9tIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQsIHRoZW4gaGF2ZSB0aGUgYEdyYXBoYCBnZW5lcmF0ZSBhIGBHcmFwaFJlYWRlcmAgb3IgYEdyYXBoV3JpdGVyYCAiYnVpbGRlciIgaW5zdGFuY2U6Ci0KLVtzb3VyY2UsamF2YV0KLS0tLS0KLUdyYXBoIGdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKTsKLXRyeSAoT3V0cHV0U3RyZWFtIG9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInRpbmtlcnBvcC1tb2Rlcm4ua3J5byIpKSB7Ci0gICAgZ3JhcGguaW8oR3J5b0lvLmJ1aWxkKEdyeW9WZXJzaW9uLlYxXzApKS53cml0ZXIoKS5jcmVhdGUoKS53cml0ZUdyYXBoKG9zLCBncmFwaCk7Ci19Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotdHJ5IChJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCJ0aW5rZXJwb3AtbW9kZXJuLmtyeW8iKSkgewotICAgIG5ld0dyYXBoLmlvKEdyeW9Jby5idWlsZChHcnlvVmVyc2lvbi5WMV8wKSkucmVhZGVyKCkuY3JlYXRlKCkucmVhZEdyYXBoKHN0cmVhbSwgbmV3R3JhcGgpOwotfQotLS0tLQotCi1OT1RFOiBUaGUgcHJlZmVycmVkIGV4dGVuc2lvbiBmb3IgZmlsZXMgbmFtZXMgcHJvZHVjZWQgYnkgR3J5byBpcyBgLmtyeW9gLgotCi09PT0gVGlua2VyUG9wMiBEYXRhIE1pZ3JhdGlvbgotCi1pbWFnZTpkYXRhLW1pZ3JhdGlvbi5wbmdbd2lkdGg9MzAwLGZsb2F0PXJpZ2h0XSBGb3IgdGhvc2UgdXNpbmcgVGlua2VyUG9wMiwgbWlncmF0aW5nIHRvIFRpbmtlclBvcDMgd2lsbCBtZWFuIGEgbnVtYmVyCi1vZiBwcm9ncmFtbWluZyBjaGFuZ2VzLCBidXQgbWF5IGFsc28gcmVxdWlyZSBhIG1pZ3JhdGlvbiBvZiB0aGUgZGF0YSBkZXBlbmRpbmcgb24gdGhlIGdyYXBoIGltcGxlbWVudGF0aW9uLiAgRm9yCi1leGFtcGxlLCB0cnlpbmcgdG8gb3BlbiBgVGlua2VyR3JhcGhgIGRhdGEgZnJvbSBUaW5rZXJQb3AyIHdpdGggVGlua2VyUG9wMyBjb2RlIHdpbGwgbm90IHdvcmssIGhvd2V2ZXIgb3BlbmluZyBhCi1UaW5rZXJQb3AyIGBOZW80akdyYXBoYCB3aXRoIGEgVGlua2VyUG9wMyBgTmVvNGpHcmFwaGAgc2hvdWxkIHdvcmsgcHJvdmlkZWQgdGhlcmUgYXJlbid0IE5lbzRqIHZlcnNpb24gY29tcGF0aWJpbGl0eQotbWlzbWF0Y2hlcyBwcmV2ZW50aW5nIHRoZSByZWFkLgotCi1JZiBzdWNoIGEgc2l0dWF0aW9uIGFyaXNlcyB0aGF0IGEgcGFydGljdWxhciBUaW5rZXJQb3AyIGBHcmFwaGAgY2FuIG5vdCBiZSByZWFkIGJ5IFRpbmtlclBvcDMsIGEgImxlZ2FjeSIgZGF0YQotbWlncmF0aW9uIGFwcHJvYWNoIGV4aXN0cy4gIFRoZSBtaWdyYXRpb24gaW52b2x2ZXMgd3JpdGluZyB0aGUgVGlua2VyUG9wMiBgR3JhcGhgIHRvIEdyYXBoU09OLCB0aGVuIHJlYWRpbmcgaXQgdG8KLVRpbmtlclBvcDMgd2l0aCB0aGUgYExlZ2FjeUdyYXBoU09OUmVhZGVyYCAoYSBsaW1pdGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgR3JhcGhSZWFkZXJgIGludGVyZmFjZSkuCi0KLVRoZSBmb2xsb3dpbmcgcmVwcmVzZW50cyBhbiBleGFtcGxlIG1pZ3JhdGlvbiBvZiB0aGUgImNsYXNzaWMiIHRveSBncmFwaC4gIEluIHRoaXMgZXhhbXBsZSwgdGhlICJjbGFzc2ljIiBncmFwaCBpcwotc2F2ZWQgdG8gR3JhcGhTT04gdXNpbmcgVGlua2VyUG9wMi4KLQotW3NvdXJjZSxncm9vdnldCi0tLS0tCi1ncmVtbGluPiBHcmVtbGluLnZlcnNpb24oKQotPT0+Mi41LnoKLWdyZW1saW4+IGdyYXBoID0gVGlua2VyR3JhcGhGYWN0b3J5LmNyZWF0ZVRpbmtlckdyYXBoKCkKLT09PnRpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0KLWdyZW1saW4+IEdyYXBoU09OV3JpdGVyLm91dHB1dEdyYXBoKGdyYXBoLCcvdG1wL3RwMi5qc29uJyxHcmFwaFNPTk1vZGUuRVhURU5ERUQpCi09PT5udWxsCi0tLS0tCi0KLVRoZSBhYm92ZSBjb25zb2xlIHNlc3Npb24gdXNlcyB0aGUgYGdyZW1saW4tZ3Jvb3Z5YCBkaXN0cmlidXRpb24gZnJvbSBUaW5rZXJQb3AyLiAgSXQgaXMgaW1wb3J0YW50IHRvIGdlbmVyYXRlIHRoZQotYHRwMi5qc29uYCBmaWxlIHVzaW5nIHRoZSBgRVhURU5ERURgIG1vZGUgYXMgaXQgd2lsbCBpbmNsdWRlIGRhdGEgdHlwZXMgd2hlbiBuZWNlc3Nhcnkgd2hpY2ggd2lsbCBoZWxwIGxpbWl0Ci0ibG9zc2luZXNzIiBvbiB0aGUgVGlua2VyUG9wMyBzaWRlIHdoZW4gaW1wb3J0ZWQuICBPbmNlIGB0cDIuanNvbmAgaXMgY3JlYXRlZCwgaXQgY2FuIHRoZW4gYmUgaW1wb3J0ZWQgdG8gYSBUaW5rZXJQb3AzCi1gR3JhcGhgLgotCi1bc291cmNlLGdyb292eV0KLS0tLS0KLWdyZW1saW4+IEdyZW1saW4udmVyc2lvbigpCi09PT54LnkuegotZ3JlbWxpbj4gZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKLT09PnRpbmtlcmdyYXBoW3ZlcnRpY2VzOjAgZWRnZXM6MF0KLWdyZW1saW4+IHIgPSBMZWdhY3lHcmFwaFNPTlJlYWRlci5idWlsZCgpLmNyZWF0ZSgpCi09PT5vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5MZWdhY3lHcmFwaFNPTlJlYWRlckA2NDMzNzcwMgotZ3JlbWxpbj4gci5yZWFkR3JhcGgobmV3IEZpbGVJbnB1dFN0cmVhbSgnL3RtcC90cDIuanNvbicpLCBncmFwaCkKLT09Pm51bGwKLWdyZW1saW4+IGcgPSBncmFwaC50cmF2ZXJzYWwoKQotPT0+Z3JhcGh0cmF2ZXJzYWxzb3VyY2VbdGlua2VyZ3JhcGhbdmVydGljZXM6NiBlZGdlczo2XSwgc3RhbmRhcmRdCi1ncmVtbGluPiBnLkUoKQotPT0+ZVsxMV1bNC1jcmVhdGVkLT4zXQotPT0+ZVsxMl1bNi1jcmVhdGVkLT4zXQotPT0+ZVs3XVsxLWtub3dzLT4yXQotPT0+ZVs4XVsxLWtub3dzLT40XQotPT0+ZVs5XVsxLWNyZWF0ZWQtPjNdCi09PT5lWzEwXVs0LWNyZWF0ZWQtPjVdCi0tLS0tCitBdCB0aGlzIHRpbWUsIHRyYW5zYWN0aW9uYWwgcGF0dGVybnMgZm9yIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycyBhcmUgbGFyZ2VseSBpbiBsaW5lIHdpdGggR3JlbWxpbiBTZXJ2ZXIuIE1vc3QKK29mZmVyIGJ5dGVjb2RlIG9yIHNjcmlwdCBiYXNlZCBzZXNzaW9ubGVzcyByZXF1ZXN0cywgd2hpY2ggaGF2ZSBhdXRvbWF0aWMgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCwgc3VjaCB0aGF0IGEKK3N1Y2Nlc3NmdWwgdHJhdmVyc2FsIHdpbGwgY29tbWl0IG9uIHN1Y2Nlc3MgYW5kIGEgZmFpbGluZyB0cmF2ZXJzYWwgd2lsbCByb2xsYmFjay4gQXMgbW9zdCBvZiB0aGVzZSBSR1BzIGRvIG5vdAorZXhwb3NlIGEgYEdyYXBoYCBpbnN0YW5jZXMsIGFjY2VzcyB0byBsb3dlciBsZXZlbCB0cmFuc2FjdGlvbmFsIGZ1bmN0aW9ucyBldmVuIGluIGEgc2Vzc2lvbmxlc3MgZmFzaGlvbiBhcmUgbm90Cit0eXBpY2FsbHkgYWxsb3dlZC4gVGhlIG5hdHVyZSBvZiB3aGF0IGEgInRyYW5zYWN0aW9uIiBtZWFucyB3aWxsIGJlIGRlcGVuZGVudCBvbiB0aGUgUkdQIGFzIGlzIHRoZSBjYXNlIHdpdGggYW55CitUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBzeXN0ZW0sIHNvIGl0IGlzIGltcG9ydGFudCB0byBjb25zdWx0IHRoYXQgc3lzdGVtcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAKID09IE5hbWVzcGFjZSBDb252ZW50aW9ucwogCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLWdyYXBoY29tcHV0ZXIuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLWdyYXBoY29tcHV0ZXIuYXNjaWlkb2MKaW5kZXggYjI4M2VlMi4uZjliNGRkNSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS1ncmFwaGNvbXB1dGVyLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS90aGUtZ3JhcGhjb21wdXRlci5hc2NpaWRvYwpAQCAtMTcsNyArMTcsNyBAQAogW1tncmFwaGNvbXB1dGVyXV0KID0gVGhlIEdyYXBoQ29tcHV0ZXIKIAotaW1hZ2U6Z3JhcGhjb21wdXRlci1wdWZmZXJzLnBuZ1t3aWR0aD0zNTAsZmxvYXQ9cmlnaHRdIFRpbmtlclBvcDMgcHJvdmlkZXMgdHdvIHByaW1hcnkgbWVhbnMgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhCitpbWFnZTpncmFwaGNvbXB1dGVyLXB1ZmZlcnMucG5nW3dpZHRoPTM1MCxmbG9hdD1yaWdodF0gVGlua2VyUG9wIHByb3ZpZGVzIHR3byBwcmltYXJ5IG1lYW5zIG9mIGludGVyYWN0aW5nIHdpdGggYQogZ3JhcGg6IGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PbmxpbmVfdHJhbnNhY3Rpb25fcHJvY2Vzc2luZ1tvbmxpbmUgdHJhbnNhY3Rpb24gcHJvY2Vzc2luZ10gKE9MVFApIGFuZAogbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ubGluZV9hbmFseXRpY2FsX3Byb2Nlc3Npbmdbb25saW5lIGFuYWx5dGljYWwgcHJvY2Vzc2luZ10gKE9MQVApLiBPTFRQLWJhc2VkCiBncmFwaCBzeXN0ZW1zIGFsbG93IHRoZSB1c2VyIHRvIHF1ZXJ5IHRoZSBncmFwaCBpbiByZWFsLXRpbWUuIEhvd2V2ZXIsIHR5cGljYWxseSwgcmVhbC10aW1lIHBlcmZvcm1hbmNlIGlzIG9ubHkKQEAgLTM5LDcgKzM5LDcgQEAKIGBWZXJ0ZXhQcm9ncmFtYC4gVGhlIHByb2dyYW1zIHNlbmQgbWVzc2FnZXMgdG8gb25lIGFub3RoZXIgd2l0aCB0aGUgdG9wb2xvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBncmFwaCBhY3RpbmcgYXMgdGhlCiBjb21tdW5pY2F0aW9uIG5ldHdvcmsgKHRob3VnaCByYW5kb20gbWVzc2FnZSBwYXNzaW5nIHBvc3NpYmxlKS4gSW4gbWFueSByZXNwZWN0cywgdGhlIG1lc3NhZ2VzIHBhc3NlZCBhcmUgbGlrZQogdGhlIE9MVFAgdHJhdmVyc2VycyBtb3ZpbmcgZnJvbSB2ZXJ0ZXgtdG8tdmVydGV4LiBIb3dldmVyLCBhbGwgbWVzc2FnZXMgYXJlIG1vdmluZyBpbmRlcGVuZGVudCBvZiBvbmUgYW5vdGhlciwgaW4KLXBhcmFsbGVsLiBPbmNlIGEgdmVydGV4IHByb2dyYW0gaXMgZmluaXNoZWQgY29tcHV0aW5nLCBUaW5rZXJQb3AzJ3MgT0xBUCBlbmdpbmUgc3VwcG9ydHMgYW55IG51bWJlcgorcGFyYWxsZWwuIE9uY2UgYSB2ZXJ0ZXggcHJvZ3JhbSBpcyBmaW5pc2hlZCBjb21wdXRpbmcsIFRpbmtlclBvcCdzIE9MQVAgZW5naW5lIHN1cHBvcnRzIGFueSBudW1iZXIKIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXBSZWR1Y2VbYE1hcFJlZHVjZWBdIGpvYnMgb3ZlciB0aGUgcmVzdWx0YW50IGdyYXBoLgogCiBJTVBPUlRBTlQ6IGBHcmFwaENvbXB1dGVyYCB3YXMgZGVzaWduZWQgZnJvbSB0aGUgc3RhcnQgdG8gYmUgdXNlZCB3aXRoaW4gYSBtdWx0aS1KVk0sIGRpc3RyaWJ1dGVkIGVudmlyb25tZW50IC0tCkBAIC04MSwxMyArODEsMTMgQEAKIHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoKS5wcm9ncmFtKFBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5idWlsZCgpLmNyZWF0ZSgpKS5zdWJtaXQoKS5nZXQoKQogcmVzdWx0Lm1lbW9yeSgpLnJ1bnRpbWUKIGcgPSByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKQotZy5WKCkudmFsdWVNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgpCiAtLS0tCiAKIE5PVEU6IFRoaXMgbW9kZWwgb2YgInZlcnRleC1jZW50cmljIGdyYXBoIGNvbXB1dGluZyIgd2FzIG1hZGUgcG9wdWxhciBieSBHb29nbGUncwogbGluazpodHRwOi8vZ29vZ2xlcmVzZWFyY2guYmxvZ3Nwb3QuY29tLzIwMDkvMDYvbGFyZ2Utc2NhbGUtZ3JhcGgtY29tcHV0aW5nLWF0LWdvb2dsZS5odG1sW1ByZWdlbF0gZ3JhcGggZW5naW5lLgogSW4gdGhlIG9wZW4gc291cmNlIHdvcmxkLCB0aGlzIG1vZGVsIGlzIGZvdW5kIGluIE9MQVAgZ3JhcGggY29tcHV0aW5nIHN5c3RlbXMgc3VjaCBhcyBsaW5rOmh0dHBzOi8vZ2lyYXBoLmFwYWNoZS5vcmcvW0dpcmFwaF0sCi1saW5rOmh0dHBzOi8vaGFtYS5hcGFjaGUub3JnL1tIYW1hXS4gVGlua2VyUG9wMyBleHRlbmRzIHRoZQorbGluazpodHRwczovL2hhbWEuYXBhY2hlLm9yZy9bSGFtYV0uIFRpbmtlclBvcCBleHRlbmRzIHRoZQogcG9wdWxhcml6ZWQgbW9kZWwgd2l0aCBpbnRlZ3JhdGVkIHBvc3QtcHJvY2Vzc2luZyA8PG1hcHJlZHVjZSxNYXBSZWR1Y2U+PiBqb2JzIG92ZXIgdGhlIHZlcnRleCBzZXQuCiAKIFtbbWFwcmVkdWNlXV0KQEAgLTk3LDcgKzk3LDcgQEAKIGVsZW1lbnRzIGluIHRoZSBncmFwaC4gSW4gbWFueSBzaXR1YXRpb25zLCBpdCBpcyBuZWNlc3NhcnkgdG8gYWdncmVnYXRlIHRob3NlIHJlc3VsdGFudCBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUKIHJlc3VsdCBzZXQgKGkuZS4gYSBzdGF0aXN0aWMpLiBGb3IgaW5zdGFuY2UsIGFzc3VtZSBhIFZlcnRleFByb2dyYW0gdGhhdCBjb21wdXRlcyBhIG5vbWluYWwgY2x1c3RlciBmb3IgZWFjaCB2ZXJ0ZXgKIChpLmUuIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21tdW5pdHlfc3RydWN0dXJlW2EgZ3JhcGggY2x1c3RlcmluZyBhbGdvcml0aG1dKS4gQXQgdGhlIGVuZCBvZiB0aGUKLWNvbXB1dGF0aW9uLCBlYWNoIHZlcnRleCB3aWxsIGhhdmUgYSBwcm9wZXJ0eSBkZW5vdGluZyB0aGUgY2x1c3RlciBpdCB3YXMgYXNzaWduZWQgdG8uIFRpbmtlclBvcDMgcHJvdmlkZXMgdGhlCitjb21wdXRhdGlvbiwgZWFjaCB2ZXJ0ZXggd2lsbCBoYXZlIGEgcHJvcGVydHkgZGVub3RpbmcgdGhlIGNsdXN0ZXIgaXQgd2FzIGFzc2lnbmVkIHRvLiBUaW5rZXJQb3AgcHJvdmlkZXMgdGhlCiBhYmlsaXR5IHRvIGFuc3dlciBnbG9iYWwgcXVlc3Rpb25zIGFib3V0IHRoZSBjbHVzdGVycy4gRm9yIGluc3RhbmNlLCBpbiBvcmRlciB0byBhbnN3ZXIgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMsCiBgTWFwUmVkdWNlYCBqb2JzIGFyZSByZXF1aXJlZDoKIApAQCAtMTA2LDcgKzEwNiw3IEBACiAgKiBXaGF0IGlzIHRoZSBhdmVyYWdlIGFnZSBvZiBlYWNoIHZlcnRleCBpbiBlYWNoIGNsdXN0ZXI/CiAgKiBXaGF0IGlzIHRoZSBkZWdyZWUgZGlzdHJpYnV0aW9uIG9mIHRoZSB2ZXJ0aWNlcyBpbiBlYWNoIGNsdXN0ZXI/CiAKLUEgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgYE1hcFJlZHVjZWAgQVBJIGluIFRpbmtlclBvcDMgaXMgcHJvdmlkZWQgYmVsb3cuIFRoZSBrZXkgaWRlYSBpcyB0aGF0IHRoZQorQSBjb21wcmVzc2VkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBgTWFwUmVkdWNlYCBBUEkgaW4gVGlua2VyUG9wIGlzIHByb3ZpZGVkIGJlbG93LiBUaGUga2V5IGlkZWEgaXMgdGhhdCB0aGUKIGBtYXBgLXN0YWdlIHByb2Nlc3NlcyBhbGwgdmVydGljZXMgdG8gZW1pdCBrZXkvdmFsdWUgcGFpcnMuIFRob3NlIHZhbHVlcyBhcmUgYWdncmVnYXRlZCBvbiB0aGVpciByZXNwZWN0aXZlIGtleQogZm9yIHRoZSBgcmVkdWNlYC1zdGFnZSB0byBkbyBpdHMgcHJvY2Vzc2luZyB0byB1bHRpbWF0ZWx5IHlpZWxkIG1vcmUga2V5L3ZhbHVlIHBhaXJzLgogCkBAIC0xMzksNyArMTM5LDcgQEAKIHJlc3VsdC5tZW1vcnkoKS5nZXQoJ2NsdXN0ZXJQb3B1bGF0aW9uJykKIGcgPSByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKQogZy5WKCkudmFsdWVzKFBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW0uQ0xVU1RFUikuZ3JvdXBDb3VudCgpLm5leHQoKQotZy5WKCkudmFsdWVNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgpCiAtLS0tCiAKIElmIHRoZXJlIGFyZSBudW1lcm91cyBzdGF0aXN0aWNzIGRlc2lyZWQsIHRoZW4gaXRzIHBvc3NpYmxlIHRvIHJlZ2lzdGVyIGFzIG1hbnkgTWFwUmVkdWNlIGpvYnMgYXMgbmVlZGVkLiBGb3IKQEAgLTE1NSwxNCArMTU1LDE1IEBACiByZXN1bHQubWVtb3J5KCkuY2x1c3RlckNvdW50CiAtLS0tCiAKLUlNUE9SVEFOVDogVGhlIE1hcFJlZHVjZSBtb2RlbCBvZiBUaW5rZXJQb3AzIGRvZXMgbm90IHN1cHBvcnQgTWFwUmVkdWNlIGNoYWluaW5nLiBUaHVzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlCitJTVBPUlRBTlQ6IFRoZSBNYXBSZWR1Y2UgbW9kZWwgb2YgVGlua2VyUG9wIGRvZXMgbm90IHN1cHBvcnQgTWFwUmVkdWNlIGNoYWluaW5nLiBUaHVzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlCiBNYXBSZWR1Y2Ugam9icyBhcmUgZXhlY3V0ZWQgaXMgaXJyZWxldmFudC4gVGhpcyBpcyBtYWRlIGFwcGFyZW50IHdoZW4gcmVhbGl6aW5nIHRoYXQgdGhlIGBtYXAoKWAtc3RhZ2UgdGFrZXMgYQogYFZlcnRleGAgYXMgaXRzIGlucHV0IGFuZCB0aGUgYHJlZHVjZSgpYC1zdGFnZSB5aWVsZHMga2V5L3ZhbHVlIHBhaXJzLiBUaHVzLCB0aGUgcmVzdWx0cyBvZiByZWR1Y2UgY2FuIG5vdCBmZWQgYmFjawogaW50byBhIGBtYXAoKWAuCiAKID09IEEgQ29sbGVjdGlvbiBvZiBWZXJ0ZXhQcm9ncmFtcwogCi1UaW5rZXJQb3AzIHByb3ZpZGVzIGEgY29sbGVjdGlvbiBvZiBWZXJ0ZXhQcm9ncmFtcyB0aGF0IGltcGxlbWVudCBjb21tb24gYWxnb3JpdGhtcy4gVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCitUaW5rZXJQb3AgcHJvdmlkZXMgYSBjb2xsZWN0aW9uIG9mIFZlcnRleFByb2dyYW1zIHRoYXQgaW1wbGVtZW50IGNvbW1vbiBhbGdvcml0aG1zLiBUaGlzIHNlY3Rpb24gZGlzY3Vzc2VzIHRoZSB2YXJpb3VzCitpbXBsZW1lbnRhdGlvbnMuCiAKIElNUE9SVEFOVDogVGhlIHZlcnRleCBwcm9ncmFtcyBwcmVzZW50ZWQgYXJlIHdoYXQgYXJlIHByb3ZpZGVkIGFzIG9mIFRpbmtlclBvcCB4Lnkuei4gT3ZlciB0aW1lLCB3aXRoIGZ1dHVyZSByZWxlYXNlcywKIG1vcmUgYWxnb3JpdGhtcyB3aWxsIGJlIGFkZGVkLgpAQCAtMzY3LDcgKzM2OCw3IEBACiByZXN1bHQgPSBncmFwaC5jb21wdXRlKCkucHJvZ3JhbShQYWdlUmFua1ZlcnRleFByb2dyYW0uYnVpbGQoKS5jcmVhdGUoKSkuc3VibWl0KCkuZ2V0KCkKIHJlc3VsdC5tZW1vcnkoKS5ydW50aW1lCiBnID0gcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkKLWcuVigpLnZhbHVlTWFwKCkKK2cuVigpLmVsZW1lbnRNYXAoKQogLS0tLQogCiBOb3RlIHRoYXQgYEdyYXBoVHJhdmVyc2FsYCBwcm92aWRlcyBhIDw8cGFnZXJhbmstc3RlcCxgcGFnZVJhbmsoKWA+Pi1zdGVwLgpAQCAtMzc1LDggKzM3Niw4IEBACiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcigpCi1nLlYoKS5wYWdlUmFuaygpLnZhbHVlTWFwKCkKLWcuVigpLnBhZ2VSYW5rKCkuYnkoJ3BhZ2VSYW5rJykudGltZXMoNSkub3JkZXIoKS5ieSgncGFnZVJhbmsnKS52YWx1ZU1hcCgpCitnLlYoKS5wYWdlUmFuaygpLmVsZW1lbnRNYXAoKQorZy5WKCkucGFnZVJhbmsoKS5ieSgncGFnZVJhbmsnKS50aW1lcyg1KS5vcmRlcigpLmJ5KCdwYWdlUmFuaycpLmVsZW1lbnRNYXAoKQogLS0tLQogCiBbW3BlZXJwcmVzc3VyZXZlcnRleHByb2dyYW1dXQpAQCAtMzk4LDExICszOTksNjcgQEAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKCkKLWcuVigpLnBlZXJQcmVzc3VyZSgpLmJ5KCdjbHVzdGVyJykudmFsdWVNYXAoKQotZy5WKCkucGVlclByZXNzdXJlKCkuYnkob3V0RSgna25vd3MnKSkuYnkoJ2NsdXN0ZXInKS52YWx1ZU1hcCgpCitnLlYoKS5wZWVyUHJlc3N1cmUoKS5ieSgnY2x1c3RlcicpLmVsZW1lbnRNYXAoKQorZy5WKCkucGVlclByZXNzdXJlKCkuYnkob3V0RSgna25vd3MnKSkuYnkoJ2NsdXN0ZXInKS5lbGVtZW50TWFwKCkKIC0tLS0KIAotW1tidWxrZHVtcGVydmVydGV4cHJvZ3JhbV1dCitbW2Nvbm5lY3RlZGNvbXBvbmVudHZlcnRleHByb2dyYW1dXQorPT09IENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0KKworVGhlIGBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtYCBpZGVudGlmaWVzIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ubmVjdGVkX2NvbXBvbmVudF8oZ3JhcGhfdGhlb3J5KVtDb25uZWN0ZWQgQ29tcG9uZW50XQoraW5zdGFuY2VzIGluIGEgZ3JhcGguIFNlZSA8PGNvbm5lY3RlZGNvbXBvbmVudC1zdGVwLGBjb25uZWN0ZWRDb21wb25lbnQoKWA+Pi1zdGVwIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitbW3Nob3J0ZXN0cGF0aHZlcnRleHByb2dyYW1dXQorPT09IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0KKworVGhlIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9yYW1gIHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGZpbmQgc2hvcnRlc3Qgbm9uLWN5Y2xpYyBwYXRocyBpbiB0aGUgZ3JhcGguIEl0IHByb3ZpZGVzIHNldmVyYWwgb3B0aW9ucyB0byBjb25maWd1cmUKK3RoZSBvdXRwdXQgZm9ybWF0LCB0aGUgc3RhcnQtIGFuZCBlbmQtdmVydGljZXMsIHRoZSBkaXJlY3Rpb24sIGEgY3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLCBhcyB3ZWxsIGFzIGEgZGlzdGFuY2UgbGltaXRhdGlvbi4gQnkgZGVmYXVsdCBpdCBqdXN0CitmaW5kcyBhbGwgdW5kaXJlY3RlZCwgc2hvcnRlc3QgcGF0aHMgaW4gdGhlIGdyYXBoLgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorc3B2cCA9IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKS5jcmVhdGUoKSA8MT4KK3Jlc3VsdCA9IGdyYXBoLmNvbXB1dGUoKS5wcm9ncmFtKHNwdnApLnN1Ym1pdCgpLmdldCgpIDwyPgorcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSA8Mz4KKy0tLS0KKworPDE+IENyZWF0ZSBhIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtYCB3aXRoIGl0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCis8Mj4gRXhlY3V0ZSB0aGUgYFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1gLgorPDM+IEdldCBhbGwgc2hvcnRlc3QgcGF0aHMgZnJvbSB0aGUgcmVzdWx0cyBtZW1vcnkuCisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitzcHZwID0gU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmluY2x1ZGVFZGdlcyh0cnVlKS5jcmVhdGUoKSA8MT4KK3Jlc3VsdCA9IGdyYXBoLmNvbXB1dGUoKS5wcm9ncmFtKHNwdnApLnN1Ym1pdCgpLmdldCgpIDwyPgorcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSA8Mz4KKy0tLS0KKworPDE+IENyZWF0ZSBhIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtYCBhcyBiZWZvcmUsIGJ1dCBjb25maWd1cmUgaXQgdG8gaW5jbHVkZSBlZGdlcyBpbiB0aGUgcmVzdWx0LgorPDI+IEV4ZWN1dGUgdGhlIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtYC4KKzwzPiBHZXQgYWxsIHNob3J0ZXN0IHBhdGhzIGZyb20gdGhlIHJlc3VsdHMgbWVtb3J5LgorCitUaGUgYFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uQnVpbGRlcmAgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIG1ldGhvZHM6CisKK1t3aWR0aD0iMTAwJSIsY29scz0iMywxNSw1IixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfCBNZXRob2QgfCBEZXNjcmlwdGlvbiB8IERlZmF1bHQKK3wgYHNvdXJjZShUcmF2ZXJzYWwpYCB8IFNldHMgYSBmaWx0ZXIgdHJhdmVyc2FsIGZvciB0aGUgc3RhcnQgdmVydGljZXMgKGUuZy4gYF9fLmhhcygnbmFtZScsJ21hcmtvJylgKS4gfCBhbGwgdmVydGljZXMgKGBfXy5pZGVudGl0eSgpYCkKK3wgYHRhcmdldChUcmF2ZXJzYWwpYCB8IFNldHMgYSBmaWx0ZXIgdHJhdmVyc2FsIGZvciB0aGUgZW5kIHZlcnRpY2VzLiB8IGFsbCB2ZXJ0aWNlcworfCBgZWRnZURpcmVjdGlvbihEaXJlY3Rpb24pYCB8IFNldHMgdGhlIGRpcmVjdGlvbiB0byB0cmF2ZXJzZSBkdXJpbmcgdGhlIHNob3J0ZXN0IHBhdGggZGlzY292ZXJ5LiB8IGBEaXJlY3Rpb24uQk9USGAKK3wgYGVkZ2VUcmF2ZXJzYWwoVHJhdmVyc2FsKWAgfCBTZXRzIGEgdHJhdmVyc2FsIHRoYXQgZW1pdHMgdGhlIGVkZ2VzIHRvIHRyYXZlcnNlIGZyb20gdGhlIGN1cnJlbnQgdmVydGV4LiB8IGBfXy5ib3RoRSgpYAorfCBgZGlzdGFuY2VQcm9wZXJ0eShTdHJpbmcpYCB8IFNldHMgdGhlIGVkZ2UgcHJvcGVydHkgdG8gdXNlIGZvciB0aGUgZGlzdGFuY2UgY2FsY3VsYXRpb25zLiB8IG5vbmUKK3wgYGRpc3RhbmNlVHJhdmVyc2FsKFRyYXZlcnNhbClgIHwgU2V0cyB0aGUgdHJhdmVyc2FsIHRoYXQgY2FsY3VsYXRlcyB0aGUgZGlzdGFuY2UgZm9yIHRoZSBjdXJyZW50IGVkZ2UuIHwgYF9fLmNvbnN0YW50KDEpYAorfCBgbWF4RGlzdGFuY2UoVHJhdmVyc2FsKWAgfCBMaW1pdHMgdGhlIHNob3J0ZXN0IHBhdGggZGlzdGFuY2UuIHwgbm9uZQorfCBgaW5jbHVkZUVkZ2VzKEJvb2xlYW4pYCB8IFdoZXRoZXIgdG8gaW5jbHVkZSBlZGdlcyBpbiBzaG9ydGVzdCBwYXRocyBvciBub3QuIHwgYGZhbHNlYAorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJTVBPUlRBTlQ6IElmIGEgbWF4aW11bSBkaXN0YW5jZSBpcyBwcm92aWRlZCwgdGhlIGRpc2NvdmVyeSBwcm9jZXNzIHdpbGwgb25seSBzdG9wIHRvIGZvbGxvdyBhIHBhdGggYXQgdGhpcyBkaXN0YW5jZSBpZiB0aGVyZSB3YXMgbm8KK2N1c3RvbSBkaXN0YW5jZSBwcm9wZXJ0eSBvciB0cmF2ZXJzYWwgcHJvdmlkZWQuIEN1c3RvbSBkaXN0YW5jZXMgY2FuIGJlIG5lZ2F0aXZlLCBoZW5jZSBleGNlZWRpbmcgdGhlIG1heGltdW0gZGlzdGFuY2UgZG9lc24ndCBtZWFuIHRoYXQgdGhlcmUKK2Nhbid0IGJlIGFueSBtb3JlIHZhbGlkIHBhdGhzLiBIb3dldmVyLCBwYXRocyB3aWxsIGJlIGZpbHRlcmVkIGF0IHRoZSBlbmQsIHdoZW4gbm8gbW9yZSBub24tY3ljbGljIHBhdGhzIGNhbiBiZSBmb3VuZC4gVGhlIGJvdHRvbSBsaW5lIGlzIHRoYXQKK2N1c3RvbSBkaXN0YW5jZSBwcm9wZXJ0aWVzIG9yIHRyYXZlcnNhbHMgY2FuIGxlYWQgdG8gbXVjaCBsb25nZXIgcnVudGltZXMgYW5kIGEgbXVjaCBoaWdoZXIgbWVtb3J5IGNvbnN1bXB0aW9uLgorCitOb3RlIHRoYXQgYEdyYXBoVHJhdmVyc2FsYCBwcm92aWRlcyBhIDw8c2hvcnRlc3RwYXRoLXN0ZXAsYHNob3J0ZXN0UGF0aCgpYD4+LXN0ZXAuCisKIFtbY2xvbmV2ZXJ0ZXhwcm9ncmFtXV0KID09PSBDbG9uZVZlcnRleFByb2dyYW0KIApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS10cmF2ZXJzYWwuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLXRyYXZlcnNhbC5hc2NpaWRvYwppbmRleCAyY2Y3NjI1Li4wNmFmYWE1IDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLXRyYXZlcnNhbC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLXRyYXZlcnNhbC5hc2NpaWRvYwpAQCAtNDIsOSArNDIsOSBAQAogaW1hZ2U6OnN0ZXAtdHlwZXMucG5nW3dpZHRoPTY1MF0KIAogQSBgR3JhcGhUcmF2ZXJzYWw8UyxFPmAgaXMgc3Bhd25lZCBmcm9tIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gSXQgY2FuIGFsc28gYmUgc3Bhd25lZCBhbm9ueW1vdXNseSAoaS5lLiBlbXB0eSkKLXZpYSBgK19fK2AuIEEgZ3JhcGggdHJhdmVyc2FsIGlzIGNvbXBvc2VkIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiBzdGVwcy4gQWxsIHRoZSBzdGVwcyBwcm92aWRlZCBieSBgR3JhcGhUcmF2ZXJzYWxgCit2aWEgYF9fYC4gQSBncmFwaCB0cmF2ZXJzYWwgaXMgY29tcG9zZWQgb2YgYW4gb3JkZXJlZCBsaXN0IG9mIHN0ZXBzLiBBbGwgdGhlIHN0ZXBzIHByb3ZpZGVkIGJ5IGBHcmFwaFRyYXZlcnNhbGAKIGluaGVyaXQgZnJvbSB0aGUgbW9yZSBnZW5lcmFsIGZvcm1zIGRpYWdyYW1tZWQgYWJvdmUuIEEgbGlzdCBvZiBhbGwgdGhlIHN0ZXBzIChhbmQgdGhlaXIgZGVzY3JpcHRpb25zKSBhcmUgcHJvdmlkZWQKLWluIHRoZSBUaW5rZXJQb3AzIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWxbR3JhcGhUcmF2ZXJzYWwgSmF2YURvY10uCitpbiB0aGUgVGlua2VyUG9wIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWxbR3JhcGhUcmF2ZXJzYWwgSmF2YURvY10uCiBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIHdpbGwgZGVtb25zdHJhdGUgdGhlIEdyYXBoVHJhdmVyc2FsIHN0ZXBzIHVzaW5nIHRoZSA8PGdyZW1saW4tY29uc29sZSxHcmVtbGluIENvbnNvbGU+Pi4KIAogSU1QT1JUQU5UOiBUaGUgYmFzaWNzIGZvciBzdGFydGluZyBhIHRyYXZlcnNhbCBhcmUgZGVzY3JpYmVkIGluIDw8dGhlLWdyYXBoLXByb2Nlc3MsVGhlIEdyYXBoIFByb2Nlc3M+PiBzZWN0aW9uIGFzCkBAIC0xNDksNiArMTQ5LDcgQEAKIAogQ29uZmlndXJhdGlvbiBtZXRob2RzIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHRoZWlyIG5hbWVzIHdpdGggbWFrZSB1c2Ugb2YgIndpdGgiIGFzIGEgcHJlZml4OgogCisqIGB3aXRoKClgIC0gQWRkcyBhcmJpdHJhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGdyYXBoIHByb3ZpZGVycyBhcyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCiAqIGB3aXRoQnVsaygpYCAtIFRoaXMgdmFsdWUgaXMgYHRydWVgIGJ5IGRlZmF1bHQgYWxsb3dpbmcgZm9yIG5vcm1hbCA8PGJhcnJpZXItc3RlcCxidWxraW5nPj4gb3BlcmF0aW9ucywgYnV0IHdoZW4gc2V0CiB0byBgZmFsc2VgLCBpbnRyb2R1Y2VzIGEgc3VidGxlIGNoYW5nZSBpbiB0aGF0IGJlaGF2aW9yIGFzIHNob3duIGluIGV4YW1wbGVzIGluIDw8c2Fjay1zdGVwLHNhY2soKS1zdGVwPj4uCiAqIGB3aXRoQ29tcHV0ZXIoKWAgLSBBZGRzIGEgYENvbXB1dGVyYCB0aGF0IHdpbGwgYmUgdXNlZCB0byBwcm9jZXNzIHRoZSB0cmF2ZXJzYWwgKDw8c3BhcmtncmFwaGNvbXB1dGVyLGV4YW1wbGU+PikuCkBAIC0xOTEsMTggKzE5MiwyMiBAQAogZy5hZGRWKCdwZXJzb24nKS5pdGVyYXRlKCkgPDk+CiAtLS0tCiAKLTwxPiBgaGFzTmV4dCgpYCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlcmUgYXJlIGF2YWlsYWJsZSByZXN1bHRzLgorPDE+IGBoYXNOZXh0KClgIGRldGVybWluZXMgd2hldGhlciB0aGVyZSBhcmUgYXZhaWxhYmxlIHJlc3VsdHMgKG5vdCBzdXBwb3J0ZWQgaW4gYGdyZW1saW4tamF2YXNjcmlwdGApLgogPDI+IGBuZXh0KClgIHdpbGwgcmV0dXJuIHRoZSBuZXh0IHJlc3VsdC4KLTwzPiBgbmV4dChuKWAgd2lsbCByZXR1cm4gdGhlIG5leHQgYG5gIHJlc3VsdHMgaW4gYSBsaXN0LgotPDQ+IGB0cnlOZXh0KClgIHdpbGwgcmV0dXJuIGFuIGBPcHRpb25hbGAgYW5kIHRodXMsIGlzIGEgY29tcG9zaXRlIG9mIGBoYXNOZXh0KClgL2BuZXh0KClgLgorPDM+IGBuZXh0KG4pYCB3aWxsIHJldHVybiB0aGUgbmV4dCBgbmAgcmVzdWx0cyBpbiBhIGxpc3QgKG5vdCBzdXBwb3J0ZWQgaW4gYGdyZW1saW4tamF2YXNjcmlwdGAgb3IgR3JlbWxpbi5ORVQpLgorPDQ+IGB0cnlOZXh0KClgIHdpbGwgcmV0dXJuIGFuIGBPcHRpb25hbGAgYW5kIHRodXMsIGlzIGEgY29tcG9zaXRlIG9mIGBoYXNOZXh0KClgL2BuZXh0KClgIChvbmx5IHN1cHBvcnRlZCBmb3IgSlZNIGxhbmd1YWdlcykuCiA8NT4gYHRvTGlzdCgpYCB3aWxsIHJldHVybiBhbGwgcmVzdWx0cyBpbiBhIGxpc3QuCi08Nj4gYHRvU2V0KClgIHdpbGwgcmV0dXJuIGFsbCByZXN1bHRzIGluIGEgc2V0ICh0aHVzLCBkdXBsaWNhdGVzIHJlbW92ZWQpLgotPDc+IGB0b0J1bGtTZXQoKWAgd2lsbCByZXR1cm4gYWxsIHJlc3VsdHMgaW4gYSB3ZWlnaHRlZCBzZXQgKHRodXMsIGR1cGxpY2F0ZXMgcHJlc2VydmVkIHZpYSB3ZWlnaHRpbmcpLgotPDg+IGBmaWxsKGNvbGxlY3Rpb24pYCB3aWxsIHB1dCBhbGwgcmVzdWx0cyBpbiB0aGUgcHJvdmlkZWQgY29sbGVjdGlvbiBhbmQgcmV0dXJuIHRoZSBjb2xsZWN0aW9uIHdoZW4gY29tcGxldGUuCis8Nj4gYHRvU2V0KClgIHdpbGwgcmV0dXJuIGFsbCByZXN1bHRzIGluIGEgc2V0IGFuZCB0aHVzLCBkdXBsaWNhdGVzIHJlbW92ZWQgKG5vdCBzdXBwb3J0ZWQgaW4gYGdyZW1saW4tamF2YXNjcmlwdGApLgorPDc+IGB0b0J1bGtTZXQoKWAgd2lsbCByZXR1cm4gYWxsIHJlc3VsdHMgaW4gYSB3ZWlnaHRlZCBzZXQgYW5kIHRodXMsIGR1cGxpY2F0ZXMgcHJlc2VydmVkIHZpYSB3ZWlnaHRpbmcgKG9ubHkgc3VwcG9ydGVkIGZvciBKVk0gbGFuZ3VhZ2VzKS4KKzw4PiBgZmlsbChjb2xsZWN0aW9uKWAgd2lsbCBwdXQgYWxsIHJlc3VsdHMgaW4gdGhlIHByb3ZpZGVkIGNvbGxlY3Rpb24gYW5kIHJldHVybiB0aGUgY29sbGVjdGlvbiB3aGVuIGNvbXBsZXRlIChvbmx5IHN1cHBvcnRlZCBmb3IgSlZNIGxhbmd1YWdlcykuCiA8OT4gYGl0ZXJhdGUoKWAgZG9lcyBub3QgZXhhY3RseSBmaXQgdGhlIGRlZmluaXRpb24gb2YgYSB0ZXJtaW5hbCBzdGVwIGluIHRoYXQgaXQgZG9lc24ndCByZXR1cm4gYSByZXN1bHQsIGJ1dCBzdGlsbAogcmV0dXJucyBhIHRyYXZlcnNhbCAtIGl0IGRvZXMgaG93ZXZlciBiZWhhdmUgYXMgYSB0ZXJtaW5hbCBzdGVwIGluIHRoYXQgaXQgaXRlcmF0ZXMgdGhlIHRyYXZlcnNhbCBhbmQgZ2VuZXJhdGVzIHNpZGUKIGVmZmVjdHMgd2l0aG91dCByZXR1cm5pbmcgdGhlIGFjdHVhbCByZXN1bHQuCiAKK1RoZXJlIGlzIGFsc28gdGhlIGBwcm9taXNlKClgIHRlcm1pbmF0b3Igc3RlcCwgd2hpY2ggY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJlbW90ZSB0cmF2ZXJzYWxzIHRvCis8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBvciA8PGNvbm5lY3RpbmctcmdwLFJHUHM+Pi4gSXQgc3RhcnRzIGEgcHJvbWlzZSB0byBleGVjdXRlIGEgZnVuY3Rpb24KK29uIHRoZSBjdXJyZW50IGBUcmF2ZXJzYWxgIHRoYXQgd2lsbCBiZSBjb21wbGV0ZWQgaW4gdGhlIGZ1dHVyZS4KKwogRmluYWxseSwgPDxleHBsYWluLXN0ZXAsYGV4cGxhaW4oKWA+Pi1zdGVwIGlzIGFsc28gYSB0ZXJtaW5hbCBzdGVwIGFuZCBpcyBkZXNjcmliZWQgaW4gaXRzIG93biBzZWN0aW9uLgogCiBbW2FkZGVkZ2Utc3RlcF1dCkBAIC0zMDUsMjggKzMxMCwzMiBAQAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9WZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5odG1sKytbYENhcmRpbmFsaXR5YF0KIAogW1thZ2dyZWdhdGUtc3RlcF1dCitbW3N0b3JlLXN0ZXBdXQogPT09IEFnZ3JlZ2F0ZSBTdGVwCiAKIGltYWdlOjphZ2dyZWdhdGUtc3RlcC5wbmdbd2lkdGg9ODAwXQogCiBUaGUgYGFnZ3JlZ2F0ZSgpYC1zdGVwICgqc2lkZUVmZmVjdCopIGlzIHVzZWQgdG8gYWdncmVnYXRlIGFsbCB0aGUgb2JqZWN0cyBhdCBhIHBhcnRpY3VsYXIgcG9pbnQgb2YgdHJhdmVyc2FsIGludG8gYQotYENvbGxlY3Rpb25gLiBUaGUgc3RlcCB1c2VzIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FYWdlcl9ldmFsdWF0aW9uW2VhZ2VyIGV2YWx1YXRpb25dIGluIHRoYXQgbm8gb2JqZWN0cwotY29udGludWUgb24gdW50aWwgYWxsIHByZXZpb3VzIG9iamVjdHMgaGF2ZSBiZWVuIGZ1bGx5IGFnZ3JlZ2F0ZWQgKGFzIG9wcG9zZWQgdG8gPDxzdG9yZS1zdGVwLGBzdG9yZSgpYD4+IHdoaWNoCi1saW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF6eV9ldmFsdWF0aW9uW2xhemlseV0gZmlsbHMgYSBjb2xsZWN0aW9uKS4gVGhlIGVhZ2VyIGV2YWx1YXRpb24gbmF0dXJlIGlzIGNydWNpYWwKLWluIHNpdHVhdGlvbnMgd2hlcmUgZXZlcnl0aGluZyBhdCBhIHBhcnRpY3VsYXIgcG9pbnQgaXMgcmVxdWlyZWQgZm9yIGZ1dHVyZSBjb21wdXRhdGlvbi4gQW4gZXhhbXBsZSBpcyBwcm92aWRlZCBiZWxvdy4KK2BDb2xsZWN0aW9uYC4gVGhlIHN0ZXAgaXMgdXNlcyBgU2NvcGVgIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSBhZ2dyZWdhdGluZyBiZWhhdmlvci4gRm9yIGBnbG9iYWxgIHNjb3BlIHRoaXMgbWVhbnMgdGhhdAordGhlIHN0ZXAgd2lsbCB1c2UgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VhZ2VyX2V2YWx1YXRpb25bZWFnZXIgZXZhbHVhdGlvbl0gaW4gdGhhdCBubyBvYmplY3RzIGNvbnRpbnVlIG9uCit1bnRpbCBhbGwgcHJldmlvdXMgb2JqZWN0cyBoYXZlIGJlZW4gZnVsbHkgYWdncmVnYXRlZC4gVGhlIGVhZ2VyIGV2YWx1YXRpb24gbW9kZWwgaXMgY3J1Y2lhbCBpbiBzaXR1YXRpb25zCit3aGVyZSBldmVyeXRoaW5nIGF0IGEgcGFydGljdWxhciBwb2ludCBpcyByZXF1aXJlZCBmb3IgZnV0dXJlIGNvbXB1dGF0aW9uLiBCeSBkZWZhdWx0LCB3aGVuIHRoZSBvdmVybG9hZCBvZgorYGFnZ3JlZ2F0ZSgpYCBpcyBjYWxsZWQgd2l0aG91dCBhIGBTY29wZWAsIHRoZSBkZWZhdWx0IGlzIGBnbG9iYWxgLiBBbiBleGFtcGxlIGlzIHByb3ZpZGVkIGJlbG93LgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQogZy5WKDEpLm91dCgnY3JlYXRlZCcpIDwxPgogZy5WKDEpLm91dCgnY3JlYXRlZCcpLmFnZ3JlZ2F0ZSgneCcpIDwyPgotZy5WKDEpLm91dCgnY3JlYXRlZCcpLmFnZ3JlZ2F0ZSgneCcpLmluKCdjcmVhdGVkJykgPDM+Ci1nLlYoMSkub3V0KCdjcmVhdGVkJykuYWdncmVnYXRlKCd4JykuaW4oJ2NyZWF0ZWQnKS5vdXQoJ2NyZWF0ZWQnKSA8ND4KK2cuVigxKS5vdXQoJ2NyZWF0ZWQnKS5hZ2dyZWdhdGUoZ2xvYmFsLCAneCcpIDwzPgorZy5WKDEpLm91dCgnY3JlYXRlZCcpLmFnZ3JlZ2F0ZSgneCcpLmluKCdjcmVhdGVkJykgPDQ+CitnLlYoMSkub3V0KCdjcmVhdGVkJykuYWdncmVnYXRlKCd4JykuaW4oJ2NyZWF0ZWQnKS5vdXQoJ2NyZWF0ZWQnKSA8NT4KIGcuVigxKS5vdXQoJ2NyZWF0ZWQnKS5hZ2dyZWdhdGUoJ3gnKS5pbignY3JlYXRlZCcpLm91dCgnY3JlYXRlZCcpLgotICAgICAgIHdoZXJlKHdpdGhvdXQoJ3gnKSkudmFsdWVzKCduYW1lJykgPDU+CisgICAgICAgd2hlcmUod2l0aG91dCgneCcpKS52YWx1ZXMoJ25hbWUnKSA8Nj4KIC0tLS0KIAogPDE+IFdoYXQgaGFzIG1hcmtvIGNyZWF0ZWQ/CiA8Mj4gQWdncmVnYXRlIGFsbCBoaXMgY3JlYXRpb25zLgorPDM+IElkZW50aWNhbCB0byB0aGUgcHJldmlvdXMgbGluZS4KIDwzPiBXaG8gYXJlIG1hcmtvJ3MgY29sbGFib3JhdG9ycz8KIDw0PiBXaGF0IGhhdmUgbWFya28ncyBjb2xsYWJvcmF0b3JzIGNyZWF0ZWQ/CiA8NT4gV2hhdCBoYXZlIG1hcmtvJ3MgY29sbGFib3JhdG9ycyBjcmVhdGVkIHRoYXQgaGUgaGFzbid0IGNyZWF0ZWQ/CkBAIC0zNDMsOSArMzUyLDMxIEBACiBnLlYoKS5vdXQoJ2tub3dzJykuYWdncmVnYXRlKCd4JykuYnkoJ25hbWUnKS5jYXAoJ3gnKQogLS0tLQogCitGb3IgYGxvY2FsYCBzY29wZSB0aGUgYWdncmVnYXRpb24gd2lsbCBvY2N1ciBpbiBhIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXp5X2V2YWx1YXRpb25bbGF6eV0gZmFzaGlvbi4KKworTk9URTogUHJpb3IgdG8gMy40LjMsIGBsb2NhbGAgYWdncmVnYXRpb24gKGkuZS4gbGF6eSkgZXZhbHVhdGlvbiB3YXMgaGFuZGxlZCBieSBgc3RvcmUoKWAtc3RlcC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuVigpLmFnZ3JlZ2F0ZShnbG9iYWwsICd4JykubGltaXQoMSkuY2FwKCd4JykKK2cuVigpLmFnZ3JlZ2F0ZShsb2NhbCwgJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKQorZy53aXRob3V0U3RyYXRlZ2llcyhFYXJseUxpbWl0U3RyYXRlZ3kpLlYoKS5hZ2dyZWdhdGUobG9jYWwsJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKQorLS0tLQorCitJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IGBFYXJseUxpbWl0U3RyYXRlZ3lgIGludHJvZHVjZWQgaW4gMy4zLjUgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBgYWdncmVnYXRlKGxvY2FsKWAuCitXaXRob3V0IHRoYXQgc3RyYXRlZ3kgKHdoaWNoIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0KSwgdGhlcmUgYXJlIHR3byByZXN1bHRzIGluIHRoZSBgYWdncmVnYXRlKClgIHNpZGUtZWZmZWN0IGV2ZW4KK3Rob3VnaCB0aGUgaW50ZXJ2YWwgc2VsZWN0aW9uIGlzIGZvciAxIG9iamVjdC4gUmVhbGl6ZSB0aGF0IHdoZW4gdGhlIHNlY29uZCBvYmplY3QgaXMgb24gaXRzIHdheSB0byB0aGUgYHJhbmdlKClgCitmaWx0ZXIgKGkuZS4gYFswLi4xXWApLCBpdCBwYXNzZXMgdGhyb3VnaCBgYWdncmVnYXRlKClgIGFuZCB0aHVzLCBzdG9yZWQgYmVmb3JlIGZpbHRlcmVkLgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZy5FKCkuc3RvcmUoJ3gnKS5ieSgnd2VpZ2h0JykuY2FwKCd4JykKKy0tLS0KKwogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIAotbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2FnZ3JlZ2F0ZS1qYXZhLmxhbmcuU3RyaW5nLSsrW2BhZ2dyZWdhdGUoU3RyaW5nKWBdCitsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjYWdncmVnYXRlLWphdmEubGFuZy5TdHJpbmctKytbYGFnZ3JlZ2F0ZShTdHJpbmcpYF0sCisrK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2FnZ3JlZ2F0ZS1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlLGphdmEubGFuZy5TdHJpbmctKytbYGFnZ3JlZ2F0ZShTY29wZSxTdHJpbmcpYF0KIAogW1thbmQtc3RlcF1dCiA9PT0gQW5kIFN0ZXAKQEAgLTM2OCw4ICszOTksNyBAQAogVGhlIGBhbmQoKWAtc3RlcCBjYW4gdGFrZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHRyYXZlcnNhbHMuIEFsbCB0cmF2ZXJzYWxzIG11c3QgcHJvZHVjZSBhdCBsZWFzdCBvbmUgb3V0cHV0IGZvciB0aGUKIG9yaWdpbmFsIHRyYXZlcnNlciB0byBwYXNzIHRvIHRoZSBuZXh0IHN0ZXAuCiAKLUFuIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZpeF9ub3RhdGlvbltpbmZpeCBub3RhdGlvbl0gY2FuIGJlIHVzZWQgYXMgd2VsbC4gVGhvdWdoLCB3aXRoIGluZml4IG5vdGF0aW9uLAotb25seSB0d28gdHJhdmVyc2FscyBjYW4gYmUgYW5kJ2QgdG9nZXRoZXIuCitBbiBsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5maXhfbm90YXRpb25baW5maXggbm90YXRpb25dIGNhbiBiZSB1c2VkIGFzIHdlbGwuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCkBAIC0zOTAsNyArNDIwLDcgQEAKIFtOT1RFLCBjYXB0aW9uPUdyb292eV0KID09PT0KIFRoZSB0ZXJtIGBhc2AgaXMgYSByZXNlcnZlZCB3b3JkIGluIEdyb292eSwgYW5kIHdoZW4gdGhlcmVmb3JlIHVzZWQgYXMgcGFydCBvZiBhbiBhbm9ueW1vdXMgdHJhdmVyc2FsIG11c3QgYmUgcmVmZXJyZWQKLXRvIGluIEdyZW1saW4gd2l0aCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgYCtfXy5hcygpK2AuCit0byBpbiBHcmVtbGluIHdpdGggdGhlIGRvdWJsZSB1bmRlcnNjb3JlIGBfXy5hcygpYC4KID09PT0KIAogW05PVEUsIGNhcHRpb249UHl0aG9uXQpAQCAtNDQ1LDcgKzQ3NSw4IEBACiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCiBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKQotZ3JhcGguaW8oZ3JhcGhtbCgpKS5yZWFkR3JhcGgoJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKQorZyA9IGdyYXBoLnRyYXZlcnNhbCgpCitnLmlvKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykucmVhZCgpLml0ZXJhdGUoKQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhvdXRTdHJhdGVnaWVzKExhenlCYXJyaWVyU3RyYXRlZ3kpIDwxPgogY2xvY2tXaXRoUmVzdWx0KDEpe2cuVigpLmJvdGgoKS5ib3RoKCkuYm90aCgpLmNvdW50KCkubmV4dCgpfSA8Mj4KIGNsb2NrV2l0aFJlc3VsdCgxKXtnLlYoKS5yZXBlYXQoYm90aCgpKS50aW1lcygzKS5jb3VudCgpLm5leHQoKX0gPDM+CkBAIC00NjcsOCArNDk4LDggQEAKIFtncmVtbGluLWdyb292eV0KIC0tLS0KIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCi1nID0gZ3JhcGgudHJhdmVyc2FsKCkgPDE+CitnID0gZ3JhcGgudHJhdmVyc2FsKCkgIDwxPgorZy5pbygnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpLnJlYWQoKS5pdGVyYXRlKCkKIGNsb2NrV2l0aFJlc3VsdCgxKXtnLlYoKS5ib3RoKCkuYm90aCgpLmJvdGgoKS5jb3VudCgpLm5leHQoKX0KIGcuVigpLmJvdGgoKS5ib3RoKCkuYm90aCgpLmNvdW50KCkuaXRlcmF0ZSgpLnRvU3RyaW5nKCkgIDwyPgogLS0tLQpAQCAtNTk2LDcgKzYyNyw3IEBACiAgICAgICBjaG9vc2UodmFsdWVzKCduYW1lJykpLgogICAgICAgICBvcHRpb24oJ21hcmtvJywgdmFsdWVzKCdhZ2UnKSkuCiAgICAgICAgIG9wdGlvbignam9zaCcsIHZhbHVlcygnbmFtZScpKS4KLSAgICAgICAgb3B0aW9uKCd2YWRhcycsIHZhbHVlTWFwKCkpLgorICAgICAgICBvcHRpb24oJ3ZhZGFzJywgZWxlbWVudE1hcCgpKS4KICAgICAgICAgb3B0aW9uKCdwZXRlcicsIGxhYmVsKCkpCiAtLS0tCiAKQEAgLTY1Myw2ICs2ODQsNDEgQEAKIAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2NvaW4tZG91YmxlLSsrW2Bjb2luKGRvdWJsZSlgXQogCitbW2Nvbm5lY3RlZGNvbXBvbmVudC1zdGVwXV0KKz09PSBDb25uZWN0ZWRDb21wb25lbnQgU3RlcAorCitUaGUgYGNvbm5lY3RlZENvbXBvbmVudCgpYCBzdGVwIHBlcmZvcm1zIGEgY29tcHV0YXRpb24gdG8gaWRlbnRpZnkgbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25uZWN0ZWRfY29tcG9uZW50XyhncmFwaF90aGVvcnkpW0Nvbm5lY3RlZCBDb21wb25lbnRdCitpbnN0YW5jZXMgaW4gYSBncmFwaC4gV2hlbiB0aGlzIHN0ZXAgY29tcGxldGVzLCB0aGUgdmVydGljZXMgd2lsbCBiZSBsYWJlbGxlZCB3aXRoIGEgY29tcG9uZW50IGlkZW50aWZpZXIgdG8gZGVub3RlCit0aGUgY29tcG9uZW50IHRvIHdoaWNoIHRoZXkgYXJlIGFzc29jaWF0ZWQuCisKK0lNUE9SVEFOVDogVGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCBpcyBhIGBWZXJ0ZXhDb21wdXRpbmdgLXN0ZXAgYW5kIGFzIHN1Y2gsIGNhbiBvbmx5IGJlIHVzZWQgYWdhaW5zdCBhIGdyYXBoCit0aGF0IHN1cHBvcnRzIGBHcmFwaENvbXB1dGVyYCAoT0xBUCkuCisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitnID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKCkKK2cuVigpLgorICBjb25uZWN0ZWRDb21wb25lbnQoKS4KKyAgICB3aXRoKENvbm5lY3RlZENvbXBvbmVudC5wcm9wZXJ0eU5hbWUsICdjb21wb25lbnQnKS4KKyAgcHJvamVjdCgnbmFtZScsJ2NvbXBvbmVudCcpLgorICAgIGJ5KCduYW1lJykuCisgICAgYnkoJ2NvbXBvbmVudCcpCitnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCisgIGNvbm5lY3RlZENvbXBvbmVudCgpLgorICAgIHdpdGgoQ29ubmVjdGVkQ29tcG9uZW50LnByb3BlcnR5TmFtZSwgJ2NvbXBvbmVudCcpLgorICAgIHdpdGgoQ29ubmVjdGVkQ29tcG9uZW50LmVkZ2VzLCBvdXRFKCdrbm93cycpKS4KKyAgcHJvamVjdCgnbmFtZScsJ2NvbXBvbmVudCcpLgorICAgIGJ5KCduYW1lJykuCisgICAgYnkoJ2NvbXBvbmVudCcpCistLS0tCisKK05vdGUgdGhlIHVzZSBvZiB0aGUgYHdpdGgoKWAgbW9kdWxhdGluZyBzdGVwIHdoaWNoIHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgYWxnb3JpdGhtLiBJdCB0YWtlcworY29uZmlndXJhdGlvbiBrZXlzIGZyb20gdGhlIGBDb25uZWN0ZWRDb21wb25lbnRgIGNsYXNzIGFuZCBpcyBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHRvIHRoZSBHcmVtbGluIENvbnNvbGUuCisKKypBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCisKK2xpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNjb25uZWN0ZWRDb21wb25lbnQtLSsrW2Bjb25uZWN0ZWRDb21wb25lbnQoKWBdCisKIFtbY29uc3RhbnQtc3RlcF1dCiA9PT0gQ29uc3RhbnQgU3RlcAogCkBAIC03NTIsNyArODE4LDcgQEAKIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KLWcuVigpLnZhbHVlTWFwKHRydWUsICduYW1lJykKK2cuVigpLmVsZW1lbnRNYXAoJ25hbWUnKQogZy5WKCkuZGVkdXAoKS5ieShsYWJlbCkudmFsdWVzKCduYW1lJykKIC0tLS0KIApAQCAtNzg0LDcgKzg1MCw3IEBACiBnLlYoKS5vdXRFKCkuZHJvcCgpCiBnLkUoKQogZy5WKCkucHJvcGVydGllcygnbmFtZScpLmRyb3AoKQotZy5WKCkudmFsdWVNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgpCiBnLlYoKS5kcm9wKCkKIGcuVigpCiAtLS0tCkBAIC03OTMsNiArODU5LDM3IEBACiAKICogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2Ryb3AtLSsrW2Bkcm9wKClgXQogCitbW2VsZW1lbnRtYXAtc3RlcF1dCis9PT0gRWxlbWVudE1hcCBTdGVwCisKK1RoZSBgZWxlbWVudE1hcCgpYC1zdGVwIHlpZWxkcyBhIGBNYXBgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJ1Y3R1cmUgb2YgYW4gZWxlbWVudC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuVigpLmVsZW1lbnRNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgnYWdlJykKK2cuVigpLmVsZW1lbnRNYXAoJ2FnZScsJ2JsYWgnKQorZy5FKCkuZWxlbWVudE1hcCgpCistLS0tCisKK0l0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIG1hcCBvZiBhIHZlcnRleCBhc3N1bWVzIHRoYXQgY2FyZGluYWxpdHkgZm9yIGVhY2gga2V5IGlzIGBzaW5nbGVgIGFuZCBpZiBpdCBpcyBgbGlzdGAKK3RoZW4gb25seSB0aGUgZmlyc3QgaXRlbSBlbmNvdW50ZXJlZCB3aWxsIGJlIHJldHVybmVkLiBBcyBgc2luZ2xlYCBpcyB0aGUgbW9yZSBjb21tb24gY2FyZGluYWxpdHkgZm9yIHByb3BlcnRpZXMgdGhpcworYXNzdW1wdGlvbiBzaG91bGQgc2VydmUgdGhlIGdyZWF0ZXN0IG51bWJlciBvZiB1c2UgY2FzZXMuCisKK1tncmVtbGluLWdyb292eSx0aGVDcmV3XQorLS0tLQorZy5WKCkuZWxlbWVudE1hcCgpCitnLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLnByb3BlcnRpZXMoJ2xvY2F0aW9uJykKK2cuVigpLmhhcygnbmFtZScsJ21hcmtvJykucHJvcGVydGllcygnbG9jYXRpb24nKS5lbGVtZW50TWFwKCkKKy0tLS0KKworSU1QT1JUQU5UOiBUaGUgYGVsZW1lbnRNYXAoKWAtc3RlcCBkb2VzIG5vdCByZXR1cm4gdGhlIHZlcnRleCBsYWJlbHMgZm9yIGluY2lkZW50IHZlcnRpY2VzIHdoZW4gdXNpbmcgYEdyYXBoQ29tcHV0ZXJgCithcyB0aGUgYGlkYCBpcyB0aGUgb25seSBhdmFpbGFibGUgZGF0YSB0byB0aGUgc3RhciBncmFwaC4KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2VsZW1lbnRNYXAtamF2YS5sYW5nLlN0cmluZy4uLi0rK1tgZWxlbWVudE1hcChTdHJpbmcuLi4pYF0KKwogW1tlbWl0LXN0ZXBdXQogPT09IEVtaXQgU3RlcAogCkBAIC0xMDA2LDE2ICsxMTAzLDE4IEBACiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQogZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpCitnLlYoKS5oYXNMYWJlbCgncGVyc29uJywnbmFtZScsJ21hcmtvJykKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5vdXQoKS5oYXMoJ25hbWUnLHdpdGhpbigndmFkYXMnLCdqb3NoJykpCiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykub3V0KCkuaGFzKCduYW1lJyx3aXRoaW4oJ3ZhZGFzJywnam9zaCcpKS4KICAgICAgIG91dEUoKS5oYXNMYWJlbCgnY3JlYXRlZCcpCiBnLlYoKS5oYXMoJ2FnZScsaW5zaWRlKDIwLDMwKSkudmFsdWVzKCdhZ2UnKSA8MT4KIGcuVigpLmhhcygnYWdlJyxvdXRzaWRlKDIwLDMwKSkudmFsdWVzKCdhZ2UnKSA8Mj4KLWcuVigpLmhhcygnbmFtZScsd2l0aGluKCdqb3NoJywnbWFya28nKSkudmFsdWVNYXAoKSA8Mz4KLWcuVigpLmhhcygnbmFtZScsd2l0aG91dCgnam9zaCcsJ21hcmtvJykpLnZhbHVlTWFwKCkgPDQ+Ci1nLlYoKS5oYXMoJ25hbWUnLG5vdCh3aXRoaW4oJ2pvc2gnLCdtYXJrbycpKSkudmFsdWVNYXAoKSA8NT4KK2cuVigpLmhhcygnbmFtZScsd2l0aGluKCdqb3NoJywnbWFya28nKSkuZWxlbWVudE1hcCgpIDwzPgorZy5WKCkuaGFzKCduYW1lJyx3aXRob3V0KCdqb3NoJywnbWFya28nKSkuZWxlbWVudE1hcCgpIDw0PgorZy5WKCkuaGFzKCduYW1lJyxub3Qod2l0aGluKCdqb3NoJywnbWFya28nKSkpLmVsZW1lbnRNYXAoKSA8NT4KIGcuVigpLnByb3BlcnRpZXMoKS5oYXNLZXkoJ2FnZScpLnZhbHVlKCkgPDY+CiBnLlYoKS5oYXNOb3QoJ2FnZScpLnZhbHVlcygnbmFtZScpIDw3PgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywgc3RhcnRpbmdXaXRoKCdtJykpIDw4PgogLS0tLQogCiA8MT4gRmluZCBhbGwgdmVydGljZXMgd2hvc2UgYWdlcyBhcmUgYmV0d2VlbiAyMCAoZXhjbHVzaXZlKSBhbmQgMzAgKGV4Y2x1c2l2ZSkuIEluIG90aGVyIHdvcmRzLCB0aGUgYWdlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDIwIGFuZCBsZXNzIHRoYW4gMzAuCkBAIC0xMDI2LDYgKzExMjUsNyBAQAogPDU+IFNhbWUgYXMgdGhlIHByaW9yIGV4YW1wbGUgc2F2ZSB1c2luZyBgbm90YCBvbiBgd2l0aGluYCB0byB5aWVsZCBgd2l0aG91dGAuCiA8Nj4gRmluZCBhbGwgYWdlLXByb3BlcnRpZXMgYW5kIGVtaXQgdGhlaXIgdmFsdWUuCiA8Nz4gRmluZCBhbGwgdmVydGljZXMgdGhhdCBkbyBub3QgaGF2ZSBhbiBhZ2UtcHJvcGVydHkgYW5kIGVtaXQgdGhlaXIgbmFtZS4KKzw4PiBGaW5kIGFsbCAicGVyc29uIiB2ZXJ0aWNlcyB0aGF0IGhhdmUgYSBuYW1lIHByb3BlcnR5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGxldHRlciAibSIuCiAKIFRpbmtlclBvcCBkb2VzIG5vdCBzdXBwb3J0IGEgcmVndWxhciBleHByZXNzaW9uIHByZWRpY2F0ZSwgYWx0aG91Z2ggc3BlY2lmaWMgZ3JhcGggZGF0YWJhc2VzIHRoYXQgbGV2ZXJhZ2UgVGlua2VyUG9wCiBtYXkgcHJvdmlkZSBhIHBhcnRpYWwgbWF0Y2ggZXh0ZW5zaW9uLgpAQCAtMTA1MSw2ICsxMTUxLDcgQEAKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNoYXNWYWx1ZS1qYXZhLmxhbmcuT2JqZWN0LWphdmEubGFuZy5PYmplY3QuLi4tKytbYGhhc1ZhbHVlKE9iamVjdCxPYmplY3QuLi4pYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjaGFzVmFsdWUtb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QLSsrW2BoYXNWYWx1ZShQKWBdLAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1AuaHRtbCsrW2BQYF0sCitsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVGV4dFAuaHRtbCsrW2BUZXh0UGBdLAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9ULmh0bWwrK1tgVGBdCiAKIFtbaWQtc3RlcF1dCkBAIC0xMDg1LDEzICsxMTg2LDUxIEBACiAKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNpZGVudGl0eS0tKytbYGlkZW50aXR5KClgXQogCitbW2luZGV4LXN0ZXBdXQorPT09IEluZGV4IFN0ZXAKKworVGhlIGBpbmRleCgpYC1zdGVwICgqbWFwKikgaW5kZXhlcyBlYWNoIGVsZW1lbnQgaW4gdGhlIGN1cnJlbnQgY29sbGVjdGlvbi4gSWYgdGhlIGN1cnJlbnQgdHJhdmVyc2VyJ3MgdmFsdWUgaXMgbm90IGEgY29sbGVjdGlvbiwgdGhlbiBpdCdzIHRyZWF0ZWQgYXMgYSBzaW5nbGUtaXRlbSBjb2xsZWN0aW9uLiBUaGVyZSBhcmUgdHdvIGluZGV4ZXJzCithdmFpbGFibGUsIHdoaWNoIGNhbiBiZSBjaG9zZW4gdXNpbmcgdGhlIGB3aXRoKClgIG1vZHVsYXRvci4gVGhlIGxpc3QgaW5kZXhlciAoZGVmYXVsdCkgY3JlYXRlcyBhIGxpc3QgZm9yIGVhY2ggY29sbGVjdGlvbiBpdGVtLCB3aXRoIHRoZSBmaXJzdCBpdGVtIGJlaW5nIHRoZSBvcmlnaW5hbCBlbGVtZW50IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQKK2JlaW5nIHRoZSBpbmRleC4gVGhlIG1hcCBpbmRleGVyIGNyZWF0ZWQgYSBsaW5rZWQgaGFzaCBtYXAgaW4gd2hpY2ggdGhlIGluZGV4IHJlcHJlc2VudHMgdGhlIGtleSBhbmQgdGhlIG9yaWdpbmFsIGl0ZW0gaXMgdXNlZCBhcyB0aGUgdmFsdWUuCisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5pbmRleCgpICA8MT4KK2cuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlcygibmFtZSIpLmZvbGQoKS4KKyAgb3JkZXIoU2NvcGUubG9jYWwpLgorICBpbmRleCgpLgorICB1bmZvbGQoKS4KKyAgb3JkZXIoKS4KKyAgICBieShfXy50YWlsKFNjb3BlLmxvY2FsLCAxKSkgICAgIDwyPgorZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikudmFsdWVzKCJuYW1lIikuZm9sZCgpLgorICBvcmRlcihTY29wZS5sb2NhbCkuCisgIGluZGV4KCkuCisgICAgd2l0aChXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5saXN0KS4KKyAgdW5mb2xkKCkuCisgIG9yZGVyKCkuCisgICAgYnkoX18udGFpbChTY29wZS5sb2NhbCwgMSkpICAgICA8Mz4KK2cuVigpLmhhc0xhYmVsKCJwZXJzb24iKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkuCisgIG9yZGVyKFNjb3BlLmxvY2FsKS4KKyAgaW5kZXgoKS4KKyAgICB3aXRoKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLm1hcCkgIDw0PgorLS0tLQorCis8MT4gSW5kZXhpbmcgbm9uLWNvbGxlY3Rpb24gaXRlbXMgcmVzdWx0cyBpbiBtdWx0aXBsZSBpbmRleGVkIHNpbmdsZS1pdGVtIGNvbGxlY3Rpb25zLgorPDI+IEluZGV4IGFsbCBzb2Z0d2FyZSBuYW1lcyBpbiB0aGVpciBhbHBoYWJldGljYWwgb3JkZXIuCis8Mz4gU2FtZSBhcyBzdGF0ZW1lbnQgMSwgYnV0IHdpdGggYW4gZXhwbGljaXRlbHkgc3BlY2lmaWVkIGxpc3QgaW5kZXhlci4KKzw0PiBJbmRleCBhbGwgcGVyc29uIG5hbWVzIGluIHRoZWlyIGFscGhhYmV0aWNhbCBvcmRlciBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBhbiBvcmRlcmVkIG1hcC4KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2luZGV4LS0rK1tgaW5kZXgoKWBdCisKIFtbaW5qZWN0LXN0ZXBdXQogPT09IEluamVjdCBTdGVwCiAKIGltYWdlOjppbmplY3Qtc3RlcC5wbmdbd2lkdGg9ODAwXQogCi1PbmUgb2YgdGhlIG1ham9yIGZlYXR1cmVzIG9mIFRpbmtlclBvcDMgaXMgImluamVjdGFibGUgc3RlcHMuIiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGluc2VydCBvYmplY3RzIGFyYml0cmFyaWx5Ci1pbnRvIGEgdHJhdmVyc2FsIHN0cmVhbS4gSW4gZ2VuZXJhbCwgYGluamVjdCgpYC1zdGVwICgqc2lkZUVmZmVjdCopIGV4aXN0cyBhbmQgYSBmZXcgZXhhbXBsZXMgYXJlIHByb3ZpZGVkIGJlbG93LgorVGhlIGNvbmNlcHQgb2YgImluamVjdGFibGUgc3RlcHMiIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGluc2VydCBvYmplY3RzIGFyYml0cmFyaWx5IGludG8gYSB0cmF2ZXJzYWwgc3RyZWFtLiBJbiBnZW5lcmFsLAorYGluamVjdCgpYC1zdGVwICgqc2lkZUVmZmVjdCopIGV4aXN0cyBhbmQgYSBmZXcgZXhhbXBsZXMgYXJlIHByb3ZpZGVkIGJlbG93LgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQpAQCAtMTExNSw2ICsxMjU0LDE3OSBAQAogCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjaW5qZWN0LUUuLi4tKytbYGluamVjdChPYmplY3QpYF0KIAorYW5jaG9yOl9ncmVtbGluX2lfb1tdCitbW2lvLXN0ZXBdXQorPT09IElPIFN0ZXAKKworaW1hZ2U6Z3JlbWxpbi1pby5wbmdbd2lkdGg9MjUwLGZsb2F0PWxlZnRdIFRoZSB0YXNrIG9mIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIHRoZSBkYXRhIG9mIGBHcmFwaGAgaW5zdGFuY2VzIGlzIHRoZQoram9iIG9mIHRoZSBgaW8oKWAtc3RlcC4gQnkgZGVmYXVsdCwgVGlua2VyUG9wIHN1cHBvcnRzIHRocmVlIGZvcm1hdHMgZm9yIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIGdyYXBoIGRhdGEgaW4KKzw8Z3JhcGhtbCxHcmFwaE1MPj4sIDw8Z3JhcGhzb24sR3JhcGhTT04+PiwgYW5kIDw8Z3J5byxHcnlvPj4uCisKK05PVEU6IEFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbiBmb3IgVGlua2VyUG9wIElPIGZvcm1hdHMgY2FuIGJlIGZvdW5kIGluIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9kZXYvaW8vW0lPIFJlZmVyZW5jZV0uCisKK0J5IGl0c2VsZiB0aGUgYGlvKClgLXN0ZXAgbWVyZWx5IGNvbmZpZ3VyZXMgdGhlIGtpbmQgb2YgaW1wb3J0aW5nIGFuZCBleHBvcnRpbmcgdGhhdCBpcyBnb2luZwordG8gb2NjdXIgYW5kIGl0IGlzIHRoZSBmb2xsb3ctb24gY2FsbCB0byB0aGUgYHJlYWQoKWAgb3IgYHdyaXRlKClgIHN0ZXAgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIG9mIHRob3NlIGFjdGlvbnMgd2lsbAorZXhlY3V0ZS4gVGhlcmVmb3JlLCBhIHR5cGljYWwgdXNhZ2Ugb2YgdGhlIGBpbygpYC1zdGVwIHdvdWxkIGxvb2sgbGlrZSB0aGlzOgorCitbc291cmNlLGphdmFdCistLS0tCitnLmlvKHNvbWVJbnB1dEZpbGUpLnJlYWQoKS5pdGVyYXRlKCkKK2cuaW8oc29tZU91dHB1dEZpbGUpLndyaXRlKCkuaXRlcmF0ZSgpCistLS0tCisKK0lNUE9SVEFOVDogVGhlIGNvbW1hbmRzIGFib3ZlIGFyZSBzdGlsbCB0cmF2ZXJzYWxzIGFuZCB0aGVyZWZvcmUgcmVxdWlyZSBpdGVyYXRpb24gdG8gYmUgZXhlY3V0ZWQsIGhlbmNlIHRoZSB1c2Ugb2YKK2BpdGVyYXRlKClgIGFzIGEgdGVybWluYXRpb24gc3RlcC4KKworQnkgZGVmYXVsdCwgdGhlIGBpbygpYC1zdGVwIHdpbGwgdHJ5IHRvIGRldGVjdCB0aGUgcmlnaHQgZmlsZSBmb3JtYXQgdXNpbmcgdGhlIGZpbGUgbmFtZSBleHRlbnNpb24uIFRvIGdhaW4gZ3JlYXRlcgorY29udHJvbCBvZiB0aGUgZm9ybWF0IHVzZSB0aGUgYHdpdGgoKWAgc3RlcCBtb2R1bGF0b3IgdG8gcHJvdmlkZSBmdXJ0aGVyIGluZm9ybWF0aW9uIHRvIGBpbygpYC4gRm9yIGV4YW1wbGU6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cuaW8oc29tZUlucHV0RmlsZSkuCisgICAgd2l0aChJTy5yZWFkZXIsIElPLmdyYXBoc29uKS4KKyAgcmVhZCgpLml0ZXJhdGUoKQorZy5pbyhzb21lT3V0cHV0RmlsZSkuCisgICAgd2l0aChJTy53cml0ZXIsSU8uZ3JhcGhtbCkuCisgIHdyaXRlKCkuaXRlcmF0ZSgpCistLS0tCisKK1RoZSBgSU9gIGNsYXNzIGlzIGEgaGVscGVyIGZvciB0aGUgYGlvKClgLXN0ZXAgdGhhdCBwcm92aWRlcyBleHByZXNzaW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGhlbHAgY29uZmlndXJlIGl0CithbmQgaW4gdGhpcyBjYXNlIGl0IGFsbG93cyBkaXJlY3Qgc3BlY2lmaWNhdGlvbiBvZiB0aGUgInJlYWRlciIgb3IgIndyaXRlciIgdG8gdXNlLiBUaGUgInJlYWRlciIgYWN0dWFsbHkgcmVmZXJzIHRvCithIGBHcmFwaFJlYWRlcmAgaW1wbGVtZW50YXRpb24gYW5kIHRoZSAid3JpdGVyIiByZWZlcnMgdG8gYSBgR3JhcGhXcml0ZXJgIGltcGxlbWVudGF0aW9uLiBUaGUgaW1wbGVtZW50YXRpb25zIG9mCit0aG9zZSBpbnRlcmZhY2VzIHByb3ZpZGVkIGJ5IGRlZmF1bHQgYXJlIHRoZSBzdGFuZGFyZCBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zLgorCitUaGF0IGRlZmF1bHQgaXMgYW4gaW1wb3J0YW50IHBvaW50IHRvIGNvbnNpZGVyIGZvciB1c2Vycy4gVGhlIGRlZmF1bHQgVGlua2VyUG9wIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IGRlc2lnbmVkIHdpdGgKK21hc3NpdmUsIGNvbXBsZXgsIHBhcmFsbGVsIGJ1bGsgbG9hZGluZyBpbiBtaW5kLiBUaGV5IGFyZSBkZXNpZ25lZCB0byBkbyBzaW5nbGUtdGhyZWFkZWQsIE9MVFAtc3R5bGUgbG9hZGluZyBvZiBkYXRhCitpbiB0aGUgbW9zdCBnZW5lcmljIHdheSBwb3NzaWJsZSBzbyBhcyB0byBhY2NvbW1vZGF0ZSB0aGUgZ3JlYXRlc3QgbnVtYmVyIG9mIGdyYXBoIGRhdGFiYXNlcyBvdXQgdGhlcmUuIEFzIHN1Y2gsIGZyb20KK2EgcmVhZGluZyBwZXJzcGVjdGl2ZSwgdGhleSB3b3JrIGJlc3QgZm9yIHNtYWxsIGRhdGFzZXRzIChvciBwZXJoYXBzIG1lZGl1bSBkYXRhc2V0cyB3aGVyZSBtZW1vcnkgaXMgcGxlbnRpZnVsIGFuZAordGltZSBpcyBub3QgY3JpdGljYWwpIHRoYXQgYXJlIGxvYWRpbmcgdG8gYW4gZW1wdHkgZ3JhcGggLSBpbmNyZW1lbnRhbCBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSBzdG9yeSBmcm9tIHRoZQord3JpdGluZyBwZXJzcGVjdGl2ZSBpcyBub3QgdGhhdCBkaWZmZXJlbnQgaW4gdGhlcmUgYXJlIG5vIHBhcmFsbGVsIG9wZXJhdGlvbnMgaW4gcGxheSwgaG93ZXZlciBzdHJlYW1pbmcgdGhlIG91dHB1dAordG8gZGlzayByZXF1aXJlcyBhIHNpbmdsZSBwYXNzIG9mIHRoZSBkYXRhIHdpdGhvdXQgaGlnaCBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBsYXJnZXIgZGF0YXNldHMuCisKK0luIGdlbmVyYWwsIFRpbmtlclBvcCByZWNvbW1lbmRzIHRoYXQgdXNlcnMgZXhhbWluZSB0aGUgbmF0aXZlIGJ1bGsgaW1wb3J0L2V4cG9ydCB0b29scyBvZiB0aGUgZ3JhcGggaW1wbGVtZW50YXRpb24KK3RoYXQgdGhleSBjaG9vc2UuIFRob3NlIHRvb2xzIHdpbGwgb2Z0ZW4gb3V0cGVyZm9ybSB0aGUgYGlvKClgLXN0ZXAgYW5kIHBlcmhhcHMgYmUgZWFzaWVyIHRvIHVzZSB3aXRoIGEgZ3JlYXRlcgorZmVhdHVyZSBzZXQuIFRoYXQgc2FpZCwgZ3JhcGggcHJvdmlkZXJzIGRvIGhhdmUgdGhlIG9wdGlvbiB0byBvcHRpbWl6ZSBgaW8oKWAgdG8gYmFjayBpdCB3aXRoIHRoZWlyIG93bgoraW1wb3J0L2V4cG9ydCB1dGlsaXRpZXMgYW5kIHRoZXJlZm9yZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBwcm92aWRlZCBieSBUaW5rZXJQb3AgZGVzY3JpYmVkIGFib3ZlIG1pZ2h0IGJlIG92ZXJyaWRkZW4KK2J5IHRoZSBncmFwaC4KKworQW4gZXhjZWxsZW50IGV4YW1wbGUgb2YgdGhpcyBsaWVzIGluIDw8aGFkb29wLWdyZW1saW4sSGFkb29wR3JhcGg+PiB3aXRoIDw8c3BhcmtncmFwaGNvbXB1dGVyLFNwYXJrR3JhcGhDb21wdXRlcj4+Cit3aGljaCByZXBsYWNlcyB0aGUgZGVmYXVsdCBzaW5nbGUtdGhyZWFkZWQgaW1wbGVtZW50YXRpb24gd2l0aCBhIG1vcmUgYWR2YW5jZWQgT0xBUCBzdHlsZSBidWxrIGltcG9ydC9leHBvcnQKK2Z1bmN0aW9uYWxpdHkgaW50ZXJuYWxseSB1c2luZyA8PGNsb25ldmVydGV4cHJvZ3JhbSxDbG9uZVZlcnRleFByb2dyYW0+Pi4gV2l0aCB0aGlzIG1vZGVsLCBncmFwaHMgb2YgYXJiaXRyYXJ5IHNpemUKK2NhbiBiZSBpbXBvcnRlZC9leHBvcnRlZCBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIGEgSGFkb29wIGBJbnB1dEZvcm1hdGAgb3IgYE91dHB1dEZvcm1hdGAgdG8gc3VwcG9ydCBpdC4KKworSU1QT1JUQU5UOiBSZW1vdGUgR3JlbWxpbiBDb25zb2xlIHVzZXJzIG9yIEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudCAoR0xWKSB1c2VycyAoZS5nLiBncmVtbGluLXB5dGhvbikgd2hvIHV0aWxpemUKK3RoZSBgaW8oKWAtc3RlcCBzaG91bGQgcmVjYWxsIHRoYXQgdGhlaXIgYHJlYWQoKWAgb3IgYHdyaXRlKClgIG9wZXJhdGlvbiB3aWxsIG9jY3VyIG9uIHRoZSBzZXJ2ZXIgYW5kIG5vdCBsb2NhbGx5CithbmQgdGhlcmVmb3JlIHRoZSBmaWxlIHNwZWNpZmllZCBmb3IgaW1wb3J0L2V4cG9ydCBtdXN0IGJlIHNvbWV0aGluZyBhY2Nlc3NpYmxlIGJ5IHRoZSBzZXJ2ZXIuCisKK0dyYXBoU09OIGFuZCBHcnlvIGZvcm1hdHMgYXJlIGV4dGVuc2libGUgYWxsb3dpbmcgdXNlcnMgYW5kIGdyYXBoIHByb3ZpZGVycyB0byBleHRlbmQgc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gb3B0aW9ucy4KK1RoZXNlIGV4dGVuc2lvbnMgYXJlIGV4cG9zZWQgdGhyb3VnaCBgSW9SZWdpc3RyeWAgaW1wbGVtZW50YXRpb25zLiBUbyBhcHBseSBhbiBgSW9SZWdpc3RyeWAgdXNlIHRoZSBgd2l0aCgpYCBvcHRpb24KK2FuZCB0aGUgYElPLnJlZ2lzdHJ5YCBrZXksIHdoZXJlIHRoZSB2YWx1ZSBpcyBlaXRoZXIgYW4gYWN0dWFsIGBJb1JlZ2lzdHJ5YCBpbnN0YW5jZSBvciB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzCituYW1lIG9mIG9uZS4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorZy5pbyhzb21lSW5wdXRGaWxlKS4KKyAgICB3aXRoKElPLnJlYWRlciwgSU8uZ3J5bykuCisgICAgd2l0aChJTy5yZWdpc3RyeSwgVGlua2VySW9SZWdpc3RyeVYzZDAuaW5zdGFuY2UoKSkKKyAgcmVhZCgpLml0ZXJhdGUoKQorZy5pbyhzb21lT3V0cHV0RmlsZSkuCisgICAgd2l0aChJTy53cml0ZXIsSU8uZ3JhcGhzb24pLgorICAgIHdpdGgoSU8ucmVnaXN0cnksICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMCIpCisgIHdyaXRlKCkuaXRlcmF0ZSgpCistLS0tCisKK0dMVnMgd2lsbCBvYnZpb3VzbHkgYWx3YXlzIGJlIGZvcmNlZCB0byB1c2UgdGhlIGxhdHRlciBmb3JtIGFzIHRoZXkgY2FuJ3QgZXhwbGljaXRseSBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgYW4KK2BJb1JlZ2lzdHJ5YCB0byBwYXNzIHRvIHRoZSBzZXJ2ZXIgKG5vciBhcmUgYElvUmVnaXN0cnlgIGluc3RhbmNlcyBuZWNlc3NhcmlseSBzZXJpYWxpemFibGUpLgorCitUaGUgdmVyc2lvbiBvZiB0aGUgZm9ybWF0cyAoZS5nLiBHcmFwaFNPTiAyLjAgb3IgMy4wKSB1dGlsaXplZCBieSBgaW8oKWAgaXMgZGV0ZXJtaW5lZCBlbnRpcmVseSBieSB0aGUgYElPLnJlYWRlcmAgYW5kCitgSU8ud3JpdGVyYCBjb25maWd1cmF0aW9ucyBvciB0aGVpciBkZWZhdWx0cy4gVGhlIGRlZmF1bHRzIHdpbGwgYWx3YXlzIGJlIHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZQorb2YgVGlua2VyUG9wLiBJdCBpcyBhbHNvIHBvc3NpYmxlIGZvciBncmFwaCBwcm92aWRlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdHMsIHNvIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlCit1bmRlcmx5aW5nIGdyYXBoIGRhdGFiYXNlIGluIHVzZSBmb3IgYW55IGRldGFpbHMgb24gdGhhdC4KKworRm9yIG1vcmUgYWR2YW5jZWQgY29uZmlndXJhdGlvbiBvZiBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIG9wZXJhdGlvbnMgKGUuZy4gbm9ybWFsaXplZCBvdXRwdXQgZm9yIEdyYXBoU09OLAorZGlzYWJsaW5nIGNsYXNzIHJlZ2lzdHJhdGlvbnMgZm9yIEdyeW8sIGV0Yy4pIHRoZW4gY29uc3RydWN0IHRoZSBhcHByb3ByaWF0ZSBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIHVzaW5nCit0aGUgYGJ1aWxkKClgIG1ldGhvZCBvbiB0aGVpciBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzZSBpdCBkaXJlY3RseS4gSXQgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYElPLnJlYWRlcmAgb3IKK2BJTy53cml0ZXJgIG9wdGlvbnMuIE9idmlvdXNseSwgdGhlc2UgYXJlIEpWTSBiYXNlZCBvcGVyYXRpb25zIGFuZCB0aHVzIG5vdCBhdmFpbGFibGUgdG8gR0xWcyBhcyBwb3J0YWJsZSBmZWF0dXJlcy4KKworYW5jaG9yOl9ncmFwaG1sX3JlYWRlcl93cml0ZXJbXQorW1tncmFwaG1sXV0KKz09PT0gR3JhcGhNTAorCitpbWFnZTpncmVtbGluLWdyYXBobWwucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBUaGUgbGluazpodHRwOi8vZ3JhcGhtbC5ncmFwaGRyYXdpbmcub3JnL1tHcmFwaE1MXSBmaWxlIGZvcm1hdCBpcyBhCitjb21tb24gWE1MLWJhc2VkIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JhcGguIEl0IGlzIHdpZGVseSBzdXBwb3J0ZWQgYnkgZ3JhcGgtcmVsYXRlZCB0b29scyBhbmQgbGlicmFyaWVzIG1ha2luZyBpdCBhCitzb2xpZCBpbnRlcmNoYW5nZSBmb3JtYXQgZm9yIFRpbmtlclBvcC4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBpbnRlbnQgaXMgdG8gd29yayB3aXRoIGdyYXBoIGRhdGEgaW4gY29uanVuY3Rpb24gd2l0aAorYXBwbGljYXRpb25zIG91dHNpZGUgb2YgVGlua2VyUG9wLCBHcmFwaE1MIG1heSBiZSB0aGUgYmVzdCBjaG9pY2UgdG8gZG8gdGhhdC4gQ29tbW9uIHVzZSBjYXNlcyBtaWdodCBiZToKKworKiBHZW5lcmF0ZSBhIGdyYXBoIHVzaW5nIGxpbms6aHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vW05ldHdvcmtYXSwgZXhwb3J0IGl0IHdpdGggR3JhcGhNTCBhbmQgaW1wb3J0IGl0IHRvIFRpbmtlclBvcC4KKyogUHJvZHVjZSBhIHN1YmdyYXBoIGFuZCBleHBvcnQgaXQgdG8gR3JhcGhNTCB0byBiZSBjb25zdW1lZCBieSBhbmQgdmlzdWFsaXplZCBpbiBsaW5rOmh0dHBzOi8vZ2VwaGkub3JnL1tHZXBoaV0uCisqIE1pZ3JhdGUgdGhlIGRhdGEgb2YgYW4gZW50aXJlIGdyYXBoIHRvIGEgZGlmZmVyZW50IGdyYXBoIGRhdGFiYXNlIG5vdCBzdXBwb3J0ZWQgYnkgVGlua2VyUG9wLgorCitXQVJOSU5HOiBHcmFwaE1MIGlzIGEgImxvc3N5IiBmb3JtYXQgaW4gdGhhdCBpdCBvbmx5IHN1cHBvcnRzIHByaW1pdGl2ZSB2YWx1ZXMgZm9yIHByb3BlcnRpZXMgYW5kIGRvZXMgbm90IGhhdmUKK3N1cHBvcnQgZm9yIGBHcmFwaGAgdmFyaWFibGVzLiAgSXQgd2lsbCB1c2UgYHRvU3RyaW5nYCB0byBzZXJpYWxpemUgcHJvcGVydHkgdmFsdWVzIG91dHNpZGUgb2YgdGhvc2UgcHJpbWl0aXZlcy4KKworV0FSTklORzogR3JhcGhNTCBhcyBhIHNwZWNpZmljYXRpb24gYWxsb3dzIGZvciBgPGVkZ2U+YCBhbmQgYDxub2RlPmAgZWxlbWVudHMgdG8gYXBwZWFyIGluIGFueSBvcmRlci4gIE1vc3Qgc29mdHdhcmUKK3RoYXQgd3JpdGVzIEdyYXBoTUwgKGluY2x1ZGluZyBhcyBUaW5rZXJQb3AncyBgR3JhcGhNTFdyaXRlcmApIHdyaXRlIGA8bm9kZT5gIGVsZW1lbnRzIGJlZm9yZSBgPGVkZ2U+YCBlbGVtZW50cy4gIEhvd2V2ZXIgaXQKK2lzIGltcG9ydGFudCB0byBub3RlIHRoYXQgYEdyYXBoTUxSZWFkZXJgIHdpbGwgcmVhZCB0aGlzIGRhdGEgaW4gb3JkZXIgYW5kIG9yZGVyIGNhbiBtYXR0ZXIuICBUaGlzIGlzIGJlY2F1c2UgVGlua2VyUG9wCitkb2VzIG5vdCBhbGxvdyB0aGUgdmVydGV4IGxhYmVsIHRvIGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIHZlcnRleCBoYXMgYmVlbiBjcmVhdGVkLiAgVGhlcmVmb3JlLCBpZiBhbiBgPGVkZ2U+YCBlbGVtZW50Citjb21lcyBiZWZvcmUgdGhlIGA8bm9kZT5gLCB0aGUgbGFiZWwgb24gdGhlIHZlcnRleCB3aWxsIGJlIGlnbm9yZWQuICBJdCBpcyB0aHVzIGJldHRlciB0byBvcmRlciBgPG5vZGU+YCBlbGVtZW50cyBpbiB0aGUKK0dyYXBoTUwgdG8gYXBwZWFyIGJlZm9yZSBhbGwgYDxlZGdlPmAgZWxlbWVudHMgaWYgdmVydGV4IGxhYmVscyBhcmUgaW1wb3J0YW50IHRvIHRoZSBncmFwaC4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorZy5pbygiZ3JhcGgueG1sIikucmVhZCgpLml0ZXJhdGUoKQorZy5pbygiZ3JhcGgueG1sIikud3JpdGUoKS5pdGVyYXRlKCkKKy0tLS0KKworTk9URTogSWYgdXNpbmcgR3JhcGhNTCBnZW5lcmF0ZWQgZnJvbSBUaW5rZXJQb3AgMi54LCByZWFkIG1vcmUgYWJvdXQgaXRzIGluY29tcGF0aWJpbGl0aWVzIGluIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdXBncmFkZS8jZ3JhcGhtbC1mb3JtYXRbVXBncmFkZSBEb2N1bWVudGF0aW9uXS4KKworYW5jaG9yOmdyYXBoc29uLXJlYWRlci13cml0ZXJbXQorW1tncmFwaHNvbl1dCis9PT09IEdyYXBoU09OCisKK2ltYWdlOmdyZW1saW4tZ3JhcGhzb24ucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBHcmFwaFNPTiBpcyBhIGxpbms6aHR0cDovL2pzb24ub3JnL1tKU09OXS1iYXNlZCBmb3JtYXQgZXh0ZW5kZWQKK2Zyb20gZWFybGllciB2ZXJzaW9ucyBvZiBUaW5rZXJQb3AuIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgVGlua2VyUG9wJ3MgR3JhcGhTT04gaXMgbm90IGJhY2t3YXJkcyBjb21wYXRpYmxlCit3aXRoIHByaW9yIFRpbmtlclBvcCBHcmFwaFNPTiB2ZXJzaW9ucy4gR3JhcGhTT04gaGFzIHNvbWUgc3VwcG9ydCBmcm9tIGdyYXBoLXJlbGF0ZWQgYXBwbGljYXRpb24gb3V0c2lkZSBvZiBUaW5rZXJQb3AsCitidXQgaXQgaXMgZ2VuZXJhbGx5IGJlc3QgdXNlZCBpbiB0d28gY2FzZXM6CisKKyogQSB0ZXh0IGZvcm1hdCBvZiB0aGUgZ3JhcGggb3IgaXRzIGVsZW1lbnRzIGlzIGRlc2lyZWQgKGUuZy4gZGVidWdnaW5nLCB1c2FnZSBpbiBzb3VyY2UgY29udHJvbCwgZXRjLikKKyogVGhlIGdyYXBoIG9yIGl0cyBlbGVtZW50cyBuZWVkIHRvIGJlIGNvbnN1bWVkIGJ5IGNvZGUgdGhhdCBpcyBub3QgSlZNLWJhc2VkIChlLmcuIEphdmFTY3JpcHQsIFB5dGhvbiwgLk5FVCwgZXRjLikKKworW3NvdXJjZSxqYXZhXQorLS0tLQorZy5pbygiZ3JhcGguanNvbiIpLnJlYWQoKS5pdGVyYXRlKCkKK2cuaW8oImdyYXBoLmpzb24iKS53cml0ZSgpLml0ZXJhdGUoKQorLS0tLQorCitOT1RFOiBBZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gZm9yIEdyYXBoU09OIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncmFwaHNvbltJTyBSZWZlcmVuY2VdLgorCithbmNob3I6Z3J5by1yZWFkZXItd3JpdGVyW10KK1tbZ3J5b11dCis9PT09IEdyeW8KKworaW1hZ2U6Z3JlbWxpbi1rcnlvLnBuZ1t3aWR0aD00MDAsZmxvYXQ9bGVmdF0gbGluazpodHRwczovL2dpdGh1Yi5jb20vRXNvdGVyaWNTb2Z0d2FyZS9rcnlvW0tyeW9dIGlzIGEgcG9wdWxhcgorc2VyaWFsaXphdGlvbiBwYWNrYWdlIGZvciB0aGUgSlZNLiBHcmVtbGluLUtyeW8gaXMgYSBiaW5hcnkgYEdyYXBoYCBzZXJpYWxpemF0aW9uIGZvcm1hdCBmb3IgdXNlIG9uIHRoZSBKVk0gYnkgSlZNCitsYW5ndWFnZXMuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHNwYWNlIGVmZmljaWVudCwgbm9uLWxvc3N5IGFuZCBpcyBwcm9tb3RlZCBhcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRvIHVzZSB3aGVuIHdvcmtpbmcKK3dpdGggZ3JhcGggZGF0YSBpbnNpZGUgb2YgdGhlIFRpbmtlclBvcCBzdGFjay4gQSBsaXN0IG9mIGNvbW1vbiB1c2UgY2FzZXMgaXMgcHJlc2VudGVkIGJlbG93OgorCisqIE1pZ3JhdGlvbiBmcm9tIG9uZSBHcmVtbGluIFN0cnVjdHVyZSBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIChlLmcuIGBUaW5rZXJHcmFwaGAgdG8gYE5lbzRqR3JhcGhgKQorKiBTZXJpYWxpemF0aW9uIG9mIGluZGl2aWR1YWwgZ3JhcGggZWxlbWVudHMgdG8gYmUgc2VudCBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgSlZNLgorKiBCYWNrdXBzIG9mIGluLW1lbW9yeSBncmFwaHMgb3Igc3ViZ3JhcGhzLgorCitXQVJOSU5HOiBXaGVuIG1pZ3JhdGluZyBiZXR3ZWVuIEdyZW1saW4gU3RydWN0dXJlIGltcGxlbWVudGF0aW9ucywgS3J5byBtYXkgbm90IGxvc2UgZGF0YSwgYnV0IGl0IGlzIGltcG9ydGFudCB0bworY29uc2lkZXIgdGhlIGZlYXR1cmVzIG9mIGVhY2ggYEdyYXBoYCBhbmQgd2hldGhlciBvciBub3QgdGhlIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGluIG9uZSB3aWxsIGJlIHN1cHBvcnRlZCBpbiB0aGUKK290aGVyLiAgRmFpbHVyZSB0byBkbyBzbywgbWF5IHJlc3VsdCBpbiBlcnJvcnMuCisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cuaW8oImdyYXBoLmtyeW8iKS5yZWFkKCkuaXRlcmF0ZSgpCitnLmlvKCJncmFwaC5rcnlvIikud3JpdGUoKS5pdGVyYXRlKCkKKy0tLS0KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5odG1sI2lvLWphdmEubGFuZy5TdHJpbmctKytbYGlvKFN0cmluZylgXQorCiBbW2lzLXN0ZXBdXQogPT09IElzIFN0ZXAKIApAQCAtMTMzMiw4ICsxNjQ0LDggQEAKIAogW2dyZW1saW4tZ3Jvb3Z5XQogLS0tLQotZ3JhcGguaW8oZ3JhcGhtbCgpKS5yZWFkR3JhcGgoJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpCitnLmlvKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykucmVhZCgpLml0ZXJhdGUoKQogZy5WKCkubWF0Y2goCiAgICAgICAgIF9fLmFzKCdhJykuaGFzKCduYW1lJywgJ0dhcmNpYScpLAogICAgICAgICBfXy5hcygnYScpLmluKCd3cml0dGVuQnknKS5hcygnYicpLApAQCAtMTU0MiwxNiArMTg1NCwxNyBAQAogW1ttYXgtc3RlcF1dCiA9PT0gTWF4IFN0ZXAKIAotVGhlIGBtYXgoKWAtc3RlcCAoKm1hcCopIG9wZXJhdGVzIG9uIGEgc3RyZWFtIG9mIG51bWJlcnMgYW5kIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIGxhcmdlc3QgbnVtYmVyIGluIHRoZSBzdHJlYW0uCitUaGUgYG1heCgpYC1zdGVwICgqbWFwKikgb3BlcmF0ZXMgb24gYSBzdHJlYW0gb2YgY29tcGFyYWJsZSBvYmplY3RzIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSBsYXN0IG9iamVjdCBhY2NvcmRpbmcgdG8gaXRzIG5hdHVyYWwgb3JkZXIgaW4gdGhlIHN0cmVhbS4KIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KIGcuVigpLnZhbHVlcygnYWdlJykubWF4KCkKIGcuVigpLnJlcGVhdChib3RoKCkpLnRpbWVzKDMpLnZhbHVlcygnYWdlJykubWF4KCkKK2cuVigpLnZhbHVlcygnbmFtZScpLm1heCgpCiAtLS0tCiAKIElNUE9SVEFOVDogYG1heChsb2NhbClgIGRldGVybWluZXMgdGhlIG1heCBvZiB0aGUgY3VycmVudCwgbG9jYWwgb2JqZWN0IChub3QgdGhlIG9iamVjdHMgaW4gdGhlIHRyYXZlcnNhbCBzdHJlYW0pLgotVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuIEZvciBhbnkgb3RoZXIgb2JqZWN0LCBhIG1heCBvZiBgRG91YmxlLk5hTmAgaXMgcmV0dXJuZWQuCitUaGlzIHdvcmtzIGZvciBgQ29sbGVjdGlvbmAgYW5kIGBDb21wYXJhYmxlYC10eXBlIG9iamVjdHMuCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCiAKQEAgLTE1NzUsNyArMTg4OCw3IEBACiB0aHVzIGFsdGVyaW5nIHRoZSBhdmVyYWdlLgogCiBJTVBPUlRBTlQ6IGBtZWFuKGxvY2FsKWAgZGV0ZXJtaW5lcyB0aGUgbWVhbiBvZiB0aGUgY3VycmVudCwgbG9jYWwgb2JqZWN0IChub3QgdGhlIG9iamVjdHMgaW4gdGhlIHRyYXZlcnNhbCBzdHJlYW0pLgotVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuIEZvciBhbnkgb3RoZXIgb2JqZWN0LCBhIG1lYW4gb2YgYERvdWJsZS5OYU5gIGlzIHJldHVybmVkLgorVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCiAKQEAgLTE1ODYsMTYgKzE4OTksMTcgQEAKIFtbbWluLXN0ZXBdXQogPT09IE1pbiBTdGVwCiAKLVRoZSBgbWluKClgLXN0ZXAgKCptYXAqKSBvcGVyYXRlcyBvbiBhIHN0cmVhbSBvZiBudW1iZXJzIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSBzbWFsbGVzdCBudW1iZXIgaW4gdGhlIHN0cmVhbS4KK1RoZSBgbWluKClgLXN0ZXAgKCptYXAqKSBvcGVyYXRlcyBvbiBhIHN0cmVhbSBvZiBjb21wYXJhYmxlIG9iamVjdHMgYW5kIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIGZpcnN0IG9iamVjdCBhY2NvcmRpbmcgdG8gaXRzIG5hdHVyYWwgb3JkZXIgaW4gdGhlIHN0cmVhbS4KIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KIGcuVigpLnZhbHVlcygnYWdlJykubWluKCkKIGcuVigpLnJlcGVhdChib3RoKCkpLnRpbWVzKDMpLnZhbHVlcygnYWdlJykubWluKCkKK2cuVigpLnZhbHVlcygnbmFtZScpLm1pbigpCiAtLS0tCiAKIElNUE9SVEFOVDogYG1pbihsb2NhbClgIGRldGVybWluZXMgdGhlIG1pbiBvZiB0aGUgY3VycmVudCwgbG9jYWwgb2JqZWN0IChub3QgdGhlIG9iamVjdHMgaW4gdGhlIHRyYXZlcnNhbCBzdHJlYW0pLgotVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuIEZvciBhbnkgb3RoZXIgb2JqZWN0LCBhIG1pbiBvZiBgRG91YmxlLk5hTmAgaXMgcmV0dXJuZWQuCitUaGlzIHdvcmtzIGZvciBgQ29sbGVjdGlvbmAgYW5kIGBDb21wYXJhYmxlYC10eXBlIG9iamVjdHMuCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCiAKQEAgLTE2MjcsNyArMTk0MSw3IEBACiBbTk9URSwgY2FwdGlvbj1Hcm9vdnldCiA9PT09CiBUaGUgdGVybSBgbm90YCBpcyBhIHJlc2VydmVkIHdvcmQgaW4gR3Jvb3Z5LCBhbmQgd2hlbiB0aGVyZWZvcmUgdXNlZCBhcyBwYXJ0IG9mIGFuIGFub255bW91cyB0cmF2ZXJzYWwgbXVzdCBiZSByZWZlcnJlZAotdG8gaW4gR3JlbWxpbiB3aXRoIHRoZSBkb3VibGUgdW5kZXJzY29yZSBgK19fLm5vdCgpK2AuCit0byBpbiBHcmVtbGluIHdpdGggdGhlIGRvdWJsZSB1bmRlcnNjb3JlIGBfXy5ub3QoKWAuCiA9PT09CiAKIFtOT1RFLCBjYXB0aW9uPVB5dGhvbl0KQEAgLTE2MzcsNyArMTk1MSw3IEBACiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCi1nLlYoKS5ub3QoaGFzTGFiZWwoJ3BlcnNvbicpKS52YWx1ZU1hcCh0cnVlKQorZy5WKCkubm90KGhhc0xhYmVsKCdwZXJzb24nKSkuZWxlbWVudE1hcCgpCiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCiAgIG5vdChvdXQoJ2NyZWF0ZWQnKS5jb3VudCgpLmlzKGd0KDEpKSkudmFsdWVzKCduYW1lJykgICA8MT4KIC0tLS0KQEAgLTE3MDgsOCArMjAyMiw3IEBACiBUaGUgYG9yKClgLXN0ZXAgY2FuIHRha2UgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB0cmF2ZXJzYWxzLiBBdCBsZWFzdCBvbmUgb2YgdGhlIHRyYXZlcnNhbHMgbXVzdCBwcm9kdWNlIGF0IGxlYXN0IG9uZQogb3V0cHV0IGZvciB0aGUgb3JpZ2luYWwgdHJhdmVyc2VyIHRvIHBhc3MgdG8gdGhlIG5leHQgc3RlcC4KIAotQW4gbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZml4X25vdGF0aW9uW2luZml4IG5vdGF0aW9uXSBjYW4gYmUgdXNlZCBhcyB3ZWxsLiBUaG91Z2gsIHdpdGggaW5maXggbm90YXRpb24sCi1vbmx5IHR3byB0cmF2ZXJzYWxzIGNhbiBiZSBvcidkIHRvZ2V0aGVyLgorQW4gbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZml4X25vdGF0aW9uW2luZml4IG5vdGF0aW9uXSBjYW4gYmUgdXNlZCBhcyB3ZWxsLgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQpAQCAtMTgwNSwxMSArMjExOCwxNSBAQAogZy5WKCkucGFnZVJhbmsoKS5ieSgncGFnZVJhbmsnKS52YWx1ZXMoJ3BhZ2VSYW5rJykKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS4KICAgcGFnZVJhbmsoKS4KLSAgICBieShvdXRFKCdrbm93cycpKS4KLSAgICBieSgnZnJpZW5kUmFuaycpLgotICBvcmRlcigpLmJ5KCdmcmllbmRSYW5rJyxkZXNjKS52YWx1ZU1hcCgnbmFtZScsJ2ZyaWVuZFJhbmsnKQorICAgIHdpdGgoUGFnZVJhbmsuZWRnZXMsIF9fLm91dEUoJ2tub3dzJykpLgorICAgIHdpdGgoUGFnZVJhbmsucHJvcGVydHlOYW1lLCAnZnJpZW5kUmFuaycpLgorICBvcmRlcigpLmJ5KCdmcmllbmRSYW5rJyxkZXNjKS4KKyAgZWxlbWVudE1hcCgnbmFtZScsJ2ZyaWVuZFJhbmsnKQogLS0tLQogCitOb3RlIHRoZSB1c2Ugb2YgdGhlIGB3aXRoKClgIG1vZHVsYXRpbmcgc3RlcCB3aGljaCBwcm92aWRlcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIGFsZ29yaXRobS4gSXQgdGFrZXMKK2NvbmZpZ3VyYXRpb24ga2V5cyBmcm9tIHRoZSBgUGFnZVJhbmtgIGFuZCBpcyBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHRvIHRoZSBHcmVtbGluIENvbnNvbGUuCisKIFRoZSA8PGV4cGxhaW4tc3RlcCxgZXhwbGFpbigpYD4+LXN0ZXAgY2FuIGJlIHVzZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHRyYXZlcnNhbCBpcyBjb21waWxlZCBpbnRvIG11bHRpcGxlIGBHcmFwaENvbXB1dGVyYCBqb2JzLgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQpAQCAtMTgxNyw5ICsyMTM0LDEwIEBACiBnID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKCkKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS4KICAgcGFnZVJhbmsoKS4KLSAgICBieShvdXRFKCdrbm93cycpKS4KLSAgICBieSgnZnJpZW5kUmFuaycpLgotICBvcmRlcigpLmJ5KCdmcmllbmRSYW5rJyxkZXNjKS52YWx1ZU1hcCgnbmFtZScsJ2ZyaWVuZFJhbmsnKS5leHBsYWluKCkKKyAgICB3aXRoKFBhZ2VSYW5rLmVkZ2VzLCBfXy5vdXRFKCdrbm93cycpKS4KKyAgICB3aXRoKFBhZ2VSYW5rLnByb3BlcnR5TmFtZSwgJ2ZyaWVuZFJhbmsnKS4KKyAgb3JkZXIoKS5ieSgnZnJpZW5kUmFuaycsZGVzYykuCisgIGVsZW1lbnRNYXAoJ25hbWUnLCdmcmllbmRSYW5rJykuZXhwbGFpbigpCiAtLS0tCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCkBAIC0xODY3LDYgKzIxODUsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmluKCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykpLmZvbGQoKSkKIC0tLS0KIAorSXQncyBwb3NzaWJsZSB0byBsaW1pdCB0aGUgcGF0aCB1c2luZyB0aGUgPDx0by1zdGVwLGB0bygpYD4+IG9yIDw8ZnJvbS1zdGVwLGBmcm9tKClgPj4gc3RlcCBtb2R1bGF0b3JzLgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywndmFkYXMnKS5hcygnZScpLgorICAgICAgaW4oJ2tub3dzJykuCisgICAgICBvdXQoJ2tub3dzJykud2hlcmUobmVxKCdlJykpLgorICAgICAgcGF0aCgpLmJ5KCduYW1lJykgPDE+CitnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCd2YWRhcycpLmFzKCdlJykuCisgICAgICAgaW4oJ2tub3dzJykuYXMoJ20nKS4KKyAgICAgICBvdXQoJ2tub3dzJykud2hlcmUobmVxKCdlJykpLgorICAgICAgIHBhdGgoKS50bygnbScpLmJ5KCduYW1lJykgPDI+CitnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCd2YWRhcycpLmFzKCdlJykuCisgICAgICAgaW4oJ2tub3dzJykuYXMoJ20nKS4KKyAgICAgICBvdXQoJ2tub3dzJykud2hlcmUobmVxKCdlJykpLgorICAgICAgIHBhdGgoKS5mcm9tKCdtJykuYnkoJ25hbWUnKSA8Mz4KKy0tLS0KKworPDE+IE9idGFpbiB0aGUgZnVsbCBwYXRoIGZyb20gdmFkYXMgdG8gam9zaC4KKzwyPiBTYXZlIHRoZSBtaWRkbGUgbm9kZSwgbWFya28sIGFuZCB1c2UgdGhlIGB0bygpYCBtb2R1bGF0b3IgdG8gc2hvdyBvbmx5IHRoZSBwYXRoIGZyb20gdmFkYXMgdG8gbWFya28KKzwzPiBVc2UgdGhlIGBmcm9tKClgIG1kb3VsYXRvciB0byBzaG93IG9ubHkgdGhlIHBhdGggZnJvbSBtYXJrbyB0byBqb3NoCisKIFdBUk5JTkc6IEdlbmVyYXRpbmcgcGF0aCBpbmZvcm1hdGlvbiBpcyBleHBlbnNpdmUgYXMgdGhlIGhpc3Rvcnkgb2YgdGhlIHRyYXZlcnNlciBpcyBzdG9yZWQgaW50byBhIEphdmEgbGlzdC4gV2l0aAogbnVtZXJvdXMgdHJhdmVyc2VycywgdGhlcmUgYXJlIG51bWVyb3VzIGxpc3RzLiBNb3Jlb3ZlciwgaW4gYW4gT0xBUCA8PGdyYXBoY29tcHV0ZXIsYEdyYXBoQ29tcHV0ZXJgPj4gZW52aXJvbm1lbnQKIHRoaXMgYmVjb21lcyBleGNlZWRpbmdseSBwcm9oaWJpdGl2ZSBhcyB0aGVyZSBhcmUgdHJhdmVyc2VycyBlbWFuYXRpbmcgZnJvbSBhbGwgdmVydGljZXMgaW4gdGhlIGdyYXBoIGluIHBhcmFsbGVsLgpAQCAtMTkxMiwxMCArMjI1MiwxNiBAQAogZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcigpCiBnLlYoKS5wZWVyUHJlc3N1cmUoKS5ieSgnY2x1c3RlcicpLnZhbHVlcygnY2x1c3RlcicpCiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCi0gIHBlZXJQcmVzc3VyZSgpLmJ5KCdjbHVzdGVyJykuCi0gIGdyb3VwKCkuYnkoJ2NsdXN0ZXInKS5ieSgnbmFtZScpCisgIHBlZXJQcmVzc3VyZSgpLgorICAgIHdpdGgoUGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSwgJ2NsdXN0ZXInKS4KKyAgZ3JvdXAoKS4KKyAgICBieSgnY2x1c3RlcicpLgorICAgIGJ5KCduYW1lJykKIC0tLS0KIAorTm90ZSB0aGUgdXNlIG9mIHRoZSBgd2l0aCgpYCBtb2R1bGF0aW5nIHN0ZXAgd2hpY2ggcHJvdmlkZXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSBhbGdvcml0aG0uIEl0IHRha2VzCitjb25maWd1cmF0aW9uIGtleXMgZnJvbSB0aGUgYFBlZXJQcmVzc3VyZWAgY2xhc3MgYW5kIGlzIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgdG8gdGhlIEdyZW1saW4gQ29uc29sZS4KKwogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3BlZXJQcmVzc3VyZS0tKytbYHBlZXJQcmVzc3VyZSgpYF0KQEAgLTIwNzIsNyArMjQxOCw3IEBACiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCiAgIHByb2dyYW0oUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkucHJvcGVydHkoJ3JhbmsnKS5jcmVhdGUoZ3JhcGgpKS4KICAgICBvcmRlcigpLmJ5KCdyYW5rJywgYXNjKS4KLSAgdmFsdWVNYXAoJ25hbWUnLCAncmFuaycpCisgIGVsZW1lbnRNYXAoJ25hbWUnLCAncmFuaycpCiAtLS0tCiAKIFtbcHJvcGVydGllcy1zdGVwXV0KQEAgLTIxNDgsNiArMjQ5NCwxNyBAQAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3JhbmdlLW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGUtbG9uZy1sb25nLSsrW2ByYW5nZShTY29wZSxsb25nLGxvbmcpYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvU2NvcGUuaHRtbCsrW2BTY29wZWBdCiAKK1tbcmVhZC1zdGVwXV0KKz09PSBSZWFkIFN0ZXAKKworVGhlIGByZWFkKClgLXN0ZXAgaXMgbm90IHJlYWxseSBhICJzdGVwIiBidXQgYSBzdGVwIG1vZHVsYXRvciBpbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBgaW8oKWAtc3RlcC4KK01vcmUgc3BlY2lmaWNhbGx5LCBpdCB0ZWxscyB0aGUgYGlvKClgLXN0ZXAgdGhhdCBpdCBpcyBleHBlY3RlZCB0byB1c2UgaXRzIGNvbmZpZ3VyYXRpb24gdG8gcmVhZCBkYXRhIGZyb20gc29tZQorbG9jYXRpb24uIFBsZWFzZSBzZWUgdGhlIDw8aW8tc3RlcCxkb2N1bWVudGF0aW9uPj4gZm9yIGBpbygpYC1zdGVwIGZvciBtb3JlIGNvbXBsZXRlIGRldGFpbHMgb24gdXNhZ2UuCisKKypBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCisKK2xpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2Z1bGwvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNyZWFkLS1bYHJlYWQoKWBdCisKIFtbcmVwZWF0LXN0ZXBdXQogPT09IFJlcGVhdCBTdGVwCiAKQEAgLTIyMDYsNiArMjU2MywyMyBAQAogICBHaXZlbiB0aGF0IGBsb29wcz09MmAsIHRoZSB1bnRpbC1wcmVkaWNhdGUgZmFpbHMgYW5kIHJpcHBsZSBhbmQgbG9wIGFyZSBlbWl0dGVkLgogVGhlcmVmb3JlLCB0aGUgdHJhdmVyc2VyIGhhcyBzZWVuIHRoZSB2ZXJ0aWNlczogbG9wLCB2YWRhcywgam9zaCwgcmlwcGxlLCBhbmQgbG9wLgogCitgcmVwZWF0KClgLXN0ZXBzIG1heSBiZSBuZXN0ZWQgaW5zaWRlIGVhY2ggb3RoZXIgb3IgaW5zaWRlIHRoZSBgZW1pdCgpYCBvciBgdW50aWwoKWAgcHJlZGljYXRlcyBhbmQgdGhleSBjYW4gYWxzbyBiZSAnbmFtZWQnIGJ5IHBhc3NpbmcgYSBzdHJpbmcgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byBgcmVwZWF0KClgLiBUaGUgbG9vcCBjb3VudGVyIG9mIGEgbmFtZWQgcmVwZWF0IHN0ZXAgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGUgbG9vcGVkIGNvbnRleHQgd2l0aCBgbG9vcHMobG9vcE5hbWUpYCB3aGVyZSBgbG9vcE5hbWVgIGlzIHRoZSBuYW1lIHNldCB3aGUgY3JlYXRpbmcgdGhlIGByZXBlYXQoKWAtc3RlcC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuVigxKS4KKyAgcmVwZWF0KG91dCgia25vd3MiKSkuCisgICAgdW50aWwocmVwZWF0KG91dCgiY3JlYXRlZCIpKS5lbWl0KGhhcygibmFtZSIsICJsb3AiKSkpIDwxPgorZy5WKDYpLgorICByZXBlYXQoJ2EnLCBib3RoKCdjcmVhdGVkJykuc2ltcGxlUGF0aCgpKS4KKyAgICBlbWl0KHJlcGVhdCgnYicsIGJvdGgoJ2tub3dzJykpLgorICAgICAgICAgICB1bnRpbChsb29wcygnYicpLmFzKCdiJykud2hlcmUobG9vcHMoJ2EnKS5hcygnYicpKSkuCisgIGhhc0lkKDIpKS5kZWR1cCgpIDwyPgorLS0tLQorCis8MT4gU3RhcnRpbmcgZnJvbSB2ZXJ0ZXggMSwga2VlcCBnb2luZyB0YWtpbmcgb3V0Z29pbmcgJ2tub3dzJyBlZGdlcyB1bnRpbCB0aGUgdmVydGV4IHdhcyBjcmVhdGVkIGJ5ICdsb3AnLgorPDI+IFN0YXJ0aW5nIGZyb20gdmVydGV4IDYsIGtlZXAgdGFraW5nIGNyZWF0ZWQgZWRnZXMgaW4gZWl0aGVyIGRpcmVjdGlvbiB1bnRpbCB0aGUgdmVydGV4IGlzIHNhbWUgZGlzdGFuY2UgZnJvbSB2ZXJ0ZXggMiBvdmVyIGtub3dzIGVkZ2VzIGFzIGl0IGlzIGZyb20gdmVydGV4IDYgb3ZlciBjcmVhdGVkIGVkZ2VzLgorCiBGaW5hbGx5LCBub3RlIHRoYXQgYm90aCBgZW1pdCgpYCBhbmQgYHVudGlsKClgIGNhbiB0YWtlIGEgdHJhdmVyc2FsIGFuZCBpbiBzdWNoLCBzaXR1YXRpb25zLCB0aGUgcHJlZGljYXRlIGlzCiBkZXRlcm1pbmVkIGJ5IGB0cmF2ZXJzYWwuaGFzTmV4dCgpYC4gQSBmZXcgZXhhbXBsZXMgYXJlIHByb3ZpZGVkIGJlbG93LgogCkBAIC0yNDE3LDggKzI3OTEsOCBAQAogCiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnZm9sbG93ZWRCeScpLmdyb3VwQ291bnQoKS5ieSgnbmFtZScpLgogICAgICAgb3JkZXIobG9jYWwpLmJ5KHZhbHVlcyxkZXNjKS5saW1pdChsb2NhbCwgNSkKIGcuVigpLmhhc0xhYmVsKCdzb25nJykub3V0KCdmb2xsb3dlZEJ5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykuCkBAIC0yNDMxLDggKzI4MDUsOCBAQAogCiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnc3VuZ0J5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykgPDE+CiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnc3VuZ0J5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykuc2VsZWN0KHZhbHVlcykgPDI+CiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnc3VuZ0J5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykuc2VsZWN0KHZhbHVlcykudW5mb2xkKCkuCkBAIC0yNTA2LDYgKzI4ODAsNzAgQEAKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvQ29sdW1uLmh0bWwrK1tgQ29sdW1uYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvUG9wLmh0bWwrK1tgUG9wYF0KIAorW1tzaG9ydGVzdHBhdGgtc3RlcF1dCis9PT0gU2hvcnRlc3RQYXRoIHN0ZXAKKworVGhlIGBzaG9ydGVzdFBhdGgoKWAtc3RlcCBwcm92aWRlcyBhbiBlYXN5IHdheSB0byBmaW5kIHNob3J0ZXN0IG5vbi1jeWNsaWMgcGF0aHMgaW4gYSBncmFwaC4gSXQgaXMgY29uZmlndXJhYmxlCit1c2luZyB0aGUgYHdpdGgoKWAtbW9kdWxhdG9yIHdpdGggdGhlIG9wdGlvbnMgZ2l2ZW4gYmVsb3cuCisKK0lNUE9SVEFOVDogVGhlIGBzaG9ydGVzdFBhdGgoKWAtc3RlcCBpcyBhIGBWZXJ0ZXhDb21wdXRpbmdgLXN0ZXAgYW5kIGFzIHN1Y2gsIGNhbiBvbmx5IGJlIHVzZWQgYWdhaW5zdCBhIGdyYXBoCit0aGF0IHN1cHBvcnRzIGBHcmFwaENvbXB1dGVyYCAoT0xBUCkuCisKK1t3aWR0aD0iMTAwJSIsY29scz0iMywzLDE1LDUiLG9wdGlvbnM9ImhlYWRlciJdCit8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit8IEtleSB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8IERlZmF1bHQKK3wgYHRhcmdldGAgfCBgVHJhdmVyc2FsYCB8IFNldHMgYSBmaWx0ZXIgdHJhdmVyc2FsIGZvciB0aGUgZW5kIHZlcnRpY2VzIChlLmcuIGArX18uaGFzKCduYW1lJywnbWFya28nKStgKS4gfCBhbGwgdmVydGljZXMgKGArX18uaWRlbnRpdHkoKStgKQorfCBgZWRnZXNgIHwgYFRyYXZlcnNhbGAgb3IgYERpcmVjdGlvbmAgfCBTZXRzIGEgYFRyYXZlcnNhbGAgdGhhdCBlbWl0cyB0aGUgZWRnZXMgdG8gdHJhdmVyc2UgZnJvbSB0aGUgY3VycmVudCB2ZXJ0ZXggb3IgdGhlIGBEaXJlY3Rpb25gIHRvIHRyYXZlcnNlIGR1cmluZyB0aGUgc2hvcnRlc3QgcGF0aCBkaXNjb3ZlcnkuIHwgYERpcmVjdGlvbi5CT1RIYAorfCBgZGlzdGFuY2VgIHwgYFRyYXZlcnNhbGAgb3IgYFN0cmluZ2AgfCBTZXRzIHRoZSBgVHJhdmVyc2FsYCB0aGF0IGNhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIGZvciB0aGUgY3VycmVudCBlZGdlIG9yIHRoZSBuYW1lIG9mIGFuIGVkZ2UgcHJvcGVydHkgdG8gdXNlIGZvciB0aGUgZGlzdGFuY2UgY2FsY3VsYXRpb25zLiB8IGBfXy5jb25zdGFudCgxKWAKK3wgYG1heERpc3RhbmNlYCB8IGBOdW1iZXJgIHwgU2V0cyB0aGUgZGlzdGFuY2UgbGltaXQgZm9yIGFsbCBzaG9ydGVzdCBwYXRocy4gfCBub25lCit8IGBpbmNsdWRlRWRnZXNgIHwgYEJvb2xlYW5gIHwgV2hldGhlciB0byBpbmNsdWRlIGVkZ2VzIGluIHRoZSByZXN1bHQgb3Igbm90LiB8IGBmYWxzZWAKK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cgPSBnLndpdGhDb21wdXRlcigpCitnLlYoKS5zaG9ydGVzdFBhdGgoKSA8MT4KK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykuc2hvcnRlc3RQYXRoKCkgPDI+CitnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIF9fLmhhcygnbmFtZScsJ3BldGVyJykpIDwzPgorZy5WKCkuc2hvcnRlc3RQYXRoKCkuCisgICAgICAgIHdpdGgoU2hvcnRlc3RQYXRoLmVkZ2VzLCBEaXJlY3Rpb24uSU4pLgorICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIF9fLmhhcygnbmFtZScsJ2pvc2gnKSkgPDQ+CitnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLgorICAgICAgc2hvcnRlc3RQYXRoKCkuCisgICAgICAgIHdpdGgoU2hvcnRlc3RQYXRoLnRhcmdldCwgX18uaGFzKCduYW1lJywnam9zaCcpKSA8NT4KK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykuCisgICAgICBzaG9ydGVzdFBhdGgoKS4KKyAgICAgICAgd2l0aChTaG9ydGVzdFBhdGgudGFyZ2V0LCBfXy5oYXMoJ25hbWUnLCdqb3NoJykpLgorICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5kaXN0YW5jZSwgJ3dlaWdodCcpIDw2PgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS4KKyAgICAgIHNob3J0ZXN0UGF0aCgpLgorICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIF9fLmhhcygnbmFtZScsJ2pvc2gnKSkuCisgICAgICAgIHdpdGgoU2hvcnRlc3RQYXRoLmluY2x1ZGVFZGdlcywgdHJ1ZSkgPDc+CistLS0tCisKKzwxPiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocy4KKzwyPiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocyBmcm9tIGBtYXJrb2AuCis8Mz4gRmluZCBhbGwgc2hvcnRlc3QgcGF0aHMgdG8gYHBldGVyYC4KKzw0PiBGaW5kIGFsbCBpbi1kaXJlY3RlZCBwYXRocyB0byBgam9zaGAuCis8NT4gRmluZCBhbGwgc2hvcnRlc3QgcGF0aHMgZnJvbSBgbWFya29gIHRvIGBqb3NoYC4KKzw2PiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocyBmcm9tIGBtYXJrb2AgdG8gYGpvc2hgIHVzaW5nIGEgY3VzdG9tIGRpc3RhbmNlIHByb3BlcnR5LgorPDc+IEZpbmQgYWxsIHNob3J0ZXN0IHBhdGhzIGZyb20gYG1hcmtvYCB0byBgam9zaGAgYW5kIGluY2x1ZGUgZWRnZXMgaW4gdGhlIHJlc3VsdC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuaW5qZWN0KGcud2l0aENvbXB1dGVyKCkuVigpLnNob3J0ZXN0UGF0aCgpLgorICAgICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5kaXN0YW5jZSwgJ3dlaWdodCcpLgorICAgICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5pbmNsdWRlRWRnZXMsIHRydWUpLgorICAgICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5tYXhEaXN0YW5jZSwgMSkudG9MaXN0KCkudG9BcnJheSgpKS4KKyAgbWFwKHVuZm9sZCgpLnZhbHVlcygnbmFtZScsJ3dlaWdodCcpLmZvbGQoKSkgPDE+CistLS0tCisKKzwxPiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocyB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBwcm9wZXJ0eSBhbmQgbGltaXQgdGhlIGRpc3RhbmNlIHRvIDEuIEluamVjdCB0aGUgcmVzdWx0IGludG8gYSBPTFRQIGBHcmFwaFRyYXZlcnNhbGAgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBzZWxlY3QgcHJvcGVydGllcyBmcm9tIGFsbCBlbGVtZW50cyBpbiBhbGwgcGF0aHMuCisKKypBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCisKK2xpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNzaG9ydGVzdFBhdGgtLSsrW2BzaG9ydGVzdFBhdGgoKWBdCisKIFtbc2ltcGxlcGF0aC1zdGVwXV0KID09PSBTaW1wbGVQYXRoIFN0ZXAKIApAQCAtMjU5MywzNCArMzAzMSw2IEBACiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjc2tpcC1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlLWxvbmctKytbYHNraXAoU2NvcGUsbG9uZylgXSwKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9TY29wZS5odG1sKytbYFNjb3BlYF0KIAotW1tzdG9yZS1zdGVwXV0KLT09PSBTdG9yZSBTdGVwCi0KLVdoZW4gbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhenlfZXZhbHVhdGlvbltsYXp5XSBhZ2dyZWdhdGlvbiBpcyBuZWVkZWQsIGBzdG9yZSgpYC1zdGVwICgqc2lkZUVmZmVjdCopCi1zaG91bGQgYmUgdXNlZCBvdmVyIDw8YWdncmVnYXRlLXN0ZXAsYGFnZ3JlZ2F0ZSgpYD4+LiBUaGUgdHdvIHN0ZXBzIGRpZmZlciBpbiB0aGF0IGBzdG9yZSgpYCBkb2VzIG5vdCBibG9jayBhbmQgb25seQotc3RvcmVzIG9iamVjdHMgaW4gaXRzIHNpZGUtZWZmZWN0IGNvbGxlY3Rpb24gYXMgdGhleSBwYXNzIHRocm91Z2guCi0KLVtncmVtbGluLWdyb292eSxtb2Rlcm5dCi0tLS0tCi1nLlYoKS5hZ2dyZWdhdGUoJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLWcuVigpLnN0b3JlKCd4JykubGltaXQoMSkuY2FwKCd4JykKLWcud2l0aG91dFN0cmF0ZWdpZXMoRWFybHlMaW1pdFN0cmF0ZWd5KS5WKCkuc3RvcmUoJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKQotLS0tLQotCi1JdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IGBFYXJseUxpbWl0U3RyYXRlZ3lgIGludHJvZHVjZWQgaW4gMy4zLjUgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBgc3RvcmUoKWAuIFdpdGhvdXQgdGhhdAotc3RyYXRlZ3kgKHdoaWNoIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0KSwgdGhlcmUgYXJlIHR3byByZXN1bHRzIGluIHRoZSBgc3RvcmUoKWAgc2lkZS1lZmZlY3QgZXZlbiB0aG91Z2ggdGhlIGludGVydmFsCi1zZWxlY3Rpb24gaXMgZm9yIDEgb2JqZWN0LiBSZWFsaXplIHRoYXQgd2hlbiB0aGUgc2Vjb25kIG9iamVjdCBpcyBvbiBpdHMgd2F5IHRvIHRoZSBgcmFuZ2UoKWAgZmlsdGVyIChpLmUuIGBbMC4uMV1gKSwKLWl0IHBhc3NlcyB0aHJvdWdoIGBzdG9yZSgpYCBhbmQgdGh1cywgc3RvcmVkIGJlZm9yZSBmaWx0ZXJlZC4KLQotW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KLS0tLS0KLWcuRSgpLnN0b3JlKCd4JykuYnkoJ3dlaWdodCcpLmNhcCgneCcpCi0tLS0tCi0KLSpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCi0KLWxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNzdG9yZS1qYXZhLmxhbmcuU3RyaW5nLSsrW2BzdG9yZShTdHJpbmcpYF0KLQogW1tzdWJncmFwaC1zdGVwXV0KID09PSBTdWJncmFwaCBTdGVwCiAKQEAgLTI3MDEsNyArMzExMSw3IEBACiBbW3N1bS1zdGVwXV0KID09PSBTdW0gU3RlcAogCi1UaGUgYHN1bSgpYC1zdGVwICgqbWFwKikgb3BlcmF0ZXMgb24gYSBzdHJlYW0gb2YgbnVtYmVycyBhbmQgc3VtcyB0aGUgbnVtYmVycyB0b2dldGhlciB0byB5aWVsZCBhIGRvdWJsZS4gTm90ZSB0aGF0CitUaGUgYHN1bSgpYC1zdGVwICgqbWFwKikgb3BlcmF0ZXMgb24gYSBzdHJlYW0gb2YgbnVtYmVycyBhbmQgc3VtcyB0aGUgbnVtYmVycyB0b2dldGhlciB0byB5aWVsZCBhIHJlc3VsdC4gTm90ZSB0aGF0CiB0aGUgY3VycmVudCB0cmF2ZXJzZXIgbnVtYmVyIGlzIG11bHRpcGxpZWQgYnkgdGhlIHRyYXZlcnNlciBidWxrIHRvIGRldGVybWluZSBob3cgbWFueSBzdWNoIG51bWJlcnMgYXJlIGJlaW5nCiByZXByZXNlbnRlZC4KIApAQCAtMjcxMiw3ICszMTIyLDcgQEAKIC0tLS0KIAogSU1QT1JUQU5UOiBgc3VtKGxvY2FsKWAgZGV0ZXJtaW5lcyB0aGUgc3VtIG9mIHRoZSBjdXJyZW50LCBsb2NhbCBvYmplY3QgKG5vdCB0aGUgb2JqZWN0cyBpbiB0aGUgdHJhdmVyc2FsIHN0cmVhbSkuCi1UaGlzIHdvcmtzIGZvciBgQ29sbGVjdGlvbmAtdHlwZSBvYmplY3RzLiBGb3IgYW55IG90aGVyIG9iamVjdCwgYSBzdW0gb2YgYERvdWJsZS5OYU5gIGlzIHJldHVybmVkLgorVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gLXR5cGUgb2JqZWN0cy4KIAogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIApAQCAtMjc0Nyw3ICszMTU3LDcgQEAKIGcuVigpLmFzKCdhJykub3V0KCkuYXMoJ2EnKS5vdXQoKS5hcygnYScpLnNlbGVjdCgnYScpLmJ5KHRhaWwobG9jYWwpKS52YWx1ZXMoJ25hbWUnKSA8MT4KIGcuVigpLmFzKCdhJykub3V0KCkuYXMoJ2EnKS5vdXQoKS5hcygnYScpLnNlbGVjdCgnYScpLmJ5KHVuZm9sZCgpLnZhbHVlcygnbmFtZScpLmZvbGQoKSkudGFpbChsb2NhbCkgPDI+CiBnLlYoKS5hcygnYScpLm91dCgpLmFzKCdhJykub3V0KCkuYXMoJ2EnKS5zZWxlY3QoJ2EnKS5ieSh1bmZvbGQoKS52YWx1ZXMoJ25hbWUnKS5mb2xkKCkpLnRhaWwobG9jYWwsIDIpIDwzPgotZy5WKCkudmFsdWVNYXAoKS50YWlsKGxvY2FsKSA8ND4KK2cuVigpLmVsZW1lbnRNYXAoKS50YWlsKGxvY2FsKSA8ND4KIC0tLS0KIAogPDE+IE9ubHkgdGhlIG1vc3QgcmVjZW50IG5hbWUgZnJvbSB0aGUgImEiIHN0ZXAgKGBMaXN0PFZlcnRleD5gIGJlY29tZXMgYFZlcnRleGApLgpAQCAtMjkzNyw3ICszMzQ3LDExIEBACiBbW3ZhbHVlbWFwLXN0ZXBdXQogPT09IFZhbHVlTWFwIFN0ZXAKIAotVGhlIGB2YWx1ZU1hcCgpYC1zdGVwIHlpZWxkcyBhIE1hcCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJvcGVydGllcyBvZiBhbiBlbGVtZW50LgorVGhlIGB2YWx1ZU1hcCgpYC1zdGVwIHlpZWxkcyBhIGBNYXBgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIGVsZW1lbnQuCisKK0lNUE9SVEFOVDogVGhpcyBzdGVwIGlzIHRoZSBwcmVjdXJzb3IgdG8gdGhlIDw8ZWxlbWVudG1hcC1zdGVwLGVsZW1lbnRNYXAoKS1zdGVwPj4uIFVzZXJzIHNob3VsZCB0eXBpY2FsbHkKK2Nob29zZSBgZWxlbWVudE1hcCgpYCB1bmxlc3MgdGhleSB1dGlsaXplIG11bHRpLXByb3BlcnRpZXMuIGBlbGVtZW50TWFwKClgIGVmZmVjdGl2ZWx5IG1pbWljcyB0aGUgZnVuY3Rpb25hbGl0eSBvZgorYHZhbHVlTWFwKHRydWUpLmJ5KHVuZm9sZCgpKWAgYXMgYSBzaW5nbGUgc3RlcC4KIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KQEAgLTI5NDgsOCArMzM2Miw4IEBACiAtLS0tCiAKIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIG1hcCBvZiBhIHZlcnRleCBtYWludGFpbnMgYSBsaXN0IG9mIHZhbHVlcyBmb3IgZWFjaCBrZXkuIFRoZSBtYXAgb2YgYW4gZWRnZSBvcgotdmVydGV4LXByb3BlcnR5IHJlcHJlc2VudHMgYSBzaW5nbGUgcHJvcGVydHkgKG5vdCBhIGxpc3QpLiBUaGUgcmVhc29uIGlzIHRoYXQgdmVydGljZXMgaW4gVGlua2VyUG9wMyBsZXZlcmFnZQotPDx2ZXJ0ZXgtcHJvcGVydGllcyx2ZXJ0ZXggcHJvcGVydGllcz4+IHdoaWNoIGFyZSBzdXBwb3J0IG11bHRpcGxlIHZhbHVlcyBwZXIga2V5LiBVc2luZyB0aGUgPDx0aGUtY3Jldy10b3ktZ3JhcGgsCit2ZXJ0ZXgtcHJvcGVydHkgcmVwcmVzZW50cyBhIHNpbmdsZSBwcm9wZXJ0eSAobm90IGEgbGlzdCkuIFRoZSByZWFzb24gaXMgdGhhdCB2ZXJ0aWNlcyBpbiBUaW5rZXJQb3AgbGV2ZXJhZ2UKKzw8dmVydGV4LXByb3BlcnRpZXMsdmVydGV4IHByb3BlcnRpZXM+PiB3aGljaCBzdXBwb3J0IG11bHRpcGxlIHZhbHVlcyBwZXIga2V5LiBVc2luZyB0aGUgPDx0aGUtY3Jldy10b3ktZ3JhcGgsCiAiVGhlIENyZXciPj4gdG95IGdyYXBoLCB0aGUgcG9pbnQgaXMgbWFkZSBleHBsaWNpdC4KIAogW2dyZW1saW4tZ3Jvb3Z5LHRoZUNyZXddCkBAIC0yOTU5LDE5ICszMzczLDI2IEBACiBnLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLnByb3BlcnRpZXMoJ2xvY2F0aW9uJykudmFsdWVNYXAoKQogLS0tLQogCi1JZiB0aGUgYGlkYCwgYGxhYmVsYCwgYGtleWAsIGFuZCBgdmFsdWVgIG9mIHRoZSBgRWxlbWVudGAgaXMgZGVzaXJlZCwgdGhlbiBhIGJvb2xlYW4gdHJpZ2dlcnMgaXRzIGluc2VydGlvbiBpbnRvIHRoZQotcmV0dXJuZWQgbWFwLgorVG8gdHVybiBsaXN0IG9mIHZhbHVlcyBpbnRvIHNpbmdsZSBpdGVtcywgdGhlIGBieSgpYCBtb2R1bGF0b3IgY2FuIGJlIHVzZWQgYXMgc2hvd24gYmVsb3cuCiAKIFtncmVtbGluLWdyb292eSx0aGVDcmV3XQogLS0tLQotZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpLnZhbHVlTWFwKHRydWUpCi1nLlYoKS5oYXNMYWJlbCgncGVyc29uJykudmFsdWVNYXAodHJ1ZSwnbmFtZScpCi1nLlYoKS5oYXNMYWJlbCgncGVyc29uJykucHJvcGVydGllcygnbG9jYXRpb24nKS52YWx1ZU1hcCh0cnVlKQorZy5WKCkudmFsdWVNYXAoKS5ieSh1bmZvbGQoKSkKK2cuVigpLnZhbHVlTWFwKCduYW1lJywnbG9jYXRpb24nKS5ieSgpLmJ5KHVuZm9sZCgpKQorLS0tLQorCitJZiB0aGUgYGlkYCwgYGxhYmVsYCwgYGtleWAsIGFuZCBgdmFsdWVgIG9mIHRoZSBgRWxlbWVudGAgaXMgZGVzaXJlZCwgdGhlbiB0aGUgYHdpdGgoKWAgbW9kdWxhdG9yIGNhbiBiZSB1c2VkIHRvCit0cmlnZ2VyIGl0cyBpbnNlcnRpb24gaW50byB0aGUgcmV0dXJuZWQgbWFwLgorCitbZ3JlbWxpbi1ncm9vdnksdGhlQ3Jld10KKy0tLS0KK2cuVigpLmhhc0xhYmVsKCdwZXJzb24nKS52YWx1ZU1hcCgpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKQorZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpLnZhbHVlTWFwKCduYW1lJykud2l0aChXaXRoT3B0aW9ucy50b2tlbnMsIFdpdGhPcHRpb25zLmxhYmVscykKK2cuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5wcm9wZXJ0aWVzKCdsb2NhdGlvbicpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMsIFdpdGhPcHRpb25zLnZhbHVlcykKIC0tLS0KIAogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIAotbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3ZhbHVlTWFwLWJvb2xlYW4tamF2YS5sYW5nLlN0cmluZy4uLi0rK1tgdmFsdWVNYXAoYm9vbGVhbixTdHJpbmcuLi4pYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjdmFsdWVNYXAtamF2YS5sYW5nLlN0cmluZy4uLi0rK1tgdmFsdWVNYXAoU3RyaW5nLi4uKWBdCiAKIFtbdmFsdWVzLXN0ZXBdXQpAQCAtMzAxMiw3ICszNDMzLDcgQEAKIFtOT1RFLCBjYXB0aW9uPUdyb292eV0KID09PT0KIFRoZSB0ZXJtIGBpbmAgaXMgYSByZXNlcnZlZCB3b3JkIGluIEdyb292eSwgYW5kIHdoZW4gdGhlcmVmb3JlIHVzZWQgYXMgcGFydCBvZiBhbiBhbm9ueW1vdXMgdHJhdmVyc2FsIG11c3QgYmUgcmVmZXJyZWQKLXRvIGluIEdyZW1saW4gd2l0aCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgYCtfXy5pbigpK2AuCit0byBpbiBHcmVtbGluIHdpdGggdGhlIGRvdWJsZSB1bmRlcnNjb3JlIGBfXy5pbigpYC4KID09PT0KIAogW05PVEUsIGNhcHRpb249SmF2YXNjcmlwdF0KQEAgLTMxMTYsNyArMzUzNyw3IEBACiBXQVJOSU5HOiBUaGUgYW5vbnltb3VzIHRyYXZlcnNhbCBvZiBgd2hlcmUoKWAgcHJvY2Vzc2VzIHRoZSBjdXJyZW50IG9iamVjdCAibG9jYWxseSIuIEluIE9MQVAsIHdoZXJlIHRoZSBhdG9taWMgdW5pdAogb2YgY29tcHV0aW5nIGlzIHRoZSB2ZXJ0ZXggYW5kIGl0cyBsb2NhbCAic3RhciBncmFwaCwiIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGRvZXMgbm90IGxlYXZlCiB0aGUgY29uZmluZXMgb2YgdGhlIHZlcnRleCdzIHN0YXIgZ3JhcGguIEluIG90aGVyIHdvcmRzLCBpdCBjYW4gbm90IHRyYXZlcnNlIHRvIGFuIGFkamFjZW50IHZlcnRleCdzIHByb3BlcnRpZXMgb3IKLWVkZ2VzLiAKK2VkZ2VzLgogCiAqQWRkaXRpb25hbCBSZWZlcmVuY2VzKgogCkBAIC0zMTI1LDI3ICszNTQ2LDYzIEBACiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjd2hlcmUtb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWwtKytbYHdoZXJlKFRyYXZlcnNhbClgXSwKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9QLmh0bWwrK1tgUGBdCiAKK1tbd2l0aC1zdGVwXV0KKz09PSBXaXRoIFN0ZXAKKworVGhlIGB3aXRoKClgLXN0ZXAgaXMgbm90IGFuIGFjdHVhbCBzdGVwLCBidXQgaXMgaW5zdGVhZCBhICJzdGVwIG1vZHVsYXRvciIgd2hpY2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBzdGVwCitwcmlvciB0byBpdC4gVGhlIGB3aXRoKClgLXN0ZXAgcHJvdmlkZXMgYWRkaXRpb25hbCAiY29uZmlndXJhdGlvbiIgaW5mb3JtYXRpb24gdG8gc3RlcHMgdGhhdCBpbXBsZW1lbnQgdGhlIGBDb25maWd1cmluZ2AKK2ludGVyZmFjZS4gU3RlcHMgdGhhdCBhbGxvdyBmb3IgdGhpcyB0eXBlIG9mIG1vZHVsYXRpb24gd2lsbCBleHBsaWNpdGx5IHN0YXRlIHNvIGluIHRoZWlyIGRvY3VtZW50YXRpb24uCisKK1tOT1RFLCBjYXB0aW9uPUphdmFzY3JpcHRdCis9PT09CitUaGUgdGVybSBgd2l0aGAgaXMgYSByZXNlcnZlZCB3b3JkIGluIEphdmFzY3JpcHQsIGFuZCB0aGVyZWZvcmUgbXVzdCBiZSByZWZlcnJlZCB0byBpbiBHcmVtbGluIHdpdGggYHdpdGhfKClgLgorPT09PQorCitbTk9URSwgY2FwdGlvbj1QeXRob25dCis9PT09CitUaGUgdGVybSBgd2l0aGAgaXMgYSByZXNlcnZlZCB3b3JkIGluIFB5dGhvbiwgYW5kIHRoZXJlZm9yZSBtdXN0IGJlIHJlZmVycmVkIHRvIGluIEdyZW1saW4gd2l0aCBgd2l0aF8oKWAuCis9PT09CisKK1tbd3JpdGUtc3RlcF1dCis9PT0gV3JpdGUgU3RlcAorCitUaGUgYHdyaXRlKClgLXN0ZXAgaXMgbm90IHJlYWxseSBhICJzdGVwIiBidXQgYSBzdGVwIG1vZHVsYXRvciBpbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBgaW8oKWAtc3RlcC4KK01vcmUgc3BlY2lmaWNhbGx5LCBpdCB0ZWxscyB0aGUgYGlvKClgLXN0ZXAgdGhhdCBpdCBpcyBleHBlY3RlZCB0byB1c2UgaXRzIGNvbmZpZ3VyYXRpb24gdG8gd3JpdGUgZGF0YSB0byBzb21lCitsb2NhdGlvbi4gUGxlYXNlIHNlZSB0aGUgPDxpby1zdGVwLGRvY3VtZW50YXRpb24+PiBmb3IgYGlvKClgLXN0ZXAgZm9yIG1vcmUgY29tcGxldGUgZGV0YWlscyBvbiB1c2FnZS4KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovZnVsbC9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3dyaXRlLS1bYHdyaXRlKClgXQorCiBbW2Etbm90ZS1vbi1wcmVkaWNhdGVzXV0KID09IEEgTm90ZSBvbiBQcmVkaWNhdGVzCiAKLUEgYFBgIGlzIGEgcHJlZGljYXRlIG9mIHRoZSBmb3JtIGBGdW5jdGlvbjxPYmplY3QsQm9vbGVhbj5gLiBUaGF0IGlzLCBnaXZlbiBzb21lIG9iamVjdCwgcmV0dXJuIHRydWUgb3IgZmFsc2UuIFRoZQotcHJvdmlkZWQgcHJlZGljYXRlcyBhcmUgb3V0bGluZWQgaW4gdGhlIHRhYmxlIGJlbG93IGFuZCBhcmUgdXNlZCBpbiB2YXJpb3VzIHN0ZXBzIHN1Y2ggYXMgPDxoYXMtc3RlcCxgaGFzKClgPj4tc3RlcCwKK0EgYFBgIGlzIGEgcHJlZGljYXRlIG9mIHRoZSBmb3JtIGBGdW5jdGlvbjxPYmplY3QsQm9vbGVhbj5gLiBUaGF0IGlzLCBnaXZlbiBzb21lIG9iamVjdCwgcmV0dXJuIHRydWUgb3IgZmFsc2UuIEFzIG9mCit0aGUgcmVsYXNlIG9mIFRpbmtlclBvcCAzLjQuMCwgR3JlbWxpbiBhbHNvIHN1cHBvcnRzIHNpbXBsZSB0ZXh0IHByZWRpY2F0ZXMsIHdoaWNoIG9ubHkgd29yayBvbiBgU3RyaW5nYCB2YWx1ZXMuIFRoZSBgVGV4dFBgCit0ZXh0IHByZWRpY2F0ZXMgZXh0ZW5kIHRoZSBgUGAgcHJlZGljYXRlcywgYnV0IGFyZSBzcGVjaWFsaXplZCBpbiB0aGF0IHRoZXkgYXJlIG9mIHRoZSBmb3JtIGBGdW5jdGlvbjxTdHJpbmcsQm9vbGVhbj5gLgorVGhlIHByb3ZpZGVkIHByZWRpY2F0ZXMgYXJlIG91dGxpbmVkIGluIHRoZSB0YWJsZSBiZWxvdyBhbmQgYXJlIHVzZWQgaW4gdmFyaW91cyBzdGVwcyBzdWNoIGFzIDw8aGFzLXN0ZXAsYGhhcygpYD4+LXN0ZXAsCiA8PHdoZXJlLXN0ZXAsYHdoZXJlKClgPj4tc3RlcCwgPDxpcy1zdGVwLGBpcygpYD4+LXN0ZXAsIGV0Yy4KIAogW3dpZHRoPSIxMDAlIixjb2xzPSIzLDE1IixvcHRpb25zPSJoZWFkZXIiXQogfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogfCBQcmVkaWNhdGUgfCBEZXNjcmlwdGlvbgotfCBgZXEob2JqZWN0KWAgfCBJcyB0aGUgaW5jb21pbmcgb2JqZWN0IGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvYmplY3Q/Ci18IGBuZXEob2JqZWN0KWAgfCBJcyB0aGUgaW5jb21pbmcgb2JqZWN0IG5vdCBlcXVhbCB0byB0aGUgcHJvdmlkZWQgb2JqZWN0PwotfCBgbHQobnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGxlc3MgdGhhbiB0aGUgcHJvdmlkZWQgbnVtYmVyPwotfCBgbHRlKG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG51bWJlcj8KLXwgYGd0KG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBncmVhdGVyIHRoYW4gdGhlIHByb3ZpZGVkIG51bWJlcj8KLXwgYGd0ZShudW1iZXIpYCB8IElzIHRoZSBpbmNvbWluZyBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBudW1iZXI/Ci18IGBpbnNpZGUobnVtYmVyLG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IHByb3ZpZGVkIG51bWJlciBhbmQgbGVzcyB0aGFuIHRoZSBzZWNvbmQ/Ci18IGBvdXRzaWRlKG51bWJlcixudW1iZXIpYCB8IElzIHRoZSBpbmNvbWluZyBudW1iZXIgbGVzcyB0aGFuIHRoZSBmaXJzdCBwcm92aWRlZCBudW1iZXIgb3IgZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQ/Ci18IGBiZXR3ZWVuKG51bWJlcixudW1iZXIpYCB8IElzIHRoZSBpbmNvbWluZyBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBmaXJzdCBwcm92aWRlZCBudW1iZXIgYW5kIGxlc3MgdGhhbiB0aGUgc2Vjb25kPwotfCBgd2l0aGluKG9iamVjdHMuLi4pYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3QgaW4gdGhlIGFycmF5IG9mIHByb3ZpZGVkIG9iamVjdHM/Ci18IGB3aXRob3V0KG9iamVjdHMuLi4pYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3Qgbm90IGluIHRoZSBhcnJheSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cz8KK3wgYFAuZXEob2JqZWN0KWAgfCBJcyB0aGUgaW5jb21pbmcgb2JqZWN0IGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvYmplY3Q/Cit8IGBQLm5lcShvYmplY3QpYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3Qgbm90IGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvYmplY3Q/Cit8IGBQLmx0KG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gdGhlIHByb3ZpZGVkIG51bWJlcj8KK3wgYFAubHRlKG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG51bWJlcj8KK3wgYFAuZ3QobnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGdyZWF0ZXIgdGhhbiB0aGUgcHJvdmlkZWQgbnVtYmVyPworfCBgUC5ndGUobnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvdmlkZWQgbnVtYmVyPworfCBgUC5pbnNpZGUobnVtYmVyLG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IHByb3ZpZGVkIG51bWJlciBhbmQgbGVzcyB0aGFuIHRoZSBzZWNvbmQ/Cit8IGBQLm91dHNpZGUobnVtYmVyLG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gdGhlIGZpcnN0IHByb3ZpZGVkIG51bWJlciBvciBncmVhdGVyIHRoYW4gdGhlIHNlY29uZD8KK3wgYFAuYmV0d2VlbihudW1iZXIsbnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZmlyc3QgcHJvdmlkZWQgbnVtYmVyIGFuZCBsZXNzIHRoYW4gdGhlIHNlY29uZD8KK3wgYFAud2l0aGluKG9iamVjdHMuLi4pYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3QgaW4gdGhlIGFycmF5IG9mIHByb3ZpZGVkIG9iamVjdHM/Cit8IGBQLndpdGhvdXQob2JqZWN0cy4uLilgIHwgSXMgdGhlIGluY29taW5nIG9iamVjdCBub3QgaW4gdGhlIGFycmF5IG9mIHRoZSBwcm92aWRlZCBvYmplY3RzPworfCBgVGV4dFAuc3RhcnRpbmdXaXRoKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2Agc3RhcnQgd2l0aCB0aGUgcHJvdmlkZWQgYFN0cmluZ2A/Cit8IGBUZXh0UC5lbmRpbmdXaXRoKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2AgZW5kIHdpdGggdGhlIHByb3ZpZGVkIGBTdHJpbmdgPworfCBgVGV4dFAuY29udGFpbmluZyhzdHJpbmcpYCB8IERvZXMgdGhlIGluY29taW5nIGBTdHJpbmdgIGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBTdHJpbmdgPworfCBgVGV4dFAubm90U3RhcnRpbmdXaXRoKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2Agbm90IHN0YXJ0IHdpdGggdGhlIHByb3ZpZGVkIGBTdHJpbmdgPworfCBgVGV4dFAubm90RW5kaW5nV2l0aChzdHJpbmcpYCB8IERvZXMgdGhlIGluY29taW5nIGBTdHJpbmdgIG5vdCBlbmQgd2l0aCB0aGUgcHJvdmlkZWQgYFN0cmluZ2A/Cit8IGBUZXh0UC5ub3RDb250YWluaW5nKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2Agbm90IGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBTdHJpbmdgPwogfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBbZ3JlbWxpbi1ncm9vdnldCkBAIC0zMjg5LDcgKzM3NDYsOCBAQAogbGV2ZXJhZ2UgYSBsYW1iZGEgaW4gcHJhY3RpY2UuIEl0IGlzIGFkdmlzZWQgdGhhdCB1c2VycyBvbmx5IGxldmVyYWdlIGEgbGFtYmRhIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIG5vCiBjb3JyZXNwb25kaW5nIGxhbWJkYS1sZXNzIHN0ZXAgdGhhdCBlbmNvbXBhc3NlcyB0aGUgZGVzaXJlZCBmdW5jdGlvbmFsaXR5LiBUaGUgcmVhc29uIGJlaW5nLCBsYW1iZGFzIGNhbiBub3QgYmUKIG9wdGltaXplZCBieSBHcmVtbGluJ3MgY29tcGlsZXIgc3RyYXRlZ2llcyBhcyB0aGV5IGNhbiBub3QgYmUgcHJvZ3JhbW1hdGljYWxseSBpbnNwZWN0ZWQgKHNlZQotPDx0cmF2ZXJzYWxzdHJhdGVneSx0cmF2ZXJzYWwgc3RyYXRlZ2llcz4+KS4gSXQgaXMgYWxzbyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIHNlbmQgYSBsYW1iZGEgZm9yIHJlbW90ZSBleGVjdXRpb24gdG8gR3JlbWxpbi1TZXJ2ZXIgb3IgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyByZW1vdGUgZXhlY3V0aW9uLgorPDx0cmF2ZXJzYWxzdHJhdGVneSx0cmF2ZXJzYWwgc3RyYXRlZ2llcz4+KS4gSXQgaXMgYWxzbyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIHNlbmQgYSBuYXRpdmVseSB3cml0dGVuIGxhbWJkYSBmb3IKK3JlbW90ZSBleGVjdXRpb24gdG8gR3JlbWxpbi1TZXJ2ZXIgb3IgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyByZW1vdGUgZXhlY3V0aW9uLgogCiBJbiBtYW55IHNpdHVhdGlvbnMgd2hlcmUgYSBsYW1iZGEgY291bGQgYmUgdXNlZCwgZWl0aGVyIGEgY29ycmVzcG9uZGluZyBzdGVwIGV4aXN0cyBvciBhIHRyYXZlcnNhbCBjYW4gYmUgcHJvdmlkZWQgaW4KIGl0cyBwbGFjZS4gQSBgVHJhdmVyc2FsTGFtYmRhYCBiZWhhdmVzIGxpa2UgYSB0eXBpY2FsIGxhbWJkYSwgYnV0IGl0IGNhbiBiZSBvcHRpbWl6ZWQgYW5kIGl0IHlpZWxkcyBsZXNzIG9iamVjdHMgdGhhbgpAQCAtMzMxNiw3ICszNzc0LDcgQEAKIG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbCBtYWNoaW5lJ3MgY29tcGlsZXIuIFRoZXJlIGFyZSA1IGNhdGVnb3JpZXMgb2Ygc3RyYXRlZ2llcyB3aGljaCBhcmUgaXRlbWl6ZWQgYmVsb3c6CiAKICAqIFRoZXJlIGlzIGFuIGFwcGxpY2F0aW9uLWxldmVsIGZlYXR1cmUgdGhhdCBjYW4gYmUgZW1iZWRkZWQgaW50byB0aGUgdHJhdmVyc2FsIGxvZ2ljICgqZGVjb3JhdGlvbiopLgotICogVGhlcmUgaXMgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gZXhwcmVzcyB0aGUgdHJhdmVyc2FsIGF0IHRoZSBUaW5rZXJQb3AzIGxldmVsICgqb3B0aW1pemF0aW9uKikuCisgKiBUaGVyZSBpcyBhIG1vcmUgZWZmaWNpZW50IHdheSB0byBleHByZXNzIHRoZSB0cmF2ZXJzYWwgYXQgdGhlIFRpbmtlclBvcCBsZXZlbCAoKm9wdGltaXphdGlvbiopLgogICogVGhlcmUgaXMgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gZXhwcmVzcyB0aGUgdHJhdmVyc2FsIGF0IHRoZSBncmFwaCBzeXN0ZW0vbGFuZ3VhZ2UvZHJpdmVyIGxldmVsICgqcHJvdmlkZXIgb3B0aW1pemF0aW9uKikuCiAgKiBUaGVyZSBhcmUgc29tZSBmaW5hbCBhZGp1c3RtZW50cy9jbGVhbnVwcy9hbmFseXNlcyByZXF1aXJlZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSB0cmF2ZXJzYWwgKCpmaW5hbGl6YXRpb24qKS4KICAqIFRoZXJlIGFyZSBjZXJ0YWluIHRyYXZlcnNhbHMgdGhhdCBhcmUgbm90IGxlZ2FsIGZvciB0aGUgYXBwbGljYXRpb24gb3IgdHJhdmVyc2FsIGVuZ2luZSAoKnZlcmlmaWNhdGlvbiopLgpAQCAtMzQxNiw3ICszODc0LDcgQEAKIAogVGhlIHRyYXZlcnNhbCBpcyByZWRlZmluZWQgYnkgc2ltcGx5IHRha2luZyBhIGNoYWluIG9mIGBoYXMoKWAtc3RlcHMgYWZ0ZXIgYGcuVigpYCAoYFRpbmtlckdyYXBoU3RlcGApIGFuZCBwcm92aWRpbmcKIHRoZWlyIGBIYXNDb250YWluZXJzYCB0byBgVGlua2VyR3JhcGhTdGVwYC4gVGhlbiBpdHMgdXAgdG8gYFRpbmtlckdyYXBoU3RlcGAgdG8gZGV0ZXJtaW5lIGlmIGFuIGFwcHJvcHJpYXRlIGluZGV4IGV4aXN0cy4KLUdpdmVuIHRoYXQgdGhlIHN0cmF0ZWd5IHVzZXMgbm9uLVRpbmtlclBvcDMgcHJvdmlkZWQgc3RlcHMsIGl0IHNob3VsZCBnbyBpbnRvIHRoZSBgUHJvdmlkZXJPcHRpbWl6YXRpb25TdHJhdGVneWAgY2F0ZWdvcnkKK0dpdmVuIHRoYXQgdGhlIHN0cmF0ZWd5IHVzZXMgbm9uLVRpbmtlclBvcCBwcm92aWRlZCBzdGVwcywgaXQgc2hvdWxkIGdvIGludG8gdGhlIGBQcm92aWRlck9wdGltaXphdGlvblN0cmF0ZWd5YCBjYXRlZ29yeQogdG8gZW5zdXJlIHRoZSBhZGRlZCBzdGVwIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBhc3N1bXB0aW9ucyBvZiB0aGUgYE9wdGltaXphdGlvblN0cmF0ZWd5YCBzdHJhdGVnaWVzLgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQpAQCAtMzQyOCwxMSArMzg4NiwxMSBAQAogLS0tLQogCiBXQVJOSU5HOiBUaGUgcmVhc29uIHRoYXQgYE9wdGltaXphdGlvblN0cmF0ZWd5YCBhbmQgYFByb3ZpZGVyT3B0aW1pemF0aW9uU3RyYXRlZ3lgIGFyZSB0d28gZGlmZmVyZW50IGNhdGVnb3JpZXMgaXMKLXRoYXQgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgc2hvdWxkIG9ubHkgcmV3cml0ZSB0aGUgdHJhdmVyc2FsIHVzaW5nIFRpbmtlclBvcDMgc3RlcHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZQotb3B0aW1pemF0aW9ucyBleGVjdXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBvcHRpbWl6YXRpb24gc3RyYXRlZ3kgcm91bmQgYXJlIFRpbmtlclBvcDMgY29tcGxpYW50LiBGcm9tIHRoZXJlLCBwcm92aWRlcgordGhhdCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyBzaG91bGQgb25seSByZXdyaXRlIHRoZSB0cmF2ZXJzYWwgdXNpbmcgVGlua2VyUG9wIHN0ZXBzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUKK29wdGltaXphdGlvbnMgZXhlY3V0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgb3B0aW1pemF0aW9uIHN0cmF0ZWd5IHJvdW5kIGFyZSBUaW5rZXJQb3AgY29tcGxpYW50LiBGcm9tIHRoZXJlLCBwcm92aWRlcgogb3B0aW1pemF0aW9ucyBjYW4gYW5hbHl6ZSB0aGUgdHJhdmVyc2FsIGFuZCByZXdyaXRlIHRoZSB0cmF2ZXJzYWwgYXMgZGVzaXJlZCB1c2luZyBncmFwaCBzeXN0ZW0gc3BlY2lmaWMgc3RlcHMgKGUuZy4KIHJlcGxhY2luZyBgR3JhcGhTdGVwLkhhc1N0ZXAuLi5IYXNTdGVwYCB3aXRoIGBUaW5rZXJHcmFwaFN0ZXBgKS4gSWYgcHJvdmlkZXIgb3B0aW1pemF0aW9ucyB1c2UgZ3JhcGggc3lzdGVtIHNwZWNpZmljCi1zdGVwcyBhbmQgaW1wbGVtZW50IGBPcHRpbWl6YXRpb25TdHJhdGVneWAsIHRoZW4gb3RoZXIgVGlua2VyUG9wMyBvcHRpbWl6YXRpb25zIG1heSBmYWlsIHRvIG9wdGltaXplIHRoZSB0cmF2ZXJzYWwgb3IKK3N0ZXBzIGFuZCBpbXBsZW1lbnQgYE9wdGltaXphdGlvblN0cmF0ZWd5YCwgdGhlbiBvdGhlciBUaW5rZXJQb3Agb3B0aW1pemF0aW9ucyBtYXkgZmFpbCB0byBvcHRpbWl6ZSB0aGUgdHJhdmVyc2FsIG9yCiBtaXMtdW5kZXJzdGFuZCB0aGUgZ3JhcGggc3lzdGVtIHNwZWNpZmljIHN0ZXAgYmVoYXZpb3JzIChlLmcuIGBQcm92aWRlclZlcnRleFN0ZXAgZXh0ZW5kcyBWZXJ0ZXhTdGVwYCkgYW5kIHlpZWxkCiBpbmNvcnJlY3Qgc2VtYW50aWNzLgogCkBAIC0zNDY0LDcgKzM5MjIsNyBAQAogPDg+IGBQYXRoUmV0cmFjdGlvblN0cmF0ZWd5YCB3aWxsIHJlbW92ZSBwYXRocyBmcm9tIHRoZSB0cmF2ZXJzZXJzIGFuZCBpbmNyZWFzZSB0aGUgbGlrZWxpaG9vZCBvZiBidWxraW5nIGFzIHBhdGggZGF0YSBpcyBub3QgcmVxdWlyZWQgYWZ0ZXIgYHNlbGVjdCgnYicpYC4KIDw5PiBgQWRqYWNlbnRUb0luY2lkZW50U3RyYXRlZ3lgIHdpbGwgdHVybiBgb3V0KClgIGludG8gYG91dEUoKWAgdG8gaW5jcmVhc2UgZGF0YSBhY2Nlc3MgbG9jYWxpdHkuCiAKLUEgY29sbGVjdGlvbiBvZiB1c2VmdWwgYERlY29yYXRpb25TdHJhdGVneWAgc3RyYXRlZ2llcyBhcmUgcHJvdmlkZWQgd2l0aCBUaW5rZXJQb3AzIGFuZCBhcmUgZ2VuZXJhbGx5IHVzZWZ1bCB0bworQSBjb2xsZWN0aW9uIG9mIHVzZWZ1bCBgRGVjb3JhdGlvblN0cmF0ZWd5YCBzdHJhdGVnaWVzIGFyZSBwcm92aWRlZCB3aXRoIFRpbmtlclBvcCBhbmQgYXJlIGdlbmVyYWxseSB1c2VmdWwgdG8KIGVuZC11c2Vycy4gIFRoZSBmb2xsb3dpbmcgc3ViLXNlY3Rpb25zIGRldGFpbCB0aGVzZSBzdHJhdGVnaWVzOgogCiA9PT0gRWxlbWVudElkU3RyYXRlZ3kKQEAgLTM2NDYsOCArNDEwNCw4IEBACiAgIHZlcnRpY2VzKG9yKGhhc05vdCgnbG9jYXRpb24nKSxwcm9wZXJ0aWVzKCdsb2NhdGlvbicpLmNvdW50KCkuaXMoZ3QoMykpKSkuCiAgIGVkZ2VzKGhhc0xhYmVsKCdkZXZlbG9wcycpKS4KICAgdmVydGV4UHJvcGVydGllcyhvcihoYXNMYWJlbChuZXEoJ2xvY2F0aW9uJykpLGhhc05vdCgnZW5kVGltZScpKSkuY3JlYXRlKCkpCi1nLlYoKS52YWx1ZU1hcCh0cnVlKQotZy5FKCkudmFsdWVNYXAodHJ1ZSkKK2cuVigpLmVsZW1lbnRNYXAoKQorZy5FKCkuZWxlbWVudE1hcCgpCiBnLlYoKS5vdXRFKCkuaW5WKCkuCiAgIHBhdGgoKS4KICAgICBieSgnbmFtZScpLgpAQCAtMzcwNiwzNTcgKzQxNjQsNSBAQAogc29jaWFsLnBlcnNvbnMoIm1hcmtvIikueW91bmdlc3RGcmllbmRzQWdlKCkKIC0tLS0KIAotVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBleHBsYWluIGhvdyB0byBkZXZlbG9wIGFwcGxpY2F0aW9uIHNwZWNpZmljIERTTHMgZm9yIGRpZmZlcmVudCA8PGdyZW1saW4tdmFyaWFudHMsR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50cz4+Ci11c2luZyB0aGUgZXhhbXBsZXMgYWJvdmUgb2YgdGhlIFNvY2lhbCBEU0wgYXMgdGhlIEFQSSBmb3IgdGhlIGltcGxlbWVudGF0aW9uLgotCi1bW2dyZW1saW4tamF2YS1kc2xdXQotPT09IEdyZW1saW4tSmF2YQotCi1DcmVhdGluZyBhIERTTCBpbiBKYXZhIHJlcXVpcmVzIHRoZSBgQEdyZW1saW5Ec2xgIEphdmEgYW5ub3RhdGlvbiBpbiBgZ3JlbWxpbi1jb3JlYC4gVGhpcyBhbm5vdGF0aW9uIHNob3VsZCBiZSBhcHBsaWVkCi10byBhICJEU0wgaW50ZXJmYWNlIiB0aGF0IGV4dGVuZHMgYEdyYXBoVHJhdmVyc2FsLkFkbWluYC4KLQotW3NvdXJjZSxqYXZhXQotLS0tLQotQEdyZW1saW5Ec2wKLXB1YmxpYyBpbnRlcmZhY2UgU29jaWFsVHJhdmVyc2FsRHNsPFMsIEU+IGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWwuQWRtaW48UywgRT4gewotfQotLS0tLQotCi1JTVBPUlRBTlQ6IFRoZSBuYW1lIG9mIHRoZSBEU0wgaW50ZXJmYWNlIHNob3VsZCBiZSBzdWZmaXhlZCB3aXRoICJUcmF2ZXJzYWxEU0wiLiBBbGwgY2hhcmFjdGVycyBpbiB0aGUgaW50ZXJmYWNlIG5hbWUKLWJlZm9yZSB0aGF0IGJlY29tZSB0aGUgIm5hbWUiIG9mIHRoZSBEU0wuCi0KLUluIHRoaXMgaW50ZXJmYWNlLCBkZWZpbmUgdGhlIG1ldGhvZHMgdGhhdCB0aGUgRFNMIHdpbGwgYmUgY29tcG9zZWQgb2Y6Ci0KLVtzb3VyY2UsamF2YV0KLS0tLS0KLUBHcmVtbGluRHNsCi1wdWJsaWMgaW50ZXJmYWNlIFNvY2lhbFRyYXZlcnNhbERzbDxTLCBFPiBleHRlbmRzIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsIEU+IHsKLSAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBWZXJ0ZXg+IGtub3dzKFN0cmluZyBwZXJzb25OYW1lKSB7Ci0gICAgICAgIHJldHVybiBvdXQoImtub3dzIikuaGFzTGFiZWwoInBlcnNvbiIpLmhhcygibmFtZSIsIHBlcnNvbk5hbWUpOwotICAgIH0KLQotICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IHlvdW5nZXN0RnJpZW5kc0FnZSgpIHsKLSAgICAgICAgcmV0dXJuIG91dCgia25vd3MiKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJhZ2UiKS5taW4oKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBMb25nPiBjcmVhdGVkQXRMZWFzdChpbnQgbnVtYmVyKSB7Ci0gICAgICAgIHJldHVybiBvdXRFKCJjcmVhdGVkIikuY291bnQoKS5pcyhQLmd0ZShudW1iZXIpKTsKLSAgICB9Ci19Ci0tLS0tCi0KLUlNUE9SVEFOVDogRm9sbG93IHRoZSBUaW5rZXJQb3AgY29udmVudGlvbiBvZiB1c2luZyBgPFMsRT5gIGluIG5hbWluZyBnZW5lcmljcyBhcyB0aG9zZSBjb252ZW50aW9ucyBhcmUgdGFrZW4gaW50bwotYWNjb3VudCB3aGVuIGdlbmVyYXRpbmcgdGhlIGFub255bW91cyB0cmF2ZXJzYWwgY2xhc3MuIFRoZSBwcm9jZXNzb3IgYXR0ZW1wdHMgdG8gaW5mZXIgdGhlIGFwcHJvcHJpYXRlIHR5cGUgcGFyYW1ldGVycwotd2hlbiBnZW5lcmF0aW5nIHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzLiBJZiBpdCBjYW5ub3QgZG8gaXQgY29ycmVjdGx5LCBpdCBpcyBwb3NzaWJsZSB0byBhdm9pZCB0aGUgaW5mZXJlbmNlIGJ5Ci11c2luZyB0aGUgYEdyZW1saW5Ec2wuQW5vbnltb3VzTWV0aG9kYCBhbm5vdGF0aW9uIG9uIHRoZSBEU0wgbWV0aG9kLiBJdCBhbGxvd3MgZXhwbGljaXQgc3BlY2lmaWNhdGlvbiBvZiB0aGUgdHlwZXMgdG8KLXVzZS4KLQotVGhlIGBAR3JlbWxpbkRzbGAgYW5ub3RhdGlvbiBpcyB1c2VkIGJ5IHRoZSBsaW5rOmh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS84L2RvY3MvYXBpL2luZGV4Lmh0bWw/amF2YXgvYW5ub3RhdGlvbi9wcm9jZXNzaW5nL1Byb2Nlc3Nvci5odG1sW0phdmEgQW5ub3RhdGlvbiBQcm9jZXNzb3JdCi10byBnZW5lcmF0ZSB0aGUgYm9pbGVycGxhdGUgY2xhc3Mgc3RydWN0dXJlIHJlcXVpcmVkIHRvIHByb3Blcmx5IHVzZSB0aGUgRFNMIHdpdGhpbiB0aGUgVGlua2VyUG9wIGZyYW1ld29yay4gVGhlc2UKLWNsYXNzZXMgY2FuIGJlIGdlbmVyYXRlZCBhbmQgbWFpbnRhaW5lZCBieSBoYW5kLCBidXQgaXQgd291bGQgYmUgdGltZSBjb25zdW1pbmcsIG1vbm90b25vdXMgYW5kIGVycm9yLXByb25lIHRvIGRvIHNvLgotVHlwaWNhbGx5LCB0aGUgSmF2YSBjb21waWxhdGlvbiBwcm9jZXNzIGlzIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCB0byBkZXRlY3QgYW5ub3RhdGlvbiBwcm9jZXNzb3JzIG9uIHRoZSBjbGFzc3BhdGgKLWFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoZW0gd2hlbiBmb3VuZC4gSWYgdGhhdCBkb2VzIG5vdCBoYXBwZW4sIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gbWFrZSBjb25maWd1cmF0aW9uIGNoYW5nZXMKLXRvIHRoZSBidWlsZCB0byBhbGxvdyBmb3IgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgdG8gYmUgYXdhcmUgb2YgdGhlIGZvbGxvd2luZyBgamF2YXguYW5ub3RhdGlvbi5wcm9jZXNzaW5nLlByb2Nlc3NvcmAKLWltcGxlbWVudGF0aW9uOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5HcmVtbGluRHNsUHJvY2Vzc29yCi0tLS0tCi0KLVRoZSBhbm5vdGF0aW9uIHByb2Nlc3NvciB3aWxsIGdlbmVyYXRlIHNldmVyYWwgY2xhc3NlcyBmb3IgdGhlIERTTDoKLQotKiBgU29jaWFsVHJhdmVyc2FsYCAtIEEgYFRyYXZlcnNhbGAgaW50ZXJmYWNlIHRoYXQgZXh0ZW5kcyB0aGUgYFNvY2lhbFRyYXZlcnNhbERzbGAgcHJveHlpbmcgbWV0aG9kcyB0byBpdHMgdW5kZXJseWluZwotaW50ZXJmYWNlcyAoc3VjaCBhcyBgR3JhcGhUcmF2ZXJzYWxgKSB0byBpbnN0ZWFkIHJldHVybiBhIGBTb2NpYWxUcmF2ZXJzYWxgCi0qIGBEZWZhdWx0U29jaWFsVHJhdmVyc2FsYCAtIEEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBgU29jaWFsVHJhdmVyc2FsYCAodHlwaWNhbGx5IG5vdCB1c2VkIGRpcmVjdGx5IGJ5IHRoZSB1c2VyKQotKiBgU29jaWFsVHJhdmVyc2FsU291cmNlYCAtIFNwYXducyBgRGVmYXVsdFNvY2lhbFRyYXZlcnNhbGAgaW5zdGFuY2VzLgotKiBgK19fK2AgLSBTcGF3bnMgYW5vbnltb3VzIGBEZWZhdWx0U29jaWFsVHJhdmVyc2FsYCBpbnN0YW5jZXMuCi0KLVVzaW5nIHRoZSBEU0wgdGhlbiBqdXN0IGludm9sdmVzIHRlbGxpbmcgdGhlIGBHcmFwaGAgdG8gdXNlIGl0OgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1Tb2NpYWxUcmF2ZXJzYWxTb3VyY2Ugc29jaWFsID0gZ3JhcGgudHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZS5jbGFzcyk7Ci1zb2NpYWwuVigpLmhhcygibmFtZSIsIm1hcmtvIikua25vd3MoImpvc2giKTsKLS0tLS0KLQotVGhlIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VgIGNhbiBhbHNvIGJlIGN1c3RvbWl6ZWQgd2l0aCBEU0wgZnVuY3Rpb25zLiBBcyBhbiBhZGRpdGlvbmFsIHN0ZXAsIGluY2x1ZGUgYSBjbGFzcyB0aGF0Ci1leHRlbmRzIGZyb20gYEdyYXBoVHJhdmVyc2FsU291cmNlYCBhbmQgd2l0aCBhIG5hbWUgdGhhdCBpcyBzdWZmaXhlZCB3aXRoICJUcmF2ZXJzYWxTb3VyY2VEc2wiLiBJbmNsdWRlIGluIHRoaXMgY2xhc3MsCi1hbnkgY3VzdG9tIG1ldGhvZHMgcmVxdWlyZWQgYnkgdGhlIERTTDoKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotcHVibGljIGNsYXNzIFNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbCBleHRlbmRzIEdyYXBoVHJhdmVyc2FsU291cmNlIHsKLQotICAgIHB1YmxpYyBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VEc2woR3JhcGggZ3JhcGgsIFRyYXZlcnNhbFN0cmF0ZWdpZXMgdHJhdmVyc2FsU3RyYXRlZ2llcykgewotICAgICAgICBzdXBlcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcyk7Ci0gICAgfQotCi0gICAgcHVibGljIFNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbChHcmFwaCBncmFwaCkgewotICAgICAgICBzdXBlcihncmFwaCk7Ci0gICAgfQotCi0gICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBwZXJzb25zKFN0cmluZy4uLiBuYW1lcykgewotICAgICAgICBHcmFwaFRyYXZlcnNhbFNvdXJjZSBjbG9uZSA9IHRoaXMuY2xvbmUoKTsKLQotICAgICAgICAvLyBNYW51YWxseSBhZGQgYSAic3RhcnQiIHN0ZXAgZm9yIHRoZSB0cmF2ZXJzYWwgaW4gdGhpcyBjYXNlIHRoZSBlcXVpdmFsZW50IG9mIFYoKS4gR3JhcGhTdGVwIGlzIG1hcmtlZAotICAgICAgICAvLyBhcyBhICJzdGFydCIgc3RlcCBieSBwYXNzaW5nICJ0cnVlIiBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgICAgIGNsb25lLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChHcmFwaFRyYXZlcnNhbC5TeW1ib2xzLlYpOwotICAgICAgICBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gbmV3IERlZmF1bHRHcmFwaFRyYXZlcnNhbDw+KGNsb25lKTsKLSAgICAgICAgdHJhdmVyc2FsLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBHcmFwaFN0ZXA8Pih0cmF2ZXJzYWwuYXNBZG1pbigpLCBWZXJ0ZXguY2xhc3MsIHRydWUpKTsKLQotICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuaGFzTGFiZWwoInBlcnNvbiIpOwotICAgICAgICBpZiAobmFtZXMubGVuZ3RoID4gMCkgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmhhcygibmFtZSIsIFAud2l0aGluKG5hbWVzKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKLSAgICB9Ci19Ci0tLS0tCi0KLVRoZW4sIGJhY2sgaW4gdGhlIGBTb2NpYWxUcmF2ZXJzYWxgIGludGVyZmFjZSwgdXBkYXRlIHRoZSBgR3JlbWxpbkRzbGAgYW5ub3RhdGlvbiB3aXRoIHRoZSBgdHJhdmVyc2FsU291cmNlYCBhcmd1bWVudAotdG8gcG9pbnQgdG8gdGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzcyBuYW1lIG9mIHRoZSBgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsYDoKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotQEdyZW1saW5Ec2wodHJhdmVyc2FsU291cmNlID0gImNvbS5jb21wYW55LlNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbCIpCi1wdWJsaWMgaW50ZXJmYWNlIFNvY2lhbFRyYXZlcnNhbERzbDxTLCBFPiBleHRlbmRzIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsIEU+IHsKLSAgICAuLi4KLX0KLS0tLS0KLQotSXQgaXMgdGhlbiBwb3NzaWJsZSB0byB1c2UgdGhlIGBwZXJzb25zKClgIG1ldGhvZCB0byBzdGFydCB0cmF2ZXJzYWxzOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1Tb2NpYWxUcmF2ZXJzYWxTb3VyY2Ugc29jaWFsID0gZ3JhcGgudHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZS5jbGFzcyk7Ci1zb2NpYWwucGVyc29ucygibWFya28iKS5rbm93cygiam9zaCIpOwotLS0tLQotCi1OT1RFOiBVc2luZyBNYXZlbiwgYXMgc2hvd24gaW4gdGhlIGBncmVtbGluLWFyY2hldHlwZS1kc2xgIG1vZHVsZSwgbWFrZXMgZGV2ZWxvcGluZyBEU0xzIHdpdGggdGhlIGFubm90YXRpb24gcHJvY2Vzc29yCi1zdHJhaWdodGZvcndhcmQgaW4gdGhhdCBpdCBzZXRzIHVwIGFwcHJvcHJpYXRlIHBhdGhzIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSBhdXRvbWF0aWNhbGx5LgotCi1bW2dyZW1saW4tcHl0aG9uLWRzbF1dCi09PT0gR3JlbWxpbi1QeXRob24KLQotV3JpdGluZyBhIEdyZW1saW4gRFNMIGluIFB5dGhvbiBzaW1wbHkgcmVxdWlyZXMgZGlyZWN0IGV4dGVuc2lvbiBvZiBzZXZlcmFsIGNsYXNzZXM6Ci0KLSogYEdyYXBoVHJhdmVyc2FsYCAtIHdoaWNoIGV4cG9zZXMgdGhlIHZhcmlvdXMgc3RlcHMgdXNlZCBpbiB0cmF2ZXJzYWwgd3JpdGluZwotKiBgK19fK2AgLSB3aGljaCBzcGF3bnMgYW5vbnltb3VzIHRyYXZlcnNhbHMgZnJvbSBzdGVwcwotKiBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIC0gd2hpY2ggc3Bhd25zIGBHcmFwaFRyYXZlcnNhbGAgaW5zdGFuY2VzCi0KLVRoZSBTb2NpYWwgRFNMIGJhc2VkIG9uIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L2ltYWdlcy90aW5rZXJwb3AtbW9kZXJuLnBuZ1sibW9kZXJuIiB0b3kgZ3JhcGhdCi1taWdodCBsb29rIGxpa2UgdGhpczoKLQotW3NvdXJjZSxweXRob25dCi0tLS0tCi1jbGFzcyBTb2NpYWxUcmF2ZXJzYWwoR3JhcGhUcmF2ZXJzYWwpOgotCi0gICAgZGVmIGtub3dzKHNlbGYsIHBlcnNvbl9uYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYub3V0KCJrbm93cyIpLmhhc0xhYmVsKCJwZXJzb24iKS5oYXMoIm5hbWUiLCBwZXJzb25fbmFtZSkKLQotICAgIGRlZiB5b3VuZ2VzdEZyaWVuZHNBZ2Uoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm91dCgia25vd3MiKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJhZ2UiKS5taW4oKQotCi0gICAgZGVmIGNyZWF0ZWRBdExlYXN0KHNlbGYsIG51bWJlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLm91dEUoImNyZWF0ZWQiKS5jb3VudCgpLmlzXyhQLmd0ZShudW1iZXIpKQotCi1jbGFzcyBfXyhBbm9ueW1vdXNUcmF2ZXJzYWwpOgotCi0gICAgZ3JhcGhfdHJhdmVyc2FsID0gU29jaWFsVHJhdmVyc2FsCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYga25vd3MoY2xzLCAqYXJncyk6Ci0gICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLmtub3dzKCphcmdzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHlvdW5nZXN0RnJpZW5kc0FnZShjbHMsICphcmdzKToKLSAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkueW91bmdlc3RGcmllbmRzQWdlKCphcmdzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGNyZWF0ZWRBdExlYXN0KGNscywgKmFyZ3MpOgotICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5jcmVhdGVkQXRMZWFzdCgqYXJncykKLQotCi1jbGFzcyBTb2NpYWxUcmF2ZXJzYWxTb3VyY2UoR3JhcGhUcmF2ZXJzYWxTb3VyY2UpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFNvY2lhbFRyYXZlcnNhbFNvdXJjZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmdyYXBoX3RyYXZlcnNhbCA9IFNvY2lhbFRyYXZlcnNhbAotCi0gICAgZGVmIHBlcnNvbnMoc2VsZiwgKmFyZ3MpOgotICAgICAgICB0cmF2ZXJzYWwgPSBzZWxmLmdldF9ncmFwaF90cmF2ZXJzYWwoKQotICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoIlYiKQotICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoImhhc0xhYmVsIiwgInBlcnNvbiIpCi0KLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMDoKLSAgICAgICAgICAgIHRyYXZlcnNhbC5ieXRlY29kZS5hZGRfc3RlcCgiaGFzIiwgIm5hbWUiLCBQLndpdGhpbihhcmdzKSkKLQotICAgICAgICByZXR1cm4gdHJhdmVyc2FsCi0tLS0tCi0KLU5PVEU6IFRoZSBgQW5vbnltb3VzVHJhdmVyc2FsYCBjbGFzcyBhYm92ZSBpcyBqdXN0IGFuIGFsaWFzIGZvciBgK19fK2AgYXMgaW4KLWArZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18gYXMgQW5vbnltb3VzVHJhdmVyc2FsK2AKLQotVXNpbmcgdGhlIERTTCBpcyBzdHJhaWdodGZvcndhcmQgYW5kIGp1c3QgcmVxdWlyZXMgdGhhdCB0aGUgZ3JhcGggaW5zdGFuY2Uga25vdyB0aGUgYFNvY2lhbFRyYXZlcnNhbFNvdXJjZWAgc2hvdWxkCi1iZSB1c2VkOgotCi1bc291cmNlLHB5dGhvbl0KLS0tLS0KLXNvY2lhbCA9IEdyYXBoKCkudHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZSkud2l0aFJlbW90ZShEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCdnJykpCi1zb2NpYWwucGVyc29ucygibWFya28iKS5rbm93cygiam9zaCIpCi1zb2NpYWwucGVyc29ucygibWFya28iKS55b3VuZ2VzdEZyaWVuZHNBZ2UoKQotc29jaWFsLnBlcnNvbnMoKS5maWx0ZXIoX18uY3JlYXRlZEF0TGVhc3QoMikpLmNvdW50KCkKLS0tLS0KLQotW1tncmVtbGluLW5ldC1kc2xdXQotPT09IEdyZW1saW4uTmV0Ci0KLURldmVsb3BpbmcgRFNMcyBmb3IgLk5ldCBpcyBtb3N0IGVhc2lseSBpbXBsZW1lbnRlZCB1c2luZyBsaW5rOmh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2RvdG5ldC9jc2hhcnAvcHJvZ3JhbW1pbmctZ3VpZGUvY2xhc3Nlcy1hbmQtc3RydWN0cy9leHRlbnNpb24tbWV0aG9kc1tFeHRlbnNpb24gTWV0aG9kc10KLWFzIHRoZXkgZG9uJ3QgcmVxdWlyZSBkaXJlY3QgZXh0ZW5zaW9uIG9mIGNsYXNzZXMgaW4gdGhlIFRpbmtlclBvcCBoaWVyYXJjaHkuIEV4dGVuc2lvbiBNZXRob2QgY2xhc3NlcyBzaW1wbHkgbmVlZCB0bwotYmUgY29uc3RydWN0ZWQgZm9yIHRoZSBgR3JhcGhUcmF2ZXJzYWxgIGFuZCB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gVW5mb3J0dW5hdGVseSwgYW5vbnltb3VzIHRyYXZlcnNhbHMgKHNwYXduZWQKLWZyb20gYCtfXytgKSBjYW4ndCB1c2UgdGhlIEV4dGVuc2lvbiBNZXRob2QgYXBwcm9hY2ggYXMgdGhleSBkbyBub3Qgd29yayBmb3Igc3RhdGljIGNsYXNzZXMgYW5kIHN0YXRpYyBjbGFzc2VzIGNhbid0IGJlCi1leHRlbmRlZC4gVGhlIG9ubHkgb3B0aW9uIGlzIHRvIHJlLWltcGxlbWVudCB0aGUgbWV0aG9kcyBvZiBgK19fK2AgYXMgYSB3cmFwcGVyIGluIHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGZvciB0aGUgRFNMCi1vciB0byBzaW1wbHkgY3JlYXRlIGEgc3RhdGljIGNsYXNzIGZvciB0aGUgRFNMIGFuZCB1c2UgdGhlIHR3byBhbm9ueW1vdXMgdHJhdmVyc2FscyBjcmVhdG9ycyBpbmRlcGVuZGVudGx5LiBUaGUKLWZvbGxvd2luZyBleGFtcGxlIHVzZXMgdGhlIGxhdHRlciBhcHByb2FjaCBhcyBpdCBzYXZlcyBhIGxvdCBvZiBib2lsZXJwbGF0ZSBjb2RlIHdpdGggdGhlIG1pbm9yIGFubm95YW5jZSBvZiBoYXZpbmcgYQotc2Vjb25kIHN0YXRpYyBjbGFzcyB0byBkZWFsIHdpdGggd2hlbiB3cml0aW5nIHRyYXZlcnNhbHMgcmF0aGVyIHRoYW4ganVzdCBjYWxsaW5nIGArX18rYCBmb3IgZXZlcnl0aGluZy4KLQotW3NvdXJjZSxjc2hhcnBdCi0tLS0tCi1uYW1lc3BhY2UgRHNsCi17Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNvY2lhbFRyYXZlcnNhbEV4dGVuc2lvbnMKLSAgICB7Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gS25vd3ModGhpcyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0LCBzdHJpbmcgcGVyc29uTmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHQuT3V0KCJrbm93cyIpLkhhc0xhYmVsKCJwZXJzb24iKS5IYXMoIm5hbWUiLCBwZXJzb25OYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBpbnQ+IFlvdW5nZXN0RnJpZW5kc0FnZSh0aGlzIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0Lk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuVmFsdWVzPGludD4oImFnZSIpLk1pbjxpbnQ+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxsb25nPiBDcmVhdGVkQXRMZWFzdCh0aGlzIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQsIGxvbmcgbnVtYmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdC5PdXRFKCJjcmVhdGVkIikuQ291bnQoKS5JcyhQLkd0ZShudW1iZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgX19Tb2NpYWwKLSAgICB7Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LFZlcnRleD4gS25vd3Moc3RyaW5nIHBlcnNvbk5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfXy5PdXQoImtub3dzIikuSGFzTGFiZWwoInBlcnNvbiIpLkhhcygibmFtZSIsIHBlcnNvbk5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIGludD4gWW91bmdlc3RGcmllbmRzQWdlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9fLk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuVmFsdWVzPGludD4oImFnZSIpLk1pbjxpbnQ+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCxsb25nPiBDcmVhdGVkQXRMZWFzdChsb25nIG51bWJlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9fLk91dEUoImNyZWF0ZWQiKS5Db3VudCgpLklzKFAuR3RlKG51bWJlcikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VFeHRlbnNpb25zCi0gICAgewotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IFBlcnNvbnModGhpcyBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnLCBwYXJhbXMgc3RyaW5nW10gcGVyc29uTmFtZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQgPSBnLlYoKS5IYXNMYWJlbCgicGVyc29uIik7Ci0KLSAgICAgICAgICAgIGlmIChwZXJzb25OYW1lcy5MZW5ndGggPiAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHQgPSB0LkhhcygibmFtZSIsIFAuV2l0aGluKHBlcnNvbk5hbWVzKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICB9Ci0gICAgfQotfQotLS0tLQotCi1Ob3RlIHRoZSBjcmVhdGlvbiBvZiBgK19fU29jaWFsK2AgYXMgdGhlIFNvY2lhbCBEU0wncyAiZXh0ZW5zaW9uIiB0byB0aGUgYXZhaWxhYmxlIHdheXMgaW4gd2hpY2ggdG8gc3Bhd24gYW5vbnltb3VzCi10cmF2ZXJzYWxzLiBUaGUgdXNlIG9mIHRoZSBkb3VibGUgdW5kZXJzY29yZSBwcmVmaXggaW4gdGhlIG5hbWUgaXMganVzdCBhIGNvbnZlbnRpb24gdG8gY29uc2lkZXIgdXNpbmcgYW5kIGlzIG5vdCBhCi1yZXF1aXJlbWVudC4gVG8gdXNlIHRoZSBEU0wsIGJyaW5nIGl0IGludG8gc2NvcGUgd2l0aCB0aGUgYHVzaW5nYCBkaXJlY3RpdmU6Ci0KLVtzb3VyY2UsY3NoYXJwXQotLS0tLQotdXNpbmcgRHNsOwotdXNpbmcgc3RhdGljIERzbC5fX1NvY2lhbDsKLS0tLS0KLQotYW5kIHRoZW4gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBhcyBmb2xsb3dzOgotCi1bc291cmNlLGNzaGFycF0KLS0tLS0KLXZhciBncmFwaCA9IG5ldyBHcmFwaCgpOwotdmFyIGNvbm5lY3Rpb24gPSBuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MikpKTsKLXZhciBzb2NpYWwgPSBncmFwaC5UcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pOwotCi1zb2NpYWwuUGVyc29ucygibWFya28iKS5Lbm93cygiam9zaCIpOwotc29jaWFsLlBlcnNvbnMoIm1hcmtvIikuWW91bmdlc3RGcmllbmRzQWdlKCk7Ci1zb2NpYWwuUGVyc29ucygpLkZpbHRlcihDcmVhdGVkQXRMZWFzdCgyKSkuQ291bnQoKTsKLS0tLS0KLQotW1tncmVtbGluLWphdmFzY3JpcHQtZHNsXV0KLT09PSBHcmVtbGluLUphdmFTY3JpcHQKLQotRGV2ZWxvcGluZyBHcmVtbGluIERTTHMgaW4gSmF2YVNjcmlwdCBsYXJnZWx5IHJlcXVpcmVzIGV4dGVuc2lvbiBvZiBleGlzdGluZyBjb3JlIGNsYXNzZXMgd2l0aCB1c2Ugb2Ygc3RhbmRhbG9uZQotZnVuY3Rpb25zIGZvciBhbm9ueW1vdXMgdHJhdmVyc2FsIHNwYXduaW5nLiBUaGUgcGF0dGVybiBpcyBkZW1vbnN0cmF0ZWQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgotCi1bc291cmNlLGphdmFzY3JpcHRdCi0tLS0tCi1jbGFzcyBTb2NpYWxUcmF2ZXJzYWwgZXh0ZW5kcyBHcmFwaFRyYXZlcnNhbCB7Ci0gIGNvbnN0cnVjdG9yKGdyYXBoLCB0cmF2ZXJzYWxTdHJhdGVnaWVzLCBieXRlY29kZSkgewotICAgIHN1cGVyKGdyYXBoLCB0cmF2ZXJzYWxTdHJhdGVnaWVzLCBieXRlY29kZSk7Ci0gIH0KLQotICBhZ2VkKGFnZSkgewotICAgIHJldHVybiB0aGlzLmhhcygncGVyc29uJywgJ2FnZScsIGFnZSk7Ci0gIH0KLX0KLQotY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlIGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgewotICBjb25zdHJ1Y3RvcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUpIHsKLSAgICBzdXBlcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUsIFNvY2lhbFRyYXZlcnNhbFNvdXJjZSwgU29jaWFsVHJhdmVyc2FsKTsKLSAgfQotCi0gIHBlcnNvbihuYW1lKSB7Ci0gICAgcmV0dXJuIHRoaXMuVigpLmhhcygncGVyc29uJywgJ25hbWUnLCBuYW1lKTsKLSAgfQotfQotCi1mdW5jdGlvbiBhbm9ueW1vdXMoKSB7Ci0gIHJldHVybiBuZXcgU29jaWFsVHJhdmVyc2FsKG51bGwsIG51bGwsIG5ldyBCeXRlY29kZSgpKTsKLX0KLQotZnVuY3Rpb24gYWdlZChhZ2UpIHsKLSAgcmV0dXJuIGFub255bW91cygpLmFnZWQoYWdlKTsKLX0KLS0tLS0KLQotYFNvY2lhbFRyYXZlcnNhbGAgZXh0ZW5kcyB0aGUgY29yZSBgR3JhcGhUcmF2ZXJzYWxgIGNsYXNzIGFuZCBoYXMgYSB0aHJlZSBhcmd1bWVudCBjb25zdHJ1Y3RvciB3aGljaCBpcyBpbW1lZGlhdGVseQotcHJveGllZCB0byB0aGUgYEdyYXBoVHJhdmVyc2FsYCBjb25zdHJ1Y3Rvci4gTmV3IERTTCBzdGVwcyBhcmUgdGhlbiBhZGRlZCB0byB0aGlzIGNsYXNzIHVzaW5nIGF2YWlsYWJsZSBzdGVwcyB0bwotY29uc3RydWN0IHRoZSB1bmRlcmx5aW5nIHRyYXZlcnNhbCB0byBleGVjdXRlIGFzIGRlbW9uc3RyYXRlZCBpbiB0aGUgYGFnZWQoKWAgc3RlcC4KLQotVGhlIGBTb2NpYWxUcmF2ZXJzYWxgIGlzIHNwYXduZWQgZnJvbSBhIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VgIHdoaWNoIGlzIGV4dGVuZGVkIGZyb20gYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gU3RlcHMKLWFkZGVkIGhlcmUgYXJlIG1lYW50IHRvIGJlIHN0YXJ0IHN0ZXBzLiBJbiB0aGUgYWJvdmUgY2FzZSwgdGhlIGBwZXJzb24oKWAgc3RhcnQgc3RlcCBmaW5kIGEgInBlcnNvbiIgdmVydGV4IHRvIGJlZ2luCi10aGUgdHJhdmVyc2FsIGZyb20uCi0KLVR5cGljYWxseSwgc3RlcHMgdGhhdCBhcmUgbWFkZSBhdmFpbGFibGUgb24gYSBgR3JhcGhUcmF2ZXJzYWxgIChpLmUuIFNvY2lhbFRyYXZlcnNhbCBpbiB0aGlzIGV4YW1wbGUpIHNob3VsZCBhbHNvIGJlCi1tYWRlIGF2YWlsYWJsZSBhcyBzcGF3bnMgZm9yIGFub255bW91cyB0cmF2ZXJzYWxzLiBUaGUgcmVjb21tZW5kYXRpb24gaXMgdGhhdCB0aGVzZSBzdGVwcyBiZSBleHBvc2VkIGluIHRoZSBtb2R1bGUKLWFzIHN0YW5kYWxvbmUgZnVuY3Rpb25zLiBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlIHN0YW5kYWxvbmUgYGFnZWQoKWAgc3RlcCBjcmVhdGVzIGFuIGFub255bW91cyB0cmF2ZXJzYWwgdGhyb3VnaAotYW4gYGFub255bW91cygpYCB1dGlsaXR5IGZ1bmN0aW9uLiBUaGUgbWV0aG9kIGZvciBjcmVhdGluZyB0aGVzZSBzdGFuZGFsb25lIGZ1bmN0aW9ucyBjYW4gYmUgaGFuZGxlZCBpbiBvdGhlciB3YXlzIGlmCi1kZXNpcmVkLgotCi1UbyB1c2UgdGhlIERTTCwgc2ltcGx5IGluaXRpYWxpemUgdGhlIGBnYCBhcyBmb2xsb3dzOgotCi1bc291cmNlLGphdmFzY3JpcHRdCi0tLS0tCi1jb25zdCBnID0gdHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZSkud2l0aFJlbW90ZShjb25uZWN0aW9uKTsKLWcucGVyc29uKCdtYXJrbycpLmFnZWQoMjkpLnZhbHVlcygnbmFtZScpLnRvTGlzdCgpLgotICB0aGVuKG5hbWVzID0+IGNvbnNvbGUubG9nKG5hbWVzKSk7Ci0tLS0tCitMZWFybiBtb3JlIGFib3V0IGhvdyB0byBpbXBsZW1lbnQgdGhlc2UgRFNMcyBpbiB0aGUgPDxncmVtbGluLWRyaXZlcnMtdmFyaWFudHMsR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50cz4+IHNlY3Rpb24KK3NwZWNpZmljIHRvIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBvZiBpbnRlcmVzdC4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3R1dG9yaWFscy9nZXR0aW5nLXN0YXJ0ZWQvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy90dXRvcmlhbHMvZ2V0dGluZy1zdGFydGVkL2luZGV4LmFzY2lpZG9jCmluZGV4IDY2Njk3ZGEuLjkwZjE1NzQgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3R1dG9yaWFscy9nZXR0aW5nLXN0YXJ0ZWQvaW5kZXguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvdHV0b3JpYWxzL2dldHRpbmctc3RhcnRlZC9pbmRleC5hc2NpaWRvYwpAQCAtMjQsMTMgKzI0LDEzIEBACiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmdbQXBhY2hlIFRpbmtlclBvcOKEol0gaXMgYW4gb3BlbiBzb3VyY2UgR3JhcGggQ29tcHV0aW5nIEZyYW1ld29yay4gV2l0aGluIGl0c2VsZiwgVGlua2VyUG9wCiByZXByZXNlbnRzIGEgbGFyZ2UgY29sbGVjdGlvbiBvZiBjYXBhYmlsaXRpZXMgYW5kIHRlY2hub2xvZ2llcyBhbmQsIGluIGl0cyB3aWRlciBlY29zeXN0ZW0sIGFuIGFkZGl0aW9uYWxseSBleHRlbmRlZAogd29ybGQgb2YgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNncmFwaC1zeXN0ZW1zW3RoaXJkLXBhcnR5IGNvbnRyaWJ1dGVkXSBncmFwaCBsaWJyYXJpZXMgYW5kCi1zeXN0ZW1zLiBUaW5rZXJQb3AncyBlY29zeXN0ZW0gY2FuIGFwcGVhciBjb21wbGV4IHRvIG5ld2NvbWVycyBvZiBhbGwgZXhwZXJpZW5jZSwgZXNwZWNpYWxseSB3aGVuIGdsYW5jaW5nIGF0IHRoZQorc3lzdGVtcy4gVGlua2VyUG9wJ3MgZWNvc3lzdGVtIGNhbiBhcHBlYXIgY29tcGxleCB0byBuZXdjb21lcnMgb2YgYWxsIGV4cGVyaWVuY2UgbGV2ZWxzLCBlc3BlY2lhbGx5IHdoZW4gZ2xhbmNpbmcgYXQgdGhlCiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvW3JlZmVyZW5jZSBkb2N1bWVudGF0aW9uXSBmb3IgdGhlIGZpcnN0IHRpbWUuCiAKLVNvLCB3aGVyZSBkbyB5b3UgZ2V0IHN0YXJ0ZWQgd2l0aCBUaW5rZXJQb3A/IEhvdyBkbyB5b3UgZGl2ZSBpbiBxdWlja2x5IGFuZCBnZXQgcHJvZHVjdGl2ZT8gV2VsbCAtIEdyZW1saW4sIHRoZQotbW9zdCByZWNvZ25pemFibGUgY2l0aXplbiBvZiBUaGUgVGlua2VyUG9wLCBpcyBoZXJlIHRvIGhlbHAgd2l0aCB0aGlzIHRoaXJ0eSBtaW51dGUgdHV0b3JpYWwuIFRoYXQncyByaWdodCAtIGluIGp1c3QKK1NvLCB3aGVyZSBkbyB5b3UgZ2V0IHN0YXJ0ZWQgd2l0aCBUaW5rZXJQb3A/IEhvdyBkbyB5b3UgZGl2ZSBpbiBxdWlja2x5IGFuZCBnZXQgcHJvZHVjdGl2ZT8gV2VsbCAuLi4gR3JlbWxpbiwgdGhlCittb3N0IHJlY29nbml6YWJsZSBjaXRpemVuIG9mIFRoZSBUaW5rZXJQb3AsIGlzIGhlcmUgdG8gaGVscCB3aXRoIHRoaXMgdGhpcnR5LW1pbnV0ZSB0dXRvcmlhbC4gVGhhdCdzIHJpZ2h0OiBpbiBqdXN0CiB0aGlydHkgc2hvcnQgbWludXRlcywgeW91IHRvbyBjYW4gYmUgZml0IHRvIHN0YXJ0IGJ1aWxkaW5nIGdyYXBoIGFwcGxpY2F0aW9ucyB3aXRoIFRpbmtlclBvcC4gV2VsY29tZSB0byBfVGhlCi1UaW5rZXJQb3AgV29ya291dCAtIGJ5IEdyZW1saW5fIQorVGlua2VyUG9wIFdvcmtvdXQg4oCUIGJ5IEdyZW1saW5fIQogCiBpbWFnZTo6Z3JlbWxpbi1neW0ucG5nW3dpZHRoPTEwMjRdCiAKQEAgLTQzLDggKzQzLDggQEAKIAogR3JlbWxpbiBoZWxwcyB5b3UgbmF2aWdhdGUgdGhlIHZlcnRpY2VzIGFuZCBlZGdlcyBvZiBhIGdyYXBoLiBIZSBpcyBlc3NlbnRpYWxseSB5b3VyIHF1ZXJ5IGxhbmd1YWdlIHRvIGdyYXBoCiBkYXRhYmFzZXMsIGFzIGxpbms6aHR0cDovL3NxbDJncmVtbGluLmNvbS9bU1FMXSBpcyB0aGUgcXVlcnkgbGFuZ3VhZ2UgdG8gcmVsYXRpb25hbCBkYXRhYmFzZXMuIFRvIHRlbGwgR3JlbWxpbiBob3cKLWhlIHNob3VsZCAidHJhdmVyc2UiIHRoZSBncmFwaCAoaS5lLiB3aGF0IHlvdSB3YW50IHlvdXIgcXVlcnkgdG8gZG8pIHlvdSBuZWVkIGEgd2F5IHRvIHByb3ZpZGUgaGltIGNvbW1hbmRzIGluIHRoZQotbGFuZ3VhZ2UgaGUgdW5kZXJzdGFuZHMgLSBhbmQsIG9mIGNvdXJzZSwgdGhhdCBsYW5ndWFnZSBpcyBjYWxsZWQgIkdyZW1saW4iLiBGb3IgdGhpcyB0YXNrLCB5b3UgbmVlZCBvbmUgb2YKK2hlIHNob3VsZCAidHJhdmVyc2UiIHRoZSBncmFwaCAoaS5lLiwgd2hhdCB5b3Ugd2FudCB5b3VyIHF1ZXJ5IHRvIGRvKSB5b3UgbmVlZCBhIHdheSB0byBwcm92aWRlIGhpbSBjb21tYW5kcyBpbiB0aGUKK2xhbmd1YWdlIGhlIHVuZGVyc3RhbmRzIOKAlCBhbmQsIG9mIGNvdXJzZSwgdGhhdCBsYW5ndWFnZSBpcyBjYWxsZWQgIkdyZW1saW4iLiBGb3IgdGhpcyB0YXNrLCB5b3UgbmVlZCBvbmUgb2YKIFRpbmtlclBvcCdzIG1vc3QgaW1wb3J0YW50IHRvb2xzOiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tY29uc29sZVtUaGUgR3JlbWxpbiBDb25zb2xlXS4KIAogTk9URTogQXJlIHlvdSB1bnN1cmUgb2Ygd2hhdCBhIHZlcnRleCBvciBlZGdlIGlzPyBUaGF0IHRvcGljIGlzIGNvdmVyZWQgaW4gdGhlIDw8X3RoZV9uZXh0X2ZpZnRlZW5fbWludXRlcywgbmV4dCBzZWN0aW9uPj4sCkBAIC03MywxNiArNzMsMTggQEAKIAogVGhlIEdyZW1saW4gQ29uc29sZSBpcyBhIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWFkJUUyJTgwJTkzZXZhbCVFMiU4MCU5M3ByaW50X2xvb3BbUkVQTCBlbnZpcm9ubWVudF0sCiB3aGljaCBwcm92aWRlcyBhIG5pY2Ugd2F5IHRvIGxlYXJuIEdyZW1saW4gYXMgeW91IGdldCBpbW1lZGlhdGUgZmVlZGJhY2sgZm9yIHRoZSBjb2RlIHRoYXQgeW91IGVudGVyLiBUaGlzIGVsaW1pbmF0ZXMKLXRoZSBtb3JlIGNvbXBsZXggbmVlZCB0byAiY3JlYXRlIGEgcHJvamVjdCIgdG8gdHJ5IHRoaW5ncyBvdXQuIFRoZSBjb25zb2xlIGlzIG5vdCBqdXN0IGZvciAiZ2V0dGluZyBzdGFydGVkIiBob3dldmVyLgordGhlIG1vcmUgY29tcGxleCBuZWVkIHRvICJjcmVhdGUgYSBwcm9qZWN0IiB0byB0cnkgdGhpbmdzIG91dC4gVGhlIGNvbnNvbGUgaXMgbm90IGp1c3QgZm9yICJnZXR0aW5nIHN0YXJ0ZWQiLCBob3dldmVyLgogWW91IHdpbGwgZmluZCB5b3Vyc2VsZiB1c2luZyBpdCBmb3IgYSB2YXJpZXR5IG9mIFRpbmtlclBvcC1yZWxhdGVkIGFjdGl2aXRpZXMsIHN1Y2ggYXMgbG9hZGluZyBkYXRhLCBhZG1pbmlzdGVyaW5nCi1ncmFwaHMsIHdvcmtpbmcgb3V0IGNvbXBsZXggdHJhdmVyc2FscywgZXRjLgorZ3JhcGhzIGFuZCB3b3JraW5nIG91dCBjb21wbGV4IHRyYXZlcnNhbHMuCiAKLVRvIGdldCBHcmVtbGluIHRvIHRyYXZlcnNlIGEgZ3JhcGgsIHlvdSBuZWVkIGEgYEdyYXBoYCBpbnN0YW5jZSwgd2hpY2ggaG9sZHMgdGhlCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI190aGVfZ3JhcGhfc3RydWN0dXJlW3N0cnVjdHVyZV0gYW5kIGRhdGEgb2YgdGhlCitUbyBnZXQgR3JlbWxpbiB0byB0cmF2ZXJzZSBhIGdyYXBoLCB5b3UgbmVlZCBhIGBUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlLCB3aGljaCBob2xkcyBhIHJlZmVyZW5jZSB0byBhCitgR3JhcGhgIGluc3RhbmNlLCB3aGljaCBpbiB0dXJuIGhvbGRzIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC1zdHJ1Y3R1cmVbc3RydWN0dXJlXSBhbmQgZGF0YSBvZiB0aGUKIGdyYXBoLiBUaW5rZXJQb3AgaXMgYSBncmFwaCBhYnN0cmFjdGlvbiBsYXllciBvdmVyIGRpZmZlcmVudCBncmFwaCBkYXRhYmFzZXMgYW5kIGRpZmZlcmVudCBncmFwaCBwcm9jZXNzb3JzLCBzbyB0aGVyZQotYXJlIG1hbnkgYEdyYXBoYCBpbnN0YW5jZXMgeW91IGNhbiBjaG9vc2UgZnJvbSB0byBpbnN0YW50aWF0ZSBpbiB0aGUgY29uc29sZS4gVGhlIGJlc3QgYEdyYXBoYCBpbnN0YW5jZSB0byBzdGFydCB3aXRoCi1ob3dldmVyIGlzIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdGlua2VyZ3JhcGgtZ3JlbWxpbltUaW5rZXJHcmFwaF0uIFRpbmtlckdyYXBoCi1pcyBhIGZhc3QsIGluLW1lbW9yeSBncmFwaCBkYXRhYmFzZSB3aXRoIGEgc21hbGwgaGFuZGZ1bCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG1ha2luZyBpdCBhIGdvb2QgY2hvaWNlIGZvciBiZWdpbm5lcnMuCithcmUgbWFueSBgR3JhcGhgIGluc3RhbmNlcyBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvI2dyYXBoLXN5c3RlbXNbeW91IGNhbiBjaG9vc2UgZnJvbV0gdG8gaW5zdGFudGlhdGUgYQorY29ubmVjdGlvbiB0byBpbiB0aGUgY29uc29sZS4gVGhlIGJlc3QgYEdyYXBoYCBpbnN0YW5jZSB0byBzdGFydCB3aXRoLCBob3dldmVyLCBpcworbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyN0aW5rZXJncmFwaC1ncmVtbGluW1RpbmtlckdyYXBoXS4gVGlua2VyR3JhcGggaXMgYSBmYXN0LAoraW4tbWVtb3J5IGdyYXBoIGRhdGFiYXNlIHdpdGggYSBzbWFsbCBoYW5kZnVsIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgbWFraW5nIGl0IGEgZ29vZCBjaG9pY2UgZm9yIGJlZ2lubmVycy4KIAogVElQOiBUaW5rZXJHcmFwaCBpcyBub3QganVzdCBhIHRveSBmb3IgYmVnaW5uZXJzLiBJdCBpcyB1c2VmdWwgaW4gYW5hbHl6aW5nIHN1YmdyYXBocyB0YWtlbiBmcm9tIGEgbGFyZ2UgZ3JhcGgsCiB3b3JraW5nIHdpdGggYSBzbWFsbCBzdGF0aWMgZ3JhcGggdGhhdCBkb2Vzbid0IGNoYW5nZSBtdWNoLCB3cml0aW5nIHVuaXQgdGVzdHMgYW5kIG90aGVyIHVzZSBjYXNlcyB3aGVyZSB0aGUgZ3JhcGgKQEAgLTk5LDEyICsxMDEsMTMgQEAKIGxpbms6aHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dyZW1saW4tdXNlcnNbbWFpbGluZyBsaXN0XSwgYSBmYWlsaW5nIGV4YW1wbGUgcHV0IGluIHRoZSBjb250ZXh0IG9mIHRoZSB0b3kgZ3JhcGhzCiBjYW4gdXN1YWxseSBnZXQgeW91IGEgZmFzdCBhbnN3ZXIgdG8geW91ciBwcm9ibGVtLgogCi1USVA6IFdoZW4gYXNraW5nIHF1ZXN0aW9ucyBvbiB0aGUgbWFpbGluZyBsaXN0IG9yIFN0YWNrT3ZlcmZsb3cgYWJvdXQgR3JlbWxpbiwgaXQncyBhbHdheXMgaGVscGZ1bCB0byBpbmNsdWRlIGEKLXNhbXBsZSBncmFwaCBzbyB0aGF0IHRob3NlIGF0dGVtcHRpbmcgdG8gYW5zd2VyIHlvdXIgcXVlc3Rpb24gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQga2luZCBvZiBncmFwaCB5b3UgaGF2ZSBhbmQgY2FuCi1mb2N1cyB0aGVpciBlbmVyZ2llcyBvbiBhIGdvb2QgYW5zd2VyIHJhdGhlciB0aGFuIHRyeWluZyB0byBidWlsZCBzYW1wbGUgZGF0YSB0aGVtc2VsdmVzLiBUaGUgc2FtcGxlIGdyYXBoIHNob3VsZCBqdXN0Ci1iZSBhIHNpbXBsZSBHcmVtbGluIHNjcmlwdCB0aGF0IGNhbiBiZSBjb3BpZWQgYW5kIHBhc3RlZCBpbnRvIGEgR3JlbWxpbiBDb25zb2xlIHNlc3Npb24uCitUSVA6IFdoZW4gYXNraW5nIHF1ZXN0aW9ucyBvbiB0aGUgbWFpbGluZyBsaXN0IG9yIFN0YWNrT3ZlcmZsb3cgYWJvdXQgR3JlbWxpbiwgaXQncyBhbHdheXMgaGVscGZ1bCB0bworbGluazpodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MTM4ODMxNS9ncmVtbGluLWNob29zZS1vbmUtaXRlbS1hdC1yYW5kb21baW5jbHVkZSBhIHNhbXBsZSBncmFwaF0gc28gdGhhdAordGhvc2UgYXR0ZW1wdGluZyB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbiB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBraW5kIG9mIGdyYXBoIHlvdSBoYXZlIGFuZCBjYW4gZm9jdXMgdGhlaXIgZW5lcmdpZXMKK29uIHByb3ZpZGluZyBhIGdvb2QsIHRlc3RlZCBhbnN3ZXIgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGJ1aWxkIHNhbXBsZSBkYXRhIHRoZW1zZWx2ZXMuIFRoZSBzYW1wbGUgZ3JhcGggc2hvdWxkIGp1c3QgYmUgYSBzaW1wbGUKK0dyZW1saW4gc2NyaXB0IHRoYXQgY2FuIGJlIGNvcGllZCBhbmQgcGFzdGVkIGludG8gYSBHcmVtbGluIENvbnNvbGUgc2Vzc2lvbi4KIAotRm9yIHlvdXIgZmlyc3QgZ3JhcGgsIHVzZSB0aGUgIk1vZGVybiIgZ3JhcGggd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorRm9yIHlvdXIgZmlyc3QgZ3JhcGgsIHVzZSB0aGUgIk1vZGVybiIgZ3JhcGgsIHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKIAogaW1hZ2U6dGlua2VycG9wLW1vZGVybi5wbmdbd2lkdGg9NTAwXQogCkBAIC0xMjMsNiArMTI2LDEyIEBACiB0byBhcHBseSBhbmQgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGhjb21wdXRlclt0cmF2ZXJzYWwgZW5naW5lXSB0byB1c2UpIHdoaWNoCiBwcm92aWRlcyBoaW0gZ3VpZGFuY2Ugb24gaG93IHRvIGV4ZWN1dGUgaGlzIHRyaXAgYXJvdW5kIHRoZSBgR3JhcGhgLgogCitUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGNyZWF0ZSBhIGBUcmF2ZXJzYWxTb3VyY2VgLiBUaGUgZXhhbXBsZSBhYm92ZSB1c2VzIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLWVtYmVkZGVkW2VtYmVkZGVkXSBzdHlsZSBhbmQgaXMgYW4gYXBwcm9hY2gKK3Jlc3RyaWN0ZWQgdG8gbGFuZ3VhZ2VzIHVzaW5nIHRoZSBKYXZhIFZpcnR1YWwgTWFjaGluZSAoSlZNKS4gT3RoZXIgbWV0aG9kcyBhcmUgc2ltaWxhciBpbiBmb3JtLCBidXQgYXJlIG5vdCB0aGUgZm9jdXMgb2YKK3RoaXMgdHV0b3JpYWwuIFNlZSB0aGUgUmVmZXJlbmNlIERvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGRpZmZlcmVudCB3YXlzIG9mCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2Nvbm5lY3RpbmctZ3JlbWxpbltjb25uZWN0aW5nIHdpdGggR3JlbWxpbl0uCisKIFdpdGggeW91ciBgVHJhdmVyc2FsU291cmNlYCBgZ2AgYXZhaWxhYmxlIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBhc2sgR3JlbWxpbiB0byB0cmF2ZXJzZSB0aGUgYEdyYXBoYDoKIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KQEAgLTE0MCw3ICsxNDksNyBAQAogPDI+IEdldCB0aGUgdmVydGV4IHdpdGggdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIi4KIDwzPiBHZXQgdGhlIHZhbHVlIG9mIHRoZSBgbmFtZWAgcHJvcGVydHkgb24gdGhlIHZlcnRleCB3aXRoIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiAiMSIuCiA8ND4gR2V0IHRoZSBlZGdlcyB3aXRoIHRoZSBsYWJlbCAia25vd3MiIGZvciB0aGUgdmVydGV4IHdpdGggdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIi4KLTw1PiBHZXQgdGhlIG5hbWVzIG9mIHRoZSBwZW9wbGUgdGhhdCB0aGUgdmVydGV4IHdpdGggdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIiAia25vd3MiLgorPDU+IEdldCB0aGUgbmFtZXMgb2YgdGhlIHBlb3BsZSB3aG9tIHRoZSB2ZXJ0ZXggd2l0aCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgIjEiICJrbm93cyIuCiA8Nj4gTm90ZSB0aGF0IHdoZW4gb25lIHVzZXMgYG91dEUoKS5pblYoKWAgYXMgc2hvd24gaW4gdGhlIHByZXZpb3VzIGNvbW1hbmQsIHRoaXMgY2FuIGJlIHNob3J0ZW5lZCB0byBqdXN0IGBvdXQoKWAKIChzaW1pbGFyIHRvIGBpbkUoKS5vdXRWKClgIGFuZCBgaW4oKWAgZm9yIGluY29taW5nIGVkZ2VzKS4KIDw3PiBHZXQgdGhlIG5hbWVzIG9mIHRoZSBwZW9wbGUgdmVydGV4ICIxIiBrbm93cyB3aG8gYXJlIG92ZXIgdGhlIGFnZSBvZiAzMC4KQEAgLTE2MiwxNiArMTcxLDE2IEBACiAKID09IFRoZSBOZXh0IEZpZnRlZW4gTWludXRlcwogCi1JbiB0aGUgZmlyc3QgZml2ZSBtaW51dGVzIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQgLSBieSBHcmVtbGluXywgeW91IGxlYXJuZWQgc29tZSBiYXNpY3MgZm9yIHRyYXZlcnNpbmcgZ3JhcGhzLiBPZgotY291cnNlLCB0aGVyZSB3YXNuJ3QgbXVjaCBkaXNjdXNzaW9uIGFib3V0IHdoYXQgYSBncmFwaCBpcy4gQSBncmFwaCBpcyBhIGNvbGxlY3Rpb24gb2YgdmVydGljZXMgKGkuZS4gbm9kZXMsIGRvdHMpCi1hbmQgZWRnZXMgKGkuZS4gcmVsYXRpb25zaGlwcywgbGluZXMpLCB3aGVyZSBhIHZlcnRleCBpcyBhbiBlbnRpdHkgd2hpY2ggcmVwcmVzZW50cyBzb21lIGRvbWFpbiBvYmplY3QgKGUuZy4gYSBwZXJzb24sCi1hIHBsYWNlLCBldGMuKSBhbmQgYW4gZWRnZSByZXByZXNlbnRzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0d28gdmVydGljZXMuCitJbiB0aGUgZmlyc3QgZml2ZSBtaW51dGVzIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQg4oCUIGJ5IEdyZW1saW5fLCB5b3UgbGVhcm5lZCBzb21lIGJhc2ljcyBmb3IgdHJhdmVyc2luZyBncmFwaHMuIE9mCitjb3Vyc2UsIHRoZXJlIHdhc24ndCBtdWNoIGRpc2N1c3Npb24gYWJvdXQgd2hhdCBhIGdyYXBoIGlzLiBBIGdyYXBoIGlzIGEgY29sbGVjdGlvbiBvZiB2ZXJ0aWNlcyAoaS5lLiwgbm9kZXMsIGRvdHMpCithbmQgZWRnZXMgKGkuZS4sIHJlbGF0aW9uc2hpcHMsIGxpbmVzKSwgd2hlcmUgYSB2ZXJ0ZXggaXMgYW4gZW50aXR5IHdoaWNoIHJlcHJlc2VudHMgc29tZSBkb21haW4gb2JqZWN0IChlLmcuLCBhIHBlcnNvbiBvcgorYSBwbGFjZSkgYW5kIGFuIGVkZ2UgcmVwcmVzZW50cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIHZlcnRpY2VzLgogCiBpbWFnZTptb2Rlcm4tZWRnZS0xLXRvLTMtMS5wbmdbd2lkdGg9MzAwXQogCiBUaGUgZGlhZ3JhbSBhYm92ZSBzaG93cyBhIGdyYXBoIHdpdGggdHdvIHZlcnRpY2VzLCBvbmUgd2l0aCBhIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIiBhbmQgYW5vdGhlciB3aXRoIGEgdW5pcXVlCiBpZGVudGlmaWVyIG9mICIzIi4gVGhlcmUgaXMgYW4gZWRnZSBjb25uZWN0aW5nIHRoZSB0d28gd2l0aCBhIHVuaXF1ZSBpZGVudGlmaWVyIG9mICI5Ii4gSXQgaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyCi10aGF0IHRoZSBlZGdlIGhhcyBhIGRpcmVjdGlvbiB3aGljaCBnb2VzIF9vdXRfIGZyb20gdmVydGV4ICIxIiBhbmQgX2luXyB0byB2ZXJ0ZXggIjMiLgordGhhdCB0aGUgZWRnZSBoYXMgYSBkaXJlY3Rpb24sIHdoaWNoIGdvZXMgX291dF8gZnJvbSB2ZXJ0ZXggIjEiIGFuZCBfaW5fIHRvIHZlcnRleCAiMyIuCiAKIElNUE9SVEFOVDogTW9zdCBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zIGRvIG5vdCBhbGxvdyBmb3IgaWRlbnRpZmllciBhc3NpZ25tZW50LiBUaGV5IHdpbGwgcmF0aGVyIGFzc2lnbgogdGhlaXIgb3duIGlkZW50aWZpZXJzIGFuZCBpZ25vcmUgYXNzaWduZWQgaWRlbnRpZmllcnMgdGhhdCB5b3UgYXR0ZW1wdCB0byBhc3NpZ24gdG8gdGhlbS4KQEAgLTE4MSw3ICsxOTAsNyBAQAogCiBpbWFnZTptb2Rlcm4tZWRnZS0xLXRvLTMtMi5wbmdbd2lkdGg9MzAwXQogCi1Zb3UgY2FuIG5vdyBzZWUgdGhhdCBhIHZlcnRleCAiMSIgaXMgYSAicGVyc29uIiBhbmQgdmVydGV4ICIzIiBpcyBhICJzb2Z0d2FyZSIgdmVydGV4LiBUaGV5IGFyZSBqb2luZWQgYnkgYSAiY3JlYXRlZCIKK1lvdSBjYW4gbm93IHNlZSB0aGF0IHZlcnRleCAiMSIgaXMgYSAicGVyc29uIiBhbmQgdmVydGV4ICIzIiBpcyBhICJzb2Z0d2FyZSIgdmVydGV4LiBUaGV5IGFyZSBqb2luZWQgYnkgYSAiY3JlYXRlZCIKIGVkZ2Ugd2hpY2ggYWxsb3dzIHlvdSB0byBzZWUgdGhhdCBhICJwZXJzb24gY3JlYXRlZCBzb2Z0d2FyZSIuIFRoZSAibGFiZWwiIGFuZCB0aGUgImlkIiBhcmUgcmVzZXJ2ZWQgYXR0cmlidXRlcyBvZgogdmVydGljZXMgYW5kIGVkZ2VzLCBidXQgeW91IGNhbiBhZGQgeW91ciBvd24gYXJiaXRyYXJ5IHByb3BlcnRpZXMgYXMgd2VsbDoKIApAQCAtMTk1LDcgKzIwNCw3IEBACiBBcyBpbnR1aXRpdmUgYXMgaXQgaXMgdG8geW91LCBpdCBpcyBwZXJoYXBzIG1vcmUgaW50dWl0aXZlIHRvIEdyZW1saW4gaGltc2VsZiwgYXMgdmVydGljZXMsIGVkZ2VzIGFuZCBwcm9wZXJ0aWVzIG1ha2UKIHVwIHRoZSB2ZXJ5IGVsZW1lbnRzIG9mIGhpcyBleGlzdGVuY2UuIEl0IGlzIGluZGVlZCBoZWxwZnVsIHRvIHRoaW5rIG9mIG91ciBmcmllbmQsIEdyZW1saW4sIG1vdmluZyBhYm91dCBhIGdyYXBoIHdoZW4KIGRldmVsb3BpbmcgdHJhdmVyc2FscywgYXMgcGljdHVyaW5nIGhpcyBwb3NpdGlvbiBhcyB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNfdGhlX3RyYXZlcnNlclt0cmF2ZXJzZXJdCi1oZWxwcyBvcmllbnQgd2hlcmUgeW91IG5lZWQgaGltIHRvIGdvIG5leHQuIExldCdzIHVzZSB0aGUgdHdvIHZlcnRleCwgb25lIGVkZ2UgZ3JhcGggd2UndmUgYmVlbiBkaXNjdXNzaW5nIGFib3ZlCitoZWxwcyBvcmllbnQgd2hlcmUgeW91IG5lZWQgaGltIHRvIGdvIG5leHQuIExldCdzIHVzZSB0aGUgdHdvLXZlcnRleCwgb25lLWVkZ2UgZ3JhcGggd2UndmUgYmVlbiBkaXNjdXNzaW5nIGFib3ZlCiBhcyBhbiBleGFtcGxlLiBGaXJzdCwgeW91IG5lZWQgdG8gY3JlYXRlIHRoaXMgZ3JhcGg6CiAKIFtncmVtbGluLWdyb292eV0KQEAgLTIwOCw3ICsyMTcsNyBAQAogLS0tLQogCiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgaW1wb3J0YW50IHRoaW5ncyB0byBjb25zaWRlciBpbiB0aGUgYWJvdmUgY29kZS4gRmlyc3QsIHJlY2FsbCB0aGF0IGBpZGAgaXMKLSJyZXNlcnZlZCIgZm9yIHNwZWNpYWwgdXNhZ2UgaW4gVGlua2VyUG9wIGFuZCBpcyBhIG1lbWJlciBvZiB0aGUgZW51bSwgYFRgLiBUaGUgImtleXMiIHN1cHBsaWVkIHRvIHRoZSBjcmVhdGlvbgorInJlc2VydmVkIiBmb3Igc3BlY2lhbCB1c2FnZSBpbiBUaW5rZXJQb3AuIEl0IGlzIGEgbWVtYmVyIG9mIHRoZSBlbnVtLCBgVGAuIFRob3NlICJrZXlzIiBzdXBwbGllZCB0byB0aGUgY3JlYXRpb24KIG1ldGhvZCBhcmUgbGluazpodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL3RlY2hub3Rlcy9ndWlkZXMvbGFuZ3VhZ2Uvc3RhdGljLWltcG9ydC5odG1sW3N0YXRpY2FsbHkgaW1wb3J0ZWRdCiB0byB0aGUgY29uc29sZSwgd2hpY2ggYWxsb3dzIHlvdSB0byBhY2Nlc3MgdGhlbSB3aXRob3V0IGhhdmluZyB0byBzcGVjaWZ5IHRoZWlyIG93bmluZyBlbnVtLiBUaGluayBvZiBgaWRgIGFzIGEKIHNob3J0aGFuZCBmb3JtIHRoYXQgZW5hYmxlcyBhIG1vcmUgZmx1aWQgY29kZSBzdHlsZS4gWW91IHdvdWxkIG5vcm1hbGx5IHJlZmVyIHRvIGl0IGFzIGBULmlkYCwgc28gd2l0aG91dApAQCAtMjIzLDExICsyMzIsMTQgQEAKIGcuYWRkRSgiY3JlYXRlZCIpLmZyb20odjEpLnRvKHYyKS5wcm9wZXJ0eShULmlkLCA5KS5wcm9wZXJ0eSgid2VpZ2h0IiwgMC40KQogLS0tLQogCi1OT1RFOiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgZm9yIGBUYCBpcyBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVGAuIEFub3RoZXIgaW1wb3J0YW50IHN0YXRpYyBpbXBvcnQKLXRoYXQgaXMgb2Z0ZW4gc2VlbiBpbiBHcmVtbGluIGNvbWVzIGZyb20gYCtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXytgLCB3aGljaCBhbGxvd3MKLWZvciB0aGUgY3JlYXRpb24gb2YgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC10cmF2ZXJzYWwtc3RlcHNbYW5vbnltb3VzIHRyYXZlcnNhbHNdLgorTk9URTogT24gdGhlIEpWTSwgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIGZvciBgVGAgaXMgYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlRgLiBBbm90aGVyIGltcG9ydGFudAorc3RhdGljIGltcG9ydCB0aGF0IGlzIG9mdGVuIHNlZW4gaW4gR3JlbWxpbiBjb21lcyBmcm9tIGArb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18rYCwKK3doaWNoIGFsbG93cyBmb3IgdGhlIGNyZWF0aW9uIG9mIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGgtdHJhdmVyc2FsLXN0ZXBzW2Fub255bW91cyB0cmF2ZXJzYWxzXS4KK1lvdSBjYW4gZmluZCB0aGUgYW5hbG9nb3VzIHZhcmlhdGlvbnMgb2YgYFRgIGFuZCBgK19fK2AgZm9yIG90aGVyIEdyZW1saW4gbGFuZ3VhZ2VzIGJ5IHZpZXdpbmcgdGhlICJDb21tb24gSW1wb3J0cyIKK3NlY3Rpb25zIGZvciB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgeW91IGFyZSBpbnRlcmVzdGVkIGluIGluIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmVtbGluLWRyaXZlcnMtdmFyaWFudHNbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dLgogCi1TZWNvbmQsIGRvbid0IGZvcmdldCB0aGF0IHlvdSBhcmUgd29ya2luZyB3aXRoIFRpbmtlckdyYXBoIHdoaWNoIGFsbG93cyBmb3IgaWRlbnRpZmllciBhc3NpZ25tZW50LiBUaGF0IGlzIF9ub3RfIHRoZQorU2Vjb25kLCBkb24ndCBmb3JnZXQgdGhhdCB5b3UgYXJlIHdvcmtpbmcgd2l0aCBUaW5rZXJHcmFwaCwgd2hpY2ggYWxsb3dzIGZvciBpZGVudGlmaWVyIGFzc2lnbm1lbnQuIFRoYXQgaXMgX25vdF8gdGhlCiBjYXNlIHdpdGggbW9zdCBncmFwaCBkYXRhYmFzZXMuCiAKIEZpbmFsbHksIHRoZSBsYWJlbCBmb3IgYW4gYEVkZ2VgIGlzIHJlcXVpcmVkIGFuZCBpcyB0aHVzIHBhcnQgb2YgdGhlIG1ldGhvZCBzaWduYXR1cmUgb2YgYGFkZEVkZ2UoKWAuIFRoaXMgdXNhZ2Ugb2YgYGFkZEVkZ2VgIGlzCkBAIC0yNDcsOSArMjU5LDkgQEAKIC4gU2VsZWN0IHRoZSAibmFtZSIgcHJvcGVydHkgb2YgdGhlICJzb2Z0d2FyZSIgdmVydGljZXMKIAogVGhlIEVuZ2xpc2gtYmFzZWQgc3RlcHMgYWJvdmUgbGFyZ2VseSB0cmFuc2xhdGUgdG8gR3JlbWxpbidzIHBvc2l0aW9uIGluIHRoZSBncmFwaCBhbmQgdG8gdGhlIHN0ZXBzIHdlIG5lZWQgdG8gdGFrZQotdG8gYXNrIGhpbSB0byBhbnN3ZXIgb3VyIHF1ZXN0aW9uLiBCeSBzdHJpbmdpbmcgdGhlc2Ugc3RlcHMgdG9nZXRoZXIsIHdlIGZvcm0gYSBgVHJhdmVyc2FsYCBvciB0aGUgc2VxdWVuY2Ugb2YgcHJvZ3JhbW1hdGljCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyYXBoLXRyYXZlcnNhbC1zdGVwc1tzdGVwc10gR3JlbWxpbiBuZWVkcyB0byBwZXJmb3JtCi1pbiBvcmRlciB0byBnZXQgeW91IGFuIGFuc3dlci4KK3RvIGFzayBoaW0gdG8gYW5zd2VyIG91ciBxdWVzdGlvbi4gQnkgc3RyaW5naW5nIHRoZXNlIHN0ZXBzIHRvZ2V0aGVyLCB3ZSBmb3JtIGEgYFRyYXZlcnNhbGAgb3IgdGhlIHNlcXVlbmNlIG9mCitwcm9ncmFtbWF0aWMgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC10cmF2ZXJzYWwtc3RlcHNbc3RlcHNdIEdyZW1saW4gbmVlZHMgdG8KK3BlcmZvcm0gaW4gb3JkZXIgdG8gZ2V0IHlvdSBhbiBhbnN3ZXIuCiAKIExldCdzIHN0YXJ0IHdpdGggZmluZGluZyAibWFya28iLiBUaGlzIG9wZXJhdGlvbiBpcyBhIGZpbHRlcmluZyBzdGVwIGFzIGl0IHNlYXJjaGVzIHRoZSBmdWxsIHNldCBvZiB2ZXJ0aWNlcyB0byBtYXRjaAogdGhvc2UgdGhhdCBoYXZlIHRoZSAibmFtZSIgcHJvcGVydHkgdmFsdWUgb2YgIm1hcmtvIi4gVGhpcyBjYW4gYmUgZG9uZSB3aXRoIHRoZQpAQCAtMjYzLDI2ICsyNzUsMzUgQEAKIE5PVEU6IFRoZSB2YXJpYWJsZSBgZ2AgaXMgdGhlIGBUcmF2ZXJzYWxTb3VyY2VgLCB3aGljaCB3YXMgaW50cm9kdWNlZCBpbiB0aGUgIlRoZSBGaXJzdCBGaXZlIE1pbnV0ZXMiLiBUaGUKIGBUcmF2ZXJzYWxTb3VyY2VgIGlzIGNyZWF0ZWQgd2l0aCBgZ3JhcGgudHJhdmVyc2FsKClgIGFuZCBpcyB0aGUgb2JqZWN0IHVzZWQgdG8gc3Bhd24gbmV3IHRyYXZlcnNhbHMuCiAKK1RoaXMgYml0IG9mIEdyZW1saW4gY2FuIGJlIGltcHJvdmVkIGFuZCBtYWRlIG1vcmUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlY2lwZXMvI3Vuc3BlY2lmaWVkLWxhYmVsLWluLWdsb2JhbC12ZXJ0ZXgtbG9va3VwW2lkaW9tYXRpY2FsbHkgcGxlYXNpbmddCitieSBpbmNsdWRpbmcgdGhlIHZlcnRleCBsYWJlbCBhcyBwYXJ0IG9mIHRoZSBmaWx0ZXIgdG8gZW5zdXJlIHRoYXQgdGhlICJuYW1lIiBwcm9wZXJ0eSBrZXkgcmVmZXJzIHRvIGEgInBlcnNvbiIgdmVydGV4LgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKQorLS0tLQorCiBXZSBjYW4gcGljdHVyZSB0aGlzIHRyYXZlcnNhbCBpbiBvdXIgbGl0dGxlIGdyYXBoIHdpdGggR3JlbWxpbiBzaXR0aW5nIG9uIHZlcnRleCAiMSIuCiAKIGltYWdlOm1vZGVybi1lZGdlLTEtdG8tMy0xLWdyZW1saW4ucG5nW3dpZHRoPTMyNV0KIAogV2hlbiBHcmVtbGluIGlzIG9uIGEgdmVydGV4IG9yIGFuIGVkZ2UsIGhlIGhhcyBhY2Nlc3MgdG8gYWxsIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byB0aGF0IGVsZW1lbnQuCiAKLUlNUE9SVEFOVDogVGhlIGFib3ZlIHF1ZXJ5IGl0ZXJhdGVzIGFsbCB0aGUgdmVydGljZXMgaW4gdGhlIGdyYXBoIHRvIGdldCBpdHMgYW5zd2VyLiBUaGF0J3MgZmluZSBmb3Igb3VyIGxpdHRsZSBleGFtcGxlLAotYnV0IGZvciBtdWx0aS1taWxsaW9uIG9yIGJpbGxpb24gZWRnZSBncmFwaHMgdGhhdCBpcyBhIGJpZyBwcm9ibGVtLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSBzaG91bGQgbG9vayB0byB1c2UKK0lNUE9SVEFOVDogVGhlIGFib3ZlIHF1ZXJ5IGl0ZXJhdGVzICphbGwqIHRoZSB2ZXJ0aWNlcyBpbiB0aGUgZ3JhcGggdG8gZ2V0IGl0cyBhbnN3ZXIuIFRoYXQncyBmaW5lIGZvciBvdXIgbGl0dGxlIGV4YW1wbGUsCitidXQgZm9yIG11bHRpLW1pbGxpb24tIG9yIGJpbGxpb24tZWRnZSBncmFwaHMgdGhhdCBpcyBhIGJpZyBwcm9ibGVtLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSBzaG91bGQgbG9vayB0byB1c2UKIGluZGljZXMuIFRpbmtlclBvcCBkb2VzIG5vdCBwcm92aWRlIGFuIGFic3RyYWN0aW9uIGZvciBpbmRleCBtYW5hZ2VtZW50LiBZb3Ugc2hvdWxkIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlCiBncmFwaCB5b3UgaGF2ZSBjaG9zZW4gYW5kIHV0aWxpemUgaXRzIG5hdGl2ZSBBUEkgdG8gY3JlYXRlIGluZGljZXMgd2hpY2ggd2lsbCB0aGVuIHNwZWVkIHVwIHRoZXNlIHR5cGVzIG9mIGxvb2t1cHMuIFlvdXIKLXRyYXZlcnNhbHMgd2lsbCByZW1haW4gdW5jaGFuZ2VkIGhvd2V2ZXIsIGFzIHRoZSBpbmRpY2VzIHdpbGwgYmUgdXNlZCB0cmFuc3BhcmVudGx5IGF0IGV4ZWN1dGlvbiB0aW1lLgordHJhdmVyc2FscyB3aWxsIHJlbWFpbiB1bmNoYW5nZWQsIGhvd2V2ZXIsIGFzIHRoZSBpbmRpY2VzIHdpbGwgYmUgdXNlZCB0cmFuc3BhcmVudGx5IGF0IGV4ZWN1dGlvbiB0aW1lLgogCi1Ob3cgdGhhdCBHcmVtbGluIGhhcyBmb3VuZCAibWFya28iLCBoZSBjYW4gbm93IGNvbnNpZGVyIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHRyYXZlcnNhbCB3aGVyZSB3ZSBhc2sgaGltIHRvICJ3YWxrIgorTm93IHRoYXQgR3JlbWxpbiBoYXMgZm91bmQgIm1hcmtvIiwgaGUgY2FuIGNvbnNpZGVyIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHRyYXZlcnNhbCB3aGVyZSB3ZSBhc2sgaGltIHRvICJ3YWxrIgogYWxvbmcgImNyZWF0ZWQiIGVkZ2VzIHRvICJzb2Z0d2FyZSIgdmVydGljZXMuIEFzIGRlc2NyaWJlZCBlYXJsaWVyLCBlZGdlcyBoYXZlIGRpcmVjdGlvbiwgc28gd2UgaGF2ZSB0byB0ZWxsIEdyZW1saW4KIHdoYXQgZGlyZWN0aW9uIHRvIGZvbGxvdy4gSW4gdGhpcyBjYXNlLCB3ZSB3YW50IGhpbSB0byB0cmF2ZXJzZSBvbiBvdXRnb2luZyBlZGdlcyBmcm9tIHRoZSAibWFya28iIHZlcnRleC4gRm9yIHRoaXMsCiB3ZSB1c2UgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdmVydGV4LXN0ZXBzW291dEVdIHN0ZXAuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCi1nLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLm91dEUoJ2NyZWF0ZWQnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXRFKCdjcmVhdGVkJykKIC0tLS0KIAogQXQgdGhpcyBwb2ludCwgeW91IGNhbiBwaWN0dXJlIEdyZW1saW4gbW92aW5nIGZyb20gdGhlICJtYXJrbyIgdmVydGV4IHRvIHRoZSAiY3JlYXRlZCIgZWRnZS4KQEAgLTI5NCw3ICszMTUsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXRFKCdjcmVhdGVkJykuaW5WKCkKK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykub3V0RSgnY3JlYXRlZCcpLmluVigpCiAtLS0tCiAKIFlvdSBjYW4gbm93IHBpY3R1cmUgR3JlbWxpbiBvbiB0aGUgInNvZnR3YXJlIiB2ZXJ0ZXggYXMgZm9sbG93czoKQEAgLTMwNiw3ICszMjcsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQogLS0tLQogCiBpbWFnZTptb2Rlcm4tZWRnZS0xLXRvLTMtNC1ncmVtbGluLnBuZ1t3aWR0aD0zMjVdCkBAIC0zMTYsMTggKzMzNywxOCBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKQogLS0tLQogCiBZb3Ugc2hvdWxkIG5vdyBiZSBhYmxlIHRvIHNlZSB0aGUgY29ubmVjdGlvbiBHcmVtbGluIGhhcyB0byB0aGUgc3RydWN0dXJlIG9mIHRoZSBncmFwaCBhbmQgaG93IEdyZW1saW4gbWFuZXV2ZXJzIGZyb20KLXZlcnRpY2VzIHRvIGVkZ2VzIGFuZCBzbyBvbi4gWW91ciBhYmlsaXR5IHRvIHN0cmluZyB0b2dldGhlciBzdGVwcyB0byBhc2sgR3JlbWxpbiB0byBkbyBtb3JlIGNvbXBsZXggdGhpbmdzLCBkZXBlbmRzCit2ZXJ0aWNlcyB0byBlZGdlcyBhbmQgc28gb24uIFlvdXIgYWJpbGl0eSB0byBzdHJpbmcgdG9nZXRoZXIgc3RlcHMgdG8gYXNrIEdyZW1saW4gdG8gZG8gbW9yZSBjb21wbGV4IHRoaW5ncyBkZXBlbmRzCiBvbiB5b3VyIHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgYmFzaWMgY29uY2VwdHMuCiAKID09PSBHcmFwaCBUcmF2ZXJzYWwgLSBJbmNyZWFzaW5nIENvbXBsZXhpdHkKIAogQXJtZWQgd2l0aCB0aGUga25vd2xlZGdlIGZyb20gdGhlIHByZXZpb3VzIHNlY3Rpb24sIGxldCdzIGFzayBHcmVtbGluIHRvIHBlcmZvcm0gc29tZSBtb3JlIGRpZmZpY3VsdCB0cmF2ZXJzYWwgdGFza3MuCiBUaGVyZSdzIG5vdCBtdWNoIG1vcmUgdGhhdCBjYW4gYmUgZG9uZSB3aXRoIHRoZSAiYmFieSIgZ3JhcGggd2UgaGFkLCBzbyBsZXQncyByZXR1cm4gdG8gdGhlICJtb2Rlcm4iIHRveSBncmFwaCBmcm9tCi10aGUgImZpdmUgbWludXRlcyBzZWN0aW9uIi4gUmVjYWxsIHRoYXQgeW91IGNhbiBjcmVhdGUgdGhpcyBgR3JhcGhgIGFuZCBlc3RhYmxpc2ggYSBgVHJhdmVyc2FsU291cmNlYCB3aXRoOgordGhlICJGaXJzdCBGaXZlIE1pbnV0ZXMiIHNlY3Rpb24uIFJlY2FsbCB0aGF0IHlvdSBjYW4gY3JlYXRlIHRoaXMgYEdyYXBoYCBhbmQgZXN0YWJsaXNoIGEgYFRyYXZlcnNhbFNvdXJjZWAgd2l0aDoKIAogW2dyZW1saW4tZ3Jvb3Z5XQogLS0tLQpAQCAtMzQxLDIwICszNjIsMjIgQEAKIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KLWcuVigpLmhhcygnbmFtZScsd2l0aGluKCd2YWRhcycsJ21hcmtvJykpLnZhbHVlcygnYWdlJykKK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsd2l0aGluKCd2YWRhcycsJ21hcmtvJykpLnZhbHVlcygnYWdlJykKIC0tLS0KIAogSXQgaXMgd29ydGggbm90aW5nIHRoYXQgYHdpdGhpbmAgaXMgc3RhdGljYWxseSBpbXBvcnRlZCBmcm9tIGBQYCB0byB0aGUgR3JlbWxpbiBDb25zb2xlIChtdWNoIGxpa2UgYFRgIGlzLCBhcyBkZXNjcmliZWQKIGVhcmxpZXIpLgogCi1OT1RFOiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgZm9yIGBQYCBpcyBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYC4KK05PVEU6IE9uIHRoZSBKVk0sIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBmb3IgYFBgIGlzIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBgLiBZb3UgY2FuIGZpbmQKK3RoZSBhbmFsb2dvdXMgdmFyaWF0aW9uIG9mIGBQYCBmb3Igb3RoZXIgR3JlbWxpbiBsYW5ndWFnZXMgYnkgdmlld2luZyB0aGUgIkNvbW1vbiBJbXBvcnRzIiBzZWN0aW9ucyBmb3IgdGhlIHByb2dyYW1taW5nCitsYW5ndWFnZSB5b3UgYXJlIGludGVyZXN0ZWQgaW4gaW4gdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXS4KIAogSWYgd2Ugd2FudGVkIHRvIGFzayBHcmVtbGluIHRoZSBhdmVyYWdlIGFnZSBvZiAidmFkYXMiIGFuZCAibWFya28iIHdlIGNvdWxkIHVzZSB0aGUKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jbWVhbi1zdGVwW21lYW4oKV0gc3RlcCBhcyBmb2xsb3dzOgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJyx3aXRoaW4oJ3ZhZGFzJywnbWFya28nKSkudmFsdWVzKCdhZ2UnKS5tZWFuKCkKK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsd2l0aGluKCd2YWRhcycsJ21hcmtvJykpLnZhbHVlcygnYWdlJykubWVhbigpCiAtLS0tCiAKIEFub3RoZXIgbWV0aG9kIG9mIGZpbHRlcmluZyBpcyBzZWVuIGluIHRoZSB1c2Ugb2YgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jd2hlcmUtc3RlcFt3aGVyZV0KQEAgLTM2Miw3ICszODUsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQogLS0tLQogCiBpbWFnZTpncmVtbGluLW9uLXNvZnR3YXJlLXZlcnRleC5wbmdbd2lkdGg9MzI1LGZsb2F0PXJpZ2h0XSBMZXQncyBleHRlbmQgb24gdGhhdCBxdWVyeSB0byB0cnkgdG8gbGVhcm4gd2hvICJtYXJrbyIKQEAgLTM3MywxMSArMzk2LDExIEBACiAKIFRJUDogVGhlIG5hdHVyZSBvZiBHcmVtbGluIGxlYWRzIHRvIGxvbmcgbGluZXMgb2YgY29kZS4gUmVhZGFiaWxpdHkgY2FuIGJlIGdyZWF0bHkgaW1wcm92ZWQgYnkgdXNpbmcgbGluZSBzcGFjaW5nIGFuZAogaW5kZW50YXRpb24uIFNlZSB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVjaXBlcy8jc3R5bGUtZ3VpZGVbU3R5bGUgR3VpZGVdIGZvciByZWNvbW1lbmRhdGlvbnMKLW9uIHdoYXQgd2VsbCBmb3JtYXR0ZWQgR3JlbWxpbiBzaG91bGQgbG9vayBsaWtlLgorb24gd2hhdCB3ZWxsLWZvcm1hdHRlZCBHcmVtbGluIHNob3VsZCBsb29rIGxpa2UuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCi1nLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS4KICAgb3V0KCdjcmVhdGVkJykuaW4oJ2NyZWF0ZWQnKS4KICAgdmFsdWVzKCduYW1lJykKIC0tLS0KQEAgLTM4OSw3ICs0MTIsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5hcygnZXhjbHVkZScpLgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5hcygnZXhjbHVkZScpLgogICBvdXQoJ2NyZWF0ZWQnKS5pbignY3JlYXRlZCcpLgogICB3aGVyZShuZXEoJ2V4Y2x1ZGUnKSkuCiAgIHZhbHVlcygnbmFtZScpCkBAIC00MDEsMTAgKzQyNCwxMCBAQAogdGhlIGBoYXMoKWAtc3RlcCB3aXRoIHRoZSBuYW1lICJleGNsdWRlIiBhbmQgYWxsIHZhbHVlcyB0aGF0IHBhc3MgdGhyb3VnaCB0aGF0IHN0ZXAgYXJlIGhlbGQgaW4gdGhhdCBsYWJlbCBmb3IgbGF0ZXIKIHVzZS4gSW4gdGhpcyBjYXNlLCB0aGUgIm1hcmtvIiB2ZXJ0ZXggaXMgdGhlIG9ubHkgdmVydGV4IHRvIHBhc3MgdGhyb3VnaCB0aGF0IHBvaW50LCBzbyBpdCBpcyBoZWxkIGluICJleGNsdWRlIi4KIAotVGhlIG90aGVyIGFkZGl0aW9uIHRoYXQgd2FzIG1hZGUgd2FzIHRoZSBgd2hlcmUoKWAtc3RlcCB3aGljaCBpcyBhIGZpbHRlciBzdGVwIGxpa2UgYGhhcygpYC4gVGhlIGB3aGVyZSgpYCBpcworVGhlIG90aGVyIGFkZGl0aW9uIHRoYXQgd2FzIG1hZGUgd2FzIHRoZSBgd2hlcmUoKWAtc3RlcCwgd2hpY2ggaXMgYSBmaWx0ZXIgc3RlcCBsaWtlIGBoYXMoKWAuIFRoZSBgd2hlcmUoKWAgaXMKIHBvc2l0aW9uZWQgYWZ0ZXIgdGhlIGBpbigpYC1zdGVwIHRoYXQgaGFzICJwZXJzb24iIHZlcnRpY2VzLCB3aGljaCBtZWFucyB0aGF0IHRoZSBgd2hlcmUoKWAgZmlsdGVyIGlzIG9jY3VycmluZwogb24gdGhlIGxpc3Qgb2YgIm1hcmtvIiBjb2xsYWJvcmF0b3JzLiBUaGUgYHdoZXJlKClgIHNwZWNpZmllcyB0aGF0IHRoZSAicGVyc29uIiB2ZXJ0aWNlcyBwYXNzaW5nIHRocm91Z2ggaXQgc2hvdWxkCi1ub3QgZXF1YWwgKGkuZS4gYG5lcSgpYCkgdGhlIGNvbnRlbnRzIG9mIHRoZSAiZXhjbHVkZSIgbGFiZWwuIEFzIGl0IGp1c3QgY29udGFpbnMgdGhlICJtYXJrbyIgdmVydGV4LCB0aGUgYHdoZXJlKClgCitub3QgZXF1YWwgKGkuZS4sIGBuZXEoKWApIHRoZSBjb250ZW50cyBvZiB0aGUgImV4Y2x1ZGUiIGxhYmVsLiBBcyBpdCBqdXN0IGNvbnRhaW5zIHRoZSAibWFya28iIHZlcnRleCwgdGhlIGB3aGVyZSgpYAogZmlsdGVycyBvdXQgdGhlICJtYXJrbyIgdGhhdCB3ZSBnZXQgd2hlbiB3ZSB0cmF2ZXJzZSBiYWNrIF9pbl8gb24gdGhlICJjcmVhdGVkIiBlZGdlcy4KIAogWW91IHdpbGwgZmluZCBtYW55IHVzZXMgb2YgYGFzKClgLiBIZXJlIGl0IGlzIGluIGNvbWJpbmF0aW9uIHdpdGggbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNzZWxlY3Qtc3RlcFtzZWxlY3RdOgpAQCAtNDQ2LDQ1ICs0NjksNDUgQEAKIAogPT0gVGhlIEZpbmFsIFRlbiBNaW51dGVzCiAKLUluIHRoZXNlIGZpbmFsIHRlbiBtaW51dGVzIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQgLSBieSBHcmVtbGluXyB3ZSdsbCBsb29rIGF0IFRpbmtlclBvcCBmcm9tIGEgaGlnaGVyIGxldmVsIGFuZAorSW4gdGhlc2UgZmluYWwgdGVuIG1pbnV0ZXMgb2YgX1RoZSBUaW5rZXJQb3AgV29ya291dCDigJQgYnkgR3JlbWxpbl8sIHdlJ2xsIGxvb2sgYXQgVGlua2VyUG9wIGZyb20gYSBoaWdoZXIgbGV2ZWwgYW5kCiBpbnRyb2R1Y2UgZGlmZmVyZW50IGZlYXR1cmVzIGl0IHByb3ZpZGVzIHRvIGhlbHAgb3JpZW50IHlvdSB0byBzb21lIG9mIHRoZSBwcm9qZWN0J3MgdGVjaG5vbG9neSBlY29zeXN0ZW0uIEluIHRoaXMKIHdheSwgeW91IGNhbiBpZGVudGlmeSBhcmVhcyBvZiBpbnRlcmVzdCBhbmQgZGlnIGludG8gdGhlIGRldGFpbHMgZnJvbSB0aGVyZS4KIAogPT09IFdoeSBUaW5rZXJQb3A/CiAKLWltYWdlOnByb3ZpZGVyLWludGVncmF0aW9uLnBuZ1tmbG9hdD1yaWdodCx3aWR0aD0zNTBdIFRoZSBnb2FsIG9mIFRpbmtlclBvcCwgYXMgYSBHcmFwaCBDb21wdXRpbmcgRnJhbWV3b3JrLCBpcyB0byBtYWtlIGl0Ci1lYXN5IGZvciBkZXZlbG9wZXJzIHRvIGNyZWF0ZSBncmFwaCBhcHBsaWNhdGlvbnMgYnkgcHJvdmlkaW5nIEFQSXMgYW5kIHRvb2xzIHRoYXQgc2ltcGxpZnkgdGhlaXIgZW5kZWF2b3JzLiBPbmUgb2YKLXRoZSBmdW5kYW1lbnRhbCBhc3BlY3RzIHRvIHdoYXQgVGlua2VyUG9wIG9mZmVycyBpbiB0aGlzIGFyZWEgbGllcyBpbiB0aGUgZmFjdCB0aGF0IFRpbmtlclBvcCBpcyBhbiBhYnN0cmFjdGlvbiBsYXllcgotb3ZlciBkaWZmZXJlbnQgZ3JhcGggZGF0YWJhc2VzIGFuZCBkaWZmZXJlbnQgZ3JhcGggcHJvY2Vzc29ycy4gQXMgYW4gYWJzdHJhY3Rpb24gbGF5ZXIsIFRpbmtlclBvcCBwcm92aWRlcyBhIHdheSB0bwotYXZvaWQgdmVuZG9yIGxvY2staW4gdG8gYSBzcGVjaWZpYyBkYXRhYmFzZSBvciBwcm9jZXNzb3IuIFRoaXMgY2FwYWJpbGl0eSBwcm92aWRlcyBpbW1lbnNlIHZhbHVlIHRvIGRldmVsb3BlcnMgd2hvCitpbWFnZTpwcm92aWRlci1pbnRlZ3JhdGlvbi5wbmdbZmxvYXQ9cmlnaHQsd2lkdGg9MzUwXSBUaGUgZ29hbCBvZiBUaW5rZXJQb3AsIGFzIGEgR3JhcGggQ29tcHV0aW5nIEZyYW1ld29yaywgaXMgdG8KK21ha2UgaXQgZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBjcmVhdGUgZ3JhcGggYXBwbGljYXRpb25zIGJ5IHByb3ZpZGluZyBBUElzIGFuZCB0b29scyB0aGF0IHNpbXBsaWZ5IHRoZWlyIGVuZGVhdm9ycy4KK09uZSBvZiB0aGUgZnVuZGFtZW50YWwgYXNwZWN0cyB0byB3aGF0IFRpbmtlclBvcCBvZmZlcnMgaW4gdGhpcyBhcmVhIGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBUaW5rZXJQb3AgaXMgYW4gYWJzdHJhY3Rpb24KK2xheWVyIG92ZXIgZGlmZmVyZW50IGdyYXBoIGRhdGFiYXNlcyBhbmQgZGlmZmVyZW50IGdyYXBoIHByb2Nlc3NvcnMuIEFzIGFuIGFic3RyYWN0aW9uIGxheWVyLCBUaW5rZXJQb3AgcHJvdmlkZXMgYSB3YXkKK3RvIGF2b2lkIHZlbmRvciBsb2NrLWluIHRvIGEgc3BlY2lmaWMgZGF0YWJhc2Ugb3IgcHJvY2Vzc29yLiBUaGlzIGNhcGFiaWxpdHkgcHJvdmlkZXMgaW1tZW5zZSB2YWx1ZSB0byBkZXZlbG9wZXJzIHdobwogYXJlIHRodXMgYWZmb3JkZWQgb3B0aW9ucyBpbiB0aGVpciBhcmNoaXRlY3R1cmUgYW5kIGRldmVsb3BtZW50IGJlY2F1c2U6CiAKICogVGhleSBjYW4gdHJ5IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgdGhlIHNhbWUgY29kZSB0byBkZWNpZGUgd2hpY2ggaXMgYmVzdCBmb3IgdGhlaXIgZW52aXJvbm1lbnQuCi0qIFRoZXkgY2FuIGdyb3cgaW50byBhIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gaWYgdGhleSBzbyBkZXNpcmUgLSBzdGFydCB3aXRoIGEgZ3JhcGggdGhhdCBpcyBkZXNpZ25lZCB0byBzY2FsZQorKiBUaGV5IGNhbiBncm93IGludG8gYSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uIGlmIHRoZXkgc28gZGVzaXJlOyBlLmcuLCBzdGFydCB3aXRoIGEgZ3JhcGggdGhhdCBpcyBkZXNpZ25lZCB0byBzY2FsZQogd2l0aGluIGEgc2luZ2xlIG1hY2hpbmUgYW5kIHRoZW4gbGF0ZXIgc3dpdGNoIHRvIGEgZ3JhcGggdGhhdCBpcyBkZXNpZ25lZCB0byBzY2FsZSBob3Jpem9udGFsbHkuCiAqIFRoZXkgY2FuIGZlZWwgbW9yZSBjb25maWRlbnQgaW4gZ3JhcGggdGVjaG5vbG9neSBjaG9pY2VzLCBhcyBhZHZhbmNlcyBpbiB0aGUgc3RhdGUgb2YgZGlmZmVyZW50IHByb3ZpZGVyCiBpbXBsZW1lbnRhdGlvbnMgYXJlIGJlaGluZCBUaW5rZXJQb3AgQVBJcywgd2hpY2ggb3BlbiB0aGUgcG9zc2liaWxpdHkgdG8gc3dpdGNoIHByb3ZpZGVycyB3aXRoIGxpbWl0ZWQgaW1wYWN0LgogCiBUaW5rZXJQb3AgaGFzIGFsd2F5cyBoYWQgdGhlIHZpc2lvbiBvZiBiZWluZyBhbiBhYnN0cmFjdGlvbiBvdmVyIGRpZmZlcmVudCBncmFwaCBkYXRhYmFzZXMuIFRoYXQgbXVjaAotaXMgbm90IG5ldyBhbmQgZGF0ZXMgYmFjayB0byBUaW5rZXJQb3AgMS54LiBJdCBpcyBpbiBUaW5rZXJQb3AgMy54IGhvd2V2ZXIgdGhhdCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgbm90aW9uCi10aGF0IFRpbmtlclBvcCBpcyBhbHNvIGFuIGFic3RyYWN0aW9uIG92ZXIgZGlmZmVyZW50IGdyYXBoIHByb2Nlc3NvcnMgbGlrZSBsaW5rOmh0dHA6Ly9zcGFyay5hcGFjaGUub3JnW1NwYXJrXSBhbmQKLWxpbms6aHR0cDovL2dpcmFwaC5hcGFjaGUub3JnL1tHaXJhcGhdLiBUaGUgc2NvcGUgb2YgdGhpcyB0dXRvcmlhbCBkb2VzIG5vdCBwZXJtaXQgaXQgdG8gZGVsdmUgaW50bwotImdyYXBoIHByb2Nlc3NvcnMiLCBidXQgdGhlIHNob3J0IHN0b3J5IGlzIHRoYXQgdGhlIHNhbWUgR3JlbWxpbiBzdGF0ZW1lbnQgd2Ugd3JvdGUgaW4gdGhlIGV4YW1wbGVzIGFib3ZlIGNhbiBiZQotZXhlY3V0ZWQgdG8gcnVuIGluIGRpc3RyaWJ1dGVkIGZhc2hpb24gb3ZlciBTcGFyayBvciBIYWRvb3AuIFRoZSBjaGFuZ2VzIHJlcXVpcmVkIHRvIHRoZSBjb2RlIHRvIGRvIHRoaXMgYXJlIG5vdAotaW4gdGhlIHRyYXZlcnNhbCBpdHNlbGYsIGJ1dCBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYFRyYXZlcnNhbFNvdXJjZWAuIFlvdSBjYW4gYWdhaW4gc2VlIHdoeSB3ZSBlbmNvdXJhZ2UgZ3JhcGgKLW9wZXJhdGlvbnMgdG8gYmUgZXhlY3V0ZWQgdGhyb3VnaCB0aGF0IGNsYXNzIGFzIG9wcG9zZWQgdG8ganVzdCB1c2luZyBgR3JhcGhgLiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGVzZQotZmVhdHVyZXMgaW4gdGhpcyBzZWN0aW9uIG9uIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jaGFkb29wLWdyZW1saW5baGFkb29wLWdyZW1saW5dLgoraXMgbm90IG5ldyBhbmQgZGF0ZXMgYmFjayB0byBUaW5rZXJQb3AgMS54LiBJdCBpcyBpbiBUaW5rZXJQb3AgMy54LCBob3dldmVyLCB0aGF0IHdlIHNlZSB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBub3Rpb24KK3RoYXQgVGlua2VyUG9wIGlzIGFsc28gYW4gYWJzdHJhY3Rpb24gb3ZlciBkaWZmZXJlbnQgZ3JhcGggcHJvY2Vzc29ycyBsaWtlIGxpbms6aHR0cDovL3NwYXJrLmFwYWNoZS5vcmdbU3BhcmtdLiBUaGUKK3Njb3BlIG9mIHRoaXMgdHV0b3JpYWwgZG9lcyBub3QgcGVybWl0IGl0IHRvIGRlbHZlIGludG8gImdyYXBoIHByb2Nlc3NvcnMiLCBidXQgdGhlIHNob3J0IHN0b3J5IGlzIHRoYXQgdGhlIHNhbWUKK0dyZW1saW4gc3RhdGVtZW50IHdlIHdyb3RlIGluIHRoZSBleGFtcGxlcyBhYm92ZSBjYW4gYmUgZXhlY3V0ZWQgdG8gcnVuIGluIGRpc3RyaWJ1dGVkIGZhc2hpb24gb3ZlciBTcGFyayBvciBIYWRvb3AuCitUaGUgY2hhbmdlcyByZXF1aXJlZCB0byB0aGUgY29kZSB0byBkbyB0aGlzIGFyZSBub3QgaW4gdGhlIHRyYXZlcnNhbCBpdHNlbGYsIGJ1dCBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKK2BUcmF2ZXJzYWxTb3VyY2VgLiBZb3UgY2FuIGFnYWluIHNlZSB3aHkgd2UgZW5jb3VyYWdlIGdyYXBoIG9wZXJhdGlvbnMgdG8gYmUgZXhlY3V0ZWQgdGhyb3VnaCB0aGF0IGNsYXNzIGFzIG9wcG9zZWQKK3RvIGp1c3QgdXNpbmcgYEdyYXBoYC4gWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhlc2UgZmVhdHVyZXMgaW4gdGhpcyBzZWN0aW9uIG9uCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2hhZG9vcC1ncmVtbGluW2hhZG9vcC1ncmVtbGluXS4KIAotVElQOiBUbyBtYWludGFpbiBhbiBhYnN0cmFjdGlvbiBvdmVyIGBHcmFwaGAgY3JlYXRpb24gdXNlIGBHcmFwaEZhY3Rvcnkub3BlbigpYCB0byBjb25zdHJ1Y3QgbmV3IGluc3RhbmNlcy4gU2VlCitUSVA6IFRvIG1haW50YWluIGFuIGFic3RyYWN0aW9uIG92ZXIgYEdyYXBoYCBjcmVhdGlvbiwgdXNlIGBHcmFwaEZhY3Rvcnkub3BlbigpYCB0byBjb25zdHJ1Y3QgbmV3IGluc3RhbmNlcy4gU2VlCiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgaW5kaXZpZHVhbCBgR3JhcGhgIGltcGxlbWVudGF0aW9ucyB0byBsZWFybiBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHByb3ZpZGUuCiAKID09PSBMb2FkaW5nIERhdGEKIAogaW1hZ2U6Z3JlbWxpbi10by10aGUtNy5wbmdbd2lkdGg9MTAwLGZsb2F0PWxlZnRdIFRoZXJlIGFyZSBtYW55IHN0cmF0ZWdpZXMgZm9yIGdldHRpbmcgZGF0YSBpbnRvIHlvdXIgZ3JhcGguIEFzIHlvdSBhcmUKLWp1c3QgZ2V0dGluZyBzdGFydGVkLCBsZXQncyBsb29rIGF0IHRoZSBtb3JlIHNpbXBsZSBtZXRob2RzIGFpbWVkIGF0ICJzbWFsbGVyIiBncmFwaHMuIEEgInNtYWxsIiBncmFwaCwgaW4gdGhpcworanVzdCBnZXR0aW5nIHN0YXJ0ZWQsIGxldCdzIGxvb2sgYXQgdGhlIHNpbXBsZXIgbWV0aG9kcyBhaW1lZCBhdCAic21hbGxlciIgZ3JhcGhzLiBBICJzbWFsbCIgZ3JhcGgsIGluIHRoaXMKIGNvbnRleHQsIGlzIG9uZSB0aGF0IGhhcyBmZXdlciB0aGFuIHRlbiBtaWxsaW9uIGVkZ2VzLiBUaGUgbW9zdCBkaXJlY3Qgd2F5IHRvIGxvYWQgdGhpcyBkYXRhIGlzIHRvIHdyaXRlIGEgR3Jvb3Z5IHNjcmlwdAogdGhhdCBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIEdyZW1saW4gQ29uc29sZSwgYSB0b29sIHRoYXQgeW91IHNob3VsZCBiZSB3ZWxsIGZhbWlsaWFyIHdpdGggYXQgdGhpcyBwb2ludC4gRm9yIG91cgotZXhhbXBsZSwgbGV0J3MgdXNlIHRoZSBsaW5rOmh0dHA6Ly9zbmFwLnN0YW5mb3JkLmVkdS9kYXRhL3dpa2ktVm90ZS5odG1sW1dpa2lwZWRpYSBWb3RlIE5ldHdvcmtdIGRhdGEgc2V0IHdoaWNoCitleGFtcGxlLCBsZXQncyB1c2UgdGhlIGxpbms6aHR0cDovL3NuYXAuc3RhbmZvcmQuZWR1L2RhdGEvd2lraS1Wb3RlLmh0bWxbV2lraXBlZGlhIFZvdGUgTmV0d29ya10gZGF0YSBzZXQsIHdoaWNoCiBjb250YWlucyA3LDExNSB2ZXJ0aWNlcyBhbmQgMTAzLDY4OSBlZGdlcy4KIAogW3NvdXJjZSx0ZXh0XQpAQCAtNDkzLDcgKzUxNiw3IEBACiAkIGd1bnppcCB3aWtpLVZvdGUudHh0Lmd6CiAtLS0tCiAKLVRoZSBkYXRhIGlzIGNvbnRhaW5lZCBpbiBhIHRhYi1kZWxpbWl0ZWQgc3RydWN0dXJlIHdoZXJlIHZlcnRpY2VzIGFyZSBXaWtpcGVkaWEgdXNlcnMgYW5kIGVkZ2VzIGZyb20gb25lIHVzZXIgdG8KK1RoZSBkYXRhIGlzIGNvbnRhaW5lZCBpbiBhIHRhYi1kZWxpbWl0ZWQgc3RydWN0dXJlIGluIHdoaWNoIHZlcnRpY2VzIGFyZSBXaWtpcGVkaWEgdXNlcnMgYW5kIGVkZ2VzIGZyb20gb25lIHVzZXIgdG8KIGFub3RoZXIgaW1wbHkgYSAidm90ZSIgcmVsYXRpb25zaGlwLiBIZXJlIGlzIHRoZSBzY3JpcHQgdG8gcGFyc2UgdGhlIGZpbGUgYW5kIGdlbmVyYXRlIHRoZSBgR3JhcGhgIGluc3RhbmNlIHVzaW5nCiBUaW5rZXJHcmFwaDoKIApAQCAtNTA1LDcgKzUyOCw3IEBACiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKIAogZ2V0T3JDcmVhdGUgPSB7IGlkIC0+Ci0gIGcuVigpLmhhcygndXNlcklkJywgaWQpLgorICBnLlYoKS5oYXMoJ3VzZXInLCd1c2VySWQnLCBpZCkuCiAgICAgZm9sZCgpLgogICAgIGNvYWxlc2NlKHVuZm9sZCgpLAogICAgICAgICAgICAgIGFkZFYoJ3VzZXInKS5wcm9wZXJ0eSgndXNlcklkJywgaWQpKS5uZXh0KCkgIDwyPgpAQCAtNTIxLDEzICs1NDQsMTMgQEAKIAogPDE+IFRvIGVuc3VyZSBmYXN0IGxvb2t1cHMgb2YgdmVydGljZXMsIHdlIG5lZWQgYW4gaW5kZXguIFRoZSBgY3JlYXRlSW5kZXgoKWAgbWV0aG9kIGlzIGEgbWV0aG9kIG5hdGl2ZSB0bwogVGlua2VyR3JhcGguIFBsZWFzZSBjb25zdWx0IHlvdXIgZ3JhcGggZGF0YWJhc2VzJyBkb2N1bWVudGF0aW9uIGZvciB0aGVpciBpbmRleCBjcmVhdGlvbiBhcHByb2FjaGVzLgotPDI+IFRoaXMgImdldCBvciBjcmVhdGUiIHRyYXZlcnNhbCBnZXRzIGEgYSB2ZXJ0ZXggaWYgaXQgYWxyZWFkeSBleGlzdHM7IG90aGVyd2lzZSwgaXQgY3JlYXRlcyBpdC4gSXQgdXNlcyBgY29hbGVzY2UoKWAgaW4KLWEgY2xldmVyIHdheSBieSBmaXJzdCBkZXRlcm1pbmluZyBpZiB0aGUgbGlzdCBvZiB2ZXJ0aWNlcyBwcm9kdWNlZCBieSB0aGUgcHJldmlvdXMgYGZvbGQoKWAgaGFzIGFueXRoaW5nIGluIGl0IGJ5Cis8Mj4gVGhpcyAiZ2V0IG9yIGNyZWF0ZSIgdHJhdmVyc2FsIGdldHMgYSB2ZXJ0ZXggaWYgaXQgYWxyZWFkeSBleGlzdHM7IG90aGVyd2lzZSwgaXQgY3JlYXRlcyBpdC4gSXQgdXNlcyBgY29hbGVzY2UoKWAgaW4KK2EgY2xldmVyIHdheSBieSBmaXJzdCBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBsaXN0IG9mIHZlcnRpY2VzIHByb2R1Y2VkIGJ5IHRoZSBwcmV2aW91cyBgZm9sZCgpYCBoYXMgYW55dGhpbmcgaW4gaXQgYnkKIHRlc3RpbmcgdGhlIHJlc3VsdCBvZiBgdW5mb2xkKClgLiBJZiBgdW5mb2xkKClgIHJldHVybnMgbm90aGluZyB0aGVuIHRoYXQgdmVydGV4IGRvZXNuJ3QgZXhpc3QgYW5kIHRoZSBzdWJzZXF1ZW50CiBgYWRkVigpYCBpbm5lciB0cmF2ZXJzYWwgY2FuIGJlIGNhbGxlZCB0byBjcmVhdGUgaXQuCiA8Mz4gV2UgYXJlIGl0ZXJhdGluZyBlYWNoIGxpbmUgb2YgdGhlIGB3aWtpLVZvdGUudHh0YCBmaWxlIGFuZCB0aGlzIGxpbmUgc3BsaXRzIHRoZSBsaW5lIG9uIHRoZSBkZWxpbWl0ZXIsIHRoZW4KIHVzZXMgc29tZSBuZWF0IEdyb292eSBzeW50YXggdG8gYXBwbHkgdGhlIGBnZXRPckNyZWF0ZSgpYCBmdW5jdGlvbiB0byBlYWNoIG9mIHRoZSB0d28gYHVzZXJJZGAgZmllbGRzIGVuY291bnRlcmVkIGluCi10aGUgbGluZSBhbmQgc3RvcmVzIHRob3NlIHZlcnRpY2VzIGluIHRoZSBgZnJvbVZlcnRleGAgYW5kIGB0b1ZlcnRleGAgdmFyaWFibGVzIHJlc3BlY3RpdmVseS4KK3RoZSBsaW5lIGFuZCBzdG9yZXMgdGhvc2UgdmVydGljZXMgaW4gdGhlIGBmcm9tVmVydGV4YCBhbmQgYHRvVmVydGV4YCB2YXJpYWJsZXMsIHJlc3BlY3RpdmVseS4KIAogTk9URTogV2hpbGUgdGhpcyBpcyBhIHRhYi1kZWxpbWl0ZWQgc3RydWN0dXJlLCB0aGlzIHNhbWUgcGF0dGVybiBjYW4gYmUgYXBwbGllZAogdG8gYW55IGRhdGEgc291cmNlIHlvdSByZXF1aXJlIGFuZCBHcm9vdnkgdGVuZHMgdG8gaGF2ZSBuaWNlIGxpYnJhcmllcyB0aGF0IGNhbiBoZWxwIG1ha2Ugd29ya2luZyB3aXRoIGRhdGEKQEAgLTUzNSw3ICs1NTgsNyBAQAogCiBXQVJOSU5HOiBUYWtlIGNhcmUgaWYgdXNpbmcgYSBgR3JhcGhgIGltcGxlbWVudGF0aW9uIHRoYXQgc3VwcG9ydHMKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdHJhbnNhY3Rpb25zW3RyYW5zYWN0aW9uc10uIEFzIFRpbmtlckdyYXBoIGRvZXMgbm90LCB0aGVyZSBpcwotbm8gbmVlZCB0byBgY29tbWl0KClgLiAgSWYgeW91ciBgR3JhcGhgIGRvZXMgc3VwcG9ydCB0cmFuc2FjdGlvbnMsIGludGVybWVkaWF0ZSBjb21taXRzIGR1cmluZyBsb2FkIHdpbGwgbmVlZCB0byBiZQorbm8gbmVlZCB0byBgY29tbWl0KClgLiBJZiB5b3VyIGBHcmFwaGAgZG9lcyBzdXBwb3J0IHRyYW5zYWN0aW9ucywgaW50ZXJtZWRpYXRlIGNvbW1pdHMgZHVyaW5nIGxvYWQgd2lsbCBuZWVkIHRvIGJlCiBhcHBsaWVkLgogCiBUbyBsb2FkIGxhcmdlciBkYXRhIHNldHMgeW91IHNob3VsZCByZWFkIGFib3V0IHRoZQpAQCAtNTQzLDczICs1NjYsNTAgQEAKIGdlbmVyYWxpemVkIG1ldGhvZCBmb3IgbG9hZGluZyBncmFwaHMgb2YgdmlydHVhbGx5IGFueSBzaXplIGFuZCBjb25zaWRlciB0aGUgbmF0aXZlIGJ1bGsgbG9hZGluZyBmZWF0dXJlcyBvZiB0aGUKIHVuZGVybHlpbmcgZ3JhcGggZGF0YWJhc2UgdGhhdCB5b3UndmUgY2hvc2VuLgogCi09PT0gR3JlbWxpbiBTZXJ2ZXIKKz09PSBHcmVtbGluIGluIE90aGVyIFByb2dyYW1taW5nIExhbmd1YWdlcwogCi1pbWFnZTpncmVtbGluLXNlcnZlci1wcm90b2NvbC5wbmdbd2lkdGg9MzI1LGZsb2F0PXJpZ2h0XSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tc2VydmVyW0dyZW1saW4gU2VydmVyXQotcHJvdmlkZXMgYSB3YXkgdG8gcmVtb3RlbHkgZXhlY3V0ZSBHcmVtbGluIHNjcmlwdHMgYWdhaW5zdCBvbmUgb3IgbW9yZSBgR3JhcGhgIGluc3RhbmNlcyBob3N0ZWQgd2l0aGluIGl0LiBJdCBkb2VzCi10aGlzIGJ5IGV4cG9zaW5nIGRpZmZlcmVudCBlbmRwb2ludHMsIHN1Y2ggYXMgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNfY29ubmVjdGluZ192aWFfaHR0cFtIVFRQXQotYW5kIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtamF2YVtXZWJTb2NrZXRdLCB3aGljaCBhbGxvdyBhIHJlcXVlc3QKLWNvbnRhaW5pbmcgYSBHcmVtbGluIHNjcmlwdCB0byBiZSBwcm9jZXNzZWQgd2l0aCByZXN1bHRzIHJldHVybmVkLgorVGhpcyB0dXRvcmlhbCBmb2N1c2VkIG9uIEdyZW1saW4gdXNhZ2Ugd2l0aGluIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvW0dyZW1saW4gQ29uc29sZV0gd2hpY2ggbWVhbnMgdGhhdCB0aGUKK2V4YW1wbGVzIHdlcmUgR3Jvb3Z5LWJhc2VkIGFuZCBvcmllbnRlZCB0b3dhcmQgdGhlIEpWTS4gR3JlbWxpbiwgaG93ZXZlciwgaXMgZmFyIGZyb20gYmVpbmcgYSBKYXZhLW9ubHkgbGlicmFyeS4KK1RpbmtlclBvcCBuYXRpdmVseSBzdXBwb3J0cyBhIG51bWJlciBvZiBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLCBtYWtpbmcgaXQgcG9zc2libGUgdG8gZXhlY3V0ZSBhbGwgb2YgdGhlCitleGFtcGxlcyBwcmVzZW50ZWQgaW4gdGhpcyB0dXRvcmlhbCB3aXRoIGxpdHRsZSBtb2RpZmljYXRpb24uIFRoZXNlIGRpZmZlcmVudCBsYW5ndWFnZSBpbXBsZW1lbnRhdGlvbnMgb2YgR3JlbWxpbiBhcmUKK3JlZmVycmVkIHRvIGFzIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzW0dyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHNdIGFuZAordGhleSBoZWxwIG1ha2UgR3JlbWxpbiBtb3JlIGFjY2Vzc2libGUgYW5kIGVhc2llciB0byB1c2UgZm9yIHRob3NlIHdobyBkbyBub3QgdXNlIEphdmEgYXMgdGhlaXIgcHJpbWFyeSBwcm9ncmFtbWluZworbGFuZ3VhZ2UuCiAKLVtzb3VyY2UsdGV4dF0KK1tncmVtbGluLWdyb292eV0KIC0tLS0KLSQgY3VybCAtTCAtTyBodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wL3gueS56L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXIteC55LnotYmluLnppcAotJCB1bnppcCBhcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLXgueS56LWJpbi56aXAKLSQgY2QgYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci14LnkuegotJCBiaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggY29uZi9ncmVtbGluLXNlcnZlci1yZXN0LW1vZGVybi55YW1sCi1bSU5GT10gR3JlbWxpblNlcnZlciAtCi0gICAgICAgICBcLCwsLwotICAgICAgICAgKG8gbykKLS0tLS0tb09Pby0oMyktb09Pby0tLS0tCi0KLVtJTkZPXSBHcmVtbGluU2VydmVyIC0gQ29uZmlndXJpbmcgR3JlbWxpbiBTZXJ2ZXIgZnJvbSBjb25mL2dyZW1saW4tc2VydmVyLXJlc3QtbW9kZXJuLnlhbWwKLS4uLgotW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIENoYW5uZWwgc3RhcnRlZCBhdCBwb3J0IDgxODIuCit2MSA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdtYXJrbycpLm5leHQoKQordjIgPSBnLmFkZFYoJ3BlcnNvbicpLnByb3BlcnR5KCduYW1lJywnc3RlcGhlbicpLm5leHQoKQorZy5WKHYxKS5hZGRFKCdrbm93cycpLnRvKHYyKS5wcm9wZXJ0eSgnd2VpZ2h0JywwLjc1KS5pdGVyYXRlKCkKIC0tLS0KLQotW3NvdXJjZSx0ZXh0XQotJCBjdXJsIC1YIFBPU1QgLWQgIntcImdyZW1saW5cIjpcImcuVih4KS5vdXQoKS52YWx1ZXMoJ25hbWUnKVwiLCBcImxhbmd1YWdlXCI6XCJncmVtbGluLWdyb292eVwiLCBcImJpbmRpbmdzXCI6e1wieFwiOjF9fSIgImh0dHA6Ly9sb2NhbGhvc3Q6ODE4MiIKLQotW3NvdXJjZSxqc29uXQorW3NvdXJjZSxjc2hhcnBdCiAtLS0tCi17Ci0JInJlcXVlc3RJZCI6ICJmNjdkYmZmZi1iMzNhLTRhZTMtODQyZC1jNmU3Yzk3YjI0NmIiLAotCSJzdGF0dXMiOiB7Ci0JCSJtZXNzYWdlIjogIiIsCi0JCSJjb2RlIjogMjAwLAotCQkiYXR0cmlidXRlcyI6IHsKLQkJCSJAdHlwZSI6ICJnOk1hcCIsCi0JCQkiQHZhbHVlIjogW10KLQkJfQotCX0sCi0JInJlc3VsdCI6IHsKLQkJImRhdGEiOiB7Ci0JCQkiQHR5cGUiOiAiZzpMaXN0IiwKLQkJCSJAdmFsdWUiOiBbImxvcCIsICJ2YWRhcyIsICJqb3NoIl0KLQkJfSwKLQkJIm1ldGEiOiB7Ci0JCQkiQHR5cGUiOiAiZzpNYXAiLAotCQkJIkB2YWx1ZSI6IFtdCi0JCX0KLQl9Ci19CitWZXJ0ZXggdjEgPSBnLkFkZFYoInBlcnNvbiIpLlByb3BlcnR5KCJuYW1lIiwibWFya28iKS5OZXh0KCk7CitWZXJ0ZXggdjIgPSBnLkFkZFYoInBlcnNvbiIpLlByb3BlcnR5KCJuYW1lIiwic3RlcGhlbiIpLk5leHQoKTsKK2cuVih2MSkuQWRkRSgia25vd3MiKS5Ubyh2MikuUHJvcGVydHkoIndlaWdodCIsMC43NSkuSXRlcmF0ZSgpOwogLS0tLQotCi1JTVBPUlRBTlQ6IFRha2UgY2FyZWZ1bCBub3RlIG9mIHRoZSB1c2Ugb2YgImJpbmRpbmdzIiBpbiB0aGUgYXJndW1lbnRzIG9uIHRoZSByZXF1ZXN0LiBUaGVzZSBhcmUgdmFyaWFibGVzIHRoYXQgYXJlCi1hcHBsaWVkIHRvIHRoZSBzY3JpcHQgb24gZXhlY3V0aW9uIGFuZCBpcyBlc3NlbnRpYWxseSBhIHdheSB0byBwYXJhbWV0ZXJpemUgeW91ciBzY3JpcHRzLiBUaGlzICJwYXJhbWV0ZXJpemF0aW9uIiBpcwotY3JpdGljYWwgdG8gbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNfYmVzdF9wcmFjdGljZXNbcGVyZm9ybWFuY2VdLiAgV2hlbmV2ZXIKLXBvc3NpYmxlLCBwYXJhbWV0ZXJpemUgeW91ciBxdWVyaWVzLgotCi1BcyBtZW50aW9uZWQgZWFybGllciwgR3JlbWxpbiBTZXJ2ZXIgY2FuIGFsc28gYmUgY29uZmlndXJlZCB3aXRoIGEgV2ViU29ja2V0IGVuZHBvaW50LiBUaGlzIGVuZHBvaW50IGhhcyBhbgotZW1iZWRkZWQgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L3Byb3ZpZGVyLyNfZ3JhcGhfZHJpdmVyX3Byb3ZpZGVyX3JlcXVpcmVtZW50c1tzdWJwcm90b2NvbF0gdGhhdCBhbGxvdyBhCi1jb21wbGlhbnQgZHJpdmVyIHRvIGNvbW11bmljYXRlIHdpdGggaXQuICBUaW5rZXJQb3Agc3VwcGxpZXMgYQotbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLXZpYS1qYXZhW3JlZmVyZW5jZSBkcml2ZXJdIHdyaXR0ZW4gaW4gSmF2YSwgYnV0Ci10aGVyZSBhcmUgZHJpdmVycyBkZXZlbG9wZWQgYnkgYm90aCBUaW5rZXJQb3AgYW5kIHRoaXJkLXBhcnRpZXMgZm9yIG90aGVyIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy8jbGFuZ3VhZ2UtZHJpdmVyc1tsYW5ndWFnZXNdCi1zdWNoIGFzIFB5dGhvbiwgSmF2YXNjcmlwdCwgZXRjLiBHcmVtbGluIFNlcnZlciB0aGVyZWZvcmUgcmVwcmVzZW50cyB0aGUgbWV0aG9kIGJ5IHdoaWNoIG5vbi1KVk0gbGFuZ3VhZ2VzIGNhbgotaW50ZXJhY3Qgd2l0aCBUaW5rZXJQb3AuCitbc291cmNlLGphdmFdCistLS0tCitWZXJ0ZXggdjEgPSBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJuYW1lIiwibWFya28iKS5uZXh0KCk7CitWZXJ0ZXggdjIgPSBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJuYW1lIiwic3RlcGhlbiIpLm5leHQoKTsKK2cuVih2MSkuYWRkRSgia25vd3MiKS50byh2MikucHJvcGVydHkoIndlaWdodCIsMC43NSkuaXRlcmF0ZSgpOworLS0tLQorW3NvdXJjZSxqYXZhc2NyaXB0XQorLS0tLQorY29uc3QgdjEgPSBnLmFkZFYoJ3BlcnNvbicpLnByb3BlcnR5KCduYW1lJywnbWFya28nKS5uZXh0KCk7Citjb25zdCB2MiA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpOworZy5WKHYxKS5hZGRFKCdrbm93cycpLnRvKHYyKS5wcm9wZXJ0eSgnd2VpZ2h0JywwLjc1KS5pdGVyYXRlKCk7CistLS0tCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK3YxID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ21hcmtvJykubmV4dCgpCit2MiA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpCitnLlYodjEpLmFkZEUoJ2tub3dzJykudG8odjIpLnByb3BlcnR5KCd3ZWlnaHQnLDAuNzUpLml0ZXJhdGUoKQorLS0tLQogCiA9PT0gQ29uY2x1c2lvbgogCi0uLi5hbmQgdGhhdCBpcyB0aGUgZW5kIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQgLSBieSBHcmVtbGluXy4gWW91IGFyZSBob3BlZnVsbHkgZmVlbGluZyBtb3JlIGNvbmZpZGVudCBpbiB5b3VyCisuLi5hbmQgdGhhdCBpcyB0aGUgZW5kIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQg4oCUIGJ5IEdyZW1saW5fLiBZb3UgYXJlIGhvcGVmdWxseSBmZWVsaW5nIG1vcmUgY29uZmlkZW50IGluIHlvdXIKIFRpbmtlclBvcCBza2lsbHMgYW5kIGhhdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHdoYXQgdGhlIHN0YWNrIGhhcyB0byBvZmZlciwgYXMgd2VsbCBhcyBzb21lIGVudHJ5IHBvaW50cyB0byBmdXJ0aGVyCiByZXNlYXJjaCB3aXRoaW4gdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uLiBXZWxjb21lIHRvIFRoZSBUaW5rZXJQb3AhCmRpZmYgLS1naXQgYS9kb2NzL3NyYy90dXRvcmlhbHMvZ3JlbWxpbi1sYW5ndWFnZS12YXJpYW50cy9pbmRleC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL2luZGV4LmFzY2lpZG9jCmluZGV4IDI3YTU4YmYuLmYxN2ZhNmMgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL2luZGV4LmFzY2lpZG9jCkBAIC0zMiwxNSArMzIsMTUgQEAKIAogaW1hZ2U6OmdyZW1saW4taG91c2Utb2YtbWlycm9ycy5wbmdbd2lkdGg9MTAyNF0KIAotV0FSTklORzogVGhpcyBpcyBhbiBhZHZhbmNlZCB0dXRvcmlhbCBpbnRlbmRlZCBmb3IgZXhwZXJ0cyBrbm93bGVkZ2VhYmxlIGluIEdyZW1saW4gaW4gcGFydGljdWxhciBhbmQgVGlua2VyUG9wIGluIGdlbmVyYWwuCi1Nb3Jlb3ZlciwgdGhlIGF1ZGllbmNlIHNob3VsZCB1bmRlcnN0YW5kIGFkdmFuY2VkIHByb2dyYW1taW5nIGxhbmd1YWdlIGNvbmNlcHRzIHN1Y2ggYXMgcmVmbGVjdGlvbiwgbWV0YS1wcm9ncmFtbWluZywKLXNvdXJjZSBjb2RlIGdlbmVyYXRpb24sIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLgorV0FSTklORzogVGhpcyBpcyBhbiBhZHZhbmNlZCB0dXRvcmlhbCBpbnRlbmRlZCBmb3IgZXhwZXJ0cyBrbm93bGVkZ2VhYmxlIGluIEdyZW1saW4gaW4gcGFydGljdWxhciBhbmQgVGlua2VyUG9wIGluCitnZW5lcmFsLiBNb3Jlb3ZlciwgdGhlIGF1ZGllbmNlIHNob3VsZCB1bmRlcnN0YW5kIGFkdmFuY2VkIHByb2dyYW1taW5nIGxhbmd1YWdlIGNvbmNlcHRzIHN1Y2ggYXMgcmVmbGVjdGlvbiwKK21ldGEtcHJvZ3JhbW1pbmcsIHNvdXJjZSBjb2RlIGdlbmVyYXRpb24sIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLgogCiBbc291cmNlLGphdmFdCiAtLS0tCiBwdWJsaWMgY2xhc3MgTXlBcHBsaWNhdGlvbiB7CiAKLSAgcHVibGljIHN0YXRpYyB2b2lkIHJ1bihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBydW4oU3RyaW5nW10gYXJncykgewogCiAgICAgLy8gYXNzdW1lcyBhcmdzWzBdIGlzIGEgY29uZmlndXJhdGlvbiBmaWxlIGxvY2F0aW9uCiAgICAgR3JhcGggZ3JhcGggPSBHcmFwaEZhY3Rvcnkub3BlbihhcmdzWzBdKTsKQEAgLTYyLDggKzYyLDggQEAKIC0tLS0KIAogSW4gcXVlcnkgbGFuZ3VhZ2VzIGxpa2UgbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUUxbU1FMXSwgdGhlIHVzZXIgbXVzdCBjb25zdHJ1Y3QgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YKLXRoZWlyIHF1ZXJ5IGFuZCBzdWJtaXQgaXQgdG8gdGhlIGRhdGFiYXNlIGZvciBldmFsdWF0aW9uLiBUaGlzIGlzIGJlY2F1c2UgU1FMIGNhbm5vdCBiZSBleHByZXNzZWQgaW4gSmF2YSBhcyB0aGV5IHVzZSBmdW5kYW1lbnRhbGx5Ci1kaWZmZXJlbnQgY29uc3RydWN0cyBpbiB0aGVpciBleHByZXNzaW9uLiBUaGUgc2FtZSBleGFtcGxlIGFib3ZlIGlzIHByZXNlbnRlZCBiZWxvdyB1c2luZyBTUUwgYW5kIHRoZQordGhlaXIgcXVlcnkgYW5kIHN1Ym1pdCBpdCB0byB0aGUgZGF0YWJhc2UgZm9yIGV2YWx1YXRpb24uIFRoaXMgaXMgYmVjYXVzZSBTUUwgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiBKYXZhIGFzIHRoZXkgdXNlCitmdW5kYW1lbnRhbGx5IGRpZmZlcmVudCBjb25zdHJ1Y3RzIGluIHRoZWlyIGV4cHJlc3Npb24uIFRoZSBzYW1lIGV4YW1wbGUgYWJvdmUgaXMgcHJlc2VudGVkIGJlbG93IHVzaW5nIFNRTCBhbmQgdGhlCiBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0phdmFfRGF0YWJhc2VfQ29ubmVjdGl2aXR5W0pEQkNdIGludGVyZmFjZS4gVGhlIHRha2UgaG9tZSBwb2ludCBpcyB0aGF0IEdyZW1saW4gZG9lcwogbm90IGV4aXN0IG91dHNpZGUgdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIGluIHdoaWNoIGl0IHdpbGwgYmUgdXNlZC4gR3JlbWxpbiB3YXMgZGVzaWduZWQgdG8gYmUgYWJsZSB0byBiZQogZW1iZWRkZWQgaW4gYW55IG1vZGVybiBwcm9ncmFtbWluZyBsYW5ndWFnZSBhbmQgdGh1cywgYWx3YXlzIGZyZWUgZnJvbSB0aGUgY29tcGxleGl0aWVzIG9mIHN0cmluZyBtYW5pcHVsYXRpb24gYXMgc2VlbgpAQCAtMTAwLDEwICsxMDAsMTEgQEAKIH0KIC0tLS0KIAotVGhlIHB1cnBvc2Ugb2YgdGhpcyB0dXRvcmlhbCBpcyB0byBleHBsYWluIGhvdyB0byBkZXZlbG9wIGEgX0dyZW1saW4gbGFuZ3VhZ2UgdmFyaWFudF8uIFRoYXQgaXMsIGZvciB0aG9zZSBkZXZlbG9wZXJzIHRoYXQKLWFyZSBpbnRlcmVzdGVkIGluIHN1cHBvcnRpbmcgR3JlbWxpbiBpbiB0aGVpciBuYXRpdmUgbGFuZ3VhZ2UgYW5kIHRoZXJlIGN1cnJlbnRseSBkb2VzIG5vdCBleGlzdCBhIChnb29kKSBHcmVtbGluIHZhcmlhbnQgaW4KLXRoZWlyIGxhbmd1YWdlLCB0aGV5IGNhbiBkZXZlbG9wIG9uZSBmb3IgdGhlIEFwYWNoZSBUaW5rZXJQb3AgY29tbXVuaXR5IChhbmQgdGhlaXIgbGFuZ3VhZ2UgY29tbXVuaXR5IGluIGdlbmVyYWwpLiBJbiB0aGlzCi10dXRvcmlhbCwgbGluazpodHRwczovL3d3dy5weXRob24ub3JnL1tQeXRob25dIHdpbGwgc2VydmUgYXMgdGhlIGhvc3QgbGFuZ3VhZ2UgYW5kIHR3byB0eXBpY2FsIGltcGxlbWVudGF0aW9uIG1vZGVscyB3aWxsIGJlIHByZXNlbnRlZC4KK1RoZSBwdXJwb3NlIG9mIHRoaXMgdHV0b3JpYWwgaXMgdG8gZXhwbGFpbiBob3cgdG8gZGV2ZWxvcCBhIF9HcmVtbGluIGxhbmd1YWdlIHZhcmlhbnRfLiBUaGF0IGlzLCBmb3IgdGhvc2UgZGV2ZWxvcGVycword2hvIGFyZSBpbnRlcmVzdGVkIGluIHN1cHBvcnRpbmcgR3JlbWxpbiBpbiB0aGVpciBuYXRpdmUgbGFuZ3VhZ2UgYW5kIHRoZXJlIGN1cnJlbnRseSBkb2VzIG5vdCBleGlzdCBhIChnb29kKSBHcmVtbGluCit2YXJpYW50IGluIHRoZWlyIGxhbmd1YWdlLCB0aGV5IGNhbiBkZXZlbG9wIG9uZSBmb3IgdGhlIEFwYWNoZSBUaW5rZXJQb3AgY29tbXVuaXR5IChhbmQgdGhlaXIgbGFuZ3VhZ2UgY29tbXVuaXR5IGluCitnZW5lcmFsKS4gSW4gdGhpcyB0dXRvcmlhbCwgbGluazpodHRwczovL3d3dy5weXRob24ub3JnL1tQeXRob25dIHdpbGwgc2VydmUgYXMgdGhlIGhvc3QgbGFuZ3VhZ2UgYW5kIHR3byB0eXBpY2FsCitpbXBsZW1lbnRhdGlvbiBtb2RlbHMgd2lsbCBiZSBwcmVzZW50ZWQuCiAKIDEuIDw8dXNpbmctanl0aG9uLWFuZC10aGUtanZtLCoqVXNpbmcgSnl0aG9uIGFuZCB0aGUgSlZNKio+PjogVGhpcyBpcyBwZXJoYXBzIHRoZSBlYXNpZXN0IHdheSB0byBwcm9kdWNlIGEgR3JlbWxpbgogbGFuZ3VhZ2UgdmFyaWFudC4gV2l0aCBsaW5rOmh0dHBzOi8vd3d3LmpjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0yMjNbSlNSLTIyM10sIGFueSBsYW5ndWFnZSBjb21waWxlciB3cml0dGVuIGZvciB0aGUgSlZNCkBAIC0xMTksNDAgKzEyMCw0MiBAQAogY29uc2lzdGVudCBhbmQgZWFzaWx5IGxldmVyYWdlZCBieSBhbnlvbmUgdmVyc2VkIGluIEdyZW1saW4uCiAKIElNUE9SVEFOVDogVGhlICJHcmVtbGluLVB5dGhvbiIgcHJlc2VudGVkIGluIHRoaXMgdHV0b3JpYWwgaXMgYmFzaWMgYW5kIHByb3ZpZGVkIHRvIHNob3cgdGhlIHByaW1hcnkgdGVjaG5pcXVlcyB1c2VkIHRvCi1jb25zdHJ1Y3QgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQuIEFwYWNoZSBUaW5rZXJQb3AgZGlzdHJpYnV0ZXMgd2l0aCBhIGZ1bGwgZmxlZGdlZCBHcmVtbGluLVB5dGhvbiB2YXJpYW50Ci10aGF0IHVzZXMgbWFueSBvZiB0aGUgdGVjaG5pcXVlcyBwcmVzZW50ZWQgaW4gdGhpcyB0dXRvcmlhbC4KK2NvbnN0cnVjdCBhIEdyZW1saW4gbGFuZ3VhZ2UgdmFyaWFudC4gQXBhY2hlIFRpbmtlclBvcCBkaXN0cmlidXRlcyB3aXRoIGEgZnVsbCBmbGVkZ2VkCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uW0dyZW1saW4tUHl0aG9uXSB2YXJpYW50IHRoYXQgdXNlcyBtYW55IG9mIHRoZQordGVjaG5pcXVlcyBwcmVzZW50ZWQgaW4gdGhpcyB0dXRvcmlhbC4KIAogW1tsYW5ndWFnZS1kcml2ZXJzLXZzLWxhbmd1YWdlLXZhcmlhbnRzXV0KID09IExhbmd1YWdlIERyaXZlcnMgdnMuIExhbmd1YWdlIFZhcmlhbnRzCiAKLUJlZm9yZSBkaXNjdXNzaW5nIGhvdyB0byBpbXBsZW1lbnQgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgaW4gUHl0aG9uLCBpdCBpcyBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0d28gY29uY2VwdHMgcmVsYXRlZCB0bwotR3JlbWxpbiBsYW5ndWFnZSBkZXZlbG9wbWVudC4gVGhlcmUgaXMgYSBkaWZmZXJlbmNlIGJldHdlZW4gYSBfbGFuZ3VhZ2UgZHJpdmVyXyBhbmQgYSBfbGFuZ3VhZ2UgdmFyaWFudF8gYW5kIGl0IGlzIGltcG9ydGFudAotdGhhdCB0aGVzZSB0d28gY29uY2VwdHMgKGFuZCB0aGVpciByZXNwZWN0aXZlIGltcGxlbWVudGF0aW9ucykgcmVtYWluIHNlcGFyYXRlLgorQmVmb3JlIGRpc2N1c3NpbmcgaG93IHRvIGltcGxlbWVudCBhIEdyZW1saW4gbGFuZ3VhZ2UgdmFyaWFudCBpbiBQeXRob24sIGl0IGlzIG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIHR3byBjb25jZXB0cworcmVsYXRlZCB0byBHcmVtbGluIGxhbmd1YWdlIGRldmVsb3BtZW50LiBUaGVyZSBpcyBhIGRpZmZlcmVuY2UgYmV0d2VlbiBhIF9sYW5ndWFnZSBkcml2ZXJfIGFuZCBhIF9sYW5ndWFnZSB2YXJpYW50XworYW5kIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZXNlIHR3byBjb25jZXB0cyAoYW5kIHRoZWlyIHJlc3BlY3RpdmUgaW1wbGVtZW50YXRpb25zKSByZW1haW4gc2VwYXJhdGUuCiAKID09PSBMYW5ndWFnZSBEcml2ZXJzCiAKIGltYWdlOmxhbmd1YWdlLWRyaXZlcnMucG5nW3dpZHRoPTM3NSxmbG9hdD1yaWdodF0gQSBHcmVtbGluIGxhbmd1YWdlIGRyaXZlciBpcyBhIHNvZnR3YXJlIGxpYnJhcnkgdGhhdCBpcyBhYmxlIHRvCiBjb21tdW5pY2F0ZSB3aXRoIGEgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtIHdoZXRoZXIgZGlyZWN0bHkgdmlhIHRoZSBKVk0gb3IgaW5kaXJlY3RseSB2aWEKLWxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JlbWxpbi1zZXJ2ZXJbR3JlbWxpbiBTZXJ2ZXJdIEdyZW1saW5TZXJ2ZXIgb3Igc29tZSBvdGhlcgotbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLXZpYS1yZW1vdGVncmFwaFtSZW1vdGVDb25uZWN0aW9uXSBlbmFibGVkIGdyYXBoIHN5c3RlbS4KK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy1ncmVtbGluLXNlcnZlcltHcmVtbGluIFNlcnZlcl0gR3JlbWxpbiBTZXJ2ZXIgb3Igc29tZQorb3RoZXIgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLXJncFtSZW1vdGVDb25uZWN0aW9uXSBlbmFibGVkIGdyYXBoIHN5c3RlbS4KIExhbmd1YWdlIGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBzdWJtaXR0aW5nIEdyZW1saW4gdHJhdmVyc2FscyB0byBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbSBhbmQKIHJldHVybmluZyByZXN1bHRzIHRvIHRoZSBkZXZlbG9wZXIgdGhhdCBhcmUgd2l0aGluIHRoZSBkZXZlbG9wZXIncyBsYW5ndWFnZSdzIHR5cGUgc3lzdGVtLgogRm9yIGluc3RhbmNlLCByZXN1bHRhbnQgZG91YmxlcyBzaG91bGQgYmUgY29lcmNlZCB0byBmbG9hdHMgaW4gUHl0aG9uLgogCi1UaGlzIHR1dG9yaWFsIGlzIG5vdCBhYm91dCBsYW5ndWFnZSBkcml2ZXJzLCBidXQgYWJvdXQgbGFuZ3VhZ2UgdmFyaWFudHMuIE1vcmVvdmVyLCBjb21tdW5pdHkgbGlicmFyaWVzIHNob3VsZCBtYWtlIHRoaXMKLWRpc3RpbmN0aW9uIGNsZWFyIGFuZCAqKnNob3VsZCBub3QqKiBkZXZlbG9wIGxpYnJhcmllcyB0aGF0IHNlcnZlIGJvdGggcm9sZXMuIExhbmd1YWdlIGRyaXZlcnMgd2lsbCBiZSB1c2VmdWwgdG8gYSBjb2xsZWN0aW9uCi1vZiBHcmVtbGluIHZhcmlhbnRzIHdpdGhpbiBhIGxhbmd1YWdlIGNvbW11bml0eSAtLSBhYmxlIHRvIHN1cHBvcnQgYEdyYXBoVHJhdmVyc2FsYC12YXJpYW50cyBhcyB3ZWxsIGFzIGFsc28gb3RoZXIKLWxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tYWluLXNwZWNpZmljX2xhbmd1YWdlW0RTTF0tdmFyaWFudHMgKGUuZy4gYFNvY2lhbFRyYXZlcnNhbGApLgorVGhpcyB0dXRvcmlhbCBpcyBub3QgYWJvdXQgbGFuZ3VhZ2UgZHJpdmVycywgYnV0IGFib3V0IGxhbmd1YWdlIHZhcmlhbnRzLiBNb3Jlb3ZlciwgY29tbXVuaXR5IGxpYnJhcmllcyBzaG91bGQgbWFrZQordGhpcyBkaXN0aW5jdGlvbiBjbGVhciBhbmQgKipzaG91bGQgbm90KiogZGV2ZWxvcCBsaWJyYXJpZXMgdGhhdCBzZXJ2ZSBib3RoIHJvbGVzLiBMYW5ndWFnZSBkcml2ZXJzIHdpbGwgYmUgdXNlZnVsIHRvCithIGNvbGxlY3Rpb24gb2YgR3JlbWxpbiB2YXJpYW50cyB3aXRoaW4gYSBsYW5ndWFnZSBjb21tdW5pdHkgLS0gYWJsZSB0byBzdXBwb3J0IGBHcmFwaFRyYXZlcnNhbGAtdmFyaWFudHMgYXMgd2VsbCBhcworYWxzbyBvdGhlciBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RvbWFpbi1zcGVjaWZpY19sYW5ndWFnZVtEU0xdLXZhcmlhbnRzIChlLmcuIGBTb2NpYWxUcmF2ZXJzYWxgKS4KIAogTk9URTogYEdyYXBoVHJhdmVyc2FsYCBpcyBhIHBhcnRpY3VsYXIgR3JlbWxpbiBkb21haW4tc3BlY2lmaWMgbGFuZ3VhZ2UgKGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tYWluLXNwZWNpZmljX2xhbmd1YWdlW0RTTF0pLAotYWxiZWl0IHRoZSBtb3N0IHBvcHVsYXIgYW5kIGZvdW5kYXRpb25hbCBEU0wuIElmIGFub3RoZXIgRFNMIGlzIGNyZWF0ZWQsIHRoZW4gdGhlIHNhbWUgdGVjaG5pcXVlcyBkaXNjdXNzZWQgaW4gdGhpcyB0dXRvcmlhbAotZm9yIGBHcmFwaFRyYXZlcnNhbGAgYXBwbHkgdG8gYFhYWFRyYXZlcnNhbGAuCithbGJlaXQgdGhlIG1vc3QgcG9wdWxhciBhbmQgZm91bmRhdGlvbmFsIERTTC4gSWYgYW5vdGhlciBEU0wgaXMgY3JlYXRlZCwgdGhlbiB0aGUgc2FtZSB0ZWNobmlxdWVzIGRpc2N1c3NlZCBpbiB0aGlzCit0dXRvcmlhbCBmb3IgYEdyYXBoVHJhdmVyc2FsYCBhcHBseSB0byBgWFhYVHJhdmVyc2FsYC4KIAogPT09IExhbmd1YWdlIFZhcmlhbnRzCiAKLWltYWdlOmxhbmd1YWdlLXZhcmlhbnRzLnBuZ1t3aWR0aD0zNzUsZmxvYXQ9cmlnaHRdIEEgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGlzIGEgc29mdHdhcmUgbGlicmFyeSB0aGF0IGFsbG93cyBhIGRldmVsb3BlcgotdG8gd3JpdGUgYSBHcmVtbGluIHRyYXZlcnNhbCB3aXRoaW4gdGhlaXIgbmF0aXZlIHByb2dyYW1taW5nIGxhbmd1YWdlLiBUaGUgbGFuZ3VhZ2UgdmFyaWFudCBpcyByZXNwb25zaWJsZSBmb3IKLWNyZWF0aW5nIEdyZW1saW4gYEJ5dGVjb2RlYCB0aGF0IHdpbGwgdWx0aW1hdGVseSBiZSB0cmFuc2xhdGVkIGFuZCBjb21waWxlZCB0byBhIGBUcmF2ZXJzYWxgIGJ5IGEgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLgoraW1hZ2U6bGFuZ3VhZ2UtdmFyaWFudHMucG5nW3dpZHRoPTM3NSxmbG9hdD1yaWdodF0gQSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgaXMgYSBzb2Z0d2FyZSBsaWJyYXJ5IHRoYXQgYWxsb3dzIGEKK2RldmVsb3BlciB0byB3cml0ZSBhIEdyZW1saW4gdHJhdmVyc2FsIHdpdGhpbiB0aGVpciBuYXRpdmUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIFRoZSBsYW5ndWFnZSB2YXJpYW50IGlzIHJlc3BvbnNpYmxlCitmb3IgY3JlYXRpbmcgR3JlbWxpbiBgQnl0ZWNvZGVgIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IGJlIHRyYW5zbGF0ZWQgYW5kIGNvbXBpbGVkIHRvIGEgYFRyYXZlcnNhbGAgYnkgYQorVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLgogCiBFdmVyeSBsYW5ndWFnZSB2YXJpYW50LCByZWdhcmRsZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCB3aWxsIGhhdmUgdG8gYWNjb3VudCBmb3IgdGhlIGZvdXIgY29yZSBjb25jZXB0cyBiZWxvdzoKIApAQCAtMTYxLDI3ICsxNjQsMzAgQEAKIAogMi4gYEdyYXBoVHJhdmVyc2FsU291cmNlYCAoKipjb21waWxlcioqKTogVGhpcyBpcyB0aGUgdHlwaWNhbCBgZ2AgcmVmZXJlbmNlLiBBIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgbWFpbnRhaW5zIHRoZQogYHdpdGhYWFgoKWAtc3RyYXRlZ3kgbWV0aG9kcyBhcyB3ZWxsIGFzIHRoZSAidHJhdmVyc2FsIHNwYXduIi1tZXRob2RzIHN1Y2ggYXMgYFYoKWAsIGBFKClgLCBgYWRkVigpYCwgZXRjLgotQSB0cmF2ZXJzYWwgc291cmNlJ3MgcmVnaXN0ZXJlZCBgVHJhdmVyc2FsU3RyYXRlZ2llc2AgZGV0ZXJtaW5lIGhvdyB0aGUgc3VibWl0dGVkIHRyYXZlcnNhbCB3aWxsIGJlIHVsdGltYXRlbHkgZXZhbHVhdGVkLgorQSB0cmF2ZXJzYWwgc291cmNlJ3MgcmVnaXN0ZXJlZCBgVHJhdmVyc2FsU3RyYXRlZ2llc2AgZGV0ZXJtaW5lIGhvdyB0aGUgc3VibWl0dGVkIHRyYXZlcnNhbCB3aWxsIGJlIHVsdGltYXRlbHkKK2V2YWx1YXRlZC4KIAogMy4gYEdyYXBoVHJhdmVyc2FsYCAoKipmdW5jdGlvbiBjb21wb3NpdGlvbioqKTogQSBncmFwaCB0cmF2ZXJzYWwgbWFpbnRhaW5zIHRoZSBjb21wdXRhdGlvbmFsIHN0ZXBzIHN1Y2ggYXMgYG91dCgpYCwgYGdyb3VwQ291bnQoKWAsCi1gbWF0Y2goKWAsIGV0Yy4gVGhpcyBmbHVlbnQgaW50ZXJmYWNlIHN1cHBvcnRzIG1ldGhvZCBjaGFpbmluZyBhbmQgdGh1cywgYSBsaW5lYXIgImxlZnQtdG8tcmlnaHQiIHJlcHJlc2VudGF0aW9uIG9mIGEgdHJhdmVyc2FsL3F1ZXJ5LgorYG1hdGNoKClgLCBldGMuIFRoaXMgZmx1ZW50IGludGVyZmFjZSBzdXBwb3J0cyBtZXRob2QgY2hhaW5pbmcgYW5kIHRodXMsIGEgbGluZWFyICJsZWZ0LXRvLXJpZ2h0IiByZXByZXNlbnRhdGlvbiBvZiBhCit0cmF2ZXJzYWwvcXVlcnkuCiAKLTQuIGBfX2AgKCoqZnVuY3Rpb24gbmVzdGluZyoqKSA6IFRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzIGlzIHVzZWQgZm9yIHBhc3NpbmcgYSB0cmF2ZXJzYWwgYXMgYW4gYXJndW1lbnQgdG8gYSBwYXJlbnQgc3RlcC4KLUZvciBleGFtcGxlLCBpbiBgK3JlcGVhdChfXy5vdXQoKSkrYCwgYCtfXy5vdXQoKStgIGlzIGFuIGFub255bW91cyB0cmF2ZXJzYWwgcGFzc2VkIHRvIHRoZSB0cmF2ZXJzYWwgcGFyZW50IGByZXBlYXQoKWAuCi1Bbm9ueW1vdXMgdHJhdmVyc2FscyBlbmFibGUgdGhlICJ0b3AtdG8tYm90dG9tIiByZXByZXNlbnRhdGlvbiBvZiBhIHRyYXZlcnNhbC4KKzQuIGBfX2AgKCoqZnVuY3Rpb24gbmVzdGluZyoqKSA6IFRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzIGlzIHVzZWQgZm9yIHBhc3NpbmcgYSB0cmF2ZXJzYWwgYXMgYW4gYXJndW1lbnQgdG8gYQorcGFyZW50IHN0ZXAuIEZvciBleGFtcGxlLCBpbiBgK3JlcGVhdChfXy5vdXQoKSkrYCwgYCtfXy5vdXQoKStgIGlzIGFuIGFub255bW91cyB0cmF2ZXJzYWwgcGFzc2VkIHRvIHRoZSB0cmF2ZXJzYWwgcGFyZW50CitgcmVwZWF0KClgLiBBbm9ueW1vdXMgdHJhdmVyc2FscyBlbmFibGUgdGhlICJ0b3AtdG8tYm90dG9tIiByZXByZXNlbnRhdGlvbiBvZiBhIHRyYXZlcnNhbC4KIAogNS4gYEJ5dGVjb2RlYCAoKipsYW5ndWFnZSBhZ25vc3RpYyBlbmNvZGluZyoqKTogVGhlIHNvdXJjZSBhbmQgdHJhdmVyc2FsIHN0ZXBzIGFuZCB0aGVpciBhcmd1bWVudHMgYXJlIGVuY29kZWQgaW4gYQotbGFuZ3VhZ2UgYWdub3N0aWMgcmVwcmVzZW50YXRpb24gY2FsbGVkIEdyZW1saW4gYnl0ZWNvZGUuIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgYSBuZXN0ZWQgbGlzdCBvZiB0aGUgZm9ybSBgW3N0ZXAsW2FyZ3MqXV0qYC4KK2xhbmd1YWdlIGFnbm9zdGljIHJlcHJlc2VudGF0aW9uIGNhbGxlZCBHcmVtbGluIGJ5dGVjb2RlLiBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIGEgbmVzdGVkIGxpc3Qgb2YgdGhlIGZvcm0KK2Bbc3RlcCxbYXJncypdXSpgLgogCi1Cb3RoIGBHcmFwaFRyYXZlcnNhbGAgYW5kIGArX18rYCBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgR3JlbWxpbiBsYW5ndWFnZS4gR3JlbWxpbiBpcyBhIF90d28tZGltZW5zaW9uYWwgbGFuZ3VhZ2VfIHN1cHBvcnRpbmcKLWxpbmVhciwgbmVzdGVkIHN0ZXAgc2VxdWVuY2VzLiBIaXN0b3JpY2FsbHksIG1hbnkgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50cyBoYXZlIGZhaWxlZCB0byBtYWtlIHRoZSBkaXN0aW5jdGlvbnMgYWJvdmUgY2xlYXIKLWFuZCBpbiBkb2luZyBzbywgZWl0aGVyIGNvbXBsaWNhdGUgdGhlaXIgaW1wbGVtZW50YXRpb25zIG9yIHlpZWxkIHZhcmlhbnRzIHRoYXQgYXJlIG5vdCBpbiAxLXRvLTEgY29ycmVzcG9uZGVuY2Ugd2l0aCBHcmVtbGluLUphdmEuCi1CeSBrZWVwaW5nIHRoZXNlIGNvbmNlcHRzIGNsZWFyIHdoZW4gZGVzaWduaW5nIGEgbGFuZ3VhZ2UgdmFyaWFudCwgdGhlIGNvbnN0cnVjdGlvbiBvZiB0aGUgR3JlbWxpbiBieXRlY29kZSByZXByZXNlbnRhdGlvbiBpcwotZWFzeS4KK0JvdGggYEdyYXBoVHJhdmVyc2FsYCBhbmQgYCtfXytgIGRlZmluZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBHcmVtbGluIGxhbmd1YWdlLiBHcmVtbGluIGlzIGEgX3R3by1kaW1lbnNpb25hbCBsYW5ndWFnZV8KK3N1cHBvcnRpbmcgbGluZWFyLCBuZXN0ZWQgc3RlcCBzZXF1ZW5jZXMuIEhpc3RvcmljYWxseSwgbWFueSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnRzIGhhdmUgZmFpbGVkIHRvIG1ha2UgdGhlCitkaXN0aW5jdGlvbnMgYWJvdmUgY2xlYXIgYW5kIGluIGRvaW5nIHNvLCBlaXRoZXIgY29tcGxpY2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbnMgb3IgeWllbGQgdmFyaWFudHMgdGhhdCBhcmUgbm90IGluCisxLXRvLTEgY29ycmVzcG9uZGVuY2Ugd2l0aCBHcmVtbGluLUphdmEuIEJ5IGtlZXBpbmcgdGhlc2UgY29uY2VwdHMgY2xlYXIgd2hlbiBkZXNpZ25pbmcgYSBsYW5ndWFnZSB2YXJpYW50LCB0aGUKK2NvbnN0cnVjdGlvbiBvZiB0aGUgR3JlbWxpbiBieXRlY29kZSByZXByZXNlbnRhdGlvbiBpcyBlYXN5LgogCiBJTVBPUlRBTlQ6IFRoZSB0ZXJtICJHcmVtbGluLUphdmEiIGRlbm90ZXMgdGhlIGxhbmd1YWdlIHRoYXQgaXMgZGVmaW5lZCBieSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLCBgR3JhcGhUcmF2ZXJzYWxgLAotYW5kIGBfX2AuIFRoZXNlIHRocmVlIGNsYXNzZXMgZXhpc3QgaW4gYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoYCBhbmQgZm9ybSB0aGUgZGVmaW5pdGl2ZQotcmVwcmVzZW50YXRpb24gb2YgdGhlIEdyZW1saW4gdHJhdmVyc2FsIGxhbmd1YWdlLgorYW5kIGBfX2AuIFRoZXNlIHRocmVlIGNsYXNzZXMgZXhpc3QgaW4gYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoYCBhbmQgZm9ybSB0aGUKK2RlZmluaXRpdmUgcmVwcmVzZW50YXRpb24gb2YgdGhlIEdyZW1saW4gdHJhdmVyc2FsIGxhbmd1YWdlLgogCiA9PSBHcmVtbGluLUp5dGhvbiBhbmQgR3JlbWxpbi1QeXRob24KIApAQCAtMjQxLDE3ICsyNDcsMTcgQEAKIAogPT09PSBUcmF2ZXJzYWwgV3JhcHBlcnMKIAotV2hpbGUgaXQgaXMgcG9zc2libGUgdG8gc2ltcGx5IGludGVyYWN0IHdpdGggSmF2YSBjbGFzc2VzIGluIGEgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24sIHN1Y2ggR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50cwotd2lsbCBub3QgbGV2ZXJhZ2UgdGhlIHVuaXF1ZSBmZWF0dXJlcyBvZiB0aGUgaG9zdCBsYW5ndWFnZS4gSXQgaXMgZm9yIHRoaXMgcmVhc29uIHRoYXQgSlZNLWJhc2VkIGxhbmd1YWdlIHZhcmlhbnRzIHN1Y2ggYXMKLWxpbms6aHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYVtHcmVtbGluLVNjYWxhXSB3ZXJlIGRldmVsb3BlZC4gU2NhbGEgcHJvdmlkZXMgbWFueSBzeW50YXggbmljZXRpZXMgbm90Ci1hdmFpbGFibGUgaW4gSmF2YS4gVG8gbGV2ZXJhZ2UgdGhlc2UgbmljZXRpZXMsIEdyZW1saW4tU2NhbGEgIndyYXBzIiBgR3JhcGhUcmF2ZXJzYWxgIGluIG9yZGVyIHRvIHByb3ZpZGUgU2NhbGEtaWRpb21hdGljIGV4dGVuc2lvbnMuCi1Bbm90aGVyIGV4YW1wbGUgaXMgQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4tR3Jvb3Z5IHdoaWNoIGRvZXMgdGhlIHNhbWUgdmlhIHRoZQorV2hpbGUgaXQgaXMgcG9zc2libGUgdG8gc2ltcGx5IGludGVyYWN0IHdpdGggSmF2YSBjbGFzc2VzIGluIGEgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24sIHN1Y2ggR3JlbWxpbiBsYW5ndWFnZQordmFyaWFudHMgd2lsbCBub3QgbGV2ZXJhZ2UgdGhlIHVuaXF1ZSBmZWF0dXJlcyBvZiB0aGUgaG9zdCBsYW5ndWFnZS4gSXQgaXMgZm9yIHRoaXMgcmVhc29uIHRoYXQgSlZNLWJhc2VkIGxhbmd1YWdlCit2YXJpYW50cyBzdWNoIGFzIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYVtHcmVtbGluLVNjYWxhXSB3ZXJlIGRldmVsb3BlZC4gU2NhbGEgcHJvdmlkZXMgbWFueQorc3ludGF4IG5pY2V0aWVzIG5vdCBhdmFpbGFibGUgaW4gSmF2YS4gVG8gbGV2ZXJhZ2UgdGhlc2UgbmljZXRpZXMsIEdyZW1saW4tU2NhbGEgIndyYXBzIiBgR3JhcGhUcmF2ZXJzYWxgIGluIG9yZGVyIHRvCitwcm92aWRlIFNjYWxhLWlkaW9tYXRpYyBleHRlbnNpb25zLiBBbm90aGVyIGV4YW1wbGUgaXMgQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4tR3Jvb3Z5IHdoaWNoIGRvZXMgdGhlIHNhbWUgdmlhIHRoZQogbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNzdWdhci1wbHVnaW5bU3VnYXIgcGx1Z2luXSwgYnV0IHVzZXMKLWxpbms6aHR0cDovL2dyb292eS1sYW5nLm9yZy9tZXRhcHJvZ3JhbW1pbmcuaHRtbFttZXRhLXByb2dyYW1taW5nXSBpbnN0ZWFkIG9mIG9iamVjdCB3cmFwcGluZywgd2hlcmUgImJlaGluZCB0aGUgc2NlbmVzLCIKLUdyb292eSBtZXRhLXByb2dyYW1taW5nIGlzIGRvaW5nIG9iamVjdCB3cmFwcGluZy4KK2xpbms6aHR0cDovL2dyb292eS1sYW5nLm9yZy9tZXRhcHJvZ3JhbW1pbmcuaHRtbFttZXRhLXByb2dyYW1taW5nXSBpbnN0ZWFkIG9mIG9iamVjdCB3cmFwcGluZywgd2hlcmUgImJlaGluZCB0aGUKK3NjZW5lcywiIEdyb292eSBtZXRhLXByb2dyYW1taW5nIGlzIGRvaW5nIG9iamVjdCB3cmFwcGluZy4KIAotVGhlIEp5dGhvbiBleGFtcGxlIGJlbG93IHVzZXMgUHl0aG9uIG1ldGEtcHJvZ3JhbW1pbmcgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYEdyYXBoVHJhdmVyc2FsYC4KLUluIHBhcnRpY3VsYXIsIHRoZSBgK19fZ2V0aXRlbV9fK2AgYW5kIGArX19nZXRhdHRyX18rYCAibWFnaWMgbWV0aG9kcyIgYXJlIGxldmVyYWdlZC4KK1RoZSBKeXRob24gZXhhbXBsZSBiZWxvdyB1c2VzIFB5dGhvbiBtZXRhLXByb2dyYW1taW5nIHRvIGFkZCBmdW5jdGlvbmFsaXR5IHRvIGBHcmFwaFRyYXZlcnNhbGAuIEluIHBhcnRpY3VsYXIsIHRoZQorYCtfX2dldGl0ZW1fXytgIGFuZCBgK19fZ2V0YXR0cl9fK2AgIm1hZ2ljIG1ldGhvZHMiIGFyZSBsZXZlcmFnZWQuCiAKIFtzb3VyY2UscHl0aG9uXQogLS0tLQpAQCAtMjY2LDggKzI3Miw5IEBACiBHcmFwaFRyYXZlcnNhbC5fX2dldGF0dHJfXyA9IGxhbWJkYSBzZWxmLCBrZXk6IHNlbGYudmFsdWVzKGtleSkKIC0tLS0KIAotVGhlIHR3byBtZXRob2RzIGArX19nZXRpdGVtX18rYCBhbmQgYCtfX2dldGF0dHJfXytgIHN1cHBvcnQgUHl0aG9uIF9zbGljaW5nXyBhbmQgX29iamVjdCBhdHRyaWJ1dGUgaW50ZXJjZXB0aW9uXywgcmVzcGVjdGl2ZWx5LgotSW4gdGhpcyB3YXksIHRoZSBob3N0IGxhbmd1YWdlIGlzIGFibGUgdG8gdXNlIGl0cyBuYXRpdmUgY29uc3RydWN0cyBpbiBhIG1lYW5pbmdmdWwgd2F5IHdpdGhpbiBhIEdyZW1saW4gdHJhdmVyc2FsLgorVGhlIHR3byBtZXRob2RzIGArX19nZXRpdGVtX18rYCBhbmQgYCtfX2dldGF0dHJfXytgIHN1cHBvcnQgUHl0aG9uIF9zbGljaW5nXyBhbmQgX29iamVjdCBhdHRyaWJ1dGUgaW50ZXJjZXB0aW9uXywKK3Jlc3BlY3RpdmVseS4gSW4gdGhpcyB3YXksIHRoZSBob3N0IGxhbmd1YWdlIGlzIGFibGUgdG8gdXNlIGl0cyBuYXRpdmUgY29uc3RydWN0cyBpbiBhIG1lYW5pbmdmdWwgd2F5IHdpdGhpbiBhCitHcmVtbGluIHRyYXZlcnNhbC4KIAogSU1QT1JUQU5UOiBHcmVtbGluLUphdmEgc2VydmVzIGFzIHRoZSBzdGFuZGFyZC9kZWZhdWx0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbCBsYW5ndWFnZS4gQW55IEdyZW1saW4KIGxhbmd1YWdlIHZhcmlhbnQgKiptdXN0KiogcHJvdmlkZSBhbGwgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSAobWV0aG9kcykgYXMgYEdyYXBoVHJhdmVyc2FsYCwgYnV0ICoqY2FuKiogZXh0ZW5kIGl0CkBAIC0yNzksMTAgKzI4NiwxMSBAQAogW1t1c2luZy1weXRob24tYW5kLXJlbW90ZWNvbm5lY3Rpb25dXQogPT09IFVzaW5nIFB5dGhvbiBhbmQgUmVtb3RlQ29ubmVjdGlvbgogCi1pbWFnZTpweXRob24tbG9nby5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnQsbGluaz0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy8iXSBUaGUgSlZNIGlzIGEgcG93ZXJmdWwgcGllY2Ugb2YgdGVjaG5vbG9neSB0aGF0IGhhcywgb3ZlciB0aGUgeWVhcnMsCi1iZWNvbWUgYSBtZWV0aW5nIGdyb3VuZCBmb3IgZGV2ZWxvcGVycyBmcm9tIG51bWVyb3VzIGxhbmd1YWdlIGNvbW11bml0aWVzLiBIb3dldmVyLCBub3QgYWxsIGFwcGxpY2F0aW9ucyB3aWxsIHVzZSB0aGUgSlZNLgotR2l2ZW4gdGhhdCBBcGFjaGUgVGlua2VyUG9wIGlzIGEgSmF2YS1mcmFtZXdvcmssIHRoZXJlIG11c3QgYmUgYSB3YXkgZm9yIHR3byBkaWZmZXJlbnQgdmlydHVhbCBtYWNoaW5lcyB0byBjb21tdW5pY2F0ZQotdHJhdmVyc2FscyBhbmQgdGhlaXIgcmVzdWx0cy4gVGhpcyBzZWN0aW9uIHByZXNlbnRzIHRoZSBzZWNvbmQgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGltcGxlbWVudGF0aW9uIG1vZGVsIHdoaWNoIGRvZXMganVzdCB0aGF0LgoraW1hZ2U6cHl0aG9uLWxvZ28ucG5nW3dpZHRoPTEyNSxmbG9hdD1sZWZ0LGxpbms9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvIl0gVGhlIEpWTSBpcyBhIHBvd2VyZnVsIHBpZWNlIG9mIHRlY2hub2xvZ3kKK3RoYXQgaGFzLCBvdmVyIHRoZSB5ZWFycywgYmVjb21lIGEgbWVldGluZyBncm91bmQgZm9yIGRldmVsb3BlcnMgZnJvbSBudW1lcm91cyBsYW5ndWFnZSBjb21tdW5pdGllcy4gSG93ZXZlciwgbm90IGFsbAorYXBwbGljYXRpb25zIHdpbGwgdXNlIHRoZSBKVk0uIEdpdmVuIHRoYXQgQXBhY2hlIFRpbmtlclBvcCBpcyBhIEphdmEtZnJhbWV3b3JrLCB0aGVyZSBtdXN0IGJlIGEgd2F5IGZvciB0d28gZGlmZmVyZW50Cit2aXJ0dWFsIG1hY2hpbmVzIHRvIGNvbW11bmljYXRlIHRyYXZlcnNhbHMgYW5kIHRoZWlyIHJlc3VsdHMuIFRoaXMgc2VjdGlvbiBwcmVzZW50cyB0aGUgc2Vjb25kIEdyZW1saW4gbGFuZ3VhZ2UKK3ZhcmlhbnQgaW1wbGVtZW50YXRpb24gbW9kZWwgd2hpY2ggZG9lcyBqdXN0IHRoYXQuCiAKIE5PVEU6IEFwYWNoZSBUaW5rZXJQb3AgaXMgYSBKVk0tYmFzZWQgZ3JhcGggY29tcHV0aW5nIGZyYW1ld29yay4gTW9zdCBncmFwaCBkYXRhYmFzZXMgYW5kIHByb2Nlc3NvcnMgdG9kYXkgYXJlIGJ1aWx0CiBvbiB0aGUgSlZNLiBUaGlzIG1ha2VzIGl0IGVhc3kgZm9yIHRoZXNlIGdyYXBoIHN5c3RlbSBwcm92aWRlcnMgdG8gaW1wbGVtZW50IEFwYWNoZSBUaW5rZXJQb3AuIEhvd2V2ZXIsIFRpbmtlclBvcCBpcyBtb3JlCkBAIC0yOTEsOCArMjk5LDggQEAKIHRoYXQgYXJlIG5vdCBKVk0tYmFzZWQuIEEgdGhlb3JldGljYWwgcmV2aWV3IG9mIHRoZSBjb25jZXB0cyBiZWhpbmQgdGhlIEdyZW1saW4gdHJhdmVyc2FsIG1hY2hpbmUgaXMgcHJvdmlkZWQgaW4KIGxpbms6aHR0cDovL2FyeGl2Lm9yZy9hYnMvMTUwOC4wMzg0M1t0aGlzIGFydGljbGVdLgogCi1UaGlzIHNlY3Rpb24ncyBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgZGVzaWduIG1vZGVsIGRvZXMgbm90IGxldmVyYWdlIHRoZSBKVk0gZGlyZWN0bHkuIEluc3RlYWQsIGl0IGNvbnN0cnVjdHMgYSBgQnl0ZWNvZGVgCi1yZXByZXNlbnRhdGlvbiBvZiBhIGBUcmF2ZXJzYWxgIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IGJlIGV2YWx1YXRlZCBieSBgUmVtb3RlQ29ubmVjdGlvbmAgKGUuZy4gR3JlbWxpblNlcnZlcikuCitUaGlzIHNlY3Rpb24ncyBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgZGVzaWduIG1vZGVsIGRvZXMgbm90IGxldmVyYWdlIHRoZSBKVk0gZGlyZWN0bHkuIEluc3RlYWQsIGl0IGNvbnN0cnVjdHMgYQorYEJ5dGVjb2RlYCByZXByZXNlbnRhdGlvbiBvZiBhIGBUcmF2ZXJzYWxgIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IGJlIGV2YWx1YXRlZCBieSBgUmVtb3RlQ29ubmVjdGlvbmAgKGUuZy4gR3JlbWxpblNlcnZlcikuCiBJdCBpcyB1cCB0byB0aGUgbGFuZ3VhZ2UgdmFyaWFudCBkZXNpZ25lciB0byBjaG9vc2UgYSBfbGFuZ3VhZ2UgZHJpdmVyXyB0byB1c2UgZm9yIHN1Ym1pdHRpbmcgdGhlIGdlbmVyYXRlZCBieXRlY29kZSBhbmQKIGNvZXJjaW5nIGl0cyByZXN1bHRzLiBUaGUgbGFuZ3VhZ2UgZHJpdmVyIGlzIHRoZSBtZWFucyBieSB3aGljaCwgZm9yIHRoaXMgZXhhbXBsZSwgdGhlIENQeXRob24KIFZNIGNvbW11bmljYXRlcyB3aXRoIHRoZSBKVk0uCkBAIC00NDUsOSArNDUzLDExIEBACiAtLS0tCiAKIFdoZW4gdGhlIGFib3ZlIEdyb292eSBzY3JpcHQgaXMgZXZhbHVhdGVkIChlLmcuIGluIEdyZW1saW5Db25zb2xlKSwgKipHcmVtbGluLVB5dGhvbioqIGlzIGJvcm4uIFRoZSBnZW5lcmF0ZWQgUHl0aG9uCi1maWxlIGlzIGF2YWlsYWJsZSBhdCBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IveC55LnovZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvZ3JhcGhfdHJhdmVyc2FsLnB5W2dyYXBoX3RyYXZlcnNhbC5weV0uCi1JdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZXJlIGlzIGEgYml0IG1vcmUgdG8gR3JlbWxpbi1QeXRob24gaW4gdGhhdCB0aGVyZSBhbHNvIGV4aXN0cyBQeXRob24gaW1wbGVtZW50YXRpb25zIG9mIGBUcmF2ZXJzYWxTdHJhdGVnaWVzYCwgYFRyYXZlcnNhbGAsIGBCeXRlY29kZWAsIGV0Yy4KLVBsZWFzZSByZXZpZXcgdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24gb2YgR3JlbWxpbi1QeXRob24gbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC90cmVlL3gueS56L2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbltoZXJlXS4KK2ZpbGUgaXMgc2ltaWxhciB0byB0aGUgb25lIGF2YWlsYWJsZSBhdAorbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iL3gueS56L2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL2dyYXBoX3RyYXZlcnNhbC5weVtncmFwaF90cmF2ZXJzYWwucHldLgorSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGVyZSBpcyBhIGJpdCBtb3JlIHRvIEdyZW1saW4tUHl0aG9uIGluIHRoYXQgdGhlcmUgYWxzbyBleGlzdHMgUHl0aG9uIGltcGxlbWVudGF0aW9ucworb2YgYFRyYXZlcnNhbFN0cmF0ZWdpZXNgLCBgVHJhdmVyc2FsYCwgYEJ5dGVjb2RlYCwgZXRjLiBQbGVhc2UgcmV2aWV3IHRoZSBmdWxsIGltcGxlbWVudGF0aW9uIG9mIEdyZW1saW4tUHl0aG9uCitsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL3RyZWUveC55LnovZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uW2hlcmVdLgogCiBOT1RFOiBJbiBwcmFjdGljZSwgVGlua2VyUG9wIHVzZXMgdGhlIEdyb292eSdzIGBHU3RyaW5nVGVtcGxhdGVFbmdpbmVgIHRvIGhlbHAgd2l0aCB0aGUgY29kZSBnZW5lcmF0aW9uIHRhc2sgZGVzY3JpYmVkCiBhYm92ZSBhbmQgYXV0b21hdGVzIHRoYXQgZ2VuZXJhdGlvbiBhcyBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBidWlsZCB3aXRoIE1hdmVuIHVzaW5nIHRoZSBgZ21hdmVucGx1cy1wbHVnaW5gLiBTZWUgdGhlCkBAIC01MDcsNyArNTE3LDcgQEAKIF0KIC0tLS0KIAotVGhpcyBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBpcyB1bHRpbWF0ZWx5IGNvbnZlcnRlZCBieSB0aGUgbGFuZ3VhZ2UgdmFyaWFudCBpbnRvIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGhzb24tcmVhZGVyLXdyaXRlcltHcmFwaFNPTl0KK1RoaXMgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gaXMgdWx0aW1hdGVseSBjb252ZXJ0ZWQgYnkgdGhlIGxhbmd1YWdlIHZhcmlhbnQgaW50byBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyYXBoc29uW0dyYXBoU09OXQogZm9yIHNlcmlhbGl6YXRpb24gdG8gYSBgUmVtb3RlQ29ubmVjdGlvbmAgc3VjaCBhcyBHcmVtbGluU2VydmVyLgogCiBbc291cmNlLGJhc2hdCkBAIC01MzIsMTMgKzU0MiwxNSBAQAogW0lORk9dIFRyYXZlcnNhbE9wUHJvY2Vzc29yIC0gSW5pdGlhbGl6ZWQgY2FjaGUgZm9yIFRyYXZlcnNhbE9wUHJvY2Vzc29yIHdpdGggc2l6ZSAxMDAwIGFuZCBleHBpcmF0aW9uIHRpbWUgb2YgNjAwMDAwIG1zCiBbSU5GT10gR3JlbWxpblNlcnZlciAtIEV4ZWN1dGluZyBzdGFydCB1cCBMaWZlQ3ljbGVIb29rCiBbSU5GT10gTG9nZ2VyJGluZm8gLSBFeGVjdXRlZCBvbmNlIGF0IHN0YXJ0dXAgb2YgR3JlbWxpbiBTZXJ2ZXIuCitbV0FSTl0gQWJzdHJhY3RDaGFubmVsaXplciAtIFRoZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBzZXJpYWxpemF0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWQuCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAKK1tXQVJOXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gVGhlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwIHNlcmlhbGl6YXRpb24gY2xhc3MgaXMgZGVwcmVjYXRlZC4KIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCi1bSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjEuMCtqc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMAotW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYyLjAranNvbiB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAKIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2pzb24gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAKIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi9qc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCi1bSU5GT10gR3JlbWxpblNlcnZlciQxIC0gR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlZCB3aXRoIHdvcmtlciB0aHJlYWQgcG9vbCBvZiAxLCBncmVtbGluIHBvb2wgb2YgNCBhbmQgYm9zcyB0aHJlYWQgcG9vbCBvZiAxLgorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMQorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2Qgd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxCitbSU5GT10gR3JlbWxpblNlcnZlciQxIC0gR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlZCB3aXRoIHdvcmtlciB0aHJlYWQgcG9vbCBvZiAxLCBncmVtbGluIHBvb2wgb2YgOCBhbmQgYm9zcyB0aHJlYWQgcG9vbCBvZiAxLgogW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIENoYW5uZWwgc3RhcnRlZCBhdCBwb3J0IDgxODIuCiAtLS0tCiAKQEAgLTU5Nyw0ICs2MDksNCBAQAogdGhlIHJlZmxlY3Rpb24tYmFzZWQgc291cmNlIGNvZGUgZ2VuZXJhdGlvbiB0ZWNobmlxdWUgcHJlc2VudGVkLiBUaGlzIG1ldGhvZCBlbnN1cmVzIHRoYXQgdGhlIGxhbmd1YWdlCiB2YXJpYW50IGlzIGFsd2F5cyBpbiBzeW5jIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgQXBhY2hlIFRpbmtlclBvcCBHcmVtbGluLUphdmEgcmVsZWFzZSB2ZXJzaW9uLiBNb3Jlb3ZlciwgaXQgcmVkdWNlcwogdGhlIGNoYW5jZSBvZiBtaXNzaW5nIG1ldGhvZHMgb3IgY3JlYXRpbmcgcG9vcmx5IGltcGxlbWVudGVkIG1ldGhvZHMuIFdoaWxlIEdyZW1saW4gaXMgc2ltcGxlLCB0aGVyZSBhcmUgbmVhcmx5IDIwMAotc3RlcHMgaW4gYEdyYXBoVHJhdmVyc2FsYC4gQXMgc3VjaCwgbWVjaGFuaWNhbCBtZWFucyBvZiBob3N0IGxhbmd1YWdlIGVtYmVkZGluZyBhcmUgc3Ryb25nbHkgYWR2aXNlZC4KK3N0ZXAgdmFyaWF0aW9ucyBpbiBgR3JhcGhUcmF2ZXJzYWxgLiBBcyBzdWNoLCBtZWNoYW5pY2FsIG1lYW5zIG9mIGhvc3QgbGFuZ3VhZ2UgZW1iZWRkaW5nIGFyZSBzdHJvbmdseSBhZHZpc2VkLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS9pbmRleC5hc2NpaWRvYwppbmRleCAxMjUyZWUzLi4zMTg4YWYyIDEwMDY0NAotLS0gYS9kb2NzL3NyYy90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS9pbmRleC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS9pbmRleC5hc2NpaWRvYwpAQCAtNzksNyArNzksNyBAQAogLS0tLQogCiA8MT4gQ3JlYXRlcyB0aGUgYEdyYXBoYCBpbnN0YW5jZSB0aGF0IGlzIHRoZSBBUEkgdG8gdGhlCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI190aGVfZ3JhcGhfc3RydWN0dXJlW3N0cnVjdHVyZV0gb2YgdGhlIGdyYXBoLgorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC1zdHJ1Y3R1cmVbc3RydWN0dXJlXSBvZiB0aGUgZ3JhcGguCiA8Mj4gQ3JlYXRlcyB0aGUgYFRyYXZlcnNhbFNvdXJjZWAgd2hpY2ggaXMgdGhlIEFQSSBmb3IKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdGhlLWdyYXBoLXByb2Nlc3NbcHJvY2Vzc2luZ10gb3IKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3R1dG9yaWFscy9nZXR0aW5nLXN0YXJ0ZWQvI19ncmFwaF90cmF2ZXJzYWxfc3RheWluZ19zaW1wbGVbdHJhdmVyc2luZ10KQEAgLTk4LDggKzk4LDggQEAKICogYGNyZWF0ZU1vZGVybigpYCAtIFRoZSBUaW5rZXJQb3AgMy54IHJlcHJlc2VudGF0aW9uIG9mIHRoZSAiY2xhc3NpYyIgZ3JhcGgsIHdoZXJlIHRoZSBtYWluIGRpZmZlcmVuY2UgaXMgdGhhdCB2ZXJ0ZXgKIGxhYmVscyBhcmUgZGVmaW5lZCBhbmQgdGhlICJ3ZWlnaHQiIGVkZ2UgcHJvcGVydHkgaXMgYSBgZG91YmxlYCByYXRoZXIgdGhhbiBhIGBmbG9hdGAKIChsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9pbWFnZXMvdGlua2VycG9wLW1vZGVybi5wbmdbZGlhZ3JhbV0pLgotKiBgY3JlYXRlVGhlQ3JldygpYCAtIEEgZ3JhcGggdGhhdCBkZW1vbnN0cmF0ZXMgdXNhZ2Ugb2YgdGhlIG5ldyBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIFRpbmtlclBvcCAzLnggKGFzIGNvbXBhcmVkIHRvCi0yLngpIHN1Y2ggYXMgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyN2ZXJ0ZXgtcHJvcGVydGllc1t2ZXJ0ZXggcHJvcGVydGllcyBhbmQgbXVsdGktcHJvcGVydGllc10KKyogYGNyZWF0ZVRoZUNyZXcoKWAgLSBBIGdyYXBoIHRoYXQgZGVtb25zdHJhdGVzIHVzYWdlIG9mIHRoZSBuZXcgc3RydWN0dXJhbCBmZWF0dXJlcyBvZiBUaW5rZXJQb3AgMy54IHN1Y2ggYXMKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdmVydGV4LXByb3BlcnRpZXNbdmVydGV4IG1ldGEtcHJvcGVydGllcyBhbmQgbXVsdGktcHJvcGVydGllc10KIChsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9pbWFnZXMvdGhlLWNyZXctZ3JhcGgucG5nW2RpYWdyYW1dKS4KIAogW2dyZW1saW4tZ3Jvb3Z5XQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvdXBncmFkZS9hcHBlbmRpeC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3VwZ3JhZGUvYXBwZW5kaXguYXNjaWlkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlkZjBlNAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3JjL3VwZ3JhZGUvYXBwZW5kaXguYXNjaWlkb2MKQEAgLTAsMCArMSwxMTMgQEAKKy8vLy8KK0xpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQorY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCit0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCitUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAorKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKK3RoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8vLworCitbW2FwcGVuZGl4XV0KKz0gQXBwZW5kaXgKKworPT0gVGlua2VyUG9wIDIueAorCitUaGlzIHNlY3Rpb24gY29udGFpbnMgYSBmZXcgbm90ZXMgdGhhdCByZWZlcmVuY2UgZGlmZmVyZW5jZXMgYmV0d2VlbiBUaW5rZXJQb3AgMi54IGFuZCAzLnguCisKK09uZSBvZiB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiBUaW5rZXJQb3AgMi54IGFuZCBUaW5rZXJQb3AgMy54IGlzIHRoYXQgaW4gVGlua2VyUG9wIDMueCwgdGhlIEphdmEgY29udmVudGlvbiBvZgordXNpbmcgc2V0dGVycyBhbmQgZ2V0dGVycyB3YXMgYWJhbmRvbmVkIGluIGZhdm9yIG9mIGEgc3ludGF4IHRoYXQgaXMgbW9yZSBhbGlnbmVkIHdpdGggdGhlIHN5bnRheCBvZiBHcmVtbGluLUdyb292eSBpbgorVGlua2VyUG9wMi4gR2l2ZW4gdGhhdCBHcmVtbGluLUphdmE4IGFuZCBHcmVtbGluLUdyb292eSBhcmUgbmVhcmx5IGlkZW50aWNhbCBkdWUgdG8gdGhlIGluY2x1c2lvbiBvZiBKYXZhIDggbGFtYmRhcywgYQorYmlnIGVmZm9ydCB3YXMgbWFkZSB0byBlbnN1cmUgdGhhdCBib3RoIGxhbmd1YWdlcyB3ZXJlIGFzIHNpbWlsYXIgYXMgcG9zc2libGUuCisKK0luIGFkZGl0aW9uLCBUaW5rZXJQb3AyIGFuZCBiZWxvdyBtYWRlIGEgc2hhcnAgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgdmFyaW91cyBUaW5rZXJQb3AgcHJvamVjdHM6IEJsdWVwcmludHMsIFBpcGVzLAorR3JlbWxpbiwgRnJhbWVzLCBGdXJuYWNlLCBhbmQgUmV4c3Rlci4gV2l0aCBUaW5rZXJQb3AgMy54LCBhbGwgb2YgdGhlc2UgcHJvamVjdHMgaGF2ZSBiZWVuIG1lcmdlZCBhbmQgYXJlIGdlbmVyYWxseQora25vd24gYXMgR3JlbWxpbi4gKkJsdWVwcmludHMqIC0+IEdyZW1saW4gU3RydWN0dXJlIEFQSSA6ICpQaXBlcyogLT4gYEdyYXBoVHJhdmVyc2FsYCA6ICpGcmFtZXMqIC0+IGBUcmF2ZXJzYWxgIDoKKypGdXJuYWNlKiAtPiBgR3JhcGhDb21wdXRlcmAgYW5kIGBWZXJ0ZXhQcm9ncmFtYCA6ICpSZXhzdGVyKiAtPiBHcmVtbGluU2VydmVyLgorCitbW2dyYXBobWwtZm9ybWF0XV0KKz09PSBHcmFwaE1MIEZvcm1hdAorCitHcmFwaE1MIHdhcyBhIHN1cHBvcnRlZCBmb3JtYXQgaW4gVGlua2VyUG9wIDIueCwgYnV0IHRoZXJlIHdlcmUgc2V2ZXJhbCBpc3N1ZXMgdGhhdCBtYWRlIGl0IGluY29uc2lzdGVudCB3aXRoIHRoZQorc3BlY2lmaWNhdGlvbiB0aGF0IHdlcmUgY29ycmVjdGVkIGZvciAzLnguIEFzIGEgcmVzdWx0LCBhdHRlbXB0aW5nIHRvIHJlYWQgYSBHcmFwaE1MIGZpbGUgZ2VuZXJhdGVkIGJ5IDIueCB3aXRoIHRoZQorMy54IGBHcmFwaE1MUmVhZGVyYCB3aWxsIHJlc3VsdCBpbiBlcnJvci4gVG8gaGVscCB3aXRoIHRoaXMgcHJvYmxlbSwgYW4gWFNMVCBmaWxlIGlzIHByb3ZpZGVkIGFzIGEgcmVzb3VyY2UgaW4KK2BncmVtbGluLWNvcmVgIHdoaWNoIHdpbGwgdHJhbnNmb3JtIDIueCBHcmFwaE1MIHRvIDMueCBHcmFwaE1MLiBJdCBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKKworSW5wdXRTdHJlYW0gc3R5bGVzaGVldCA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSgidHAyLXRvLXRwMy1ncmFwaG1sLnhzbHQiKTsKK0ZpbGUgZGF0YWZpbGUgPSBuZXcgRmlsZSgnL3RtcC90cDItZ3JhcGhtbC54bWwnKTsKK0ZpbGUgb3V0ZmlsZSA9IG5ldyBGaWxlKCcvdG1wL3RwMy1ncmFwaG1sLnhtbCcpOworCitUcmFuc2Zvcm1lckZhY3RvcnkgdEZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKK1N0cmVhbVNvdXJjZSBzdHlsZXNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2Uoc3R5bGVzaGVldCk7CitUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IHRGYWN0b3J5Lm5ld1RyYW5zZm9ybWVyKHN0eWxlc291cmNlKTsKKworU3RyZWFtU291cmNlIHNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2UoZGF0YWZpbGUpOworU3RyZWFtUmVzdWx0IHJlc3VsdCA9IG5ldyBTdHJlYW1SZXN1bHQobmV3IEZpbGVXcml0ZXIob3V0ZmlsZSkpOwordHJhbnNmb3JtZXIudHJhbnNmb3JtKHNvdXJjZSwgcmVzdWx0KTsKKy0tLS0KKworPT09IFRpbmtlclBvcDIgRGF0YSBNaWdyYXRpb24KKworaW1hZ2U6ZGF0YS1taWdyYXRpb24ucG5nW3dpZHRoPTMwMCxmbG9hdD1yaWdodF0gRm9yIHRob3NlIHVzaW5nIFRpbmtlclBvcCAyLngsIG1pZ3JhdGluZyB0byBUaW5rZXJQb3AgMy54IHdpbGwgbWVhbiBhCitudW1iZXIgb2YgcHJvZ3JhbW1pbmcgY2hhbmdlcywgYnV0IG1heSBhbHNvIHJlcXVpcmUgYSBtaWdyYXRpb24gb2YgdGhlIGRhdGEgZGVwZW5kaW5nIG9uIHRoZSBncmFwaCBpbXBsZW1lbnRhdGlvbi4gIEZvcgorZXhhbXBsZSwgdHJ5aW5nIHRvIG9wZW4gYFRpbmtlckdyYXBoYCBkYXRhIGZyb20gVGlua2VyUG9wIDIueCB3aXRoIFRpbmtlclBvcCAzLnggY29kZSB3aWxsIG5vdCB3b3JrLCBob3dldmVyIG9wZW5pbmcgYQorVGlua2VyUG9wMiBgTmVvNGpHcmFwaGAgd2l0aCBhIFRpbmtlclBvcCAzLnggYE5lbzRqR3JhcGhgIHNob3VsZCB3b3JrIHByb3ZpZGVkIHRoZXJlIGFyZW4ndCBOZW80aiB2ZXJzaW9uIGNvbXBhdGliaWxpdHkKK21pc21hdGNoZXMgcHJldmVudGluZyB0aGUgcmVhZC4KKworSWYgc3VjaCBhIHNpdHVhdGlvbiBhcmlzZXMgdGhhdCBhIHBhcnRpY3VsYXIgVGlua2VyUG9wIDIueCBgR3JhcGhgIGNhbiBub3QgYmUgcmVhZCBieSBUaW5rZXJQb3AgMy54LCBhICJsZWdhY3kiIGRhdGEKK21pZ3JhdGlvbiBhcHByb2FjaCBleGlzdHMuICBUaGUgbWlncmF0aW9uIGludm9sdmVzIHdyaXRpbmcgdGhlIFRpbmtlclBvcDIgYEdyYXBoYCB0byBHcmFwaFNPTiwgdGhlbiByZWFkaW5nIGl0IHRvCitUaW5rZXJQb3AgMy54IHdpdGggdGhlIGBMZWdhY3lHcmFwaFNPTlJlYWRlcmAgKGEgbGltaXRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYEdyYXBoUmVhZGVyYCBpbnRlcmZhY2UpLgorCitUaGUgZm9sbG93aW5nIHJlcHJlc2VudHMgYW4gZXhhbXBsZSBtaWdyYXRpb24gb2YgdGhlICJjbGFzc2ljIiB0b3kgZ3JhcGguICBJbiB0aGlzIGV4YW1wbGUsIHRoZSAiY2xhc3NpYyIgZ3JhcGggaXMKK3NhdmVkIHRvIEdyYXBoU09OIHVzaW5nIFRpbmtlclBvcCAyLnguCisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gR3JlbWxpbi52ZXJzaW9uKCkKKz09PjIuNS56CitncmVtbGluPiBncmFwaCA9IFRpbmtlckdyYXBoRmFjdG9yeS5jcmVhdGVUaW5rZXJHcmFwaCgpCis9PT50aW5rZXJncmFwaFt2ZXJ0aWNlczo2IGVkZ2VzOjZdCitncmVtbGluPiBHcmFwaFNPTldyaXRlci5vdXRwdXRHcmFwaChncmFwaCwnL3RtcC90cDIuanNvbicsR3JhcGhTT05Nb2RlLkVYVEVOREVEKQorPT0+bnVsbAorLS0tLQorCitUaGUgYWJvdmUgY29uc29sZSBzZXNzaW9uIHVzZXMgdGhlIGBncmVtbGluLWdyb292eWAgZGlzdHJpYnV0aW9uIGZyb20gVGlua2VyUG9wMi4gIEl0IGlzIGltcG9ydGFudCB0byBnZW5lcmF0ZSB0aGUKK2B0cDIuanNvbmAgZmlsZSB1c2luZyB0aGUgYEVYVEVOREVEYCBtb2RlIGFzIGl0IHdpbGwgaW5jbHVkZSBkYXRhIHR5cGVzIHdoZW4gbmVjZXNzYXJ5IHdoaWNoIHdpbGwgaGVscCBsaW1pdAorImxvc3NpbmVzcyIgb24gdGhlIFRpbmtlclBvcCAzLnggc2lkZSB3aGVuIGltcG9ydGVkLiAgT25jZSBgdHAyLmpzb25gIGlzIGNyZWF0ZWQsIGl0IGNhbiB0aGVuIGJlIGltcG9ydGVkIHRvIGEKK1RpbmtlclBvcCAzLnggYEdyYXBoYC4KKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBHcmVtbGluLnZlcnNpb24oKQorPT0+eC55LnoKK2dyZW1saW4+IGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpCis9PT50aW5rZXJncmFwaFt2ZXJ0aWNlczowIGVkZ2VzOjBdCitncmVtbGluPiByID0gTGVnYWN5R3JhcGhTT05SZWFkZXIuYnVpbGQoKS5jcmVhdGUoKQorPT0+b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uTGVnYWN5R3JhcGhTT05SZWFkZXJANjQzMzc3MDIKK2dyZW1saW4+IHIucmVhZEdyYXBoKG5ldyBGaWxlSW5wdXRTdHJlYW0oJy90bXAvdHAyLmpzb24nKSwgZ3JhcGgpCis9PT5udWxsCitncmVtbGluPiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKKz09PmdyYXBodHJhdmVyc2Fsc291cmNlW3RpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0sIHN0YW5kYXJkXQorZ3JlbWxpbj4gZy5FKCkKKz09PmVbMTFdWzQtY3JlYXRlZC0+M10KKz09PmVbMTJdWzYtY3JlYXRlZC0+M10KKz09PmVbN11bMS1rbm93cy0+Ml0KKz09PmVbOF1bMS1rbm93cy0+NF0KKz09PmVbOV1bMS1jcmVhdGVkLT4zXQorPT0+ZVsxMF1bNC1jcmVhdGVkLT41XQorLS0tLQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3VwZ3JhZGUvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy91cGdyYWRlL2luZGV4LmFzY2lpZG9jCmluZGV4IGY4NmVkMDIuLmEyYmYyMGYgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3VwZ3JhZGUvaW5kZXguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvdXBncmFkZS9pbmRleC5hc2NpaWRvYwpAQCAtMzQsNiArMzQsOCBAQAogKuKAgkdyYXBoIExhbmd1YWdlIFByb3ZpZGVyCiAqIEdyYXBoIFBsdWdpbiBQcm92aWRlcgogCitpbmNsdWRlOjpyZWxlYXNlLTMuNC54LmFzY2lpZG9jW10KKwogaW5jbHVkZTo6cmVsZWFzZS0zLjMueC5hc2NpaWRvY1tdCiAKIGluY2x1ZGU6OnJlbGVhc2UtMy4yLngtaW5jdWJhdGluZy5hc2NpaWRvY1tdCkBAIC00MSwzICs0Myw1IEBACiBpbmNsdWRlOjpyZWxlYXNlLTMuMS54LWluY3ViYXRpbmcuYXNjaWlkb2NbXQogCiBpbmNsdWRlOjpyZWxlYXNlLTMuMC54LWluY3ViYXRpbmcuYXNjaWlkb2NbXQorCitpbmNsdWRlOjphcHBlbmRpeC5hc2NpaWRvY1tdCmRpZmYgLS1naXQgYS9kb2NzL3NyYy91cGdyYWRlL3JlbGVhc2UtMy40LnguYXNjaWlkb2MgYi9kb2NzL3NyYy91cGdyYWRlL3JlbGVhc2UtMy40LnguYXNjaWlkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MzYmY3MgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3JjL3VwZ3JhZGUvcmVsZWFzZS0zLjQueC5hc2NpaWRvYwpAQCAtMCwwICsxLDE0MzUgQEAKKy8vLy8KK0xpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQorY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCit0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCitUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAorKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKK3RoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8vLworCis9IFRpbmtlclBvcCAzLjQuMAorCitpbWFnZTo6aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FwYWNoZS90aW5rZXJwb3AvbWFzdGVyL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLnBuZ1t3aWR0aD0yMjVdCisKKypBdmFudC1HcmVtbGluIENvbnN0cnVjdGlvbiAjMyBmb3IgVGhlcmVtaW4gYW5kIEZsb3dlcnMqCisKKz09IFRpbmtlclBvcCAzLjQuNworCisqUmVsZWFzZSBEYXRlOiBOT1QgT0ZGSUNJQUxMWSBSRUxFQVNFRCBZRVQqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuNy9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtN1tjaGFuZ2Vsb2ddIGZvciBhCitjb21wbGV0ZSBsaXN0IG9mIGFsbCB0aGUgbW9kaWZpY2F0aW9ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgcmVsZWFzZS4KKworPT09IFVwZ3JhZGluZyBmb3IgVXNlcnMKKworPT09PSBDbGVhciBTY3JlZW4gQ29tbWFuZAorCitHcmVtbGluIENvbnNvbGUgbm93IGhhcyB0aGUgYDpjbHNgIGNvbW1hbmQgdG8gY2xlYXIgdGhlIHNjcmVlbi4gVGhpcyBmZWF0dXJlIGFjdHMgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gcGxhdGZvcm0KK3NwZWNpZmljIGNsZWFyIG9wZXJhdGlvbnMgYW5kIHByb3ZpZGVzIGEgY29tbW9uIHdheSB0byBwZXJmb3JtIHRoYXQgZnVuY3Rpb24uCisKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjM1N1tUSU5LRVJQT1AtMjM1N10KKworPT0gVGlua2VyUG9wIDMuNC42CisKKypSZWxlYXNlIERhdGU6IEZlYnJ1YXJ5IDIwLCAyMDIwKgorCitQbGVhc2Ugc2VlIHRoZSBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy40LjYvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy00LTZbY2hhbmdlbG9nXSBmb3IgYQorY29tcGxldGUgbGlzdCBvZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIHJlbGVhc2UuCisKKz09PSBVcGdyYWRpbmcgZm9yIFVzZXJzCisKKz09PT0gZHJvcCgpIFByb3BlcnRpZXMKKworSW4gMy40LjUgdGhlIGVxdWFsaXR5IG9mIHRoZSBgUHJvcGVydHlgIG9iamVjdCBjaGFuZ2VkIHRvIGFsbG93IGxhbmd1YWdlIGZlYXR1cmVzIGxpa2UgYGRlZHVwKClgIHRvIHdvcmsgbW9yZQorY29uc2lzdGVudGx5LiBBbiB1bm5vdGljZWQgc2lkZS1lZmZlY3Qgb2YgdGhhdCBjaGFuZ2Ugd2FzIHRoYXQgY2FsbGluZyBgZHJvcCgpYCBvbiBwcm9wZXJ0aWVzIHRoYXQgaGFkIHRoZSBzYW1lIHZhbHVlcword291bGQgbm90IHByb3Blcmx5IHJlbW92ZSBhbGwgdGhlaXIgaW5zdGFuY2VzLiBUaGlzIHByb2JsZW0gYWZmZWN0ZWQgZWRnZSBhbmQgbWV0YSBwcm9wZXJ0eSBpbnN0YW5jZXMgYnV0IG5vdCB0aGUKK3Byb3BlcnRpZXMgb2YgdmVydGljZXMgYXMgdGhlaXIgZXF1YWxpdHkgZGVmaW5pdGlvbnMgaGFkIG5vdCBjaGFuZ2VkLgorCitUaGlzIGlzc3VlIGlzIG5vdyByZXNvbHZlZCB3aXRoIHRoZSBzaWRlLWVmZmVjdCBiZWluZyB0aGF0IHRoZSBpbmNsdXNpb24gb2YgYGRyb3AoKWAgd2lsbCBkaXNhYmxlIGBMYXp5QmFycmllclN0cmF0ZWd5YAord2hpY2ggcHJldmVudHMgYXV0b21hdGljIGJ1bGtpbmcuIEluIG1vc3QgY29tbW9uIGNhc2VzLCB0aGUgaW1wYWN0IG9mIHRoYXQgb3B0aW1pemF0aW9uIGxvc3Mgc2hvdWxkIGJlIG1pbmltYWwgYW5kCitjb3VsZCBiZSBhZGRlZCBiYWNrIG1hbnVhbGx5IHdpdGggYGJhcnJpZXIoKWAgc3RlcHMgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcy4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIzMzhbVElOS0VSUE9QLTIzMzhdCisKKz09IFRpbmtlclBvcCAzLjQuNQorCisqUmVsZWFzZSBEYXRlOiBGZWJydWFyeSAzLCAyMDIwKgorCitQbGVhc2Ugc2VlIHRoZSBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy40LjUvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy00LTVbY2hhbmdlbG9nXSBmb3IgYQorY29tcGxldGUgbGlzdCBvZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIHJlbGVhc2UuCisKK1dBUk5JTkc6IEEgbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMzM4W2J1Z10gd2FzIG5vdGVkIGluIDMuNC41IHNvb24gYWZ0ZXIgcmVsZWFzZSBhbmQKK3dhcyBxdWlja2x5IHBhdGNoZWQuIFVzZXJzIGFuZCBwcm92aWRlcnMgc2hvdWxkIGF2b2lkIHZlcnNpb24gMy40LjUgYW5kIHNob3VsZCBpbnN0ZWFkIHByZWZlciB1c2FnZSBvZiAzLjQuNi4KKworPT09IFVwZ3JhZGluZyBmb3IgVXNlcnMKKworPT09PSBieShTdHJpbmcpIE1vZHVsYXRvcgorCitJdCBpcyBxdWl0ZSBjb21tb24gdG8gdXNlIHRoZSBgYnkoU3RyaW5nKWAgbW9kdWxhdG9yIHdoZW4gZG9pbmcgc29tZSBmb3Igb2Ygc2VsZWN0aW9uIG9wZXJhdGlvbiB3aGVyZSB0aGUgYFN0cmluZ2AgaXMKK3RoZSBrZXkgdG8gdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGBUcmF2ZXJzZXJgLCBkZW1vbnN0cmF0ZWQgYXMgZm9sbG93czoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkucHJvamVjdCgnbmFtZScpLmJ5KCduYW1lJykKKz09PltuYW1lOm1hcmtvXQorPT0+W25hbWU6dmFkYXNdCis9PT5bbmFtZTpsb3BdCis9PT5bbmFtZTpqb3NoXQorPT0+W25hbWU6cmlwcGxlXQorPT0+W25hbWU6cGV0ZXJdCitncmVtbGluPiBnLlYoKS5vcmRlcigpLmJ5KCduYW1lJykudmFsdWVzKCduYW1lJykKKz09Pmpvc2gKKz09PmxvcAorPT0+bWFya28KKz09PnBldGVyCis9PT5yaXBwbGUKKz09PnZhZGFzCistLS0tCisKK09mIGNvdXJzZSwgdGhpcyBhcHByb2FjaCB1c3VhbGx5IG9ubHkgd29ya3Mgd2hlbiB0aGUgY3VycmVudCBgVHJhdmVyc2VyYCBpcyBhbiBgRWxlbWVudGAuIElmIGl0IGlzIG5vdCBhbiBlbGVtZW50LCB0aGUKK2Vycm9yIGlzIHN3aWZ0IGFuZCBzZXZlcmU6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlTWFwKCkucHJvamVjdCgneCcpLmJ5KCduYW1lJykKK2phdmEudXRpbC5MaW5rZWRIYXNoTWFwIGNhbm5vdCBiZSBjYXN0IHRvIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQKK1R5cGUgJzpoZWxwJyBvciAnOmgnIGZvciBoZWxwLgorRGlzcGxheSBzdGFjayB0cmFjZT8gW3lOXW4KKy0tLS0KKworYW5kIHdoaWxlIGl0IGlzIHBlcmhhcHMgc3RyYWlnaHRmb3J3YXJkIHRvIHNlZSB0aGUgcHJvYmxlbSBpbiB0aGUgYWJvdmUgZXhhbXBsZSwgaXQgaXMgbm90IGFsd2F5cyBjbGVhciBleGFjdGx5IHdoZXJlCit0aGUgbWlzdGFrZSBpcy4gVGhlIGFib3ZlIGV4YW1wbGUgaXMgdGhlIHR5cGljYWwgbWlzdXNlIG9mIGBieShTdHJpbmcpYCBhbmQgY29tZXMgd2hlbiBvbmUgdHJpZXMgdG8gdHJlYXQgYSBgTWFwYCB0aGUKK3NhbWUgd2F5IGFzIGFuIGBFbGVtZW50YCAod2hpY2ggaXMgcXVpdGUgcmVhc29uYWJsZSkuCisKK0luIDMuNC41LCB0aGUgaXNzdWUgb2YgdXNpbmcgYGJ5KFN0cmluZylgIG9uIGEgYE1hcGAgYW5kIHRoZSBlcnJvciBtZXNzYWdpbmcgaGF2ZSBiZWVuIHJlc29sdmVkIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlTWFwKCkucHJvamVjdCgneCcpLmJ5KCduYW1lJykKKz09Plt4OlttYXJrb11dCis9PT5beDpbdmFkYXNdXQorPT0+W3g6W2xvcF1dCis9PT5beDpbam9zaF1dCis9PT5beDpbcmlwcGxlXV0KKz09Plt4OltwZXRlcl1dCitncmVtbGluPiBnLlYoKS5lbGVtZW50TWFwKCkub3JkZXIoKS5ieSgnbmFtZScpCis9PT5baWQ6NCxsYWJlbDpwZXJzb24sbmFtZTpqb3NoLGFnZTozMl0KKz09PltpZDozLGxhYmVsOnNvZnR3YXJlLG5hbWU6bG9wLGxhbmc6amF2YV0KKz09PltpZDoxLGxhYmVsOnBlcnNvbixuYW1lOm1hcmtvLGFnZToyOV0KKz09PltpZDo2LGxhYmVsOnBlcnNvbixuYW1lOnBldGVyLGFnZTozNV0KKz09PltpZDo1LGxhYmVsOnNvZnR3YXJlLG5hbWU6cmlwcGxlLGxhbmc6amF2YV0KKz09PltpZDoyLGxhYmVsOnBlcnNvbixuYW1lOnZhZGFzLGFnZToyN10KK2dyZW1saW4+IGcuVigpLnZhbHVlcygnbmFtZScpLnByb2plY3QoJ3gnKS5ieSgnbmFtZScpCitUaGUgYnkoIm5hbWUiKSBtb2R1bGF0b3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhIHRyYXZlcnNlciB0aGF0IGlzIGFuIEVsZW1lbnQgb3IgYSBNYXAgLSBpdCBpcyBiZWluZyBhcHBsaWVkIHRvIFttYXJrb10gYSBTdHJpbmcgY2xhc3MgaW5zdGVhZAorVHlwZSAnOmhlbHAnIG9yICc6aCcgZm9yIGhlbHAuCitEaXNwbGF5IHN0YWNrIHRyYWNlPyBbeU5dbgorLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjMxNFtUSU5LRVJQT1AtMjMxNF0KKworPT09PSBoYXNLZXkoKSBTdGVwIGFuZCBoYXNWYWx1ZSgpIFN0ZXAKKworUHJldmlvdXNseSwgYGhhc0tleSgpYC1zdGVwIGFuZCBgaGFzVmFsdWUoKWAtc3RlcCBvbmx5IGFwcGxpZWQgdG8gdmVydGV4IHByb3BlcnRpZXMuIEluIG9yZGVyIHRvIHN1cHBvcnQgbW9yZQorZ2VuZXJhbGl6ZWQgc2NlbmFyaW9zLCB0aGUgYmVoYXZpb3Igb2YgdGhlc2Ugc3RlcHMgd2VyZSBtb2RpZmllZCB0byBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdG8gYm90aCBlZGdlIHByb3BlcnRpZXMKK2FuZCBtZXRhLXByb3BlcnRpZXMuCisKK1RoZSBvcmlnaW5hbCBiZWhhdmlvciBpcyBkZW1vbnN0cmF0ZWQgYXMgZm9sbG93czoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlVGhlQ3JldygpCis9PT50aW5rZXJncmFwaFt2ZXJ0aWNlczo2IGVkZ2VzOjE0XQorZ3JlbWxpbj4gZyA9IGdyYXBoLnRyYXZlcnNhbCgpCis9PT5ncmFwaHRyYXZlcnNhbHNvdXJjZVt0aW5rZXJncmFwaFt2ZXJ0aWNlczo2IGVkZ2VzOjE0XSwgc3RhbmRhcmRdCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuaGFzS2V5KCdzaW5jZScpCis9PT5UaW5rZXJQcm9wZXJ0eSBjYW5ub3QgYmUgY2FzdCB0byBFbGVtZW50CitncmVtbGluPiBnLlYoKS5wcm9wZXJ0aWVzKCJsb2NhdGlvbiIpLnByb3BlcnRpZXMoKS5oYXNLZXkoInN0YXJ0VGltZSIpCis9PT5UaW5rZXJQcm9wZXJ0eSBjYW5ub3QgYmUgY2FzdCB0byBFbGVtZW50CitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuaGFzVmFsdWUoMjAxMCkKKz09PlRpbmtlclByb3BlcnR5IGNhbm5vdCBiZSBjYXN0IHRvIEVsZW1lbnQKK2dyZW1saW4+IGcuVigpLnByb3BlcnRpZXMoImxvY2F0aW9uIikucHJvcGVydGllcygpLmhhc1ZhbHVlKDIwMDUpCis9PT5UaW5rZXJQcm9wZXJ0eSBjYW5ub3QgYmUgY2FzdCB0byBFbGVtZW50CistLS0tCisKK1RoZSBuZXcgYmVoYXZpb3Igb2YgYGhhc0tleSgpYCB3aXRoIGVkZ2UgcHJvcGVydHkgY2FuIGJlIHNlZW4gYXM6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5FKCkucHJvcGVydGllcygpLmhhc0tleSgnc2luY2UnKQorPT0+cFtzaW5jZS0+MjAwOV0KKz09PnBbc2luY2UtPjIwMTBdCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2luY2UtPjIwMTJdCistLS0tCisKK1NpbWlsYXIgYmVoYXZpb3Igb2YgZm9yIGBoYXNLZXkoKWAgY2FuIGJlIHNlZW4gd2l0aCBtZXRhLXByb3BlcnRpZXM6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkucHJvcGVydGllcygpLmhhc0tleSgnbG9jYXRpb24nKS5wcm9wZXJ0aWVzKCkuaGFzS2V5KCdzdGFydFRpbWUnKQorPT0+cFtzdGFydFRpbWUtPjE5OTddCis9PT5wW3N0YXJ0VGltZS0+MjAwMV0KKz09PnBbc3RhcnRUaW1lLT4yMDA0XQorPT0+cFtzdGFydFRpbWUtPjIwMDRdCis9PT5wW3N0YXJ0VGltZS0+MjAwNV0KKz09PnBbc3RhcnRUaW1lLT4yMDA1XQorPT0+cFtzdGFydFRpbWUtPjE5OTBdCis9PT5wW3N0YXJ0VGltZS0+MjAwMF0KKz09PnBbc3RhcnRUaW1lLT4yMDA2XQorPT0+cFtzdGFydFRpbWUtPjIwMDddCis9PT5wW3N0YXJ0VGltZS0+MjAxMV0KKz09PnBbc3RhcnRUaW1lLT4yMDE0XQorPT0+cFtzdGFydFRpbWUtPjE5ODJdCis9PT5wW3N0YXJ0VGltZS0+MjAwOV0KKy0tLS0KKworVGhlIG5ldyBiZWhhdmlvciBmb3IgYGhhc1ZhbHVlKClgIHdpdGggZWRnZSBwcm9wZXJ0eSBpcyBhcyBmb2xsb3dzOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKS5oYXNWYWx1ZSgyMDEwKQorPT0+cFtzaW5jZS0+MjAxMF0KKz09PnBbc2luY2UtPjIwMTBdCistLS0tCisKK2FuZCBzaW1pbGFybHkgd2l0aCBgaGFzVmFsdWUoKWAgZm9yIG1ldGEtcHJvcGVydGllczoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS5wcm9wZXJ0aWVzKCkuaGFzS2V5KCdsb2NhdGlvbicpLnByb3BlcnRpZXMoKS5oYXNWYWx1ZSgyMDA1KQorPT0+cFtlbmRUaW1lLT4yMDA1XQorPT0+cFtlbmRUaW1lLT4yMDA1XQorPT0+cFtzdGFydFRpbWUtPjIwMDVdCis9PT5wW3N0YXJ0VGltZS0+MjAwNV0KKy0tLS0KKworbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzMzW1RJTktFUlBPUC0xNzMzXQorCis9PT09IFByb3BlcnRpZXMgRXF1YWxpdHkKKworVGhlcmUgd2FzIHNvbWUgaW5jb25zaXN0ZW5jeSBpbiB0ZXJtcyBvZiBgUHJvcGVydHlgIGVxdWFsaXR5IGluIGVhcmxpZXIgdmVyc2lvbnMgb2YgR3JlbWxpbi4gRXF1YWxpdHkgaXMgbm93CitkZWZpbmVkIGFzIGZvbGxvd3M6IHR3byBwcm9wZXJ0aWVzIGFyZSBlcXVhbCBvbmx5IGlmIHRoZWlyIGtleSBhbmQgdmFsdWUgYXJlIGVxdWFsLCBldmVuIGlmIHRoZWlyIHBhcmVudCBlbGVtZW50cyBhcmUKK25vdCBlcXVhbC4gSXQgbWFrZXMgc2Vuc2Ugd2hlbiBjb21wYXJpbmcgcHJvcGVydGllcyByZWdhcmRsZXNzIG9mIHBhcmVudCBlbGVtZW50cyB0byBqdXN0IGZvY3VzIG9uIHRoZSBwcm9wZXJ0eSBpdHNlbGYKK2FzIGl0IHlpZWxkcyBtb3JlIHVuaWZvcm0gYW5kIGNvbmNpc2UgcmVzdWx0cyB0byByZWFzb24gYWJvdXQuIFRoZSBiZW5lZml0IG9mIHRoaXMgY2hhbmdlIGlzIHRoYXQgdGhlIGJlaGF2aW9yIG9mCitwcm9wZXJ0eSBjb21wYXJpc29uIGFuZCBgZGVkdXAoKWAtc3RlcCBhcmUgcHJlZGljdGFibGUsIGFuZCBpdCB3aWxsIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBpZiB0aGUgcHJvcGVydHkgaXMgZGV0YWNoZWQKK2Zyb20gdGhlIHBhcmVudCBlbGVtZW50LgorCitOT1RFOiBUaGUgInByb3BlcnR5IiBoZXJlIHJlZmVyIHRvIGVkZ2UgcHJvcGVydGllcyBhbmQgbWV0YS1wcm9wZXJ0aWVzLCB0aHVzIGV4Y2x1ZGluZyB2ZXJ0ZXggcHJvcGVydHkuCisKK1RoZSBvbGQgYmVoYXZpb3IgY2FuIGJlIHNob3duIHVzaW5nICJUaGUgQ3JldyIgdG95IGdyYXBoIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5FKCkucHJvcGVydGllcygpLmNvdW50KCkKKz09PjEzCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkKKz09PnBbc2luY2UtPjIwMDldCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtza2lsbC0+NF0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NraWxsLT40XQorPT0+cFtzaW5jZS0+MjAxMl0KKz09PnBbc2tpbGwtPjNdCis9PT5wW3NraWxsLT4zXQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2tpbGwtPjNdCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuZGVkdXAoKS5jb3VudCgpCis9PT4xMworZ3JlbWxpbj4gZy5FKCkuZGVkdXAoKS5wcm9wZXJ0aWVzKCkKKz09PnBbc2luY2UtPjIwMDldCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtza2lsbC0+NF0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NraWxsLT40XQorPT0+cFtzaW5jZS0+MjAxMl0KKz09PnBbc2tpbGwtPjNdCis9PT5wW3NraWxsLT4zXQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2tpbGwtPjNdCistLS0tCisKK1RoZSBuZXcgbW9yZSBjb25zaXN0ZW50IGJlaGF2aW9yIGlzIGRlbW9uc3RyYXRlZCBiZWxvdzoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuY291bnQoKQorPT0+MTMKK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKQorPT0+cFtzaW5jZS0+MjAwOV0KKz09PnBbc2luY2UtPjIwMTBdCis9PT5wW3NraWxsLT40XQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2luY2UtPjIwMTBdCis9PT5wW3NpbmNlLT4yMDExXQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2tpbGwtPjRdCis9PT5wW3NpbmNlLT4yMDEyXQorPT0+cFtza2lsbC0+M10KKz09PnBbc2tpbGwtPjNdCis9PT5wW3NraWxsLT41XQorPT0+cFtza2lsbC0+M10KK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKS5kZWR1cCgpLmNvdW50KCkKKz09PjcKK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKS5kZWR1cCgpCis9PT5wW3NpbmNlLT4yMDA5XQorPT0+cFtzaW5jZS0+MjAxMF0KKz09PnBbc2tpbGwtPjRdCis9PT5wW3NraWxsLT41XQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2luY2UtPjIwMTJdCis9PT5wW3NraWxsLT4zXQorLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjMxOFtUSU5LRVJQT1AtMjMxOF0KKworPT09IFVwZ3JhZGluZyBmb3IgUHJvdmlkZXJzCisKKz09PT0gR3JhcGggRHJpdmVyIFByb3ZpZGVycworCis9PT09PSBHcmFwaEJpbmFyeSBBUEkgQ2hhbmdlCisKK0luIEdyYXBoQmluYXJ5IHNlcmlhbGl6YXRpb24sIEphdmEgYEdyYXBoQmluYXJ5UmVhZGVyYCBhbmQgYEdyYXBoQmluYXJ5V3JpdGVyYCwgYWxvbmcgd2l0aCBgVHlwZVNlcmlhbGl6ZXI8VD5gCitpbnRlcmZhY2Ugbm93IHRha2UgYSBgQnVmZmVyYCBpbnN0YW5jZSBpbnN0ZWFkIG9mIE5ldHR5J3MgYEJ5dGVCdWZgLCB0aGF0IHdheSB3ZSBhdm9pZCBleHBvc2luZyBOZXR0eSdzIEFQSSBpbiBvdXIgb3duCitwdWJsaWMgQVBJLgorCitVc2luZyBvdXIgb3duIGBCdWZmZXJgIGludGVyZmFjZSwgd3JhcHBpbmcgTmV0dHkncyBidWZmZXIgQVBJLCBhbGxvd2VkIHVzIHRvIG1vdmUgYFR5cGVTZXJpYWxpemVyPFQ+YCBpbXBsZW1lbnRhdGlvbnMsCit0aGUgcmVhZGVyIGFuZCB0aGUgd3JpdGVyIHRvIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnlgIHBhY2thZ2UgaW4gYGdyZW1saW4tY29yZWAuCisKK0FkZGl0aW9uYWxseSwgYEdyYXBoQmluYXJ5UmVhZGVyYCBhbmQgYEdyYXBoQmluYXJ5V3JpdGVyYCBtZXRob2RzIG5vdyB0aHJvdyBhbiBqYXZhJ3MgYElPRXhjZXB0aW9uYCwgaW5zdGVhZCBvZiBvdXIKK293biBgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbmAuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMzA1W1RJTktFUlBPUC0yMzA1XQorCis9PSBUaW5rZXJQb3AgMy40LjQKKworKlJlbGVhc2UgRGF0ZTogT2N0b2JlciAxNCwgMjAxOSoKKworUGxlYXNlIHNlZSB0aGUgbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuNC40L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtNC00W2NoYW5nZWxvZ10gZm9yIGEgY29tcGxldGUgbGlzdCBvZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIHJlbGVhc2UuCisKKz09PSBVcGdyYWRpbmcgZm9yIFVzZXJzCisKKz09PT0gUHl0aG9uIEdyYXBoQmluYXJ5CisKK1RoZXJlIGlzIG5vdyBzdXBwb3J0IGZvciBHcmFwaEJpbmFyeSBpbiBQeXRob24uIEFzIHdpdGggSmF2YSwgaXQgcmVtYWlucyBhIHdvcmtpbmcgYnV0IGV4cGVyaW1lbnRhbCBmb3JtYXQgdGhhdCBpcworc3RpbGwgdW5kZXIgZXZhbHVhdGlvbi4gVGhpcyBuZXcgc2VyaWFsaXplciBjYW4gYmUgdXNlZCBieSBmaXJzdCBlbnN1cmluZyB0aGF0IGl0IGlzIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyIGFuZCB0aGVuCitjb25maWd1cmluZyB0aGUgY29ubmVjdGlvbiBhcyBmb2xsb3dzOgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK2Zyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLnNlcmlhbGl6ZXIgaW1wb3J0IEdyYXBoQmluYXJ5U2VyaWFsaXplcnNWMQorZ3JlbWxpbl9zZXJ2ZXJfdXJsID0gIndzOi8vMTcyLjE3LjAuMjo0NTk0MC9ncmVtbGluIgorcmVtb3RlX2Nvbm4gPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGdyZW1saW5fc2VydmVyX3VybCwgJ2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vfc2VyaWFsaXplcj1HcmFwaEJpbmFyeVNlcmlhbGl6ZXJzVjEoKSkKK2cgPSBHcmFwaCgpLnRyYXZlcnNhbCgpLndpdGhSZW1vdGUocmVtb3RlX2Nvbm4pCistLS0tCisKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjI3OVtUSU5LRVJQT1AtMjI3OV0KKworPT09PSBlbGVtZW50TWFwKCkgU3RlcAorCitTaW5jZSBncmFwaCBlbGVtZW50cyAoaS5lLiBgVmVydGV4YCwgYEVkZ2VgLCBhbmQgYFZlcnRleFByb3BlcnR5YCkgYXJlIHJldHVybmVkIGZyb20gcmVtb3RlIHNvdXJjZXMgYXMgcmVmZXJlbmNlcworKGkuZS4gd2l0aG91dCBwcm9wZXJ0aWVzKSwgb25lIG9mIHRoZSBtb3JlIGNvbW1vbiBuZWVkcyBmb3IgR3JlbWxpbiB1c2VycyBpcyB0aGUgYWJpbGl0eSB0byBlYXNpbHkgcmV0dXJuIGEgYE1hcGAKK3JlcHJlc2VudGF0aW9uIG9mIHRoZSBlbGVtZW50cyB0aGF0IHRoZXkgYXJlIHF1ZXJ5aW5nLiBUeXBpY2FsbHksIHN1Y2ggdHJhbnNmb3JtYXRpb25zIGFyZSBoYW5kbGVkIGJ5IGB2YWx1ZU1hcCgpYDoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS52YWx1ZU1hcCh0cnVlKQorPT0+W2lkOjEsbGFiZWw6cGVyc29uLG5hbWU6W21hcmtvXSxhZ2U6WzI5XV0KK2dyZW1saW4+IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykudmFsdWVNYXAoKS5ieSh1bmZvbGQoKSkKKz09PltuYW1lOm1hcmtvLGFnZToyOV0KKy0tLS0KKworb3IgYnkgd2F5IG9mIGBwcm9qZWN0KClgOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLgorLi4uLi4uMT4gICBwcm9qZWN0KCduYW1lJywnYWdlJywndmlkJywndmxhYmVsJykuCisuLi4uLi4yPiAgICAgYnkoJ25hbWUnKS4KKy4uLi4uLjM+ICAgICBieSgnYWdlJykuCisuLi4uLi40PiAgICAgYnkoaWQpLgorLi4uLi4uNT4gICAgIGJ5KGxhYmVsKQorPT0+W25hbWU6bWFya28sYWdlOjI5LHZpZDoxLHZsYWJlbDpwZXJzb25dCistLS0tCisKK1doaWxlIGB2YWx1ZU1hcCgpYCB3b3JrcyByZWFzb25hYmx5IHdlbGwgZm9yIGBWZXJ0ZXhgIGFuZCBgVmVydGV4UHJvcGVydHlgIHRyYW5zZm9ybWF0aW9ucyBpdCBkb2VzIGxlc3Mgd2VsbCBmb3IgYEVkZ2VgCithcyBpdCBmYWlscyB0byBpbmNsdWRlIGluY2lkZW50IHZlcnRpY2VzOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLkUoMTEpLnZhbHVlTWFwKHRydWUpCis9PT5baWQ6MTEsbGFiZWw6Y3JlYXRlZCx3ZWlnaHQ6MC40XQorLS0tLQorCitUaGlzIGxpbWl0YXRpb24gZm9yY2VzIGEgZmFpcmx5IHZlcmJvc2UgdXNlIG9mIGBwcm9qZWN0KClgIGZvciB3aGF0IGlzIGEgcmVhc29uYWJseSBjb21tb24gcmVxdWlyZW1lbnQ6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuRSgxMikudW5pb24odmFsdWVNYXAodHJ1ZSksCisuLi4uLi4xPiAgICAgICAgICAgICAgIHByb2plY3QoJ2luVicsJ291dFYnLCdpblZMYWJlbCcsJ291dFZMYWJlbCcpLgorLi4uLi4uMj4gICAgICAgICAgICAgICAgIGJ5KGluVigpLmlkKCkpLgorLi4uLi4uMz4gICAgICAgICAgICAgICAgIGJ5KG91dFYoKS5pZCgpKS4KKy4uLi4uLjQ+ICAgICAgICAgICAgICAgICBieShpblYoKS5sYWJlbCgpKS4KKy4uLi4uLjU+ICAgICAgICAgICAgICAgICBieShvdXRWKCkubGFiZWwoKSkpLnVuZm9sZCgpLgorLi4uLi4uNj4gICAgICAgICAgICAgICBncm91cCgpLgorLi4uLi4uNz4gICAgICAgICAgICAgICAgIGJ5KGtleXMpLgorLi4uLi4uOD4gICAgICAgICAgICAgICAgIGJ5KHNlbGVjdCh2YWx1ZXMpKQorPT0+W2luVjozLGlkOjEyLGluVkxhYmVsOnNvZnR3YXJlLHdlaWdodDowLjIsb3V0VkxhYmVsOnBlcnNvbixsYWJlbDpjcmVhdGVkLG91dFY6Nl0KKy0tLS0KKworQnkgaW50cm9kdWNpbmcgYGVsZW1lbnRNYXAoKWAtc3RlcCwgdGhlcmUgaXMgbm93IGEgc2luZ2xlIHN0ZXAgdGhhdCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIHRyYW5zZm9ybWF0aW9uIHJlcXVpcmVtZW50cworZm9yIGFsbCB0aHJlZSBncmFwaCBlbGVtZW50czoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5lbGVtZW50TWFwKCkKKz09PltpZDoxLGxhYmVsOnBlcnNvbixuYW1lOm1hcmtvLGFnZToyOV0KK2dyZW1saW4+IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykuZWxlbWVudE1hcCgnbmFtZScpCis9PT5baWQ6MSxsYWJlbDpwZXJzb24sbmFtZTptYXJrb10KK2dyZW1saW4+IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykucHJvcGVydGllcygnbmFtZScpLmVsZW1lbnRNYXAoKQorPT0+W2lkOjAsa2V5Om5hbWUsdmFsdWU6bWFya29dCitncmVtbGluPiBnLkUoMTEpLmVsZW1lbnRNYXAoKQorPT0+W2lkOjExLGxhYmVsOmNyZWF0ZWQsSU46W2lkOjMsbGFiZWw6c29mdHdhcmVdLE9VVDpbaWQ6NCxsYWJlbDpwZXJzb25dLHdlaWdodDowLjRdCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjg0W1RJTktFUlBPUC0yMjg0XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC40L3JlZmVyZW5jZS8jZWxlbWVudG1hcC1zdGVwW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXQorCis9PSBUaW5rZXJQb3AgMy40LjMKKworKlJlbGVhc2UgRGF0ZTogQXVndXN0IDUsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMy9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtM1tjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IERlcHJlY2F0ZWQgc3RvcmUoKQorCitUaGUgYHN0b3JlKClgLXN0ZXAgYW5kIGBhZ2dyZWdhdGUoKWAtc3RlcCBkbyB0aGUgc2FtZSB0aGluZyBpbiBkaWZmZXJlbnQgd2F5cywgd2hlcmUgdGhlIGZvcm1lciBpcyBsYXp5IGFuZCB0aGUgbGF0dGVyCitpcyBlYWdlciBpbiB0aGUgc2lkZS1lZmZlY3QgY29sbGVjdGlvbiBvZiBvYmplY3RzIGZyb20gdGhlIHRyYXZlcnNhbC4gVGhlIGRpZmZlcmVudCBiZWhhdmlvcnMgY2FuIGJlIHRob3VnaHQgb2YgYXMKK2RpZmZlcmluZyBhcHBsaWNhdGlvbnMgb2YgYFNjb3BlYCB3aGVyZSBgZ2xvYmFsYCBpcyBlYWdlciBhbmQgYGxvY2FsYCBpcyBsYXp5LiBBcyBhIHJlc3VsdCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYm90aAorc3RlcHMgd2hlbiBvbmUgd2lsbCBkby4KKworQXMgb2YgMy40LjMsIGBzdG9yZShTdHJpbmcpYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgYWdncmVnYXRlKFNjb3BlLCBTdHJpbmcpYCB3aGVyZSB0aGUgYFNjb3BlYCBzaG91bGQgYmUgc2V0Cit0byBgbG9jYWxgIHRvIGVuc3VyZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFzIGBzdG9yZSgpYC4gTm90ZSB0aGF0IGBhZ2dyZWdhdGUoJ3gnKWAgaXMgdGhlIHNhbWUgYXMKK2BhZ2dyZWdhdGUoZ2xvYmFsLCd4JylgLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTU1M1tUSU5LRVJQT1AtMTU1M10KKworPT09PSBEZXByZWNhdGUgR3J5byBpbiBHcmVtbGluIFNlcnZlcgorCitHcnlvIGlzIG5vdyBkZXByZWNhdGVkIGFzIGEgc2VyaWFsaXphdGlvbiBmb3JtYXQgZm9yIEdyZW1saW4gU2VydmVyLCBob3dldmVyLCBpdCBpcyBzdGlsbCBjb25maWd1cmVkIGFzIGEgZGVmYXVsdAorb3B0aW9uIGluIHRoZSBzYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyBwYWNrYWdlZCB3aXRoIHRoZSBzZXJ2ZXIuIFRoZSBwcmVmZXJyZWQgc2VyaWFsaXphdGlvbiBvcHRpb24gc2hvdWxkIG5vdyBiZQorR3JhcGhCaW5hcnkuIE5vdGUgdGhhdCBHcmVtbGluIENvbnNvbGUgaXMgbm93IGNvbmZpZ3VyZWQgdG8gdXNlIEdyYXBoQmluYXJ5IGJ5IGRlZmF1bHQuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjUwW1RJTktFUlBPUC0yMjUwXQorCis9PT0gVXBncmFkaW5nIGZvciBQcm92aWRlcnMKKworPT09PSBHcmFwaCBEcml2ZXIgUHJvdmlkZXJzCisKKz09PT09IEdyZW1saW4gU2VydmVyIFRlc3QgQ29uZmlndXJhdGlvbgorCitHcmVtbGluIFNlcnZlciBoYXMgYSB0ZXN0IGNvbmZpZ3VyYXRpb24gYnVpbHQgaW50byBpdHMgTWF2ZW4gYnVpbGQgcHJvY2VzcyB3aGljaCBhbGwgaW50ZWdyYXRpb24gdGVzdHMgYW5kIEdyZW1saW4KK0xhbmd1YWdlIFZhcmlhbnRzIHVzZSB0byB2YWxpZGF0ZSB0aGVpciBvcGVyYXRpb25zLiBXaGlsZSB0aGlzIGFwcHJvYWNoIGhhcyB3b3JrZWQgcmVhbGx5IHdlbGwgZm9yIHRlc3QgYXV0b21hdGlvbgord2l0aGluIE1hdmVuLCB0aGVyZSBhcmUgb2Z0ZW4gdGltZXMgd2hlcmUgaXQgd291bGQgYmUgaGVscGZ1bCB0byBzaW1wbHkgaGF2ZSBHcmVtbGluIFNlcnZlciBydW5uaW5nIHdpdGggdGhhdAorY29uZmlndXJhdGlvbi4gVGhpcyBuZWVkIGlzIGVzcGVjaWFsbHkgdHJ1ZSB3aGVuIGRldmVsb3BpbmcgR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50cyB3aGljaCBpcyBzb21ldGhpbmcgdGhhdCBpcyBkb25lCitvdXRzaWRlIG9mIHRoZSBKVk0uCisKK1RoaXMgcmVsZWFzZSBpbnRyb2R1Y2VzIGEgRG9ja2VyIHNjcmlwdCB0aGF0IHdpbGwgc3RhcnQgR3JlbWxpbiBTZXJ2ZXIgd2l0aCB0aGlzIHRlc3QgY29uZmlndXJhdGlvbi4gSXQgY2FuIGJlIHN0YXJ0ZWQKK3dpdGg6CisKK1tzb3VyY2UsdGV4dF0KK2RvY2tlci9ncmVtbGluLXNlcnZlci5zaAorCitPbmNlIHN0YXJ0ZWQsIGl0IGlzIHRoZW4gcG9zc2libGUgdG8gcnVuIEdMViB0ZXN0cyBkaXJlY3RseSBmcm9tIGEgZGVidWdnZXIgYWdhaW5zdCB0aGlzIGluc3RhbmNlIHdoaWNoIHNob3VsZAoraG9wZWZ1bGx5IHJlZHVjZSBkZXZlbG9wbWVudCBmcmljdGlvbi4KKworc2VlOiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjQuMy9kZXYvZGV2ZWxvcGVyLyNkb2NrZXItaW50ZWdyYXRpb25bRGV2ZWxvcGVyIERvY3VtZW50YXRpb25dCisKKz09IFRpbmtlclBvcCAzLjQuMgorCisqUmVsZWFzZSBEYXRlOiBNYXkgMjgsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMi9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMltjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IFBlciBSZXF1ZXN0IE9wdGlvbnMKKworSW4gMy40LjAsIHRoZSBub3Rpb24gb2YgYFJlcXVlc3RPcHRpb25zYCB3ZXJlIGFkZGVkIHNvIHRoYXQgdXNlcnMgY291bGQgaGF2ZSBhbiBlYXNpZXIgd2F5IHRvIGNvbmZpZ3VyZSBzZXR0aW5ncyBvbgoraW5kaXZpZHVhbCByZXF1ZXN0cyBtYWRlIHRocm91Z2ggdGhlIEphdmEgZHJpdmVyLiBXaGlsZSB0aGF0IGNoYW5nZSBwcm92aWRlZCBhIHdheSB0byBzZXQgdGhvc2UgY29uZmlndXJhdGlvbnMgZm9yCitzY3JpcHQgYmFzZWQgcmVxdWVzdHMsIGl0IGRpZG4ndCBpbmNsdWRlIG9wdGlvbnMgdG8gbWFrZSB0aG9zZSBzZXR0aW5ncyBpbiBhIGBUcmF2ZXJzYWxgIHN1Ym1pdHRlZCB2aWEgYEJ5dGVjb2RlYC4gSW4KK3RoaXMgcmVsZWFzZSB0aG9zZSBzZXR0aW5ncyBiZWNvbWUgYXZhaWxhYmxlIHZpYSBgd2l0aCgpYCBzdGVwIG9uIHRoZSBgVHJhdmVyc2FsU291cmNlYCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShjb25mKTsKK0xpc3Q8VmVydGV4PiB2ZXJ0aWNlcyA9IGcud2l0aChUb2tlbnMuQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VULCA1MDBMKS5WKCkub3V0KCJrbm93cyIpLnRvTGlzdCgpCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjExW1RJTktFUlBPUC0yMjExXQorCis9PT09IEdyZW1saW4gQ29uc29sZSBUaW1lb3V0CisKK1RoZSBHcmVtbGluIENvbnNvbGUgdGltZW91dCB0aGF0IGlzIHNldCBieSBgOnJlbW90ZSBjb25maWcgdGltZW91dCB4YCB3YXMgY2xpZW50LXNpZGUgb25seSBpbiBwcmlvciB2ZXJzaW9ucywgd2hpY2gKK21lYW50IHRoYXQgaWYgdGhlIGNvbnNvbGUgdGltZW91dCB3YXMgbGVzcyB0aGFuIHRoZSBzZXJ2ZXIgdGltZW91dCB0aGUgY2xpZW50IHdvdWxkIHRpbWVvdXQgYnV0IHRoZSBzZXJ2ZXIgbWlnaHQgc3RpbGwKK2JlIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuIFNpbWlsYXJseSwgYSBsb25nZXIgdGltZW91dCBvbiB0aGUgY29uc29sZSB3b3VsZCBub3QgY2hhbmdlIHRoZSBzZXJ2ZXIgYW5kIHRoZSB0aW1lb3V0Cit3b3VsZCBvY2N1ciBzb29uZXIgdGhhbiBleHBlY3RlZC4gVGhlc2UgZGlzY3JlcGFuY2llcyBvZnRlbiBsZWQgdG8gY29uZnVzaW9uLgorCitBcyBvZiAzLjQuMCwgdGhlIEphdmEgRHJpdmVyIEFQSSBhbGxvd2VkIGZvciB0aW1lb3V0IHNldHRpbmdzIHRvIGJlIG1vcmUgZWFzaWx5IHBhc3NlZCBwZXIgcmVxdWVzdCwgc28gdGhlIGNvbnNvbGUKK3dhcyBtb2RpZmllZCBmb3IgdGhpcyBjdXJyZW50IHZlcnNpb24gdG8gcGFzcyB0aGUgY29uc29sZSB0aW1lb3V0IGZvciBlYWNoIHJlbW90ZSBzdWJtaXNzaW9uIHRodXMgeWllbGRpbmcgbW9yZQorY29uc2lzdGVudCBhbmQgaW50dWl0aXZlIGJlaGF2aW9yLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjIwM1tUSU5LRVJQT1AtMjIwM10KKworPT09IFVwZ3JhZGluZyBmb3IgUHJvdmlkZXJzCisKKz09PT0gR3JhcGggU3lzdGVtIFByb3ZpZGVycworCis9PT09PSBXYXJuaW5ncworCitJdCBpcyBub3cgcG9zc2libGUgdG8gcGFzcyB3YXJuaW5ncyBvdmVyIHRoZSBHcmVtbGluIFNlcnZlciBwcm90b2NvbCB1c2luZyBhIGB3YXJuaW5nc2Agc3RhdHVzIGF0dHJpYnV0ZS4gVGhlIHdhcm5pbmdzCithcmUgZXhwZWN0ZWQgdG8gYmUgYSBzdHJpbmcgdmFsdWUgb3IgYSBgTGlzdGAgb2Ygc3RyaW5nIHZhbHVlcyB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgdGhlIHVzZXIgb3IgdG9vbHMgdGhhdCBjaGVjaworZm9yIHRoYXQgc3RhdHVzIGF0dHJpYnV0ZS4gTm90ZSB0aGF0IEdyZW1saW4gQ29uc29sZSBpcyBvbmUgc3VjaCB0b29sIHRoYXQgd2lsbCByZXNwb25kIHRvIHRoaXMgc3RhdHVzIGF0dHJpYnV0ZSAtIGl0Cit3aWxsIHByaW50IHRoZSBtZXNzYWdlcyB0byB0aGUgY29uc29sZSBhcyB0aGV5IGFyZSBkZXRlY3RlZCB3aGVuIGRvaW5nIHJlbW90ZSBzY3JpcHQgc3VibWlzc2lvbnMuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjE2W1RJTktFUlBPUC0yMjE2XQorCis9PT09IEdyYXBoIERyaXZlciBQcm92aWRlcnMKKworPT09PT0gR3JhcGhCaW5hcnkgQVBJIENoYW5nZQorCitJbiBHcmFwaEJpbmFyeSBzZXJpYWxpemF0aW9uLCBKYXZhIGB3cml0ZSgpYCBhbmQgYHdyaXRlVmFsdWUoKWAgZnJvbSBgVHlwZVNlcmlhbGl6ZXI8VD5gIGludGVyZmFjZSBub3cgdGFrZSBhIE5ldHR5J3MKK2BCeXRlQnVmYCBpbnN0YW5jZSBpbnN0ZWFkIG9mIGFuIGBCeXRlQnVmQWxsb2NhdG9yYCwgdGhhdCB3YXkgdGhlIHNhbWUgYnVmZmVyIGluc3RhbmNlIGdldHMgcmV1c2VkIGR1cmluZyB0aGUgd3JpdGUKK29mIGEgbWVzc2FnZS4gQWRkaXRpb25hbGx5LCB3ZSB0b29rIHRoZSBvcHBvcnR1bml0eSB0byByZW1vdmUgdGhlIHVudXNlZCBwYXJhbWV0ZXIgZnJvbSBgUmVzcG9uc2VNZXNzYWdlU2VyaWFsaXplcmAuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMTYxW1RJTktFUlBPUC0yMTYxXQorCis9PSBUaW5rZXJQb3AgMy40LjEKKworKlJlbGVhc2UgRGF0ZTogTWFyY2ggMTgsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMVtjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IE1peCBTUEFSUUwgYW5kIEdyZW1saW4KKworSW4gdGhlIGluaXRpYWwgcmVsZWFzZSBvZiBgc3BhcnFsLWdyZW1saW5gIGl0IHdhcyBvbmx5IHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBTUEFSUUwgcXVlcnkgYW5kIGhhdmUgaXQgdHJhbnNsYXRlIHRvCitHcmVtbGluLiBUaGVyZWZvcmUsIGl0IHdhcyBvbmx5IHBvc3NpYmxlIHRvIHdyaXRlIGEgcXVlcnkgbGlrZSB0aGlzOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLnNwYXJxbCgiU0VMRUNUID9uYW1lID9hZ2UgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSAuID9wZXJzb24gdjphZ2UgP2FnZSB9IikKKz09PltuYW1lOm1hcmtvLGFnZToyOV0KKz09PltuYW1lOnZhZGFzLGFnZToyN10KKz09PltuYW1lOmpvc2gsYWdlOjMyXQorPT0+W25hbWU6cGV0ZXIsYWdlOjM1XQorZ3JlbWxpbj4gZy5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpCis9PT52WzFdCis9PT52WzJdCis9PT52WzNdCis9PT52WzRdCis9PT52WzVdCis9PT52WzZdCistLS0tCisKK0luIHRoaXMgcmVsZWFzZSwgaG93ZXZlciwgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGZ1cnRoZXIgcHJvY2VzcyB0aGF0IHJlc3VsdCB3aXRoIEdyZW1saW4gc3RlcHM6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuc3BhcnFsKCJTRUxFQ1QgP25hbWUgP2FnZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0iKS5zZWxlY3QoIm5hbWUiKQorPT0+bWFya28KKz09PnZhZGFzCis9PT5qb3NoCis9PT5wZXRlcgorZ3JlbWxpbj4gZy5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLm91dCgia25vd3MiKS52YWx1ZXMoIm5hbWUiKQorPT0+dmFkYXMKKz09Pmpvc2gKKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIxNzFbVElOS0VSUE9QLTIxNzFdLAorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjEvcmVmZXJlbmNlLyNzcGFycWwtd2l0aC1ncmVtbGluW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXQorCis9PT0gVXBncmFkaW5nIGZvciBQcm92aWRlcnMKKworPT09PSBHcmFwaCBEYXRhYmFzZSBQcm92aWRlcnMKKworPT09PT0gR3JhcGhCaW5hcnkgU2VyaWFsaXplciBDaGFuZ2VzCisKK0luIEdyYXBoQmluYXJ5IHNlcmlhbGl6YXRpb24sIEphdmEgYHdyaXRlKClgIGFuZCBgd3JpdGVWYWx1ZSgpYCBmcm9tIGBUeXBlU2VyaWFsaXplcjxUPmAgaW50ZXJmYWNlIG5vdyB0YWtlIGEgTmV0dHkncworYEJ5dGVCdWZgIGluc3RhbmNlIGluc3RlYWQgb2YgYW4gYEJ5dGVCdWZBbGxvY2F0b3JgLCB0aGF0IHdheSB0aGUgc2FtZSBidWZmZXIgaW5zdGFuY2UgZ2V0cyByZXVzZWQgZHVyaW5nIHRoZSB3cml0ZQorb2YgYSBtZXNzYWdlLiBBZGRpdGlvbmFsbHksIHdlIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIHJlbW92ZSB0aGUgdW51c2VkIHBhcmFtZXRlciBmcm9tIGBSZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyYC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIxNjFbVElOS0VSUE9QLTIxNjFdCisKKz09IFRpbmtlclBvcCAzLjQuMAorCisqUmVsZWFzZSBEYXRlOiBKYW51YXJ5IDIsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMC9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMFtjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IHNwYXJxbC1ncmVtbGluCisKK1RoZSBgc3BhcnFsLWdyZW1saW5gIG1vZHVsZSBpcyBhIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1BBUlFMW1NQQVJRTF0gdG8gR3JlbWxpbiBjb21waWxlciwgd2hpY2ggYWxsb3dzCitTUEFSUUwgdG8gYmUgZXhlY3V0ZWQgb3ZlciBhbnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKQorZyA9IGdyYXBoLnRyYXZlcnNhbChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpCitnLnNwYXJxbCgiIiJTRUxFQ1QgP25hbWUgP2FnZQorICAgICAgICAgICAgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSAuID9wZXJzb24gdjphZ2UgP2FnZSB9CisgICAgICAgICAgICBPUkRFUiBCWSBBU0MoP2FnZSkiIiIpCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xODc4W1RJTktFUlBPUC0xODc4XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL3JlZmVyZW5jZS8jc3BhcnFsLWdyZW1saW5bUmVmZXJlbmNlIERvY3VtZW50YXRpb25dCisKKz09PT0gR3JlbWxpbi5ORVQgRHJpdmVyIEltcHJvdmVtZW50cworCitUaGUgR3JlbWxpbi5ORVQgZHJpdmVyIG5vdyB1c2VzIHJlcXVlc3QgcGlwZWxpbmluZy4gVGhpcyBhbGxvd3MgY29ubmVjdGlvbnMgdG8gYmUgcmV1c2VkIGZvciBkaWZmZXJlbnQgcmVxdWVzdHMgaW4KK3BhcmFsbGVsIHdoaWNoIHNob3VsZCBsZWFkIHRvIGJldHRlciB1dGlsaXphdGlvbiBvZiBjb25uZWN0aW9ucy4gVGhlIGBDb25uZWN0aW9uUG9vbGAgbm93IGFsc28gaGFzIGEgZml4ZWQgc2l6ZQord2hlcmVhcyBpdCBjb3VsZCBwcmV2aW91c2x5IGNyZWF0ZSBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGNvbm5lY3Rpb25zLiBFYWNoIGBDb25uZWN0aW9uYCBjYW4gaGFuZGxlIHVwIHRvCitgTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbmAgcmVxdWVzdHMgaW4gcGFyYWxsZWwuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBmb3IgYWxsIGNvbm5lY3Rpb25zLCB0aGVuIGEKK2BOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb25gIGlzIHRocm93biB3aGljaCBtYWtlcyB0aGlzIGEgYnJlYWtpbmcgY2hhbmdlLgorCitUaGVzZSBzZXR0aW5ncyBjYW4gYmUgc2V0IGFzIHByb3BlcnRpZXMgb24gdGhlIGBDb25uZWN0aW9uUG9vbFNldHRpbmdzYCBpbnN0YW5jZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGBHcmVtbGluQ2xpZW50YC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE3NzRbVElOS0VSUE9QLTE3NzRdLAorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzc1W1RJTktFUlBPUC0xNzc1XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL3JlZmVyZW5jZS8jX2Nvbm5lY3Rpb25fcG9vbFtSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0KKworPT09PSBJbmRleGluZyBvZiBDb2xsZWN0aW9ucworCitUaW5rZXJQb3AgMy40LjAgYWRkcyBhIG5ldyBgaW5kZXgoKWAtc3RlcCwgd2hpY2ggYWxsb3dzIHVzZXJzIHRvIHRyYW5zZm9ybSBzaW1wbGUgY29sbGVjdGlvbnMgaW50byBpbmRleCBjb2xsZWN0aW9ucyBvciBtYXBzLgorCitgYGAKK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlcygibmFtZSIpLmZvbGQoKS4KKy4uLi4uLjE+ICAgb3JkZXIobG9jYWwpLgorLi4uLi4uMj4gICBpbmRleCgpLnVuZm9sZCgpCis9PT5bbG9wLDBdCis9PT5bcmlwcGxlLDFdCitncmVtbGluPiBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJuYW1lIikuZm9sZCgpLgorLi4uLi4uMT4gICBvcmRlcihsb2NhbCkuYnkoZGVjcikuCisuLi4uLi4yPiAgIGluZGV4KCkuCisuLi4uLi4zPiAgICAgd2l0aChXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5tYXApCis9PT5bMDp2YWRhcywxOnBldGVyLDI6bWFya28sMzpqb3NoXQorYGBgCisKKz09PT0gTW9kdWxhdGlvbiBvZiB2YWx1ZU1hcCgpCisKK1RoZSBgdmFsdWVNYXAoKWAgc3RlcCBub3cgc3VwcG9ydHMgYGJ5YCBhbmQgYHdpdGhgIG1vZHVsYXRpb24sIHdoaWNoIGFsc28gbGVkIHRvIHRoZSBkZXByZWNhdGlvbiBvZiBgdmFsdWVNYXAodHJ1ZSlgIG92ZXJsb2Fkcy4KKworPT09PT0gYnkoKSBNb2R1bGF0aW9uCisKK1dpdGggdGhlIGhlbHAgb2YgdGhlIGBieSgpYCBtb2R1bGF0b3IgYHZhbHVlTWFwKClgIHJlc3VsdCB2YWx1ZXMgY2FuIG5vdyBiZSBhZGp1c3RlZCwgd2hpY2ggaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byB0dXJuIG11bHRpLS9saXN0LXZhbHVlcyBpbnRvIHNpbmdsZSB2YWx1ZXMuCisKK2BgYAorZ3JlbWxpbj4gZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLnZhbHVlTWFwKCkKKz09PltuYW1lOlttYXJrb10sYWdlOlsyOV1dCis9PT5bbmFtZTpbdmFkYXNdLGFnZTpbMjddXQorPT0+W25hbWU6W2pvc2hdLGFnZTpbMzJdXQorPT0+W25hbWU6W3BldGVyXSxhZ2U6WzM1XV0KK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS52YWx1ZU1hcCgpLmJ5KHVuZm9sZCgpKQorPT0+W25hbWU6bWFya28sYWdlOjI5XQorPT0+W25hbWU6dmFkYXMsYWdlOjI3XQorPT0+W25hbWU6am9zaCxhZ2U6MzJdCis9PT5bbmFtZTpwZXRlcixhZ2U6MzVdCitgYGAKKz09PT09IHdpdGgoKSBNb2R1bGF0aW9uCisKK1RoZSBgd2l0aCgpYCBtb2R1bGF0b3IgY2FuIGJlIHVzZWQgdG8gaW5jbHVkZSBjZXJ0YWluIHRva2VucyAoYGlkYCwgYGxhYmVsYCwgYGtleWAgYW5kL29yIGB2YWx1ZWApLgorCitUaGUgb2xkIHdheSAoc3RpbGwgdmFsaWQsIGJ1dCBkZXByZWNhdGVkKToKKworYGBgCitncmVtbGluPiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS52YWx1ZU1hcCh0cnVlKQorPT0+W2lkOjEwLGxhYmVsOnNvZnR3YXJlLG5hbWU6W2dyZW1saW5dXQorPT0+W2lkOjExLGxhYmVsOnNvZnR3YXJlLG5hbWU6W3RpbmtlcmdyYXBoXV0KK2dyZW1saW4+IGcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikucHJvcGVydGllcygibG9jYXRpb24iKS52YWx1ZU1hcCh0cnVlKQorPT0+W2lkOjYsa2V5OmxvY2F0aW9uLHZhbHVlOnNhbiBkaWVnbyxzdGFydFRpbWU6MTk5NyxlbmRUaW1lOjIwMDFdCis9PT5baWQ6NyxrZXk6bG9jYXRpb24sdmFsdWU6c2FudGEgY3J1eixzdGFydFRpbWU6MjAwMSxlbmRUaW1lOjIwMDRdCis9PT5baWQ6OCxrZXk6bG9jYXRpb24sdmFsdWU6YnJ1c3NlbHMsc3RhcnRUaW1lOjIwMDQsZW5kVGltZToyMDA1XQorPT0+W2lkOjksa2V5OmxvY2F0aW9uLHZhbHVlOnNhbnRhIGZlLHN0YXJ0VGltZToyMDA1XQorYGBgCisKK1RoZSBuZXcgd2F5OgorCitgYGAKK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpCis9PT5baWQ6MTAsbGFiZWw6c29mdHdhcmUsbmFtZTpbZ3JlbWxpbl1dCis9PT5baWQ6MTEsbGFiZWw6c29mdHdhcmUsbmFtZTpbdGlua2VyZ3JhcGhdXQorZ3JlbWxpbj4gZy5WKCkuaGFzKCJwZXJzb24iLCJuYW1lIiwibWFya28iKS5wcm9wZXJ0aWVzKCJsb2NhdGlvbiIpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpCis9PT5baWQ6NixrZXk6bG9jYXRpb24sdmFsdWU6c2FuIGRpZWdvLHN0YXJ0VGltZToxOTk3LGVuZFRpbWU6MjAwMV0KKz09PltpZDo3LGtleTpsb2NhdGlvbix2YWx1ZTpzYW50YSBjcnV6LHN0YXJ0VGltZToyMDAxLGVuZFRpbWU6MjAwNF0KKz09PltpZDo4LGtleTpsb2NhdGlvbix2YWx1ZTpicnVzc2VscyxzdGFydFRpbWU6MjAwNCxlbmRUaW1lOjIwMDVdCis9PT5baWQ6OSxrZXk6bG9jYXRpb24sdmFsdWU6c2FudGEgZmUsc3RhcnRUaW1lOjIwMDVdCitgYGAKKworRnVydGhlcm1vcmUsIG5vdyB0aGVyZSdzIGEgZmluZXIgY29udHJvbCBvdmVyIHdoaWNoIG9mIHRoZSB0b2tlbnMgc2hvdWxkIGJlIGluY2x1ZGVkOgorCitgYGAKK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMsIFdpdGhPcHRpb25zLmxhYmVscykKKz09PltsYWJlbDpzb2Z0d2FyZSxuYW1lOltncmVtbGluXV0KKz09PltsYWJlbDpzb2Z0d2FyZSxuYW1lOlt0aW5rZXJncmFwaF1dCitncmVtbGluPiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLnByb3BlcnRpZXMoImxvY2F0aW9uIikudmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucywgV2l0aE9wdGlvbnMudmFsdWVzKQorPT0+W3ZhbHVlOnNhbiBkaWVnbyxzdGFydFRpbWU6MTk5NyxlbmRUaW1lOjIwMDFdCis9PT5bdmFsdWU6c2FudGEgY3J1eixzdGFydFRpbWU6MjAwMSxlbmRUaW1lOjIwMDRdCis9PT5bdmFsdWU6YnJ1c3NlbHMsc3RhcnRUaW1lOjIwMDQsZW5kVGltZToyMDA1XQorPT0+W3ZhbHVlOnNhbnRhIGZlLHN0YXJ0VGltZToyMDA1XQorYGBgCisKK0FzIHNob3duIGFib3ZlLCB0aGUgc3VwcG9ydCBvZiB0aGUgYHdpdGgoKWAgbW9kdWxhdG9yIGZvciBgdmFsdWVNYXAoKWAgbWFrZXMgdGhlIGB2YWx1ZU1hcChib29sZWFuKWAgb3ZlcmxvYWQKK3N1cGVyZmx1b3VzLCBoZW5jZSB0aGlzIG92ZXJsb2FkIGlzIG5vdyBkZXByZWNhdGVkLiBUaGlzIGlzIGEgYnJlYWtpbmcgQVBJIGNoYW5nZSwgc2luY2UgYHZhbHVlTWFwKClgIHdpbGwgbm93IGFsd2F5cworeWllbGQgaW5zdGFuY2VzIG9mIHR5cGUgYE1hcDxPYmplY3QsIE9iamVjdD5gLiBQcmlvciB0aGlzIGNoYW5nZSBvbmx5IHRoZSBgdmFsdWVNYXAoYm9vbGVhbilgIG92ZXJsb2FkIHlpZWxkZWQKK2BNYXA8T2JqZWN0LCBPYmplY3Q+YCBvYmplY3RzLCBgdmFsdWVNYXAoKWAgd2l0aG91dCB0aGUgYm9vbGVhbiBwYXJhbWV0ZXIgdXNlZCB0byB5aWVsZCBpbnN0YW5jZXMgb2YgdHlwZQorYE1hcDxTdHJpbmcsIE9iamVjdD5gLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA1OVtUSU5LRVJQT1AtMjA1OV0KKworPT09PSBQcmVkaWNhdGUgTnVtYmVyIENvbXBhcmlzb24KKworSW4gcHJldmlvdXMgdmVyc2lvbnMgYHdpdGhpbigpYCBhbmQgYHdpdGhvdXQoKWAgcGVyZm9ybWVkIHN0cmljdCBudW1iZXIgY29tcGFyaXNvbnM7IHRoYXQgbWVhbnMgdGhlc2UgcHJlZGljYXRlcyBkaWQKK25vdCBvbmx5IGNvbXBhcmUgbnVtYmVyIHZhbHVlcywgYnV0IGFsc28gdGhlIHR5cGUuIFRoaXMgd2FzIGluY29uc2lzdGVudCB3aXRoIGhvdyBvdGhlciBwcmVkaWNhdGVzIChsaWtlIGBlcWAsIGBndGAsCitldGMuKSB3b3JrLiBBbGwgcHJlZGljYXRlcyB3aWxsIG5vdyBpZ25vcmUgdGhlIG51bWJlciB0eXBlIGFuZCBpbnN0ZWFkIGNvbXBhcmUgbnVtYmVycyBvbmx5IGJhc2VkIG9uIHRoZWlyIHZhbHVlLgorCitPbGQgYmVoYXZpb3I6CisKK2BgYAorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCBlcSgzMkwpKQorPT0+dls0XQorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCB3aXRoaW4oMzJMLCAzNUwpKQorZ3JlbWxpbj4KK2BgYAorCitOZXcgYmVoYXZpb3I6CisKK2BgYAorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCBlcSgzMkwpKQorPT0+dls0XQorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCB3aXRoaW4oMzJMLCAzNUwpKQorPT0+dls0XQorPT0+dls2XQorYGBgCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMDU4W1RJTktFUlBPUC0yMDU4XQorCis9PT09IFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneQorCitHcmVtbGluIFNlcnZlciBoYXMgaGFkIHNvbWUgaW5jb25zaXN0ZW50IGJlaGF2aW9yIGluIHRoZSBzZXJpYWxpemF0aW9uIG9mIHRoZSByZXN1bHRzIGl0IHJldHVybnMuIFJlbW90ZSB0cmF2ZXJzYWxzCitiYXNlZCBvbiBHcmVtbGluIGJ5dGVjb2RlIGFsd2F5cyBkZXRhY2ggcmV0dXJuZWQgZ3JhcGggZWxlbWVudHMgdG8gInJlZmVyZW5jZSIgKGkuZS4gcmVtb3ZlcyBwcm9wZXJ0aWVzIGFuZCBvbmx5CitpbmNsdWRlIHRoZSBgaWRgIGFuZCBgbGFiZWxgKSwgYnV0IHNjcmlwdHMgd291bGQgZGV0YWNoIGdyYXBoIGVsZW1lbnRzIGFuZCBpbmNsdWRlIHRoZSBwcm9wZXJ0aWVzLiBGb3IgMy40LjAsCitUaW5rZXJQb3AgaW50cm9kdWNlcyB0aGUgYFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneWAgd2hpY2ggY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHRvIGFsd2F5cworZGV0YWNoIHRvICJyZWZlcmVuY2UiLgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCkKKz09PnRpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0KK2dyZW1saW4+IGcgPSBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSkKKz09PmdyYXBodHJhdmVyc2Fsc291cmNlW3RpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0sIHN0YW5kYXJkXQorZ3JlbWxpbj4gdiA9IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykubmV4dCgpCis9PT52WzFdCitncmVtbGluPiB2LmNsYXNzCis9PT5jbGFzcyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXgKK2dyZW1saW4+IHYucHJvcGVydGllcygpCitncmVtbGluPgorLS0tLQorCitUaGUgcGFja2FnZWQgaW5pdGlhbGl6YXRpb24gc2NyaXB0cyB0aGF0IGNvbWUgd2l0aCBHcmVtbGluIFNlcnZlciBub3cgcHJlLWNvbmZpZ3VyZSB0aGUgc2FtcGxlIGdyYXBocyB3aXRoIHRoaXMKK3N0cmF0ZWd5IHRvIGVuc3VyZSB0aGF0IGJvdGggc2NyaXB0cyBhbmQgYnl0ZWNvZGUgYmFzZWQgcmVxdWVzdHMgb3ZlciBhbnkgcHJvdG9jb2wgKEhUVFAsIHdlYnNvY2tldCwgZXRjKSBhbmQKK3NlcmlhbGl6YXRpb24gZm9ybWF0IGFsbCByZXR1cm4gYSAicmVmZXJlbmNlIi4gVG8gcmV2ZXJ0IHRvIHRoZSBvbGQgZm9ybSwgc2ltcGx5IHJlbW92ZSB0aGUgc3RyYXRlZ3kgaW4gdGhlCitpbml0aWFsaXphdGlvbiBzY3JpcHQuCisKK0l0IGlzIHJlY29tbWVuZGVkIHRoYXQgdXNlcnMgY2hvb3NlIHRvIGNvbmZpZ3VyZSB0aGVpciBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlcyB3aXRoIGBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lgCithcyB3b3JraW5nIHdpdGggInJlZmVyZW5jZXMiIG9ubHkgaXMgdGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3IgZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMgd2l0aCBUaW5rZXJQb3AuIEluIHRoZSBmdXR1cmUsCitpdCBpcyBwb3NzaWJsZSB0aGF0IGBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lgIHdpbGwgYmUgY29uZmlndXJlZCBieSBkZWZhdWx0IGZvciBhbGwgZ3JhcGhzIG9uIG9yIG9mZiBHcmVtbGluIFNlcnZlciwKK3NvIGl0IHdvdWxkIGJlIGJlc3QgdG8gc3RhcnQgdXRpbGl6aW5nIGl0IG5vdyBhbmQgZ3Jvb21pbmcgZXhpc3RpbmcgR3JlbWxpbiBhbmQgcmVsYXRlZCBhcHBsaWNhdGlvbiBjb2RlIHRvIGFjY291bnQKK2ZvciBpdC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIwNzVbVElOS0VSUE9QLTIwNzVdCisKKz09PT0gVGV4dCBQcmVkaWNhdGVzCisKK0dyZW1saW4gbm93IHN1cHBvcnRzIHNpbXBsZSB0ZXh0IHByZWRpY2F0ZXMgb24gdG9wIG9mIHRoZSBleGlzdGluZyBgUGAgcHJlZGljYXRlcy4gQm90aCwgdGhlIG5ldyBgVGV4dFBgIHRleHQKK3ByZWRpY2F0ZXMgYW5kIHRoZSBvbGQgYFBgIHByZWRpY2F0ZXMsIGNhbiBiZSBjaGFpbmVkIHVzaW5nIGBhbmQoKWAgYW5kIGBvcigpYC4KKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCBjb250YWluaW5nKCJvIikpLnZhbHVlTWFwKCkKKz09PltuYW1lOlttYXJrb10sYWdlOlsyOV1dCis9PT5bbmFtZTpbam9zaF0sYWdlOlszMl1dCitncmVtbGluPiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCBjb250YWluaW5nKCJvIikuYW5kKGd0ZSgiaiIpLmFuZChlbmRpbmdXaXRoKCJrbyIpKSkpLnZhbHVlTWFwKCkKKz09PltuYW1lOlttYXJrb10sYWdlOlsyOV1dCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMDQxW1RJTktFUlBPUC0yMDQxXQorCis9PT09IENoYW5nZWQgSW5maXggQmVoYXZpb3IKKworVGhlIGluZml4IG5vdGF0aW9uIG9mIGBhbmQoKWAgYW5kIGBvcigpYCBub3cgc3VwcG9ydHMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB0cmF2ZXJzYWxzIGFuZCBgQ29ubmVjdGl2ZVN0cmF0ZWd5YAorcHJvZHVjZXMgYSB0cmF2ZXJzYWwgd2l0aCBwcm9wZXIgQU5EIGFuZCBPUiBzZW1hbnRpY3MuCisKK2BgYAorSW5wdXQ6IGEub3IuYi5hbmQuYy5vci5kLmFuZC5lLm9yLmYuYW5kLmcuYW5kLmgub3IuaQorCisqQkVGT1JFKgorT3V0cHV0OiBvcihhLCBvcihhbmQoYiwgYyksIG9yKGFuZChkLCBlKSwgb3IoYW5kKGFuZChmLCBnKSwgaCksIGkpKSkpCisKKypOT1cqCitPdXRwdXQ6IG9yKGEsIGFuZChiLCBjKSwgYW5kKGQsIGUpLCBhbmQoZiwgZywgaCksIGkpCitgYGAKKworRnVydGhlcm1vcmUsIHByZXZpb3VzIHZlcnNpb25zIGZhaWxlZCB0byBhcHBseSAzIG9yIG1vcmUgYGFuZCgpYCBzdGVwcyB1c2luZyB0aGUgaW5maXggbm90YXRpb24sIHRoaXMgaXMgbm93IGZpeGVkLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLmhhcygibmFtZSIsIm1hcmtvIikuYW5kKCkuaGFzKCJhZ2UiLCBsdCgzMCkpLm9yKCkuaGFzKCJuYW1lIiwiam9zaCIpLmFuZCgpLmhhcygiYWdlIiwgZ3QoMzApKS5hbmQoKS5vdXQoImNyZWF0ZWQiKQorPT0+dlsxXQorPT0+dls0XQorLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjAyOVtUSU5LRVJQT1AtMjAyOV0KKworPT09PSBHcmFwaEJpbmFyeQorCitHcmFwaEJpbmFyeSBpcyBhIG5ldyBsYW5ndWFnZSBhZ25vc3RpYywgbmV0d29yayBzZXJpYWxpemF0aW9uIGZvcm1hdCBkZXNpZ25lZCB0byByZXBsYWNlIEdyeW8gYW5kIEdyYXBoU09OLiBBdCB0aGlzCit0aW1lIGl0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBKVk0sIGJ1dCBzdXBwb3J0IHdpbGwgYmUgYWRkZWQgZm9yIG90aGVyIGxhbmd1YWdlcyBpbiB1cGNvbWluZyByZWxlYXNlcy4gVGhlCitzZXJpYWxpemVyIGhhcyBiZWVuIGNvbmZpZ3VyZWQgaW4gR3JlbWxpbiBTZXJ2ZXIncyBwYWNrYWdlZCBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgc2VyaWFsaXplciBjYW4gYmUgY29uZmlndXJlZAordXNpbmcgdGhlIEphdmEgZHJpdmVyIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0NsdXN0ZXIgY2x1c3RlciA9IENsdXN0ZXIuYnVpbGQoImxvY2FsaG9zdCIpLnBvcnQoODE4MikuCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIoU2VyaWFsaXplcnMuR1JBUEhCSU5BUllfVjFEMCkuY3JlYXRlKCk7CitDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CitMaXN0PFJlc3VsdD4gciA9IGNsaWVudC5zdWJtaXQoImcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykiKS5hbGwoKS5qb2luKCk7CistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTQyW1RJTktFUlBPUC0xOTQyXSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL2Rldi9pby8jZ3JhcGhiaW5hcnlbSU8gRG9jdW1lbnRhdGlvbl0KKworPT09PSBTdGF0dXMgQXR0cmlidXRlcworCitUaGUgR3JlbWxpbiBTZXJ2ZXIgcHJvdG9jb2wgYWxsb3dzIGZvciBzdGF0dXMgYXR0cmlidXRlcyB0byBiZSByZXR1cm5lZCBpbiByZXNwb25zZXMuIFRoZXNlIGF0dHJpYnV0ZXMgd2VyZSB0eXBpY2FsbHkKK2ZvciBpbnRlcm5hbCB1c2UsIGJ1dCB3ZXJlIGRlc2lnbmVkIHdpdGggZXh0ZW5zaWJpbGl0eSBpbiBtaW5kIHNvIHRoYXQgcHJvdmlkZXJzIGNvdWxkIHBsYWNlIHJldHVybiB0aGVpciBvd24KK2F0dHJpYnV0ZXMgdG8gY2FsbGluZyBjbGllbnRzLiBVbmZvcnR1bmF0ZWx5LCB1bmxlc3MgdGhlIGNsaWVudCB3YXMgYmVpbmcgdXNlZCB3aXRoIHByb3RvY29sIGxldmVsIHJlcXVlc3RzICh3aGljaAord2Fzbid0IGNvbnZlbmllbnQpIHRob3NlIGF0dHJpYnV0ZXMgd2VyZSBlc3NlbnRpYWxseSBoaWRkZW4gZnJvbSB2aWV3LiBBcyBvZiB0aGlzIHZlcnNpb24gaG93ZXZlciwgc3RhdHVzIGF0dHJpYnV0ZXMKK2FyZSBmdWxseSByZXRyaWV2YWJsZSBmb3IgYm90aCBzdWNjZXNzZnVsIHJlcXVlc3RzIGFuZCBleGNlcHRpb25zLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTkxM1tUSU5LRVJQT1AtMTkxM10KKworPT09PSB3aXRoKCkgU3RlcAorCitUaGlzIHZlcnNpb24gb2YgVGlua2VyUG9wIGludHJvZHVjZXMgdGhlIGB3aXRoKClgLXN0ZXAgdG8gR3JlbWxpbi4gSXQgaXNuJ3QgcmVhbGx5IGEgc3RlcCBidXQgaXMgaW5zdGVhZCBhIHN0ZXAKK21vZHVsYXRvci4gVGhpcyBtb2R1bGF0b3IgYWxsb3dzIHRoZSBzdGVwIGl0IGlzIG1vZGlmeWluZyB0byBhY2NlcHQgY29uZmlndXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBhbHRlciB0aGUKK2JlaGF2aW9yIG9mIHRoZSBzdGVwIGl0c2VsZi4gQSBnb29kIGV4YW1wbGUgb2YgaXRzIHVzYWdlIGlzIHNob3duIHdpdGggdGhlIHJldmlzZWQgc3ludGF4IG9mIHRoZSBgcGFnZVJhbmsoKWAtc3RlcAord2hpY2ggbm93IHVzZXMgYHdpdGgoKWAgdG8gcmVwbGFjZSB0aGUgb2xkIGBieSgpYCBvcHRpb25zOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuVigpLmhhc0xhYmVsKCdwZXJzb24nKS4KKyAgcGFnZVJhbmsoKS4KKyAgICB3aXRoKFBhZ2VSYW5rLmVkZ2VzLCBfXy5vdXRFKCdrbm93cycpKS4KKyAgICB3aXRoKFBhZ2VSYW5rLnByb3BlcnR5TmFtZSwgJ2ZyaWVuZFJhbmsnKS4KKyAgb3JkZXIoKS4KKyAgICBieSgnZnJpZW5kUmFuaycsZGVzYykuCisgIHZhbHVlTWFwKCduYW1lJywnZnJpZW5kUmFuaycpCistLS0tCisKK0Egc2ltaWxhciBjaGFuZ2Ugd2FzIG1hZGUgZm9yIGBwZWVyUHJlc3N1cmUoKWAtc3RlcDoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCisgIHBlZXJQcmVzc3VyZSgpLgorICAgIHdpdGgoUGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSwgJ2NsdXN0ZXInKS4KKyAgZ3JvdXAoKS4KKyAgICBieSgnY2x1c3RlcicpLgorICAgIGJ5KCduYW1lJykKKy0tLS0KKworTm90ZSB0aGF0IHRoZSBgYnkoKWAgbW9kdWxhdG9ycyBzdGlsbCB3b3JrLCBidXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBhbmQgb3BlbiBmb3IgcmVtb3ZhbCBpbiBhIGZ1dHVyZQorcmVsZWFzZSB3aGVyZSBicmVha2luZyBjaGFuZ2VzIGFyZSBhbGxvd2VkLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk3NVtUSU5LRVJQT1AtMTk3NV0sCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjQuMC9yZWZlcmVuY2UvI3dpdGgtc3RlcFtSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0KKworPT09PSBzaG9ydGVzdFBhdGgoKSBTdGVwCisKK0NhbGN1bGF0aW5nIHRoZSBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Nob3J0ZXN0X3BhdGhfcHJvYmxlbVtzaG9ydGVzdCBwYXRoXSBiZXR3ZWVuIHZlcnRpY2VzIGlzIGEgY29tbW9uCitncmFwaCB1c2UgY2FzZS4gV2hpbGUgdGhlIHRyYXZlcnNhbCB0byBkZXRlcm1pbmUgYSBzaG9ydGVzdCBwYXRoIGNhbiBiZSBleHByZXNzZWQgaW4gR3JlbWxpbiwgdGhpcyBwYXJ0aWN1bGFyIHByb2JsZW0KK2lzIGNvbW1vbiBlbm91Z2ggdGhhdCB0aGUgZmVhdHVyZSBoYXMgYmVlbiBlbmNhcHN1bGF0ZWQgaW50byBpdHMgb3duIHN0ZXAsIGRlbW9uc3RyYXRlZCBhcyBmb2xsb3dzOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLgorLi4uLi4uMT4gICBzaG9ydGVzdFBhdGgoKS53aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIGhhcygnbmFtZScsJ3BldGVyJykpCis9PT5bdlsxXSx2WzNdLHZbNl1dCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTkwW1RJTktFUlBPUC0xOTkwXSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL3JlZmVyZW5jZS8jc2hvcnRlc3RwYXRoLXN0ZXBbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dCisKKz09PT0gY29ubmVjdGVkQ29tcG9uZW50KCkgU3RlcAorCitJbiBwcmlvciB2ZXJzaW9uIG9mIFRpbmtlclBvcCwgaXQgd2FzIHJlY29tbWVuZGVkIHRoYXQgdGhlIGlkZW50aWZpY2F0aW9uIG9mCitsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbm5lY3RlZF9jb21wb25lbnRfKGdyYXBoX3RoZW9yeSlbQ29ubmVjdGVkIENvbXBvbmVudF0gaW5zdGFuY2VzIGluIGEgZ3JhcGggYmUKK2NvbXB1dGVkIGJ5IHdheSBvZiBhIHJlYXNvbmFibHkgY29tcGxleCBiaXQgb2YgR3JlbWxpbiB0aGF0IGxvb2tlZCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuVigpLmVtaXQoY3ljbGljUGF0aCgpLm9yKCkubm90KGJvdGgoKSkpLnJlcGVhdChib3RoKCkpLnVudGlsKGN5Y2xpY1BhdGgoKSkuCisgIHBhdGgoKS5hZ2dyZWdhdGUoInAiKS4KKyAgdW5mb2xkKCkuZGVkdXAoKS4KKyAgbWFwKF9fLmFzKCJ2Iikuc2VsZWN0KCJwIikudW5mb2xkKCkuCisgICAgICAgICBmaWx0ZXIodW5mb2xkKCkud2hlcmUoZXEoInYiKSkpLgorICAgICAgICAgdW5mb2xkKCkuZGVkdXAoKS5vcmRlcigpLmJ5KGlkKS5mb2xkKCkpLgorICBkZWR1cCgpCistLS0tCisKK1RoZSBhYm92ZSBhcHByb2FjaCBoYWQgYSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaW5jbHVkZWQgYSBsYXJnZSBleGVjdXRpb24gY29zdCBhcyB3ZWxsIGFzIGluY29tcGF0aWJpbGl0aWVzIGluIE9MQVAuCitUbyBzaW1wbGlmeSB1c2FnZSBvZiB0aGlzIGNvbW1vbmx5IHVzZSBncmFwaCBhbGdvcml0aG0sIFRpbmtlclBvcCAzLjQuMCBpbnRyb2R1Y2VzIHRoZSBgY29ubmVjdGVkQ29tcG9uZW50KClgIHN0ZXAKK3doaWNoIHJlZHVjZXMgdGhlIGFib3ZlIG9wZXJhdGlvbiB0bzoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLndpdGhDb21wdXRlcigpLlYoKS5jb25uZWN0ZWRDb21wb25lbnQoKQorLS0tLQorCitJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgc3RlcCBkb2VzIHJlcXVpcmUgdGhlIHVzZSBvZiBhIGBHcmFwaENvbXB1dGVyYCB0byB3b3JrLCBhcyBpdCB1dGlsaXplcyBhCitgVmVydGV4UHJvZ3JhbWAgYmVoaW5kIHRoZSBzY2VuZXMuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTY3W1RJTktFUlBPUC0xOTY3XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGVkY29tcG9uZW50LXN0ZXBbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dCisKKz09PT0gaW8oKSBTdGVwCisKK1RoZXJlIGhhdmUgYmVlbiBzb21lIGltcG9ydGFudCBjaGFuZ2VzIHRvIElPIG9wZXJhdGlvbnMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgZ3JhcGggZGF0YS4gVGhlIHVzZSBvZiBgR3JhcGguaW8oKWAKK2hhcyBiZWVuIGRlcHJlY2F0ZWQgdG8gZnVydGhlciByZW1vdmUgZGVwZW5kZW5jZSBvbiB0aGUgR3JhcGggKFN0cnVjdHVyZSkgQVBJIGZvciB1c2VycyBhbmQgdG8gZXh0ZW5kIHRoZXNlIGJhc2ljCitvcGVyYXRpb25zIHRvIEdMViB1c2VycyBieSBtYWtpbmcgdGhlc2UgZmVhdHVyZXMgYXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhlIEdyZW1saW4gbGFuZ3VhZ2UuCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byBzaW1wbHkgdXNlIEdyZW1saW46CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JhcGggPSAuLi4KK2cgPSBncmFwaC50cmF2ZXJzYWwoKQorZy5pbyhzb21lSW5wdXRGaWxlKS5yZWFkKCkuaXRlcmF0ZSgpCitnLmlvKHNvbWVPdXRwdXRGaWxlKS53cml0ZSgpLml0ZXJhdGUoKQorLS0tLQorCitXaGlsZSBgaW8oKWAtc3RlcCBpcyBzdGlsbCBzaW5nbGUtdGhyZWFkZWQgZm9yIE9MVFAgc3R5bGUgbG9hZGluZywgaXQgY2FuIGJlIHV0aWxpemVkIGluIGNvbmp1bmN0aW9uIHdpdGggT0xBUCB3aGljaAoraW50ZXJuYWxseSB1c2VzIGBDbG9uZVZlcnRleFByb2dyYW1gIGFuZCB0aGVyZWZvcmUgYW55IGdyYXBoIGBJbnB1dEZvcm1hdGAgb3IgYE91dHB1dEZvcm1hdGAgY2FuIGJlIGNvbmZpZ3VyZWQgaW4KK2Nvbmp1bmN0aW9uIHdpdGggdGhpcyBzdGVwIGZvciBwYXJhbGxlbCBsb2FkcyBvZiBsYXJnZSBkYXRhc2V0cy4KKworSXQgaXMgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgYGlvKClgLXN0ZXAgbWF5IGJlIG92ZXJyaWRkZW4gYnkgZ3JhcGggcHJvdmlkZXJzIHRvIHV0aWxpemUgdGhlaXIgbmF0aXZlIGJ1bGstbG9hZGluZworZmVhdHVyZXMsIHNvIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIGJlaW5nIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgaW1wcm92ZWQKK2VmZmljaWVuY2llcyB0aGVyZS4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5OTZbVElOS0VSUE9QLTE5OTZdLAorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjAvcmVmZXJlbmNlLyNpby1zdGVwW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXQorCis9PT09IFBlciBSZXF1ZXN0IE9wdGlvbnMKKworVGhlIEphdmEgZHJpdmVyIG5vdyBhbGxvd3MgZm9yIHZhcmlvdXMgb3B0aW9ucyB0byBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyB2aWEgbmV3IG92ZXJsb2FkcyB0byBgc3VibWl0KClgIHRoYXQKK2FjY2VwdCBgUmVxdWVzdE9wdGlvbmAgaW5zdGFuY2VzLiBBIGdvb2QgdXNlLWNhc2UgZm9yIHRoaXMgZmVhdHVyZSBpcyB0byBzZXQgYSBwZXItcmVxdWVzdCBvdmVycmlkZSB0byB0aGUKK2BzY3JpcHRFdmFsdWF0aW9uVGltZW91dGAgc28gdGhhdCBpdCBvbmx5IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdC4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorQ2x1c3RlciBjbHVzdGVyID0gQ2x1c3Rlci5vcGVuKCk7CitDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CitSZXF1ZXN0T3B0aW9ucyBvcHRpb25zID0gUmVxdWVzdE9wdGlvbnMuYnVpbGQoKS50aW1lb3V0KDUwMCkuY3JlYXRlKCk7CitMaXN0PFJlc3VsdD4gcmVzdWx0ID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkiLCBvcHRpb25zKS5hbGwoKS5nZXQoKTsKKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTEzNDJbVElOS0VSUE9QLTEzNDJdCisKKz09PT0gbWluKCkgbWF4KCkgYW5kIENvbXBhcmFibGUKKworUHJldmlvdXNseSBgbWluKClgIGFuZCBgbWF4KClgIHdlcmUgb25seSB3b3JraW5nIGZvciBudW1lcmljIHZhbHVlcy4gVGhpcyBoYXMgYmVlbiBjaGFuZ2VkIGFuZCB0aGVzZSBzdGVwcyBjYW4gbm93CitvcGVyYXRlIG92ZXIgYW55IGBDb21wYXJhYmxlYCB2YWx1ZS4gVGhlIGNvbW1vbiB3b3JrYXJvdW5kIHdhcyB0aGUgY29tYmluYXRpb24gb2YgYG9yZGVyKCkuYnkoKWAgYW5kIGBsaW1pdCgpYCBhcworc2hvd24gaGVyZToKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ25hbWUnKS5vcmRlcigpLmJ5KCkubGltaXQoMSkgICAgICAvLyB3b3JrYXJvdW5kIGZvciBtaW4oKQorPT0+am9zaAorZ3JlbWxpbj4gZy5WKCkudmFsdWVzKCduYW1lJykub3JkZXIoKS5ieShkZWNyKS5saW1pdCgxKSAgLy8gd29ya2Fyb3VuZCBmb3IgbWF4KCkKKz09PnZhZGFzCistLS0tCisKK0FueSBhdHRlbXB0IHRvIHVzZSBgbWluKClgIG9yIGBtYXgoKWAgb24gbm9uLW51bWVyaWMgdmFsdWVzIGxlYWQgdG8gYW4gZXhjZXB0aW9uOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlcygnbmFtZScpLm1pbigpCitqYXZhLmxhbmcuU3RyaW5nIGNhbm5vdCBiZSBjYXN0IHRvIGphdmEubGFuZy5OdW1iZXIKK1R5cGUgJzpoZWxwJyBvciAnOmgnIGZvciBoZWxwLgorRGlzcGxheSBzdGFjayB0cmFjZT8gW3lOXQorLS0tLQorCitXaXRoIHRoZSBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSB0aGVzZSBraW5kIG9mIHF1ZXJpZXMgYmVjYW1lIGEgbG90IGVhc2llcjoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ25hbWUnKS5taW4oKQorPT0+am9zaAorZ3JlbWxpbj4gZy5WKCkudmFsdWVzKCduYW1lJykubWF4KCkKKz09PnZhZGFzCistLS0tCisKKz09PT0gTmVzdGVkIExvb3AgU3VwcG9ydAorCitUcmF2ZXJzYWxzIG5vdyBzdXBwb3J0IG5lc3Rpbmcgb2YgYHJlcGVhdCgpYCBsb29wcy4KKworVGhlc2UgY2FuIG5vdyBiZSB1c2VkIHRvIHJlcGVhdCBhbm90aGVyIHRyYXZlcnNhbCB3aGlsZSBpbiBhIGxvb3BlZCBjb250ZXh0LCBlaXRoZXIgaW5zaWRlIHRoZSBib2R5IG9mIGEgYHJlcGVhdCgpYCBvcgoraW4gaXRzIHN0ZXAgbW9kaWZpZXJzIChgdW50aWwoKWAgb3IgYGVtaXQoKWApLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnJlcGVhdChfXy5pbigndHJhdmVyc2VzJykucmVwZWF0KF9fLmluKCdkZXZlbG9wcycpKS5lbWl0KCkpLmVtaXQoKS52YWx1ZXMoJ25hbWUnKQorPT0+c3RlcGhlbgorPT0+bWF0dGhpYXMKKz09Pm1hcmtvCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC05NjdbVElOS0VSUE9QLTk2N10KKworPT09PSBFdmVudFN0cmF0ZWd5IEFQSQorCitUaGVyZSB3ZXJlIHNvbWUgbWlub3IgbW9kaWZpY2F0aW9ucyB0byBob3cgYEV2ZW50U3RyYXRlZ3lgIGlzIGNvbnN0cnVjdGVkIGFuZCB3aGF0IGNhbiBiZSBleHBlY3RlZCBmcm9tIGV2ZW50cyByYWlzZWQKK2Zyb20gdGhlIGFkZGl0aW9uIG9mIG5ldyBwcm9wZXJ0aWVzLgorCitXaXRoIHJlc3BlY3QgdG8gdGhlIGNoYW5nZSBpbiB0ZXJtcyBvZiBgRXZlbnRTdHJhdGVneWAgY29uc3RydWN0aW9uLCB0aGUgYGRldGFjaCgpYCBidWlsZGVyIG1ldGhvZCBmb3JtZXJseSB0b29rIGEKK2BDbGFzc2AgYXMgYW4gYXJndW1lbnQgYW5kIHRoYXQgYENsYXNzYCB3YXMgbWVhbnQgdG8gYmUgb25lIG9mIHRoZSB2YXJpb3VzICJkZXRhY2htZW50IGZhY3RvcmllcyIgb3IgYG51bGxgLiBUaGF0CithcHByb2FjaCB3YXMgYSBiaXQgY29uZnVzaW5nLCBzbyB0aGF0IHNpZ25hdHVyZSBoYXMgY2hhbmdlZCB0byBgZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudClgIHdoZXJlIHRoZSBhcmd1bWVudAoraXMgYSBtb3JlIGhhbmR5IGVudW0gb2YgZGV0YWNobWVudCBvcHRpb25zLgorCitBcyBmb3IgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBldmVudHMgdGhlbXNlbHZlcywgaXQgaXMgZmlyc3Qgd29ydGggbm90aW5nIHRoYXQgdGhlIHByZXZpb3VzbHkgZGVwcmVjYXRlZAorYHZlcnRleFByb3BlcnR5Q2hhbmdlZChWZXJ0ZXgsIFByb3BlcnR5LCBPYmplY3QsIE9iamVjdC4uLilgIG9uIGBNdXRhdGlvbkxpc3RlbmVyYCBoYXMgYmVlbiByZW1vdmVkIGZvciB3aGF0IHNob3VsZAoraGF2ZSBvcmlnaW5hbGx5IGJlZW4gdGhlIGNvcnJlY3Qgc2lnbmF0dXJlIG9mIGB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoVmVydGV4LCBWZXJ0ZXhQcm9wZXJ0eSwgT2JqZWN0LCBPYmplY3QuLi4pYC4gSW4KK3ByaW9yIHZlcnNpb25zIHdoZW4gdGhpcyBtZXRob2QgYW5kIGl0cyByZWxhdGVkIGBlZGdlUHJvcGVydHlDaGFuZ2VkKClgIGFuZCBgdmVydGV4UHJvcGVydHlQcm9wZXJ0eUNoYW5nZWQoKWAgd2VyZQordHJpZ2dlcmVkIGJ5IHdheSBvZiB0aGUgYWRkaXRpb24gb2YgYSBuZXcgcHJvcGVydHkgYSAiZmFrZSIgcHJvcGVydHkgd2FzIGluY2x1ZGVkIHdpdGggYSBgbnVsbGAgdmFsdWUgZm9yIHRoZQorIm9sZFZhbHVlIiBhcmd1bWVudCB0byB0aGVzZSBtZXRob2RzIChhcyBpdCBkaWQgbm90IGV4aXN0IHByaW9yIHRvIHRoaXMgZXZlbnQpLiBUaGF0IHdhcyBhIGJpdCBhd2t3YXJkIHRvIHJlYXNvbiBhYm91dAord2hlbiBkZWFsaW5nIHdpdGggdGhhdCBldmVudC4gVG8gbWFrZSB0aGlzIGVhc2llciwgdGhlIGV2ZW50IG5vdyByYWlzZXMgd2l0aCBhIGBLZXllZFZlcnRleFByb3BlcnR5YCBvcgorYEtleWVkUHJvcGVydHlgIGluc3RhbmNlLCB3aGljaCBvbmx5IGNvbnRhaW5zIGEgcHJvcGVydHkga2V5IGFuZCBubyB2YWx1ZSBpbiB0aGVtLgorCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE4MzFbVElOS0VSUE9QLTE4MzFdCisKKz09PT0gUmVkdWNpbmcgQmFycmllciBTdGVwcworCitUaGUgYmVoYXZpb3Igb2YgYG1pbigpYCwgYG1heCgpYCwgYG1lYW4oKWAgYW5kIGBzdW0oKWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gcmV0dXJuIG5vIHJlc3VsdCBpZiB0aGVyZSdzIG5vIGlucHV0LgorUHJldmlvdXNseSB0aGVzZSBzdGVwcyB5aWVsZGVkIHRoZSBpbnRlcm5hbCBzZWVkIHZhbHVlOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlcygnZm9vJykubWluKCkKKz09Pk5hTgorZ3JlbWxpbj4gZy5WKCkudmFsdWVzKCdmb28nKS5tYXgoKQorPT0+TmFOCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ2ZvbycpLm1lYW4oKQorPT0+TmFOCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ2ZvbycpLnN1bSgpCis9PT4wCistLS0tCisKK1RoZXNlIHRyYXZlcnNhbHMgd2lsbCBubyBsb25nZXIgZW1pdCBhIHJlc3VsdC4gTm90ZSwgdGhhdCB0aGlzIGFsc28gYWZmZWN0cyBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLCBlLmcuIGlmIHRoZXNlCitzdGVwcyBhcmUgdXNlZCBpbiBgYnkoKWAgbW9kdWxhdG9yczoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS5ncm91cCgpLgorLi4uLi4uMT4gICBieShsYWJlbCkuCisuLi4uLi4yPiAgIGJ5KG91dEUoKS52YWx1ZXMoIndlaWdodCIpLnN1bSgpKQorPT0+W3NvZnR3YXJlOjAscGVyc29uOjMuNV0KKy0tLS0KKworU2luY2Ugc29mdHdhcmUgdmVydGljZXMgaGF2ZSBubyBvdXRnb2luZyBlZGdlcyBhbmQgdGh1cyBubyB3ZWlnaHQgdmFsdWVzIHRvIHN1bSwgYHNvZnR3YXJlYCB3aWxsIG5vIGxvbmdlciBzaG93IHVwIGluCit0aGUgcmVzdWx0LiBJbiBvcmRlciB0byBnZXQgdGhlIHNhbWUgcmVzdWx0IGFzIGJlZm9yZSwgb25lIHdvdWxkIGhhdmUgdG8gYWRkIGEgYGNvYWxlc2NlKClgLXN0ZXA6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkuZ3JvdXAoKS4KKy4uLi4uLjE+ICAgYnkobGFiZWwpLgorLi4uLi4uMj4gICBieShvdXRFKCkudmFsdWVzKCJ3ZWlnaHQiKS5zdW0oKSkKKz09PltwZXJzb246My41XQorZ3JlbWxpbj4gZy5WKCkuZ3JvdXAoKS4KKy4uLi4uLjE+ICAgYnkobGFiZWwpLgorLi4uLi4uMj4gICBieShjb2FsZXNjZShvdXRFKCkudmFsdWVzKCJ3ZWlnaHQiKSwgY29uc3RhbnQoMCkpLnN1bSgpKQorPT0+W3NvZnR3YXJlOjAscGVyc29uOjMuNV0KKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE3NzdbVElOS0VSUE9QLTE3NzddCisKKz09PT0gT3JkZXIgb2Ygc2VsZWN0KCkgU2NvcGVzCisKK1RoZSBvcmRlciBvZiBzZWxlY3Qgc2NvcGVzIGhhcyBiZWVuIGNoYW5nZWQgdG86IG1hcHMsIHNpZGUtZWZmZWN0cywgcGF0aHMuIFByZXZpb3VzbHkgdGhlIG9yZGVyIHdhczogc2lkZS1lZmZlY3RzLAorbWFwcywgcGF0aHMgLSB3aGljaCBtYWRlIGl0IGFsbW9zdCBpbXBvc3NpYmxlIHRvIHNlbGVjdCBhIHNwZWNpZmljIG1hcCBlbnRyeSBpZiBhIHNpZGUtZWZmZWN0IHdpdGggdGhlIHNhbWUgbmFtZQorZXhpc3RlZC4KKworVGhlIGZvbGxvd2luZyBzbmlwcGV0cyBpbGx1c3RyYXRlIHRoZSBjaGFuZ2VkIGJlaGF2aW9yOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigxKS4KKy4uLi4uLjE+ICAgZ3JvdXAoImEiKS4KKy4uLi4uLjI+ICAgICBieShfXy5jb25zdGFudCgiYSIpKS4KKy4uLi4uLjM+ICAgICBieShfXy52YWx1ZXMoIm5hbWUiKSkuCisuLi4uLi40PiAgIHNlbGVjdCgiYSIpCis9PT5bYTptYXJrb10KK2dyZW1saW4+IGcuVigxKS4KKy4uLi4uLjE+ICAgZ3JvdXAoImEiKS4KKy4uLi4uLjI+ICAgICBieShfXy5jb25zdGFudCgiYSIpKS4KKy4uLi4uLjM+ICAgICBieShfXy52YWx1ZXMoIm5hbWUiKSkuCisuLi4uLi40PiAgIHNlbGVjdCgiYSIpLnNlbGVjdCgiYSIpCis9PT5bYTptYXJrb10KKy0tLS0KKworQWJvdmUgaXMgdGhlIG9sZCBiZWhhdmlvcjsgdGhlIHNlY29uZCBgc2VsZWN0KCJhIilgIGhhcyBubyBlZmZlY3QsIGl0IHNlbGVjdHMgdGhlIHNpZGUtZWZmZWN0IGBhYCBhZ2FpbiwgYWx0aG91Z2ggb25lCit3b3VsZCBleHBlY3QgdG8gZ2V0IHRoZSBtYXAgZW50cnkgYGFgLiBXaGF0IGZvbGxvd3MgaXMgdGhlIG5ldyBiZWhhdmlvcjoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoMSkuCisuLi4uLi4xPiAgIGdyb3VwKCJhIikuCisuLi4uLi4yPiAgICAgYnkoX18uY29uc3RhbnQoImEiKSkuCisuLi4uLi4zPiAgICAgYnkoX18udmFsdWVzKCJuYW1lIikpLgorLi4uLi4uND4gICBzZWxlY3QoImEiKQorPT0+W2E6bWFya29dCitncmVtbGluPiBnLlYoMSkuCisuLi4uLi4xPiAgIGdyb3VwKCJhIikuCisuLi4uLi4yPiAgICAgYnkoX18uY29uc3RhbnQoImEiKSkuCisuLi4uLi4zPiAgICAgYnkoX18udmFsdWVzKCJuYW1lIikpLgorLi4uLi4uND4gICBzZWxlY3QoImEiKS5zZWxlY3QoImEiKQorPT0+bWFya28KKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE1MjJbVElOS0VSUE9QLTE1MjJdCisKKz09PT0gR3JhcGhTT04gQnVsa1NldAorCitJbiBlYXJsaWVyIHZlcnNpb25zIG9mIFRpbmtlclBvcCwgYEJ1bGtTZXRgIHdhcyBjb2VyY2VkIHRvIGEgYExpc3RgIGZvciBHcmFwaFNPTiB3aGljaCB3YXMgY29udmVuaWVudCBpbiB0aGF0IGl0CitkaWRuJ3QgYWRkIGEgbmV3IGRhdGEgdHlwZSB0byBzdXBwb3J0LCBidXQgaW5jb252ZW5pZW50IGluIHRoYXQgaXQgbWVhbnQgdGhhdCBjZXJ0YWluIHByb2Nlc3MgdGVzdHMgd2VyZSBub3QgY29uc2lzdGVudAoraW4gdGVybXMgb2YgaG93IHRoZXkgcmFuIGFuZCB0aGUgYmVuZWZpdHMgb2YgdGhlIGBCdWxrU2V0YCB3ZXJlICJsb3N0IiBpbiB0aGF0IHRoZSAiYnVsayIgd2FzIGJlaW5nIHJlc29sdmVkIHNlcnZlcgorc2lkZS4gV2l0aCB0aGUgYWRkaXRpb24gb2YgYEJ1bGtTZXRgIGFzIGEgR3JhcGhTT04gdHlwZSB0aGUgImJ1bGsiIGlzIG5vdyByZXNvbHZlZCBvbiB0aGUgY2xpZW50IHNpZGUgYnkgdGhlIGxhbmd1YWdlCit2YXJpYW50LiBIb3cgdGhhdCByZXNvbHV0aW9uIG9jY3VycyBkZXBlbmRzIHVwb24gdGhlIGxhbmd1YWdlIHZhcmlhbnQuIEZvciBKYXZhLCB0aGVyZSBpcyBhIGBCdWxrU2V0YCBvYmplY3Qgd2hpY2gKK21haW50YWlucyB0aGF0IHN0cnVjdHVyZSBzZW50IGZyb20gdGhlIHNlcnZlci4gRm9yIHRoZSBvdGhlciB2YXJpYW50cywgdGhlIGBCdWxrU2V0YCBpcyBkZXNlcmlhbGl6ZWQgdG8gYSBgTGlzdGAgZm9ybQord2hpY2ggcmVzdWx0cyBpbiBhIG11Y2ggbGFyZ2VyIG1lbW9yeSBmb290cHJpbnQgdGhhbiB3aGF0IGlzIGNvbnRhaW5lZCB0aGUgYEJ1bGtTZXRgLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjExMVtUSU5LRVJQT1AtMjExMV0KKworPT09PSBQeXRob24gQmluZGluZ3MKKworQmluZGluZ3Mgd2VyZSBmb3JtZXJseSBjcmVhdGVkIHVzaW5nIGEgUHl0aG9uIDItdHVwbGUgYXMgYSBiaXQgb2Ygc3ludGFjdGljIHN1Z2FyLCBidXQgYWxsIG90aGVyIGxhbmd1YWdlIHZhcmlhbnRzCit1c2VkIGFuIGV4cGxpY2l0IGBCaW5kaW5nc2Agb2JqZWN0IHdoaWNoIGBncmVtbGluLXB5dGhvbmAgYWxyZWFkeSBoYWQgaW4gcGxhY2UuIFRvIG1ha2UgYWxsIHdvcmsgdmFyaWFudHMgYmVoYXZlCitjb25zaXN0ZW50bHksIHRoZSAyLXR1cGxlIHN5bnRheCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBleHBsaWNpdCBgQmluZGluZ3Mub2YoKWAgb3B0aW9uLgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK2cuVihCaW5kaW5ncy5vZignaWQnLDEpKS5vdXQoJ2NyZWF0ZWQnKS5tYXAobGFtYmRhOiAoIml0LmdldCgpLnZhbHVlKCduYW1lJykubGVuZ3RoKCkiLCAiZ3JlbWxpbi1ncm9vdnkiKSkuc3VtKCkKKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIxMTZbVElOS0VSUE9QLTIxMTZdCisKKz09PT0gRGVwcmVjYXRpb24gYW5kIFJlbW92YWwKKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBuZXdseSBkZXByZWNhdGVkIGNsYXNzZXMsIG1ldGhvZHMsIGNvbXBvbmVudHMgYW5kIHBhdHRlcm5zIG9mIHVzYWdlIGFzIHdlbGwgYXMgd2hpY2ggcHJldmlvdXNseQorZGVwcmVjYXRlZCBmZWF0dXJlcyBoYXZlIGJlZW4gb2ZmaWNpYWxseSByZW1vdmVkIG9yIHJlcHVycG9zZWQuCisKKz09PT09IE1vdmluZyBvZiBSZW1vdGVHcmFwaAorCitgUmVtb3RlR3JhcGhgIHdhcyBsb25nIGFnbyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGB3aXRoUmVtb3RlKClgLiBJdCBiZWNhbWUgZXZlbiBsZXNzIHVzZWZ1bCB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YKK3RoZSBgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlYCBjb25jZXB0IGluIDMuMy41LiBJdCdzIG9ubHkgcmVhbCB1c2Ugd2FzIGZvciB0ZXN0aW5nIHJlbW90ZSBieXRlY29kZSBiYXNlZCB0cmF2ZXJzYWxzCitpbiB0aGUgdGVzdCBzdWl0ZSBhcyB0aGUgdGVzdCBzdWl0ZSByZXF1aXJlcyBhbiBhY3R1YWwgYEdyYXBoYCBvYmplY3QgdG8gZnVuY3Rpb24gcHJvcGVybHkuIEFzIHN1Y2gsIGBSZW1vdGVHcmFwaGAgaGFzCitiZWVuIG1vdmVkIHRvIGBncmVtbGluLXRlc3RgLiBJdCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQgaW4gYW55IGNhcGFjaXR5IGJlc2lkZXMgdGhhdC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIwNzlbVElOS0VSUE9QLTIwNzldCisKKz09PT09IFJlbW92YWwgb2YgR2lyYXBoIFN1cHBvcnQKKworU3VwcG9ydCBmb3IgR2lyYXBoIGhhcyBiZWVuIHJlbW92ZWQgYXMgb2YgdGhpcyB2ZXJzaW9uLiBUaGVyZSB3ZXJlIGEgbnVtYmVyIG9mIHJlYXNvbnMgZm9yIHRoaXMgZGVjaXNpb24gd2hpY2ggd2VyZQorZGlzY3Vzc2VkIGluIHRoZSBjb21tdW5pdHkgcHJpb3IgdG8gdGFraW5nIHRoaXMgc3RlcC4gVXNlcnMgc2hvdWxkIHN3aXRjaCB0byBTcGFyayBmb3IgdGhlaXIgT0xBUCBiYXNlZCBncmFwaC1jb21wdXRpbmcKK25lZWRzLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTkzMFtUSU5LRVJQT1AtMTkzMF0KKworPT09PT0gUmVtb3ZhbCBvZiBSZWJpbmRpbmdzIE9wdGlvbnMKKworVGhlICJyZWJpbmRpbmdzIiBvcHRpb24gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBmb3IgY2xpZW50cy4gSXQgd2FzIGRlcHJlY2F0ZWQgbG9uZyBhZ28gYXQgMy4xLjAuIFRoZSBzZXJ2ZXIgd2lsbCBub3QKK3Jlc3BvbmQgdG8gdGhlbSBvbiBhbnkgY2hhbm5lbCAtIHdlYnNvY2tldHMsIG5pbyBvciBIVFRQLiBVc2UgdGhlICJhbGlhc2VzIiBvcHRpb24gaW5zdGVhZC4KKworbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzA1W1RJTktFUlBPUC0xNzA1XQorCis9PT09PSBncmVtbGluLXNlcnZlci5zaCAtaSBSZW1vdmFsCisKK1RoZSBgLWlgIG9wdGlvbiBmb3IgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMgaW4gR3JlbWxpbiBTZXJ2ZXIgd2FzIGxvbmcgYWdvIGRlcHJlY2F0ZWQgYW5kIGhhcyBub3cgYmVlbiByZW1vdmVkLiBQbGVhc2UKK3VzZSBgaW5zdGFsbGAgYXMgaXRzIHJlcGxhY2VtZW50IGdvaW5nIGZvcndhcmQuCisKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjAzMVtUSU5LRVJQT1AtMjAzMV0KKworPT09PT0gRGVwcmVjYXRpb24gUmVtb3ZhbAorCitUaGUgZm9sbG93aW5nIGRlcHJlY2F0ZWQgY2xhc3NlcywgbWV0aG9kcyBvciBmaWVsZHMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhpcyB2ZXJzaW9uOgorCisqIGBncmVtbGluLWNvcmVgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuSW1wb3J0Q3VzdG9taXplciNHUkVNTElOX0NPUkVgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaGAgLSBtb3ZlZCB0byBgZ3JlbWxpbi10ZXN0YAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbi5zdWJtaXQoVHJhdmVyc2FsKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb24uc3VibWl0KEJ5dGVjb2RlKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlJlbW90ZVN0cmF0ZWd5I2lkZW50aXR5KClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxFbmdpbmVgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5lbmdpbmUuKmAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUGFydGl0aW9uU3RyYXRlZ3kuQnVpbGRlciNhZGRSZWFkUGFydGl0aW9uKFN0cmluZylgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3kuQnVpbGRlciNlZGdlQ3JpdGVyaW9uKFRyYXZlcnNhbClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3kuQnVpbGRlciN2ZXJ0ZXhDcml0ZXJpb24oVHJhdmVyc2FsKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkxhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcC5Db25zdW1lcnNgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSGFzQ29udGFpbmVyI21ha2VIYXNDb250YWluZXJzKFN0cmluZywgUClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuZXZlbnQuTXV0YXRpb25MaXN0ZW5lciN2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoVmVydGV4LCBQcm9wZXJ0eSwgT2JqZWN0LCBPYmplY3QuLi4pYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQuRXhjZXB0aW9ucyNlbGVtZW50QWxyZWFkeVJlbW92ZWQoQ2xhc3MsIE9iamVjdClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGguRXhjZXB0aW9ucyNlbGVtZW50Tm90Rm91bmQoQ2xhc3MsIE9iamVjdClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGguRXhjZXB0aW9ucyNlbGVtZW50Tm90Rm91bmQoQ2xhc3MsIE9iamVjdCwgRXhjZXB0aW9uKWAKKyogYGdyZW1saW4tZHJpdmVyYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsaWVudCNyZWJpbmQoU3RyaW5nKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQuUmVib3VuZENsdXN0ZXJkQ2xpZW50YAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VucyNBUkdTX1JFQklORElOR1NgCisqIGBncmVtbGluLWdyb292eWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZS5jbG9zZSgpYCAtIG5vIGxvbmdlciBpbXBsZW1lbnRzIGBBdXRvQ2xvc2VhYmxlYAorKiBgZ3JlbWxpbi1zZXJ2ZXJgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuR3JhcGhNYW5hZ2VyI2dldEdyYXBocygpYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLkdyYXBoTWFuYWdlciNnZXRUcmF2ZXJzYWxTb3VyY2VzKClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3Mjc2VyaWFsaXplZFJlc3BvbnNlVGltZW91dGAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5TZXR0aW5ncy5BdXRoZW50aWNhdGlvblNldHRpbmdzI2NsYXNzTmFtZWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5oYW5kbGVyLk9wU2VsZWN0b3JIYW5kbGVyKFNldHRpbmdzLCBHcmFwaE1hbmFnZXIsIEdyZW1saW5FeGVjdXRvciwgU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5BYnN0cmFjdE9wUHJvY2Vzc29yI21ha2VGcmFtZShDaGFubmVsSGFuZGxlckNvbnRleHQsIFJlcXVlc3RNZXNzYWdlLCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyLCBib29sZWFuLCBMaXN0LCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSlgCisqIGBoYWRvb3AtZ3JhcGhgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcENvbmZpZ3VyYXRpb24jZ2V0R3JhcGhJbnB1dEZvcm1hdCgpYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BDb25maWd1cmF0aW9uI2dldEdyYXBoT3V0cHV0Rm9ybWF0KClgCisKK1BsZWFzZSBzZWUgdGhlIGphdmFkb2MgZGVwcmVjYXRpb24gbm90ZXMgb3IgdXBncmFkZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljIHRvIHdoZW4gdGhlIGRlcHJlY2F0aW9uIHRvb2sgcGxhY2UgdG8KK3VuZGVyc3RhbmQgaG93IHRvIHJlc29sdmUgdGhpcyBicmVha2luZyBjaGFuZ2UuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xMTQzW1RJTktFUlBPUC0xMTQzXSwKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTI5NltUSU5LRVJQT1AtMTI5Nl0sCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE3MDVbVElOS0VSUE9QLTE3MDVdLAorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzA3W1RJTktFUlBPUC0xNzA3XSwKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk1NFtUSU5LRVJQT1AtMTk1NF0sCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5ODZbVElOS0VSUE9QLTE5ODZdLAorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMDc5W1RJTktFUlBPUC0yMDc5XSwKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjEwM1tUSU5LRVJQT1AtMjEwM10KKworPT09PT0gRGVwcmVjYXRlZCBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAKKworVGhlIGBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDBgIHNlcmlhbGl6ZXIgaXMgbm93IGFuYWxvZ291cyB0byBgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBgIGFuZCB0aGVyZWZvcmUKK3JlZHVuZGFudC4gSXQgaGFzIHRlY2huaWNhbGx5IGFsd2F5cyBiZWVuIGVxdWl2YWxlbnQgaW4gdGVybXMgb2YgZnVuY3Rpb25hbGl0eSBhcyBib3RoIHNlcmlhbGl6ZWQgdG8gdGhlIHNhbWUgZm9ybWF0CisoaS5lLiBHcmFwaFNPTiAyLjAgd2l0aCBlbWJlZGRlZCB0eXBlcykuIEl0IGlzIG5vIGxvbmdlciBjbGVhciB3aHkgdGhlc2UgdHdvIGNsYXNzZXMgd2VyZSBlc3RhYmxpc2hlZCB0aGlzIHdheSwgYnV0CitpdCBkb2VzIGNhcnJ5IHRoZSBuZWdhdGl2ZSBlZmZlY3Qgd2hlcmUgbXVsdGlwbGUgc2VyaWFsaXplciB2ZXJzaW9ucyBjb3VsZCBub3QgYmUgYm91bmQgdG8gR3JlbWxpbiBTZXJ2ZXIncyBIVFRQCitlbmRwb2ludCBhcyB0aGUgTUlNRSB0eXBlcyBjb25mbGljdGVkIG9uIGBhcHBsaWNhdGlvbi9qc29uYC4gQnkgc2ltcGx5IG1ha2luZyBib3RoIG1lc3NhZ2Ugc2VyaWFsaXplcnMgc3VwcG9ydAorYGFwcGxpY2F0aW9uL2pzb25gIGFuZCBgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjIuMCtqc29uYCwgaXQgdGhlbiBiZWNhbWUgcG9zc2libGUgdG8gb3ZlcmNvbWUgdGhhdCBsaW1pdGF0aW9uLiBJbgorc2hvcnQsIHByZWZlciB1c2Ugb2YgYEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwYCB3aGVuIHBvc3NpYmxlLgorCitOb3RlIHRoYXQgdGhpcyBpcyBhIGJyZWFraW5nIGNoYW5nZSBpbiB0aGUgc2Vuc2UgdGhhdCBgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBgIHdpbGwgbm8gbG9uZ2VyIHNldCB0aGUgaGVhZGVyIG9mCityZXF1ZXN0cyBtZXNzYWdlcyB0byBgYXBwbGljYXRpb24vanNvbmAuIEFzIGEgcmVzdWx0LCBvbGRlciB2ZXJzaW9ucyBvZiBHcmVtbGluIFNlcnZlciBub3QgY29uZmlndXJlZCB3aXRoCitgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwYCB3aWxsIG5vdCBmaW5kIGEgZGVzZXJpYWxpemVyIHRvIG1hdGNoIHRoZSByZXF1ZXN0LgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk4NFtUSU5LRVJQT1AtMTk4NF0KKworPT09PT0gUmVtb3ZlZCBncm9vdnktc3FsIERlcGVuZGVuY3kKKworR3JlbWxpbiBDb25zb2xlIGFuZCBHcmVtbGluIFNlcnZlciBubyBsb25nZXIgaW5jbHVkZSBncm9vdnktc3FsLiAgSWYgeW91IGRlcGVuZCBvbiBncm9vdnktc3FsLAoreW91IGNhbiBpbnN0YWxsIGl0IGluIEdyZW1saW4gQ29uc29sZSBvciBHcmVtbGluIFNlcnZlciB1c2luZyB0aGUgcGx1Z2luIHN5c3RlbS4KKworQ29uc29sZToKK2BgYAorOmluc3RhbGwgb3JnLmNvZGVoYXVzLmdyb292eSBncm9vdnktc3FsIDIuNS4yCitgYGAKKworU2VydmVyOgorYGBgCitiaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggaW5zdGFsbCBvcmcuY29kZWhhdXMuZ3Jvb3Z5IGdyb292eS1zcWwgMi41LjIKK2BgYAorCitJZiB5b3VyIHByb2plY3QgZGVwZW5kZWQgb24gZ3Jvb3Z5LXNxbCB0cmFuc2l0aXZlbHksIHNpbXBseSBpbmNsdWRlIGl0IGluIHlvdXIgcHJvamVjdCdzIGJ1aWxkIGZpbGUgKGUuZy4gbWF2ZW46IHBvbS54bWwpLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjAzN1tUSU5LRVJQT1AtMjAzN10KKworPT09IFVwZ3JhZGluZyBmb3IgUHJvdmlkZXJzCisKKz09PT0gR3JhcGggRGF0YWJhc2UgUHJvdmlkZXJzCisKKz09PT09IGlvKCkgU3RlcAorCitUaGUgbmV3IGBpbygpYC1zdGVwIHRoYXQgd2FzIGludHJvZHVjZWQgcHJvdmlkZXMgc29tZSBuZXcgY2hhbmdlcyB0byBjb25zaWRlci4gTm90ZSB0aGF0IGBHcmFwaC5pbygpYCBoYXMgYmVlbgorZGVwcmVjYXRlZCBhbmQgdXNlcnMgYXJlIG5vIGxvbmdlciBpbnN0cnVjdGVkIHRvIHV0aWxpemUgdGhhdCBtZXRob2QuIEl0IGlzIG5vdCB5ZXQgZGVjaWRlZCB3aGVuIHRoYXQgbWV0aG9kIHdpbGwgYmUKK3JlbW92ZWQgY29tcGxldGVseSwgYnV0IGdpdmVuIHRoZSBwdWJsaWMgbmF0dXJlIG9mIGl0IGFuZCB0aGUgaGlnaCBjaGFuY2Ugb2YgY29tbW9uIHVzYWdlLCBpdCBzaG91bGQgYmUgaGFuZ2luZyBhcm91bmQKK2ZvciBzb21lIHRpbWUuCisKK0FzIHdpdGggYW55IHN0ZXAgaW4gR3JlbWxpbiwgaXQgaXMgcG9zc2libGUgdG8gcmVwbGFjZSBpdCB3aXRoIGEgbW9yZSBwcm92aWRlciBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB0aGF0IGNvdWxkIGJlCittb3JlIGVmZmljaWVudC4gRGV2ZWxvcGluZyBhIGBUcmF2ZXJzYWxTdHJhdGVneWAgdG8gZG8gdGhpcyBpcyBlbmNvdXJhZ2VkLCBlc3BlY2lhbGx5IGZvciB0aG9zZSBncmFwaCBwcm92aWRlcnMgd2hvCittaWdodCBoYXZlIHNwZWNpYWwgYnVsayBsb2FkZXJzIHRoYXQgY291bGQgYmUgYWJzdHJhY3RlZCBieSB0aGlzIHN0ZXAuIEV4YW1wbGVzIG9mIHRoaXMgYXJlIGFscmVhZHkgc2hvd24gd2l0aAorYEhhZG9vcEdyYXBoYCB3aGljaCByZXBsYWNlcyB0aGUgc2ltcGxlIHNpbmdsZS10aHJlYWRlZCBsb2FkZXIgd2l0aCBgQ2xvbmVWZXJ0ZXhQcm9ncmFtYC4gR3JhcGggcHJvdmlkZXJzIGFyZQorZW5jb3VyYWdlZCB0byB1c2UgdGhlIGB3aXRoKClgIHN0ZXAgdG8gY2FwdHVyZSBhbnkgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIGZvciB0aGVpciB1bmRlcmx5aW5nIGxvYWRlciB0bword29yay4gR3JhcGggcHJvdmlkZXJzIHNob3VsZCBub3QgZmVlbCByZXN0cmljdGVkIHRvIGBncmFwaHNvbmAsIGBncnlvYCBhbmQgYGdyYXBobWxgIGZvcm1hdHMgZWl0aGVyLiBJZiBhIGdyYXBoCitzdXBwb3J0cyBDU1Ygb3Igc29tZSBjdXN0b20gZ3JhcGggc3BlY2lmaWMgZm9ybWF0LCBpdCBzaG91bGRuJ3QgYmUgZGlmZmljdWx0IHRvIGdhdGhlciB0aGUgY29uZmlndXJhdGlvbnMgbmVjZXNzYXJ5IHRvCittYWtlIHRoYXQgYXZhaWxhYmxlIHRvIHVzZXJzLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk5NltUSU5LRVJQT1AtMTk5Nl0KKworPT09PT0gQ2FjaGluZyBHcmFwaCBGZWF0dXJlcworCitGb3IgZ3JhcGggaW1wbGVtZW50YXRpb25zIHRoYXQgaGF2ZSBleHBlbnNpdmUgY3JlYXRpb24gdGltZXMsIGl0IGNhbiBiZSB0aW1lIGNvbnN1bWluZyB0byBydW4gdGhlIFRpbmtlclBvcCB0ZXN0IHN1aXRlCithcyBlYWNoIHRlc3QgcnVuIHJlcXVpcmVzIGEgYEdyYXBoYCBpbnN0YW5jZSBldmVuIGlmIHRoZSB0ZXN0IGlzIHVsdGltYXRlbHkgaWdub3JlZCBiZWNhdWUgaXQgZG9lc24ndCBwYXNzIHRoZSBmZWF0dXJlCitjaGVja3MuIFRvIHBvc3NpYmx5IGhlbHAgYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSwgdGhlIGBHcmFwaFByb3ZpZGVyYCBpbnRlcmZhY2Ugbm93IGluY2x1ZGVzIHRoaXMgbWV0aG9kOgorCitbc291cmNlLGphdmFdCistLS0tCitwdWJsaWMgZGVmYXVsdCBPcHRpb25hbDxHcmFwaC5GZWF0dXJlcz4gZ2V0U3RhdGljRmVhdHVyZXMoKSB7CisgICAgcmV0dXJuIE9wdGlvbmFsLmVtcHR5KCk7Cit9CistLS0tCisKK1RoaXMgbWV0aG9kIGNhbiBiZSBpbXBsZW1lbnRlZCB0byByZXR1cm4gYSBjYWNoZWFibGUgc2V0IG9mIGZlYXR1cmVzIGZvciBhIGBHcmFwaGAgZ2VuZXJhdGVkIGZyb20gdGhhdCBgR3JhcGhQcm92aWRlcmAuCitBc3N1bWluZyB0aGlzIG1ldGhvZCBpcyBmYXN0ZXIgdGhhbiB0aGUgY29zdCBvZiBjcmVhdGluZyBhIG5ldyBgR3JhcGhgIGluc3RhbmNlLCB0aGUgdGVzdCBzdWl0ZSBzaG91bGQgZXhlY3V0ZQorc2lnbmlmaWNhbnRseSBmYXN0ZXIgZGVwZW5kaW5nIG9uIGhvdyBtYW55IHRlc3RzIGVuZCB1cCBiZWluZyBpZ25vcmVkLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTUxOFtUSU5LRVJQT1AtMTUxOF0KKworPT09PT0gQ29uZmlndXJpbmcgSW50ZXJmYWNlCisKK1RoZXJlIHdlcmUgc29tZSBjaGFuZ2VzIHRvIGludGVyZmFjZXMgdGhhdCB3ZXJlIHJlbGF0ZWQgdG8gYFN0ZXBgLiBBIG5ldyBgQ29uZmlndXJpbmdgIGludGVyZmFjZSB3YXMgYWRkZWQgdGhhdCB3YXMKK2hlbHBmdWwgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgd2l0aCgpYC1zdGVwIG1vZHVsYXRvci4gVGhpcyBuZXcgaW50ZXJmYWNlIGV4dGVuZHMgdGhlIGBQYXJhbWV0ZXJpemluZ2AgaW50ZXJmYWNlCisod2hpY2ggbW92ZWQgdG8gdGhlIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXBgIHBhY2thZ2Ugd2l0aCB0aGUgb3RoZXIgc3RlcCBpbnRlcmZhY2VzKSBhbmQKK2luIHR1cm4gaXMgZXh0ZW5kZWQgYnkgdGhlIGBNdXRhdGluZ2AgaW50ZXJmYWNlLiBNYWtpbmcgdGhpcyBjaGFuZ2UgbWVhbnQgdGhhdCB0aGUgYE11dGF0aW5nLmFkZFByb3BlcnR5TXV0YXRpb25zKClgCittZXRob2QgY291bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgbmV3IGBDb25maWd1cmluZy5jb25maWd1cmUoKWAgbWV0aG9kLgorCitBbGwgb2YgdGhlIGNoYW5nZXMgYWJvdmUgYmFzaWNhbGx5IG1lYW4sIHRoYXQgaWYgdGhlIGBNdXRhdGluZ2AgaW50ZXJmYWNlIHdhcyBiZWluZyB1c2VkIGluIHByaW9yIHZlcnNpb25zLCB0aGUKK2BhZGRQcm9wZXJ0eU11dGF0aW9ucygpYCBtZXRob2Qgc2ltcGx5IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gYGNvbmZpZ3VyZSgpYC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5NzVbVElOS0VSUE9QLTE5NzVdCisKKz09PT09IE9wdGlvbnNTdHJhdGVneQorCitgT3B0aW9uc1N0cmF0ZWd5YCBpcyBhIGBUcmF2ZXJzYWxTdHJhdGVneWAgdGhhdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMgdG8gc2V0IGFyYml0cmFyeSBjb25maWd1cmF0aW9ucyBvbiBhCitgVHJhdmVyc2FsYC4gVGhlc2UgY29uZmlndXJhdGlvbnMgY2FuIGJlIHVzZWQgYnkgZ3JhcGggcHJvdmlkZXJzIHRvIGFsbG93IGZvciB0cmF2ZXJzYWwtbGV2ZWwgY29uZmlndXJhdGlvbnMgdG8gYmUKK2FjY2Vzc2libGUgdG8gdGhlaXIgY3VzdG9tIHN0ZXBzLiBBIHVzZXIgd291bGQgd3JpdGUgc29tZXRoaW5nIGxpa2U6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cud2l0aFN0cmF0ZWdpZXMoT3B0aW9uc1N0cmF0ZWd5LmJ1aWxkKCkud2l0aCgic3BlY2lhbExpbWl0IiwgMTAwMDApLmNyZWF0ZSgpKS5WKCk7CistLS0tCisKK1RoZSBgT3B0aW9uc1N0cmF0ZWd5YCBpcyByZWFsbHkgb25seSB0aGUgY2FycmllciBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCB3aGlsZSB1c2VycyBjYW4gY2hvb3NlIHRvIHV0aWxpemUgdGhhdAorbW9yZSB2ZXJib3NlIG1ldGhvZCBmb3IgY29uc3RydWN0aW5nIGl0IHNob3duIGFib3ZlLCBpdCBpcyBtb3JlIGVsZWdhbnRseSBjb25zdHJ1Y3RlZCBhcyBmb2xsb3dzIHVzaW5nIGB3aXRoKClgLXN0ZXA6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cud2l0aCgic3BlY2lhbExpbWl0IiwgMTAwMDApKS5WKCk7CistLS0tCisKK1RoZSBncmFwaCBwcm92aWRlciBjb3VsZCB0aGVuIGFjY2VzcyB0aGF0IHZhbHVlIG9mICJzcGVjaWFsTGltaXQiIGluIHRoZWlyIGN1c3RvbSBzdGVwIChvciBlbHNld2hlcmUpIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK09wdGlvbnNTdHJhdGVneSBzdHJhdGVneSA9IHRoaXMuZ2V0VHJhdmVyc2FsKCkuYXNBZG1pbigpLmdldFN0cmF0ZWdpZXMoKS5nZXRTdHJhdGVneShPcHRpb25zU3RyYXRlZ3kuY2xhc3MpLmdldCgpOworaW50IHNwZWNpYWxMaW1pdCA9IChpbnQpIHN0cmF0ZWd5LmdldE9wdGlvbnMoKS5nZXQoInNwZWNpYWxMaW1pdCIpOworLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA1M1tUSU5LRVJQT1AtMjA1M10KKworPT09PT0gUmVtb3ZlZCBoYWRvb3AtZ3JlbWxpbiBUZXN0IEFydGlmYWN0CisKK1RoZSBgaGFkb29wLWdyZW1saW5gIG1vZHVsZSBubyBsb25nZXIgZ2VuZXJhdGVzIGEgdGVzdCBqYXIgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHRlc3QgZGVwZW5kZW5jeSBpbiBvdGhlciBtb2R1bGVzLgorR2VuZXJhbGx5IHNwZWFraW5nLCB0aGF0IGFwcHJvYWNoIHRlbmRzIHRvIGJlIGEgYmFkIHByYWN0aWNlIGFuZCBjYW4gY2F1c2UgYnVpbGQgcHJvYmxlbXMgd2l0aCBNYXZlbiB0aGF0IGFyZW4ndCBhbHdheXMKK29idmlvdXMgdG8gdHJvdWJsZXNob290LiBXaXRoIHRoZSByZW1vdmFsIG9mIGBnaXJhcGgtZ3JlbWxpbmAgZm9yIDMuNC4wLCBpdCBzZWVtZWQgZXZlbiBsZXNzIHVzZWZ1bCB0byBoYXZlIHRoaXMKK3Rlc3QgYXJ0aWZhY3QgcHJlc2VudC4gQWxsIHRlc3RzIGFyZSBzdGlsbCBwcmVzZW50LiBUaGUgZm9sbG93IHByb3ZpZGVzIGEgYmFzaWMgc3VtbWFyeSBvZiBob3cgdGhpcyByZWZhY3RvcmluZworb2NjdXJyZWQ6CisKKyogQSBuZXcgYEFic3RyYWN0RmlsZUdyYXBoUHJvdmlkZXJgIHdhcyBjcmVhdGVkIGluIGBncmVtbGluLXRlc3RgIHdoaWNoIHByb3ZpZGVkIGEgbG90IG9mIHRoZSBmZWF0dXJlcyB0aGF0CitgSGFkb29wR3JhcGhQcm92aWRlcmAgd2FzIGV4cG9zaW5nLiBCb3RoIGBIYWRvb3BHcmFwaFByb3ZpZGVyYCBhbmQgYFNwYXJrSGFkb29wR3JhcGhQcm92aWRlcmAgZXh0ZW5kIGZyb20gdGhhdCBjbGFzcworbm93LgorKiBgVG95SW9SZWdpc3RyeWAgYW5kIHJlbGF0ZWQgY2xhc3NlcyB3ZXJlIG1vdmVkIHRvIGBncmVtbGluLXRlc3RgLgorKiBUaGUgdmFyaW91cyB0ZXN0cyB0aGF0IHZhbGlkYXRlZCBjYXBhYmlsaXRpZXMgb2YgYFN0b3JhZ2VgIGhhdmUgYmVlbiBtb3ZlZCB0byBgc3BhcmstZ3JlbWxpbmAgYW5kIGFyZSBwYXJ0IG9mIHRob3NlCit0ZXN0cyBub3cuIE9idmlvdXNseSwgdGhhdCBtYWtlcyB0aG9zZSB0ZXN0cyBzcGVjaWZpYyB0byBTcGFyayB0ZXN0aW5nIG5vdy4gSWYgdGhhdCBsb2NhdGlvbiBjcmVhdGVzIGEgcHJvYmxlbSBmb3Igc29tZQorcmVhc29uLCB0aGF0IGRlY2lzaW9uIGNhbiBiZSByZXZpc2l0ZWQgYXQgc29tZSBwb2ludC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE0MTBbVElOS0VSUE9QLTE0MTBdCisKKz09PT09IFRyYXZlcnNhbEVuZ2luZSBNb3ZlZAorCitUaGUgYFRyYXZlcnNhbEVuZ2luZWAgaW50ZXJmYWNlIHdhcyBkZXByZWNhdGVkIGluIDMuMi4wIGFsb25nIHdpdGggYWxsIHJlbGF0ZWQgbWV0aG9kcyB0aGF0IHVzZWQgaXQgYW5kIGNsYXNzZXMgdGhhdAoraW1wbGVtZW50ZWQgaXQuIEl0IHdhcyByZXBsYWNlZCBieSB0aGUgYENvbXB1dGVyYCBpbnRlcmZhY2UgYW5kIHByb3ZpZGVkIGEgbXVjaCBuaWNlciB3YXkgdG8gcGx1ZyBkaWZmZXJlbnQKK2ltcGxlbWVudGF0aW9ucyBvZiBgQ29tcHV0ZXJgIGludG8gYSB0cmF2ZXJzYWwuIGBUcmF2ZXJzYWxFbmdpbmVgIHdhcyBuZXZlciB3aG9sbHkgcmVtb3ZlZCBob3dldmVyIGFzIGl0IGhhZCBzb21lIGRlZXAKK2RlcGVuZGVuY2llcyBpbiB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhlIHRlc3Qgc3VpdGUuIFRoYXQgaW5mcmFzdHJ1Y3R1cmUgaGFzIGxhcmdlbHkgcmVtYWluZWQgYXMgaXMgdW50aWwgbm93LgorCitBcyBvZiAzLjQuMCwgYFRyYXZlcnNhbEVuZ2luZWAgaXMgbm8gbG9uZ2VyIGluIGBncmVtbGluLWNvcmVgIGFuZCBjYW4gaW5zdGVhZCBiZSBmb3VuZCBpbiBgZ3JlbWxpbi10ZXN0YCBhcyBpdCBpcworZWZmZWN0aXZlbHkgYSAidGVzdC1vbmx5IiBjb21wb25lbnQgYW5kIHNlcnZlcyBubyBvdGhlciByZWFsIGZ1bmN0aW9uLiBBcyBleHBsYWluZWQgaW4gdGhlIGphdmFkb2NzIGdvaW5nIGJhY2sgdG8KKzMuMi4wLCBwcm92aWRlcnMgc2hvdWxkIGltcGxlbWVudCB0aGUgYENvbXB1dGVyYCBjbGFzcyBhbmQgdXNlIHRoYXQgaW5zdGVhZC4gQXQgdGhpcyBwb2ludCwgZ3JhcGggcHJvdmlkZXJzIHNob3VsZCBoYXZlCitsb25nIGFnbyBtb3ZlZCB0byB0aGUgYENvbXB1dGVyYCBpbmZyYXN0cnVjdHVyZSBhcyBtZXRob2RzIGZvciBjb25zdHJ1Y3RpbmcgYSBgVHJhdmVyc2FsU291cmNlYCB3aXRoIGEKK2BUcmF2ZXJzYWxFbmdpbmVgIHdlcmUgbG9uZyBhZ28gcmVtb3ZlZC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTExNDNbVElOS0VSUE9QLTExNDNdCisKKz09PT09IFVwc2VydCBHcmFwaCBGZWF0dXJlCisKK1NvbWUgYEdyYXBoYCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gb2ZmZXIgdXBzZXJ0IGZ1bmN0aW9uYWxpdHkgZm9yIHZlcnRpY2VzIGFuZCBlZGdlcywgd2hpY2ggY2FuIGhlbHAgaW1wcm92ZQordXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZS4gVG8gaGVscCBtYWtlIGl0IGNsZWFyIHRvIHVzZXJzIHRoYXQgYSBncmFwaCBvcGVyYXRlcyBpbiB0aGlzIGZhc2hpb24sIHRoZSBgc3VwcG9ydHNVcHNlcnQoKWAKK2ZlYXR1cmUgaGFzIGJlZW4gYWRkZWQgdG8gYm90aCBgR3JhcGguVmVydGV4RmVhdHVyZXNgIGFuZCBgR3JhcGguRWRnZUZlYXR1cmVzYC4gQnkgZGVmYXVsdCwgYm90aCBvZiB0aGVzZSBtZXRob2RzIHdpbGwKK3JldHVybiBgZmFsc2VgLgorCitTaG91bGQgYSBwcm92aWRlciB3aXNoIHRvIHN1cHBvcnQgdGhpcyBmZWF0dXJlLCB0aGUgYmVoYXZpb3Igb2YgYGFkZFYoKWAgYW5kL29yIGBhZGRFKClgIHNob3VsZCBjaGFuZ2Ugc3VjaCB0aGF0IHdoZW4KK2EgdmVydGV4IG9yIGVkZ2Ugd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGlzIHByb3ZpZGVkLCB0aGUgcmVzcGVjdGl2ZSBzdGVwIHdpbGwgaW5zZXJ0IHRoZSBuZXcgZWxlbWVudCBpZiB0aGF0IHZhbHVlCitpcyBub3QgcHJlc2VudCBvciB1cGRhdGUgYW4gZXhpc3RpbmcgZWxlbWVudCBpZiBpdCBpcyBmb3VuZC4gVGhlIG1ldGhvZCBieSB3aGljaCB0aGUgcHJvdmlkZXIgImlkZW50aWZpZXMiIGFuIGVsZW1lbnQKK2lzIGNvbXBsZXRlbHkgdXAgdG8gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGF0IHByb3ZpZGVyLiBJbiB0aGUgbW9zdCBzaW1wbGUgZmFzaGlvbiwgYSBncmFwaCBjb3VsZCBzaW1wbHkgY2hlY2sgdGhlCit2YWx1ZSBvZiB0aGUgc3VwcGxpZWQgYFQuaWRgLCBob3dldmVyIGdyYXBocyB0aGF0IHN1cHBvcnQgc29tZSBmb3JtIG9mIHNjaGVtYSB3aWxsIGxpa2VseSBoYXZlIG90aGVyIG1ldGhvZHMgZm9yCitkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCBhbiBleGlzdGluZyBlbGVtZW50IGlzIHByZXNlbnQuCisKK1RoZSBleHRlbnQgdG8gd2hpY2ggVGlua2VyUG9wIHRlc3RzICJ1cHNlcnQiIGlzIGZhaXJseSBuYXJyb3cuIEdyYXBoIHByb3ZpZGVycyB0aGF0IGNob29zZSB0byBzdXBwb3J0IHRoaXMgZmVhdHVyZQorc2hvdWxkIGNvbnNpZGVyIHRoZWlyIG93biB0ZXN0IHN1aXRlcyBjYXJlZnVsbHkgdG8gZW5zdXJlIGFwcHJvcHJpYXRlIGNvdmVyYWdlLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTY4NVtUSU5LRVJQT1AtMTY4NV0KKworPT09PT0gVHlwZVRyYW5zbGF0b3IgQ2hhbmdlcworCitUaGUgYFR5cGVUcmFuc2xhdG9yYCBleHBlcmllbmNlZCBhIGNoYW5nZSBpbiBpdHMgQVBJIGFuZCBgR3Jvb3Z5VHJhbnNsYXRvcmAgYSBjaGFuZ2UgaW4gZXhwZWN0YXRpb25zLgorCitgVHlwZVRyYW5zbGF0b3JgIG5vdyBpbXBsZW1lbnRzIGBCaUZ1bmN0aW9uYCBhbmQgdGFrZXMgdGhlIGdyYXBoIHRyYXZlcnNhbCBzb3VyY2UgbmFtZSBhcyBhbiBhcmd1bWVudCBhbG9uZyB3aXRoIHRoZQorb2JqZWN0IHRvIHRyYW5zbGF0ZS4gVGhpcyBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgYnkgZGVmYXVsdCBmb3IgR3Jvb3Z5IHdpdGggYEdyb292eVRyYW5zbGF0b3IuRGVmYXVsdFR5cGVUcmFuc2xhdG9yYAord2hpY2ggZW5jYXBzdWxhdGVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB3aGF0IGBHcm9vdnlUcmFuc2xhdG9yYCBmb3JtZXJseSBkaWQgYnkgZGVmYXVsdC4gVG8gcHJvdmlkZSBjdXN0b21pemUKK3RyYW5zbGF0aW9uLCBzaW1wbHkgZXh0ZW5kIHRoZSBgRGVmYXVsdFR5cGVUcmFuc2xhdG9yYCBhbmQgb3ZlcnJpZGUgdGhlIG1ldGhvZHMuCisKK2BHcm9vdnlUcmFuc2xhdG9yYCBub3cgZXhwZWN0cyB0aGF0IHRoZSBgVHlwZVRyYW5zbGF0b3JgIHByb3ZpZGUgdG8gaXQgYXMgcGFydCBvZiBpdHMgYG9mKClgIHN0YXRpYyBtZXRob2Qgb3ZlcmxvYWQKK2lzICJjb21wbGV0ZSIgLSBpLmUuIHRoYXQgaXQgcHJvdmlkZXMgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IHRvIHRyYW5zbGF0ZSB0aGUgdHlwZXMgcGFzc2VkIHRvIGl0LiBUaHVzLCBhICJjb21wbGV0ZSIKK2BUeXBlVHJhbnNsYXRvcmAgaXMgb25lIHRoYXQgZG9lcyBldmVyeXRoaW5nIHRoYXQgYERlZmF1bHRUeXBlVHJhbnNsYXRvcmAgZG9lcyBhcyBhIG1pbmltdW0gcmVxdWlyZW1lbnQuIFRoZXJlZm9yZSwKK3RoZSBleHRlbnNpb24gbW9kZWwgZGVzY3JpYmVkIGFib3ZlIGlzIHRoZSBlYXNpZXN0IHdheSB0byBnZXQgZ29pbmcgd2l0aCBhIGN1c3RvbSBgVHlwZVRyYW5zbGF0b3JgIGFwcHJvYWNoLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA3MltUSU5LRVJQT1AtMjA3Ml0KKworPT09PSBHcmFwaCBEcml2ZXIgUHJvdmlkZXJzCisKKz09PT09IERlcHJlY2F0aW9uIFJlbW92YWwgaW4gUmVtb3RlQ29ubmVjdGlvbgorCitUaGUgdHdvIGRlcHJlY2F0ZWQgc3luY2hyb25vdXMgYHN1Ym1pdCgpYCBtZXRob2RzIG9uIHRoZSBgUmVtb3RlQ29ubmVjdGlvbmAgaW50ZXJmYWNlIGhhdmUgYmVlbiByZW1vdmVkLCB3aGljaCBtZWFucwordGhhdCBgUmVtb3RlQ29ubmVjdGlvbmAgaW1wbGVtZW50YXRpb25zIHdpbGwgbmVlZCB0byBpbXBsZW1lbnQgYHN1Ym1pdEFzeW5jKEJ5dGVjb2RlKWAgaWYgdGhleSBoYXZlIG5vdCBhbHJlYWR5IGRvbmUKK3NvLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjEwM1tUSU5LRVJQT1AtMjEwM10KZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLXNpbXBsZS5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvYXZhbnQtZ3JlbWxpbi1zaW1wbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MGFmMTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvYXZhbnQtZ3JlbWxpbi1zaW1wbGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODY1OWI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2F2YW50LWdyZW1saW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0xLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0xLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDk5NTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2JsdWVwcmludHMtY2hhcmFjdGVyLTEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0yLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0yLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGFiZGJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2JsdWVwcmludHMtY2hhcmFjdGVyLTIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0zLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0zLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTUyOTJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2JsdWVwcmludHMtY2hhcmFjdGVyLTMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9jYy1zY2FsZS1yYXRpby5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvY2Mtc2NhbGUtcmF0aW8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTg0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvY2Mtc2NhbGUtcmF0aW8ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9jYy1zY2FsZS1zaXplLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9jYy1zY2FsZS1zaXplLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA4YTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2NjLXNjYWxlLXNpemUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTEucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2ZyYW1lcy1jaGFyYWN0ZXItMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwNWRjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTIucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2ZyYW1lcy1jaGFyYWN0ZXItMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkZmYyZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTMucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2ZyYW1lcy1jaGFyYWN0ZXItMy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UwZjljMQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mdXJuYWNlLWNoYXJhY3Rlci0yLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mdXJuYWNlLWNoYXJhY3Rlci0yLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDU5NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2Z1cm5hY2UtY2hhcmFjdGVyLTIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWFudGktZ3JlbWxpbi5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1hbnRpLWdyZW1saW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNDU4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1hbnRpLWdyZW1saW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tY2hpY2tlbndpbmcucG5nCmNvcHkgdG8gZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tY2hpY2tlbndpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWNsb3duaW4tYXJvdW5kLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWNsb3duaW4tYXJvdW5kLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGUxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tY2xvd25pbi1hcm91bmQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyYWQucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JhZC5wbmcKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtYWxpY2lvdXMucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWFsaWNpb3VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTJiZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWFsaWNpb3VzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtaWNpZGUucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWljaWRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGE1M2RiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWljaWRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGluLXRoZS1ncm91Y2gucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWxpbi10aGUtZ3JvdWNoLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YThlZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWxpbi10aGUtZ3JvdWNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGluLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1saW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYTNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGluLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGl2aWNoLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1saXZpY2gucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlY2EwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGl2aWNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1vcG9seS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZwpjb3B5IHRvIGRvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1vcG9seS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1yZWFwZXIucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbXJlYXBlci5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbXJlYXBlci5wbmcKY29weSB0byBkb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtcmVhcGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbXN0ZWZhbmkucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbXN0ZWZhbmkucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1zdGVmYW5pLnBuZwpjb3B5IHRvIGRvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1zdGVmYW5pLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1oYXJkaGF0LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWhhcmRoYXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTRlYWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1oYXJkaGF0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1pbnRoZXdpbGQucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4taW50aGV3aWxkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzM3YzE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4taW50aGV3aWxkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1raWx0LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWtpbHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YTMyMmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1raWx0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tbmV3LXNoZXJpZmYtaW4tdG93bi5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZwpjb3B5IHRvIGRvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uby1tb3JlLW1yLW5pY2UtZ3V5LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nCmNvcHkgdG8gZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tb24tdGhlLWNhc2UucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tb24tdGhlLWNhc2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzY2RiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1vbi10aGUtY2FzZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tcGlwZS5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1waXBlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmE4NWRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tcGlwZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tcmVmZXJlbmNlLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLXJlZmVyZW5jZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2M2M3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLXJlZmVyZW5jZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4teG1hcy1hbHBoYS5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi14bWFzLWFscGhhLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2MyNzQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4teG1hcy1hbHBoYS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3BpcGVzLWNoYXJhY3Rlci0yLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFjZTYxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3BpcGVzLWNoYXJhY3Rlci0zLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyYWZkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItMi5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvcmV4c3Rlci0yLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWE5YzM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItY29ubmVjdC5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvcmV4c3Rlci1jb25uZWN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWY1M2IwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItY29ubmVjdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdHlsZXNoZWV0cy90aW5rZXJwb3AuY3NzIGIvZG9jcy9zdHlsZXNoZWV0cy90aW5rZXJwb3AuY3NzCmluZGV4IDZkNDI5NTYuLjNhMzkyYzEgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3R5bGVzaGVldHMvdGlua2VycG9wLmNzcworKysgYi9kb2NzL3N0eWxlc2hlZXRzL3RpbmtlcnBvcC5jc3MKQEAgLTY5Miw0ICs2OTIsNCBAQAogI2Zvb3RlciB7IGJhY2tncm91bmQtY29sb3I6ICM0NjUxNTg7IHBhZGRpbmc6IDJlbTsgfQogCiAjZm9vdGVyLXRleHQgeyBjb2xvcjogI2VlZTsgZm9udC1zaXplOiAwLjhlbTsgdGV4dC1hbGlnbjogY2VudGVyOyB9Ci0udGFic3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46NDBweCBhdXRvO3dpZHRoOjEwMjRweDttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy10b3A6MTBweDttYXJnaW4tYm90dG9tOjYwcHh9LnRhYnMgaW5wdXR7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2hlaWdodDo1MHB4O2xlZnQ6MDt0b3A6MDtvcGFjaXR5OjA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO2N1cnNvcjpwb2ludGVyO21hcmdpbjowfS50YWJzIGlucHV0OmhvdmVyK2xhYmVse2JhY2tncm91bmQ6I2UwOGYyNH0udGFicyBsYWJlbHtiYWNrZ3JvdW5kOiNlOWZmZTk7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDo1MHB4O2hlaWdodDo2MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO3BhZGRpbmc6MCAyMHB4O2Zsb2F0OmxlZnQ7ZGlzcGxheTpibG9jaztsZXR0ZXItc3BhY2luZzoxcHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNoYWRvdzoycHggMCAycHggcmdiYSgwLDAsMCwwLjEpLC0ycHggMCAycHggcmdiYSgwLDAsMCwwLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zaXRpb246YWxsIDE1MG1zIGVhc2UgMHM7dHJhbnNpdGlvbjphbGwgMTUwbXMgZWFzZSAwc30udGFicyBsYWJlbDpob3ZlcntjdXJzb3I6cG9pbnRlcn0udGFicyBsYWJlbDphZnRlcntjb250ZW50OicnO2JhY2tncm91bmQ6IzYwOTA2MDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTJweDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2Rpc3BsYXk6YmxvY2t9LnRhYnMtMiBpbnB1dHt3aWR0aDo1MCV9LnRhYnMtMiBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTIgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDo1MCV9LnRhYnMtMiBsYWJlbHt3aWR0aDo1MCV9LnRhYnMtMyBpbnB1dHt3aWR0aDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTMgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjY2LjY2NjY3JX0udGFicy0zIGxhYmVse3dpZHRoOjMzLjMzMzMzJX0udGFicy00IGlucHV0e3dpZHRoOjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0xe2xlZnQ6MCV9LnRhYnMtNCBpbnB1dC50YWItc2VsZWN0b3ItMntsZWZ0OjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0ze2xlZnQ6NTAlfS50YWJzLTQgaW5wdXQudGFiLXNlbGVjdG9yLTR7bGVmdDo3NSV9LnRhYnMtNCBsYWJlbHt3aWR0aDoyNSV9LnRhYnMgbGFiZWw6Zmlyc3Qtb2YtdHlwZXt6LWluZGV4OjR9LnRhYi1sYWJlbC0ye3otaW5kZXg6NH0udGFiLWxhYmVsLTN7ei1pbmRleDozfS50YWItbGFiZWwtNHt6LWluZGV4OjJ9LnRhYnMgaW5wdXQ6Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kOiM2MDkwNjA7Y29sb3I6I2ZlZmVmZTt6LWluZGV4OjZ9LmNsZWFyLXNoYWRvd3tjbGVhcjpib3RofS50YWJjb250ZW50e2hlaWdodDphdXRvO3dpZHRoOjEwMCU7ZmxvYXQ6bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjU7YmFja2dyb3VuZDojZWVlO3RvcDotMTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnRhYmNvbnRlbnQ+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7d2lkdGg6MDtoZWlnaHQ6MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7dG9wOjA7bGVmdDowO3otaW5kZXg6MTtvcGFjaXR5OjA7YmFja2dyb3VuZDojZWVlfS50YWJjb250ZW50IC5Db2RlUmF5e2JhY2tncm91bmQtY29sb3I6I2ZlZmVmZX0udGFicyAudGFiLXNlbGVjdG9yLTE6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTF7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9LnRhYnMgLnRhYi1zZWxlY3Rvci0yOmNoZWNrZWQgfiAudGFiY29udGVudCAudGFiY29udGVudC0ye3otaW5kZXg6MTAwOy1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7b3BhY2l0eToxO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztwYWRkaW5nLXRvcDozMHB4fS50YWJzIC50YWItc2VsZWN0b3ItMzpjaGVja2VkIH4gLnRhYmNvbnRlbnQgLnRhYmNvbnRlbnQtM3t6LWluZGV4OjEwMDstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO29wYWNpdHk6MTt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87cGFkZGluZy10b3A6MzBweH0udGFicyAudGFiLXNlbGVjdG9yLTQ6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTR7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9CisudGFic3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46NDBweCBhdXRvO3dpZHRoOjEwMjRweDttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy10b3A6MTBweDttYXJnaW4tYm90dG9tOjYwcHh9LnRhYnMgaW5wdXR7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2hlaWdodDo1MHB4O2xlZnQ6MDt0b3A6MDtvcGFjaXR5OjA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO2N1cnNvcjpwb2ludGVyO21hcmdpbjowfS50YWJzIGlucHV0OmhvdmVyK2xhYmVse2JhY2tncm91bmQ6I2UwOGYyNH0udGFicyBsYWJlbHtiYWNrZ3JvdW5kOiNlOWZmZTk7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDo1MHB4O2hlaWdodDo2MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO3BhZGRpbmc6MCAyMHB4O2Zsb2F0OmxlZnQ7ZGlzcGxheTpibG9jaztsZXR0ZXItc3BhY2luZzoxcHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNoYWRvdzoycHggMCAycHggcmdiYSgwLDAsMCwwLjEpLC0ycHggMCAycHggcmdiYSgwLDAsMCwwLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zaXRpb246YWxsIDE1MG1zIGVhc2UgMHM7dHJhbnNpdGlvbjphbGwgMTUwbXMgZWFzZSAwc30udGFicyBsYWJlbDpob3ZlcntjdXJzb3I6cG9pbnRlcn0udGFicyBsYWJlbDphZnRlcntjb250ZW50OicnO2JhY2tncm91bmQ6IzYwOTA2MDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTJweDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2Rpc3BsYXk6YmxvY2t9LnRhYnMtMiBpbnB1dHt3aWR0aDo1MCV9LnRhYnMtMiBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTIgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDo1MCV9LnRhYnMtMiBsYWJlbHt3aWR0aDo1MCV9LnRhYnMtMyBpbnB1dHt3aWR0aDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTMgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjY2LjY2NjY3JX0udGFicy0zIGxhYmVse3dpZHRoOjMzLjMzMzMzJX0udGFicy00IGlucHV0e3dpZHRoOjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0xe2xlZnQ6MCV9LnRhYnMtNCBpbnB1dC50YWItc2VsZWN0b3ItMntsZWZ0OjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0ze2xlZnQ6NTAlfS50YWJzLTQgaW5wdXQudGFiLXNlbGVjdG9yLTR7bGVmdDo3NSV9LnRhYnMtNCBsYWJlbHt3aWR0aDoyNSV9LnRhYnMtNSBpbnB1dHt3aWR0aDoyMCV9LnRhYnMtNSBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTUgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDoyMCV9LnRhYnMtNSBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjQwJX0udGFicy01IGlucHV0LnRhYi1zZWxlY3Rvci00e2xlZnQ6NjAlfS50YWJzLTUgaW5wdXQudGFiLXNlbGVjdG9yLTV7bGVmdDo4MCV9LnRhYnMtNSBsYWJlbHt3aWR0aDoyMCV9LnRhYnMtNiBpbnB1dHt3aWR0aDoxNi42NjY2NyV9LnRhYnMtNiBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTYgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDoxNi42NjY2NyV9LnRhYnMtNiBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjMzLjMzMzMzJX0udGFicy02IGlucHV0LnRhYi1zZWxlY3Rvci00e2xlZnQ6NTAlfS50YWJzLTYgaW5wdXQudGFiLXNlbGVjdG9yLTV7bGVmdDo2Ni42NjY2NyV9LnRhYnMtNiBpbnB1dC50YWItc2VsZWN0b3ItNntsZWZ0OjgzLjMzMzMzJX0udGFicy02IGxhYmVse3dpZHRoOjE2LjY2NjY3JX0udGFicyBsYWJlbDpmaXJzdC1vZi10eXBle3otaW5kZXg6NH0udGFiLWxhYmVsLTJ7ei1pbmRleDo0fS50YWItbGFiZWwtM3t6LWluZGV4OjN9LnRhYi1sYWJlbC00e3otaW5kZXg6Mn0udGFicyBpbnB1dDpjaGVja2VkK2xhYmVse2JhY2tncm91bmQ6IzYwOTA2MDtjb2xvcjojZmVmZWZlO3otaW5kZXg6Nn0uY2xlYXItc2hhZG93e2NsZWFyOmJvdGh9LnRhYmNvbnRlbnR7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NTtiYWNrZ3JvdW5kOiNlZWU7dG9wOi0xMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0udGFiY29udGVudD5kaXZ7cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdDt3aWR0aDowO2hlaWdodDowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt0b3A6MDtsZWZ0OjA7ei1pbmRleDoxO29wYWNpdHk6MDtiYWNrZ3JvdW5kOiNlZWV9LnRhYmNvbnRlbnQgLkNvZGVSYXl7YmFja2dyb3VuZC1jb2xvcjojZmVmZWZlfS50YWJzIC50YWItc2VsZWN0b3ItMTpjaGVja2VkIH4gLnRhYmNvbnRlbnQgLnRhYmNvbnRlbnQtMXt6LWluZGV4OjEwMDstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO29wYWNpdHk6MTt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87cGFkZGluZy10b3A6MzBweH0udGFicyAudGFiLXNlbGVjdG9yLTI6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTJ7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9LnRhYnMgLnRhYi1zZWxlY3Rvci0zOmNoZWNrZWQgfiAudGFiY29udGVudCAudGFiY29udGVudC0ze3otaW5kZXg6MTAwOy1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7b3BhY2l0eToxO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztwYWRkaW5nLXRvcDozMHB4fS50YWJzIC50YWItc2VsZWN0b3ItNDpjaGVja2VkIH4gLnRhYmNvbnRlbnQgLnRhYmNvbnRlbnQtNHt6LWluZGV4OjEwMDstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO29wYWNpdHk6MTt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87cGFkZGluZy10b3A6MzBweH0udGFicyAudGFiLXNlbGVjdG9yLTU6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTV7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9LnRhYnMgLnRhYi1zZWxlY3Rvci02OmNoZWNrZWQgfiAudGFiY29udGVudCAudGFiY29udGVudC02e3otaW5kZXg6MTAwOy1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7b3BhY2l0eToxO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztwYWRkaW5nLXRvcDozMHB4fQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vcG9tLnhtbCBiL2dpcmFwaC1ncmVtbGluL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMDViZWYuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi08IS0tCi1MaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKLWNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAotdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgotVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKLSh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCi10aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi1Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi1kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi1TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi1saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0tPgotPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIKLSAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gICAgPHBhcmVudD4KLSAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgotICAgIDwvcGFyZW50PgotICAgIDxhcnRpZmFjdElkPmdpcmFwaC1ncmVtbGluPC9hcnRpZmFjdElkPgotICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR2lyYXBoIEdyZW1saW48L25hbWU+Ci0gICAgPGRlcGVuZGVuY3lNYW5hZ2VtZW50PgotICAgICAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICAgICAgPCEtLSBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvaGFkb29wL3B1bGwvODQgLS0+Ci0gICAgICAgICAgICAgICAgPGdyb3VwSWQ+aW8ubmV0dHk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHk8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPHZlcnNpb24+My43LjEuRmluYWw8L3ZlcnNpb24+Ci0gICAgICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDwvZGVwZW5kZW5jeU1hbmFnZW1lbnQ+Ci0gICAgPGRlcGVuZGVuY2llcz4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tY29yZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICAgICAgPGFydGlmYWN0SWQ+aGFkb29wLWdyZW1saW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+Ci0gICAgICAgICAgICA8ZXhjbHVzaW9ucz4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5pby5uZXR0eTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHktYWxsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS50aG91Z2h0d29ya3MucGFyYW5hbWVyPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5wYXJhbmFtZXI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS56b29rZWVwZXI8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnpvb2tlZXBlcjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8IS0tIEdJUkFQSCAtLT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmdpcmFwaDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmdpcmFwaC1jb3JlPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+MS4xLjAtaGFkb29wMjwvdmVyc2lvbj4KLSAgICAgICAgICAgIDxleGNsdXNpb25zPgotICAgICAgICAgICAgICAgIDwhLS0gc2VsZiBjb25mbGljdHMgLS0+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+bG9nNGo8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZzRqPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDwhLS0gY29uZmxpY3RzIHdpdGggaGFkb29wLWdyZW1saW4gLS0+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdvb2dsZS5ndWF2YTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3VhdmE8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1jb2RlYzwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1jb2RlYzwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWlvPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWlvPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDwhLS0gdXNlcyBhbiBvbGRlciB2ZXJzaW9uIHRoYXQgY29uZmxpY3RzIHdpdGggc3BhcmsgMi4wIC0tPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWFubm90YXRpb25zPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5qYWNrc29uPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWNvcmUtYXNsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5qYWNrc29uPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLW1hcHBlci1hc2w8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPCEtLSBjb25mbGljdHMgd2l0aCBncmVtbGluLWdyb292eSAtLT4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmNvbW1vbnM8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbGFuZzM8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPCEtLSBjb25mbGljdHMgd2l0aCBncmVtbGluLWNvcmUgLS0+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNsZjRqPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNsZjRqPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1sb2c0ajEyPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDwhLS0gZ3JlbWxpbi1ncm9vdnkgY29uZmxpY3RzIC0tPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmpsaW5lPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qbGluZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8IS0tIGNvbmZsaWN0cyB3aXRoIHNwYXJrIChhIGhhY2sgc28gYm90aCBjYW4gYmUgbG9hZGVkIGluIHBhcmFsbGVsKSAtLT4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5qYXZheC5zZXJ2bGV0PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zZXJ2bGV0LWFwaTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8IS0tIGNvbnNpc3RlbnQgZGVwZW5kZW5jaWVzIC0tPgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPmphdmF4LnNlcnZsZXQ8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYXZheC5zZXJ2bGV0LWFwaTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPjMuMS4wPC92ZXJzaW9uPgotICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmNvcmU8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWFubm90YXRpb25zPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+Mi45LjEwPC92ZXJzaW9uPgotICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDwhLS0gVEVTVCAtLT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tdGVzdDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgIDxleGNsdXNpb25zPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtaW88L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtaW88L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICA8L2V4Y2x1c2lvbnM+Ci0gICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmhhZG9vcC1ncmVtbGluPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgotICAgICAgICAgICAgPHR5cGU+dGVzdC1qYXI8L3R5cGU+Ci0gICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgICAgICA8ZXhjbHVzaW9ucz4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5pby5uZXR0eTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHktYWxsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS50aG91Z2h0d29ya3MucGFyYW5hbWVyPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5wYXJhbmFtZXI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS56b29rZWVwZXI8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnpvb2tlZXBlcjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VyZ3JhcGgtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPnNsZjRqLWxvZzRqMTI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnVpbGQ+Ci0gICAgICAgIDxkaXJlY3Rvcnk+JHtiYXNlZGlyfS90YXJnZXQ8L2RpcmVjdG9yeT4KLSAgICAgICAgPGZpbmFsTmFtZT4ke3Byb2plY3QuYXJ0aWZhY3RJZH0tJHtwcm9qZWN0LnZlcnNpb259PC9maW5hbE5hbWU+Ci0gICAgICAgIDxyZXNvdXJjZXM+Ci0gICAgICAgICAgICA8cmVzb3VyY2U+Ci0gICAgICAgICAgICAgICAgPGRpcmVjdG9yeT4ke2Jhc2VkaXJ9L3NyYy9tYWluL3Jlc291cmNlczwvZGlyZWN0b3J5PgotICAgICAgICAgICAgPC9yZXNvdXJjZT4KLSAgICAgICAgPC9yZXNvdXJjZXM+Ci0gICAgICAgIDx0ZXN0UmVzb3VyY2VzPgotICAgICAgICAgICAgPHRlc3RSZXNvdXJjZT4KLSAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PiR7YmFzZWRpcn0vc3JjL3Rlc3QvcmVzb3VyY2VzPC9kaXJlY3Rvcnk+Ci0gICAgICAgICAgICA8L3Rlc3RSZXNvdXJjZT4KLSAgICAgICAgPC90ZXN0UmVzb3VyY2VzPgotICAgICAgICA8cGx1Z2lucz4KLSAgICAgICAgICAgIDxwbHVnaW4+Ci0gICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgotICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWFzc2VtYmx5LXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4KLSAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5idWlsZC1kZXRhY2hlZC1hc3NlbWJsaWVzPC9pZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwaGFzZT5wYWNrYWdlPC9waGFzZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5zaW5nbGU8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dGFjaD5mYWxzZTwvYXR0YWNoPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdG9ycz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0b3I+c3JjL2Fzc2VtYmx5L3N0YW5kYWxvbmUueG1sPC9kZXNjcmlwdG9yPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRvcj5zcmMvYXNzZW1ibHkvaGFkb29wLWpvYi54bWw8L2Rlc2NyaXB0b3I+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdG9ycz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmluYWxOYW1lPiR7cHJvamVjdC5hcnRpZmFjdElkfS0ke3Byb2plY3QudmVyc2lvbn08L2ZpbmFsTmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+Ci0gICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgotICAgICAgICAgICAgPC9wbHVnaW4+Ci0gICAgICAgICAgICA8cGx1Z2luPgotICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1zdXJlZmlyZS1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8L3BsdWdpbj4KLSAgICAgICAgICAgIDxwbHVnaW4+Ci0gICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgotICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWZhaWxzYWZlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDwvcGx1Z2luPgotICAgICAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuZ21hdmVucGx1czwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5nbWF2ZW5wbHVzLXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4KLSAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5hZGRTb3VyY2VzPC9nb2FsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmFkZFRlc3RTb3VyY2VzPC9nb2FsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmdlbmVyYXRlU3R1YnM8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+Y29tcGlsZTwvZ29hbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZVRlc3RTdHViczwvZ29hbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5jb21waWxlVGVzdHM8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cmVtb3ZlU3R1YnM8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cmVtb3ZlVGVzdFN0dWJzPC9nb2FsPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KLSAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+Ci0gICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgotICAgICAgICAgICAgPC9wbHVnaW4+Ci0gICAgICAgICAgICA8cGx1Z2luPgotICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1qYXItcGx1Z2luPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8YXJjaGl2ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYW5pZmVzdEVudHJpZXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyZW1saW4tUGx1Z2luLURlcGVuZGVuY2llcz5vcmcuYXBhY2hlLmhhZG9vcDpoYWRvb3AtY2xpZW50OiR7aGFkb29wLnZlcnNpb259Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmVtbGluLVBsdWdpbi1EZXBlbmRlbmNpZXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L21hbmlmZXN0RW50cmllcz4KLSAgICAgICAgICAgICAgICAgICAgPC9hcmNoaXZlPgotICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgIDwvcGx1Z2luPgotICAgICAgICA8L3BsdWdpbnM+Ci0gICAgPC9idWlsZD4KLTwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvYXNzZW1ibHkvaGFkb29wLWpvYi54bWwgYi9naXJhcGgtZ3JlbWxpbi9zcmMvYXNzZW1ibHkvaGFkb29wLWpvYi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MjMzZTkuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL2Fzc2VtYmx5L2hhZG9vcC1qb2IueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCEtLQotICB+IExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAgfiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAgfiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICB+IHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAgfiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gIH4gIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICB+IHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAgfgotICB+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICB+Ci0gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICB+IHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gIH4gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gIH4gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gIH4gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICB+IHVuZGVyIHRoZSBMaWNlbnNlLgotICAtLT4KLTxhc3NlbWJseT4KLSAgICA8aWQ+am9iPC9pZD4KLSAgICA8Zm9ybWF0cz4KLSAgICAgICAgPGZvcm1hdD5qYXI8L2Zvcm1hdD4KLSAgICA8L2Zvcm1hdHM+Ci0gICAgPGluY2x1ZGVCYXNlRGlyZWN0b3J5PmZhbHNlPC9pbmNsdWRlQmFzZURpcmVjdG9yeT4KLSAgICA8ZGVwZW5kZW5jeVNldHM+Ci0gICAgICAgIDxkZXBlbmRlbmN5U2V0PgotICAgICAgICAgICAgPHVucGFjaz5mYWxzZTwvdW5wYWNrPgotICAgICAgICAgICAgPHNjb3BlPnJ1bnRpbWU8L3Njb3BlPgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT5saWI8L291dHB1dERpcmVjdG9yeT4KLSAgICAgICAgICAgIDxleGNsdWRlcz4KLSAgICAgICAgICAgICAgICA8ZXhjbHVkZT4ke2dyb3VwSWR9OiR7YXJ0aWZhY3RJZH08L2V4Y2x1ZGU+Ci0gICAgICAgICAgICA8L2V4Y2x1ZGVzPgotICAgICAgICA8L2RlcGVuZGVuY3lTZXQ+Ci0gICAgICAgIDxkZXBlbmRlbmN5U2V0PgotICAgICAgICAgICAgPHVucGFjaz50cnVlPC91bnBhY2s+Ci0gICAgICAgICAgICA8aW5jbHVkZXM+Ci0gICAgICAgICAgICAgICAgPGluY2x1ZGU+JHtncm91cElkfToke2FydGlmYWN0SWR9PC9pbmNsdWRlPgotICAgICAgICAgICAgPC9pbmNsdWRlcz4KLSAgICAgICAgPC9kZXBlbmRlbmN5U2V0PgotICAgIDwvZGVwZW5kZW5jeVNldHM+Ci08L2Fzc2VtYmx5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9hc3NlbWJseS9zdGFuZGFsb25lLnhtbCBiL2dpcmFwaC1ncmVtbGluL3NyYy9hc3NlbWJseS9zdGFuZGFsb25lLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJiODUxNC4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvYXNzZW1ibHkvc3RhbmRhbG9uZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08IS0tCi0gIH4gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICB+IG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICB+IGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gIH4gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICB+IHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAgfiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gIH4gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICB+Ci0gIH4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gIH4KLSAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gIH4gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAgfiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAgfiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAgfiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gIH4gdW5kZXIgdGhlIExpY2Vuc2UuCi0gIC0tPgotPGFzc2VtYmx5PgotICAgIDxpZD5zdGFuZGFsb25lPC9pZD4KLSAgICA8Zm9ybWF0cz4KLSAgICAgICAgPGZvcm1hdD5kaXI8L2Zvcm1hdD4KLSAgICA8L2Zvcm1hdHM+Ci0gICAgPGluY2x1ZGVCYXNlRGlyZWN0b3J5PmZhbHNlPC9pbmNsdWRlQmFzZURpcmVjdG9yeT4KLQotICAgIDxmaWxlU2V0cz4KLSAgICAgICAgPGZpbGVTZXQ+Ci0gICAgICAgICAgICA8ZGlyZWN0b3J5PnNyYy9tYWluL2JpbjwvZGlyZWN0b3J5PgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4vYmluPC9vdXRwdXREaXJlY3Rvcnk+Ci0gICAgICAgICAgICA8ZmlsZU1vZGU+MDc1NTwvZmlsZU1vZGU+Ci0gICAgICAgIDwvZmlsZVNldD4KLSAgICAgICAgPGZpbGVTZXQ+Ci0gICAgICAgICAgICA8ZGlyZWN0b3J5PnRhcmdldC8qLmphcjwvZGlyZWN0b3J5PgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4vbGliPC9vdXRwdXREaXJlY3Rvcnk+Ci0gICAgICAgIDwvZmlsZVNldD4KLSAgICA8L2ZpbGVTZXRzPgotCi0gICAgPGRlcGVuZGVuY3lTZXRzPgotICAgICAgICA8ZGVwZW5kZW5jeVNldD4KLSAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+L2xpYjwvb3V0cHV0RGlyZWN0b3J5PgotICAgICAgICAgICAgPHVucGFjaz5mYWxzZTwvdW5wYWNrPgotICAgICAgICAgICAgPHNjb3BlPmNvbXBpbGU8L3Njb3BlPgotICAgICAgICA8L2RlcGVuZGVuY3lTZXQ+Ci0gICAgICAgIDxkZXBlbmRlbmN5U2V0PgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4vbGliPC9vdXRwdXREaXJlY3Rvcnk+Ci0gICAgICAgICAgICA8dW5wYWNrPmZhbHNlPC91bnBhY2s+Ci0gICAgICAgICAgICA8c2NvcGU+cHJvdmlkZWQ8L3Njb3BlPgotICAgICAgICA8L2RlcGVuZGVuY3lTZXQ+Ci0gICAgPC9kZXBlbmRlbmN5U2V0cz4KLTwvYXNzZW1ibHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9qc3IyMjMvR2lyYXBoR3JlbWxpblBsdWdpbi5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9qc3IyMjMvR2lyYXBoR3JlbWxpblBsdWdpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTEyMzM1Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvanNyMjIzL0dpcmFwaEdyZW1saW5QbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5qc3IyMjM7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkVtcHR5T3V0RWRnZXM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhDb21wdXRhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaEdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhNZW1vcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhNZXNzYWdlQ29tYmluZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhNZXNzZW5nZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhWZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhXb3JrZXJDb250ZXh0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5QWdncmVnYXRvcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLlBhc3NUaHJvdWdoTWVtb3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkFic3RyYWN0R3JlbWxpblBsdWdpbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5EZWZhdWx0SW1wb3J0Q3VzdG9taXplcjsKLQotLyoqCi0gKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhHcmVtbGluUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUGx1Z2luIHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTU9EVUxFX05BTUUgPSAidGlua2VycG9wLmdpcmFwaCI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR2lyYXBoR3JlbWxpblBsdWdpbiBpbnN0YW5jZSA9IG5ldyBHaXJhcGhHcmVtbGluUGx1Z2luKCk7Ci0KLSAgICBwdWJsaWMgR2lyYXBoR3JlbWxpblBsdWdpbigpIHsKLSAgICAgICAgc3VwZXIoTU9EVUxFX05BTUUsIERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkuYWRkQ2xhc3NJbXBvcnRzKAotICAgICAgICAgICAgICAgIEVtcHR5T3V0RWRnZXMuY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoQ29tcHV0YXRpb24uY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcywKLSAgICAgICAgICAgICAgICBHaXJhcGhNZW1vcnkuY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoTWVzc2FnZUNvbWJpbmVyLmNsYXNzLAotICAgICAgICAgICAgICAgIEdpcmFwaE1lc3Nlbmdlci5jbGFzcywKLSAgICAgICAgICAgICAgICBHaXJhcGhWZXJ0ZXguY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoV29ya2VyQ29udGV4dC5jbGFzcywKLSAgICAgICAgICAgICAgICBNZW1vcnlBZ2dyZWdhdG9yLmNsYXNzLAotICAgICAgICAgICAgICAgIFBhc3NUaHJvdWdoTWVtb3J5LmNsYXNzKS5jcmVhdGUoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBHaXJhcGhHcmVtbGluUGx1Z2luIGluc3RhbmNlKCkgewotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9FbXB0eU91dEVkZ2VzLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvRW1wdHlPdXRFZGdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGY0ODM1Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9FbXB0eU91dEVkZ2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmVkZ2UuRWRnZTsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5lZGdlLk91dEVkZ2VzOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci0KLWltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dDsKLWltcG9ydCBqYXZhLmlvLkRhdGFPdXRwdXQ7Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgRW1wdHlPdXRFZGdlcyBpbXBsZW1lbnRzIE91dEVkZ2VzPE9iamVjdFdyaXRhYmxlLCBOdWxsV3JpdGFibGU+IHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEVtcHR5T3V0RWRnZXMgSU5TVEFOQ0UgPSBuZXcgRW1wdHlPdXRFZGdlcygpOwotCi0gICAgcHVibGljIHN0YXRpYyBFbXB0eU91dEVkZ2VzIGluc3RhbmNlKCkgewotICAgICAgICByZXR1cm4gSU5TVEFOQ0U7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBJdGVyYWJsZTxFZGdlPE9iamVjdFdyaXRhYmxlLCBOdWxsV3JpdGFibGU+PiBlZGdlcykgewotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoZmluYWwgaW50IGNhcGFjaXR5KSB7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBhZGQoZmluYWwgRWRnZTxPYmplY3RXcml0YWJsZSwgTnVsbFdyaXRhYmxlPiBlZGdlKSB7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgcmVtb3ZlKGZpbmFsIE9iamVjdFdyaXRhYmxlIHRhcmdldFZlcnRleElkKSB7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGludCBzaXplKCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgSXRlcmF0b3I8RWRnZTxPYmplY3RXcml0YWJsZSwgTnVsbFdyaXRhYmxlPj4gaXRlcmF0b3IoKSB7Ci0gICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUl0ZXJhdG9yKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgd3JpdGUoZmluYWwgRGF0YU91dHB1dCBkYXRhT3V0cHV0KSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHJlYWRGaWVsZHMoZmluYWwgRGF0YUlucHV0IGRhdGFJbnB1dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoQ29tcHV0YXRpb24uamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhDb21wdXRhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDUyNTY2Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhDb21wdXRhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmdyYXBoLkJhc2ljQ29tcHV0YXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguZ3JhcGguVmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLlZlcnRleFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhQcm9ncmFtOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLkNvbXB1dGVyR3JhcGg7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoQ29tcHV0YXRpb24gZXh0ZW5kcyBCYXNpY0NvbXB1dGF0aW9uPE9iamVjdFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZSwgTnVsbFdyaXRhYmxlLCBPYmplY3RXcml0YWJsZT4gewotCi0gICAgcHVibGljIEdpcmFwaENvbXB1dGF0aW9uKCkgewotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGNvbXB1dGUoZmluYWwgVmVydGV4PE9iamVjdFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZSwgTnVsbFdyaXRhYmxlPiB2ZXJ0ZXgsIGZpbmFsIEl0ZXJhYmxlPE9iamVjdFdyaXRhYmxlPiBtZXNzYWdlcykgdGhyb3dzIElPRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgR2lyYXBoV29ya2VyQ29udGV4dCB3b3JrZXJDb250ZXh0ID0gdGhpcy5nZXRXb3JrZXJDb250ZXh0KCk7Ci0gICAgICAgIGZpbmFsIFZlcnRleFByb2dyYW08Pz4gdmVydGV4UHJvZ3JhbSA9IHdvcmtlckNvbnRleHQuZ2V0VmVydGV4UHJvZ3JhbVBvb2woKS50YWtlKCk7Ci0gICAgICAgIHZlcnRleFByb2dyYW0uZXhlY3V0ZShDb21wdXRlckdyYXBoLnZlcnRleFByb2dyYW0odmVydGV4LmdldFZhbHVlKCkuZ2V0KCksIHZlcnRleFByb2dyYW0pLCB3b3JrZXJDb250ZXh0LmdldE1lc3NlbmdlcigoR2lyYXBoVmVydGV4KSB2ZXJ0ZXgsIHRoaXMsIG1lc3NhZ2VzLml0ZXJhdG9yKCkpLCB3b3JrZXJDb250ZXh0LmdldE1lbW9yeSgpKTsKLSAgICAgICAgd29ya2VyQ29udGV4dC5nZXRWZXJ0ZXhQcm9ncmFtUG9vbCgpLm9mZmVyKHZlcnRleFByb2dyYW0pOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhHcmFwaENvbXB1dGVyLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoR3JhcGhDb21wdXRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmJlYjM4Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhHcmFwaENvbXB1dGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMDggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5CYXNlQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkZpbGVDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLlByb3BlcnRpZXNDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5leGNlcHRpb24uRXhjZXB0aW9uVXRpbHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguY29uZi5HaXJhcGhDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmNvbmYuR2lyYXBoQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmpvYi5HaXJhcGhKb2I7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuZmlsZWNhY2hlLkRpc3RyaWJ1dGVkQ2FjaGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuZnMuRmlsZVN5c3RlbTsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5mcy5QYXRoOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5DbHVzdGVyOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5JbnB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuT3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5saWIuaW5wdXQuRmlsZUlucHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5saWIub3V0cHV0LkZpbGVPdXRwdXRGb3JtYXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AudXRpbC5Ub29sOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLnV0aWwuVG9vbFJ1bm5lcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5zdHJ1Y3R1cmUuaW8uR2lyYXBoVmVydGV4SW5wdXRGb3JtYXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGguc3RydWN0dXJlLmlvLkdpcmFwaFZlcnRleE91dHB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci5BYnN0cmFjdEhhZG9vcEdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci51dGlsLkNvbXB1dGVyU3VibWlzc2lvbkhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuTWFwUmVkdWNlSGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uRmlsZVN5c3RlbVN0b3JhZ2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLkdyYXBoRmlsdGVyQXdhcmU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLklucHV0T3V0cHV0SGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5PYmplY3RXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGVJdGVyYXRvcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uVmVydGV4V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLnV0aWwuQ29uZlV0aWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyUmVzdWx0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NYXBSZWR1Y2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeUNvbXB1dGVLZXk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleFByb2dyYW07Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuRGVmYXVsdENvbXB1dGVyUmVzdWx0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLk1hcE1lbW9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5TdG9yYWdlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5HcmVtbGluOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5Ob3RTZXJpYWxpemFibGVFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJJOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmU7Ci1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3I7Ci1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoR3JhcGhDb21wdXRlciBleHRlbmRzIEFic3RyYWN0SGFkb29wR3JhcGhDb21wdXRlciBpbXBsZW1lbnRzIEdyYXBoQ29tcHV0ZXIsIFRvb2wgewotCi0gICAgcHJvdGVjdGVkIEdpcmFwaENvbmZpZ3VyYXRpb24gZ2lyYXBoQ29uZmlndXJhdGlvbiA9IG5ldyBHaXJhcGhDb25maWd1cmF0aW9uKCk7Ci0gICAgcHJpdmF0ZSBNYXBNZW1vcnkgbWVtb3J5ID0gbmV3IE1hcE1lbW9yeSgpOwotICAgIHByaXZhdGUgYm9vbGVhbiB1c2VXb3JrZXJUaHJlYWRzSW5Db25maWd1cmF0aW9uOwotICAgIHByaXZhdGUgU2V0PFN0cmluZz4gdmVydGV4UHJvZ3JhbUNvbmZpZ3VyYXRpb25LZXlzID0gbmV3IEhhc2hTZXQ8PigpOwotCi0gICAgcHVibGljIEdpcmFwaEdyYXBoQ29tcHV0ZXIoZmluYWwgSGFkb29wR3JhcGggaGFkb29wR3JhcGgpIHsKLSAgICAgICAgc3VwZXIoaGFkb29wR3JhcGgpOwotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBoYWRvb3BHcmFwaC5jb25maWd1cmF0aW9uKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0S2V5cygpLmZvckVhY2hSZW1haW5pbmcoa2V5IC0+IHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXQoa2V5LCBjb25maWd1cmF0aW9uLmdldFByb3BlcnR5KGtleSkudG9TdHJpbmcoKSkpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0TWFzdGVyQ29tcHV0ZUNsYXNzKEdpcmFwaE1lbW9yeS5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRWZXJ0ZXhDbGFzcyhHaXJhcGhWZXJ0ZXguY2xhc3MpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Q29tcHV0YXRpb25DbGFzcyhHaXJhcGhDb21wdXRhdGlvbi5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRXb3JrZXJDb250ZXh0Q2xhc3MoR2lyYXBoV29ya2VyQ29udGV4dC5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRPdXRFZGdlc0NsYXNzKEVtcHR5T3V0RWRnZXMuY2xhc3MpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Q2xhc3MoR2lyYXBoQ29uc3RhbnRzLlZFUlRFWF9JRF9DTEFTUy5nZXRLZXkoKSwgT2JqZWN0V3JpdGFibGUuY2xhc3MsIE9iamVjdFdyaXRhYmxlLmNsYXNzKTsKLSAgICAgICAgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLnNldENsYXNzKEdpcmFwaENvbnN0YW50cy5WRVJURVhfVkFMVUVfQ0xBU1MuZ2V0S2V5KCksIFZlcnRleFdyaXRhYmxlLmNsYXNzLCBWZXJ0ZXhXcml0YWJsZS5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRCb29sZWFuKEdpcmFwaENvbnN0YW50cy5TVEFUSUNfR1JBUEguZ2V0S2V5KCksIHRydWUpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0VmVydGV4SW5wdXRGb3JtYXRDbGFzcyhHaXJhcGhWZXJ0ZXhJbnB1dEZvcm1hdC5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRWZXJ0ZXhPdXRwdXRGb3JtYXRDbGFzcyhHaXJhcGhWZXJ0ZXhPdXRwdXRGb3JtYXQuY2xhc3MpOwotICAgICAgICB0aGlzLnVzZVdvcmtlclRocmVhZHNJbkNvbmZpZ3VyYXRpb24gPSB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5NQVhfV09SS0VSUywgLTY2NikgIT0gLTY2NiB8fCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5OVU1fQ09NUFVURV9USFJFQURTLmdldEtleSgpLCAtNjY2KSAhPSAtNjY2OwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBHcmFwaENvbXB1dGVyIHdvcmtlcnMoZmluYWwgaW50IHdvcmtlcnMpIHsKLSAgICAgICAgdGhpcy51c2VXb3JrZXJUaHJlYWRzSW5Db25maWd1cmF0aW9uID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdXBlci53b3JrZXJzKHdvcmtlcnMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBHcmFwaENvbXB1dGVyIGNvbmZpZ3VyZShmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKLSAgICAgICAgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLnNldChrZXksIHZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgICB0aGlzLnVzZVdvcmtlclRocmVhZHNJbkNvbmZpZ3VyYXRpb24gPSB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5NQVhfV09SS0VSUywgLTY2NikgIT0gLTY2NiB8fCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5OVU1fQ09NUFVURV9USFJFQURTLmdldEtleSgpLCAtNjY2KSAhPSAtNjY2OwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgR3JhcGhDb21wdXRlciBwcm9ncmFtKGZpbmFsIFZlcnRleFByb2dyYW0gdmVydGV4UHJvZ3JhbSkgewotICAgICAgICBzdXBlci5wcm9ncmFtKHZlcnRleFByb2dyYW0pOwotICAgICAgICB0aGlzLm1lbW9yeS5hZGRWZXJ0ZXhQcm9ncmFtTWVtb3J5Q29tcHV0ZUtleXModGhpcy52ZXJ0ZXhQcm9ncmFtKTsKLSAgICAgICAgZmluYWwgQmFzZUNvbmZpZ3VyYXRpb24gYXBhY2hlQ29uZmlndXJhdGlvbiA9IG5ldyBCYXNlQ29uZmlndXJhdGlvbigpOwotICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLnNldERlbGltaXRlclBhcnNpbmdEaXNhYmxlZCh0cnVlKTsKLSAgICAgICAgdmVydGV4UHJvZ3JhbS5zdG9yZVN0YXRlKGFwYWNoZUNvbmZpZ3VyYXRpb24pOwotICAgICAgICBJdGVyYXRvclV0aWxzLmZpbGwoYXBhY2hlQ29uZmlndXJhdGlvbi5nZXRLZXlzKCksIHRoaXMudmVydGV4UHJvZ3JhbUNvbmZpZ3VyYXRpb25LZXlzKTsKLSAgICAgICAgQ29uZlV0aWwubWVyZ2VBcGFjaGVJbnRvSGFkb29wQ29uZmlndXJhdGlvbihhcGFjaGVDb25maWd1cmF0aW9uLCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0uZ2V0TWVzc2FnZUNvbWJpbmVyKCkuaWZQcmVzZW50KGNvbWJpbmVyIC0+IHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRNZXNzYWdlQ29tYmluZXJDbGFzcyhHaXJhcGhNZXNzYWdlQ29tYmluZXIuY2xhc3MpKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEZ1dHVyZTxDb21wdXRlclJlc3VsdD4gc3VibWl0KCkgewotICAgICAgICBzdXBlci52YWxpZGF0ZVN0YXRlUHJpb3JUb0V4ZWN1dGlvbigpOwotICAgICAgICByZXR1cm4gQ29tcHV0ZXJTdWJtaXNzaW9uSGVscGVyLnJ1bldpdGhCYWNrZ3JvdW5kVGhyZWFkKHRoaXM6OnN1Ym1pdFdpdGhFeGVjdXRvciwgIkdpcmFwaFN1Ym1pdHRlciIpOwotICAgIH0KLQotICAgIHByaXZhdGUgRnV0dXJlPENvbXB1dGVyUmVzdWx0PiBzdWJtaXRXaXRoRXhlY3V0b3IoZmluYWwgRXhlY3V0b3IgZXhlYykgewotICAgICAgICBmaW5hbCBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGFwYWNoZUNvbmZpZ3VyYXRpb24gPSBDb25mVXRpbC5tYWtlQXBhY2hlQ29uZmlndXJhdGlvbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICByZXR1cm4gQ29tcGxldGFibGVGdXR1cmUuPENvbXB1dGVyUmVzdWx0PnN1cHBseUFzeW5jKCgpIC0+IHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5sb2FkSmFycyhnaXJhcGhDb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICBUb29sUnVubmVyLnJ1bih0aGlzLCBuZXcgU3RyaW5nW117fSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIC8vZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMubWVtb3J5LnNldFJ1bnRpbWUoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWUpOwotICAgICAgICAgICAgLy8gY2xlYXIgcHJvcGVydGllcyB0aGF0IHNob3VsZCBub3QgYmUgcHJvcGFnYXRlZCBpbiBhbiBPTEFQIGNoYWluCi0gICAgICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLmNsZWFyUHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX0ZJTFRFUik7Ci0gICAgICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLmNsZWFyUHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX1ZFUlRFWF9QUk9HUkFNX0lOVEVSQ0VQVE9SKTsKLSAgICAgICAgICAgIHRoaXMudmVydGV4UHJvZ3JhbUNvbmZpZ3VyYXRpb25LZXlzLmZvckVhY2goYXBhY2hlQ29uZmlndXJhdGlvbjo6Y2xlYXJQcm9wZXJ0eSk7IC8vIGNsZWFyIG91dCB2ZXJ0ZXggcHJvZ3JhbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucwotICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWZhdWx0Q29tcHV0ZXJSZXN1bHQoSW5wdXRPdXRwdXRIZWxwZXIuZ2V0T3V0cHV0R3JhcGgoYXBhY2hlQ29uZmlndXJhdGlvbiwgdGhpcy5yZXN1bHRHcmFwaCwgdGhpcy5wZXJzaXN0KSwgdGhpcy5tZW1vcnkuYXNJbW11dGFibGUoKSk7Ci0gICAgICAgIH0sIGV4ZWMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBpbnQgcnVuKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKLSAgICAgICAgZmluYWwgU3RvcmFnZSBzdG9yYWdlID0gRmlsZVN5c3RlbVN0b3JhZ2Uub3Blbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICBzdG9yYWdlLnJtKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTikpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Qm9vbGVhbihDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSX0hBU19FREdFUywgdGhpcy5wZXJzaXN0LmVxdWFscyhQZXJzaXN0LkVER0VTKSk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAvLyBzdG9yZSB2ZXJ0ZXggYW5kIGVkZ2UgZmlsdGVycyAod2lsbCBwcm9wYWdhdGUgZG93biB0byBuYXRpdmUgSW5wdXRGb3JtYXQgb3IgZWxzZSBHaXJhcGhWZXJ0ZXhJbnB1dEZvcm1hdCB3aWxsIHByb2Nlc3MpCi0gICAgICAgICAgICBmaW5hbCBCYXNlQ29uZmlndXJhdGlvbiBhcGFjaGVDb25maWd1cmF0aW9uID0gbmV3IEJhc2VDb25maWd1cmF0aW9uKCk7Ci0gICAgICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLnNldERlbGltaXRlclBhcnNpbmdEaXNhYmxlZCh0cnVlKTsKLSAgICAgICAgICAgIEdyYXBoRmlsdGVyQXdhcmUuc3RvcmVHcmFwaEZpbHRlcihhcGFjaGVDb25maWd1cmF0aW9uLCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24sIHRoaXMuZ3JhcGhGaWx0ZXIpOwotCi0gICAgICAgICAgICAvLyBpdCBpcyBwb3NzaWJsZSB0byBydW4gZ3JhcGggY29tcHV0ZXIgd2l0aG91dCBhIHZlcnRleCBwcm9ncmFtIChhbmQgdGh1cywgb25seSBtYXAgcmVkdWNlIGpvYnMgaWYgdGhleSBleGlzdCkKLSAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMudmVydGV4UHJvZ3JhbSkgewotICAgICAgICAgICAgICAgIC8vIGEgd2F5IHRvIHZlcmlmeSBpbiBHaXJhcGggd2hldGhlciB0aGUgdHJhdmVyc2FsIHdpbGwgZ28gb3ZlciB0aGUgd2lyZSBvciBub3QKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0odGhpcy5oYWRvb3BHcmFwaCwgQ29uZlV0aWwubWFrZUFwYWNoZUNvbmZpZ3VyYXRpb24odGhpcy5naXJhcGhDb25maWd1cmF0aW9uKSk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlzIGxpa2VseSBubyBsb25nZXIgYSBwb3NzaWJpbGl0eSBoZXJlIGFmdGVyIDMuMi45IGFzIHRoZSBpbnRlcm5hbAotICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemF0aW9uIGZvcm1hdCBmb3IgdHJhdmVyc2FscyBjaGFuZ2VkIGZyb20gYSBkZWxpbWl0ZWQgbGlzdCBvZiBieXRlcyBhcyBhIHN0cmluZyB0byBhCi0gICAgICAgICAgICAgICAgICAgIC8vIGJhc2U2NCBlbmNvZGVkIHN0cmluZy4gdW5kZXIgdGhlIGJhc2U2NCBtb2RlbCB3ZSBzaG91bGRuJ3Qgc2VlIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBhbnltb3JlCi0gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpIGxlZnQgaXQgaGVyZSBmb3Igbm93LCBqdXN0IGluIGNhc2UgdGhlcmUncyBzb21ldGhpbmcgaSdtIG5vdCBzZWVpbmcuIHNlZQotICAgICAgICAgICAgICAgICAgICAvLyBWZXJ0ZXhQcm9ncmFtSGVscGVyLmRlc2VyaWFsaXplKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGlzIGhhbmRsaW5nCi0gICAgICAgICAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAocm9vdCBpbnN0YW5jZW9mIE51bWJlckZvcm1hdEV4Y2VwdGlvbiB8fCByb290IGluc3RhbmNlb2YgSU9FeGNlcHRpb24gfHwgcm9vdCBpbnN0YW5jZW9mIENsYXNzTm90Rm91bmRFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90U2VyaWFsaXphYmxlRXhjZXB0aW9uKCJUaGUgcHJvdmlkZWQgdHJhdmVyc2FsIGlzIG5vdCBzZXJpYWxpemFibGUgYW5kIHRodXMsIGNhbiBub3QgYmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBjbHVzdGVyIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBoaXN0b3JpYyBjb21iaW5lcnMgaW4gY29uZmlndXJhdGlvbiBwcm9wYWdhdGlvbiAodGhpcyBvY2N1cnMgd2hlbiBqb2IgY2hhaW5pbmcpCi0gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZlcnRleFByb2dyYW0uZ2V0TWVzc2FnZUNvbWJpbmVyKCkuaXNQcmVzZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi51bnNldChHaXJhcGhDb25zdGFudHMuTUVTU0FHRV9DT01CSU5FUl9DTEFTUy5nZXRLZXkoKSk7Ci0gICAgICAgICAgICAgICAgLy8gc3BsaXQgcmVxdWlyZWQgd29ya2VycyBhY3Jvc3Mgc3lzdGVtIChvcGVuIG1hcCBzbG90cyArIG1heCB0aHJlYWRzIHBlciBtYWNoaW5lID0gdG90YWwgYW1vdW50IG9mIFRpbmtlclBvcCB3b3JrZXJzKQotICAgICAgICAgICAgICAgIGlmICghdGhpcy51c2VXb3JrZXJUaHJlYWRzSW5Db25maWd1cmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IG5ldyBDbHVzdGVyKEdpcmFwaEdyYXBoQ29tcHV0ZXIudGhpcy5naXJhcGhDb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsTWFwcGVycyA9IGNsdXN0ZXIuZ2V0Q2x1c3RlclN0YXR1cygpLmdldE1hcFNsb3RDYXBhY2l0eSgpIC0gMTsgLy8gMSBpcyBuZWVkZWQgZm9yIG1hc3RlcgotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLndvcmtlcnMgPD0gdG90YWxNYXBwZXJzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0V29ya2VyQ29uZmlndXJhdGlvbih0aGlzLndvcmtlcnMsIHRoaXMud29ya2VycywgMTAwLjBGKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXROdW1Db21wdXRlVGhyZWFkcygxKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3RhbE1hcHBlcnMgPT0gMCkgdG90YWxNYXBwZXJzID0gMTsgLy8gaGFwcGVucyBpbiBsb2NhbCBtb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZWFkc1Blck1hcHBlciA9IExvbmcudmFsdWVPZihNYXRoLnJvdW5kKChkb3VibGUpIHRoaXMud29ya2VycyAvIChkb3VibGUpIHRvdGFsTWFwcGVycykpLmludFZhbHVlKCk7IC8vIFRPRE86IG5lZWQgdG8gZmluZCBsZWFzdCBjb21tb24gZGVub21pbmF0b3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRXb3JrZXJDb25maWd1cmF0aW9uKHRvdGFsTWFwcGVycywgdG90YWxNYXBwZXJzLCAxMDAuMEYpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLnNldE51bUNvbXB1dGVUaHJlYWRzKHRocmVhZHNQZXJNYXBwZXIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgdGhlIGdpcmFwaCB2ZXJ0ZXgtY2VudHJpYyBjb21wdXRpbmcgam9iCi0gICAgICAgICAgICAgICAgZmluYWwgR2lyYXBoSm9iIGpvYiA9IG5ldyBHaXJhcGhKb2IodGhpcy5naXJhcGhDb25maWd1cmF0aW9uLCBDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR0lSQVBIX0pPQl9QUkVGSVggKyB0aGlzLnZlcnRleFByb2dyYW0pOwotICAgICAgICAgICAgICAgIGpvYi5nZXRJbnRlcm5hbEpvYigpLnNldEphckJ5Q2xhc3MoR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR0lSQVBIX0pPQl9QUkVGSVggKyB0aGlzLnZlcnRleFByb2dyYW0pOwotICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBpbnB1dCBwYXRocyAoaWYgYW55KQotICAgICAgICAgICAgICAgIFN0cmluZyBpbnB1dExvY2F0aW9uID0gdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04sIG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGlucHV0TG9jYXRpb24gJiYgRmlsZUlucHV0Rm9ybWF0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20odGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldENsYXNzKENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIElucHV0Rm9ybWF0LmNsYXNzKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5wdXRMb2NhdGlvbiA9IENvbnN0YW50cy5nZXRTZWFyY2hHcmFwaExvY2F0aW9uKGlucHV0TG9jYXRpb24sIHN0b3JhZ2UpLm9yRWxzZSh0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9JTlBVVF9MT0NBVElPTikpOwotICAgICAgICAgICAgICAgICAgICBGaWxlSW5wdXRGb3JtYXQuc2V0SW5wdXRQYXRocyhqb2IuZ2V0SW50ZXJuYWxKb2IoKSwgbmV3IFBhdGgoaW5wdXRMb2NhdGlvbikpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBoYW5kbGUgb3V0cHV0IHBhdGhzIChpZiBhbnkpCi0gICAgICAgICAgICAgICAgU3RyaW5nIG91dHB1dExvY2F0aW9uID0gdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfT1VUUFVUX0xPQ0FUSU9OLCBudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBvdXRwdXRMb2NhdGlvbiAmJiBGaWxlT3V0cHV0Rm9ybWF0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20odGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldENsYXNzKENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIE91dHB1dEZvcm1hdC5jbGFzcykpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dExvY2F0aW9uID0gQ29uc3RhbnRzLmdldEdyYXBoTG9jYXRpb24odGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfT1VUUFVUX0xPQ0FUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgIEZpbGVPdXRwdXRGb3JtYXQuc2V0T3V0cHV0UGF0aChqb2IuZ2V0SW50ZXJuYWxKb2IoKSwgbmV3IFBhdGgob3V0cHV0TG9jYXRpb24pKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgam9iIGFuZCB3YWl0IHVudGlsIGl0IGNvbXBsZXRlcyAoaWYgaXQgZmFpbHMsIHRocm93IGFuIGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBpZiAoIWpvYi5ydW4odHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlRoZSBHaXJhcGhHcmFwaENvbXB1dGVyIGpvYiBmYWlsZWQgLS0gYWJvcnRpbmcgYWxsIHN1YnNlcXVlbnQgTWFwUmVkdWNlIGpvYnM6ICIgKyBqb2IuZ2V0SW50ZXJuYWxKb2IoKS5nZXRTdGF0dXMoKS5nZXRGYWlsdXJlSW5mbygpKTsKLSAgICAgICAgICAgICAgICAvLyBhZGQgdmVydGV4IHByb2dyYW0gbWVtb3J5IHZhbHVlcyB0byB0aGUgcmV0dXJuIG1lbW9yeQotICAgICAgICAgICAgICAgIGZvciAoZmluYWwgTWVtb3J5Q29tcHV0ZUtleSBtZW1vcnlDb21wdXRlS2V5IDogdGhpcy52ZXJ0ZXhQcm9ncmFtLmdldE1lbW9yeUNvbXB1dGVLZXlzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlDb21wdXRlS2V5LmlzVHJhbnNpZW50KCkgJiYgc3RvcmFnZS5leGlzdHMoQ29uc3RhbnRzLmdldE1lbW9yeUxvY2F0aW9uKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTiksIG1lbW9yeUNvbXB1dGVLZXkuZ2V0S2V5KCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0V3JpdGFibGVJdGVyYXRvciBpdGVyYXRvciA9IG5ldyBPYmplY3RXcml0YWJsZUl0ZXJhdG9yKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbiwgbmV3IFBhdGgoQ29uc3RhbnRzLmdldE1lbW9yeUxvY2F0aW9uKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTiksIG1lbW9yeUNvbXB1dGVLZXkuZ2V0S2V5KCkpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW1vcnkuc2V0KG1lbW9yeUNvbXB1dGVLZXkuZ2V0S2V5KCksIGl0ZXJhdG9yLm5leHQoKS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZlcnRleCBwcm9ncmFtIG1lbW9yeSBpdGVtcyBhcmUgbm90IHN0b3JlZCBvbiBkaXNrCi0gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnJtKENvbnN0YW50cy5nZXRNZW1vcnlMb2NhdGlvbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04pLCBtZW1vcnlDb21wdXRlS2V5LmdldEtleSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmluYWwgUGF0aCBwYXRoID0gbmV3IFBhdGgoQ29uc3RhbnRzLmdldE1lbW9yeUxvY2F0aW9uKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTiksIENvbnN0YW50cy5ISURERU5fSVRFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5tZW1vcnkuc2V0SXRlcmF0aW9uKChJbnRlZ2VyKSBuZXcgT2JqZWN0V3JpdGFibGVJdGVyYXRvcih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24sIHBhdGgpLm5leHQoKS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlLnJtKENvbnN0YW50cy5nZXRNZW1vcnlMb2NhdGlvbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04pLCBDb25zdGFudHMuSElEREVOX0lURVJBVElPTikpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gZG8gbWFwIHJlZHVjZSBqb2JzCi0gICAgICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Qm9vbGVhbihDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSX0hBU19FREdFUywgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldEJvb2xlYW4oQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUl9IQVNfRURHRVMsIHRydWUpKTsKLSAgICAgICAgICAgIGZvciAoZmluYWwgTWFwUmVkdWNlIG1hcFJlZHVjZSA6IHRoaXMubWFwUmVkdWNlcnMpIHsKLSAgICAgICAgICAgICAgICB0aGlzLm1lbW9yeS5hZGRNYXBSZWR1Y2VNZW1vcnlLZXkobWFwUmVkdWNlKTsKLSAgICAgICAgICAgICAgICBNYXBSZWR1Y2VIZWxwZXIuZXhlY3V0ZU1hcFJlZHVjZUpvYihtYXBSZWR1Y2UsIHRoaXMubWVtb3J5LCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBpZiBubyBwZXJzaXN0ZW5jZSwgZGVsZXRlIHRoZSBncmFwaCBhbmQgbWVtb3J5IG91dHB1dAotICAgICAgICAgICAgaWYgKHRoaXMucGVyc2lzdC5lcXVhbHMoUGVyc2lzdC5OT1RISU5HKSkKLSAgICAgICAgICAgICAgICBzdG9yYWdlLnJtKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTikpOwotICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgc2V0Q29uZihmaW5hbCBvcmcuYXBhY2hlLmhhZG9vcC5jb25mLkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgewotICAgICAgICAvLyBUT0RPOiBpcyB0aGlzIG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQ/Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIG9yZy5hcGFjaGUuaGFkb29wLmNvbmYuQ29uZmlndXJhdGlvbiBnZXRDb25mKCkgewotICAgICAgICByZXR1cm4gdGhpcy5naXJhcGhDb25maWd1cmF0aW9uOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIGxvYWRKYXIoZmluYWwgb3JnLmFwYWNoZS5oYWRvb3AuY29uZi5Db25maWd1cmF0aW9uIGhhZG9vcENvbmZpZ3VyYXRpb24sIGZpbmFsIEZpbGUgZmlsZSwgZmluYWwgT2JqZWN0Li4uIHBhcmFtcykKLSAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIEZpbGVTeXN0ZW0gZGVmYXVsdEZpbGVTeXN0ZW0gPSBGaWxlU3lzdGVtLmdldChoYWRvb3BDb25maWd1cmF0aW9uKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZpbmFsIFBhdGggamFyRmlsZSA9IG5ldyBQYXRoKGRlZmF1bHRGaWxlU3lzdGVtLmdldEhvbWVEaXJlY3RvcnkoKSArICIvaGFkb29wLWdyZW1saW4tIiArIEdyZW1saW4udmVyc2lvbigpICsgIi1saWJzLyIgKyBmaWxlLmdldE5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoIWRlZmF1bHRGaWxlU3lzdGVtLmV4aXN0cyhqYXJGaWxlKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIFBhdGggc291cmNlUGF0aCA9IG5ldyBQYXRoKGZpbGUuZ2V0UGF0aCgpKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBVUkkgc291cmNlVXJpID0gc291cmNlUGF0aC50b1VyaSgpOwotICAgICAgICAgICAgICAgIGZpbmFsIEZpbGVTeXN0ZW0gZnMgPSBGaWxlU3lzdGVtLmdldChzb3VyY2VVcmksIGhhZG9vcENvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgICAgIGZzLmNvcHlGcm9tTG9jYWxGaWxlKHNvdXJjZVBhdGgsIGphckZpbGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBEaXN0cmlidXRlZENhY2hlLmFkZEFyY2hpdmVUb0NsYXNzUGF0aChqYXJGaWxlLCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24sIGRlZmF1bHRGaWxlU3lzdGVtKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgRmlsZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IG5ldyBQcm9wZXJ0aWVzQ29uZmlndXJhdGlvbihhcmdzWzBdKTsKLSAgICAgICAgbmV3IEdpcmFwaEdyYXBoQ29tcHV0ZXIoSGFkb29wR3JhcGgub3Blbihjb25maWd1cmF0aW9uKSkucHJvZ3JhbShWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0oSGFkb29wR3JhcGgub3Blbihjb25maWd1cmF0aW9uKSwgY29uZmlndXJhdGlvbikpLnN1Ym1pdCgpLmdldCgpOwotICAgIH0KLQotICAgIHB1YmxpYyBGZWF0dXJlcyBmZWF0dXJlcygpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlcygpOwotICAgIH0KLQotICAgIHB1YmxpYyBjbGFzcyBGZWF0dXJlcyBleHRlbmRzIEFic3RyYWN0SGFkb29wR3JhcGhDb21wdXRlci5GZWF0dXJlcyB7Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0TWF4V29ya2VycygpIHsKLSAgICAgICAgICAgIGlmIChHaXJhcGhHcmFwaENvbXB1dGVyLnRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXRMb2NhbFRlc3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bnRpbWUuZ2V0UnVudGltZSgpLmF2YWlsYWJsZVByb2Nlc3NvcnMoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyLk1BWF9WQUxVRTsKLSAgICAgICAgICAgICAgICAvKnRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IG5ldyBDbHVzdGVyKEdpcmFwaEdyYXBoQ29tcHV0ZXIudGhpcy5naXJhcGhDb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IG1heFdvcmtlcnMgPSAoY2x1c3Rlci5nZXRDbHVzdGVyU3RhdHVzKCkuZ2V0TWFwU2xvdENhcGFjaXR5KCkgLSAxKSAqIDE2OyAvLyBtYXggMTYgdGhyZWFkcyBwZXIgbWFjaGluZSBoYXJkY29kZWQgOnwKLSAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF4V29ya2VyczsKLQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIHwgSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICAgICAgICAgICAgICB9Ki8KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhNZW1vcnkuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhNZW1vcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0MjhmMy4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoTWVtb3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLm1hc3Rlci5NYXN0ZXJDb21wdXRlOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmZzLkZpbGVTeXN0ZW07Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuZnMuUGF0aDsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5pby5TZXF1ZW5jZUZpbGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLnV0aWwuQ29uZlV0aWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5Q29tcHV0ZUtleTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuVmVydGV4UHJvZ3JhbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudXRpbC5NZW1vcnlIZWxwZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwotaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlBhaXI7Ci0KLWltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dDsKLWltcG9ydCBqYXZhLmlvLkRhdGFPdXRwdXQ7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaW5hcnlPcGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhNZW1vcnkgZXh0ZW5kcyBNYXN0ZXJDb21wdXRlIGltcGxlbWVudHMgTWVtb3J5IHsKLQotICAgIHByaXZhdGUgVmVydGV4UHJvZ3JhbTw/PiB2ZXJ0ZXhQcm9ncmFtOwotICAgIHByaXZhdGUgR2lyYXBoV29ya2VyQ29udGV4dCB3b3JrZXI7Ci0gICAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBNZW1vcnlDb21wdXRlS2V5PiBtZW1vcnlDb21wdXRlS2V5czsKLSAgICBwcml2YXRlIGJvb2xlYW4gaW5FeGVjdXRlID0gZmFsc2U7Ci0gICAgcHJpdmF0ZSBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotCi0gICAgcHVibGljIEdpcmFwaE1lbW9yeSgpIHsKLSAgICAgICAgLy8gR2lyYXBoIFJlZmxlY3Rpb25VdGlscyByZXF1aXJlcyB0aGlzIHRvIGJlIHB1YmxpYyBhdCBtaW5pbXVtCi0gICAgfQotCi0gICAgcHVibGljIEdpcmFwaE1lbW9yeShmaW5hbCBHaXJhcGhXb3JrZXJDb250ZXh0IHdvcmtlciwgZmluYWwgVmVydGV4UHJvZ3JhbTw/PiB2ZXJ0ZXhQcm9ncmFtKSB7Ci0gICAgICAgIHRoaXMud29ya2VyID0gd29ya2VyOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0gPSB2ZXJ0ZXhQcm9ncmFtOwotICAgICAgICB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzID0gbmV3IEhhc2hNYXA8PigpOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0uZ2V0TWVtb3J5Q29tcHV0ZUtleXMoKS5mb3JFYWNoKGtleSAtPiB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLnB1dChrZXkuZ2V0S2V5KCksIGtleSkpOwotICAgICAgICB0aGlzLmluRXhlY3V0ZSA9IHRydWU7Ci0gICAgfQotCi0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKCkgewotICAgICAgICAvLyBkbyBub3QgaW5pdGlhbGl6ZSBhZ2dyZWdhdG9ycyBoZXJlIGJlY2F1c2UgdGhlIGdldENvbmYoKSBjb25maWd1cmF0aW9uIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhpcyBwb2ludAotICAgICAgICAvLyB1c2UgY29tcHV0ZSgpIGluaXRpYWwgaXRlcmF0aW9uIGluc3RlYWQKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBjb21wdXRlKCkgewotICAgICAgICB0aGlzLmluRXhlY3V0ZSA9IGZhbHNlOwotICAgICAgICBpZiAoMCA9PSB0aGlzLmdldFN1cGVyc3RlcCgpKSB7IC8vIHNldHVwCi0gICAgICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGFwYWNoZUNvbmZpZ3VyYXRpb24gPSBDb25mVXRpbC5tYWtlQXBhY2hlQ29uZmlndXJhdGlvbih0aGlzLmdldENvbmYoKSk7Ci0gICAgICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0gPSBWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0oSGFkb29wR3JhcGgub3BlbihhcGFjaGVDb25maWd1cmF0aW9uKSwgYXBhY2hlQ29uZmlndXJhdGlvbik7Ci0gICAgICAgICAgICB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzID0gbmV3IEhhc2hNYXA8PigpOwotICAgICAgICAgICAgdGhpcy52ZXJ0ZXhQcm9ncmFtLmdldE1lbW9yeUNvbXB1dGVLZXlzKCkuZm9yRWFjaChrZXkgLT4gdGhpcy5tZW1vcnlDb21wdXRlS2V5cy5wdXQoa2V5LmdldEtleSgpLCBrZXkpKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yIChmaW5hbCBNZW1vcnlDb21wdXRlS2V5IGtleSA6IHRoaXMubWVtb3J5Q29tcHV0ZUtleXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlclBlcnNpc3RlbnRBZ2dyZWdhdG9yKGtleS5nZXRLZXkoKSwgTWVtb3J5QWdncmVnYXRvci5jbGFzcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMudmVydGV4UHJvZ3JhbS5zZXR1cCh0aGlzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIGEgaGFjayB0byBnZXQgdGhlIGxhc3QgaXRlcmF0aW9uIG1lbW9yeSB2YWx1ZXMgdG8gc3RpY2sKLSAgICAgICAgICAgIGZpbmFsIFBhc3NUaHJvdWdoTWVtb3J5IG1lbW9yeSA9IG5ldyBQYXNzVGhyb3VnaE1lbW9yeSh0aGlzKTsKLSAgICAgICAgICAgIGlmICh0aGlzLnZlcnRleFByb2dyYW0udGVybWluYXRlKG1lbW9yeSkpIHsgLy8gdGVybWluYXRlCi0gICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIG91dHB1dExvY2F0aW9uID0gdGhpcy5nZXRDb25mKCkuZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04sIG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG91dHB1dExvY2F0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBrZXkgOiB0aGlzLmtleXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tZW1vcnlDb21wdXRlS2V5cy5nZXQoa2V5KS5pc1RyYW5zaWVudCgpKSB7IC8vIGRvIG5vdCB3cml0ZSB0cmFuc2llbnQgbWVtb3J5IGtleXMgdG8gZGlzawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXF1ZW5jZUZpbGUuV3JpdGVyIHdyaXRlciA9IFNlcXVlbmNlRmlsZS5jcmVhdGVXcml0ZXIoRmlsZVN5c3RlbS5nZXQodGhpcy5nZXRDb25mKCkpLCB0aGlzLmdldENvbmYoKSwgbmV3IFBhdGgob3V0cHV0TG9jYXRpb24gKyAiLyIgKyBrZXkpLCBPYmplY3RXcml0YWJsZS5jbGFzcywgT2JqZWN0V3JpdGFibGUuY2xhc3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKE9iamVjdFdyaXRhYmxlLmdldE51bGxPYmplY3RXcml0YWJsZSgpLCBuZXcgT2JqZWN0V3JpdGFibGU8PihtZW1vcnkuZ2V0KGtleSkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdHRlbiBmb3IgR2lyYXBoR3JhcGhDb21wdXRlciB0byByZWFkIGFuZCB0aGVuIGlzIGRlbGV0ZWQgYnkgR2lyYXBoR3JhcGhDb21wdXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU2VxdWVuY2VGaWxlLldyaXRlciB3cml0ZXIgPSBTZXF1ZW5jZUZpbGUuY3JlYXRlV3JpdGVyKEZpbGVTeXN0ZW0uZ2V0KHRoaXMuZ2V0Q29uZigpKSwgdGhpcy5nZXRDb25mKCksIG5ldyBQYXRoKG91dHB1dExvY2F0aW9uICsgIi8iICsgQ29uc3RhbnRzLkhJRERFTl9JVEVSQVRJT04pLCBPYmplY3RXcml0YWJsZS5jbGFzcywgT2JqZWN0V3JpdGFibGUuY2xhc3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZChPYmplY3RXcml0YWJsZS5nZXROdWxsT2JqZWN0V3JpdGFibGUoKSwgbmV3IE9iamVjdFdyaXRhYmxlPD4obWVtb3J5LmdldEl0ZXJhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRoaXMuaGFsdENvbXB1dGF0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgaW50IGdldEl0ZXJhdGlvbigpIHsKLSAgICAgICAgaWYgKHRoaXMuaW5FeGVjdXRlKSB7Ci0gICAgICAgICAgICByZXR1cm4gKGludCkgdGhpcy53b3JrZXIuZ2V0U3VwZXJzdGVwKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgdGVtcCA9IChpbnQpIHRoaXMuZ2V0U3VwZXJzdGVwKCk7Ci0gICAgICAgICAgICByZXR1cm4gdGVtcCA9PSAwID8gdGVtcCA6IHRlbXAgLSAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGxvbmcgZ2V0UnVudGltZSgpIHsKLSAgICAgICAgcmV0dXJuIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gdGhpcy5zdGFydFRpbWU7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFNldDxTdHJpbmc+IGtleXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLnZhbHVlcygpLnN0cmVhbSgpLmZpbHRlcihrZXkgLT4gdGhpcy5leGlzdHMoa2V5LmdldEtleSgpKSkubWFwKE1lbW9yeUNvbXB1dGVLZXk6OmdldEtleSkuY29sbGVjdChDb2xsZWN0b3JzLnRvU2V0KCkpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIGV4aXN0cyhmaW5hbCBTdHJpbmcga2V5KSB7Ci0gICAgICAgIGlmICh0aGlzLmluRXhlY3V0ZSAmJiB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLmNvbnRhaW5zS2V5KGtleSkgJiYgIXRoaXMubWVtb3J5Q29tcHV0ZUtleXMuZ2V0KGtleSkuaXNCcm9hZGNhc3QoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZmluYWwgT2JqZWN0V3JpdGFibGUgdmFsdWUgPSB0aGlzLmluRXhlY3V0ZSA/IHRoaXMud29ya2VyLmdldEFnZ3JlZ2F0ZWRWYWx1ZShrZXkpIDogdGhpcy5nZXRBZ2dyZWdhdGVkVmFsdWUoa2V5KTsKLSAgICAgICAgcmV0dXJuIG51bGwgIT0gdmFsdWUgJiYgIXZhbHVlLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPFI+IFIgZ2V0KGZpbmFsIFN0cmluZyBrZXkpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gewotICAgICAgICBpZiAoIXRoaXMubWVtb3J5Q29tcHV0ZUtleXMuY29udGFpbnNLZXkoa2V5KSkKLSAgICAgICAgICAgIHRocm93IE1lbW9yeS5FeGNlcHRpb25zLm1lbW9yeURvZXNOb3RFeGlzdChrZXkpOwotICAgICAgICBpZiAodGhpcy5pbkV4ZWN1dGUgJiYgIXRoaXMubWVtb3J5Q29tcHV0ZUtleXMuZ2V0KGtleSkuaXNCcm9hZGNhc3QoKSkKLSAgICAgICAgICAgIHRocm93IE1lbW9yeS5FeGNlcHRpb25zLm1lbW9yeURvZXNOb3RFeGlzdChrZXkpOwotICAgICAgICBmaW5hbCBPYmplY3RXcml0YWJsZTxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PiB2YWx1ZSA9IHRoaXMuaW5FeGVjdXRlID8KLSAgICAgICAgICAgICAgICB0aGlzLndvcmtlci48T2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4+Z2V0QWdncmVnYXRlZFZhbHVlKGtleSkgOgotICAgICAgICAgICAgICAgIHRoaXMuPE9iamVjdFdyaXRhYmxlPFBhaXI8QmluYXJ5T3BlcmF0b3IsIE9iamVjdD4+PmdldEFnZ3JlZ2F0ZWRWYWx1ZShrZXkpOwotICAgICAgICBpZiAobnVsbCA9PSB2YWx1ZSB8fCB2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aHJvdyBNZW1vcnkuRXhjZXB0aW9ucy5tZW1vcnlEb2VzTm90RXhpc3Qoa2V5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIChSKSB2YWx1ZS5nZXQoKS5nZXRWYWx1ZTEoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBzZXQoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7Ci0gICAgICAgIHRoaXMuY2hlY2tLZXlWYWx1ZShrZXksIHZhbHVlKTsKLSAgICAgICAgaWYgKHRoaXMuaW5FeGVjdXRlKQotICAgICAgICAgICAgdGhyb3cgTWVtb3J5LkV4Y2VwdGlvbnMubWVtb3J5U2V0T25seUR1cmluZ1ZlcnRleFByb2dyYW1TZXRVcEFuZFRlcm1pbmF0ZShrZXkpOwotICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0ZWRWYWx1ZShrZXksIG5ldyBPYmplY3RXcml0YWJsZTw+KG5ldyBQYWlyPD4odGhpcy5tZW1vcnlDb21wdXRlS2V5cy5nZXQoa2V5KS5nZXRSZWR1Y2VyKCksIHZhbHVlKSkpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGFkZChmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKLSAgICAgICAgdGhpcy5jaGVja0tleVZhbHVlKGtleSwgdmFsdWUpOwotICAgICAgICBpZiAoIXRoaXMuaW5FeGVjdXRlKQotICAgICAgICAgICAgdGhyb3cgTWVtb3J5LkV4Y2VwdGlvbnMubWVtb3J5QWRkT25seUR1cmluZ1ZlcnRleFByb2dyYW1FeGVjdXRlKGtleSk7Ci0gICAgICAgIHRoaXMud29ya2VyLmFnZ3JlZ2F0ZShrZXksIG5ldyBPYmplY3RXcml0YWJsZTw+KG5ldyBQYWlyPD4odGhpcy5tZW1vcnlDb21wdXRlS2V5cy5nZXQoa2V5KS5nZXRSZWR1Y2VyKCksIHZhbHVlKSkpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHdyaXRlKGZpbmFsIERhdGFPdXRwdXQgb3V0cHV0KSB7Ci0gICAgICAgIC8vIGFsbCBhZ2dyZWdhdG9yIGRhdGEgaXMgcHJvcGFnYXRlZCB0aHJvdWdoIHdyaXRhYmxlcwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHJlYWRGaWVsZHMoZmluYWwgRGF0YUlucHV0IGlucHV0KSB7Ci0gICAgICAgIC8vIGFsbCBhZ2dyZWdhdG9yIGRhdGEgaXMgcHJvcGFnYXRlZCB0aHJvdWdoIHdyaXRhYmxlcwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5Lm1lbW9yeVN0cmluZyh0aGlzKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgY2hlY2tLZXlWYWx1ZShmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKLSAgICAgICAgaWYgKCF0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLmNvbnRhaW5zS2V5KGtleSkpCi0gICAgICAgICAgICB0aHJvdyBHcmFwaENvbXB1dGVyLkV4Y2VwdGlvbnMucHJvdmlkZWRLZXlJc05vdEFNZW1vcnlDb21wdXRlS2V5KGtleSk7Ci0gICAgICAgIE1lbW9yeUhlbHBlci52YWxpZGF0ZVZhbHVlKHZhbHVlKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoTWVzc2FnZUNvbWJpbmVyLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoTWVzc2FnZUNvbWJpbmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNzI1YjIuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaE1lc3NhZ2VDb21iaW5lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmNvbmYuSW1tdXRhYmxlQ2xhc3Nlc0dpcmFwaENvbmZpZ3VyYWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5jb25mLkltbXV0YWJsZUNsYXNzZXNHaXJhcGhDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLnV0aWwuQ29uZlV0aWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lc3NhZ2VDb21iaW5lcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuVmVydGV4UHJvZ3JhbTsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaE1lc3NhZ2VDb21iaW5lciBleHRlbmRzIG9yZy5hcGFjaGUuZ2lyYXBoLmNvbWJpbmVyLk1lc3NhZ2VDb21iaW5lcjxPYmplY3RXcml0YWJsZSwgT2JqZWN0V3JpdGFibGU+IGltcGxlbWVudHMgSW1tdXRhYmxlQ2xhc3Nlc0dpcmFwaENvbmZpZ3VyYWJsZSB7Ci0KLSAgICBwcml2YXRlIE1lc3NhZ2VDb21iaW5lciBtZXNzYWdlQ29tYmluZXI7Ci0gICAgcHJpdmF0ZSBJbW11dGFibGVDbGFzc2VzR2lyYXBoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY29tYmluZShmaW5hbCBPYmplY3RXcml0YWJsZSB2ZXJ0ZXhJbmRleCwgZmluYWwgT2JqZWN0V3JpdGFibGUgb3JpZ2luYWxNZXNzYWdlLCBmaW5hbCBPYmplY3RXcml0YWJsZSBtZXNzYWdlVG9Db21iaW5lKSB7Ci0gICAgICAgIG9yaWdpbmFsTWVzc2FnZS5zZXQob3JpZ2luYWxNZXNzYWdlLmlzRW1wdHkoKSA/Ci0gICAgICAgICAgICAgICAgbWVzc2FnZVRvQ29tYmluZS5nZXQoKSA6Ci0gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlQ29tYmluZXIuY29tYmluZShvcmlnaW5hbE1lc3NhZ2UuZ2V0KCksIG1lc3NhZ2VUb0NvbWJpbmUuZ2V0KCkpKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgT2JqZWN0V3JpdGFibGUgY3JlYXRlSW5pdGlhbE1lc3NhZ2UoKSB7Ci0gICAgICAgIHJldHVybiBPYmplY3RXcml0YWJsZS5lbXB0eSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldENvbmYoZmluYWwgSW1tdXRhYmxlQ2xhc3Nlc0dpcmFwaENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgewotICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGFwYWNoZUNvbmZpZ3VyYXRpb24gPSBDb25mVXRpbC5tYWtlQXBhY2hlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKLSAgICAgICAgdGhpcy5tZXNzYWdlQ29tYmluZXIgPSAoTWVzc2FnZUNvbWJpbmVyKSBWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0oSGFkb29wR3JhcGgub3BlbihhcGFjaGVDb25maWd1cmF0aW9uKSwgYXBhY2hlQ29uZmlndXJhdGlvbikuZ2V0TWVzc2FnZUNvbWJpbmVyKCkuZ2V0KCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEltbXV0YWJsZUNsYXNzZXNHaXJhcGhDb25maWd1cmF0aW9uIGdldENvbmYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb247Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaE1lc3Nlbmdlci5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaE1lc3Nlbmdlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmU2NDFlLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhNZXNzZW5nZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLk9iamVjdFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZXNzYWdlU2NvcGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lc3NlbmdlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFN0ZXA7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5zdGFyLlN0YXJHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaE1lc3NlbmdlcjxNPiBpbXBsZW1lbnRzIE1lc3NlbmdlcjxNPiB7Ci0KLSAgICBwcml2YXRlIEdpcmFwaFZlcnRleCBnaXJhcGhWZXJ0ZXg7Ci0gICAgcHJpdmF0ZSBHaXJhcGhDb21wdXRhdGlvbiBnaXJhcGhDb21wdXRhdGlvbjsKLSAgICBwcml2YXRlIEl0ZXJhdG9yPE9iamVjdFdyaXRhYmxlPE0+PiBtZXNzYWdlczsKLQotICAgIHB1YmxpYyBHaXJhcGhNZXNzZW5nZXIoZmluYWwgR2lyYXBoVmVydGV4IGdpcmFwaFZlcnRleCwgZmluYWwgR2lyYXBoQ29tcHV0YXRpb24gZ2lyYXBoQ29tcHV0YXRpb24sIGZpbmFsIEl0ZXJhdG9yPE9iamVjdFdyaXRhYmxlPE0+PiBtZXNzYWdlcykgewotICAgICAgICB0aGlzLmdpcmFwaFZlcnRleCA9IGdpcmFwaFZlcnRleDsKLSAgICAgICAgdGhpcy5naXJhcGhDb21wdXRhdGlvbiA9IGdpcmFwaENvbXB1dGF0aW9uOwotICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEl0ZXJhdG9yPE0+IHJlY2VpdmVNZXNzYWdlcygpIHsKLSAgICAgICAgcmV0dXJuIEl0ZXJhdG9yVXRpbHMubWFwKHRoaXMubWVzc2FnZXMsIE9iamVjdFdyaXRhYmxlOjpnZXQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNlbmRNZXNzYWdlKGZpbmFsIE1lc3NhZ2VTY29wZSBtZXNzYWdlU2NvcGUsIGZpbmFsIE0gbWVzc2FnZSkgewotICAgICAgICBpZiAobWVzc2FnZVNjb3BlIGluc3RhbmNlb2YgTWVzc2FnZVNjb3BlLkxvY2FsKSB7Ci0gICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2NvcGUuTG9jYWw8TT4gbG9jYWxNZXNzYWdlU2NvcGUgPSAoTWVzc2FnZVNjb3BlLkxvY2FsKSBtZXNzYWdlU2NvcGU7Ci0gICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCBFZGdlPiBpbmNpZGVudFRyYXZlcnNhbCA9IEdpcmFwaE1lc3Nlbmdlci5zZXRWZXJ0ZXhTdGFydChsb2NhbE1lc3NhZ2VTY29wZS5nZXRJbmNpZGVudFRyYXZlcnNhbCgpLmdldCgpLmFzQWRtaW4oKSwgdGhpcy5naXJhcGhWZXJ0ZXguZ2V0VmFsdWUoKS5nZXQoKSk7Ci0gICAgICAgICAgICBmaW5hbCBEaXJlY3Rpb24gZGlyZWN0aW9uID0gR2lyYXBoTWVzc2VuZ2VyLmdldE9wcG9zaXRlRGlyZWN0aW9uKGluY2lkZW50VHJhdmVyc2FsKTsKLQotICAgICAgICAgICAgLy8gaGFuZGxlIHByb2Nlc3NpbmcgZm9yIEJPVEggZ2l2ZW4gVElOS0VSUE9QLTE4NjIgd2hlcmUgdGhlIHRhcmdldCBvZiB0aGUgbWVzc2FnZSBpcyB0aGUgb25lIG9wcG9zaXRlCi0gICAgICAgICAgICAvLyB0aGUgY3VycmVudCB2ZXJ0ZXgKLSAgICAgICAgICAgIGluY2lkZW50VHJhdmVyc2FsLmZvckVhY2hSZW1haW5pbmcoZWRnZSAtPiB7Ci0gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbi5lcXVhbHMoRGlyZWN0aW9uLklOKSB8fCBkaXJlY3Rpb24uZXF1YWxzKERpcmVjdGlvbi5PVVQpKQotICAgICAgICAgICAgICAgICAgICB0aGlzLmdpcmFwaENvbXB1dGF0aW9uLnNlbmRNZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RXcml0YWJsZTw+KGVkZ2UudmVydGljZXMoZGlyZWN0aW9uKS5uZXh0KCkuaWQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFdyaXRhYmxlPD4obG9jYWxNZXNzYWdlU2NvcGUuZ2V0RWRnZUZ1bmN0aW9uKCkuYXBwbHkobWVzc2FnZSwgZWRnZSkpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29tcHV0YXRpb24uc2VuZE1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFdyaXRhYmxlPD4oZWRnZSBpbnN0YW5jZW9mIFN0YXJHcmFwaC5TdGFyT3V0RWRnZSA/IGVkZ2UuaW5WZXJ0ZXgoKS5pZCgpIDogZWRnZS5vdXRWZXJ0ZXgoKS5pZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0V3JpdGFibGU8Pihsb2NhbE1lc3NhZ2VTY29wZS5nZXRFZGdlRnVuY3Rpb24oKS5hcHBseShtZXNzYWdlLCBlZGdlKSkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2NvcGUuR2xvYmFsIGdsb2JhbE1lc3NhZ2VTY29wZSA9IChNZXNzYWdlU2NvcGUuR2xvYmFsKSBtZXNzYWdlU2NvcGU7Ci0gICAgICAgICAgICBnbG9iYWxNZXNzYWdlU2NvcGUudmVydGljZXMoKS5mb3JFYWNoKHZlcnRleCAtPgotICAgICAgICAgICAgICAgICAgICB0aGlzLmdpcmFwaENvbXB1dGF0aW9uLnNlbmRNZXNzYWdlKG5ldyBPYmplY3RXcml0YWJsZTw+KHZlcnRleC5pZCgpKSwgbmV3IE9iamVjdFdyaXRhYmxlPD4obWVzc2FnZSkpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIDxUIGV4dGVuZHMgVHJhdmVyc2FsLkFkbWluPFZlcnRleCwgRWRnZT4+IFQgc2V0VmVydGV4U3RhcnQoZmluYWwgVHJhdmVyc2FsLkFkbWluPFZlcnRleCwgRWRnZT4gaW5jaWRlbnRUcmF2ZXJzYWwsIGZpbmFsIFZlcnRleCB2ZXJ0ZXgpIHsKLSAgICAgICAgaW5jaWRlbnRUcmF2ZXJzYWwuYXNBZG1pbigpLmFkZFN0YXJ0KGluY2lkZW50VHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHZlcnRleCwgaW5jaWRlbnRUcmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCksIDFsKSk7Ci0gICAgICAgIHJldHVybiAoVCkgaW5jaWRlbnRUcmF2ZXJzYWw7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgRGlyZWN0aW9uIGdldE9wcG9zaXRlRGlyZWN0aW9uKGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxWZXJ0ZXgsIEVkZ2U+IGluY2lkZW50VHJhdmVyc2FsKSB7Ci0gICAgICAgIGZpbmFsIFZlcnRleFN0ZXAgc3RlcCA9IFRyYXZlcnNhbEhlbHBlci5nZXRMYXN0U3RlcE9mQXNzaWduYWJsZUNsYXNzKFZlcnRleFN0ZXAuY2xhc3MsIGluY2lkZW50VHJhdmVyc2FsKS5nZXQoKTsKLSAgICAgICAgcmV0dXJuIHN0ZXAuZ2V0RGlyZWN0aW9uKCkub3Bwb3NpdGUoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoVmVydGV4LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoVmVydGV4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhOTVmYWUuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaFZlcnRleC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5ncmFwaC5EZWZhdWx0VmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLlZlcnRleFdyaXRhYmxlOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoVmVydGV4IGV4dGVuZHMgRGVmYXVsdFZlcnRleDxPYmplY3RXcml0YWJsZSwgVmVydGV4V3JpdGFibGUsIE51bGxXcml0YWJsZT4gewotCi0gICAgcHVibGljIEdpcmFwaFZlcnRleCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgR2lyYXBoVmVydGV4KGZpbmFsIFZlcnRleFdyaXRhYmxlIHZlcnRleFdyaXRhYmxlKSB7Ci0gICAgICAgIGZpbmFsIFZlcnRleFdyaXRhYmxlIG5ld1dyaXRhYmxlID0gbmV3IFZlcnRleFdyaXRhYmxlKCk7Ci0gICAgICAgIG5ld1dyaXRhYmxlLnNldCh2ZXJ0ZXhXcml0YWJsZS5nZXQoKSk7Ci0gICAgICAgIHRoaXMuaW5pdGlhbGl6ZShuZXcgT2JqZWN0V3JpdGFibGU8PihuZXdXcml0YWJsZS5nZXQoKS5pZCgpKSwgbmV3V3JpdGFibGUsIEVtcHR5T3V0RWRnZXMuaW5zdGFuY2UoKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaFdvcmtlckNvbnRleHQuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhXb3JrZXJDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjJhYjQuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaFdvcmtlckNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5jb25mLkdpcmFwaENvbnN0YW50czsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC53b3JrZXIuV29ya2VyQ29udGV4dDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLkhhZG9vcFBvb2xzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5PYmplY3RXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUudXRpbC5Db25mVXRpbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuVmVydGV4UHJvZ3JhbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudXRpbC5JbW11dGFibGVNZW1vcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuVmVydGV4UHJvZ3JhbVBvb2w7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5LcnlvU2hpbVNlcnZpY2VMb2FkZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhXb3JrZXJDb250ZXh0IGV4dGVuZHMgV29ya2VyQ29udGV4dCB7Ci0KLSAgICBwcml2YXRlIFZlcnRleFByb2dyYW1Qb29sIHZlcnRleFByb2dyYW1Qb29sOwotICAgIHByaXZhdGUgR2lyYXBoTWVtb3J5IG1lbW9yeTsKLQotICAgIHB1YmxpYyBHaXJhcGhXb3JrZXJDb250ZXh0KCkgewotICAgICAgICAvLyBHaXJhcGggUmVmbGVjdGlvblV0aWxzIHJlcXVpcmVzIHRoaXMgdG8gYmUgcHVibGljIGF0IG1pbmltdW0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBwcmVBcHBsaWNhdGlvbigpIHRocm93cyBJbnN0YW50aWF0aW9uRXhjZXB0aW9uLCBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgQ29uZmlndXJhdGlvbiBhcGFjaGVDb25maWd1cmF0aW9uID0gQ29uZlV0aWwubWFrZUFwYWNoZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRDb250ZXh0KCkuZ2V0Q29uZmlndXJhdGlvbigpKTsKLSAgICAgICAgS3J5b1NoaW1TZXJ2aWNlTG9hZGVyLmFwcGx5Q29uZmlndXJhdGlvbihhcGFjaGVDb25maWd1cmF0aW9uKTsKLSAgICAgICAgZmluYWwgVmVydGV4UHJvZ3JhbSB2ZXJ0ZXhQcm9ncmFtID0gVmVydGV4UHJvZ3JhbS5jcmVhdGVWZXJ0ZXhQcm9ncmFtKEhhZG9vcEdyYXBoLm9wZW4oYXBhY2hlQ29uZmlndXJhdGlvbiksIGFwYWNoZUNvbmZpZ3VyYXRpb24pOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW1Qb29sID0gbmV3IFZlcnRleFByb2dyYW1Qb29sKHZlcnRleFByb2dyYW0sIHRoaXMuZ2V0Q29udGV4dCgpLmdldENvbmZpZ3VyYXRpb24oKS5nZXRJbnQoR2lyYXBoQ29uc3RhbnRzLk5VTV9DT01QVVRFX1RIUkVBRFMuZ2V0S2V5KCksIDEpKTsKLSAgICAgICAgdGhpcy5tZW1vcnkgPSBuZXcgR2lyYXBoTWVtb3J5KHRoaXMsIHZlcnRleFByb2dyYW0pOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHBvc3RBcHBsaWNhdGlvbigpIHsKLQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHByZVN1cGVyc3RlcCgpIHsKLSAgICAgICAgdGhpcy52ZXJ0ZXhQcm9ncmFtUG9vbC53b3JrZXJJdGVyYXRpb25TdGFydChuZXcgSW1tdXRhYmxlTWVtb3J5KHRoaXMubWVtb3J5KSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgcG9zdFN1cGVyc3RlcCgpIHsKLSAgICAgICAgdGhpcy52ZXJ0ZXhQcm9ncmFtUG9vbC53b3JrZXJJdGVyYXRpb25FbmQobmV3IEltbXV0YWJsZU1lbW9yeSh0aGlzLm1lbW9yeSkpOwotICAgIH0KLQotICAgIHB1YmxpYyBWZXJ0ZXhQcm9ncmFtUG9vbCBnZXRWZXJ0ZXhQcm9ncmFtUG9vbCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudmVydGV4UHJvZ3JhbVBvb2w7Ci0gICAgfQotCi0gICAgcHVibGljIEdpcmFwaE1lbW9yeSBnZXRNZW1vcnkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lbW9yeTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgR2lyYXBoTWVzc2VuZ2VyIGdldE1lc3NlbmdlcihmaW5hbCBHaXJhcGhWZXJ0ZXggZ2lyYXBoVmVydGV4LCBmaW5hbCBHaXJhcGhDb21wdXRhdGlvbiBnaXJhcGhDb21wdXRhdGlvbiwgZmluYWwgSXRlcmF0b3I8T2JqZWN0V3JpdGFibGU+IG1lc3NhZ2VzKSB7Ci0gICAgICAgIHJldHVybiBuZXcgR2lyYXBoTWVzc2VuZ2VyKGdpcmFwaFZlcnRleCwgZ2lyYXBoQ29tcHV0YXRpb24sIG1lc3NhZ2VzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvTWVtb3J5QWdncmVnYXRvci5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL01lbW9yeUFnZ3JlZ2F0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyOTU0Ni4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvTWVtb3J5QWdncmVnYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5hZ2dyZWdhdG9ycy5BZ2dyZWdhdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5PYmplY3RXcml0YWJsZTsKLWltcG9ydCBvcmcuamF2YXR1cGxlcy5QYWlyOwotCi1pbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpbmFyeU9wZXJhdG9yOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgTWVtb3J5QWdncmVnYXRvciBpbXBsZW1lbnRzIEFnZ3JlZ2F0b3I8T2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4+IHsKLQotICAgIHByaXZhdGUgT2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4gY3VycmVudE9iamVjdCA9IE9iamVjdFdyaXRhYmxlLjxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PmVtcHR5KCk7Ci0KLSAgICBwdWJsaWMgTWVtb3J5QWdncmVnYXRvcigpIHsgLy8gZm9yIEdpcmFwaCBzZXJpYWxpemF0aW9uCi0KLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgT2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4gZ2V0QWdncmVnYXRlZFZhbHVlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50T2JqZWN0OwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldEFnZ3JlZ2F0ZWRWYWx1ZShmaW5hbCBPYmplY3RXcml0YWJsZTxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PiBvYmplY3QpIHsKLSAgICAgICAgaWYgKG51bGwgIT0gb2JqZWN0KQotICAgICAgICAgICAgdGhpcy5jdXJyZW50T2JqZWN0ID0gb2JqZWN0OwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGFnZ3JlZ2F0ZShmaW5hbCBPYmplY3RXcml0YWJsZTxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PiBvYmplY3QpIHsKLSAgICAgICAgaWYgKG51bGwgPT0gb2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBlbHNlIGlmICh0aGlzLmN1cnJlbnRPYmplY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGhpcy5jdXJyZW50T2JqZWN0ID0gb2JqZWN0OwotICAgICAgICBlbHNlIGlmICghb2JqZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRoaXMuY3VycmVudE9iamVjdC5zZXQobmV3IFBhaXI8PihvYmplY3QuZ2V0KCkuZ2V0VmFsdWUwKCksIG9iamVjdC5nZXQoKS5nZXRWYWx1ZTAoKS5hcHBseSh0aGlzLmN1cnJlbnRPYmplY3QuZ2V0KCkuZ2V0VmFsdWUxKCksIG9iamVjdC5nZXQoKS5nZXRWYWx1ZTEoKSkpKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKLSAgICAgICAgdGhpcy5jdXJyZW50T2JqZWN0ID0gT2JqZWN0V3JpdGFibGUuPFBhaXI8QmluYXJ5T3BlcmF0b3IsIE9iamVjdD4+ZW1wdHkoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgT2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4gY3JlYXRlSW5pdGlhbFZhbHVlKCkgewotICAgICAgICByZXR1cm4gT2JqZWN0V3JpdGFibGUuPFBhaXI8QmluYXJ5T3BlcmF0b3IsIE9iamVjdD4+ZW1wdHkoKTsKLSAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL1Bhc3NUaHJvdWdoTWVtb3J5LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvUGFzc1Rocm91Z2hNZW1vcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM0MGU3Yi4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvUGFzc1Rocm91Z2hNZW1vcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIFBhc3NUaHJvdWdoTWVtb3J5IGltcGxlbWVudHMgTWVtb3J5LkFkbWluIHsKLQotICAgIHByaXZhdGUgZmluYWwgR2lyYXBoTWVtb3J5IGdpcmFwaE1lbW9yeTsKLSAgICBwcml2YXRlIGxvbmcgcnVudGltZSA9IDBsOwotICAgIHByaXZhdGUgaW50IGl0ZXJhdGlvbiA9IC0xOwotICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBtZW1vcnlNYXAgPSBuZXcgSGFzaE1hcDw+KCk7Ci0KLSAgICBwdWJsaWMgUGFzc1Rocm91Z2hNZW1vcnkoZmluYWwgR2lyYXBoTWVtb3J5IGdpcmFwaE1lbW9yeSkgewotICAgICAgICB0aGlzLmdpcmFwaE1lbW9yeSA9IGdpcmFwaE1lbW9yeTsKLSAgICAgICAgZ2lyYXBoTWVtb3J5LmtleXMoKS5mb3JFYWNoKGtleSAtPiB0aGlzLm1lbW9yeU1hcC5wdXQoa2V5LCBnaXJhcGhNZW1vcnkuZ2V0KGtleSkpKTsKLSAgICAgICAgdGhpcy5pdGVyYXRpb24gPSBnaXJhcGhNZW1vcnkuZ2V0SXRlcmF0aW9uKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFNldDxTdHJpbmc+IGtleXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lbW9yeU1hcC5rZXlTZXQoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPFI+IFIgZ2V0KGZpbmFsIFN0cmluZyBrZXkpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBSIHIgPSAoUikgdGhpcy5tZW1vcnlNYXAuZ2V0KGtleSk7Ci0gICAgICAgIGlmIChudWxsID09IHIpCi0gICAgICAgICAgICB0aHJvdyBNZW1vcnkuRXhjZXB0aW9ucy5tZW1vcnlEb2VzTm90RXhpc3Qoa2V5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgc2V0KGZpbmFsIFN0cmluZyBrZXksIE9iamVjdCB2YWx1ZSkgewotICAgICAgICB0aGlzLm1lbW9yeU1hcC5wdXQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoTWVtb3J5LnNldChrZXksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgaW50IGdldEl0ZXJhdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXRlcmF0aW9uOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBsb25nIGdldFJ1bnRpbWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWU7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgYWRkKGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIE9iamVjdCB2YWx1ZSkgewotICAgICAgICB0aGlzLmdpcmFwaE1lbW9yeS5hZGQoa2V5LCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkubWVtb3J5U3RyaW5nKHRoaXMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluY3JJdGVyYXRpb24oKSB7Ci0gICAgICAgIHRoaXMuaXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb24gKyAxOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldEl0ZXJhdGlvbihmaW5hbCBpbnQgaXRlcmF0aW9uKSB7Ci0gICAgICAgIHRoaXMuaXRlcmF0aW9uID0gaXRlcmF0aW9uOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldFJ1bnRpbWUobG9uZyBydW50aW1lKSB7Ci0gICAgICAgIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4SW5wdXRGb3JtYXQuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleElucHV0Rm9ybWF0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MDA2NjMuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4SW5wdXRGb3JtYXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5zdHJ1Y3R1cmUuaW87Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhJbnB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhSZWFkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuY29uZi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5JbnB1dFNwbGl0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5Kb2JDb250ZXh0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5UYXNrQXR0ZW1wdENvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci5HcmFwaEZpbHRlcklucHV0Rm9ybWF0OwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaFZlcnRleElucHV0Rm9ybWF0IGV4dGVuZHMgVmVydGV4SW5wdXRGb3JtYXQgewotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2hlY2tJbnB1dFNwZWNzKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgewotCi0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIExpc3Q8SW5wdXRTcGxpdD4gZ2V0U3BsaXRzKGZpbmFsIEpvYkNvbnRleHQgY29udGV4dCwgZmluYWwgaW50IG1pblNwbGl0Q291bnRIaW50KSB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG5ldyBHcmFwaEZpbHRlcklucHV0Rm9ybWF0KCkuZ2V0U3BsaXRzKGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBWZXJ0ZXhSZWFkZXIgY3JlYXRlVmVydGV4UmVhZGVyKGZpbmFsIElucHV0U3BsaXQgc3BsaXQsIGZpbmFsIFRhc2tBdHRlbXB0Q29udGV4dCBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgZmluYWwgR2lyYXBoVmVydGV4UmVhZGVyIHJlYWRlciA9IG5ldyBHaXJhcGhWZXJ0ZXhSZWFkZXIoKTsKLSAgICAgICAgICAgIHJlYWRlci5pbml0aWFsaXplKHNwbGl0LCBjb250ZXh0KTsKLSAgICAgICAgICAgIHJldHVybiByZWFkZXI7Ci0gICAgICAgIH0gY2F0Y2ggKGZpbmFsIEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleE91dHB1dEZvcm1hdC5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4T3V0cHV0Rm9ybWF0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ODFjNzcuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4T3V0cHV0Rm9ybWF0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGguc3RydWN0dXJlLmlvOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguaW8uVmVydGV4T3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmlvLlZlcnRleFdyaXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5jb25mLkNvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLkpvYkNvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLk91dHB1dENvbW1pdHRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuT3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5UYXNrQXR0ZW1wdENvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AudXRpbC5SZWZsZWN0aW9uVXRpbHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaFZlcnRleE91dHB1dEZvcm1hdCBleHRlbmRzIFZlcnRleE91dHB1dEZvcm1hdCB7Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgVmVydGV4V3JpdGVyIGNyZWF0ZVZlcnRleFdyaXRlcihmaW5hbCBUYXNrQXR0ZW1wdENvbnRleHQgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7Ci0gICAgICAgIHJldHVybiBuZXcgR2lyYXBoVmVydGV4V3JpdGVyKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2hlY2tPdXRwdXRTcGVjcyhmaW5hbCBKb2JDb250ZXh0IGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBjb250ZXh0LmdldENvbmZpZ3VyYXRpb24oKTsKLSAgICAgICAgUmVmbGVjdGlvblV0aWxzLm5ld0luc3RhbmNlKGNvbmZpZ3VyYXRpb24uZ2V0Q2xhc3MoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgT3V0cHV0Rm9ybWF0LmNsYXNzLCBPdXRwdXRGb3JtYXQuY2xhc3MpLCBjb25maWd1cmF0aW9uKS5jaGVja091dHB1dFNwZWNzKGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBPdXRwdXRDb21taXR0ZXIgZ2V0T3V0cHV0Q29tbWl0dGVyKGZpbmFsIFRhc2tBdHRlbXB0Q29udGV4dCBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gY29udGV4dC5nZXRDb25maWd1cmF0aW9uKCk7Ci0gICAgICAgIHJldHVybiBSZWZsZWN0aW9uVXRpbHMubmV3SW5zdGFuY2UoY29uZmlndXJhdGlvbi5nZXRDbGFzcyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBPdXRwdXRGb3JtYXQuY2xhc3MsIE91dHB1dEZvcm1hdC5jbGFzcyksIGNvbmZpZ3VyYXRpb24pLmdldE91dHB1dENvbW1pdHRlcihjb250ZXh0KTsKLSAgICB9Ci0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3N0cnVjdHVyZS9pby9HaXJhcGhWZXJ0ZXhSZWFkZXIuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFJlYWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzM1OTgwLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFJlYWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnN0cnVjdHVyZS5pbzsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmdyYXBoLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhSZWFkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uTnVsbFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5JbnB1dFNwbGl0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5SZWNvcmRSZWFkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLlRhc2tBdHRlbXB0Q29udGV4dDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaFZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoRmlsdGVyUmVjb3JkUmVhZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5WZXJ0ZXhXcml0YWJsZTsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhWZXJ0ZXhSZWFkZXIgZXh0ZW5kcyBWZXJ0ZXhSZWFkZXIgewotCi0gICAgcHJpdmF0ZSBSZWNvcmRSZWFkZXI8TnVsbFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZT4gcmVjb3JkUmVhZGVyOwotCi0gICAgcHVibGljIEdpcmFwaFZlcnRleFJlYWRlcigpIHsKLSAgICAgICAgdGhpcy5yZWNvcmRSZWFkZXIgPSBuZXcgR3JhcGhGaWx0ZXJSZWNvcmRSZWFkZXIoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKGZpbmFsIElucHV0U3BsaXQgaW5wdXRTcGxpdCwgZmluYWwgVGFza0F0dGVtcHRDb250ZXh0IGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICB0aGlzLnJlY29yZFJlYWRlci5pbml0aWFsaXplKGlucHV0U3BsaXQsIGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIG5leHRWZXJ0ZXgoKSB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVjb3JkUmVhZGVyLm5leHRLZXlWYWx1ZSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBWZXJ0ZXggZ2V0Q3VycmVudFZlcnRleCgpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gbmV3IEdpcmFwaFZlcnRleCh0aGlzLnJlY29yZFJlYWRlci5nZXRDdXJyZW50VmFsdWUoKSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgICAgICB0aGlzLnJlY29yZFJlYWRlci5jbG9zZSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBmbG9hdCBnZXRQcm9ncmVzcygpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gdGhpcy5yZWNvcmRSZWFkZXIuZ2V0UHJvZ3Jlc3MoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3N0cnVjdHVyZS9pby9HaXJhcGhWZXJ0ZXhXcml0ZXIuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFdyaXRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzk0MTM3Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFdyaXRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnN0cnVjdHVyZS5pbzsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmdyYXBoLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhXcml0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuY29uZi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuT3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5SZWNvcmRXcml0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLlRhc2tBdHRlbXB0Q29udGV4dDsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC51dGlsLlJlZmxlY3Rpb25VdGlsczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaFZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLlZlcnRleFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS51dGlsLkNvbmZVdGlsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhDb21wdXRlS2V5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhQcm9ncmFtOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLlZlcnRleFByb2dyYW1IZWxwZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhWZXJ0ZXhXcml0ZXIgZXh0ZW5kcyBWZXJ0ZXhXcml0ZXIgewotICAgIHByaXZhdGUgUmVjb3JkV3JpdGVyPE51bGxXcml0YWJsZSwgVmVydGV4V3JpdGFibGU+IHJlY29yZFdyaXRlcjsKLSAgICBwcml2YXRlIFN0cmluZ1tdIHRyYW5zaWVudENvbXB1dGVLZXlzOwotCi0gICAgcHVibGljIEdpcmFwaFZlcnRleFdyaXRlcigpIHsKLQotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoZmluYWwgVGFza0F0dGVtcHRDb250ZXh0IGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBjb250ZXh0LmdldENvbmZpZ3VyYXRpb24oKTsKLSAgICAgICAgdGhpcy5yZWNvcmRXcml0ZXIgPSBSZWZsZWN0aW9uVXRpbHMubmV3SW5zdGFuY2UoY29uZmlndXJhdGlvbi5nZXRDbGFzcyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBPdXRwdXRGb3JtYXQuY2xhc3MsIE91dHB1dEZvcm1hdC5jbGFzcyksIGNvbmZpZ3VyYXRpb24pLmdldFJlY29yZFdyaXRlcihjb250ZXh0KTsKLSAgICAgICAgdGhpcy50cmFuc2llbnRDb21wdXRlS2V5cyA9IFZlcnRleFByb2dyYW1IZWxwZXIudmVydGV4Q29tcHV0ZUtleXNBc0FycmF5KCgoVmVydGV4UHJvZ3JhbTw/PikgVmVydGV4UHJvZ3JhbS5jcmVhdGVWZXJ0ZXhQcm9ncmFtKEVtcHR5R3JhcGguaW5zdGFuY2UoKSwgQ29uZlV0aWwubWFrZUFwYWNoZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKS5nZXRWZXJ0ZXhDb21wdXRlS2V5cygpLnN0cmVhbSgpLgotICAgICAgICAgICAgICAgIGZpbHRlcihWZXJ0ZXhDb21wdXRlS2V5Ojppc1RyYW5zaWVudCkuCi0gICAgICAgICAgICAgICAgY29sbGVjdChDb2xsZWN0b3JzLnRvU2V0KCkpKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBjbG9zZShmaW5hbCBUYXNrQXR0ZW1wdENvbnRleHQgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7Ci0gICAgICAgIHRoaXMucmVjb3JkV3JpdGVyLmNsb3NlKGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHdyaXRlVmVydGV4KGZpbmFsIFZlcnRleCB2ZXJ0ZXgpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICAoKEdpcmFwaFZlcnRleCkgdmVydGV4KS5nZXRWYWx1ZSgpLmdldCgpLmRyb3BWZXJ0ZXhQcm9wZXJ0aWVzKHRoaXMudHJhbnNpZW50Q29tcHV0ZUtleXMpOyAvLyByZW1vdmUgYWxsIHRyYW5zaWVudCBjb21wdXRlIGtleXMgYmVmb3JlIHdyaXRpbmcgdG8gT3V0cHV0Rm9ybWF0Ci0gICAgICAgIHRoaXMucmVjb3JkV3JpdGVyLndyaXRlKE51bGxXcml0YWJsZS5nZXQoKSwgKChHaXJhcGhWZXJ0ZXgpIHZlcnRleCkuZ2V0VmFsdWUoKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL3NlcnZpY2VzL29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkdyZW1saW5QbHVnaW4gYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvc2VydmljZXMvb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuR3JlbWxpblBsdWdpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE5MjkwNS4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvc2VydmljZXMvb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuR3JlbWxpblBsdWdpbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLmpzcjIyMy5HaXJhcGhHcmVtbGluUGx1Z2luClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9HaXJhcGhHcmVtbGluSW50ZWdyYXRlVGVzdC5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9HaXJhcGhHcmVtbGluSW50ZWdyYXRlVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTU2NDljLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvR2lyYXBoR3JlbWxpbkludGVncmF0ZVRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGg7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcEdyYXBoOwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotQFJ1bldpdGgoR2lyYXBoR3JlbWxpblN1aXRlLmNsYXNzKQotQEdyYXBoUHJvdmlkZXJDbGFzcyhwcm92aWRlciA9IEdpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXIuY2xhc3MsIGdyYXBoID0gSGFkb29wR3JhcGguY2xhc3MpCi1wdWJsaWMgY2xhc3MgR2lyYXBoR3JlbWxpbkludGVncmF0ZVRlc3QgewotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvR2lyYXBoR3JlbWxpblN1aXRlLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL0dpcmFwaEdyZW1saW5TdWl0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmUwZTRmLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvR2lyYXBoR3JlbWxpblN1aXRlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqICB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5BYnN0cmFjdEdyZW1saW5TdWl0ZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5zdHJ1Y3R1cmUuaW8uR2lyYXBoSW9SZWdpc3RyeUNoZWNrOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsRW5naW5lOwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLm1vZGVsLkluaXRpYWxpemF0aW9uRXJyb3I7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMubW9kZWwuUnVubmVyQnVpbGRlcjsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaEdyZW1saW5TdWl0ZSBleHRlbmRzIEFic3RyYWN0R3JlbWxpblN1aXRlIHsKLSAgICBwdWJsaWMgR2lyYXBoR3JlbWxpblN1aXRlKGZpbmFsIENsYXNzPD8+IGtsYXNzLCBmaW5hbCBSdW5uZXJCdWlsZGVyIGJ1aWxkZXIpIHRocm93cyBJbml0aWFsaXphdGlvbkVycm9yIHsKLSAgICAgICAgc3VwZXIoa2xhc3MsIGJ1aWxkZXIsIG5ldyBDbGFzczw/Pltde0dpcmFwaElvUmVnaXN0cnlDaGVjay5jbGFzc30sIG5ldyBDbGFzczw/Pltde0dpcmFwaElvUmVnaXN0cnlDaGVjay5jbGFzc30sIHRydWUsIFRyYXZlcnNhbEVuZ2luZS5UeXBlLkNPTVBVVEVSKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL0dpcmFwaEhhZG9vcEdyZW1saW5JbnRlZ3JhdGVUZXN0LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL0dpcmFwaEhhZG9vcEdyZW1saW5JbnRlZ3JhdGVUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhOWUxMmQuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9HaXJhcGhIYWRvb3BHcmVtbGluSW50ZWdyYXRlVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyQ2xhc3M7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhIYWRvb3BHcmFwaFByb3ZpZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLkhhZG9vcEdyZW1saW5TdWl0ZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1AUnVuV2l0aChIYWRvb3BHcmVtbGluU3VpdGUuY2xhc3MpCi1AR3JhcGhQcm92aWRlckNsYXNzKHByb3ZpZGVyID0gR2lyYXBoSGFkb29wR3JhcGhQcm92aWRlci5jbGFzcywgZ3JhcGggPSBIYWRvb3BHcmFwaC5jbGFzcykKLXB1YmxpYyBjbGFzcyBHaXJhcGhIYWRvb3BHcmVtbGluSW50ZWdyYXRlVGVzdCB7Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoR3JhcGhDb21wdXRlclByb2Nlc3NJbnRlZ3JhdGVUZXN0LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoR3JhcGhDb21wdXRlclByb2Nlc3NJbnRlZ3JhdGVUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZGE3NTAuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaEdyYXBoQ29tcHV0ZXJQcm9jZXNzSW50ZWdyYXRlVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLlByb2Nlc3NDb21wdXRlclN1aXRlOwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotQFJ1bldpdGgoUHJvY2Vzc0NvbXB1dGVyU3VpdGUuY2xhc3MpCi1AR3JhcGhQcm92aWRlckNsYXNzKHByb3ZpZGVyID0gR2lyYXBoSGFkb29wR3JhcGhQcm92aWRlci5jbGFzcywgZ3JhcGggPSBIYWRvb3BHcmFwaC5jbGFzcykKLXB1YmxpYyBjbGFzcyBHaXJhcGhHcmFwaENvbXB1dGVyUHJvY2Vzc0ludGVncmF0ZVRlc3QgewotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXIuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhIYWRvb3BHcmFwaFByb3ZpZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYWU0ZjEuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguY29uZi5HaXJhcGhDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5IYWRvb3BHcmFwaFByb3ZpZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwotCi1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotQEdyYXBoUHJvdmlkZXIuRGVzY3JpcHRvcihjb21wdXRlciA9IEdpcmFwaEdyYXBoQ29tcHV0ZXIuY2xhc3MpCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoSGFkb29wR3JhcGhQcm92aWRlciBleHRlbmRzIEhhZG9vcEdyYXBoUHJvdmlkZXIgewotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2V0QmFzZUNvbmZpZ3VyYXRpb24oZmluYWwgU3RyaW5nIGdyYXBoTmFtZSwgZmluYWwgQ2xhc3M8Pz4gdGVzdCwgZmluYWwgU3RyaW5nIHRlc3RNZXRob2ROYW1lLCBmaW5hbCBMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YSBsb2FkR3JhcGhXaXRoKSB7Ci0gICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gY29uZmlnID0gc3VwZXIuZ2V0QmFzZUNvbmZpZ3VyYXRpb24oZ3JhcGhOYW1lLCB0ZXN0LCB0ZXN0TWV0aG9kTmFtZSwgbG9hZEdyYXBoV2l0aCk7Ci0gICAgICAgIGNvbmZpZy5wdXQoIm1hcHJlZHVjZS5qb2IucmVkdWNlcyIsIDIpOwotICAgICAgICAvLy8gZ2lyYXBoIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgY29uZmlnLnB1dChHaXJhcGhDb25zdGFudHMuTE9DQUxfVEVTVF9NT0RFLmdldEtleSgpLCB0cnVlKTsgLy8gbG9jYWwgdGVzdGluZyBjYW4gb25seSBzcGF3biBvbmUgd29ya2VyCi0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLk1JTl9XT1JLRVJTLCAxKTsKLSAgICAgICAgY29uZmlnLnB1dChHaXJhcGhDb25zdGFudHMuTUFYX1dPUktFUlMsIDEpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5TUExJVF9NQVNURVJfV09SS0VSLmdldEtleSgpLCBmYWxzZSk7Ci0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLlpPT0tFRVBFUl9JU19FWFRFUk5BTC5nZXRLZXkoKSwgZmFsc2UpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5ORVRUWV9TRVJWRVJfVVNFX0VYRUNVVElPTl9IQU5ETEVSLmdldEtleSgpLCBmYWxzZSk7IC8vIHRoaXMgcHJldmVudHMgc28gbWFueSBpbnRlZ3JhdGlvbiB0ZXN0cyBydW5uaW5nIG91dCBvZiB0aHJlYWRzCi0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLk5FVFRZX0NMSUVOVF9VU0VfRVhFQ1VUSU9OX0hBTkRMRVIuZ2V0S2V5KCksIGZhbHNlKTsgLy8gdGhpcyBwcmV2ZW50cyBzbyBtYW55IGludGVncmF0aW9uIHRlc3RzIHJ1bm5pbmcgb3V0IG9mIHRocmVhZHMKLSAgICAgICAgY29uZmlnLnB1dChHaXJhcGhDb25zdGFudHMuTkVUVFlfVVNFX0RJUkVDVF9NRU1PUlkuZ2V0S2V5KCksIHRydWUpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5OVU1fSU5QVVRfVEhSRUFEUy5nZXRLZXkoKSwgMik7Ci0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLk5VTV9DT01QVVRFX1RIUkVBRFMuZ2V0S2V5KCksIDIpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5NQVhfTUFTVEVSX1NVUEVSU1RFUF9XQUlUX01TRUNTLmdldEtleSgpLCBUaW1lVW5pdC5NSU5VVEVTLnRvTWlsbGlzKDYwTCkpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5WRVJURVhfT1VUUFVUX0ZPUk1BVF9USFJFQURfU0FGRS5nZXRLZXkoKSwgZmFsc2UpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5OVU1fT1VUUFVUX1RIUkVBRFMuZ2V0S2V5KCksIDEpOwotICAgICAgICByZXR1cm4gY29uZmlnOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbFNvdXJjZSB0cmF2ZXJzYWwoZmluYWwgR3JhcGggZ3JhcGgpIHsKLSAgICAgICAgcmV0dXJuIGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihHaXJhcGhHcmFwaENvbXB1dGVyLmNsYXNzKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgR3JhcGhDb21wdXRlciBnZXRHcmFwaENvbXB1dGVyKGZpbmFsIEdyYXBoIGdyYXBoKSB7Ci0gICAgICAgIHJldHVybiBncmFwaC5jb21wdXRlKEdpcmFwaEdyYXBoQ29tcHV0ZXIuY2xhc3MpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaElvUmVnaXN0cnlDaGVjay5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoSW9SZWdpc3RyeUNoZWNrLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOWRjODEuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoSW9SZWdpc3RyeUNoZWNrLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqICB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnN0cnVjdHVyZS5pbzsKLQotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXIuR2lyYXBoR3JhcGhDb21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLkFic3RyYWN0SW9SZWdpc3RyeUNoZWNrOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5IYWRvb3BQb29sczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLktyeW9TaGltU2VydmljZUxvYWRlcjsKLWltcG9ydCBvcmcuanVuaXQuQWZ0ZXI7Ci1pbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKLWltcG9ydCBvcmcuanVuaXQuVGVzdDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGNsYXNzIEdpcmFwaElvUmVnaXN0cnlDaGVjayBleHRlbmRzIEFic3RyYWN0SW9SZWdpc3RyeUNoZWNrIHsKLQotICAgIEBCZWZvcmUKLSAgICBwdWJsaWMgdm9pZCBzZXR1cCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci5zZXR1cCgpOwotICAgICAgICBLcnlvU2hpbVNlcnZpY2VMb2FkZXIuY2xvc2UoKTsKLSAgICAgICAgSGFkb29wUG9vbHMuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICBAQWZ0ZXIKLSAgICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci50ZWFyRG93bigpOwotICAgICAgICBLcnlvU2hpbVNlcnZpY2VMb2FkZXIuY2xvc2UoKTsKLSAgICAgICAgSGFkb29wUG9vbHMuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZFN1cHBvcnRHcnlvVjFkMElvUmVnaXN0cnkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgc3VwZXIuY2hlY2tHcnlvVjFkMElvUmVnaXN0cnlDb21wbGlhbmNlKChIYWRvb3BHcmFwaCkgZ3JhcGgsIEdpcmFwaEdyYXBoQ29tcHV0ZXIuY2xhc3MpOwotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkU3VwcG9ydEdyeW9WM2QwSW9SZWdpc3RyeSgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci5jaGVja0dyeW9WM2QwSW9SZWdpc3RyeUNvbXBsaWFuY2UoKEhhZG9vcEdyYXBoKSBncmFwaCwgR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcyk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRTdXBwb3J0R3JhcGhTT05Jb1JlZ2lzdHJ5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyLmNoZWNrR3JhcGhTT05Jb1JlZ2lzdHJ5Q29tcGxpYW5jZSgoSGFkb29wR3JhcGgpIGdyYXBoLCBHaXJhcGhHcmFwaENvbXB1dGVyLmNsYXNzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9yZXNvdXJjZXMvZ2lyYXBoLXNpdGUueG1sIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2dpcmFwaC1zaXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2MjI5Ni4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9yZXNvdXJjZXMvZ2lyYXBoLXNpdGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9ImNvbmZpZ3VyYXRpb24ueHNsIj8+Ci08Y29uZmlndXJhdGlvbj4KLSAgICA8cHJvcGVydHk+Ci0gICAgICAgIDxuYW1lPmdpcmFwaC56a1NlcnZlcmxpc3RQb2xsTXNlY3M8L25hbWU+Ci0gICAgICAgIDx2YWx1ZT41MDA8L3ZhbHVlPgotICAgIDwvcHJvcGVydHk+Ci0gICAgPHByb3BlcnR5PgotICAgICAgICA8bmFtZT5naXJhcGgubG9nTGV2ZWw8L25hbWU+Ci0gICAgICAgIDx2YWx1ZT5pbmZvPC92YWx1ZT4KLSAgICA8L3Byb3BlcnR5PgotPC9jb25maWd1cmF0aW9uPgpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXNpbGVudC5wcm9wZXJ0aWVzIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXNpbGVudC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzMxMmY3Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai1zaWxlbnQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0jIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0jIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0jIHRoaXMgZmlsZSBzaG91bGQgYWx3YXlzIGhhdmUgbG9nZ2luZyBzZXQgdG8gT0ZGLiAgaXQgc2VlbXMsIGhvd2V2ZXIsIHRoYXQgYW4gYXBwZW5kZXIgb2Ygc29tZSBzb3J0IGlzCi0jIHJlcXVpcmVkIG9yIGVsc2Ugc29tZSBsb2dzIHRocm93IGVycm9yIGFuZCB1c2Ugb3RoZXIgbG9nNGoucHJvcGVydGllcyBmaWxlcyBvbiB0aGUgcGF0aC4KLWxvZzRqLnJvb3RMb2dnZXI9T0ZGLCBzdGRvdXQKLWxvZzRqLmFwcGVuZGVyLnN0ZG91dD1vcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlcgotbG9nNGouYXBwZW5kZXIuc3Rkb3V0LmxheW91dD1vcmcuYXBhY2hlLmxvZzRqLlBhdHRlcm5MYXlvdXQKLWxvZzRqLmFwcGVuZGVyLnN0ZG91dC5sYXlvdXQuQ29udmVyc2lvblBhdHRlcm49WyVwXSAlQyAtICVtJW4KLQotIyBuZWVkIHRvIHR1cm4gdGhpcyBvbiBzbyB0aGF0IHdlIGtub3cgdGhlIHRlc3Qgc2VlZAotbG9nNGoubG9nZ2VyLm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcj1JTkZPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXRlc3QucHJvcGVydGllcyBiL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai10ZXN0LnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NmJmYWIuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXRlc3QucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0jIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0jIHVuZGVyIHRoZSBMaWNlbnNlLgotCi1sb2c0ai5yb290TG9nZ2VyPVdBUk4sIHN0ZG91dAotbG9nNGouYXBwZW5kZXIuc3Rkb3V0PW9yZy5hcGFjaGUubG9nNGouQ29uc29sZUFwcGVuZGVyCi1sb2c0ai5hcHBlbmRlci5zdGRvdXQubGF5b3V0PW9yZy5hcGFjaGUubG9nNGouUGF0dGVybkxheW91dAotbG9nNGouYXBwZW5kZXIuc3Rkb3V0LmxheW91dC5Db252ZXJzaW9uUGF0dGVybj1bJXBdICVDIC0gJW0lbgotCi1sb2c0ai5sb2dnZXIub3JnLmFwYWNoZS5oYWRvb3A9RVJST1IKLQotIyBuZWVkIHRvIHR1cm4gdGhpcyBvbiBzbyB0aGF0IHdlIGtub3cgdGhlIHRlc3Qgc2VlZAotbG9nNGoubG9nZ2VyLm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcj1JTkZPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3BvbS54bWwgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1kc2wvcG9tLnhtbAppbmRleCA4MWM2MmFkLi42YTJjYzY1IDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1kc2wvcG9tLnhtbAorKysgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1kc2wvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KIAogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tYXJjaGV0eXBlLWRzbDwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLWRzbC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qYXZhL1NvY2lhbFRyYXZlcnNhbFNvdXJjZURzbC5qYXZhIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvU29jaWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKaW5kZXggZDE0Yjg0My4uZTRkMWI4YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvU29jaWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKKysrIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvU29jaWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogcGFja2FnZSAke3BhY2thZ2V9OwogCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuR3JlbWxpbkRzbDsKQEAgLTQ0LDYgKzQ1LDEwIEBACiAgICAgICAgIHN1cGVyKGdyYXBoKTsKICAgICB9CiAKKyAgICBwdWJsaWMgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsKGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBzdXBlcihjb25uZWN0aW9uKTsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBTdGFydHMgYSB0cmF2ZXJzYWwgdGhhdCBmaW5kcyBhbGwgdmVydGljZXMgd2l0aCBhICJwZXJzb24iIGxhYmVsIGFuZCBvcHRpb25hbGx5IGFsbG93cyBmaWx0ZXJpbmcgb2YgdGhvc2UKICAgICAgKiB2ZXJ0aWNlcyBvbiB0aGUgIm5hbWUiIHByb3BlcnR5LgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtc2VydmVyL3BvbS54bWwgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvcG9tLnhtbAppbmRleCA2MjkyYjBkLi45YmFhNmUzIDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvcG9tLnhtbAorKysgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KIAogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tYXJjaGV0eXBlLXNlcnZlcjwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLXNlcnZlci9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9yZXNvdXJjZXMvZ3JlbWxpbi1zZXJ2ZXIueWFtbCBiL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLXNlcnZlci9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9yZXNvdXJjZXMvZ3JlbWxpbi1zZXJ2ZXIueWFtbAppbmRleCAxZDJiNGQ4Li45NTMwYjUwIDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3Rlc3QvcmVzb3VyY2VzL2dyZW1saW4tc2VydmVyLnlhbWwKKysrIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtc2VydmVyL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy90ZXN0L3Jlc291cmNlcy9ncmVtbGluLXNlcnZlci55YW1sCkBAIC0yMCw3ICsyMCw2IEBACiB0aHJlYWRQb29sV29ya2VyOiAxCiBncmVtbGluUG9vbDogOAogZXZhbHVhdGlvblRpbWVvdXQ6IDMwMDAwCi1zZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0OiAzMDAwMAogZ3JhcGhzOiB7CiAgIGdyYXBoOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXN9CiBzY3JpcHRFbmdpbmVzOiB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaC9wb20ueG1sIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtdGlua2VyZ3JhcGgvcG9tLnhtbAppbmRleCA2NWU3Y2I4Li5kZmFhZjg5IDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaC9wb20ueG1sCisrKyBiL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLXRpbmtlcmdyYXBoL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1hcmNoZXR5cGU8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAKICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaDwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tYXJjaGV0eXBlL3BvbS54bWwgYi9ncmVtbGluLWFyY2hldHlwZS9wb20ueG1sCmluZGV4IDk3ZTM0YTAuLjViZTk1MDEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tYXJjaGV0eXBlL3BvbS54bWwKKysrIGIvZ3JlbWxpbi1hcmNoZXR5cGUvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAKICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZTwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9iaW4vZ3JlbWxpbi5zaCBiL2dyZW1saW4tY29uc29sZS9iaW4vZ3JlbWxpbi5zaAppbmRleCA5NWY1MTZlLi43YTE4NWFlIDEyMDAwMAotLS0gYS9ncmVtbGluLWNvbnNvbGUvYmluL2dyZW1saW4uc2gKKysrIGIvZ3JlbWxpbi1jb25zb2xlL2Jpbi9ncmVtbGluLnNoCkBAIC0xICsxIEBACi0uLi90YXJnZXQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4zLjExLVNOQVBTSE9ULXN0YW5kYWxvbmUvYmluL2dyZW1saW4uc2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisuLi90YXJnZXQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy40LjctU05BUFNIT1Qtc3RhbmRhbG9uZS9iaW4vZ3JlbWxpbi5zaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9jb25mL3JlbW90ZS1vYmplY3RzLnlhbWwgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUtb2JqZWN0cy55YW1sCmluZGV4IGJhOWJkNjkuLjcwZWIwZmIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9jb25mL3JlbW90ZS1vYmplY3RzLnlhbWwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL2NvbmYvcmVtb3RlLW9iamVjdHMueWFtbApAQCAtMTcsNyArMTcsNyBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgbWVhbnQgdG8gaGF2ZSBHcmVtbGluIFNlcnZlciByZXR1cm4KLSMgR3J5byBzZXJpYWxpemVkIG9iamVjdHMuIFRoZSBUaW5rZXJHcmFwaCBJb1JlZ2lzdHJ5IGlzCisjIEdyYXBoQmluYXJ5IHNlcmlhbGl6ZWQgb2JqZWN0cy4gVGhlIFRpbmtlckdyYXBoIElvUmVnaXN0cnkgaXMKICMgYXNzaWduZWQgYXMgdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIHRoZQogIyBwcmUtcGFja2FnZWQgR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlcy4gIFRoZQogIyBjbGllbnQgY29uZmlndXJhdGlvbiBmb3Igc2VyaWFsaXplcnMgc2hvdWxkIG1hdGNoIHNlcnZlci4KQEAgLTI2LDExICsyNiwxMiBAQAogIyAtIGdyZW1saW4tc2VydmVyLnlhbWwKICMgLSBncmVtbGluLXNlcnZlci1jbGFzc2ljLnlhbWwKICMgLSBncmVtbGluLXNlcnZlci1tb2Rlcm4ueWFtbAorIyAtIGdyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCiAjIC0gZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXJlYWRvbmx5LnlhbWwKLSMgLSBncmVtbGluLXNlcnZlci1zZWN1cmUueWFtbAorIyAtIGdyZW1saW4tc2VydmVyLW5lbzRqLnlhbWwKKyMgLSBncmVtbGluLXNlcnZlci1zcGFyay55YW1sCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBob3N0czogW2xvY2FsaG9zdF0KIHBvcnQ6IDgxODIKLXNlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwKLSAgICAgICAgICAgICAgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3NlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUtc2VjdXJlLnlhbWwgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUtc2VjdXJlLnlhbWwKaW5kZXggOTdiNzU2Yi4uYTI5ZDk5YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL2NvbmYvcmVtb3RlLXNlY3VyZS55YW1sCisrKyBiL2dyZW1saW4tY29uc29sZS9jb25mL3JlbW90ZS1zZWN1cmUueWFtbApAQCAtMzEsNCArMzEsNCBAQAogY29ubmVjdGlvblBvb2w6IHsKICAgZW5hYmxlU3NsOiB0cnVlLAogICBzc2xFbmFibGVkUHJvdG9jb2xzOiBbVExTdjEuMl0gfQotc2VyaWFsaXplcjogeyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitzZXJpYWxpemVyOiB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL2NvbmYvcmVtb3RlLnlhbWwgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUueWFtbAppbmRleCA3NmRhMzg3Li4xYTQzMjUwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUueWFtbAorKysgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUueWFtbApAQCAtMjQsOSArMjQsMTEgQEAKICMgLSBncmVtbGluLXNlcnZlci55YW1sCiAjIC0gZ3JlbWxpbi1zZXJ2ZXItY2xhc3NpYy55YW1sCiAjIC0gZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLnlhbWwKKyMgLSBncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbAogIyAtIGdyZW1saW4tc2VydmVyLW1vZGVybi1yZWFkb25seS55YW1sCisjIC0gZ3JlbWxpbi1zZXJ2ZXItc3BhcmsueWFtbAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogaG9zdHM6IFtsb2NhbGhvc3RdCiBwb3J0OiA4MTgyCi1zZXJpYWxpemVyOiB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3NlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9wb20ueG1sIGIvZ3JlbWxpbi1jb25zb2xlL3BvbS54bWwKaW5kZXggN2YwNThmMS4uOTM2MzIwYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3BvbS54bWwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tY29uc29sZTwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gQ29uc29sZTwvbmFtZT4KQEAgLTQ2LDExICs0Niw2IEBACiAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvZGVjPC9hcnRpZmFjdElkPgogICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1jbGk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNsaTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPjEuMjwvdmVyc2lvbj4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kcml2ZXI8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CkBAIC00NjAsNiArNDU1LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+ZG9ja2VyLWltYWdlLXRhZy1sYXRlc3Q8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD50YWc8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhZz5sYXRlc3Q8L3RhZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxza2lwPiR7b25seS53aGVuLmlzLnByZXJlbGVhc2UudmVyc2lvbn08L3NraXA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+ZG9ja2VyLWltYWdlLXB1c2g8L2lkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+ZGVwbG95PC9waGFzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgpAQCAtNDgxLDYgKzQ4NiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNraXA+JHtvbmx5LndoZW4uaXMucHJlcmVsZWFzZS52ZXJzaW9ufTwvc2tpcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5kb2NrZXItaW1hZ2UtcHVzaC1sYXRlc3Q8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+ZGVwbG95PC9waGFzZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cHVzaDwvZ29hbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFnPmxhdGVzdDwvdGFnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNraXA+JHtvbmx5LndoZW4uaXMucHJlcmVsZWFzZS52ZXJzaW9ufTwvc2tpcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgogICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9zaXRvcnk+dGlua2VycG9wL2dyZW1saW4tY29uc29sZTwvcmVwb3NpdG9yeT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL0NvbnNvbGUuZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvQ29uc29sZS5ncm9vdnkKaW5kZXggYWVlYzYzYS4uM2RkOGU2OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvQ29uc29sZS5ncm9vdnkKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvQ29uc29sZS5ncm9vdnkKQEAgLTE4LDE1ICsxOCwxNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZQogCitpbXBvcnQgZ3Jvb3Z5LmNsaS5waWNvY2xpLkNsaUJ1aWxkZXIKK2ltcG9ydCBncm9vdnkuY2xpLnBpY29jbGkuT3B0aW9uQWNjZXNzb3IKIGltcG9ydCBqbGluZS5UZXJtaW5hbEZhY3RvcnkKIGltcG9ydCBqbGluZS5jb25zb2xlLmhpc3RvcnkuRmlsZUhpc3RvcnkKIAotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuT3B0aW9uCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLmNvbW1hbmRzLkJ5dGVjb2RlQ29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5HcmVtbGluU2V0Q29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5JbnN0YWxsQ29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5QbHVnaW5Db21tYW5kCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLmNvbW1hbmRzLlJlbW90ZUNvbW1hbmQKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmNvbnNvbGUuY29tbWFuZHMuQ2xzQ29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5TdWJtaXRDb21tYW5kCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLmNvbW1hbmRzLlVuaW5zdGFsbENvbW1hbmQKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5sb2FkZXJzLkdyZW1saW5Mb2FkZXIKQEAgLTQ1LDEzICs0NywxMCBAQAogaW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuSU8KIGltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLkludGVyYWN0aXZlU2hlbGxSdW5uZXIKIGltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLmNvbW1hbmRzLlNldENvbW1hbmQKLWltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLnV0aWwuSGVscEZvcm1hdHRlcgogaW1wb3J0IG9yZy5mdXNlc291cmNlLmphbnNpLkFuc2kKIGltcG9ydCBzdW4ubWlzYy5TaWduYWwKIGltcG9ydCBzdW4ubWlzYy5TaWduYWxIYW5kbGVyCiAKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljQm9vbGVhbgotCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwpAQCAtOTgsNyArOTcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9KQogCi0gICAgICAgIGdyb292eSA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobWVkaWF0b3IpCisgICAgICAgIGdyb292eSA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobWVkaWF0b3IsIGlvKQogCiAgICAgICAgIGRlZiBjb21tYW5kc1RvUmVtb3ZlID0gZ3Jvb3Z5LmdldFJlZ2lzdHJ5KCkuY29tbWFuZHMoKS5maW5kQWxsIHsgaXQgaW5zdGFuY2VvZiBTZXRDb21tYW5kIH0KICAgICAgICAgY29tbWFuZHNUb1JlbW92ZS5lYWNoIHsgZ3Jvb3Z5LmdldFJlZ2lzdHJ5KCkucmVtb3ZlKGl0KSB9CkBAIC0xMDksNiArMTA4LDcgQEAKICAgICAgICAgZ3Jvb3Z5LnJlZ2lzdGVyKG5ldyBSZW1vdGVDb21tYW5kKGdyb292eSwgbWVkaWF0b3IpKQogICAgICAgICBncm9vdnkucmVnaXN0ZXIobmV3IFN1Ym1pdENvbW1hbmQoZ3Jvb3Z5LCBtZWRpYXRvcikpCiAgICAgICAgIGdyb292eS5yZWdpc3RlcihuZXcgQnl0ZWNvZGVDb21tYW5kKGdyb292eSwgbWVkaWF0b3IpKQorICAgICAgICBncm9vdnkucmVnaXN0ZXIobmV3IENsc0NvbW1hbmQoZ3Jvb3Z5LCBtZWRpYXRvcikpCiAKICAgICAgICAgLy8gaGlkZSBvdXRwdXQgdGVtcG9yYXJpbHkgd2hpbGUgaW1wb3J0cyBleGVjdXRlCiAgICAgICAgIHNob3dTaGVsbEV2YWx1YXRpb25PdXRwdXQoZmFsc2UpCkBAIC0xMTcsOCArMTE3LDExIEBACiAgICAgICAgIGltcG9ydHMuZ2V0Q2xhc3NQYWNrYWdlcygpLmNvbGxlY3QgeyBNZWRpYXRvci5JTVBPUlRfU1BBQ0UgKyBpdC5nZXROYW1lKCkgKyBNZWRpYXRvci5JTVBPUlRfV0lMRENBUkQgfS5lYWNoIHsgZ3Jvb3Z5LmV4ZWN1dGUoaXQpIH0KICAgICAgICAgaW1wb3J0cy5nZXRNZXRob2RDbGFzc2VzKCkuY29sbGVjdCB7IE1lZGlhdG9yLklNUE9SVF9TVEFUSUNfU1BBQ0UgKyBpdC5nZXRDYW5vbmljYWxOYW1lKCkgKyBNZWRpYXRvci5JTVBPUlRfV0lMRENBUkR9LmVhY2h7IGdyb292eS5leGVjdXRlKGl0KSB9CiAgICAgICAgIGltcG9ydHMuZ2V0RW51bUNsYXNzZXMoKS5jb2xsZWN0IHsgTWVkaWF0b3IuSU1QT1JUX1NUQVRJQ19TUEFDRSArIGl0LmdldENhbm9uaWNhbE5hbWUoKSArIE1lZGlhdG9yLklNUE9SVF9XSUxEQ0FSRH0uZWFjaHsgZ3Jvb3Z5LmV4ZWN1dGUoaXQpIH0KKyAgICAgICAgaW1wb3J0cy5nZXRGaWVsZENsYXNzZXMoKS5jb2xsZWN0IHsgTWVkaWF0b3IuSU1QT1JUX1NUQVRJQ19TUEFDRSArIGl0LmdldENhbm9uaWNhbE5hbWUoKSArIE1lZGlhdG9yLklNUE9SVF9XSUxEQ0FSRH0uZWFjaHsgZ3Jvb3Z5LmV4ZWN1dGUoaXQpIH0KIAogICAgICAgICBmaW5hbCBJbnRlcmFjdGl2ZVNoZWxsUnVubmVyIHJ1bm5lciA9IG5ldyBJbnRlcmFjdGl2ZVNoZWxsUnVubmVyKGdyb292eSwgaGFuZGxlUHJvbXB0KQorICAgICAgICBydW5uZXIucmVhZGVyLnNldEhhbmRsZVVzZXJJbnRlcnJ1cHQoZmFsc2UpCisgICAgICAgIHJ1bm5lci5yZWFkZXIuc2V0SGFuZGxlTGl0dGVyYWxOZXh0KGZhbHNlKQogICAgICAgICBydW5uZXIuc2V0RXJyb3JIYW5kbGVyKGhhbmRsZUVycm9yKQogICAgICAgICB0cnkgewogICAgICAgICAgICAgZmluYWwgRmlsZUhpc3RvcnkgaGlzdG9yeSA9IG5ldyBGaWxlSGlzdG9yeShuZXcgRmlsZShDb25zb2xlRnMuSElTVE9SWV9GSUxFKSkKQEAgLTI4OSw2ICsyOTIsMTMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qKgorICAgICAqIENsZWFycyB0aGUgY29uc29sZSBzY3JlZW4uCisgICAgICovCisgICAgZGVmIGNsZWFyKCkgeworICAgICAgICBpby5vdXQucHJpbnRsbigiXDAzM1tIXDAzM1sySiIpCisgICAgfQorCiAgICAgZGVmIHByaW50UmVzdWx0KGRlZiBvYmplY3QpIHsKICAgICAgICAgZmluYWwgU3RyaW5nIHByb21wdCA9IENvbG9yaXplci5yZW5kZXIoUHJlZmVyZW5jZXMucmVzdWx0UHJvbXB0Q29sb3IsIGJ1aWxkUmVzdWx0UHJvbXB0KCkpCiAgICAgICAgIC8vIGlmIHByZWZlcmVuY2UgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyB0aGVuIGRvbid0IHByaW50IGFueSByZXN1bHQKQEAgLTQ0NSwyMSArNDU1LDIyIEBACiAKICAgICAgICAgSU8gaW8gPSBuZXcgSU8oU3lzdGVtLmluLCBTeXN0ZW0ub3V0LCBTeXN0ZW0uZXJyKQogCi0gICAgICAgIGZpbmFsIENsaUJ1aWxkZXIgY2xpID0gbmV3IENsaUJ1aWxkZXIodXNhZ2U6ICdncmVtbGluLnNoIFtvcHRpb25zXSBbLi4uXScsIGZvcm1hdHRlcjogbmV3IEhlbHBGb3JtYXR0ZXIoKSwgc3RvcEF0Tm9uT3B0aW9uOiBmYWxzZSkKKyAgICAgICAgZmluYWwgQ2xpQnVpbGRlciBjbGkgPSBuZXcgQ2xpQnVpbGRlcigpCisgICAgICAgIGNsaS5zdG9wQXROb25PcHRpb24gPSBmYWxzZQorICAgICAgICBjbGkubmFtZSA9ICJncmVtbGluLnNoIgogCiAgICAgICAgIC8vIG5vdGUgdGhhdCB0aGUgaW5jbHVzaW9uIG9mIC1sIGlzIHJlYWxseSBhIHNldHRpbmcgaGFuZGxlZCBieSBncmVtbGluLnNoIGFuZCBub3QgYnkgQ29uc29sZSBjbGFzcyBpdHNlbGYuCiAgICAgICAgIC8vIGl0IGlzIG1haW5seSBsaXN0ZWQgaGVyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyB3aGVuIHRoZSB1c2VyIHN0YXJ0cyB0aGluZ3MgdXAgd2l0aCAtaAotICAgICAgICBjbGkud2l0aCB7Ci0gICAgICAgICAgICBoKGxvbmdPcHQ6ICdoZWxwJywgIkRpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UiKQotICAgICAgICAgICAgdihsb25nT3B0OiAndmVyc2lvbicsICJEaXNwbGF5IHRoZSB2ZXJzaW9uIikKLSAgICAgICAgICAgIGwoIlNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiBjb21wb25lbnRzIHRoYXQgdXNlIHN0YW5kYXJkIGxvZ2dpbmcgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBDb25zb2xlIikKLSAgICAgICAgICAgIFYobG9uZ09wdDogJ3ZlcmJvc2UnLCAiRW5hYmxlIHZlcmJvc2UgQ29uc29sZSBvdXRwdXQiKQotICAgICAgICAgICAgUShsb25nT3B0OiAncXVpZXQnLCAiU3VwcHJlc3Mgc3VwZXJmbHVvdXMgQ29uc29sZSBvdXRwdXQiKQotICAgICAgICAgICAgRChsb25nT3B0OiAnZGVidWcnLCAiRW5hYmxlZCBkZWJ1ZyBDb25zb2xlIG91dHB1dCIpCi0gICAgICAgICAgICBpKGxvbmdPcHQ6ICdpbnRlcmFjdGl2ZScsIGFyZ05hbWU6ICJTQ1JJUFQgQVJHMSBBUkcyIC4uLiIsIGFyZ3M6IE9wdGlvbi5VTkxJTUlURURfVkFMVUVTLCB2YWx1ZVNlcGFyYXRvcjogJyAnIGFzIGNoYXIsICJFeGVjdXRlIHRoZSBzcGVjaWZpZWQgc2NyaXB0IGFuZCBsZWF2ZSB0aGUgY29uc29sZSBvcGVuIG9uIGNvbXBsZXRpb24iKQotICAgICAgICAgICAgZShsb25nT3B0OiAnZXhlY3V0ZScsIGFyZ05hbWU6ICJTQ1JJUFQgQVJHMSBBUkcyIC4uLiIsIGFyZ3M6IE9wdGlvbi5VTkxJTUlURURfVkFMVUVTLCB2YWx1ZVNlcGFyYXRvcjogJyAnIGFzIGNoYXIsICJFeGVjdXRlIHRoZSBzcGVjaWZpZWQgc2NyaXB0IChTQ1JJUFQgQVJHMSBBUkcyIC4uLikgYW5kIGNsb3NlIHRoZSBjb25zb2xlIG9uIGNvbXBsZXRpb24iKQotICAgICAgICAgICAgQyhsb25nT3B0OiAnY29sb3InLCAiRGlzYWJsZSB1c2Ugb2YgQU5TSSBjb2xvcnMiKQotICAgICAgICB9CisgICAgICAgIGNsaS5oKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdoZWxwJywgIkRpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UiKQorICAgICAgICBjbGkudih0eXBlOiBCb29sZWFuLGxvbmdPcHQ6ICd2ZXJzaW9uJywgIkRpc3BsYXkgdGhlIHZlcnNpb24iKQorICAgICAgICBjbGkubCgiU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIGNvbXBvbmVudHMgdGhhdCB1c2Ugc3RhbmRhcmQgbG9nZ2luZyBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIENvbnNvbGUiKQorICAgICAgICBjbGkuVih0eXBlOiBCb29sZWFuLCBsb25nT3B0OiAndmVyYm9zZScsICJFbmFibGUgdmVyYm9zZSBDb25zb2xlIG91dHB1dCIpCisgICAgICAgIGNsaS5RKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdxdWlldCcsICJTdXBwcmVzcyBzdXBlcmZsdW91cyBDb25zb2xlIG91dHB1dCIpCisgICAgICAgIGNsaS5EKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdkZWJ1ZycsICJFbmFibGVkIGRlYnVnIENvbnNvbGUgb3V0cHV0IikKKyAgICAgICAgY2xpLmkodHlwZTogTGlzdCwgbG9uZ09wdDogJ2ludGVyYWN0aXZlJywgYXJpdHk6ICIxLi4qIiwgYXJnTmFtZTogIlNDUklQVCBBUkcxIEFSRzIgLi4uIiwgIkV4ZWN1dGUgdGhlIHNwZWNpZmllZCBzY3JpcHQgYW5kIGxlYXZlIHRoZSBjb25zb2xlIG9wZW4gb24gY29tcGxldGlvbiIpCisgICAgICAgIGNsaS5lKHR5cGU6IExpc3QsIGxvbmdPcHQ6ICdleGVjdXRlJywgYXJnTmFtZTogIlNDUklQVCBBUkcxIEFSRzIgLi4uIiwgIkV4ZWN1dGUgdGhlIHNwZWNpZmllZCBzY3JpcHQgKFNDUklQVCBBUkcxIEFSRzIgLi4uKSBhbmQgY2xvc2UgdGhlIGNvbnNvbGUgb24gY29tcGxldGlvbiIpCisgICAgICAgIGNsaS5DKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdjb2xvcicsICJEaXNhYmxlIHVzZSBvZiBBTlNJIGNvbG9ycyIpCisKICAgICAgICAgT3B0aW9uQWNjZXNzb3Igb3B0aW9ucyA9IGNsaS5wYXJzZShhcmdzKQogCiAgICAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKQEAgLTUxNyw3ICs1MjgsNyBAQAogICAgICAgICAgICAgICAgIGRlZiBwYXJzZWRTZXQgPSBbXQogICAgICAgICAgICAgICAgIGZvciAoaXg7IGl4IDwgbm9ybWFsaXplZEFyZ3MubGVuZ3RoOyBpeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBkbyBub3RoaW5nIGFzIHRoZXJlJ3Mgbm8gYXJndW1lbnRzIHRvIHRoZSBvcHRpb24gb3IgaXQncyB0aGUgc3RhcnQgb2YgYSBuZXcgb3B0aW9uCi0gICAgICAgICAgICAgICAgICAgIGlmIChjbGkub3B0aW9ucy5vcHRpb25zLmFueSB7ICItIiArIGl0Lm9wdCA9PSBub3JtYWxpemVkQXJnc1tpeF0gfHwgIi0tIiArIGl0LmxvbmdPcHQgPT0gbm9ybWFsaXplZEFyZ3NbaXhdIH0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaS5zYXZlZFR5cGVPcHRpb25zLnZhbHVlcygpLmFueSB7ICItIiArIGl0Lm9wdCA9PSBub3JtYWxpemVkQXJnc1tpeF0gfHwgIi0tIiArIGl0LmxvbmdPcHQgPT0gbm9ybWFsaXplZEFyZ3NbaXhdIH0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvbGxiYWNrIHRoZSBjb3VudGVyIG5vdyB0aGF0IHdlIGhpdCB0aGUgbmV4dCBvcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIGl4LS0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9HcmVtbGluR3Jvb3Z5c2guZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvR3JlbWxpbkdyb292eXNoLmdyb292eQppbmRleCBmNWZhMTZhLi45NjAxNWRiIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9HcmVtbGluR3Jvb3Z5c2guZ3Jvb3Z5CisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL0dyZW1saW5Hcm9vdnlzaC5ncm9vdnkKQEAgLTE4LDkgKzE4LDEzIEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlCiAKK2ltcG9ydCBncm9vdnkudHJhbnNmb3JtLlRocmVhZEludGVycnVwdAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5HcmVtbGluU2V0Q29tbWFuZAoraW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkuY29udHJvbC5Db21waWxlckNvbmZpZ3VyYXRpb24KK2ltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LmNvbnRyb2wuY3VzdG9taXplcnMuQVNUVHJhbnNmb3JtYXRpb25DdXN0b21pemVyCiBpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC5Db21tYW5kCiBpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC5Hcm9vdnlzaAoraW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuSU8KIGltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLlBhcnNlQ29kZQogaW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuUGFyc2VyCiBpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC51dGlsLkNvbW1hbmRBcmd1bWVudFBhcnNlcgpAQCAtMzMsOCArMzcsMTIgQEAKIGNsYXNzIEdyZW1saW5Hcm9vdnlzaCBleHRlbmRzIEdyb292eXNoIHsKIAogICAgIHByaXZhdGUgZmluYWwgTWVkaWF0b3IgbWVkaWF0b3IKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBDb21waWxlckNvbmZpZ3VyYXRpb24gY29tcGlsZXJDb25maWcgPSBuZXcgQ29tcGlsZXJDb25maWd1cmF0aW9uKENvbXBpbGVyQ29uZmlndXJhdGlvbi5ERUZBVUxUKSB7eworICAgICAgICBhZGRDb21waWxhdGlvbkN1c3RvbWl6ZXJzKG5ldyBBU1RUcmFuc2Zvcm1hdGlvbkN1c3RvbWl6ZXIoVGhyZWFkSW50ZXJydXB0LmNsYXNzKSkKKyAgICB9fQogCi0gICAgcHVibGljIEdyZW1saW5Hcm9vdnlzaChmaW5hbCBNZWRpYXRvciBtZWRpYXRvcikgeworICAgIHB1YmxpYyBHcmVtbGluR3Jvb3Z5c2goZmluYWwgTWVkaWF0b3IgbWVkaWF0b3IsIGZpbmFsIElPIGlvKSB7CisgICAgICAgIHN1cGVyKGlvLCBjb21waWxlckNvbmZpZykKICAgICAgICAgdGhpcy5tZWRpYXRvciA9IG1lZGlhdG9yCiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9QbHVnZ2VkSW4uZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvUGx1Z2dlZEluLmdyb292eQppbmRleCBlOGEzYjhhLi5mYjg3Zjc5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9QbHVnZ2VkSW4uZ3Jvb3Z5CisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL1BsdWdnZWRJbi5ncm9vdnkKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmNvbnNvbGUKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5QcmVmZXJlbmNlczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5CaW5kaW5nc0N1c3RvbWl6ZXIKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5HcmVtbGluUGx1Z2luCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuSW1wb3J0Q3VzdG9taXplcgpAQCAtMTAwLDYgKzEwMSwxNCBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHZvaWQgZXJyUHJpbnRsbihmaW5hbCBTdHJpbmcgbGluZSkgeworICAgICAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy53YXJuaW5ncykgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlvLmVyci5wcmludGxuKCJbd2Fybl0gIiArIGxpbmUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIGRlZiA8VD4gVCBleGVjdXRlKGZpbmFsIFN0cmluZyBsaW5lKSB7CiAgICAgICAgICAgICByZXR1cm4gKFQpIHNoZWxsLmV4ZWN1dGUobGluZSkKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvUHJlZmVyZW5jZXMuZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvUHJlZmVyZW5jZXMuZ3Jvb3Z5CmluZGV4IDIyZjVmNzQuLmQ4YzFhZmUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL1ByZWZlcmVuY2VzLmdyb292eQorKysgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9QcmVmZXJlbmNlcy5ncm9vdnkKQEAgLTg5LDYgKzg5LDEwIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBCb29sZWFuIFBSRUZfQ09MT1JTX0RFRkFVTFQgPSB0cnVlOwogICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjb2xvcnMgPSBQUkVGX0NPTE9SU19ERUZBVUxUCiAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX1dBUk5JTkdTID0gIndhcm5pbmdzIgorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQm9vbGVhbiBQUkVGX1dBUk5JTkdTX0RFRkFVTFQgPSB0cnVlCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIHdhcm5pbmdzID0gUFJFRl9XQVJOSU5HU19ERUZBVUxUCisKICAgICBwdWJsaWMgc3RhdGljIHZvaWQgZXhwYW5kb01hZ2ljKCkgewogCiAgICAgICAgIC8vIE92ZXJyaWRlIGFsbCBHcm9vdnlTSCBQcmVmZXJlbmNlIG1ldGhvZHMKQEAgLTIzNiw3ICsyNDAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnMgPSBCb29sZWFuLnZhbHVlT2YoZXZ0Lm5ld1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gIGVsc2UgaWYgKGV2dC5rZXkgPT0gUFJFRl9XQVJOSU5HUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGV2dC5uZXdWYWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncyA9IEJvb2xlYW4udmFsdWVPZihTVE9SRS5nZXQoUFJFRl9XQVJOSU5HUywgUFJFRl9XQVJOSU5HU19ERUZBVUxULnRvU3RyaW5nKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzID0gQm9vbGVhbi52YWx1ZU9mKGV2dC5uZXdWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pCiAKQEAgLTI5Miw1ICszMDMsNyBAQAogICAgICAgICByZXN1bHRQcm9tcHQgPSAgU1RPUkUuZ2V0KFBSRUZfUkVTVUxUX1BST01QVCwgUFJFRl9SRVNVTFRfUFJPTVBUX0RFRkFVTFQpCiAKICAgICAgICAgY29sb3JzID0gIEJvb2xlYW4udmFsdWVPZihTVE9SRS5nZXQoUFJFRl9DT0xPUlMsIFBSRUZfQ09MT1JTX0RFRkFVTFQudG9TdHJpbmcoKSkpCisKKyAgICAgICAgd2FybmluZ3MgPSAgQm9vbGVhbi52YWx1ZU9mKFNUT1JFLmdldChQUkVGX1dBUk5JTkdTLCBQUkVGX1dBUk5JTkdTX0RFRkFVTFQudG9TdHJpbmcoKSkpCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5ncm9vdnkgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9jb21tYW5kcy9DbHNDb21tYW5kLmdyb292eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjFlMGM0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5ncm9vdnkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLk1lZGlhdG9yCitpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC5Db21tYW5kU3VwcG9ydAoraW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuR3Jvb3Z5c2gKKworLyoqCisgKiBDbGVhciB0aGUgY29uc29sZS4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK2NsYXNzIENsc0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kU3VwcG9ydCB7CisKKyAgICBwcml2YXRlIGZpbmFsIE1lZGlhdG9yIG1lZGlhdG9yCisKKyAgICBwdWJsaWMgQ2xzQ29tbWFuZChmaW5hbCBHcm9vdnlzaCBzaGVsbCwgZmluYWwgTWVkaWF0b3IgbWVkaWF0b3IpIHsKKyAgICAgICAgc3VwZXIoc2hlbGwsICI6Y2xzIiwgIjpDIikKKyAgICAgICAgdGhpcy5tZWRpYXRvciA9IG1lZGlhdG9yCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgZGVmIE9iamVjdCBleGVjdXRlKGZpbmFsIExpc3Q8U3RyaW5nPiBhcmd1bWVudHMpIHsKKyAgICAgICAgbWVkaWF0b3IuY29uc29sZS5jbGVhcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0RyaXZlckdyZW1saW5QbHVnaW4uamF2YSBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyR3JlbWxpblBsdWdpbi5qYXZhCmluZGV4IGQ2ZTY3YTYuLjgwYTc4YWIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyR3JlbWxpblBsdWdpbi5qYXZhCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyR3JlbWxpblBsdWdpbi5qYXZhCkBAIC0zNiw2ICszNiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkRyaXZlclJlbW90ZVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMWQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMWQwOwpAQCAtODUsNiArODYsNyBAQAogICAgICAgICAgICAgICAgICAgICBHcnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMC5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBKc29uQnVpbGRlckdyeW9TZXJpYWxpemVyLmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVGV4dFNlcmlhbGl6ZXIuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25FeGNlcHRpb24uY2xhc3MsCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0RyaXZlclJlbW90ZUFjY2VwdG9yLmphdmEgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0RyaXZlclJlbW90ZUFjY2VwdG9yLmphdmEKaW5kZXggOWE0YmY1Ni4uZTg0OGM2OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9Ecml2ZXJSZW1vdGVBY2NlcHRvci5qYXZhCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyUmVtb3RlQWNjZXB0b3IuamF2YQpAQCAtMjEsMjcgKzIxLDI4IEBACiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLmV4Y2VwdGlvbi5FeGNlcHRpb25VdGlsczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXF1ZXN0T3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXN1bHQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0U2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5leGNlcHRpb24uUmVzcG9uc2VFeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZVN0YXR1c0NvZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuY29uc29sZS5HcmVtbGluU2hlbGxFbnZpcm9ubWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5jb25zb2xlLlJlbW90ZUFjY2VwdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLmNvbnNvbGUuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuRWxlbWVudEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuR3JlbWxpbjsKIAogaW1wb3J0IGphdmF4LnNlY3VyaXR5LnNhc2wuU2FzbEV4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLmlvLkZpbGU7CiBpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuVVVJRDsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uU3RyZWFtOwogCkBAIC01NCw2ICs1NSw3IEBACiAgKi8KIHB1YmxpYyBjbGFzcyBEcml2ZXJSZW1vdGVBY2NlcHRvciBpbXBsZW1lbnRzIFJlbW90ZUFjY2VwdG9yIHsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT19USU1FT1VUID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VSX0FHRU5UID0gIkdyZW1saW4gQ29uc29sZS8iICsgR3JlbWxpbi52ZXJzaW9uKCk7CiAKICAgICBwcml2YXRlIENsdXN0ZXIgY3VycmVudENsdXN0ZXI7CiAgICAgcHJpdmF0ZSBDbGllbnQgY3VycmVudENsaWVudDsKQEAgLTE3Miw3ICsxNzQsOSBAQAogICAgICAgICAgICAgZmluYWwgT3B0aW9uYWw8UmVzcG9uc2VFeGNlcHRpb24+IGlubmVyID0gZmluZFJlc3BvbnNlRXhjZXB0aW9uKGV4KTsKICAgICAgICAgICAgIGlmIChpbm5lci5pc1ByZXNlbnQoKSkgewogICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlRXhjZXB0aW9uIHJlc3BvbnNlRXhjZXB0aW9uID0gaW5uZXIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlRXhjZXB0aW9uLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpID09IFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0VSSUFMSVpBVElPTikKKyAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VFeGNlcHRpb24uZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9USU1FT1VUKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZW1vdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiJXMgLSB0cnkgaW5jcmVhc2luZyB0aGUgdGltZW91dCB3aXRoIHRoZSA6cmVtb3RlIGNvbW1hbmQiLCByZXNwb25zZUV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlRXhjZXB0aW9uLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpID09IFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0VSSUFMSVpBVElPTikKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbW90ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXJ2ZXIgY291bGQgbm90IHNlcmlhbGl6ZSB0aGUgcmVzdWx0IHJlcXVlc3RlZC4gU2VydmVyIGVycm9yIC0gJXMuIE5vdGUgdGhhdCB0aGUgY2xhc3MgbXVzdCBiZSBzZXJpYWxpemFibGUgYnkgdGhlIGNsaWVudCBhbmQgc2VydmVyIGZvciBwcm9wZXIgb3BlcmF0aW9uLiIsIHJlc3BvbnNlRXhjZXB0aW9uLmdldE1lc3NhZ2UoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VFeGNlcHRpb24uZ2V0UmVtb3RlU3RhY2tUcmFjZSgpLm9yRWxzZShudWxsKSk7CkBAIC0yMDIsMTAgKzIwNiwyOSBAQAogCiAgICAgcHJpdmF0ZSBMaXN0PFJlc3VsdD4gc2VuZChmaW5hbCBTdHJpbmcgZ3JlbWxpbikgdGhyb3dzIFNhc2xFeGNlcHRpb24gewogICAgICAgICB0cnkgewotICAgICAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJzID0gdGhpcy5jdXJyZW50Q2xpZW50LnN1Ym1pdEFzeW5jKGdyZW1saW4sIGFsaWFzZXMsIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpLmdldCgpOwotICAgICAgICAgICAgcmV0dXJuIHRpbWVvdXQgPiBOT19USU1FT1VUID8gcnMuYWxsKCkuZ2V0KHRpbWVvdXQsIFRpbWVVbml0Lk1JTExJU0VDT05EUykgOiBycy5hbGwoKS5nZXQoKTsKLSAgICAgICAgfSBjYXRjaChUaW1lb3V0RXhjZXB0aW9uIGlnbm9yZWQpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlJlcXVlc3QgdGltZWQgb3V0IHdoaWxlIHByb2Nlc3NpbmcgLSBpbmNyZWFzZSB0aGUgdGltZW91dCB3aXRoIHRoZSA6cmVtb3RlIGNvbW1hbmQiKTsKKyAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RPcHRpb25zLkJ1aWxkZXIgb3B0aW9ucyA9IFJlcXVlc3RPcHRpb25zLmJ1aWxkKCk7CisgICAgICAgICAgICBhbGlhc2VzLmZvckVhY2gob3B0aW9uczo6YWRkQWxpYXMpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPiBOT19USU1FT1VUKQorICAgICAgICAgICAgICAgIG9wdGlvbnMudGltZW91dCh0aW1lb3V0KTsKKworICAgICAgICAgICAgb3B0aW9ucy51c2VyQWdlbnQoVVNFUl9BR0VOVCk7CisKKyAgICAgICAgICAgIGZpbmFsIFJlc3VsdFNldCBycyA9IHRoaXMuY3VycmVudENsaWVudC5zdWJtaXQoZ3JlbWxpbiwgb3B0aW9ucy5jcmVhdGUoKSk7CisgICAgICAgICAgICBmaW5hbCBMaXN0PFJlc3VsdD4gcmVzdWx0cyA9IHJzLmFsbCgpLmdldCgpOworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzID0gcnMuc3RhdHVzQXR0cmlidXRlcygpLmdldE5vdyhudWxsKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGFuZCBwcmludCB3YXJuaW5ncworICAgICAgICAgICAgaWYgKG51bGwgIT0gc3RhdHVzQXR0cmlidXRlcyAmJiBzdGF0dXNBdHRyaWJ1dGVzLmNvbnRhaW5zS2V5KFRva2Vucy5TVEFUVVNfQVRUUklCVVRFX1dBUk5JTkdTKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCB3YXJuaW5nQXR0cmlidXRlT2JqZWN0ID0gc3RhdHVzQXR0cmlidXRlcy5nZXQoVG9rZW5zLlNUQVRVU19BVFRSSUJVVEVfV0FSTklOR1MpOworICAgICAgICAgICAgICAgIGlmICh3YXJuaW5nQXR0cmlidXRlT2JqZWN0IGluc3RhbmNlb2YgTGlzdCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKE9iamVjdCB3YXJuaW5nTGlzdEl0ZW0gOiAoTGlzdDw/Pil3YXJuaW5nQXR0cmlidXRlT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxFbnZpcm9ubWVudC5lcnJQcmludGxuKFN0cmluZy52YWx1ZU9mKHdhcm5pbmdMaXN0SXRlbSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNoZWxsRW52aXJvbm1lbnQuZXJyUHJpbnRsbihTdHJpbmcudmFsdWVPZih3YXJuaW5nQXR0cmlidXRlT2JqZWN0KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIC8vIGhhbmRsZSBzZWN1cml0eSBlcnJvciBhcy1pcyBhbmQgdW53cmFwcGVkCiAgICAgICAgICAgICBmaW5hbCBPcHRpb25hbDxUaHJvd2FibGU+IHRocm93YWJsZSAgPSBTdHJlYW0ub2YoRXhjZXB0aW9uVXRpbHMuZ2V0VGhyb3dhYmxlcyhlKSkuZmlsdGVyKHQgLT4gdCBpbnN0YW5jZW9mIFNhc2xFeGNlcHRpb24pLmZpbmRGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5wcm9wZXJ0aWVzIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMTdjYjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9jb21tYW5kcy9DbHNDb21tYW5kLnByb3BlcnRpZXMKQEAgLTAsMCArMSwyMCBAQAorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyMgdW5kZXIgdGhlIExpY2Vuc2UuCisKK2NvbW1hbmQuZGVzY3JpcHRpb249Q2xlYXIgdGhlIHNjcmVlbi4KK2NvbW1hbmQudXNhZ2U9Citjb21tYW5kLmhlbHA9Q2xlYXIgdGhlIHNjcmVlbi4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UKaW5kZXggNzhhZTU3MC4uZjNkYTRmNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL3N0YXRpYy9MSUNFTlNFCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTElDRU5TRQpAQCAtMjA5LDcgKzIwOSw3IEBACiAKICAgICAgamNhYmktbG9nIChjb20uamNhYmk6amNhYmktbG9nOjAuMTQgLSBodHRwOi8vd3d3LmpjYWJpLmNvbS9qY2FiaS1sb2cpIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9qY2FiaS1sb2cKICAgICAgamNhYmktbWFuaWZlc3RzIDEuMSAoY29tLmpjYWJpOmpjYWJpLW1hbmlmZXN0czoxLjEgLSBodHRwOi8vd3d3LmpjYWJpLmNvbS9qY2FiaS1tYW5pZmVzdHMpIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9qY2FiaS1tYW5pZmVzdHMKLSAgICAgSkxpbmUgKGpsaW5lOmpsaW5lOjIuMTIgLSBodHRwczovL2dpdGh1Yi5jb20vamxpbmUvamxpbmUyKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamxpbmUyCisgICAgIEpMaW5lIChqbGluZTpqbGluZToyLjE0LjYgLSBodHRwczovL2dpdGh1Yi5jb20vamxpbmUvamxpbmUyKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamxpbmUyCiAgICAgIEtyeW8gKGNvbS5lc290ZXJpY3NvZnR3YXJlOmtyeW8tc2hhZGVkOjMuMC4zIC0gaHR0cHM6Ly9naXRodWIuY29tL0Vzb3RlcmljU29mdHdhcmUva3J5bykKICAgICAgICAtIHNoYWRlZCBpbiBncmVtbGluLXNoYWRlZCB0byBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQua3J5bwogICAgICAgIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9rcnlvCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vc3RhdGljL05PVElDRSBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCmluZGV4IDQwNjk4NWYuLmEzZWNjNDcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCkBAIC0xOCw3ICsxOCw3IEBACiBDb3B5cmlnaHQgKGMpIDIwMDggQWxleGFuZGVyIEJlaWRlciAmIFN0ZXBoZW4gUC4gTW9yc2UuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQXBhY2hlIEdyb292eSAyLjQuMTYgKEFMIEFTRikKK0FwYWNoZSBHcm9vdnkgMi41LjcgKEFMIEFTRikKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogVGhpcyBwcm9kdWN0IGluY2x1ZGVzL3VzZXMgQU5UTFIgKGh0dHA6Ly93d3cuYW50bHIyLm9yZy8pCiBkZXZlbG9wZWQgYnkgVGVyZW5jZSBQYXJyIDE5ODktMjAwNgpAQCAtNDgsNyArNDgsMTkgQEAKIENvcHlyaWdodCAoYykgMjAxMCwgVGhlIEpBVkFUVVBMRVMgdGVhbSAoaHR0cDovL3d3dy5qYXZhdHVwbGVzLm9yZykKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1OZXR0eSA0LjAuNTYKK0hQUEMgMC43LjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSFBQQyBib3Jyb3dlZCBjb2RlLCBpZGVhcyBvciBib3RoIGZyb206CisKKyAqIEFwYWNoZSBMdWNlbmUsIGh0dHA6Ly9sdWNlbmUuYXBhY2hlLm9yZy8KKyAgIChBcGFjaGUgbGljZW5zZSkKKyAqIEZhc3R1dGlsLCBodHRwOi8vZmFzdHV0aWwuZGkudW5pbWkuaXQvCisgICAoQXBhY2hlIGxpY2Vuc2UpCisgKiBLb2xvYm9rZSwgaHR0cHM6Ly9naXRodWIuY29tL09wZW5IRlQvS29sb2Jva2UKKyAgIChBcGFjaGUgbGljZW5zZSkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOZXR0eSA0LjEuNDIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ29weXJpZ2h0IDIwMTQgVGhlIE5ldHR5IFByb2plY3QKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9HZXBoaVJlbW90ZUFjY2VwdG9ySW50ZWdyYXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9HZXBoaVJlbW90ZUFjY2VwdG9ySW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IDlhMWM1NDEuLmIxZjhlZmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvR2VwaGlSZW1vdGVBY2NlcHRvckludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0dlcGhpUmVtb3RlQWNjZXB0b3JJbnRlZ3JhdGVUZXN0LmphdmEKQEAgLTU1LDcgKzU1LDcgQEAKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGNsYXNzIEdlcGhpUmVtb3RlQWNjZXB0b3JJbnRlZ3JhdGVUZXN0IHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcm9vdnlzaCBncm9vdnlzaCA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobmV3IE1lZGlhdG9yKG51bGwpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcm9vdnlzaCBncm9vdnlzaCA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobmV3IE1lZGlhdG9yKG51bGwpLCBuZXcgSU8oKSk7CiAgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHBvcnQgPSBwaWNrT3BlblBvcnQoKTsKIAogICAgIHByaXZhdGUgR2VwaGlSZW1vdGVBY2NlcHRvciBhY2NlcHRvcjsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvTW9ja0dyb292eUdyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEgYi9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL01vY2tHcm9vdnlHcmVtbGluU2hlbGxFbnZpcm9ubWVudC5qYXZhCmluZGV4IDYxODRiNTQuLmUyNGI3N2MgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvTW9ja0dyb292eUdyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9Nb2NrR3Jvb3Z5R3JlbWxpblNoZWxsRW52aXJvbm1lbnQuamF2YQpAQCAtNTgsNiArNTgsMTQgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBlcnJQcmludGxuKGZpbmFsIFN0cmluZyBsaW5lKSB7CisgICAgICAgIGlmIChudWxsID09IGlvKQorICAgICAgICAgICAgZ3Jvb3Z5c2guZ2V0SW8oKS5lcnIucHJpbnRsbigiW3dhcm5dIiArIGxpbmUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpby5lcnIucHJpbnRsbigiW3dhcm5dIiArIGxpbmUpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyA8VD4gVCBleGVjdXRlKGZpbmFsIFN0cmluZyBsaW5lKSB7CiAgICAgICAgIHJldHVybiAoVCkgZ3Jvb3Z5c2guZXhlY3V0ZShsaW5lKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvZ3JlbWxpbi1zZXJ2ZXItaW50ZWdyYXRpb24ueWFtbCBiL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCmluZGV4IDdlNTgwNDUuLjM5MDM3NTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCkBAIC0yNSwxMCArMjUsMTAgQEAKICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguanNyMjIzLlRpbmtlckdyYXBoR3JlbWxpblBsdWdpbjoge30sCiAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5JbXBvcnRHcmVtbGluUGx1Z2luOiB7Y2xhc3NJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGhdLCBtZXRob2RJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGgjKl19fX19CiBzZXJpYWxpemVyczoKLSAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKLSAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSB9fSAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYxLjAranNvbgotICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYyZDBdICB9fSAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYyLjAranNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSB9fSAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12MS4wK2pzb24KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAgIyBhcHBsaWNhdGlvbi9qc29uLGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjJkMF0gfX0gICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYyLjAranNvbgogcHJvY2Vzc29yczoKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc2Vzc2lvbi5TZXNzaW9uT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBzZXNzaW9uVGltZW91dDogMjg4MDAwMDAgfX0KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3AudHJhdmVyc2FsLlRyYXZlcnNhbE9wUHJvY2Vzc29yLCBjb25maWc6IHsgY2FjaGVFeHBpcmF0aW9uVGltZTogNjAwMDAwLCBjYWNoZU1heFNpemU6IDEwMDAgfX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9yZW1vdGUueWFtbCBiL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9yZW1vdGUueWFtbAppbmRleCA5YmIyN2M3Li42OGU0ODJmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvcmVtb3RlLnlhbWwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL3JlbW90ZS55YW1sCkBAIC0xNyw0ICsxNyw0IEBACiAKIGhvc3RzOiBbbG9jYWxob3N0XQogcG9ydDogNDU5NDAKLXNlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorc2VyaWFsaXplcjogeyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9wb20ueG1sIGIvZ3JlbWxpbi1jb3JlL3BvbS54bWwKaW5kZXggZjliNzg5Zi4uZjBmMzA1NSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3BvbS54bWwKKysrIGIvZ3JlbWxpbi1jb3JlL3BvbS54bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tY29yZTwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gQ29yZTwvbmFtZT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0Fic3RyYWN0R3JlbWxpblNjcmlwdEVuZ2luZUZhY3RvcnkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0Fic3RyYWN0R3JlbWxpblNjcmlwdEVuZ2luZUZhY3RvcnkuamF2YQppbmRleCA2OWY0ZjczLi5lNDhmOWUxIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9BYnN0cmFjdEdyZW1saW5TY3JpcHRFbmdpbmVGYWN0b3J5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvQWJzdHJhY3RHcmVtbGluU2NyaXB0RW5naW5lRmFjdG9yeS5qYXZhCkBAIC01Miw3ICs1Miw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyBnZXRFbmdpbmVOYW1lKCkgeworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RW5naW5lTmFtZSgpIHsKICAgICAgICAgcmV0dXJuIGVuZ2luZU5hbWU7CiAgICAgfQogCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyBnZXRMYW5ndWFnZU5hbWUoKSB7CisgICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRMYW5ndWFnZU5hbWUoKSB7CiAgICAgICAgIHJldHVybiBsYW5ndWFnZU5hbWU7CiAgICAgfQogCkBAIC04OSwxMyArODksMTMgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgT2JqZWN0IGdldFBhcmFtZXRlcihmaW5hbCBTdHJpbmcga2V5KSB7CiAgICAgICAgIGlmIChrZXkuZXF1YWxzKFNjcmlwdEVuZ2luZS5FTkdJTkUpKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmdpbmVOYW1lKCk7CisgICAgICAgICAgICByZXR1cm4gZW5naW5lTmFtZTsKICAgICAgICAgfSBlbHNlIGlmIChrZXkuZXF1YWxzKFNjcmlwdEVuZ2luZS5FTkdJTkVfVkVSU0lPTikpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVuZ2luZVZlcnNpb24oKTsKICAgICAgICAgfSBlbHNlIGlmIChrZXkuZXF1YWxzKFNjcmlwdEVuZ2luZS5OQU1FKSkgewogICAgICAgICAgICAgcmV0dXJuIGVuZ2luZU5hbWU7CiAgICAgICAgIH0gZWxzZSBpZiAoa2V5LmVxdWFscyhTY3JpcHRFbmdpbmUuTEFOR1VBR0UpKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMYW5ndWFnZU5hbWUoKTsKKyAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZU5hbWU7CiAgICAgICAgIH0gZWxzZSBpZiAoa2V5LmVxdWFscyhTY3JpcHRFbmdpbmUuTEFOR1VBR0VfVkVSU0lPTikpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExhbmd1YWdlVmVyc2lvbigpOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0NvcmVHcmVtbGluUGx1Z2luLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9Db3JlR3JlbWxpblBsdWdpbi5qYXZhCmluZGV4IDM2MmU4ZjcuLmE3YzQ3YmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0NvcmVHcmVtbGluUGx1Z2luLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvQ29yZUdyZW1saW5QbHVnaW4uamF2YQpAQCAtMzMsNiArMzMsNyBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSW1wb3J0Q3VzdG9taXplciBncmVtbGluQ29yZSA9IERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkKICAgICAgICAgICAgIC5hZGRDbGFzc0ltcG9ydHMoQ29yZUltcG9ydHMuZ2V0Q2xhc3NJbXBvcnRzKCkpCisgICAgICAgICAgICAuYWRkRmllbGRJbXBvcnRzKENvcmVJbXBvcnRzLmdldEZpZWxkSW1wb3J0cygpKQogICAgICAgICAgICAgLmFkZEVudW1JbXBvcnRzKENvcmVJbXBvcnRzLmdldEVudW1JbXBvcnRzKCkpCiAgICAgICAgICAgICAuYWRkTWV0aG9kSW1wb3J0cyhDb3JlSW1wb3J0cy5nZXRNZXRob2RJbXBvcnRzKCkpLmNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9Db3JlSW1wb3J0cy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvQ29yZUltcG9ydHMuamF2YQppbmRleCBlMjk4OTUxLi5jYzc4ODFjIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9Db3JlSW1wb3J0cy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0NvcmVJbXBvcnRzLmphdmEKQEAgLTQyLDI0ICs0MiwzMSBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5idWxrbG9hZGluZy5JbmNyZW1lbnRhbEJ1bGtMb2FkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmJ1bGtsb2FkaW5nLk9uZVRpbWVCdWxrTG9hZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbG9uZS5DbG9uZVZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcuY29ubmVjdGVkLkNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW07CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcucGVlcnByZXNzdXJlLkNsdXN0ZXJDb3VudE1hcFJlZHVjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuY2x1c3RlcmluZy5wZWVycHJlc3N1cmUuQ2x1c3RlclBvcHVsYXRpb25NYXBSZWR1Y2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcucGVlcnByZXNzdXJlLlBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW07CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnJhbmtpbmcucGFnZXJhbmsuUGFnZVJhbmtNYXBSZWR1Y2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnJhbmtpbmcucGFnZXJhbmsuUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aC5TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuTWVtb3J5VHJhdmVyc2FsU2lkZUVmZmVjdHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuQ29ubmVjdGVkQ29tcG9uZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGFnZVJhbms7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QZWVyUHJlc3N1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5TaG9ydGVzdFBhdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlZlcnRleFByb2dyYW1TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5HcmFwaEZpbHRlclN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQmluZGluZ3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmFuc2xhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlOwpAQCAtNjcsMTEgKzc0LDEzIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uQ29ubmVjdGl2ZVN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FbGVtZW50SWRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRXZlbnRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uSGFsdGVkVHJhdmVyc2VyU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlBhcnRpdGlvblN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZmluYWxpemF0aW9uLlJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmZpbmFsaXphdGlvbi5NYXRjaEFsZ29yaXRobVN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZmluYWxpemF0aW9uLlByb2ZpbGVTdHJhdGVneTsKQEAgLTEzMyw2ICsxNDIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlBhaXI7CiAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXI7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwpAQCAtMTQ3LDYgKzE1Nyw3IEBACiBwdWJsaWMgZmluYWwgY2xhc3MgQ29yZUltcG9ydHMgewogCiAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU2V0PENsYXNzPiBDTEFTU19JTVBPUlRTID0gbmV3IExpbmtlZEhhc2hTZXQ8PigpOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFNldDxGaWVsZD4gRklFTERfSU1QT1JUUyA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTZXQ8TWV0aG9kPiBNRVRIT0RfSU1QT1JUUyA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTZXQ8RW51bT4gRU5VTV9JTVBPUlRTID0gbmV3IExpbmtlZEhhc2hTZXQ8PigpOwogCkBAIC0xNzgsMTQgKzE4OSwxNiBAQAogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChUcmF2ZXJzYWxPcHRpb25QYXJlbnQuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljay5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFAuY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChUZXh0UC5jbGFzcyk7CisgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFdpdGhPcHRpb25zLmNsYXNzKTsKICAgICAgICAgLy8gcmVtb3RlCiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFJlbW90ZUNvbm5lY3Rpb24uY2xhc3MpOwotICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChSZW1vdGVHcmFwaC5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKEVtcHR5R3JhcGguY2xhc3MpOwogICAgICAgICAvLyBpbwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChHcmFwaFJlYWRlci5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKEdyYXBoV3JpdGVyLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoSW8uY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChJTy5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKElvQ29yZS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFN0b3JhZ2UuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChHcmFwaE1MSW8uY2xhc3MpOwpAQCAtMjQxLDYgKzI1NCw3IEBACiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKENvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3kuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChMYW1iZGFSZXN0cmljdGlvblN0cmF0ZWd5LmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUmVhZE9ubHlTdHJhdGVneS5jbGFzcyk7CisgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFN0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3kuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChFZGdlTGFiZWxWZXJpZmljYXRpb25TdHJhdGVneS5jbGFzcyk7CiAgICAgICAgIC8vIGdyYXBoIHRyYXZlcnNhbApAQCAtMjU1LDYgKzI2OSw4IEBACiAgICAgICAgIC8vIGdyYXBoIGNvbXB1dGVyCiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKENvbXB1dGVyLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoQ29tcHV0ZXJSZXN1bHQuY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDb25uZWN0ZWRDb21wb25lbnQuY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoR3JhcGhDb21wdXRlci5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKE1lbW9yeS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFZlcnRleFByb2dyYW0uY2xhc3MpOwpAQCAtMjY3LDkgKzI4MywxMyBAQAogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDbHVzdGVyQ291bnRNYXBSZWR1Y2UuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDbHVzdGVyUG9wdWxhdGlvbk1hcFJlZHVjZS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKE1lbW9yeVRyYXZlcnNhbFNpZGVFZmZlY3RzLmNsYXNzKTsKKyAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUGVlclByZXNzdXJlLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbS5jbGFzcyk7CisgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFBhZ2VSYW5rLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUGFnZVJhbmtNYXBSZWR1Y2UuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChQYWdlUmFua1ZlcnRleFByb2dyYW0uY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChTaG9ydGVzdFBhdGguY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoR3JhcGhGaWx0ZXJTdHJhdGVneS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFRyYXZlcnNhbFZlcnRleFByb2dyYW0uY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MpOwpAQCAtMjg2LDYgKzMwNiw3IEBACiAgICAgICAgIHVuaXF1ZU1ldGhvZHMoSW9Db3JlLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKFAuY2xhc3MpLmZvckVhY2goTUVUSE9EX0lNUE9SVFM6OmFkZCk7CiAgICAgICAgIHVuaXF1ZU1ldGhvZHMoQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOworICAgICAgICB1bmlxdWVNZXRob2RzKFRleHRQLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKF9fLmNsYXNzKS5maWx0ZXIobSAtPiAhbS5nZXROYW1lKCkuZXF1YWxzKCJfXyIpKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKENvbXB1dGVyLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKFRpbWVVdGlsLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwpAQCAtMzIzLDYgKzM0NCwxMCBAQAogICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KEVOVU1fSU1QT1JUUyk7CiAgICAgfQogCisgICAgcHVibGljIHN0YXRpYyBTZXQ8RmllbGQ+IGdldEZpZWxkSW1wb3J0cygpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChGSUVMRF9JTVBPUlRTKTsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBGaWx0ZXJzIHRvIHVuaXF1ZSBtZXRob2QgbmFtZXMgb24gZWFjaCBjbGFzcy4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9EZWZhdWx0SW1wb3J0Q3VzdG9taXplci5qYXZhCmluZGV4IGY2ZGE5YmYuLjQ1MmZiMmMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXIuamF2YQpAQCAtMTgsNiArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzOwogCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuRmllbGQ7CiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CkBAIC0zNSwyNSArMzYsMzUgQEAKICAgICBwcml2YXRlIGZpbmFsIFNldDxDbGFzcz4gY2xhc3NJbXBvcnRzOwogICAgIHByaXZhdGUgZmluYWwgU2V0PE1ldGhvZD4gbWV0aG9kSW1wb3J0czsKICAgICBwcml2YXRlIGZpbmFsIFNldDxFbnVtPiBlbnVtSW1wb3J0czsKKyAgICBwcml2YXRlIGZpbmFsIFNldDxGaWVsZD4gZmllbGRJbXBvcnRzOwogCiAgICAgcHJpdmF0ZSBEZWZhdWx0SW1wb3J0Q3VzdG9taXplcihmaW5hbCBCdWlsZGVyIGJ1aWxkZXIpIHsKICAgICAgICAgY2xhc3NJbXBvcnRzID0gYnVpbGRlci5jbGFzc0ltcG9ydHM7CiAgICAgICAgIG1ldGhvZEltcG9ydHMgPSBidWlsZGVyLm1ldGhvZEltcG9ydHM7CiAgICAgICAgIGVudW1JbXBvcnRzID0gYnVpbGRlci5lbnVtSW1wb3J0czsKKyAgICAgICAgZmllbGRJbXBvcnRzID0gYnVpbGRlci5maWVsZEltcG9ydHM7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNldDxDbGFzcz4gZ2V0Q2xhc3NJbXBvcnRzKCkgewogICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KGNsYXNzSW1wb3J0cyk7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNldDxNZXRob2Q+IGdldE1ldGhvZEltcG9ydHMoKSB7CiAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVTZXQobWV0aG9kSW1wb3J0cyk7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNldDxFbnVtPiBnZXRFbnVtSW1wb3J0cygpIHsKICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChlbnVtSW1wb3J0cyk7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxGaWVsZD4gZ2V0RmllbGRJbXBvcnRzKCkgeworICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KGZpZWxkSW1wb3J0cyk7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgewogICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKICAgICB9CkBAIC02Miw2ICs3Myw3IEBACiAgICAgICAgIHByaXZhdGUgU2V0PENsYXNzPiBjbGFzc0ltcG9ydHMgPSBuZXcgTGlua2VkSGFzaFNldDw+KCk7CiAgICAgICAgIHByaXZhdGUgU2V0PE1ldGhvZD4gbWV0aG9kSW1wb3J0cyA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKICAgICAgICAgcHJpdmF0ZSBTZXQ8RW51bT4gZW51bUltcG9ydHMgPSBuZXcgTGlua2VkSGFzaFNldDw+KCk7CisgICAgICAgIHByaXZhdGUgU2V0PEZpZWxkPiBmaWVsZEltcG9ydHMgPSBuZXcgTGlua2VkSGFzaFNldDw+KCk7CiAKICAgICAgICAgcHJpdmF0ZSBCdWlsZGVyKCkge30KIApAQCAtMTAwLDYgKzExMiwyNCBAQAogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KIAorICAgICAgICAvKioKKyAgICAgICAgICogQWRkcyBmaWVsZHMgdGhhdCBhcmUgbWVhbnQgdG8gYmUgaW1wb3J0ZWQgc3RhdGljYWxseSB0byB0aGUgZW5naW5lLiBXaGVuIGFkZGluZyBmaWVsZHMgYmUgc3VyZSB0aGF0CisgICAgICAgICAqIHRoZSBjbGFzc2VzIG9mIHRob3NlIGZpZWxkcyBhcmUgYWRkZWQgdG8gdGhlIHtAbGluayAjYWRkQ2xhc3NJbXBvcnRzKENsYXNzW10pfSBvcgorICAgICAgICAgKiB7QGxpbmsgI2FkZENsYXNzSW1wb3J0cyhDb2xsZWN0aW9uKX0uIElmIHRoZXkgYXJlIG5vdCBhZGRlZCB0aGVuIHRoZSBjZXJ0YWluIHtAY29kZSBTY3JpcHRFbmdpbmV9IGluc3RhbmNlcworICAgICAgICAgKiBtYXkgaGF2ZSBwcm9ibGVtcyBpbXBvcnRpbmcgdGhlIG1ldGhvZHMgKGUuZy4gZ3JlbWxpbi1weXRob24pLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEJ1aWxkZXIgYWRkRmllbGRJbXBvcnRzKGZpbmFsIEZpZWxkLi4uIGZpZWxkKSB7CisgICAgICAgICAgICBmaWVsZEltcG9ydHMuYWRkQWxsKEFycmF5cy5hc0xpc3QoZmllbGQpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIE92ZXJsb2FkIHRvIHtAbGluayAjYWRkRmllbGRJbXBvcnRzKEZpZWxkLi4uKX0uCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciBhZGRGaWVsZEltcG9ydHMoZmluYWwgQ29sbGVjdGlvbjxGaWVsZD4gZmllbGRzKSB7CisgICAgICAgICAgICBmaWVsZEltcG9ydHMuYWRkQWxsKGZpZWxkcyk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBBZGRzIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gYmUgaW1wb3J0ZWQgc3RhdGljYWxseSB0byB0aGUgZW5naW5lLiBXaGVuIGFkZGluZyBtZXRob2RzIGJlIHN1cmUgdGhhdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblBsdWdpbi5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblBsdWdpbi5qYXZhCmluZGV4IDk5ZTZiZDkuLjhmMGNlOWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0dyZW1saW5QbHVnaW4uamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9HcmVtbGluUGx1Z2luLmphdmEKQEAgLTMwLDggKzMwLDggQEAKICAgICAvKioKICAgICAgKiBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLiAgVGhpcyBuYW1lIHNob3VsZCBiZSB1bmlxdWUgKHVzZSBhIG5hbWVzcGFjZWQgYXBwcm9hY2gpIGFzIG5hbWluZyBjbGFzaGVzIHdpbGwKICAgICAgKiBwcmV2ZW50IHByb3BlciBtb2R1bGUgb3BlcmF0aW9ucy4gTW9kdWxlcyBkZXZlbG9wZWQgYnkgVGlua2VyUG9wIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAidGlua2VycG9wLiIKLSAgICAgKiBGb3IgZXhhbXBsZSwgVGlua2VyUG9wJ3MgaW1wbGVtZW50YXRpb24gb2YgR2lyYXBoIHdvdWxkIGJlIG5hbWVkICJ0aW5rZXJwb3AuZ2lyYXBoIi4gIElmIEZhY2Vib29rIHdlcmUKLSAgICAgKiB0byBkbyB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGJlIGNhbGxlZCAiZmFjZWJvb2suZ2lyYXBoIi4KKyAgICAgKiBGb3IgZXhhbXBsZSwgVGlua2VyUG9wJ3MgaW1wbGVtZW50YXRpb24gb2YgU3Bhcmsgd291bGQgYmUgbmFtZWQgInRpbmtlcnBvcC5zcGFyayIuICBJZiBGYWNlYm9vayB3ZXJlCisgICAgICogdG8gZG8gdGhlaXIgb3duIGltcGxlbWVudGF0aW9uIHRoZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBiZSBjYWxsZWQgImZhY2Vib29rLnNwYXJrIi4KICAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblNjcmlwdEVuZ2luZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblNjcmlwdEVuZ2luZS5qYXZhCmluZGV4IGFkZGNhODIuLjJkZjUxMWMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0dyZW1saW5TY3JpcHRFbmdpbmUuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9HcmVtbGluU2NyaXB0RW5naW5lLmphdmEKQEAgLTM4LDMxICszOCw2IEBACiAgICAgcHVibGljIEdyZW1saW5TY3JpcHRFbmdpbmVGYWN0b3J5IGdldEZhY3RvcnkoKTsKIAogICAgIC8qKgotICAgICAqIEV2YWx1YXRlcyB7QGxpbmsgVHJhdmVyc2FsfSB7QGxpbmsgQnl0ZWNvZGV9LiBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIHRyYXZlcnNhbCBzb3VyY2UgdG8gZXhlY3V0ZSB0aGUKLSAgICAgKiBieXRlY29kZSBhZ2FpbnN0IGlzIGluIHRoZSBnbG9iYWwgYmluZGluZ3MgYW5kIGlzIG5hbWVkICJnIi4KLSAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjcsIHJlcGxhY2VkIGJ5IHtAbGluayAjZXZhbChCeXRlY29kZSwgU3RyaW5nKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgZGVmYXVsdCBUcmF2ZXJzYWwuQWRtaW4gZXZhbChmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgdGhyb3dzIFNjcmlwdEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gdGhpcy5jcmVhdGVCaW5kaW5ncygpOwotICAgICAgICBiaW5kaW5ncy5wdXRBbGwoYnl0ZWNvZGUuZ2V0QmluZGluZ3MoKSk7Ci0gICAgICAgIHJldHVybiBldmFsKGJ5dGVjb2RlLCBiaW5kaW5ncyk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRXZhbHVhdGVzIHtAbGluayBUcmF2ZXJzYWx9IHtAbGluayBCeXRlY29kZX0gd2l0aCB0aGUgc3BlY2lmaWVkIHtAY29kZSBCaW5kaW5nc30uIFRoZXNlIHtAY29kZSBCaW5kaW5nc30KLSAgICAgKiBzdXBwbGllZCB0byB0aGlzIG1ldGhvZCB3aWxsIGJlIG1lcmdlZCB3aXRoIGdsb2JhbCBlbmdpbmUgYmluZGluZ3MgYW5kIG92ZXJyaWRlIHRoZW0gd2hlcmUga2V5cyBtYXRjaC4gVGhpcwotICAgICAqIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIHRyYXZlcnNhbCBzb3VyY2UgdG8gZXhlY3V0ZSBhZ2FpbnN0IGlzIG5hbWVkICJnIi4KLSAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjcsIHJlcGxhY2VkIGJ5IHtAbGluayAjZXZhbChCeXRlY29kZSwgQmluZGluZ3MsIFN0cmluZyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIGRlZmF1bHQgVHJhdmVyc2FsLkFkbWluIGV2YWwoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUsIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzKSB0aHJvd3MgU2NyaXB0RXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIGV2YWwoYnl0ZWNvZGUsIGJpbmRpbmdzLCAiZyIpOwotICAgIH0KLQotICAgIC8qKgogICAgICAqIEV2YWx1YXRlcyB7QGxpbmsgVHJhdmVyc2FsfSB7QGxpbmsgQnl0ZWNvZGV9IGFnYWluc3QgYSB0cmF2ZXJzYWwgc291cmNlIGluIHRoZSBnbG9iYWwgYmluZGluZ3Mgb2YgdGhlCiAgICAgICoge0Bjb2RlIFNjcmlwdEVuZ2luZX0uCiAgICAgICoKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0ltcG9ydEN1c3RvbWl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0ltcG9ydEN1c3RvbWl6ZXIuamF2YQppbmRleCBiNDQwNzJiLi40M2Y2MzJlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9JbXBvcnRDdXN0b21pemVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvSW1wb3J0Q3VzdG9taXplci5qYXZhCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjM7CiAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0OwpAQCAtMzAsMTQgKzMxLDYgQEAKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGludGVyZmFjZSBJbXBvcnRDdXN0b21pemVyIGV4dGVuZHMgQ3VzdG9taXplciB7Ci0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuNCwgbm90IHJlcGxhY2VkLgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBJbXBvcnRDdXN0b21pemVyIEdSRU1MSU5fQ09SRSA9IERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkKLSAgICAgICAgICAgIC5hZGRDbGFzc0ltcG9ydHMoQ29yZUltcG9ydHMuZ2V0Q2xhc3NJbXBvcnRzKCkpCi0gICAgICAgICAgICAuYWRkRW51bUltcG9ydHMoQ29yZUltcG9ydHMuZ2V0RW51bUltcG9ydHMoKSkKLSAgICAgICAgICAgIC5hZGRNZXRob2RJbXBvcnRzKENvcmVJbXBvcnRzLmdldE1ldGhvZEltcG9ydHMoKSkuY3JlYXRlKCk7CiAKICAgICAvKioKICAgICAgKiBHZXRzIHRoZSBzZXQgb2YgY2xhc3NlcyB0byBiZSBpbXBvcnRlZCB0byB0aGUge0BsaW5rIEdyZW1saW5TY3JpcHRFbmdpbmV9LgpAQCAtNTUsNiArNDgsMTEgQEAKICAgICBwdWJsaWMgU2V0PEVudW0+IGdldEVudW1JbXBvcnRzKCk7CiAKICAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzZXQgb2YgZmllbGRzIHRvIGJlIGltcG9ydGVkIHRvIHRoZSB7QGxpbmsgR3JlbWxpblNjcmlwdEVuZ2luZX0uCisgICAgICovCisgICAgcHVibGljIFNldDxGaWVsZD4gZ2V0RmllbGRJbXBvcnRzKCk7CisKKyAgICAvKioKICAgICAgKiBHZXRzIHRoZSBzZXQgb2YgcGFja2FnZXMgZnJvbSB0aGUge0BsaW5rICNnZXRDbGFzc0ltcG9ydHMoKX0uCiAgICAgICovCiAgICAgcHVibGljIGRlZmF1bHQgU2V0PFBhY2thZ2U+IGdldENsYXNzUGFja2FnZXMoKSB7CkBAIC03NCw0ICs3MiwxMSBAQAogICAgIHB1YmxpYyBkZWZhdWx0IFNldDxDbGFzcz4gZ2V0RW51bUNsYXNzZXMoKSB7CiAgICAgICAgIHJldHVybiBnZXRFbnVtSW1wb3J0cygpLnN0cmVhbSgpLm1hcChFbnVtOjpnZXREZWNsYXJpbmdDbGFzcykuY29sbGVjdChDb2xsZWN0b3JzLnRvQ29sbGVjdGlvbihMaW5rZWRIYXNoU2V0OjpuZXcpKTsKICAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzZXQgb2YgZmllbGRzIGZyb20gdGhlIHtAbGluayAjZ2V0RmllbGRJbXBvcnRzKCl9LgorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IFNldDxDbGFzcz4gZ2V0RmllbGRDbGFzc2VzKCkgeworICAgICAgICByZXR1cm4gZ2V0RmllbGRJbXBvcnRzKCkuc3RyZWFtKCkubWFwKEZpZWxkOjpnZXREZWNsYXJpbmdDbGFzcykuY29sbGVjdChDb2xsZWN0b3JzLnRvQ29sbGVjdGlvbihMaW5rZWRIYXNoU2V0OjpuZXcpKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9jb25zb2xlL0dyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9jb25zb2xlL0dyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEKaW5kZXggNmZjMTM2My4uODc2M2Q0MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvY29uc29sZS9HcmVtbGluU2hlbGxFbnZpcm9ubWVudC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL2NvbnNvbGUvR3JlbWxpblNoZWxsRW52aXJvbm1lbnQuamF2YQpAQCAtMzMsNSArMzMsOSBAQAogCiAgICAgcHVibGljIHZvaWQgcHJpbnRsbihmaW5hbCBTdHJpbmcgbGluZSk7CiAKKyAgICBwdWJsaWMgZGVmYXVsdCB2b2lkIGVyclByaW50bG4oZmluYWwgU3RyaW5nIGxpbmUpIHsKKyAgICAgICAgcHJpbnRsbihsaW5lKTsKKyAgICB9CisKICAgICBwdWJsaWMgPFQ+IFQgZXhlY3V0ZShmaW5hbCBTdHJpbmcgbGluZSk7CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvR3JhcGhGaWx0ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaEZpbHRlci5qYXZhCmluZGV4IDY1ZDc0ZDIuLjJmMDFkY2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaEZpbHRlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaEZpbHRlci5qYXZhCkBAIC0zMTksOSArMzE5LDkgQEAKICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG9iamVjdCkgewogICAgICAgICBpZiAoIShvYmplY3QgaW5zdGFuY2VvZiBHcmFwaEZpbHRlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsc2UgaWYgKCgoR3JhcGhGaWx0ZXIpIG9iamVjdCkuaGFzVmVydGV4RmlsdGVyKCkgJiYgISgoR3JhcGhGaWx0ZXIpIG9iamVjdCkuZ2V0VmVydGV4RmlsdGVyKCkuZXF1YWxzKHRoaXMudmVydGV4RmlsdGVyKSkKKyAgICAgICAgZWxzZSBpZiAoKChHcmFwaEZpbHRlcikgb2JqZWN0KS5oYXNWZXJ0ZXhGaWx0ZXIoKSAmJiAhKChHcmFwaEZpbHRlcikgb2JqZWN0KS52ZXJ0ZXhGaWx0ZXIuZXF1YWxzKHRoaXMudmVydGV4RmlsdGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZWxzZSBpZiAoKChHcmFwaEZpbHRlcikgb2JqZWN0KS5oYXNFZGdlRmlsdGVyKCkgJiYgISgoR3JhcGhGaWx0ZXIpIG9iamVjdCkuZ2V0RWRnZUZpbHRlcigpLmVxdWFscyh0aGlzLmVkZ2VGaWx0ZXIpKQorICAgICAgICBlbHNlIGlmICgoKEdyYXBoRmlsdGVyKSBvYmplY3QpLmhhc0VkZ2VGaWx0ZXIoKSAmJiAhKChHcmFwaEZpbHRlcikgb2JqZWN0KS5lZGdlRmlsdGVyLmVxdWFscyh0aGlzLmVkZ2VGaWx0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9idWxrbG9hZGluZy9CdWxrTG9hZGVyVmVydGV4UHJvZ3JhbS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0J1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtLmphdmEKaW5kZXggMWU3NWNlNi4uMzU3MDQyMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0J1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0J1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtLmphdmEKQEAgLTQ2MiwxMiArNDYyLDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpIHsKLSAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcgLSBkZXByZWNhdGVkCi0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgdmVydGV4UHJvcGVydHlSZW1vdmVkKGZpbmFsIFZlcnRleFByb3BlcnR5IHZlcnRleFByb3BlcnR5KSB7CiAgICAgICAgICAgICB0aGlzLmNvdW50ZXIrKzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0luY3JlbWVudGFsQnVsa0xvYWRlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0luY3JlbWVudGFsQnVsa0xvYWRlci5qYXZhCmluZGV4IDIyYzY5OTkuLjU3MTM3NzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9idWxrbG9hZGluZy9JbmNyZW1lbnRhbEJ1bGtMb2FkZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvYnVsa2xvYWRpbmcvSW5jcmVtZW50YWxCdWxrTG9hZGVyLmphdmEKQEAgLTQ5LDEyICs0OSwxMiBAQAogICAgIHB1YmxpYyBWZXJ0ZXggZ2V0T3JDcmVhdGVWZXJ0ZXgoZmluYWwgVmVydGV4IHZlcnRleCwgZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcpIHsKICAgICAgICAgZmluYWwgSXRlcmF0b3I8VmVydGV4PiBpdGVyYXRvciA9IHVzZVVzZXJTdXBwbGllZElkcygpCiAgICAgICAgICAgICAgICAgPyBnLlYoKS5oYXNJZCh2ZXJ0ZXguaWQoKSkKLSAgICAgICAgICAgICAgICA6IGcuVigpLmhhcyh2ZXJ0ZXgubGFiZWwoKSwgZ2V0VmVydGV4SWRQcm9wZXJ0eSgpLCB2ZXJ0ZXguaWQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICA6IGcuVigpLmhhcyh2ZXJ0ZXgubGFiZWwoKSwgYnVsa0xvYWRlclZlcnRleElkLCB2ZXJ0ZXguaWQoKS50b1N0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLmhhc05leHQoKQogICAgICAgICAgICAgICAgID8gaXRlcmF0b3IubmV4dCgpCiAgICAgICAgICAgICAgICAgOiB1c2VVc2VyU3VwcGxpZWRJZHMoKQogICAgICAgICAgICAgICAgID8gZy5hZGRWKHZlcnRleC5sYWJlbCgpKS5wcm9wZXJ0eShULmlkLCB2ZXJ0ZXguaWQoKSkubmV4dCgpCi0gICAgICAgICAgICAgICAgOiBnLmFkZFYodmVydGV4LmxhYmVsKCkpLnByb3BlcnR5KGdldFZlcnRleElkUHJvcGVydHkoKSwgdmVydGV4LmlkKCkudG9TdHJpbmcoKSkubmV4dCgpOworICAgICAgICAgICAgICAgIDogZy5hZGRWKHZlcnRleC5sYWJlbCgpKS5wcm9wZXJ0eShidWxrTG9hZGVyVmVydGV4SWQsIHZlcnRleC5pZCgpLnRvU3RyaW5nKCkpLm5leHQoKTsKICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9jbHVzdGVyaW5nL2Nvbm5lY3RlZC9Db25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvY2x1c3RlcmluZy9jb25uZWN0ZWQvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYzhmM2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvY2x1c3RlcmluZy9jb25uZWN0ZWQvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5qYXZhCkBAIC0wLDAgKzEsMjUzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcuY29ubmVjdGVkOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQmFzZUNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5Q29tcHV0ZUtleTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVzc2FnZVNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZXNzZW5nZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleENvbXB1dGVLZXk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLkFic3RyYWN0VmVydGV4UHJvZ3JhbUJ1aWxkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkluZGV4ZWRUcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5UcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlB1cmVUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKKy8qKgorICogSWRlbnRpZmllcyAiQ29ubmVjdGVkIENvbXBvbmVudCIgaW5zdGFuY2VzIGluIGEgZ3JhcGggYnkgYXNzaWduaW5nIGEgY29tcG9uZW50IGlkZW50aWZpZXIgKHRoZSBsZXhpY29ncmFwaGljYWxseQorICogbGVhc3Qgc3RyaW5nIHZhbHVlIG9mIHRoZSB2ZXJ0ZXggaW4gdGhlIGNvbXBvbmVudCkgdG8gZWFjaCB2ZXJ0ZXguCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqLworcHVibGljIGNsYXNzIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0gaW1wbGVtZW50cyBWZXJ0ZXhQcm9ncmFtPFN0cmluZz4geworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09NUE9ORU5UID0gImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5jb21wb25lbnQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWSA9ICJncmVtbGluLmNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0ucHJvcGVydHkiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFREdFX1RSQVZFUlNBTCA9ICJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5lZGdlVHJhdmVyc2FsIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVk9URV9UT19IQUxUID0gImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS52b3RlVG9IYWx0IjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxNZW1vcnlDb21wdXRlS2V5PiBNRU1PUllfQ09NUFVURV9LRVlTID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uKE1lbW9yeUNvbXB1dGVLZXkub2YoVk9URV9UT19IQUxULCBPcGVyYXRvci5hbmQsIGZhbHNlLCB0cnVlKSk7CisKKyAgICBwcml2YXRlIE1lc3NhZ2VTY29wZS5Mb2NhbDw/PiBzY29wZSA9IE1lc3NhZ2VTY29wZS5Mb2NhbC5vZihfXzo6Ym90aEUpOworICAgIHByaXZhdGUgU2V0PE1lc3NhZ2VTY29wZT4gc2NvcGVzOworICAgIHByaXZhdGUgU3RyaW5nIHByb3BlcnR5ID0gQ09NUE9ORU5UOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsIEVkZ2U+IGVkZ2VUcmF2ZXJzYWwgPSBudWxsOworICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIHByaXZhdGUgVHJhdmVyc2VyU2V0PFZlcnRleD4gaGFsdGVkVHJhdmVyc2VyczsKKyAgICBwcml2YXRlIEluZGV4ZWRUcmF2ZXJzZXJTZXQ8VmVydGV4LCBWZXJ0ZXg+IGhhbHRlZFRyYXZlcnNlcnNJbmRleDsKKworICAgIHByaXZhdGUgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbSgpIHt9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBsb2FkU3RhdGUoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBuZXcgQmFzZUNvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7CisgICAgICAgICAgICBDb25maWd1cmF0aW9uVXRpbHMuY29weShjb25maWcsIGNvbmZpZ3VyYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29udGFpbnNLZXkoRURHRV9UUkFWRVJTQUwpKSB7CisgICAgICAgICAgICB0aGlzLmVkZ2VUcmF2ZXJzYWwgPSBQdXJlVHJhdmVyc2FsLmxvYWRTdGF0ZShjb25maWd1cmF0aW9uLCBFREdFX1RSQVZFUlNBTCwgZ3JhcGgpOworICAgICAgICAgICAgdGhpcy5zY29wZSA9IE1lc3NhZ2VTY29wZS5Mb2NhbC5vZigoKSAtPiB0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkuY2xvbmUoKSk7CisgICAgICAgIH0KKworICAgICAgICBzY29wZXMgPSBuZXcgSGFzaFNldDw+KENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qoc2NvcGUpKTsKKworICAgICAgICB0aGlzLnByb3BlcnR5ID0gY29uZmlndXJhdGlvbi5nZXRTdHJpbmcoUFJPUEVSVFksIENPTVBPTkVOVCk7CisKKyAgICAgICAgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzID0gVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5sb2FkSGFsdGVkVHJhdmVyc2Vycyhjb25maWd1cmF0aW9uKTsKKyAgICAgICAgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXggPSBuZXcgSW5kZXhlZFRyYXZlcnNlclNldDw+KHYgLT4gdik7CisgICAgICAgIGZvciAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFZlcnRleD4gdHJhdmVyc2VyIDogdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzKSB7CisgICAgICAgICAgICB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleC5hZGQodHJhdmVyc2VyLnNwbGl0KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc3RvcmVTdGF0ZShmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZykgeworICAgICAgICBWZXJ0ZXhQcm9ncmFtLnN1cGVyLnN0b3JlU3RhdGUoY29uZmlnKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgQ29uZmlndXJhdGlvblV0aWxzLmNvcHkoY29uZmlndXJhdGlvbiwgY29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldHVwKGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgbWVtb3J5LnNldChWT1RFX1RPX0hBTFQsIHRydWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGV4ZWN1dGUoZmluYWwgVmVydGV4IHZlcnRleCwgZmluYWwgTWVzc2VuZ2VyPFN0cmluZz4gbWVzc2VuZ2VyLCBmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIGlmIChtZW1vcnkuaXNJbml0aWFsSXRlcmF0aW9uKCkpIHsKKyAgICAgICAgICAgIGNvcHlIYWx0ZWRUcmF2ZXJzZXJzRnJvbU1lbW9yeSh2ZXJ0ZXgpOworCisgICAgICAgICAgICAvLyBvbiB0aGUgZmlyc3QgcGFzcywganVzdCBpbml0aWFsaXplIHRoZSBjb21wb25lbnQgdG8gaXRzIG93biBpZCB0aGVuIHBhc3MgaXQgdG8gYWxsIGFkamFjZW50IHZlcnRpY2VzCisgICAgICAgICAgICAvLyBmb3IgZXZhbHVhdGlvbgorICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgcHJvcGVydHksIHZlcnRleC5pZCgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICAvLyB2ZXJ0aWNlcyB0aGF0IGhhdmUgbm8gZWRnZXMgcmVtYWluIGluIHRoZWlyIG93biBjb21wb25lbnQgLSBub3RoaW5nIHRvIG1lc3NhZ2UgcGFzcyBoZXJlCisgICAgICAgICAgICBpZiAodmVydGV4LmVkZ2VzKERpcmVjdGlvbi5CT1RIKS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGVyZSB3YXMgbWVzc2FnZSBwYXNzaW5nIHdlIGRvbid0IHdhbnQgdG8gaGFsdCBvbiB0aGUgZmlyc3Qgcm91bmQuIHRoaXMgc2hvdWxkIG9ubHkgdHJpZ2dlcgorICAgICAgICAgICAgICAgIC8vIGEgc2luZ2xlIHBhc3MgZmluaXNoIGlmIHRoZSBncmFwaCBpcyBjb21wbGV0ZWx5IGRpc2Nvbm5lY3RlZCAodGVjaG5pY2FsbHksIGl0IHdvbid0IGV2ZW4gcmVhbGx5CisgICAgICAgICAgICAgICAgLy8gd29yayBpbiBjYXNlcyB3aGVyZSBoYWx0ZWQgdHJhdmVyc2VycyBjb21lIGludG8gcGxheQorICAgICAgICAgICAgICAgIG1lc3Nlbmdlci5zZW5kTWVzc2FnZShzY29wZSwgdmVydGV4LmlkKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbWVtb3J5LmFkZChWT1RFX1RPX0hBTFQsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGJ5IHRoZSBzZWNvbmQgaXRlcmF0aW9uIGFsbCB2ZXJ0aWNlcyB0aGF0IG1hdHRlciBzaG91bGQgaGF2ZSBhIGNvbXBvbmVudCBhc3NpZ25lZAorICAgICAgICAgICAgU3RyaW5nIGN1cnJlbnRDb21wb25lbnQgPSB2ZXJ0ZXgudmFsdWUocHJvcGVydHkpOworICAgICAgICAgICAgYm9vbGVhbiBkaWZmZXJlbnQgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gaXRlcmF0ZSB0aHJvdWdoIG1lc3NhZ2VzIHJlY2VpdmVkIGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBjb21wb25lbnQgdGhhdCBoYXMgYSBsZXNzZXIgdmFsdWUgdGhhbgorICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnRseSBhc3NpZ25lZCBvbmUKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFN0cmluZz4gY29tcG9uZW50SXRlcmF0b3IgPSBtZXNzZW5nZXIucmVjZWl2ZU1lc3NhZ2VzKCk7CisgICAgICAgICAgICB3aGlsZShjb21wb25lbnRJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2FuZGlkYXRlQ29tcG9uZW50ID0gY29tcG9uZW50SXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVDb21wb25lbnQuY29tcGFyZVRvKGN1cnJlbnRDb21wb25lbnQpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29tcG9uZW50ID0gY2FuZGlkYXRlQ29tcG9uZW50OworICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBiZXR0ZXIgY29tcG9uZW50IHRoZW4gYXNzaWduIGl0IGFuZCBub3RpZnkgYWRqYWNlbnQgdmVydGljZXMuIHRyaWdnZXJpbmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgICAgIC8vIHBhc3Npbmcgc2hvdWxkIG5vdCBoYWx0IGZ1dHVyZSBleGVjdXRpb25zCisgICAgICAgICAgICBpZiAoZGlmZmVyZW50KSB7CisgICAgICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgcHJvcGVydHksIGN1cnJlbnRDb21wb25lbnQpOworICAgICAgICAgICAgICAgIG1lc3Nlbmdlci5zZW5kTWVzc2FnZShzY29wZSwgY3VycmVudENvbXBvbmVudCk7CisgICAgICAgICAgICAgICAgbWVtb3J5LmFkZChWT1RFX1RPX0hBTFQsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VmVydGV4Q29tcHV0ZUtleT4gZ2V0VmVydGV4Q29tcHV0ZUtleXMoKSB7CisgICAgICAgIHJldHVybiBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgVmVydGV4Q29tcHV0ZUtleS5vZihwcm9wZXJ0eSwgZmFsc2UpLAorICAgICAgICAgICAgICAgIFZlcnRleENvbXB1dGVLZXkub2YoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgZmFsc2UpKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxNZW1vcnlDb21wdXRlS2V5PiBnZXRNZW1vcnlDb21wdXRlS2V5cygpIHsKKyAgICAgICAgcmV0dXJuIE1FTU9SWV9DT01QVVRFX0tFWVM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gdGVybWluYXRlKGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgaWYgKG1lbW9yeS5pc0luaXRpYWxJdGVyYXRpb24oKSAmJiB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleC5jbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiB2b3RlVG9IYWx0ID0gbWVtb3J5LjxCb29sZWFuPmdldChWT1RFX1RPX0hBTFQpOworICAgICAgICBpZiAodm90ZVRvSGFsdCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBpdCBpcyBiYXNpY2FsbHkgYWx3YXlzIGFzc3VtZWQgdGhhdCB0aGUgcHJvZ3JhbSB3aWxsIHdhbnQgdG8gaGFsdCwgYnV0IGlmIG1lc3NhZ2UgcGFzc2luZyBvY2N1cnMsIHRoZQorICAgICAgICAgICAgLy8gcHJvZ3JhbSB3aWxsIHdhbnQgdG8gY29udGludWUsIHRodXMgcmVzZXQgZmFsc2UgdmFsdWVzIHRvIHRydWUgZm9yIGZ1dHVyZSBpdGVyYXRpb25zCisgICAgICAgICAgICBtZW1vcnkuc2V0KFZPVEVfVE9fSEFMVCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PE1lc3NhZ2VTY29wZT4gZ2V0TWVzc2FnZVNjb3BlcyhmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIHJldHVybiBzY29wZXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoQ29tcHV0ZXIuUmVzdWx0R3JhcGggZ2V0UHJlZmVycmVkUmVzdWx0R3JhcGgoKSB7CisgICAgICAgIHJldHVybiBHcmFwaENvbXB1dGVyLlJlc3VsdEdyYXBoLk5FVzsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGhDb21wdXRlci5QZXJzaXN0IGdldFByZWZlcnJlZFBlcnNpc3QoKSB7CisgICAgICAgIHJldHVybiBHcmFwaENvbXB1dGVyLlBlcnNpc3QuVkVSVEVYX1BST1BFUlRJRVM7CisgICAgfQorCisKKyAgICBAT3ZlcnJpZGUKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiQ2xvbmVEb2VzbnRDYWxsU3VwZXJDbG9uZSxDbG9uZURvZXNudERlY2xhcmVDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIpCisgICAgcHVibGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0gY2xvbmUoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBGZWF0dXJlcyBnZXRGZWF0dXJlcygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlcygpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNMb2NhbE1lc3NhZ2VTY29wZXMoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNWZXJ0ZXhQcm9wZXJ0eUFkZGl0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjb3B5SGFsdGVkVHJhdmVyc2Vyc0Zyb21NZW1vcnkoZmluYWwgVmVydGV4IHZlcnRleCkgeworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPFRyYXZlcnNlci5BZG1pbjxWZXJ0ZXg+PiB0cmF2ZXJzZXJzID0gdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXguZ2V0KHZlcnRleCk7CisgICAgICAgIGlmICh0cmF2ZXJzZXJzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDxWZXJ0ZXg+IG5ld0hhbHRlZFRyYXZlcnNlcnMgPSBuZXcgVHJhdmVyc2VyU2V0PD4oKTsKKyAgICAgICAgICAgIG5ld0hhbHRlZFRyYXZlcnNlcnMuYWRkQWxsKHRyYXZlcnNlcnMpOworICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgbmV3SGFsdGVkVHJhdmVyc2Vycyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uQnVpbGRlciBidWlsZCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLkJ1aWxkZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFZlcnRleFByb2dyYW1CdWlsZGVyPENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uQnVpbGRlcj4geworCisgICAgICAgIHByaXZhdGUgQnVpbGRlcigpIHsKKyAgICAgICAgICAgIHN1cGVyKENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uQnVpbGRlciBlZGdlcyhmaW5hbCBUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCBFZGdlPiBlZGdlVHJhdmVyc2FsKSB7CisgICAgICAgICAgICBQdXJlVHJhdmVyc2FsLnN0b3JlU3RhdGUodGhpcy5jb25maWd1cmF0aW9uLCBFREdFX1RSQVZFUlNBTCwgZWRnZVRyYXZlcnNhbCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLkJ1aWxkZXIgcHJvcGVydHkoZmluYWwgU3RyaW5nIGtleSkgeworICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNldFByb3BlcnR5KFBST1BFUlRZLCBrZXkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTQ5YzUzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uamF2YQpAQCAtMCwwICsxLDYxMSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aDsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5Q29tcHV0ZUtleTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVzc2FnZVNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZXNzZW5nZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleENvbXB1dGVLZXk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvZ3JhbVZlcnRleFByb2dyYW1TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuVmVydGV4UHJvZ3JhbVN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuQWJzdHJhY3RWZXJ0ZXhQcm9ncmFtQnVpbGRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSW1tdXRhYmxlUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkluZGV4ZWRUcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5UcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlB1cmVUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZUZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLk51bWJlckhlbHBlcjsKK2ltcG9ydCBvcmcuamF2YXR1cGxlcy5QYWlyOworaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlRyaXBsZXQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOworCisvKioKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK3B1YmxpYyBjbGFzcyBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtIGltcGxlbWVudHMgVmVydGV4UHJvZ3JhbTxUcmlwbGV0PFBhdGgsIEVkZ2UsIE51bWJlcj4+IHsKKworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJXZWFrZXJBY2Nlc3MiKQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNIT1JURVNUX1BBVEhTID0gImdyZW1saW4uc2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5zaG9ydGVzdFBhdGhzIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTT1VSQ0VfVkVSVEVYX0ZJTFRFUiA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uc291cmNlVmVydGV4RmlsdGVyIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFSR0VUX1ZFUlRFWF9GSUxURVIgPSAiZ3JlbWxpbi5zaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLnRhcmdldFZlcnRleEZpbHRlciI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVER0VfVFJBVkVSU0FMID0gImdyZW1saW4uc2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5lZGdlVHJhdmVyc2FsIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRElTVEFOQ0VfVFJBVkVSU0FMID0gImdyZW1saW4uc2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5kaXN0YW5jZVRyYXZlcnNhbCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1BWF9ESVNUQU5DRSA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0ubWF4RGlzdGFuY2UiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTkNMVURFX0VER0VTID0gImdyZW1saW4uc2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5pbmNsdWRlRWRnZXMiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVRFID0gImdyZW1saW4uc2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5zdGF0ZSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBBVEhTID0gImdyZW1saW4uc2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5wYXRocyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFZPVEVfVE9fSEFMVCA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0udm90ZVRvSGFsdCI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VBUkNIID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09MTEVDVF9QQVRIUyA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVQREFURV9IQUxURURfVFJBVkVSU0VSUyA9IDI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFB1cmVUcmF2ZXJzYWw8VmVydGV4LCA/PiBERUZBVUxUX1ZFUlRFWF9GSUxURVJfVFJBVkVSU0FMID0gbmV3IFB1cmVUcmF2ZXJzYWw8PigKKyAgICAgICAgICAgIF9fLjxWZXJ0ZXg+IGlkZW50aXR5KCkuYXNBZG1pbigpKTsgLy8gdG9kbzogbmV3IElkZW50aXR5VHJhdmVyc2FsPD4oKQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsIEVkZ2U+IERFRkFVTFRfRURHRV9UUkFWRVJTQUwgPSBuZXcgUHVyZVRyYXZlcnNhbDw+KF9fLmJvdGhFKCkuYXNBZG1pbigpKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFB1cmVUcmF2ZXJzYWw8RWRnZSwgTnVtYmVyPiBERUZBVUxUX0RJU1RBTkNFX1RSQVZFUlNBTCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4oCisgICAgICAgICAgICBfXy48RWRnZT4gc3RhcnQoKS48TnVtYmVyPiBjb25zdGFudCgxKS5hc0FkbWluKCkpOyAvLyB0b2RvOiBuZXcgQ29uc3RhbnRUcmF2ZXJzYWw8PigxKQorCisgICAgcHJpdmF0ZSBUcmF2ZXJzZXJTZXQ8VmVydGV4PiBoYWx0ZWRUcmF2ZXJzZXJzOworICAgIHByaXZhdGUgSW5kZXhlZFRyYXZlcnNlclNldDxWZXJ0ZXgsIFZlcnRleD4gaGFsdGVkVHJhdmVyc2Vyc0luZGV4OworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDw/LCA/PiB0cmF2ZXJzYWw7CisgICAgcHJpdmF0ZSBQdXJlVHJhdmVyc2FsPFZlcnRleCwgPz4gc291cmNlVmVydGV4RmlsdGVyVHJhdmVyc2FsID0gREVGQVVMVF9WRVJURVhfRklMVEVSX1RSQVZFUlNBTC5jbG9uZSgpOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsID8+IHRhcmdldFZlcnRleEZpbHRlclRyYXZlcnNhbCA9IERFRkFVTFRfVkVSVEVYX0ZJTFRFUl9UUkFWRVJTQUwuY2xvbmUoKTsKKyAgICBwcml2YXRlIFB1cmVUcmF2ZXJzYWw8VmVydGV4LCBFZGdlPiBlZGdlVHJhdmVyc2FsID0gREVGQVVMVF9FREdFX1RSQVZFUlNBTC5jbG9uZSgpOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxFZGdlLCBOdW1iZXI+IGRpc3RhbmNlVHJhdmVyc2FsID0gREVGQVVMVF9ESVNUQU5DRV9UUkFWRVJTQUwuY2xvbmUoKTsKKyAgICBwcml2YXRlIFN0ZXA8VmVydGV4LCBQYXRoPiBwcm9ncmFtU3RlcDsKKyAgICBwcml2YXRlIE51bWJlciBtYXhEaXN0YW5jZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZGlzdGFuY2VFcXVhbHNOdW1iZXJPZkhvcHM7CisgICAgcHJpdmF0ZSBib29sZWFuIGluY2x1ZGVFZGdlczsKKyAgICBwcml2YXRlIGJvb2xlYW4gc3RhbmRhbG9uZTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxWZXJ0ZXhDb21wdXRlS2V5PiBWRVJURVhfQ09NUFVURV9LRVlTID0gbmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgVmVydGV4Q29tcHV0ZUtleS5vZihQQVRIUywgdHJ1ZSksCisgICAgICAgICAgICBWZXJ0ZXhDb21wdXRlS2V5Lm9mKFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMsIGZhbHNlKSkpOworCisgICAgcHJpdmF0ZSBmaW5hbCBTZXQ8TWVtb3J5Q29tcHV0ZUtleT4gbWVtb3J5Q29tcHV0ZUtleXMgPSBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICBNZW1vcnlDb21wdXRlS2V5Lm9mKFZPVEVfVE9fSEFMVCwgT3BlcmF0b3IuYW5kLCBmYWxzZSwgdHJ1ZSksCisgICAgICAgICAgICBNZW1vcnlDb21wdXRlS2V5Lm9mKFNUQVRFLCBPcGVyYXRvci5hc3NpZ24sIHRydWUsIHRydWUpKSk7CisKKyAgICBwcml2YXRlIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0oKSB7CisKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBsb2FkU3RhdGUoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgeworCisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmNvbnRhaW5zS2V5KFNPVVJDRV9WRVJURVhfRklMVEVSKSkKKyAgICAgICAgICAgIHRoaXMuc291cmNlVmVydGV4RmlsdGVyVHJhdmVyc2FsID0gUHVyZVRyYXZlcnNhbC5sb2FkU3RhdGUoY29uZmlndXJhdGlvbiwgU09VUkNFX1ZFUlRFWF9GSUxURVIsIGdyYXBoKTsKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5jb250YWluc0tleShUQVJHRVRfVkVSVEVYX0ZJTFRFUikpCisgICAgICAgICAgICB0aGlzLnRhcmdldFZlcnRleEZpbHRlclRyYXZlcnNhbCA9IFB1cmVUcmF2ZXJzYWwubG9hZFN0YXRlKGNvbmZpZ3VyYXRpb24sIFRBUkdFVF9WRVJURVhfRklMVEVSLCBncmFwaCk7CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29udGFpbnNLZXkoRURHRV9UUkFWRVJTQUwpKQorICAgICAgICAgICAgdGhpcy5lZGdlVHJhdmVyc2FsID0gUHVyZVRyYXZlcnNhbC5sb2FkU3RhdGUoY29uZmlndXJhdGlvbiwgRURHRV9UUkFWRVJTQUwsIGdyYXBoKTsKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5jb250YWluc0tleShESVNUQU5DRV9UUkFWRVJTQUwpKQorICAgICAgICAgICAgdGhpcy5kaXN0YW5jZVRyYXZlcnNhbCA9IFB1cmVUcmF2ZXJzYWwubG9hZFN0YXRlKGNvbmZpZ3VyYXRpb24sIERJU1RBTkNFX1RSQVZFUlNBTCwgZ3JhcGgpOworCisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmNvbnRhaW5zS2V5KE1BWF9ESVNUQU5DRSkpCisgICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gKE51bWJlcikgY29uZmlndXJhdGlvbi5nZXRQcm9wZXJ0eShNQVhfRElTVEFOQ0UpOworCisgICAgICAgIHRoaXMuZGlzdGFuY2VFcXVhbHNOdW1iZXJPZkhvcHMgPSB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmVxdWFscyhERUZBVUxUX0RJU1RBTkNFX1RSQVZFUlNBTCk7CisgICAgICAgIHRoaXMuaW5jbHVkZUVkZ2VzID0gY29uZmlndXJhdGlvbi5nZXRCb29sZWFuKElOQ0xVREVfRURHRVMsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5zdGFuZGFsb25lID0gIWNvbmZpZ3VyYXRpb24uY29udGFpbnNLZXkoVmVydGV4UHJvZ3JhbVN0ZXAuUk9PVF9UUkFWRVJTQUwpOworCisgICAgICAgIGlmICghdGhpcy5zdGFuZGFsb25lKSB7CisgICAgICAgICAgICB0aGlzLnRyYXZlcnNhbCA9IFB1cmVUcmF2ZXJzYWwubG9hZFN0YXRlKGNvbmZpZ3VyYXRpb24sIFZlcnRleFByb2dyYW1TdGVwLlJPT1RfVFJBVkVSU0FMLCBncmFwaCk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJvZ3JhbVN0ZXBJZCA9IGNvbmZpZ3VyYXRpb24uZ2V0U3RyaW5nKFByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcC5TVEVQX0lEKTsKKyAgICAgICAgICAgIGZvciAoZmluYWwgU3RlcCBzdGVwIDogdGhpcy50cmF2ZXJzYWwuZ2V0KCkuZ2V0U3RlcHMoKSkgeworICAgICAgICAgICAgICAgIGlmIChzdGVwLmdldElkKCkuZXF1YWxzKHByb2dyYW1TdGVwSWQpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vbm9pbnNwZWN0aW9uIHVuY2hlY2tlZAorICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2dyYW1TdGVwID0gc3RlcDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gcmVzdG9yZSBoYWx0ZWQgdHJhdmVyc2VycyBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGFuZCBidWlsZCBhbiBpbmRleCBmb3IgZGlyZWN0IGFjY2VzcworICAgICAgICB0aGlzLmhhbHRlZFRyYXZlcnNlcnMgPSBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLmxvYWRIYWx0ZWRUcmF2ZXJzZXJzKGNvbmZpZ3VyYXRpb24pOworICAgICAgICB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleCA9IG5ldyBJbmRleGVkVHJhdmVyc2VyU2V0PD4odiAtPiB2KTsKKyAgICAgICAgZm9yIChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48VmVydGV4PiB0cmF2ZXJzZXIgOiB0aGlzLmhhbHRlZFRyYXZlcnNlcnMpIHsKKyAgICAgICAgICAgIHRoaXMuaGFsdGVkVHJhdmVyc2Vyc0luZGV4LmFkZCh0cmF2ZXJzZXIuc3BsaXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5tZW1vcnlDb21wdXRlS2V5cy5hZGQoTWVtb3J5Q29tcHV0ZUtleS5vZihTSE9SVEVTVF9QQVRIUywgT3BlcmF0b3IuYWRkQWxsLCB0cnVlLCAhc3RhbmRhbG9uZSkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHN0b3JlU3RhdGUoZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSB7CisgICAgICAgIFZlcnRleFByb2dyYW0uc3VwZXIuc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uKTsKKyAgICAgICAgdGhpcy5zb3VyY2VWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwuc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uLCBTT1VSQ0VfVkVSVEVYX0ZJTFRFUik7CisgICAgICAgIHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyVHJhdmVyc2FsLnN0b3JlU3RhdGUoY29uZmlndXJhdGlvbiwgVEFSR0VUX1ZFUlRFWF9GSUxURVIpOworICAgICAgICB0aGlzLmVkZ2VUcmF2ZXJzYWwuc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uLCBFREdFX1RSQVZFUlNBTCk7CisgICAgICAgIHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwuc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uLCBESVNUQU5DRV9UUkFWRVJTQUwpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KElOQ0xVREVfRURHRVMsIHRoaXMuaW5jbHVkZUVkZ2VzKTsKKyAgICAgICAgaWYgKHRoaXMubWF4RGlzdGFuY2UgIT0gbnVsbCkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkoTUFYX0RJU1RBTkNFLCBtYXhEaXN0YW5jZSk7CisgICAgICAgIGlmICh0aGlzLnRyYXZlcnNhbCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLnRyYXZlcnNhbC5zdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb24sIFByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcC5ST09UX1RSQVZFUlNBTCk7CisgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KFByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcC5TVEVQX0lELCB0aGlzLnByb2dyYW1TdGVwLmdldElkKCkpOworICAgICAgICB9CisgICAgICAgIFRyYXZlcnNhbFZlcnRleFByb2dyYW0uc3RvcmVIYWx0ZWRUcmF2ZXJzZXJzKGNvbmZpZ3VyYXRpb24sIHRoaXMuaGFsdGVkVHJhdmVyc2Vycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxWZXJ0ZXhDb21wdXRlS2V5PiBnZXRWZXJ0ZXhDb21wdXRlS2V5cygpIHsKKyAgICAgICAgcmV0dXJuIFZFUlRFWF9DT01QVVRFX0tFWVM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxNZW1vcnlDb21wdXRlS2V5PiBnZXRNZW1vcnlDb21wdXRlS2V5cygpIHsKKyAgICAgICAgcmV0dXJuIG1lbW9yeUNvbXB1dGVLZXlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8TWVzc2FnZVNjb3BlPiBnZXRNZXNzYWdlU2NvcGVzKGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5U2V0KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFZlcnRleFByb2dyYW08VHJpcGxldDxQYXRoLCBFZGdlLCBOdW1iZXI+PiBjbG9uZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbmFsIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0gY2xvbmUgPSAoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbSkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMuZWRnZVRyYXZlcnNhbCkKKyAgICAgICAgICAgICAgICBjbG9uZS5lZGdlVHJhdmVyc2FsID0gdGhpcy5lZGdlVHJhdmVyc2FsLmNsb25lKCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbCkKKyAgICAgICAgICAgICAgICBjbG9uZS5zb3VyY2VWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwgPSB0aGlzLnNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbC5jbG9uZSgpOworICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwpCisgICAgICAgICAgICAgICAgY2xvbmUudGFyZ2V0VmVydGV4RmlsdGVyVHJhdmVyc2FsID0gdGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwpCisgICAgICAgICAgICAgICAgY2xvbmUuZGlzdGFuY2VUcmF2ZXJzYWwgPSB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmNsb25lKCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnRyYXZlcnNhbCkgeworICAgICAgICAgICAgICAgIGNsb25lLnRyYXZlcnNhbCA9IHRoaXMudHJhdmVyc2FsLmNsb25lKCk7CisgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBTdGVwIHN0ZXAgOiBjbG9uZS50cmF2ZXJzYWwuZ2V0KCkuZ2V0U3RlcHMoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcC5nZXRJZCgpLmVxdWFscyh0aGlzLnByb2dyYW1TdGVwLmdldElkKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLnByb2dyYW1TdGVwID0gc3RlcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNsb25lOworICAgICAgICB9IGNhdGNoIChmaW5hbCBDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBHcmFwaENvbXB1dGVyLlJlc3VsdEdyYXBoIGdldFByZWZlcnJlZFJlc3VsdEdyYXBoKCkgeworICAgICAgICByZXR1cm4gR3JhcGhDb21wdXRlci5SZXN1bHRHcmFwaC5PUklHSU5BTDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGhDb21wdXRlci5QZXJzaXN0IGdldFByZWZlcnJlZFBlcnNpc3QoKSB7CisgICAgICAgIHJldHVybiBHcmFwaENvbXB1dGVyLlBlcnNpc3QuTk9USElORzsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzZXR1cChmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIG1lbW9yeS5zZXQoVk9URV9UT19IQUxULCB0cnVlKTsKKyAgICAgICAgbWVtb3J5LnNldChTVEFURSwgU0VBUkNIKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBleGVjdXRlKGZpbmFsIFZlcnRleCB2ZXJ0ZXgsIGZpbmFsIE1lc3NlbmdlcjxUcmlwbGV0PFBhdGgsIEVkZ2UsIE51bWJlcj4+IG1lc3NlbmdlciwgZmluYWwgTWVtb3J5IG1lbW9yeSkgeworCisgICAgICAgIHN3aXRjaCAobWVtb3J5LjxJbnRlZ2VyPmdldChTVEFURSkpIHsKKworICAgICAgICAgICAgY2FzZSBDT0xMRUNUX1BBVEhTOgorICAgICAgICAgICAgICAgIGNvbGxlY3RTaG9ydGVzdFBhdGhzKHZlcnRleCwgbWVtb3J5KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgVVBEQVRFX0hBTFRFRF9UUkFWRVJTRVJTOgorICAgICAgICAgICAgICAgIHVwZGF0ZUhhbHRlZFRyYXZlcnNlcnModmVydGV4LCBtZW1vcnkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gdm90ZVRvSGFsdCA9IHRydWU7CisKKyAgICAgICAgaWYgKG1lbW9yeS5pc0luaXRpYWxJdGVyYXRpb24oKSkgeworCisgICAgICAgICAgICAvLyBVc2UgdGhlIGZpcnN0IGl0ZXJhdGlvbiB0byBjb3B5IGhhbHRlZCB0cmF2ZXJzZXJzIGZyb20gdGhlIGhhbHRlZCB0cmF2ZXJzZXIgaW5kZXggdG8gdGhlIHJlc3BlY3RpdmUKKyAgICAgICAgICAgIC8vIHZlcnRpY2VzLiBUaGlzIHdheSB0aGUgcmVzdCBvZiB0aGUgY29kZSBjYW4gYmUgc2ltcGxpZmllZCBhbmQgYWx3YXlzIGV4cGVjdCB0aGUgSEFMVEVEX1RSQVZFUlNFUlMKKyAgICAgICAgICAgIC8vIHByb3BlcnR5IHRvIGJlIGF2YWlsYWJsZSAoaWYgaGFsdGVkIHRyYXZlcnNlcnMgZXhpc3QgZm9yIHRoaXMgdmVydGV4KS4KKyAgICAgICAgICAgIGNvcHlIYWx0ZWRUcmF2ZXJzZXJzRnJvbU1lbW9yeSh2ZXJ0ZXgpOworCisgICAgICAgICAgICAvLyBpZ25vcmUgdmVydGljZXMgdGhhdCBkb24ndCBwYXNzIHRoZSBzdGFydC12ZXJ0ZXggZmlsdGVyCisgICAgICAgICAgICBpZiAoIWlzU3RhcnRWZXJ0ZXgodmVydGV4KSkgcmV0dXJuOworCisgICAgICAgICAgICAvLyBzdGFydCB0byB0cmFjayBwYXRocyBmb3IgYWxsIHZhbGlkIHN0YXJ0LXZlcnRpY2VzCisgICAgICAgICAgICBmaW5hbCBNYXA8VmVydGV4LCBQYWlyPE51bWJlciwgU2V0PFBhdGg+Pj4gcGF0aHMgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgICAgICBmaW5hbCBQYXRoIHBhdGg7CisgICAgICAgICAgICBmaW5hbCBTZXQ8UGF0aD4gcGF0aFNldCA9IG5ldyBIYXNoU2V0PD4oKTsKKworICAgICAgICAgICAgcGF0aFNldC5hZGQocGF0aCA9IG1ha2VQYXRoKHZlcnRleCkpOworICAgICAgICAgICAgcGF0aHMucHV0KHZlcnRleCwgUGFpci53aXRoKDAsIHBhdGhTZXQpKTsKKworICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgUEFUSFMsIHBhdGhzKTsKKworICAgICAgICAgICAgLy8gc2VuZCBtZXNzYWdlcyB0byB2YWxpZCBhZGphY2VudCB2ZXJ0aWNlcworICAgICAgICAgICAgcHJvY2Vzc0VkZ2VzKHZlcnRleCwgcGF0aCwgMCwgbWVzc2VuZ2VyKTsKKworICAgICAgICAgICAgdm90ZVRvSGFsdCA9IGZhbHNlOworCisgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgIC8vIGxvYWQgZXhpc3RpbmcgcGF0aHMgdG8gdGhpcyB2ZXJ0ZXggYW5kIGV4dGVuZCB0aGVtIGJhc2VkIG9uIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gYWRqYWNlbnQgdmVydGljZXMKKyAgICAgICAgICAgIGZpbmFsIE1hcDxWZXJ0ZXgsIFBhaXI8TnVtYmVyLCBTZXQ8UGF0aD4+PiBwYXRocyA9CisgICAgICAgICAgICAgICAgICAgIHZlcnRleC48TWFwPFZlcnRleCwgUGFpcjxOdW1iZXIsIFNldDxQYXRoPj4+PnByb3BlcnR5KFBBVEhTKS5vckVsc2VHZXQoSGFzaE1hcDo6bmV3KTsKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFRyaXBsZXQ8UGF0aCwgRWRnZSwgTnVtYmVyPj4gaXRlcmF0b3IgPSBtZXNzZW5nZXIucmVjZWl2ZU1lc3NhZ2VzKCk7CisKKyAgICAgICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKKworICAgICAgICAgICAgICAgIGZpbmFsIFRyaXBsZXQ8UGF0aCwgRWRnZSwgTnVtYmVyPiB0cmlwbGV0ID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgICAgIGZpbmFsIFBhdGggc291cmNlUGF0aCA9IHRyaXBsZXQuZ2V0VmFsdWUwKCk7CisgICAgICAgICAgICAgICAgZmluYWwgTnVtYmVyIGRpc3RhbmNlID0gdHJpcGxldC5nZXRWYWx1ZTIoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXggc291cmNlVmVydGV4ID0gc291cmNlUGF0aC5nZXQoMCk7CisKKyAgICAgICAgICAgICAgICBQYXRoIG5ld1BhdGggPSBudWxsOworCisgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBrbm93IGEgcGF0aCBjb21pbmcgZnJvbSB0aGlzIHNvdXJjZSB2ZXJ0ZXg/CisgICAgICAgICAgICAgICAgaWYgKHBhdGhzLmNvbnRhaW5zS2V5KHNvdXJjZVZlcnRleCkpIHsKKworICAgICAgICAgICAgICAgICAgICBmaW5hbCBOdW1iZXIgY3VycmVudFNob3J0ZXN0RGlzdGFuY2UgPSBwYXRocy5nZXQoc291cmNlVmVydGV4KS5nZXRWYWx1ZTAoKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGNtcCA9IE51bWJlckhlbHBlci5jb21wYXJlKGRpc3RhbmNlLCBjdXJyZW50U2hvcnRlc3REaXN0YW5jZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYXRoID0gZXh0ZW5kUGF0aChzb3VyY2VQYXRoLCB0cmlwbGV0LmdldFZhbHVlMSgpLCB2ZXJ0ZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcGF0aCBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBjdXJyZW50IHNob3J0ZXN0IHBhdGgncyBsZW5ndGgsIHJlcGxhY2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBzZXQgb2Ygc2hvcnRlc3QgcGF0aHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXQ8UGF0aD4gcGF0aFNldCA9IG5ldyBIYXNoU2V0PD4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoU2V0LmFkZChuZXdQYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXQoc291cmNlVmVydGV4LCBQYWlyLndpdGgoZGlzdGFuY2UsIHBhdGhTZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHBhdGggbGVuZ3RoIGlzIGVxdWFsIHRvIHRoZSBjdXJyZW50IHNob3J0ZXN0IHBhdGgncyBsZW5ndGgsIGFkZCB0aGUgbmV3IHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGUgc2V0IG9mIHNob3J0ZXN0IHBhdGhzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuZ2V0KHNvdXJjZVZlcnRleCkuZ2V0VmFsdWUxKCkuYWRkKG5ld1BhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZXhjZWVkc01heERpc3RhbmNlKGRpc3RhbmNlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZSB0aGUgbmV3IHBhdGggYXMgdGhlIHNob3J0ZXN0IHBhdGggZnJvbSB0aGUgc291cmNlIHZlcnRleCB0byB0aGUgY3VycmVudCB2ZXJ0ZXgKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgU2V0PFBhdGg+IHBhdGhTZXQgPSBuZXcgSGFzaFNldDw+KCk7CisgICAgICAgICAgICAgICAgICAgIHBhdGhTZXQuYWRkKG5ld1BhdGggPSBleHRlbmRQYXRoKHNvdXJjZVBhdGgsIHRyaXBsZXQuZ2V0VmFsdWUxKCksIHZlcnRleCkpOworICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXQoc291cmNlVmVydGV4LCBQYWlyLndpdGgoZGlzdGFuY2UsIHBhdGhTZXQpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiBhIG5ldyBwYXRoIHdhcyBmb3VuZCwgc2VuZCBtZXNzYWdlcyB0byBhZGphY2VudCB2ZXJ0aWNlcywgb3RoZXJ3aXNlIGRvIG5vdGhpbmcgYXMgdGhlcmUncyBubworICAgICAgICAgICAgICAgIC8vIGNoYW5jZSB0byBmaW5kIGFueSBuZXcgcGF0aHMgZ29pbmcgZm9yd2FyZAorICAgICAgICAgICAgICAgIGlmIChuZXdQYXRoICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgUEFUSFMsIHBhdGhzKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0VkZ2VzKHZlcnRleCwgbmV3UGF0aCwgZGlzdGFuY2UsIG1lc3Nlbmdlcik7CisgICAgICAgICAgICAgICAgICAgIHZvdGVUb0hhbHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBWT1RFX1RPX0hBTFQgd2lsbCBiZSBzZXQgdG8gdHJ1ZSBpZiBhbiBpdGVyYXRpb24gaGFzbid0IGZvdW5kIGFueSBuZXcgcGF0aHMKKyAgICAgICAgbWVtb3J5LmFkZChWT1RFX1RPX0hBTFQsIHZvdGVUb0hhbHQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIHRlcm1pbmF0ZShmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIGlmIChtZW1vcnkuaXNJbml0aWFsSXRlcmF0aW9uKCkgJiYgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXggIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXguY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBib29sZWFuIHZvdGVUb0hhbHQgPSBtZW1vcnkuZ2V0KFZPVEVfVE9fSEFMVCk7CisgICAgICAgIGlmICh2b3RlVG9IYWx0KSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgc3RhdGUgPSBtZW1vcnkuZ2V0KFNUQVRFKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBDT0xMRUNUX1BBVEhTKSB7CisgICAgICAgICAgICAgICAgLy8gQWZ0ZXIgcGF0aHMgd2VyZSBjb2xsZWN0ZWQsCisgICAgICAgICAgICAgICAgLy8gYSkgdGhlIFZQIGlzIGRvbmUgaW4gc3RhbmRhbG9uZSBtb2RlIChwYXRocyB3aWxsIGJlIGluIG1lbW9yeSkgb3IKKyAgICAgICAgICAgICAgICAvLyBiKSB0aGUgaGFsdGVkIHRyYXZlcnNlcnMgd2lsbCBiZSB1cGRhdGVkIGluIG9yZGVyIHRvIGhhdmUgdGhlIHBhdGhzIGF2YWlsYWJsZSBpbiB0aGUgdHJhdmVyc2FsCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhbmRhbG9uZSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgbWVtb3J5LnNldChTVEFURSwgVVBEQVRFX0hBTFRFRF9UUkFWRVJTRVJTKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gVVBEQVRFX0hBTFRFRF9UUkFWRVJTRVJTKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgbWVtb3J5LnNldChTVEFURSwgQ09MTEVDVF9QQVRIUyk7IC8vIGNvbGxlY3QgcGF0aHMgaWYgbm8gbmV3IHBhdGhzIHdlcmUgZm91bmQKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1lbW9yeS5zZXQoVk9URV9UT19IQUxULCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisKKyAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IG9wdGlvbnMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgZmluYWwgRnVuY3Rpb248U3RyaW5nLCBTdHJpbmc+IHNob3J0TmFtZSA9IG5hbWUgLT4gbmFtZS5zdWJzdHJpbmcobmFtZS5sYXN0SW5kZXhPZigiLiIpICsgMSk7CisKKyAgICAgICAgaWYgKCF0aGlzLnNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbC5lcXVhbHMoREVGQVVMVF9WRVJURVhfRklMVEVSX1RSQVZFUlNBTCkpIHsKKyAgICAgICAgICAgIG9wdGlvbnMuYWRkKHNob3J0TmFtZS5hcHBseShTT1VSQ0VfVkVSVEVYX0ZJTFRFUikgKyAiPSIgKyB0aGlzLnNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMudGFyZ2V0VmVydGV4RmlsdGVyVHJhdmVyc2FsLmVxdWFscyhERUZBVUxUX1ZFUlRFWF9GSUxURVJfVFJBVkVSU0FMKSkgeworICAgICAgICAgICAgb3B0aW9ucy5hZGQoc2hvcnROYW1lLmFwcGx5KFRBUkdFVF9WRVJURVhfRklMVEVSKSArICI9IiArIHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyVHJhdmVyc2FsLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5lZGdlVHJhdmVyc2FsLmVxdWFscyhERUZBVUxUX0VER0VfVFJBVkVSU0FMKSkgeworICAgICAgICAgICAgb3B0aW9ucy5hZGQoc2hvcnROYW1lLmFwcGx5KEVER0VfVFJBVkVSU0FMKSArICI9IiArIHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwuZXF1YWxzKERFRkFVTFRfRElTVEFOQ0VfVFJBVkVSU0FMKSkgeworICAgICAgICAgICAgb3B0aW9ucy5hZGQoc2hvcnROYW1lLmFwcGx5KERJU1RBTkNFX1RSQVZFUlNBTCkgKyAiPSIgKyB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIG9wdGlvbnMuYWRkKHNob3J0TmFtZS5hcHBseShJTkNMVURFX0VER0VTKSArICI9IiArIHRoaXMuaW5jbHVkZUVkZ2VzKTsKKworICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS52ZXJ0ZXhQcm9ncmFtU3RyaW5nKHRoaXMsIFN0cmluZy5qb2luKCIsICIsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIHByaXZhdGUgdm9pZCBjb3B5SGFsdGVkVHJhdmVyc2Vyc0Zyb21NZW1vcnkoZmluYWwgVmVydGV4IHZlcnRleCkgeworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPFRyYXZlcnNlci5BZG1pbjxWZXJ0ZXg+PiB0cmF2ZXJzZXJzID0gdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXguZ2V0KHZlcnRleCk7CisgICAgICAgIGlmICh0cmF2ZXJzZXJzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDxWZXJ0ZXg+IG5ld0hhbHRlZFRyYXZlcnNlcnMgPSBuZXcgVHJhdmVyc2VyU2V0PD4oKTsKKyAgICAgICAgICAgIG5ld0hhbHRlZFRyYXZlcnNlcnMuYWRkQWxsKHRyYXZlcnNlcnMpOworICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgbmV3SGFsdGVkVHJhdmVyc2Vycyk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHByaXZhdGUgc3RhdGljIFBhdGggbWFrZVBhdGgoZmluYWwgVmVydGV4IG5ld1ZlcnRleCkgeworICAgICAgICByZXR1cm4gZXh0ZW5kUGF0aChudWxsLCBuZXdWZXJ0ZXgpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFBhdGggZXh0ZW5kUGF0aChmaW5hbCBQYXRoIGN1cnJlbnRQYXRoLCBmaW5hbCBFbGVtZW50Li4uIGVsZW1lbnRzKSB7CisgICAgICAgIFBhdGggcmVzdWx0ID0gSW1tdXRhYmxlUGF0aC5tYWtlKCk7CisgICAgICAgIGlmIChjdXJyZW50UGF0aCAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGZpbmFsIE9iamVjdCBvIDogY3VycmVudFBhdGgub2JqZWN0cygpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmV4dGVuZChvLCBDb2xsZWN0aW9ucy5lbXB0eVNldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKGZpbmFsIEVsZW1lbnQgZWxlbWVudCA6IGVsZW1lbnRzKSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmV4dGVuZChSZWZlcmVuY2VGYWN0b3J5LmRldGFjaChlbGVtZW50KSwgQ29sbGVjdGlvbnMuZW1wdHlTZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNTdGFydFZlcnRleChmaW5hbCBWZXJ0ZXggdmVydGV4KSB7CisgICAgICAgIC8vIHVzZSB0aGUgc291cmNlVmVydGV4RmlsdGVyVHJhdmVyc2FsIGlmIHRoZSBWUCBpcyBydW5uaW5nIGluIHN0YW5kYWxvbmUgbW9kZSAobm90IHBhcnQgb2YgYSB0cmF2ZXJzYWwpCisgICAgICAgIGlmICh0aGlzLnN0YW5kYWxvbmUpIHsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxWZXJ0ZXgsID8+IGZpbHRlclRyYXZlcnNhbCA9IHRoaXMuc291cmNlVmVydGV4RmlsdGVyVHJhdmVyc2FsLmdldFB1cmUoKTsKKyAgICAgICAgICAgIGZpbHRlclRyYXZlcnNhbC5hZGRTdGFydChmaWx0ZXJUcmF2ZXJzYWwuZ2V0VHJhdmVyc2VyR2VuZXJhdG9yKCkuZ2VuZXJhdGUodmVydGV4LCBmaWx0ZXJUcmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCksIDEpKTsKKyAgICAgICAgICAgIHJldHVybiBmaWx0ZXJUcmF2ZXJzYWwuaGFzTmV4dCgpOworICAgICAgICB9CisgICAgICAgIC8vIC4uLm90aGVyd2lzZSB1c2UgaGFsdGVkIHRyYXZlcnNlcnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIHN0YXJ0IHZlcnRleAorICAgICAgICByZXR1cm4gdmVydGV4LnByb3BlcnR5KFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMpLmlzUHJlc2VudCgpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0VuZFZlcnRleChmaW5hbCBWZXJ0ZXggdmVydGV4KSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxWZXJ0ZXgsID8+IGZpbHRlclRyYXZlcnNhbCA9IHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyVHJhdmVyc2FsLmdldFB1cmUoKTsKKyAgICAgICAgLy9ub2luc3BlY3Rpb24gdW5jaGVja2VkCisgICAgICAgIGZpbmFsIFN0ZXA8VmVydGV4LCBWZXJ0ZXg+IHN0YXJ0U3RlcCA9IChTdGVwPFZlcnRleCwgVmVydGV4PikgZmlsdGVyVHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpOworICAgICAgICBmaWx0ZXJUcmF2ZXJzYWwuYWRkU3RhcnQoZmlsdGVyVHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHZlcnRleCwgc3RhcnRTdGVwLCAxKSk7CisgICAgICAgIHJldHVybiBmaWx0ZXJUcmF2ZXJzYWwuaGFzTmV4dCgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwcm9jZXNzRWRnZXMoZmluYWwgVmVydGV4IHZlcnRleCwgZmluYWwgUGF0aCBjdXJyZW50UGF0aCwgZmluYWwgTnVtYmVyIGN1cnJlbnREaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1lc3NlbmdlcjxUcmlwbGV0PFBhdGgsIEVkZ2UsIE51bWJlcj4+IG1lc3NlbmdlcikgeworCisgICAgICAgIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxWZXJ0ZXgsIEVkZ2U+IGVkZ2VUcmF2ZXJzYWwgPSB0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0UHVyZSgpOworICAgICAgICBlZGdlVHJhdmVyc2FsLmFkZFN0YXJ0KGVkZ2VUcmF2ZXJzYWwuZ2V0VHJhdmVyc2VyR2VuZXJhdG9yKCkuZ2VuZXJhdGUodmVydGV4LCBlZGdlVHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLCAxKSk7CisKKyAgICAgICAgd2hpbGUgKGVkZ2VUcmF2ZXJzYWwuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBmaW5hbCBFZGdlIGVkZ2UgPSBlZGdlVHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIE51bWJlciBkaXN0YW5jZSA9IGdldERpc3RhbmNlKGVkZ2UpOworCisgICAgICAgICAgICBWZXJ0ZXggb3RoZXJWID0gZWRnZS5pblZlcnRleCgpOworICAgICAgICAgICAgaWYgKG90aGVyVi5lcXVhbHModmVydGV4KSkKKyAgICAgICAgICAgICAgICBvdGhlclYgPSBlZGdlLm91dFZlcnRleCgpOworCisgICAgICAgICAgICAvLyBvbmx5IHNlbmQgbWVzc2FnZSBpZiB0aGUgYWRqYWNlbnQgdmVydGV4IGlzIG5vdCB5ZXQgcGFydCBvZiB0aGUgY3VycmVudCBwYXRoCisgICAgICAgICAgICBpZiAoIWN1cnJlbnRQYXRoLm9iamVjdHMoKS5jb250YWlucyhvdGhlclYpKSB7CisgICAgICAgICAgICAgICAgbWVzc2VuZ2VyLnNlbmRNZXNzYWdlKE1lc3NhZ2VTY29wZS5HbG9iYWwub2Yob3RoZXJWKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyaXBsZXQud2l0aChjdXJyZW50UGF0aCwgdGhpcy5pbmNsdWRlRWRnZXMgPyBlZGdlIDogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVySGVscGVyLmFkZChjdXJyZW50RGlzdGFuY2UsIGRpc3RhbmNlKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUhhbHRlZFRyYXZlcnNlcnMoZmluYWwgVmVydGV4IHZlcnRleCwgZmluYWwgTWVtb3J5IG1lbW9yeSkgeworICAgICAgICBpZiAoaXNTdGFydFZlcnRleCh2ZXJ0ZXgpKSB7CisgICAgICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHBhdGhzID0gbWVtb3J5LmdldChTSE9SVEVTVF9QQVRIUyk7CisgICAgICAgICAgICBpZiAodmVydGV4LnByb3BlcnR5KFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMpLmlzUHJlc2VudCgpKSB7CisgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgY3VycmVudCBzZXQgb2YgaGFsdGVkIHRyYXZlcnNlcnMgd2l0aCBuZXcgbmV3IHRyYXZlcnNlcnMgdGhhdCBob2xkIHRoZSBzaG9ydGVzdCBwYXRocworICAgICAgICAgICAgICAgIC8vIGZvdW5kIGZvciB0aGlzIHZlcnRleAorICAgICAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDxWZXJ0ZXg+IGhhbHRlZFRyYXZlcnNlcnMgPSB2ZXJ0ZXgudmFsdWUoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUyk7CisgICAgICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyU2V0PFBhdGg+IG5ld0hhbHRlZFRyYXZlcnNlcnMgPSBuZXcgVHJhdmVyc2VyU2V0PD4oKTsKKyAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxWZXJ0ZXg+IHRyYXZlcnNlciA6IGhhbHRlZFRyYXZlcnNlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSB0cmF2ZXJzZXIuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoZmluYWwgUGF0aCBwYXRoIDogcGF0aHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXRoLmdldCgwKS5lcXVhbHModikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdIYWx0ZWRUcmF2ZXJzZXJzLmFkZCh0cmF2ZXJzZXIuc3BsaXQocGF0aCwgdGhpcy5wcm9ncmFtU3RlcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZlcnRleC5wcm9wZXJ0eShWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5zaW5nbGUsIFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMsIG5ld0hhbHRlZFRyYXZlcnNlcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBOdW1iZXIgZ2V0RGlzdGFuY2UoZmluYWwgRWRnZSBlZGdlKSB7CisgICAgICAgIGlmICh0aGlzLmRpc3RhbmNlRXF1YWxzTnVtYmVyT2ZIb3BzKSByZXR1cm4gMTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsLkFkbWluPEVkZ2UsIE51bWJlcj4gdHJhdmVyc2FsID0gdGhpcy5kaXN0YW5jZVRyYXZlcnNhbC5nZXRQdXJlKCk7CisgICAgICAgIHRyYXZlcnNhbC5hZGRTdGFydCh0cmF2ZXJzYWwuZ2V0VHJhdmVyc2VyR2VuZXJhdG9yKCkuZ2VuZXJhdGUoZWRnZSwgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLCAxKSk7CisgICAgICAgIHJldHVybiB0cmF2ZXJzYWwudHJ5TmV4dCgpLm9yRWxzZSgwKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gZXhjZWVkc01heERpc3RhbmNlKGZpbmFsIE51bWJlciBkaXN0YW5jZSkgeworICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHN0b3AgdGhlIG1lc3NhZ2Ugc2VuZGluZyBmb3IgcGF0aHMgdGhhdCBleGNlZWQgdGhlIHNwZWNpZmllZCBtYXhpbXVtIGRpc3RhbmNlLiBTaW5jZQorICAgICAgICAvLyBjdXN0b20gZGlzdGFuY2VzIGNhbiBiZSBuZWdhdGl2ZSwgdGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIHRydWUgaWYgdGhlIGRpc3RhbmNlIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24KKyAgICAgICAgLy8gdGhlIG51bWJlciBvZiBob3BzLgorICAgICAgICByZXR1cm4gdGhpcy5kaXN0YW5jZUVxdWFsc051bWJlck9mSG9wcyAmJiB0aGlzLm1heERpc3RhbmNlICE9IG51bGwKKyAgICAgICAgICAgICAgICAmJiBOdW1iZXJIZWxwZXIuY29tcGFyZShkaXN0YW5jZSwgdGhpcy5tYXhEaXN0YW5jZSkgPiAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vdmUgYW55IHZhbGlkIHBhdGggaW50byB0aGUgVlAncyBtZW1vcnkuCisgICAgICogQHBhcmFtIHZlcnRleCBUaGUgY3VycmVudCB2ZXJ0ZXguCisgICAgICogQHBhcmFtIG1lbW9yeSBUaGUgVmVydGV4UHJvZ3JhbSdzIG1lbW9yeS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgY29sbGVjdFNob3J0ZXN0UGF0aHMoZmluYWwgVmVydGV4IHZlcnRleCwgZmluYWwgTWVtb3J5IG1lbW9yeSkgeworCisgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5PE1hcDxWZXJ0ZXgsIFBhaXI8TnVtYmVyLCBTZXQ8UGF0aD4+Pj4gcGF0aFByb3BlcnR5ID0gdmVydGV4LnByb3BlcnR5KFBBVEhTKTsKKworICAgICAgICBpZiAocGF0aFByb3BlcnR5LmlzUHJlc2VudCgpKSB7CisKKyAgICAgICAgICAgIGZpbmFsIE1hcDxWZXJ0ZXgsIFBhaXI8TnVtYmVyLCBTZXQ8UGF0aD4+PiBwYXRocyA9IHBhdGhQcm9wZXJ0eS52YWx1ZSgpOworICAgICAgICAgICAgZmluYWwgTGlzdDxQYXRoPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKworICAgICAgICAgICAgZm9yIChmaW5hbCBQYWlyPE51bWJlciwgU2V0PFBhdGg+PiBwYWlyIDogcGF0aHMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIFBhdGggcGF0aCA6IHBhaXIuZ2V0VmFsdWUxKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW5kVmVydGV4KHZlcnRleCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpc3RhbmNlRXF1YWxzTnVtYmVyT2ZIb3BzIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4RGlzdGFuY2UgPT0gbnVsbCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJIZWxwZXIuY29tcGFyZShwYWlyLmdldFZhbHVlMCgpLCB0aGlzLm1heERpc3RhbmNlKSA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGF0aFByb3BlcnR5LnJlbW92ZSgpOworCisgICAgICAgICAgICBtZW1vcnkuYWRkKFNIT1JURVNUX1BBVEhTLCByZXN1bHQpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoKSB7CisgICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOworICAgIH0KKworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJXZWFrZXJBY2Nlc3MiKQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgQnVpbGRlciBleHRlbmRzIEFic3RyYWN0VmVydGV4UHJvZ3JhbUJ1aWxkZXI8QnVpbGRlcj4geworCisKKyAgICAgICAgcHJpdmF0ZSBCdWlsZGVyKCkgeworICAgICAgICAgICAgc3VwZXIoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5jbGFzcyk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciBzb3VyY2UoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPz4gc291cmNlVmVydGV4RmlsdGVyKSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBzb3VyY2VWZXJ0ZXhGaWx0ZXIpIHRocm93IEdyYXBoLkV4Y2VwdGlvbnMuYXJndW1lbnRDYW5Ob3RCZU51bGwoInNvdXJjZVZlcnRleEZpbHRlciIpOworICAgICAgICAgICAgUHVyZVRyYXZlcnNhbC5zdG9yZVN0YXRlKHRoaXMuY29uZmlndXJhdGlvbiwgU09VUkNFX1ZFUlRFWF9GSUxURVIsIHNvdXJjZVZlcnRleEZpbHRlci5hc0FkbWluKCkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciB0YXJnZXQoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPz4gdGFyZ2V0VmVydGV4RmlsdGVyKSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSB0YXJnZXRWZXJ0ZXhGaWx0ZXIpIHRocm93IEdyYXBoLkV4Y2VwdGlvbnMuYXJndW1lbnRDYW5Ob3RCZU51bGwoInRhcmdldFZlcnRleEZpbHRlciIpOworICAgICAgICAgICAgUHVyZVRyYXZlcnNhbC5zdG9yZVN0YXRlKHRoaXMuY29uZmlndXJhdGlvbiwgVEFSR0VUX1ZFUlRFWF9GSUxURVIsIHRhcmdldFZlcnRleEZpbHRlci5hc0FkbWluKCkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciBlZGdlRGlyZWN0aW9uKGZpbmFsIERpcmVjdGlvbiBkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChudWxsID09IGRpcmVjdGlvbikgdGhyb3cgR3JhcGguRXhjZXB0aW9ucy5hcmd1bWVudENhbk5vdEJlTnVsbCgiZGlyZWN0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gZWRnZVRyYXZlcnNhbChfXy50b0UoZGlyZWN0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciBlZGdlVHJhdmVyc2FsKGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIEVkZ2U+IGVkZ2VUcmF2ZXJzYWwpIHsKKyAgICAgICAgICAgIGlmIChudWxsID09IGVkZ2VUcmF2ZXJzYWwpIHRocm93IEdyYXBoLkV4Y2VwdGlvbnMuYXJndW1lbnRDYW5Ob3RCZU51bGwoImVkZ2VUcmF2ZXJzYWwiKTsKKyAgICAgICAgICAgIFB1cmVUcmF2ZXJzYWwuc3RvcmVTdGF0ZSh0aGlzLmNvbmZpZ3VyYXRpb24sIEVER0VfVFJBVkVSU0FMLCBlZGdlVHJhdmVyc2FsLmFzQWRtaW4oKSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIGRpc3RhbmNlUHJvcGVydHkoZmluYWwgU3RyaW5nIGRpc3RhbmNlKSB7CisgICAgICAgICAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgID8gZGlzdGFuY2VUcmF2ZXJzYWwoX18udmFsdWVzKGRpc3RhbmNlKSkgLy8gdG9kbzogKFRyYXZlcnNhbCkgbmV3IEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDw+KGRpc3RhbmNlKQorICAgICAgICAgICAgICAgICAgICA6IGRpc3RhbmNlVHJhdmVyc2FsKERFRkFVTFRfRElTVEFOQ0VfVFJBVkVSU0FMLmdldFB1cmUoKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciBkaXN0YW5jZVRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWw8RWRnZSwgTnVtYmVyPiBkaXN0YW5jZVRyYXZlcnNhbCkgeworICAgICAgICAgICAgaWYgKG51bGwgPT0gZGlzdGFuY2VUcmF2ZXJzYWwpIHRocm93IEdyYXBoLkV4Y2VwdGlvbnMuYXJndW1lbnRDYW5Ob3RCZU51bGwoImRpc3RhbmNlVHJhdmVyc2FsIik7CisgICAgICAgICAgICBQdXJlVHJhdmVyc2FsLnN0b3JlU3RhdGUodGhpcy5jb25maWd1cmF0aW9uLCBESVNUQU5DRV9UUkFWRVJTQUwsIGRpc3RhbmNlVHJhdmVyc2FsLmFzQWRtaW4oKSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIG1heERpc3RhbmNlKGZpbmFsIE51bWJlciBkaXN0YW5jZSkgeworICAgICAgICAgICAgaWYgKG51bGwgIT0gZGlzdGFuY2UpCisgICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNldFByb3BlcnR5KE1BWF9ESVNUQU5DRSwgZGlzdGFuY2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5jbGVhclByb3BlcnR5KE1BWF9ESVNUQU5DRSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIGluY2x1ZGVFZGdlcyhmaW5hbCBib29sZWFuIGluY2x1ZGUpIHsKKyAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShJTkNMVURFX0VER0VTLCBpbmNsdWRlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEZlYXR1cmVzIGdldEZlYXR1cmVzKCkgeworICAgICAgICByZXR1cm4gbmV3IEZlYXR1cmVzKCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc0dsb2JhbE1lc3NhZ2VTY29wZXMoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNWZXJ0ZXhQcm9wZXJ0eUFkZGl0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL01lbW9yeVRyYXZlcnNhbFNpZGVFZmZlY3RzLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL01lbW9yeVRyYXZlcnNhbFNpZGVFZmZlY3RzLmphdmEKaW5kZXggZWQxNmZjOS4uZmE0NjU5YyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9NZW1vcnlUcmF2ZXJzYWxTaWRlRWZmZWN0cy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvTWVtb3J5VHJhdmVyc2FsU2lkZUVmZmVjdHMuamF2YQpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgIGZpbmFsIFNldDxNZW1vcnlDb21wdXRlS2V5PiBrZXlzID0gbmV3IEhhc2hTZXQ8PigpOwogICAgICAgICBmaW5hbCBUcmF2ZXJzYWxTaWRlRWZmZWN0cyBzaWRlRWZmZWN0cyA9CiAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLmdldFNpZGVFZmZlY3RzKCkgaW5zdGFuY2VvZiBNZW1vcnlUcmF2ZXJzYWxTaWRlRWZmZWN0cyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKE1lbW9yeVRyYXZlcnNhbFNpZGVFZmZlY3RzKSB0cmF2ZXJzYWwuZ2V0U2lkZUVmZmVjdHMoKSkuZ2V0U2lkZUVmZmVjdHMoKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoKE1lbW9yeVRyYXZlcnNhbFNpZGVFZmZlY3RzKSB0cmF2ZXJzYWwuZ2V0U2lkZUVmZmVjdHMoKSkuc2lkZUVmZmVjdHMgOgogICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLmdldFNpZGVFZmZlY3RzKCk7CiAgICAgICAgIHNpZGVFZmZlY3RzLmtleXMoKS4KICAgICAgICAgICAgICAgICBzdHJlYW0oKS4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29tcHV0ZXJSZXN1bHRTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL0NvbXB1dGVyUmVzdWx0U3RlcC5qYXZhCmluZGV4IGI1ZmQ4ZTguLjk1ZTU3MmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29tcHV0ZXJSZXN1bHRTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9Db21wdXRlclJlc3VsdFN0ZXAuamF2YQpAQCAtNjYsNyArNjYsOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSB0aGlzLnN0YXJ0cy5uZXh0KCkuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SXRlcmF0b3IgPSBhdHRhY2gocmVzdWx0Lm1lbW9yeSgpLjxUcmF2ZXJzZXJTZXQ8Uz4+Z2V0KFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMpLml0ZXJhdG9yKCksIHJlc3VsdC5ncmFwaCgpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJdGVyYXRvciA9IGF0dGFjaChyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMpCisgICAgICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC5tZW1vcnkoKS48VHJhdmVyc2VyU2V0PFM+PmdldChUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKS5pdGVyYXRvcigpCisgICAgICAgICAgICAgICAgICAgICAgICA6IEVtcHR5SXRlcmF0b3IuaW5zdGFuY2UoKSwgcmVzdWx0LmdyYXBoKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9Db25uZWN0ZWRDb21wb25lbnQuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29ubmVjdGVkQ29tcG9uZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyMjNkOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29ubmVjdGVkQ29tcG9uZW50LmphdmEKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuY2x1c3RlcmluZy5jb25uZWN0ZWQuQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKKworLyoqCisgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9IHN0ZXAgb24KKyAqIHtAbGluayBHcmFwaFRyYXZlcnNhbCNjb25uZWN0ZWRDb21wb25lbnQoKX0gKCl9LgorICovCitwdWJsaWMgY2xhc3MgQ29ubmVjdGVkQ29tcG9uZW50IHsKKworICAgIC8qKgorICAgICAqIFRoZSBkZWZhdWx0IHByb3BlcnR5IGtleSBuYW1lIHRoYXQgd2lsbCBob2xkIHRoZSByZXN1bHQgb2YgdGhlIGFsZ29yaXRobS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb21wb25lbnQgPSBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLkNPTVBPTkVOVDsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIGVkZ2UgdG8gdHJhdmVyc2Ugd2hlbiBjYWxjdWxhdGluZyB0aGUgcGFnZXJhbmsuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZWRnZXMgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLmNvbm5lY3RlZENvbXBvbmVudC5lZGdlcyIpOworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlcyB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2l0aGluIHdoaWNoIHRvIHN0b3JlIHRoZSBwYWdlcmFuayB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLmNvbm5lY3RlZENvbXBvbmVudC5wcm9wZXJ0eU5hbWUiKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjIyY2ZhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9Db25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoRmlsdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZW1vcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcuY29ubmVjdGVkLkNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29uZmlndXJpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbFBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuVHJhdmVyc2VyU2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5QdXJlVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuU2VyaWFsaXplcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkJhc2U2NDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtU3RlcCBleHRlbmRzIFZlcnRleFByb2dyYW1TdGVwIGltcGxlbWVudHMgVHJhdmVyc2FsUGFyZW50LCBDb25maWd1cmluZyB7CisKKyAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CisgICAgcHJpdmF0ZSBQdXJlVHJhdmVyc2FsPFZlcnRleCwgRWRnZT4gZWRnZVRyYXZlcnNhbDsKKyAgICBwcml2YXRlIFN0cmluZyBjbHVzdGVyUHJvcGVydHkgPSBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLkNPTVBPTkVOVDsKKworICAgIHB1YmxpYyBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsKSB7CisgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CisgICAgICAgIHRoaXMuY29uZmlndXJlKENvbm5lY3RlZENvbXBvbmVudC5lZGdlcywgX18uPFZlcnRleD5ib3RoRSgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICBpZiAoa2V5VmFsdWVzWzBdLmVxdWFscyhDb25uZWN0ZWRDb21wb25lbnQuZWRnZXMpKSB7CisgICAgICAgICAgICBpZiAoIShrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBUcmF2ZXJzYWwpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNvbm5lY3RlZENvbXBvbmVudC5lZGdlcyByZXF1aXJlcyBhIFRyYXZlcnNhbCBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMuZWRnZVRyYXZlcnNhbCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4oKChUcmF2ZXJzYWw8VmVydGV4LEVkZ2U+KSBrZXlWYWx1ZXNbMV0pLmFzQWRtaW4oKSk7CisgICAgICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5VmFsdWVzWzBdLmVxdWFscyhDb25uZWN0ZWRDb21wb25lbnQucHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgU3RyaW5nKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb25uZWN0ZWRDb21wb25lbnQucHJvcGVydHlOYW1lIHJlcXVpcmVzIGEgU3RyaW5nIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICAgICAgdGhpcy5jbHVzdGVyUHJvcGVydHkgPSAoU3RyaW5nKSBrZXlWYWx1ZXNbMV07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMuY2x1c3RlclByb3BlcnR5Lmhhc2hDb2RlKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3Rvcnkuc3RlcFN0cmluZyh0aGlzLCB0aGlzLmNsdXN0ZXJQcm9wZXJ0eSwgbmV3IEdyYXBoRmlsdGVyKHRoaXMuY29tcHV0ZXIpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbSBnZW5lcmF0ZVByb2dyYW0oZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsLkFkbWluPFZlcnRleCwgRWRnZT4gZGV0YWNoZWRUcmF2ZXJzYWwgPSB0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0UHVyZSgpOworICAgICAgICBkZXRhY2hlZFRyYXZlcnNhbC5zZXRTdHJhdGVnaWVzKFRyYXZlcnNhbFN0cmF0ZWdpZXMuR2xvYmFsQ2FjaGUuZ2V0U3RyYXRlZ2llcyhncmFwaC5nZXRDbGFzcygpKSk7CisKKyAgICAgICAgZmluYWwgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5CdWlsZGVyIGJ1aWxkZXIgPSBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuCisgICAgICAgICAgICAgICAgZWRnZXMoZGV0YWNoZWRUcmF2ZXJzYWwpLgorICAgICAgICAgICAgICAgIHByb3BlcnR5KHRoaXMuY2x1c3RlclByb3BlcnR5KTsKKworICAgICAgICBpZiAobWVtb3J5LmV4aXN0cyhUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKSkgeworICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyU2V0PD8+IGhhbHRlZFRyYXZlcnNlcnMgPSBtZW1vcnkuZ2V0KFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMpOworICAgICAgICAgICAgaWYgKCFoYWx0ZWRUcmF2ZXJzZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIE9iamVjdCBoYWx0ZWRUcmF2ZXJzZXJzVmFsdWU7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlID0gQmFzZTY0LmdldEVuY29kZXIoKS5lbmNvZGVUb1N0cmluZyhTZXJpYWxpemVyLnNlcmlhbGl6ZU9iamVjdChoYWx0ZWRUcmF2ZXJzZXJzKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgSU9FeGNlcHRpb24gaWdub3JlZCkgeworICAgICAgICAgICAgICAgICAgICBoYWx0ZWRUcmF2ZXJzZXJzVmFsdWUgPSBoYWx0ZWRUcmF2ZXJzZXJzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBidWlsZGVyLmNvbmZpZ3VyZShUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTLCBoYWx0ZWRUcmF2ZXJzZXJzVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuY3JlYXRlKGdyYXBoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXAgY2xvbmUoKSB7CisgICAgICAgIHJldHVybiAoQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXApIHN1cGVyLmNsb25lKCk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY5YTk1NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGFnZVJhbmsuamF2YQpAQCAtMCwwICsxLDQzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworCisvKioKKyAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0gc3RlcCBvbgorICoge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3BhZ2VSYW5rKCl9LgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgUGFnZVJhbmsgeworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdGhhdCB0aGUgYWxnb3JpdGhtIHNob3VsZCBydW4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGltZXMgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnBhZ2VSYW5rLnRpbWVzIik7CisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSBlZGdlIHRvIHRyYXZlcnNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHBhZ2VyYW5rLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGVkZ2VzID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5wYWdlUmFuay5lZGdlcyIpOworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlcyB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2l0aGluIHdoaWNoIHRvIHN0b3JlIHRoZSBwYWdlcmFuayB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnBhZ2VSYW5rLnByb3BlcnR5TmFtZSIpOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFua1ZlcnRleFByb2dyYW1TdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQppbmRleCAyZjY3YWViLi4yNzdiNGM2IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQpAQCAtMjMsMTIgKzIzLDE0IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIucmFua2luZy5wYWdlcmFuay5QYWdlUmFua1ZlcnRleFByb2dyYW07CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5sYW1iZGEuSGFsdGVkVHJhdmVyc2Vyc0NvdW50VHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkJ5TW9kdWxhdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVGltZXNNb2R1bGF0aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxQYXJlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuUHVyZVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwpAQCAtNDIsOSArNDQsMTIgQEAKIAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIFBhZ2VSYW5rVmVydGV4UHJvZ3JhbVN0ZXAgZXh0ZW5kcyBWZXJ0ZXhQcm9ncmFtU3RlcCBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgQnlNb2R1bGF0aW5nLCBUaW1lc01vZHVsYXRpbmcgeworcHVibGljIGZpbmFsIGNsYXNzIFBhZ2VSYW5rVmVydGV4UHJvZ3JhbVN0ZXAgZXh0ZW5kcyBWZXJ0ZXhQcm9ncmFtU3RlcAorICAgICAgICBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgQnlNb2R1bGF0aW5nLCBUaW1lc01vZHVsYXRpbmcsIENvbmZpZ3VyaW5nIHsKIAorICAgIHByaXZhdGUgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKICAgICBwcml2YXRlIFB1cmVUcmF2ZXJzYWw8VmVydGV4LCBFZGdlPiBlZGdlVHJhdmVyc2FsOwogICAgIHByaXZhdGUgU3RyaW5nIHBhZ2VSYW5rUHJvcGVydHkgPSBQYWdlUmFua1ZlcnRleFByb2dyYW0uUEFHRV9SQU5LOwogICAgIHByaXZhdGUgaW50IHRpbWVzID0gMjA7CkBAIC01MywyMyArNTgsNTkgQEAKICAgICBwdWJsaWMgUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsLCBmaW5hbCBkb3VibGUgYWxwaGEpIHsKICAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKICAgICAgICAgdGhpcy5hbHBoYSA9IGFscGhhOwotICAgICAgICB0aGlzLm1vZHVsYXRlQnkoX18uPFZlcnRleD5vdXRFKCkuYXNBZG1pbigpKTsKKyAgICAgICAgdGhpcy5jb25maWd1cmUoUGFnZVJhbmsuZWRnZXMsIF9fLjxWZXJ0ZXg+b3V0RSgpLmFzQWRtaW4oKSk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoUGFnZVJhbmsuZWRnZXMpKSB7CisgICAgICAgICAgICBpZiAoIShrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBUcmF2ZXJzYWwpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlBhZ2VSYW5rLmVkZ2VzIHJlcXVpcmVzIGEgVHJhdmVyc2FsIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICAgICAgdGhpcy5lZGdlVHJhdmVyc2FsID0gbmV3IFB1cmVUcmF2ZXJzYWw8PigoKFRyYXZlcnNhbDxWZXJ0ZXgsRWRnZT4pIGtleVZhbHVlc1sxXSkuYXNBZG1pbigpKTsKKyAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRlQ2hpbGQodGhpcy5lZGdlVHJhdmVyc2FsLmdldCgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlWYWx1ZXNbMF0uZXF1YWxzKFBhZ2VSYW5rLnByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghKGtleVZhbHVlc1sxXSBpbnN0YW5jZW9mIFN0cmluZykpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUGFnZVJhbmsucHJvcGVydHlOYW1lIHJlcXVpcmVzIGEgU3RyaW5nIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICAgICAgdGhpcy5wYWdlUmFua1Byb3BlcnR5ID0gKFN0cmluZykga2V5VmFsdWVzWzFdOworICAgICAgICB9IGVsc2UgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoUGFnZVJhbmsudGltZXMpKSB7CisgICAgICAgICAgICBpZiAoIShrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBJbnRlZ2VyKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQYWdlUmFuay50aW1lcyByZXF1aXJlcyBhbiBJbnRlZ2VyIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICAgICAgdGhpcy50aW1lcyA9IChpbnQpIGtleVZhbHVlc1sxXTsKKyAgICAgICAgfWVsc2UgeworICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldCh0aGlzLCBrZXlWYWx1ZXMpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNjb25maWd1cmUoT2JqZWN0Li4uKX0KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAorICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG1vZHVsYXRlQnkoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IGVkZ2VUcmF2ZXJzYWwpIHsKLSAgICAgICAgdGhpcy5lZGdlVHJhdmVyc2FsID0gbmV3IFB1cmVUcmF2ZXJzYWw8PigoVHJhdmVyc2FsLkFkbWluPFZlcnRleCwgRWRnZT4pIGVkZ2VUcmF2ZXJzYWwpOwotICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIGNvbmZpZ3VyZShQYWdlUmFuay5lZGdlcywgZWRnZVRyYXZlcnNhbCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNjb25maWd1cmUoT2JqZWN0Li4uKX0KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG1vZHVsYXRlQnkoZmluYWwgU3RyaW5nIHBhZ2VSYW5rUHJvcGVydHkpIHsKLSAgICAgICAgdGhpcy5wYWdlUmFua1Byb3BlcnR5ID0gcGFnZVJhbmtQcm9wZXJ0eTsKKyAgICAgICAgY29uZmlndXJlKFBhZ2VSYW5rLnByb3BlcnR5TmFtZSwgcGFnZVJhbmtQcm9wZXJ0eSk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNjb25maWd1cmUoT2JqZWN0Li4uKX0KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG1vZHVsYXRlVGltZXMoaW50IHRpbWVzKSB7Ci0gICAgICAgIHRoaXMudGltZXMgPSB0aW1lczsKKyAgICAgICAgY29uZmlndXJlKFBhZ2VSYW5rLnRpbWVzLCB0aW1lcyk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xMTgsNCArMTU5LDUgQEAKICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewogICAgICAgICByZXR1cm4gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMuZWRnZVRyYXZlcnNhbC5oYXNoQ29kZSgpIF4gdGhpcy5wYWdlUmFua1Byb3BlcnR5Lmhhc2hDb2RlKCkgXiB0aGlzLnRpbWVzOwogICAgIH0KKwogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QZWVyUHJlc3N1cmUuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwNTFmMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlLmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKKworLyoqCisgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9IHN0ZXAgb24KKyAqIHtAbGluayBHcmFwaFRyYXZlcnNhbCNwZWVyUHJlc3N1cmUoKX0uCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBQZWVyUHJlc3N1cmUgeworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdGhhdCB0aGUgYWxnb3JpdGhtIHNob3VsZCBydW4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGltZXMgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnBlZXJQcmVzc3VyZS50aW1lcyIpOworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlcyB0aGUgZWRnZSB0byB0cmF2ZXJzZSB3aGVuIGRldGVybWluaW5nIGNsdXN0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGVkZ2VzID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5wZWVyUHJlc3N1cmUuZWRnZXMiKTsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdpdGhpbiB3aGljaCB0byBzdG9yZSB0aGUgY2x1c3RlciB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnBlZXJQcmVzc3VyZS5wcm9wZXJ0eU5hbWUiKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbVN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQppbmRleCA0N2Q0MTYwLi5lMWNiYTYwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZVZlcnRleFByb2dyYW1TdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhCkBAIC0yNyw4ICsyNywxMCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQnlNb2R1bGF0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVGltZXNNb2R1bGF0aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxQYXJlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuUHVyZVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwpAQCAtNDIsMTYgKzQ0LDQ0IEBACiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBQZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtU3RlcCBleHRlbmRzIFZlcnRleFByb2dyYW1TdGVwIGltcGxlbWVudHMgVHJhdmVyc2FsUGFyZW50LCBCeU1vZHVsYXRpbmcsIFRpbWVzTW9kdWxhdGluZyB7CitwdWJsaWMgZmluYWwgY2xhc3MgUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbVN0ZXAgZXh0ZW5kcyBWZXJ0ZXhQcm9ncmFtU3RlcAorICAgICAgICBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgQnlNb2R1bGF0aW5nLCBUaW1lc01vZHVsYXRpbmcsIENvbmZpZ3VyaW5nIHsKIAorICAgIHByaXZhdGUgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKICAgICBwcml2YXRlIFB1cmVUcmF2ZXJzYWw8VmVydGV4LCBFZGdlPiBlZGdlVHJhdmVyc2FsOwogICAgIHByaXZhdGUgU3RyaW5nIGNsdXN0ZXJQcm9wZXJ0eSA9IFBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW0uQ0xVU1RFUjsKICAgICBwcml2YXRlIGludCB0aW1lcyA9IDMwOwogCiAgICAgcHVibGljIFBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW1TdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwpIHsKICAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKLSAgICAgICAgdGhpcy5tb2R1bGF0ZUJ5KF9fLjxWZXJ0ZXg+b3V0RSgpLmFzQWRtaW4oKSk7CisgICAgICAgIHRoaXMuY29uZmlndXJlKFBlZXJQcmVzc3VyZS5lZGdlcywgX18uPFZlcnRleD5vdXRFKCkuYXNBZG1pbigpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICBpZiAoa2V5VmFsdWVzWzBdLmVxdWFscyhQZWVyUHJlc3N1cmUuZWRnZXMpKSB7CisgICAgICAgICAgICBpZiAoIShrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBUcmF2ZXJzYWwpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlBlZXJQcmVzc3VyZS5lZGdlcyByZXF1aXJlcyBhIFRyYXZlcnNhbCBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMuZWRnZVRyYXZlcnNhbCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4oKChUcmF2ZXJzYWw8VmVydGV4LEVkZ2U+KSBrZXlWYWx1ZXNbMV0pLmFzQWRtaW4oKSk7CisgICAgICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5VmFsdWVzWzBdLmVxdWFscyhQZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgU3RyaW5nKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lIHJlcXVpcmVzIGEgU3RyaW5nIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICAgICAgdGhpcy5jbHVzdGVyUHJvcGVydHkgPSAoU3RyaW5nKSBrZXlWYWx1ZXNbMV07CisgICAgICAgIH0gZWxzZSBpZiAoa2V5VmFsdWVzWzBdLmVxdWFscyhQZWVyUHJlc3N1cmUudGltZXMpKSB7CisgICAgICAgICAgICBpZiAoIShrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBJbnRlZ2VyKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQZWVyUHJlc3N1cmUudGltZXMgcmVxdWlyZXMgYW4gSW50ZWdlciBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMudGltZXMgPSAoaW50KSBrZXlWYWx1ZXNbMV07CisgICAgICAgIH1lbHNlIHsKKyAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtNTksMjAgKzg5LDMxIEBACiAgICAgICAgIHJldHVybiBzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5lZGdlVHJhdmVyc2FsLmhhc2hDb2RlKCkgXiB0aGlzLmNsdXN0ZXJQcm9wZXJ0eS5oYXNoQ29kZSgpIF4gdGhpcy50aW1lczsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgI2NvbmZpZ3VyZShPYmplY3QuLi4pfQorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgbW9kdWxhdGVCeShmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gZWRnZVRyYXZlcnNhbCkgewotICAgICAgICB0aGlzLmVkZ2VUcmF2ZXJzYWwgPSBuZXcgUHVyZVRyYXZlcnNhbDw+KChUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCBFZGdlPikgZWRnZVRyYXZlcnNhbCk7Ci0gICAgICAgIHRoaXMuaW50ZWdyYXRlQ2hpbGQodGhpcy5lZGdlVHJhdmVyc2FsLmdldCgpKTsKKyAgICAgICAgY29uZmlndXJlKFBlZXJQcmVzc3VyZS5lZGdlcywgZWRnZVRyYXZlcnNhbCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNjb25maWd1cmUoT2JqZWN0Li4uKX0KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG1vZHVsYXRlQnkoZmluYWwgU3RyaW5nIGNsdXN0ZXJQcm9wZXJ0eSkgewotICAgICAgICB0aGlzLmNsdXN0ZXJQcm9wZXJ0eSA9IGNsdXN0ZXJQcm9wZXJ0eTsKKyAgICAgICAgY29uZmlndXJlKFBlZXJQcmVzc3VyZS5wcm9wZXJ0eU5hbWUsIGNsdXN0ZXJQcm9wZXJ0eSk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNjb25maWd1cmUoT2JqZWN0Li4uKX0KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG1vZHVsYXRlVGltZXMoaW50IHRpbWVzKSB7Ci0gICAgICAgIHRoaXMudGltZXMgPSB0aW1lczsKKyAgICAgICAgY29uZmlndXJlKFBlZXJQcmVzc3VyZS50aW1lcywgdGltZXMpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTE1LDQgKzE1Niw1IEBACiAgICAgICAgIHN1cGVyLnNldFRyYXZlcnNhbChwYXJlbnRUcmF2ZXJzYWwpOwogICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSk7CiAgICAgfQorCiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1Nob3J0ZXN0UGF0aC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9TaG9ydGVzdFBhdGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGQ3ODE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9TaG9ydGVzdFBhdGguamF2YQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CisKKy8qKgorICogQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfSBzdGVwLgorICovCitwdWJsaWMgY2xhc3MgU2hvcnRlc3RQYXRoIHsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIHRyYXZlcnNhbCB0byB1c2UgdG8gZmlsdGVyIHRoZSB0YXJnZXQgdmVydGljZXMgZm9yIGFsbCBzaG9ydGVzdCBwYXRocy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB0YXJnZXQgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnNob3J0ZXN0UGF0aC50YXJnZXQiKTsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIGRpcmVjdGlvbiBvciB0cmF2ZXJzYWwgdG8gdXNlIHRvIGZpbHRlciB0aGUgZWRnZXMgdHJhdmVyc2VkIGR1cmluZyB0aGUgc2hvcnRlc3QgcGF0aCBzZWFyY2ggcGhhc2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZWRnZXMgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnNob3J0ZXN0UGF0aC5lZGdlcyIpOworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlcyB0aGUgZWRnZSBwcm9wZXJ0eSBvciB0cmF2ZXJzYWwgdG8gdXNlIGZvciBzaG9ydGVzdCBwYXRoIGRpc3RhbmNlIGNhbGN1bGF0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBkaXN0YW5jZSA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmRpc3RhbmNlIik7CisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSBtYXhpbXVtIGRpc3RhbmNlIGZvciBhbGwgc2hvcnRlc3QgcGF0aHMuIEFueSBwYXRoIHdpdGggYSBkaXN0YW5jZSBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZAorICAgICAqIHZhbHVlIHdpbGwgbm90IGJlIHJldHVybmVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIG1heERpc3RhbmNlID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5zaG9ydGVzdFBhdGgubWF4RGlzdGFuY2UiKTsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIGluY2x1c2lvbiBvZiBlZGdlcyBpbiB0aGUgc2hvcnRlc3QgcGF0aCBjb21wdXRhdGlvbiByZXN1bHQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaW5jbHVkZUVkZ2VzID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5zaG9ydGVzdFBhdGguaW5jbHVkZUVkZ2VzIik7CisKKyAgICBzdGF0aWMgYm9vbGVhbiBjb25maWd1cmUoZmluYWwgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVN0ZXAgc3RlcCwgZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7CisKKyAgICAgICAgaWYgKHRhcmdldC5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVHJhdmVyc2FsKSB7CisgICAgICAgICAgICAgICAgc3RlcC5zZXRUYXJnZXRWZXJ0ZXhGaWx0ZXIoKFRyYXZlcnNhbCkgdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTaG9ydGVzdFBhdGgudGFyZ2V0IHJlcXVpcmVzIGEgVHJhdmVyc2FsIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVkZ2VzLmVxdWFscyhrZXkpKSB7CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUcmF2ZXJzYWwpIHsKKyAgICAgICAgICAgICAgICBzdGVwLnNldEVkZ2VUcmF2ZXJzYWwoKFRyYXZlcnNhbCkgdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEaXJlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBzdGVwLnNldEVkZ2VUcmF2ZXJzYWwoX18udG9FKChEaXJlY3Rpb24pIHZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJTaG9ydGVzdFBhdGguZWRnZXMgcmVxdWlyZXMgYSBUcmF2ZXJzYWwgb3IgYSBEaXJlY3Rpb24gYXMgaXRzIGFyZ3VtZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGlzdGFuY2UuZXF1YWxzKGtleSkpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFRyYXZlcnNhbCkgeworICAgICAgICAgICAgICAgIHN0ZXAuc2V0RGlzdGFuY2VUcmF2ZXJzYWwoKFRyYXZlcnNhbCkgdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAvLyB0b2RvOiBuZXcgRWxlbWVudFZhbHVlVHJhdmVyc2FsKChTdHJpbmcpIHZhbHVlKQorICAgICAgICAgICAgICAgIHN0ZXAuc2V0RGlzdGFuY2VUcmF2ZXJzYWwoX18udmFsdWVzKChTdHJpbmcpIHZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJTaG9ydGVzdFBhdGguZGlzdGFuY2UgcmVxdWlyZXMgYSBUcmF2ZXJzYWwgb3IgYSBwcm9wZXJ0eSBuYW1lIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1heERpc3RhbmNlLmVxdWFscyhrZXkpKSB7CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBzdGVwLnNldE1heERpc3RhbmNlKChOdW1iZXIpIHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiU2hvcnRlc3RQYXRoLm1heERpc3RhbmNlIHJlcXVpcmVzIGEgTnVtYmVyIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGluY2x1ZGVFZGdlcy5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQm9vbGVhbikgeworICAgICAgICAgICAgICAgIHN0ZXAuc2V0SW5jbHVkZUVkZ2VzKChCb29sZWFuKSB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlNob3J0ZXN0UGF0aC5pbmNsdWRlRWRnZXMgcmVxdWlyZXMgYSBCb29sZWFuIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlhMDllMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQpAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlclJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhGaWx0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuc2VhcmNoLnBhdGguU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLlRyYXZlcnNhbFZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxQYXJlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLlRyYXZlcnNlclNldDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuUHVyZVRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLlNlcmlhbGl6ZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkJhc2U2NDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCisvKioKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcCBleHRlbmRzIFZlcnRleFByb2dyYW1TdGVwIGltcGxlbWVudHMgVHJhdmVyc2FsUGFyZW50LCBDb25maWd1cmluZyB7CisKKyAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CisgICAgcHJpdmF0ZSBQdXJlVHJhdmVyc2FsPFZlcnRleCwgPz4gdGFyZ2V0VmVydGV4RmlsdGVyID0gU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5ERUZBVUxUX1ZFUlRFWF9GSUxURVJfVFJBVkVSU0FMLmNsb25lKCk7CisgICAgcHJpdmF0ZSBQdXJlVHJhdmVyc2FsPFZlcnRleCwgRWRnZT4gZWRnZVRyYXZlcnNhbCA9IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uREVGQVVMVF9FREdFX1RSQVZFUlNBTC5jbG9uZSgpOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxFZGdlLCBOdW1iZXI+IGRpc3RhbmNlVHJhdmVyc2FsID0gU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5ERUZBVUxUX0RJU1RBTkNFX1RSQVZFUlNBTC5jbG9uZSgpOworICAgIHByaXZhdGUgTnVtYmVyIG1heERpc3RhbmNlOworICAgIHByaXZhdGUgYm9vbGVhbiBpbmNsdWRlRWRnZXM7CisKKyAgICBwdWJsaWMgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCkgeworICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOworICAgIH0KKworICAgIHZvaWQgc2V0VGFyZ2V0VmVydGV4RmlsdGVyKGZpbmFsIFRyYXZlcnNhbCBmaWx0ZXJUcmF2ZXJzYWwpIHsKKyAgICAgICAgdGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXIgPSBuZXcgUHVyZVRyYXZlcnNhbDw+KHRoaXMuaW50ZWdyYXRlQ2hpbGQoZmlsdGVyVHJhdmVyc2FsLmFzQWRtaW4oKSkpOworICAgIH0KKworICAgIHZvaWQgc2V0RWRnZVRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWwgZWRnZVRyYXZlcnNhbCkgeworICAgICAgICB0aGlzLmVkZ2VUcmF2ZXJzYWwgPSBuZXcgUHVyZVRyYXZlcnNhbDw+KHRoaXMuaW50ZWdyYXRlQ2hpbGQoZWRnZVRyYXZlcnNhbC5hc0FkbWluKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldERpc3RhbmNlVHJhdmVyc2FsKGZpbmFsIFRyYXZlcnNhbCBkaXN0YW5jZVRyYXZlcnNhbCkgeworICAgICAgICB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsID0gbmV3IFB1cmVUcmF2ZXJzYWw8Pih0aGlzLmludGVncmF0ZUNoaWxkKGRpc3RhbmNlVHJhdmVyc2FsLmFzQWRtaW4oKSkpOworICAgIH0KKworICAgIHZvaWQgc2V0TWF4RGlzdGFuY2UoZmluYWwgTnVtYmVyIG1heERpc3RhbmNlKSB7CisgICAgICAgIHRoaXMubWF4RGlzdGFuY2UgPSBtYXhEaXN0YW5jZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEluY2x1ZGVFZGdlcyhmaW5hbCBib29sZWFuIGluY2x1ZGVFZGdlcykgeworICAgICAgICB0aGlzLmluY2x1ZGVFZGdlcyA9IGluY2x1ZGVFZGdlczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICBpZiAoIVNob3J0ZXN0UGF0aC5jb25maWd1cmUodGhpcywgKFN0cmluZykga2V5VmFsdWVzWzBdLCBrZXlWYWx1ZXNbMV0pKSB7CisgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVHJhdmVyc2VyLkFkbWluPENvbXB1dGVyUmVzdWx0PiBwcm9jZXNzTmV4dFN0YXJ0KCkgdGhyb3dzIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24geworICAgICAgICByZXR1cm4gc3VwZXIucHJvY2Vzc05leHRTdGFydCgpOworICAgIH0KKworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBMaXN0PFRyYXZlcnNhbC5BZG1pbjw/LCA/Pj4gZ2V0TG9jYWxDaGlsZHJlbigpIHsKKyAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXIuZ2V0KCksCisgICAgICAgICAgICAgICAgdGhpcy5lZGdlVHJhdmVyc2FsLmdldCgpLAorICAgICAgICAgICAgICAgIHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwuZ2V0KCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnN0ZXBTdHJpbmcodGhpcywgdGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXIuZ2V0KCksIHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSwKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmdldCgpLCB0aGlzLm1heERpc3RhbmNlLCB0aGlzLmluY2x1ZGVFZGdlcywgbmV3IEdyYXBoRmlsdGVyKHRoaXMuY29tcHV0ZXIpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbSBnZW5lcmF0ZVByb2dyYW0oZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKworICAgICAgICBmaW5hbCBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLkJ1aWxkZXIgYnVpbGRlciA9IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKQorICAgICAgICAgICAgICAgIC50YXJnZXQodGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXIuZ2V0UHVyZSgpKQorICAgICAgICAgICAgICAgIC5lZGdlVHJhdmVyc2FsKHRoaXMuZWRnZVRyYXZlcnNhbC5nZXRQdXJlKCkpCisgICAgICAgICAgICAgICAgLmRpc3RhbmNlVHJhdmVyc2FsKHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwuZ2V0UHVyZSgpKQorICAgICAgICAgICAgICAgIC5tYXhEaXN0YW5jZSh0aGlzLm1heERpc3RhbmNlKQorICAgICAgICAgICAgICAgIC5pbmNsdWRlRWRnZXModGhpcy5pbmNsdWRlRWRnZXMpOworCisgICAgICAgIC8vbm9pbnNwZWN0aW9uIHVuY2hlY2tlZAorICAgICAgICBmaW5hbCBQdXJlVHJhdmVyc2FsIHB1cmVSb290VHJhdmVyc2FsID0gbmV3IFB1cmVUcmF2ZXJzYWw8Pih0aGlzLnRyYXZlcnNhbCk7CisgICAgICAgIE9iamVjdCByb290VHJhdmVyc2FsVmFsdWU7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByb290VHJhdmVyc2FsVmFsdWUgPSBCYXNlNjQuZ2V0RW5jb2RlcigpLmVuY29kZVRvU3RyaW5nKFNlcmlhbGl6ZXIuc2VyaWFsaXplT2JqZWN0KHB1cmVSb290VHJhdmVyc2FsKSk7CisgICAgICAgIH0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIGlnbm9yZWQpIHsKKyAgICAgICAgICAgIHJvb3RUcmF2ZXJzYWxWYWx1ZSA9IHB1cmVSb290VHJhdmVyc2FsOworICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5jb25maWd1cmUoCisgICAgICAgICAgICAgICAgUHJvZ3JhbVZlcnRleFByb2dyYW1TdGVwLlJPT1RfVFJBVkVSU0FMLCByb290VHJhdmVyc2FsVmFsdWUsCisgICAgICAgICAgICAgICAgUHJvZ3JhbVZlcnRleFByb2dyYW1TdGVwLlNURVBfSUQsIHRoaXMuaWQpOworCisgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gbG9jYXRpb25zIGluIHdoaWNoIGhhbHRlZCB0cmF2ZXJzZXJzIGNhbiBiZSBzdG9yZWQ6IGluIG1lbW9yeSBvciBhcyB2ZXJ0ZXggcHJvcGVydGllcy4gSW4gdGhlCisgICAgICAgIC8vIGZvcm1lciBjYXNlIHRoZXkgbmVlZCB0byBiZSBjb3BpZWQgdG8gdGhpcyBWZXJ0ZXhQcm9ncmFtJ3MgY29uZmlndXJhdGlvbiBhcyB0aGUgVlAgd29uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlCisgICAgICAgIC8vIHByZXZpb3VzIFZQJ3MgbWVtb3J5LgorICAgICAgICBpZiAobWVtb3J5LmV4aXN0cyhUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKSkgeworICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyU2V0PD8+IGhhbHRlZFRyYXZlcnNlcnMgPSBtZW1vcnkuZ2V0KFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMpOworICAgICAgICAgICAgaWYgKCFoYWx0ZWRUcmF2ZXJzZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIE9iamVjdCBoYWx0ZWRUcmF2ZXJzZXJzVmFsdWU7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlID0gQmFzZTY0LmdldEVuY29kZXIoKS5lbmNvZGVUb1N0cmluZyhTZXJpYWxpemVyLnNlcmlhbGl6ZU9iamVjdChoYWx0ZWRUcmF2ZXJzZXJzKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgSU9FeGNlcHRpb24gaWdub3JlZCkgeworICAgICAgICAgICAgICAgICAgICBoYWx0ZWRUcmF2ZXJzZXJzVmFsdWUgPSBoYWx0ZWRUcmF2ZXJzZXJzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBidWlsZGVyLmNvbmZpZ3VyZShUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTLCBoYWx0ZWRUcmF2ZXJzZXJzVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuY3JlYXRlKGdyYXBoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRSZXF1aXJlbWVudHMoKSB7CisgICAgICAgIHJldHVybiBUcmF2ZXJzYWxQYXJlbnQuc3VwZXIuZ2V0U2VsZkFuZENoaWxkUmVxdWlyZW1lbnRzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwIGNsb25lKCkgeworICAgICAgICBmaW5hbCBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcCBjbG9uZSA9IChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcCkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgY2xvbmUudGFyZ2V0VmVydGV4RmlsdGVyID0gdGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXIuY2xvbmUoKTsKKyAgICAgICAgY2xvbmUuZWRnZVRyYXZlcnNhbCA9IHRoaXMuZWRnZVRyYXZlcnNhbC5jbG9uZSgpOworICAgICAgICBjbG9uZS5kaXN0YW5jZVRyYXZlcnNhbCA9IHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwuY2xvbmUoKTsKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gcGFyZW50VHJhdmVyc2FsKSB7CisgICAgICAgIHN1cGVyLnNldFRyYXZlcnNhbChwYXJlbnRUcmF2ZXJzYWwpOworICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyLmdldCgpKTsKKyAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkpOworICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwuZ2V0KCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5oYXNoQ29kZSgpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQppbmRleCA0ZWI5NTBmLi4zMGNmZWU1IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1RyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhCkBAIC0xOSwxOSArMTksMTUgQEAKIAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoRmlsdGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZW1vcnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5NZW1vcnlUcmF2ZXJzYWxTaWRlRWZmZWN0czsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLlRyYXZlcnNhbFZlcnRleFByb2dyYW07Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlZlcnRleFByb2dyYW1TdHJhdGVneTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5LmZpbmFsaXphdGlvbi5Db21wdXRlckZpbmFsaXphdGlvblN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxQYXJlbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWxTdHJhdGVnaWVzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5QdXJlVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuamF2YQppbmRleCA4OWU0MGNiLi5mYTZlMjNmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVmVydGV4UHJvZ3JhbVN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1ZlcnRleFByb2dyYW1TdHJhdGVneS5qYXZhCkBAIC0zNCw2ICszNCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVnaWVzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlJlYWRXcml0aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkVtcHR5U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LkFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k7CkBAIC0xMDEsMTEgKzEwMiwxMSBAQAogICAgICAgICAvLyB3cmFwIGFsbCBub24tVmVydGV4Q29tcHV0aW5nIHN0ZXBzIGludG8gYSBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcAogICAgICAgICBjdXJyZW50U3RlcCA9IHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKTsKICAgICAgICAgd2hpbGUgKCEoY3VycmVudFN0ZXAgaW5zdGFuY2VvZiBFbXB0eVN0ZXApKSB7Ci0gICAgICAgICAgICBUcmF2ZXJzYWwuQWRtaW48PywgPz4gY29tcHV0ZXJUcmF2ZXJzYWwgPSBuZXcgRGVmYXVsdFRyYXZlcnNhbDw+KCk7Ci0gICAgICAgICAgICBTdGVwPD8sID8+IGZpcnN0TGVnYWxPTEFQU3RlcCA9IGdldEZpcnN0TGVnYWxPTEFQU3RlcChjdXJyZW50U3RlcCk7Ci0gICAgICAgICAgICBTdGVwPD8sID8+IGxhc3RMZWdhbE9MQVBTdGVwID0gZ2V0TGFzdExlZ2FsT0xBUFN0ZXAoY3VycmVudFN0ZXApOworICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IGNvbXB1dGVyVHJhdmVyc2FsID0gbmV3IERlZmF1bHRUcmF2ZXJzYWw8PigpOworICAgICAgICAgICAgZmluYWwgU3RlcDw/LCA/PiBmaXJzdExlZ2FsT0xBUFN0ZXAgPSBnZXRGaXJzdExlZ2FsT0xBUFN0ZXAoY3VycmVudFN0ZXApOworICAgICAgICAgICAgZmluYWwgU3RlcDw/LCA/PiBsYXN0TGVnYWxPTEFQU3RlcCA9IGdldExhc3RMZWdhbE9MQVBTdGVwKGN1cnJlbnRTdGVwKTsKICAgICAgICAgICAgIGlmICghKGZpcnN0TGVnYWxPTEFQU3RlcCBpbnN0YW5jZW9mIEVtcHR5U3RlcCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBUcmF2ZXJzYWxIZWxwZXIuc3RlcEluZGV4KGZpcnN0TGVnYWxPTEFQU3RlcCwgdHJhdmVyc2FsKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaW5kZXggPSBUcmF2ZXJzYWxIZWxwZXIuc3RlcEluZGV4KGZpcnN0TGVnYWxPTEFQU3RlcCwgdHJhdmVyc2FsKTsKICAgICAgICAgICAgICAgICBUcmF2ZXJzYWxIZWxwZXIucmVtb3ZlVG9UcmF2ZXJzYWwoZmlyc3RMZWdhbE9MQVBTdGVwLCBsYXN0TGVnYWxPTEFQU3RlcC5nZXROZXh0U3RlcCgpLCAoVHJhdmVyc2FsLkFkbWluKSBjb21wdXRlclRyYXZlcnNhbCk7CiAgICAgICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAgdHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAgPSBuZXcgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAodHJhdmVyc2FsLCBjb21wdXRlclRyYXZlcnNhbCk7CiAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLmFkZFN0ZXAoaW5kZXgsIHRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwKTsKQEAgLTExNyw2ICsxMTgsNyBAQAogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwID0gY3VycmVudFN0ZXAuZ2V0TmV4dFN0ZXAoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIC8vIGlmIHRoZSBsYXN0IHZlcnRleCBjb21wdXRpbmcgc3RlcCBpcyBhIFRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwIGNvbnZlcnQgdG8gT0xUUCB3aXRoIENvbXB1dGVyUmVzdWx0U3RlcAogICAgICAgICBUcmF2ZXJzYWxIZWxwZXIuZ2V0TGFzdFN0ZXBPZkFzc2lnbmFibGVDbGFzcyhWZXJ0ZXhDb21wdXRpbmcuY2xhc3MsIHRyYXZlcnNhbCkuaWZQcmVzZW50KHN0ZXAgLT4gewogICAgICAgICAgICAgaWYgKHN0ZXAgaW5zdGFuY2VvZiBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCkgewpAQCAtMTI2LDYgKzEyOCw3IEBACiAgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLmluc2VydEFmdGVyU3RlcChjb21wdXRlclJlc3VsdFN0ZXAsIChTdGVwKSBzdGVwLCB0cmF2ZXJzYWwpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKKyAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgZGFuZ2xpbmcgdmVydGV4IGNvbXB1dGluZyBzdGVwLCBhZGQgYW4gaWRlbnRpdHkgdHJhdmVyc2FsIChzb2x2ZSB0aGlzIGluIHRoZSBmdXR1cmUgd2l0aCBhIHNwZWNpYWxpemVkIE1hcFJlZHVjZSkKICAgICAgICAgaWYgKHRyYXZlcnNhbC5nZXRFbmRTdGVwKCkgaW5zdGFuY2VvZiBWZXJ0ZXhDb21wdXRpbmcgJiYgISh0cmF2ZXJzYWwuZ2V0RW5kU3RlcCgpIGluc3RhbmNlb2YgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXApKSB7CiAgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCB0cmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCA9IG5ldyBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCh0cmF2ZXJzYWwsIF9fLmlkZW50aXR5KCkuYXNBZG1pbigpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci91dGlsL0NvbXB1dGVyR3JhcGguamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci91dGlsL0NvbXB1dGVyR3JhcGguamF2YQppbmRleCAzMTQzOGMzLi4yZTQwODJjIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdXRpbC9Db21wdXRlckdyYXBoLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3V0aWwvQ29tcHV0ZXJHcmFwaC5qYXZhCkBAIC02MiwxMSArNjIsMTEgQEAKICAgICB9CiAKICAgICBwdWJsaWMgc3RhdGljIENvbXB1dGVyVmVydGV4IHZlcnRleFByb2dyYW0oZmluYWwgVmVydGV4IHN0YXJWZXJ0ZXgsIFZlcnRleFByb2dyYW0gdmVydGV4UHJvZ3JhbSkgewotICAgICAgICByZXR1cm4gbmV3IENvbXB1dGVyR3JhcGgoU3RhdGUuVkVSVEVYX1BST0dSQU0sIHN0YXJWZXJ0ZXgsIE9wdGlvbmFsLm9mKHZlcnRleFByb2dyYW0pKS5nZXRTdGFyVmVydGV4KCk7CisgICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZXJHcmFwaChTdGF0ZS5WRVJURVhfUFJPR1JBTSwgc3RhclZlcnRleCwgT3B0aW9uYWwub2YodmVydGV4UHJvZ3JhbSkpLnN0YXJWZXJ0ZXg7CiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBDb21wdXRlclZlcnRleCBtYXBSZWR1Y2UoZmluYWwgVmVydGV4IHN0YXJWZXJ0ZXgpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDb21wdXRlckdyYXBoKFN0YXRlLk1BUF9SRURVQ0UsIHN0YXJWZXJ0ZXgsIE9wdGlvbmFsLmVtcHR5KCkpLmdldFN0YXJWZXJ0ZXgoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBDb21wdXRlckdyYXBoKFN0YXRlLk1BUF9SRURVQ0UsIHN0YXJWZXJ0ZXgsIE9wdGlvbmFsLmVtcHR5KCkpLnN0YXJWZXJ0ZXg7CiAgICAgfQogCiAgICAgcHVibGljIENvbXB1dGVyVmVydGV4IGdldFN0YXJWZXJ0ZXgoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0VtYmVkZGVkUmVtb3RlQ29ubmVjdGlvbi5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9FbWJlZGRlZFJlbW90ZUNvbm5lY3Rpb24uamF2YQppbmRleCAyNzFjMjk2Li5iOGIwYjg5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0VtYmVkZGVkUmVtb3RlQ29ubmVjdGlvbi5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvRW1iZWRkZWRSZW1vdGVDb25uZWN0aW9uLmphdmEKQEAgLTI4LDYgKzI4LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIAogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZTsKIAogLyoqCiAgKiBBbGxvd3MgYSB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0gdG8gYmUgc3VibWl0dGVkIHRvIGEgImxvY2FsIiB7QGxpbmsgR3JhcGh9IGluc3RhbmNlIHRodXMgc2ltdWxhdGluZyBhIGNvbm5lY3Rpb24KQEAgLTU2LDE1ICs1NywxNiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyA8RT4gSXRlcmF0b3I8VHJhdmVyc2VyLkFkbWluPEU+PiBzdWJtaXQoZmluYWwgVHJhdmVyc2FsPD8sIEU+IHRyYXZlcnNhbCkgdGhyb3dzIFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb24gewotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIlRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciB1c2VkIGludGVybmFsbHkiKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPEU+IFJlbW90ZVRyYXZlcnNhbDw/LCBFPiBzdWJtaXQoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUpIHRocm93cyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uIHsKLSAgICAgICAgLy8gdGhpcyBtZXRob2QgaXMgdGVjaG5pY2FsbHkgZGVwcmVjYXRlZCBidXQgaXQncyBzdGlsbCBiZWluZyB1c2VkIG9uIHRoZSAzLjIueC8zLjMueCBsaW5lcyBvZiBjb2RlLiBpdCBpcwotICAgICAgICAvLyBjYWxsZWQgYnkgc3VibWl0QXN5bmMoKSBpbiBSZW1vdGVDb25uZWN0aW9uIGl0c2VsZi4gdGhpcyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgc3VmZmljZSBmb3Igbm93Ci0gICAgICAgIHJldHVybiBuZXcgRW1iZWRkZWRSZW1vdGVUcmF2ZXJzYWwoSmF2YVRyYW5zbGF0b3Iub2YoZykudHJhbnNsYXRlKGJ5dGVjb2RlKSk7CisgICAgcHVibGljIDxFPiBDb21wbGV0YWJsZUZ1dHVyZTxSZW1vdGVUcmF2ZXJzYWw8PywgRT4+IHN1Ym1pdEFzeW5jKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB0aHJvd3MgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gMy4yLjQgLSB0aGlzIG1ldGhvZCB3aWxsIHByb2JhYmx5IGp1c3QgYmVjb21lCisgICAgICAgIC8vIHRoZSBuZXcgc3VibWl0KCkgaW4gMy4zLnggd2hlbiB0aGUgZGVwcmVjYXRpb24gaXMgcmVtb3ZlZAorICAgICAgICBmaW5hbCBDb21wbGV0YWJsZUZ1dHVyZTxSZW1vdGVUcmF2ZXJzYWw8PywgRT4+IHByb21pc2UgPSBuZXcgQ29tcGxldGFibGVGdXR1cmU8PigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcHJvbWlzZS5jb21wbGV0ZShuZXcgRW1iZWRkZWRSZW1vdGVUcmF2ZXJzYWwoSmF2YVRyYW5zbGF0b3Iub2YoZykudHJhbnNsYXRlKGJ5dGVjb2RlKSkpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gdCkgeworICAgICAgICAgICAgcHJvbWlzZS5jb21wbGV0ZUV4Y2VwdGlvbmFsbHkodCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb24uamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvbi5qYXZhCmluZGV4IDgxMjhmZGMuLjBjMTI0ZTcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvbi5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvbi5qYXZhCkBAIC0yMiw3ICsyMiw2IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuUmVtb3RlVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiAKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CkBAIC0zOCw0NyArMzcsMTUgQEAKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCiBwdWJsaWMgaW50ZXJmYWNlIFJlbW90ZUNvbm5lY3Rpb24gZXh0ZW5kcyBBdXRvQ2xvc2VhYmxlIHsKLQogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fUkVNT1RFID0gImdyZW1saW4ucmVtb3RlLiI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUyA9IEdSRU1MSU5fUkVNT1RFICsgInJlbW90ZUNvbm5lY3Rpb25DbGFzcyI7CiAKICAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4yLCByZXBsYWNlZCBieSB7QGxpbmsgI3N1Ym1pdEFzeW5jKEJ5dGVjb2RlKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgPEU+IEl0ZXJhdG9yPFRyYXZlcnNlci5BZG1pbjxFPj4gc3VibWl0KGZpbmFsIFRyYXZlcnNhbDw/LCBFPiB0cmF2ZXJzYWwpIHRocm93cyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uOwotCi0gICAgLyoqCi0gICAgICogU3VibWl0cyB7QGxpbmsgVHJhdmVyc2FsfSB7QGxpbmsgQnl0ZWNvZGV9IHRvIGEgc2VydmVyIGFuZCByZXR1cm5zIGEge0BsaW5rIFJlbW90ZVRyYXZlcnNhbH0uCi0gICAgICogVGhlIHtAbGluayBSZW1vdGVUcmF2ZXJzYWx9IGlzIGFuIGFic3RyYWN0aW9uIG92ZXIgdHdvIHR5cGVzIG9mIHJlc3VsdHMgdGhhdCBjYW4gYmUgcmV0dXJuZWQgYXMgcGFydCBvZiB0aGUKLSAgICAgKiByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXI6IHRoZSByZXN1bHRzIG9mIHRoZSB7QGxpbmsgVHJhdmVyc2FsfSBpdHNlbGYgYW5kIHRoZSBzaWRlLWVmZmVjdHMgdGhhdCBpdCBwcm9kdWNlZC4KLSAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjQsIHJlcGxhY2VkIGJ5IHtAbGluayAjc3VibWl0QXN5bmMoQnl0ZWNvZGUpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyA8RT4gUmVtb3RlVHJhdmVyc2FsPD8sRT4gc3VibWl0KGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB0aHJvd3MgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbjsKLQotICAgIC8qKgogICAgICAqIFN1Ym1pdHMge0BsaW5rIFRyYXZlcnNhbH0ge0BsaW5rIEJ5dGVjb2RlfSB0byBhIHNlcnZlciBhbmQgcmV0dXJucyBhIHByb21pc2Ugb2YgYSB7QGxpbmsgUmVtb3RlVHJhdmVyc2FsfS4KICAgICAgKiBUaGUge0BsaW5rIFJlbW90ZVRyYXZlcnNhbH0gaXMgYW4gYWJzdHJhY3Rpb24gb3ZlciB0d28gdHlwZXMgb2YgcmVzdWx0cyB0aGF0IGNhbiBiZSByZXR1cm5lZCBhcyBwYXJ0IG9mIHRoZQogICAgICAqIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlcjogdGhlIHJlc3VsdHMgb2YgdGhlIHtAbGluayBUcmF2ZXJzYWx9IGl0c2VsZiBhbmQgdGhlIHNpZGUtZWZmZWN0cyB0aGF0IGl0IHByb2R1Y2VkLgotICAgICAqIDxwLz4KLSAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUge0BsaW5rICNzdWJtaXQoQnl0ZWNvZGUpfSBtZXRob2QgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGJ1dCBnZW5lcmFsbHkKLSAgICAgKiBzcGVha2luZyB0aGlzIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgZGlyZWN0bHkgYXMge0BsaW5rICNzdWJtaXQoQnl0ZWNvZGUpfSBpcyBub3QgY2FsbGVkIGRpcmVjdGx5IGJ5Ci0gICAgICogYW55IHBhcnQgb2YgVGlua2VyUG9wLiBFdmVuIGlmIHRoZSB7QGNvZGUgUmVtb3RlQ29ubmVjdGlvbn0gaXRzZWxmIGlzIG5vdCBjYXBhYmxlIG9mIGFzeW5jaHJvbm91cyBiZWhhdmlvdXIsIGl0Ci0gICAgICogc2hvdWxkIHNpbXBseSBpbXBsZW1lbnQgdGhpcyBtZXRob2QgaW4gYSBibG9ja2luZyBmb3JtLgogICAgICAqLwotICAgIHB1YmxpYyBkZWZhdWx0IDxFPiBDb21wbGV0YWJsZUZ1dHVyZTxSZW1vdGVUcmF2ZXJzYWw8PywgRT4+IHN1Ym1pdEFzeW5jKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB0aHJvd3MgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbiB7Ci0gICAgICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gMy4yLjQgLSB0aGlzIG1ldGhvZCB3aWxsIHByb2JhYmx5IGp1c3QgYmVjb21lCi0gICAgICAgIC8vIHRoZSBuZXcgc3VibWl0KCkgaW4gMy4zLnggd2hlbiB0aGUgZGVwcmVjYXRpb24gaXMgcmVtb3ZlZAotICAgICAgICBmaW5hbCBDb21wbGV0YWJsZUZ1dHVyZTxSZW1vdGVUcmF2ZXJzYWw8PywgRT4+IHByb21pc2UgPSBuZXcgQ29tcGxldGFibGVGdXR1cmU8PigpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgcHJvbWlzZS5jb21wbGV0ZShzdWJtaXQoYnl0ZWNvZGUpKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHQpIHsKLSAgICAgICAgICAgIHByb21pc2UuY29tcGxldGVFeGNlcHRpb25hbGx5KHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwcm9taXNlOwotICAgIH0KKyAgICBwdWJsaWMgPEU+IENvbXBsZXRhYmxlRnV0dXJlPFJlbW90ZVRyYXZlcnNhbDw/LCBFPj4gc3VibWl0QXN5bmMoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUpIHRocm93cyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uOwogCiAgICAgLyoqCiAgICAgICogQ3JlYXRlIGEge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IGZyb20gYSB7QGNvZGUgQ29uZmlndXJhdGlvbn0gb2JqZWN0LiBUaGUgY29uZmlndXJhdGlvbiBtdXN0IGNvbnRhaW4gYQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9SZW1vdGVHcmFwaC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9SZW1vdGVHcmFwaC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDM0M2E4Li4wMDAwMDAwCi0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvUmVtb3RlR3JhcGguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1MiArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZTsKLQotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uUHJvcGVydGllc0NvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5SZW1vdGVTdHJhdGVneTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UcmFuc2FjdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5HcmFwaEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKLQotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLS8qKgotICogQSB7QGNvZGUgU2VydmVyR3JhcGh9IHJlcHJlc2VudHMgYSBwcm94eSBieSB3aGljaCB0cmF2ZXJzYWxzIHNwYXduZWQgZnJvbSB0aGlzIGdyYXBoIGFyZSBleHBlY3RlZCBvdmVyIGEKLSAqIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufS4gVGhpcyBpcyBub3QgYSBmdWxsIHtAbGluayBHcmFwaH0gaW1wbGVtZW50YXRpb24gaW4gdGhlIHNlbnNlIHRoYXQgdGhlIG1vc3Qgb2YgdGhlIG1ldGhvZHMKLSAqIHdpbGwgdGhyb3cgYW4ge0BsaW5rIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9ufS4gIFRoaXMgaW1wbGVtZW50YXRpb24gY2FuIG9ubHkgYmUgdXNlZCBmb3Igc3Bhd25pbmcgcmVtb3RlCi0gKiB0cmF2ZXJzYWwgaW5zdGFuY2VzLgotICoKLSAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKLSAqIEBkZXByZWNhdGVkIEFzIGZvciByZWxlYXNlIDMuMi4yLCByZXBsYWNlZCBieSB7QGxpbmsgVHJhdmVyc2FsU291cmNlI3dpdGhSZW1vdGUoUmVtb3RlQ29ubmVjdGlvbil9IG9yIGl0cyBvdmVybG9hZHMuCi0gKi8KLUBHcmFwaC5PcHRJbihHcmFwaC5PcHRJbi5TVUlURV9QUk9DRVNTX1NUQU5EQVJEKQotQEdyYXBoLk9wdEluKEdyYXBoLk9wdEluLlNVSVRFX1BST0NFU1NfQ09NUFVURVIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQ29yZVRyYXZlcnNhbFRlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJUaGUgdGVzdCBzdWl0ZSBkb2VzIG5vdCBzdXBwb3J0IHByb2ZpbGluZyBvciBsYW1iZGFzIGFuZCBmb3IgZ3Jvb3Z5IHRlc3RzOiAnQ291bGQgbm90IGxvY2F0ZSBtZXRob2Q6IEdyYXBoVHJhdmVyc2FsU291cmNlLndpdGhTdHJhdGVnaWVzKFt7dHJhdmVyc2FsQ2F0ZWdvcnk9aW50ZXJmYWNlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3kkRGVjb3JhdGlvblN0cmF0ZWd5fV0pJyIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvZ3JhbVRlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCByZXRyaWV2ZXMgZGV0YWNoZWQgdmVydGljZXMgdGhhdCBjYW4ndCBiZSBhdHRhY2hlZCB0byBhIHJlbW90ZSBPTEFQIGdyYXBoIikKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkVsZW1lbnRJZFN0cmF0ZWd5UHJvY2Vzc1Rlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IEVsZW1lbnRJZFN0cmF0ZWd5IGF0IHRoaXMgdGltZSAtIGl0IHJlcXVpcmVzIGEgbGFtYmRhIGluIGNvbnN0cnVjdGlvbiB3aGljaCBpcyBub3Qgc2VyaWFsaXphYmxlIikKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkV2ZW50U3RyYXRlZ3lQcm9jZXNzVGVzdCIsCi0gICAgICAgIG1ldGhvZCA9ICIqIiwKLSAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgRXZlbnRTdHJhdGVneSBhdCB0aGlzIHRpbWUgLSBzb21lIG9mIGl0cyBtZW1iZXJzIGFyZSBub3Qgc2VyaWFsaXphYmxlIikKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlBhcnRpdGlvblN0cmF0ZWd5UHJvY2Vzc1Rlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IFBhcnRpdGlvblN0cmF0ZWd5IGF0IHRoaXMgdGltZSIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5yYW5raW5nLnBhZ2VyYW5rLlBhZ2VSYW5rVmVydGV4UHJvZ3JhbVRlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IGRpcmVjdCBHcmFwaC5jb21wdXRlKCkgYWNjZXNzIikKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmJ1bGtsb2FkaW5nLkJ1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtVGVzdCIsCi0gICAgICAgIG1ldGhvZCA9ICIqIiwKLSAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuYnVsa2R1bXBpbmcuQnVsa0R1bXBlclZlcnRleFByb2dyYW1UZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbG9uZS5DbG9uZVZlcnRleFByb2dyYW1UZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyVGVzdCIsCi0gICAgICAgIG1ldGhvZCA9ICIqIiwKLSAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEludGVycnVwdGlvblRlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJUaGUgaW50ZXJydXB0aW9uIG1vZGVsIGluIHRoZSB0ZXN0IGNhbid0IGd1YXJhbnRlZSBpbnRlcnJ1cHRpb24gYXQgdGhlIHJpZ2h0IHRpbWUgd2l0aCBSZW1vdGVHcmFwaC4iKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEludGVycnVwdGlvbkNvbXB1dGVyVGVzdCIsCi0gICAgICAgIG1ldGhvZCA9ICIqIiwKLSAgICAgICAgcmVhc29uID0gIlRoZSBpbnRlcnJ1cHRpb24gbW9kZWwgaW4gdGhlIHRlc3QgY2FuJ3QgZ3VhcmFudGVlIGludGVycnVwdGlvbiBhdCB0aGUgcmlnaHQgdGltZSB3aXRoIFJlbW90ZUdyYXBoLiIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlN0b3JlVGVzdCIsCi0gICAgICAgIG1ldGhvZCA9ICJnX3dpdGhTaWRlRWZmZWN0WGFfc2V0WF9WX2JvdGhfbmFtZV9zdG9yZVhhWF9jYXBYYVgiLAotICAgICAgICByZWFzb24gPSAiVGhpcyB0ZXN0IHJldHVybnMgQnVsa1NldCB3aGljaCBpc24ndCBzdXBwb3J0ZWQgaW4gR3JhcGhTT04gMy4wIHVudGlsIDMuNC4wLiIpCi1ARGVwcmVjYXRlZAotcHVibGljIGNsYXNzIFJlbW90ZUdyYXBoIGltcGxlbWVudHMgR3JhcGggewotCi0gICAgcHJpdmF0ZSBmaW5hbCBSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb247Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUkVNTElOX1JFTU9URV9HUkFQSF9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUyA9ICJncmVtbGluLnJlbW90ZUdyYXBoLnJlbW90ZUNvbm5lY3Rpb25DbGFzcyI7Ci0KLSAgICBzdGF0aWMgewotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVnaWVzLkdsb2JhbENhY2hlLnJlZ2lzdGVyU3RyYXRlZ2llcyhSZW1vdGVHcmFwaC5jbGFzcywgVHJhdmVyc2FsU3RyYXRlZ2llcy5HbG9iYWxDYWNoZS5nZXRTdHJhdGVnaWVzKEVtcHR5R3JhcGguY2xhc3MpLmNsb25lKCkuYWRkU3RyYXRlZ2llcyhSZW1vdGVTdHJhdGVneS5pbnN0YW5jZSgpKSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBSZW1vdGVHcmFwaChmaW5hbCBSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBSZW1vdGVHcmFwaH0gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uLCB3aGljaCBhbGxvd3Mge0BsaW5rIFJlbW90ZUdyYXBofQotICAgICAqIHRvIGJlIGNvbXBsaWFudCB3aXRoIHtAbGluayBHcmFwaEZhY3Rvcnl9LiBFeHBlY3RzIGtleSBmb3Ige0BsaW5rICNHUkVNTElOX1JFTU9URV9HUkFQSF9SRU1PVEVfQ09OTkVDVElPTl9DTEFTU30KLSAgICAgKiBhcyB3ZWxsIGFzIGFueSBjb25maWd1cmF0aW9uIHJlcXVpcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSB3aGljaCB3aWxsIGJlIGluc3RhbnRpYXRlZC4KLSAgICAgKiBOb3RlIHRoYXQgdGhlIHtAY29kZSBDb25maWd1cmF0aW9ufSBvYmplY3QgaXMgcGFzc2VkIGRvd24gd2l0aG91dCBjaGFuZ2UgdG8gdGhlIGNyZWF0aW9uIG9mIHRoZQotICAgICAqIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSBpbnN0YW5jZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIFJlbW90ZUdyYXBoIG9wZW4oZmluYWwgQ29uZmlndXJhdGlvbiBjb25mKSB7Ci0gICAgICAgIGlmICghY29uZi5jb250YWluc0tleShHUkVNTElOX1JFTU9URV9HUkFQSF9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUykpCi0gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb25maWd1cmF0aW9uIG11c3QgY29udGFpbiB0aGUgJyIgKyBHUkVNTElOX1JFTU9URV9HUkFQSF9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUyArICInIGtleSIpOwotCi0gICAgICAgIGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gcmVtb3RlQ29ubmVjdGlvbjsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBSZW1vdGVDb25uZWN0aW9uPiBjbGF6eiA9IENsYXNzLmZvck5hbWUoY29uZi5nZXRTdHJpbmcoR1JFTUxJTl9SRU1PVEVfR1JBUEhfUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MpKS5hc1N1YmNsYXNzKFJlbW90ZUNvbm5lY3Rpb24uY2xhc3MpOwotICAgICAgICAgICAgZmluYWwgQ29uc3RydWN0b3I8PyBleHRlbmRzIFJlbW90ZUNvbm5lY3Rpb24+IGN0b3IgPSBjbGF6ei5nZXRDb25zdHJ1Y3RvcihDb25maWd1cmF0aW9uLmNsYXNzKTsKLSAgICAgICAgICAgIHJlbW90ZUNvbm5lY3Rpb24gPSBjdG9yLm5ld0luc3RhbmNlKGNvbmYpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVHcmFwaChyZW1vdGVDb25uZWN0aW9uKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIFJlbW90ZUdyYXBoIG9wZW4oZmluYWwgU3RyaW5nIGNvbmZpZ0ZpbGUpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gb3BlbihuZXcgUHJvcGVydGllc0NvbmZpZ3VyYXRpb24oY29uZmlnRmlsZSkpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJlbW90ZUdyYXBofSBpbnN0YW5jZS4ge0BsaW5rIFJlbW90ZUdyYXBofSB3aWxsIGF0dGVtcHQgdG8gY2FsbCB0aGUKLSAgICAgKiB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbiNjbG9zZSgpfSBtZXRob2Qgd2hlbiB0aGUge0BsaW5rICNjbG9zZSgpfSBtZXRob2QgaXMgY2FsbGVkIG9uIHRoaXMgY2xhc3MuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gY29ubmVjdGlvbiB0aGUge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IGluc3RhbmNlIHRvIHVzZQotICAgICAqICAgICAgICAgICAgICAgICAgIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufQotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgUmVtb3RlR3JhcGggb3BlbihmaW5hbCBSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVHcmFwaChjb25uZWN0aW9uKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgUmVtb3RlQ29ubmVjdGlvbiBnZXRDb25uZWN0aW9uKCkgewotICAgICAgICByZXR1cm4gY29ubmVjdGlvbjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDbG9zZXMgdGhlIHVuZGVybHlpbmcge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259LgotICAgICAqLwotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgVmVydGV4IGFkZFZlcnRleChmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7Ci0gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJSZW1vdGVHcmFwaCBpcyBhIHByb3h5IHRvICVzIC0gdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIsIGNvbm5lY3Rpb24pKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPEMgZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBDIGNvbXB1dGUoZmluYWwgQ2xhc3M8Qz4gZ3JhcGhDb21wdXRlckNsYXNzKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKLSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlJlbW90ZUdyYXBoIGlzIGEgcHJveHkgdG8gJXMgLSB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIiwgY29ubmVjdGlvbikpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBHcmFwaENvbXB1dGVyIGNvbXB1dGUoKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKLSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlJlbW90ZUdyYXBoIGlzIGEgcHJveHkgdG8gJXMgLSB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIiwgY29ubmVjdGlvbikpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkge0BsaW5rIEl0ZXJhdG9yfSAtIGl0IGlzIG5vdCBtZWFudCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuCi0gICAgICovCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEl0ZXJhdG9yPFZlcnRleD4gdmVydGljZXMoZmluYWwgT2JqZWN0Li4uIHZlcnRleElkcykgewotICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlJdGVyYXRvcigpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkge0BsaW5rIEl0ZXJhdG9yfSAtIGl0IGlzIG5vdCBtZWFudCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuCi0gICAgICovCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEl0ZXJhdG9yPEVkZ2U+IGVkZ2VzKGZpbmFsIE9iamVjdC4uLiBlZGdlSWRzKSB7Ci0gICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUl0ZXJhdG9yKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFRyYW5zYWN0aW9uIHR4KCkgewotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFZhcmlhYmxlcyB2YXJpYWJsZXMoKSB7Ci0gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJSZW1vdGVHcmFwaCBpcyBhIHByb3h5IHRvICVzIC0gdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIsIGNvbm5lY3Rpb24pKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKCkgewotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEZlYXR1cmVzIGZlYXR1cmVzKCkgewotICAgICAgICByZXR1cm4gUmVtb3RlRmVhdHVyZXMuSU5TVEFOQ0U7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkuZ3JhcGhTdHJpbmcodGhpcywgY29ubmVjdGlvbi50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlbW90ZUZlYXR1cmVzIGltcGxlbWVudHMgRmVhdHVyZXMgewotICAgICAgICBzdGF0aWMgUmVtb3RlRmVhdHVyZXMgSU5TVEFOQ0UgPSBuZXcgUmVtb3RlRmVhdHVyZXMoKTsKLQotICAgICAgICBwcml2YXRlIFJlbW90ZUZlYXR1cmVzKCkgewotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBHcmFwaEZlYXR1cmVzIGdyYXBoKCkgewotICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoRmVhdHVyZXMuSU5TVEFOQ0U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlbW90ZUdyYXBoRmVhdHVyZXMgaW1wbGVtZW50cyBGZWF0dXJlcy5HcmFwaEZlYXR1cmVzIHsKLQotICAgICAgICBzdGF0aWMgUmVtb3RlR3JhcGhGZWF0dXJlcyBJTlNUQU5DRSA9IG5ldyBSZW1vdGVHcmFwaEZlYXR1cmVzKCk7Ci0KLSAgICAgICAgcHJpdmF0ZSBSZW1vdGVHcmFwaEZlYXR1cmVzKCkgewotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzVHJhbnNhY3Rpb25zKCkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzVGhyZWFkZWRUcmFuc2FjdGlvbnMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1JlbW90ZVN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1JlbW90ZVN0cmF0ZWd5LmphdmEKaW5kZXggODQ1YzhiYS4uNzk4NTVkMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9SZW1vdGVTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUmVtb3RlU3RyYXRlZ3kuamF2YQpAQCAtMjAsNyArMjAsNiBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlZlcnRleFByb2dyYW1TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5zdGVwLm1hcC5SZW1vdGVTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CkBAIC0zOCwxMiArMzcsOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TdWJncmFwaFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kudmVyaWZpY2F0aW9uLlZlcmlmaWNhdGlvbkV4Y2VwdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsSGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKIAotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKQEAgLTU3LDggKzUyLDcgQEAKIHB1YmxpYyBmaW5hbCBjbGFzcyBSZW1vdGVTdHJhdGVneSBleHRlbmRzIEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k8VHJhdmVyc2FsU3RyYXRlZ3kuRGVjb3JhdGlvblN0cmF0ZWd5PgogICAgICAgICBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5LkRlY29yYXRpb25TdHJhdGVneSB7CiAKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSZW1vdGVTdHJhdGVneSBJTlNUQU5DRSA9IG5ldyBSZW1vdGVTdHJhdGVneSgpOwotICAgIHByaXZhdGUgZmluYWwgT3B0aW9uYWw8UmVtb3RlQ29ubmVjdGlvbj4gcmVtb3RlQ29ubmVjdGlvbjsKKyAgICBwcml2YXRlIGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gcmVtb3RlQ29ubmVjdGlvbjsKIAogICAgIC8qKgogICAgICAqIFNob3VsZCBiZSBhcHBsaWVkIGJlZm9yZSBhbGwge0BsaW5rIERlY29yYXRpb25TdHJhdGVneX0gaW5zdGFuY2VzLgpAQCAtNzYsMjEgKzcwLDkgQEAKICAgICAgICAgYWRkKFN1YmdyYXBoU3RyYXRlZ3kuY2xhc3MpOwogICAgIH19OwogCi0gICAgcHJpdmF0ZSBSZW1vdGVTdHJhdGVneSgpIHsKLSAgICAgICAgcmVtb3RlQ29ubmVjdGlvbiA9IE9wdGlvbmFsLmVtcHR5KCk7Ci0gICAgfQotCiAgICAgcHVibGljIFJlbW90ZVN0cmF0ZWd5KGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gcmVtb3RlQ29ubmVjdGlvbikgewotICAgICAgICB0aGlzLnJlbW90ZUNvbm5lY3Rpb24gPSBPcHRpb25hbC5vZk51bGxhYmxlKHJlbW90ZUNvbm5lY3Rpb24pOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjIsIHJlcGxhY2VkIGJ5IHtAbGluayAjUmVtb3RlU3RyYXRlZ3koUmVtb3RlQ29ubmVjdGlvbil9IHdoZXJlIHRoaXMgbWV0aG9kIHNob3VsZAotICAgICAqIG9ubHkgYmUgdXNlZCBieSB7QGxpbmsgUmVtb3RlR3JhcGh9IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHN0YXRpYyBSZW1vdGVTdHJhdGVneSBpbnN0YW5jZSgpIHsKLSAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgICAgICBpZiAobnVsbCA9PSByZW1vdGVDb25uZWN0aW9uKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJyZW1vdGVDb25uZWN0aW9uIGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgIHRoaXMucmVtb3RlQ29ubmVjdGlvbiA9IHJlbW90ZUNvbm5lY3Rpb247CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xMDAsMjMgKzgyLDExIEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBhcHBseShmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdHJhdmVyc2FsKSB7Ci0gICAgICAgIC8vIHRoaXMgY2hlY2sgZm9yIGEgcmVtb3RlQ29ubmVjdGlvbiBpcyByZWFsbHkgb25seSByZWxldmFudCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgUmVtb3RlR3JhcGggcHJpb3IKLSAgICAgICAgLy8gdG8gdGhlIG5vdyBwcmVmZXJyZWQgbWV0aG9kIG9mIHdpdGhSZW1vdGUoKS4KLSAgICAgICAgaWYgKCFyZW1vdGVDb25uZWN0aW9uLmlzUHJlc2VudCgpKSB7Ci0gICAgICAgICAgICBpZiAoISh0cmF2ZXJzYWwuZ2V0R3JhcGgoKS5vckVsc2UoRW1wdHlHcmFwaC5pbnN0YW5jZSgpKSBpbnN0YW5jZW9mIFJlbW90ZUdyYXBoKSkKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJSZW1vdGVTdHJhdGVneSBleHBlY3RzIGEgUmVtb3RlR3JhcGggaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhlIFRyYXZlcnNhbCIpOwotCi0gICAgICAgICAgICBmaW5hbCBSZW1vdGVHcmFwaCByZW1vdGVHcmFwaCA9IChSZW1vdGVHcmFwaCkgdHJhdmVyc2FsLmdldEdyYXBoKCkuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAobnVsbCA9PSByZW1vdGVHcmFwaC5nZXRDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiUmVtb3RlU3RyYXRlZ3kgZXhwZWN0cyB0aGUgUmVtb3RlR3JhcGggaW5zdGFuY2UgdG8gaGF2ZSBhIFJlbW90ZUNvbm5lY3Rpb24iKTsKLSAgICAgICAgfQotCiAgICAgICAgIGlmICghKHRyYXZlcnNhbC5nZXRQYXJlbnQoKSBpbnN0YW5jZW9mIEVtcHR5U3RlcCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gcmVtb3RlIHN0ZXAgd3JhcHMgdGhlIHRyYXZlcnNhbCBhbmQgZW1pdHMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24uCi0gICAgICAgIGZpbmFsIFJlbW90ZVN0ZXA8PywgPz4gcmVtb3RlU3RlcCA9IG5ldyBSZW1vdGVTdGVwPD4odHJhdmVyc2FsLAotICAgICAgICAgICAgICAgIHJlbW90ZUNvbm5lY3Rpb24ub3JFbHNlR2V0KCgpIC0+ICgoUmVtb3RlR3JhcGgpIHRyYXZlcnNhbC5nZXRHcmFwaCgpLmdldCgpKS5nZXRDb25uZWN0aW9uKCkpKTsKKyAgICAgICAgZmluYWwgUmVtb3RlU3RlcDw/LCA/PiByZW1vdGVTdGVwID0gbmV3IFJlbW90ZVN0ZXA8Pih0cmF2ZXJzYWwsIHJlbW90ZUNvbm5lY3Rpb24pOwogICAgICAgICBUcmF2ZXJzYWxIZWxwZXIucmVtb3ZlQWxsU3RlcHModHJhdmVyc2FsKTsKICAgICAgICAgdHJhdmVyc2FsLmFkZFN0ZXAocmVtb3RlU3RlcCk7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0Fub255bW91c1RyYXZlcnNhbFNvdXJjZS5qYXZhCmluZGV4IDdjYjYyYzMuLjA1ZmNhYjcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuamF2YQpAQCAtMTksMTAgKzE5LDE0IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7CiAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLlByb3BlcnRpZXNDb25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CisKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUzsKIAogLyoqCiAgKiBQcm92aWRlcyBhIHVuaWZpZWQgd2F5IHRvIGNvbnN0cnVjdCBhIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSB0cmF2ZXJzYWwuIEluIHRoaXMgc3ludGF4CkBAIC02MCw5ICs2NCw3IEBACiAgICAgICogdHJhdmVyc2FscyBzcGF3bmVkIGZyb20gaXQgd2lsbCBleGVjdXRlIG92ZXIgdGhhdCByZWZlcmVuY2UuCiAgICAgICovCiAgICAgcHVibGljIFQgd2l0aFJlbW90ZShmaW5hbCBTdHJpbmcgY29uZmlnRmlsZSkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIC8vIGZvciBub3csIHRoaXMgbWV0aG9kIHNpbXBseSB1c2VzIHRoZSBkZXByZWNhdGVkIGFwcHJvYWNoLiB3aGVuIHRoaXMgYXBwcm9hY2ggaXMgcmVtb3ZlZCB3ZSBqdXN0IG5lZWQgdG8KLSAgICAgICAgLy8gbWFrZSBpdCBwb3NzaWJsZSB0byBzZXQgYSBSZW1vdGVDb25uZWN0aW9uIGRpcmVjdGx5IG9uIFRyYXZlcnNhbFNvdXJjZSBjb25zdHJ1Y3Rpb24uCi0gICAgICAgIHJldHVybiAoVCkgd2l0aEdyYXBoKEVtcHR5R3JhcGguaW5zdGFuY2UoKSkud2l0aFJlbW90ZShjb25maWdGaWxlKTsKKyAgICAgICAgcmV0dXJuIHdpdGhSZW1vdGUobmV3IFByb3BlcnRpZXNDb25maWd1cmF0aW9uKGNvbmZpZ0ZpbGUpKTsKICAgICB9CiAKICAgICAvKioKQEAgLTcwLDkgKzcyLDcgQEAKICAgICAgKiB0cmF2ZXJzYWxzIHNwYXduZWQgZnJvbSBpdCB3aWxsIGV4ZWN1dGUgb3ZlciB0aGF0IHJlZmVyZW5jZS4KICAgICAgKi8KICAgICBwdWJsaWMgVCB3aXRoUmVtb3RlKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZikgewotICAgICAgICAvLyBmb3Igbm93LCB0aGlzIG1ldGhvZCBzaW1wbHkgdXNlcyB0aGUgZGVwcmVjYXRlZCBhcHByb2FjaC4gd2hlbiB0aGlzIGFwcHJvYWNoIGlzIHJlbW92ZWQgd2UganVzdCBuZWVkIHRvCi0gICAgICAgIC8vIG1ha2UgaXQgcG9zc2libGUgdG8gc2V0IGEgUmVtb3RlQ29ubmVjdGlvbiBkaXJlY3RseSBvbiBUcmF2ZXJzYWxTb3VyY2UgY29uc3RydWN0aW9uLgotICAgICAgICByZXR1cm4gKFQpIHdpdGhHcmFwaChFbXB0eUdyYXBoLmluc3RhbmNlKCkpLndpdGhSZW1vdGUoY29uZik7CisgICAgICAgIHJldHVybiB3aXRoUmVtb3RlKFJlbW90ZUNvbm5lY3Rpb24uZnJvbShjb25mKSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC04MCw5ICs4MCwxMSBAQAogICAgICAqIHRyYXZlcnNhbHMgc3Bhd25lZCBmcm9tIGl0IHdpbGwgZXhlY3V0ZSBvdmVyIHRoYXQgcmVmZXJlbmNlLgogICAgICAqLwogICAgIHB1YmxpYyBUIHdpdGhSZW1vdGUoZmluYWwgUmVtb3RlQ29ubmVjdGlvbiByZW1vdGVDb25uZWN0aW9uKSB7Ci0gICAgICAgIC8vIGZvciBub3csIHRoaXMgbWV0aG9kIHNpbXBseSB1c2VzIHRoZSBkZXByZWNhdGVkIGFwcHJvYWNoLiB3aGVuIHRoaXMgYXBwcm9hY2ggaXMgcmVtb3ZlZCB3ZSBqdXN0IG5lZWQgdG8KLSAgICAgICAgLy8gbWFrZSBpdCBwb3NzaWJsZSB0byBzZXQgYSBSZW1vdGVDb25uZWN0aW9uIGRpcmVjdGx5IG9uIFRyYXZlcnNhbFNvdXJjZSBjb25zdHJ1Y3Rpb24uCi0gICAgICAgIHJldHVybiAoVCkgd2l0aEdyYXBoKEVtcHR5R3JhcGguaW5zdGFuY2UoKSkud2l0aFJlbW90ZShyZW1vdGVDb25uZWN0aW9uKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWxTb3VyY2VDbGFzcy5nZXRDb25zdHJ1Y3RvcihSZW1vdGVDb25uZWN0aW9uLmNsYXNzKS5uZXdJbnN0YW5jZShyZW1vdGVDb25uZWN0aW9uKTsKKyAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0NvbnRhaW5zLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0NvbnRhaW5zLmphdmEKaW5kZXggZGE0NmQwYi4uMzVhOGNhNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db250YWlucy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29udGFpbnMuamF2YQpAQCAtMTgsMTkgKzE4LDI3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbDsKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOworCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CiBpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpUHJlZGljYXRlOwogCiAvKioKICAqIHtAbGluayBDb250YWluc30gaXMgYSB7QGxpbmsgQmlQcmVkaWNhdGV9IHRoYXQgZXZhbHVhdGVzIHdoZXRoZXIgdGhlIGZpcnN0IG9iamVjdCBpcyBjb250YWluZWQgd2l0aGluIChvciBub3QKLSAqIHdpdGhpbikgdGhlIHNlY29uZCBjb2xsZWN0aW9uIG9iamVjdC4gRm9yIGV4YW1wbGU6CisgKiB3aXRoaW4pIHRoZSBzZWNvbmQgY29sbGVjdGlvbiBvYmplY3QuIElmIHRoZSBmaXJzdCBvYmplY3QgaXMgYSBudW1iZXIsIGVhY2ggZWxlbWVudCBpbiB0aGUgc2Vjb25kIGNvbGxlY3Rpb24KKyAqIHdpbGwgYmUgY29tcGFyZWQgdG8gdGhlIGZpcnN0IG9iamVjdCB1c2luZyB7QGxpbmsgQ29tcGFyZX0ncyB7QGNvZGUgZXF9IHByZWRpY2F0ZS4gVGhpcyB3aWxsIGVuc3VyZSwgdGhhdCBudW1iZXJzCisgKiBhcmUgbWF0Y2hlZCBieSB0aGVpciB2YWx1ZSBvbmx5LCBpZ25vcmluZyB0aGUgbnVtYmVyIHR5cGUuIEZvciBleGFtcGxlOgogICogPHAvPgogICogPHByZT4KICAqIGdyZW1saW4gQ29udGFpbnMud2l0aGluIFtncmVtbGluLCBibHVlcHJpbnRzLCBmdXJuYWNlXSA9PSB0cnVlCiAgKiBncmVtbGluIENvbnRhaW5zLndpdGhvdXQgW2dyZW1saW4sIHJleHN0ZXJdID09IGZhbHNlCiAgKiByZXhzdGVyIENvbnRhaW5zLndpdGhvdXQgW2dyZW1saW4sIGJsdWVwcmludHMsIGZ1cm5hY2VdID09IHRydWUKKyAqIDEyMyBDb250YWlucy53aXRoaW4gWzEsIDIsIDNdID09IGZhbHNlCisgKiAxMDAgQ29udGFpbnMud2l0aGluIFsxTCwgMTBMLCAxMDBMXSA9PSB0cnVlCiAgKiA8L3ByZT4KICAqCisgKgorICoKICAqIEBhdXRob3IgUGllcnJlIERlIFdpbGRlCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwpAQCAtNDQsNyArNTIsOSBAQAogICAgIHdpdGhpbiB7CiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIE9iamVjdCBmaXJzdCwgZmluYWwgQ29sbGVjdGlvbiBzZWNvbmQpIHsKLSAgICAgICAgICAgIHJldHVybiBzZWNvbmQuY29udGFpbnMoZmlyc3QpOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0IGluc3RhbmNlb2YgTnVtYmVyCisgICAgICAgICAgICAgICAgICAgID8gSXRlcmF0b3JVdGlscy5hbnlNYXRjaChzZWNvbmQuaXRlcmF0b3IoKSwgbyAtPiBDb21wYXJlLmVxLnRlc3QoZmlyc3QsIG8pKQorICAgICAgICAgICAgICAgICAgICA6IHNlY29uZC5jb250YWlucyhmaXJzdCk7CiAgICAgICAgIH0KICAgICB9LAogCkBAIC01Niw3ICs2Niw3IEBACiAgICAgd2l0aG91dCB7CiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIE9iamVjdCBmaXJzdCwgZmluYWwgQ29sbGVjdGlvbiBzZWNvbmQpIHsKLSAgICAgICAgICAgIHJldHVybiAhc2Vjb25kLmNvbnRhaW5zKGZpcnN0KTsKKyAgICAgICAgICAgIHJldHVybiAhd2l0aGluLnRlc3QoZmlyc3QsIHNlY29uZCk7CiAgICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0lPLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0lPLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdiNDY3MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvSU8uamF2YQpAQCAtMCwwICsxLDgzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkdyYXBoUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkdyYXBoV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhtbC5HcmFwaE1MUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBobWwuR3JhcGhNTFdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTldyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9SZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvV3JpdGVyOworCisvKioKKyAqIEZpZWxkcyB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9IHVzaW5nIHRoZQorICoge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLE9iamVjdCl9IHN0ZXAgbW9kdWxhdG9yIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9ucy4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBJTyB7CisKKyAgICBwcml2YXRlIElPKCkge30KKworICAgIC8qKgorICAgICAqIEEgdmFsdWUgdG8gc3VwcGx5IHRvIHtAbGluayBJTyNyZWFkZXJ9IG9yIHtAbGluayBJTyN3cml0ZXJ9IHRvIGluZGljYXRlIHRoZSBmb3JtYXQgdG8gdXNlLiBVc2luZyB0aGlzIHNob3J0aGFuZAorICAgICAqIHdpbGwgY29uZmlndXJlIGEgZGVmYXVsdCB7QGxpbmsgR3JhcGhTT05SZWFkZXJ9IG9yIHtAbGluayBHcmFwaFNPTldyaXRlcn0gcmVzcGVjdGl2ZWx5LAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdyYXBoc29uID0gImdyYXBoc29uIjsKKworICAgIC8qKgorICAgICAqIEEgdmFsdWUgdG8gc3VwcGx5IHRvIHtAbGluayBJTyNyZWFkZXJ9IG9yIHtAbGluayBJTyN3cml0ZXJ9IHRvIGluZGljYXRlIHRoZSBmb3JtYXQgdG8gdXNlLiBVc2luZyB0aGlzIHNob3J0aGFuZAorICAgICAqIHdpbGwgY29uZmlndXJlIGEgZGVmYXVsdCB7QGxpbmsgR3J5b1JlYWRlcn0gb3Ige0BsaW5rIEdyeW9Xcml0ZXJ9IHJlc3BlY3RpdmVseSwKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBncnlvID0gImdyeW8iOworCisgICAgLyoqCisgICAgICogQSB2YWx1ZSB0byBzdXBwbHkgdG8ge0BsaW5rIElPI3JlYWRlcn0gb3Ige0BsaW5rIElPI3dyaXRlcn0gdG8gaW5kaWNhdGUgdGhlIGZvcm1hdCB0byB1c2UuIFVzaW5nIHRoaXMgc2hvcnRoYW5kCisgICAgICogd2lsbCBjb25maWd1cmUgYSBkZWZhdWx0IHtAbGluayBHcmFwaE1MUmVhZGVyfSBvciB7QGxpbmsgR3JhcGhNTFdyaXRlcn0gcmVzcGVjdGl2ZWx5LAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdyYXBobWwgPSAiZ3JhcGhtbCI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3BlY2lmaWMge0BsaW5rIEdyYXBoUmVhZGVyfSBpbnN0YW5jZSB0byB1c2UsIHRoZSBuYW1lIG9mIHRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3NuYW1lIG9mIHN1Y2ggYW4KKyAgICAgKiBpbnN0YW5jZSBvciBvbmUgb2Yge0BsaW5rIElPI2dyYXBoc29ufSwge0BsaW5rIElPI2dyeW99IG9yIHtAbGluayBJTyNncmFwaG1sfS4gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkCisgICAgICogdGhlbiB7QGxpbmsgR3JhcGhUcmF2ZXJzYWxTb3VyY2UjaW8oU3RyaW5nKX0gd2lsbCBhdHRlbXB0IHRvIGNvbnN0cnVjdCBhIGRlZmF1bHQge0BsaW5rIEdyYXBoUmVhZGVyfSBiYXNlZCBvbgorICAgICAqIHRoZSBmaWxlIGV4dGVuc2lvbiBwcm92aWRlZCB0byBpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyByZWFkZXIgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLmlvLnJlYWRlciIpOworCisgICAgLyoqCisgICAgICogVGhlIHNwZWNpZmljIHtAbGluayBHcmFwaFdyaXRlcn0gaW5zdGFuY2UgdG8gdXNlLCB0aGUgbmFtZSBvZiB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzbmFtZSBvZiBzdWNoIGFuCisgICAgICogaW5zdGFuY2Ugb3Igb25lIG9mIHtAbGluayBJTyNncmFwaHNvbn0sIHtAbGluayBJTyNncnlvfSBvciB7QGxpbmsgSU8jZ3JhcGhtbH0uIElmIHRoaXMgdmFsdWUgaXMgbm90IHNwZWNpZmllZAorICAgICAqIHRoZW4ge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9IHdpbGwgYXR0ZW1wdCB0byBjb25zdHJ1Y3QgYSBkZWZhdWx0IHtAbGluayBHcmFwaFdyaXRlcn0gYmFzZWQgb24KKyAgICAgKiB0aGUgZmlsZSBleHRlbnNpb24gcHJvdmlkZWQgdG8gaXQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgd3JpdGVyID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5pby53cml0ZXIiKTsKKworICAgIC8qKgorICAgICAqIEEga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWVzIG9mIHtAbGluayBJb1JlZ2lzdHJ5fSBpbnN0YW5jZXMgdG8gdXNlLiBNYXkgYmUgc3BlY2lmaWVkCisgICAgICogbXVsdGlwbGUgdGltZXMgKGkuZS4gb25jZSBmb3IgZWFjaCByZWdpc3RyeSkgdXNpbmcgdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0gbW9kdWxhdG9yLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHJlZ2lzdHJ5ID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5pby5yZWdpc3RyeSIpOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvci5qYXZhCmluZGV4IDA0ZTcxMzAuLjRmYWRhMmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3IuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL09wZXJhdG9yLmphdmEKQEAgLTgyLDcgKzgyLDcgQEAKICAgICAgKi8KICAgICBtaW4gewogICAgICAgICBwdWJsaWMgT2JqZWN0IGFwcGx5KGZpbmFsIE9iamVjdCBhLCBmaW5hbCBPYmplY3QgYikgewotICAgICAgICAgICAgcmV0dXJuIE51bWJlckhlbHBlci5taW4oKE51bWJlcikgYSwgKE51bWJlcikgYik7CisgICAgICAgICAgICByZXR1cm4gTnVtYmVySGVscGVyLm1pbigoQ29tcGFyYWJsZSkgYSwgKENvbXBhcmFibGUpIGIpOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtOTMsNyArOTMsNyBAQAogICAgICAqLwogICAgIG1heCB7CiAgICAgICAgIHB1YmxpYyBPYmplY3QgYXBwbHkoZmluYWwgT2JqZWN0IGEsIGZpbmFsIE9iamVjdCBiKSB7Ci0gICAgICAgICAgICByZXR1cm4gTnVtYmVySGVscGVyLm1heCgoTnVtYmVyKSBhLCAoTnVtYmVyKSBiKTsKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXJIZWxwZXIubWF4KChDb21wYXJhYmxlKSBhLCAoQ29tcGFyYWJsZSkgYik7CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1BhcmFtZXRlcml6aW5nLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1BhcmFtZXRlcml6aW5nLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliN2UwODguLjAwMDAwMDAKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9QYXJhbWV0ZXJpemluZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOwotCi0vKioKLSAqIEFuIGludGVyZmFjZSBmb3Ige0BsaW5rIFN0ZXB9IGltcGxlbWVudGF0aW9ucyB0aGF0IGhvbGQgYSB7QGxpbmsgUGFyYW1ldGVyc30gb2JqZWN0LCB3aGljaCBmb2xkIGluIGFyZ3VtZW50cyBmcm9tCi0gKiBvdGhlciBzdGVwcy4gSXQgaXMgdHlwaWNhbGx5IHVzZWQgb24gbXV0YXRpbmcgc3RlcHMsIHN1Y2ggYXMge0Bjb2RlIGFkZFYoKX0sIHdoZXJlIGNhbGxzIHRvIHtAY29kZSBwcm9wZXJ0eShrLHYpfQotICogYXJlIGZvbGRlZCBpbiBhcyBwYXJhbWV0ZXJzIHRvIHRoYXQgYWRkIHZlcnRleCBzdGVwLgotICoKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFBhcmFtZXRlcml6aW5nIHsKLQotICAgIC8qKgotICAgICAqIEdldHMgdGhlIHBhcmFtZXRlcnMgb24gdGhlIHN0ZXAuCi0gICAgICovCi0gICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOwotfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UZXh0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzI1ODI1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UZXh0LmphdmEKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsOworCitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpUHJlZGljYXRlOworCisvKioKKyAqIHtAbGluayBUZXh0fSBpcyBhIHtAbGluayBqYXZhLnV0aWwuZnVuY3Rpb24uQmlQcmVkaWNhdGV9IHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmaXJzdCBzdHJpbmcgc3RhcnRzIHdpdGgsIHN0YXJ0cworICogbm90IHdpdGgsIGVuZHMgd2l0aCwgZW5kcyBub3Qgd2l0aCwgY29udGFpbnMgb3IgZG9lcyBub3QgY29udGFpbiB0aGUgc2Vjb25kIHN0cmluZyBhcmd1bWVudC4KKyAqCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICogQHNpbmNlIDMuNC4wCisgKi8KK3B1YmxpYyBlbnVtIFRleHQgaW1wbGVtZW50cyBCaVByZWRpY2F0ZTxTdHJpbmcsIFN0cmluZz4geworCisgICAgLyoqCisgICAgICogRXZhbHVhdGVzIGlmIHRoZSBmaXJzdCBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNlY29uZC4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHN0YXJ0aW5nV2l0aCB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIFN0cmluZyB2YWx1ZSwgZmluYWwgU3RyaW5nIHByZWZpeCkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnN0YXJ0c1dpdGgocHJlZml4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgbmVnYXRpdmUgb2Yge0Bjb2RlIHN0YXJ0c1dpdGh9IGlzIHtAbGluayAjbm90U3RhcnRpbmdXaXRofS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dCBuZWdhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gbm90U3RhcnRpbmdXaXRoOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEV2YWx1YXRlcyBpZiB0aGUgZmlyc3Qgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHNlY29uZC4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIG5vdFN0YXJ0aW5nV2l0aCB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIFN0cmluZyB2YWx1ZSwgZmluYWwgU3RyaW5nIHByZWZpeCkgeworICAgICAgICAgICAgcmV0dXJuICFzdGFydGluZ1dpdGgudGVzdCh2YWx1ZSwgcHJlZml4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgbmVnYXRpdmUgb2Yge0Bjb2RlIHN0YXJ0c05vdFdpdGh9IGlzIHtAbGluayAjc3RhcnRpbmdXaXRofS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dCBuZWdhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRpbmdXaXRoOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEV2YWx1YXRlcyBpZiB0aGUgZmlyc3Qgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc2Vjb25kLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgZW5kaW5nV2l0aCB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIFN0cmluZyB2YWx1ZSwgZmluYWwgU3RyaW5nIHN1ZmZpeCkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmVuZHNXaXRoKHN1ZmZpeCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG5lZ2F0aXZlIG9mIHtAY29kZSBlbmRzV2l0aH0gaXMge0BsaW5rICNub3RFbmRpbmdXaXRofS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dCBuZWdhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gbm90RW5kaW5nV2l0aDsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBFdmFsdWF0ZXMgaWYgdGhlIGZpcnN0IHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc2Vjb25kLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgbm90RW5kaW5nV2l0aCB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIFN0cmluZyB2YWx1ZSwgZmluYWwgU3RyaW5nIHByZWZpeCkgeworICAgICAgICAgICAgcmV0dXJuICFlbmRpbmdXaXRoLnRlc3QodmFsdWUsIHByZWZpeCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG5lZ2F0aXZlIG9mIHtAY29kZSBlbmRzTm90V2l0aH0gaXMge0BsaW5rICNlbmRpbmdXaXRofS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dCBuZWdhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gZW5kaW5nV2l0aDsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBFdmFsdWF0ZXMgaWYgdGhlIGZpcnN0IHN0cmluZyBjb250YWlucyB0aGUgc2Vjb25kLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgY29udGFpbmluZyB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIFN0cmluZyB2YWx1ZSwgZmluYWwgU3RyaW5nIHNlYXJjaCkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbnRhaW5zKHNlYXJjaCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG5lZ2F0aXZlIG9mIHtAY29kZSBjb250YWluc30gaXMge0BsaW5rICNub3RDb250YWluaW5nfS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dCBuZWdhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gbm90Q29udGFpbmluZzsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBFdmFsdWF0ZXMgaWYgdGhlIGZpcnN0IHN0cmluZyBkb2VzIG5vdCBjb250YWluIHRoZSBzZWNvbmQuCisgICAgICoKKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBub3RDb250YWluaW5nIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHRlc3QoZmluYWwgU3RyaW5nIHZhbHVlLCBmaW5hbCBTdHJpbmcgc2VhcmNoKSB7CisgICAgICAgICAgICByZXR1cm4gIWNvbnRhaW5pbmcudGVzdCh2YWx1ZSwgc2VhcmNoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgbmVnYXRpdmUgb2Yge0Bjb2RlIGFic2VudH0gaXMge0BsaW5rICNjb250YWluaW5nfS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dCBuZWdhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGFpbmluZzsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBQcm9kdWNlIHRoZSBvcHBvc2l0ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudCB7QGNvZGUgVGV4dH0gZW51bS4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYWJzdHJhY3QgVGV4dCBuZWdhdGUoKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVGV4dFAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVGV4dFAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzI4ODUzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UZXh0UC5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbDsKKworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaVByZWRpY2F0ZTsKKworLyoqCisgKiBQcmVkZWZpbmVkIHtAY29kZSBQcmVkaWNhdGV9IHZhbHVlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIHtAY29kZSBTdHJpbmd9IGZpbHRlcnMuCisgKgorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqLworcHVibGljIGNsYXNzIFRleHRQIGV4dGVuZHMgUDxTdHJpbmc+IHsKKworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJXZWFrZXJBY2Nlc3MiKQorICAgIHB1YmxpYyBUZXh0UChmaW5hbCBCaVByZWRpY2F0ZTxTdHJpbmcsIFN0cmluZz4gYmlQcmVkaWNhdGUsIGZpbmFsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICBzdXBlcihiaVByZWRpY2F0ZSwgdmFsdWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgVGV4dFAgJiYgc3VwZXIuZXF1YWxzKG90aGVyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gbnVsbCA9PSB0aGlzLm9yaWdpbmFsVmFsdWUgPyB0aGlzLmJpUHJlZGljYXRlLnRvU3RyaW5nKCkgOiB0aGlzLmJpUHJlZGljYXRlLnRvU3RyaW5nKCkgKyAiKCIgKyB0aGlzLm9yaWdpbmFsVmFsdWUgKyAiKSI7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFRleHRQIG5lZ2F0ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0UCh0aGlzLmJpUHJlZGljYXRlLm5lZ2F0ZSgpLCB0aGlzLm9yaWdpbmFsVmFsdWUpOworICAgIH0KKworICAgIHB1YmxpYyBUZXh0UCBjbG9uZSgpIHsKKyAgICAgICAgcmV0dXJuIChUZXh0UCkgc3VwZXIuY2xvbmUoKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vIHN0YXRpY3MKKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgU3RyaW5nIGRvZXMgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgICoKKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHRQIHN0YXJ0aW5nV2l0aChmaW5hbCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0UChUZXh0LnN0YXJ0aW5nV2l0aCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgU3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIGdpdmVuIHZhbHVlLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUZXh0UCBub3RTdGFydGluZ1dpdGgoZmluYWwgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgVGV4dFAoVGV4dC5ub3RTdGFydGluZ1dpdGgsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIFN0cmluZyBkb2VzIHN0YXJ0IHdpdGggdGhlIGdpdmVuIHZhbHVlLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUZXh0UCBlbmRpbmdXaXRoKGZpbmFsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IFRleHRQKFRleHQuZW5kaW5nV2l0aCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgU3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIGdpdmVuIHZhbHVlLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUZXh0UCBub3RFbmRpbmdXaXRoKGZpbmFsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IFRleHRQKFRleHQubm90RW5kaW5nV2l0aCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgU3RyaW5nIGRvZXMgY29udGFpbiB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgICoKKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHRQIGNvbnRhaW5pbmcoZmluYWwgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgVGV4dFAoVGV4dC5jb250YWluaW5nLCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiBTdHJpbmcgZG9lcyBub3QgY29udGFpbiB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgICoKKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHRQIG5vdENvbnRhaW5pbmcoZmluYWwgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgVGV4dFAoVGV4dC5ub3RDb250YWluaW5nLCB2YWx1ZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmFuc2xhdG9yLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYW5zbGF0b3IuamF2YQppbmRleCAwMzQ2MDkyLi44Y2RkODRkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYW5zbGF0b3IuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYW5zbGF0b3IuamF2YQpAQCAtMTksNyArMTksNyBAQAogCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7CiAKLWltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uVW5hcnlPcGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uQmlGdW5jdGlvbjsKIAogLyoqCiAgKiBBIFRyYW5zbGF0b3Igd2lsbCB0cmFuc2xhdGUge0BsaW5rIEJ5dGVjb2RlfSBpbnRvIGFub3RoZXIgcmVwcmVzZW50YXRpb24uIFRoYXQgcmVwcmVzZW50YXRpb24gbWF5IGJlIGEKQEAgLTYzLDMxICs2MywxMCBAQAogICAgIHB1YmxpYyBpbnRlcmZhY2UgU2NyaXB0VHJhbnNsYXRvciBleHRlbmRzIFRyYW5zbGF0b3I8U3RyaW5nLCBTdHJpbmc+IHsKIAogICAgICAgICAvKioKLSAgICAgICAgICogUHJvdmlkZXMgYSB3YXkgdG8gY3VzdG9taXplIGFuZCBvdmVycmlkZSB0aGUgc3RhbmRhcmQgdHJhbnNsYXRpb24gcHJvY2Vzcy4gQSB7QGxpbmsgU2NyaXB0VHJhbnNsYXRvcn0KLSAgICAgICAgICogaW1wbGVtZW50YXRpb24gY2FuIGNob29zZSB0byBleHBvc2UgYSB3YXkgdG8gYWNjZXB0IGEge0Bjb2RlIFR5cGVUcmFuc2xhdG9yfSB3aGljaCB3aWxsIGNvbnZlcnQgYW4gaW5jb21pbmcKLSAgICAgICAgICogb2JqZWN0IHRvIGEgZGlmZmVyZW50IGZvcm0gd2hpY2ggd2lsbCB0aGVuIGJlIG5vcm1hbGx5IHByb2Nlc3NlZCBvciBjYW4gcmV0dXJuIGEge0BsaW5rIEhhbmRsZWR9IG9iamVjdAotICAgICAgICAgKiB3aXRoIHRoZSBhbHJlYWR5IHRyYW5zbGF0ZWQgc2NyaXB0LgorICAgICAgICAgKiBQcm92aWRlcyBhIHdheSBmb3IgdGhlIHtAbGluayBTY3JpcHRUcmFuc2xhdG9yfSB0byBjb252ZXJ0IHZhcmlvdXMgZGF0YSB0eXBlcyB0byB0aGVpciBzdHJpbmcKKyAgICAgICAgICogcmVwcmVzZW50YXRpb25zIGluIHRoZWlyIHRhcmdldCBsYW5ndWFnZS4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBpbnRlcmZhY2UgVHlwZVRyYW5zbGF0b3IgZXh0ZW5kcyBVbmFyeU9wZXJhdG9yPE9iamVjdD4gewotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBUeXBlVHJhbnNsYXRvciBpZGVudGl0eSgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdCAtPiB0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIENvbnRhaW5zIGEgY29tcGxldGVkIHR5cGUgdHJhbnNsYXRpb24gZnJvbSB0aGUge0BsaW5rIFR5cGVUcmFuc2xhdG9yfS4KLSAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBjbGFzcyBIYW5kbGVkIHsKLSAgICAgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHRyYW5zbGF0aW9uOwotCi0gICAgICAgICAgICBwdWJsaWMgSGFuZGxlZChmaW5hbCBTdHJpbmcgdHJhbnNsYXRpb24pIHsKLSAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb247Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHJhbnNsYXRpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHB1YmxpYyBpbnRlcmZhY2UgVHlwZVRyYW5zbGF0b3IgZXh0ZW5kcyBCaUZ1bmN0aW9uPFN0cmluZywgT2JqZWN0LCBPYmplY3Q+IHsgfQogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsLmphdmEKaW5kZXggNTllYjYyOS4uM2IwMjI1NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbC5qYXZhCkBAIC01MDcsMjAgKzUwNywzNCBAQAogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIGJvb2xlYW4gaXNMb2NrZWQoKTsKIAorICAgICAgICAvKioKKyAgICAgICAgICogR2V0cyB0aGUge0BsaW5rIEdyYXBofSBpbnN0YW5jZSBhc3NvY2lhdGVkIHRvIHRoaXMge0BsaW5rIFRyYXZlcnNhbH0uCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgT3B0aW9uYWw8R3JhcGg+IGdldEdyYXBoKCk7CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEdldHMgdGhlIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IHRoYXQgc3Bhd25lZCB0aGUge0BsaW5rIFRyYXZlcnNhbH0gaW5zdGFuY2UgaW5pdGlhbGx5IGlmIHByZXNlbnQuIFRoaXMKKyAgICAgICAgICoge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gc2hvdWxkIGhhdmUgc3Bhd25lZCBmcm9tIHRoZSBhc3NvY2lhdGVkIHtAbGluayBHcmFwaH0gcmV0dXJuZWQgZnJvbQorICAgICAgICAgKiB7QGxpbmsgI2dldEdyYXBoKCl9LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGRlZmF1bHQgT3B0aW9uYWw8VHJhdmVyc2FsU291cmNlPiBnZXRUcmF2ZXJzYWxTb3VyY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWwuZW1wdHkoKTsKKyAgICAgICAgfQorCiAgICAgICAgIHB1YmxpYyB2b2lkIHNldEdyYXBoKGZpbmFsIEdyYXBoIGdyYXBoKTsKIAogICAgICAgICBwdWJsaWMgZGVmYXVsdCBib29sZWFuIGVxdWFscyhmaW5hbCBUcmF2ZXJzYWwuQWRtaW48UywgRT4gb3RoZXIpIHsKLSAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RlcD4gc3RlcHMgPSB0aGlzLmdldFN0ZXBzKCk7Ci0gICAgICAgICAgICBmaW5hbCBMaXN0PFN0ZXA+IG90aGVyU3RlcHMgPSBvdGhlci5nZXRTdGVwcygpOwotICAgICAgICAgICAgaWYgKHN0ZXBzLnNpemUoKSA9PSBvdGhlclN0ZXBzLnNpemUoKSkgewotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RlcHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGVwcy5nZXQoaSkuZXF1YWxzKG90aGVyU3RlcHMuZ2V0KGkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Q2xhc3MoKS5lcXVhbHMob3RoZXIuZ2V0Q2xhc3MoKSkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0ZXA+IHN0ZXBzID0gdGhpcy5nZXRTdGVwcygpOworICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RlcD4gb3RoZXJTdGVwcyA9IG90aGVyLmdldFN0ZXBzKCk7CisgICAgICAgICAgICAgICAgaWYgKHN0ZXBzLnNpemUoKSA9PSBvdGhlclN0ZXBzLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0ZXBzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0ZXBzLmdldChpKS5lcXVhbHMob3RoZXJTdGVwcy5nZXQoaSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxFbmdpbmUuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsRW5naW5lLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NzYyY2YuLjAwMDAwMDAKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxFbmdpbmUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbDsKLQotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKLQotaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7Ci0KLS8qKgotICogQSBUcmF2ZXJzYWxFbmdpbmUgaXMgcmVwb25zaWJsZSBmb3IgZXhlY3V0aW5nIGEge0BsaW5rIFRyYXZlcnNhbH0uIFRoZXJlIGFyZSB0d28ge0BsaW5rIFR5cGV9cyBvZiBUcmF2ZXJzYWxFbmdpbmVzLgotICoge0BsaW5rIFR5cGUjU1RBTkRBUkR9IGlzIHRoZSBPTFRQLCBpdGVyYXRvci1iYXNlZCBtb2RlbCBvZiBncmFwaCB0cmF2ZXJzYWwuCi0gKiB7QGxpbmsgVHlwZSNDT01QVVRFUn0gaXMgdGhlIE9MQVAsIG1lc3NhZ2UgcGFzc2luZyBtb2RlbCBvZiBncmFwaCB0cmF2ZXJzYWwuCi0gKiBFdmVyeSB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBzaG91bGQgYmUgcHJvdmlkZWQgYSB7QGxpbmsgVHJhdmVyc2FsRW5naW5lLkJ1aWxkZXJ9IHNvIGl0IGNhbiBjb25zdHJ1Y3QgYW4gZW5naW5lIGZvciBlYWNoIHNwYXduZWQge0BsaW5rIFRyYXZlcnNhbH0uCi0gKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLCByZXBsYWNlZCBieSB7QGxpbmsgQ29tcHV0ZXJ9LgotICovCi1ARGVwcmVjYXRlZAotcHVibGljIGludGVyZmFjZSBUcmF2ZXJzYWxFbmdpbmUgZXh0ZW5kcyBTZXJpYWxpemFibGUgewotCi0gICAgcHVibGljIGVudW0gVHlwZSB7U1RBTkRBUkQsIENPTVBVVEVSfQotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSB0eXBlIG9mIHRoZSBlbmdpbmU6IHtAbGluayBUeXBlI1NUQU5EQVJEfSBvciB7QGxpbmsgVHlwZSNDT01QVVRFUn0uCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgZW5naW5lIHR5cGUKLSAgICAgKi8KLSAgICBwdWJsaWMgVHlwZSBnZXRUeXBlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBJZiB0aGUgdHJhdmVyc2FsIGVuZ2luZSBpcyBvZiB0eXBlIHtAbGluayBUeXBlI0NPTVBVVEVSfSwgdGhlbiBpdCBzaG91bGQgaGF2ZSB0aGUge0BsaW5rIEdyYXBoQ29tcHV0ZXJ9IHVzZWQgZm9yIGV4ZWN1dGluZyB0aGUgdHJhdmVyc2FsLgotICAgICAqCi0gICAgICogQHJldHVybiBhbiBvcHRpb25hbCBvZiBjb250YWluaW5nIHRoZSBncmFwaCBjb21wdXRlciB0byBiZSB1c2VkIGZvciBleGVjdXRpb24uCi0gICAgICovCi0gICAgcHVibGljIE9wdGlvbmFsPEdyYXBoQ29tcHV0ZXI+IGdldEdyYXBoQ29tcHV0ZXIoKTsKLQotICAgIC8qKgotICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB0eXBlIGlzIHtAbGluayBUeXBlI1NUQU5EQVJEfS4KLSAgICAgKgotICAgICAqIEByZXR1cm4gd2hldGhlciB0aGUgZW5naW5lIHR5cGUgaXMgc3RhbmRhcmQgKE9MVFApLgotICAgICAqLwotICAgIHB1YmxpYyBkZWZhdWx0IGJvb2xlYW4gaXNTdGFuZGFyZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHlwZSgpLmVxdWFscyhUeXBlLlNUQU5EQVJEKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdHlwZSBpcyB7QGxpbmsgVHlwZSNDT01QVVRFUn0uCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHdoZXRoZXIgdGhlIGVuZ2luZSB0eXBlIGlzIGNvbXB1dGVyIChPTEFQKS4KLSAgICAgKi8KLSAgICBwdWJsaWMgZGVmYXVsdCBib29sZWFuIGlzQ29tcHV0ZXIoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdldFR5cGUoKS5lcXVhbHMoVHlwZS5DT01QVVRFUik7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8KLQotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIGludGVyZmFjZSBCdWlsZGVyIGV4dGVuZHMgU2VyaWFsaXphYmxlIHsKLQotICAgICAgICAvKioKLSAgICAgICAgICogQSBsaXN0IG9mIHtAbGluayBUcmF2ZXJzYWxTdHJhdGVneX0gaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHVsdGltYXRlIHtAbGluayBUcmF2ZXJzYWx9LgotICAgICAgICAgKgotICAgICAgICAgKiBAcmV0dXJuIHN0cmF0ZWdpZXMgdG8gYXBwbHkgKGlmIGFueSkuCi0gICAgICAgICAqLwotICAgICAgICBwdWJsaWMgZGVmYXVsdCBMaXN0PFRyYXZlcnNhbFN0cmF0ZWd5PiBnZXRXaXRoU3RyYXRlZ2llcygpIHsKLSAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBBIGxpc3Qgb2Yge0BsaW5rIFRyYXZlcnNhbFN0cmF0ZWd5fSBjbGFzc2VzIHRoYXQgc2hvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoZSB1bHRpbWF0ZSB7QGxpbmsgVHJhdmVyc2FsfS4KLSAgICAgICAgICoKLSAgICAgICAgICogQHJldHVybiBzdHJhdGVnaWVzIHRvIG5vdCBhcHBseSAoaWYgYW55KS4KLSAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBkZWZhdWx0IExpc3Q8Q2xhc3M8PyBleHRlbmRzIFRyYXZlcnNhbFN0cmF0ZWd5Pj4gZ2V0V2l0aG91dFN0cmF0ZWdpZXMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQ3JlYXRlIHRoZSB7QGxpbmsgVHJhdmVyc2FsRW5naW5lfS4KLSAgICAgICAgICoKLSAgICAgICAgICogQHBhcmFtIGdyYXBoIHRoZSBncmFwaCB0byB1bHRpbWF0ZWx5IGhhdmUgdGhlIHtAbGluayBUcmF2ZXJzYWx9IGV4ZWN1dGUgb3Zlci4KLSAgICAgICAgICogQHJldHVybiBhIHtAbGluayBUcmF2ZXJzYWxFbmdpbmV9IHRoYXQgaXMgcGFydGljdWxhciB0byBhIHtAbGluayBUcmF2ZXJzYWx9LgotICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIFRyYXZlcnNhbEVuZ2luZSBjcmVhdGUoZmluYWwgR3JhcGggZ3JhcGgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsU291cmNlLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbFNvdXJjZS5qYXZhCmluZGV4IDJmZTFiOGYuLjkxZWY1NTQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsU291cmNlLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxTb3VyY2UuamF2YQpAQCAtMjQsMTYgKzI0LDIwIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlZlcnRleFByb2dyYW1TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLk9wdGlvbnNTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU2Fja1N0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TaWRlRWZmZWN0U3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLkNvbnN0YW50U3VwcGxpZXI7CiAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKIGltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CiBpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpbmFyeU9wZXJhdG9yOwogaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5TdXBwbGllcjsKIGltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uVW5hcnlPcGVyYXRvcjsKIAoraW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUzsKKwogLyoqCiAgKiBBIHtAY29kZSBUcmF2ZXJzYWxTb3VyY2V9IGlzIHVzZWQgdG8gY3JlYXRlIHtAbGluayBUcmF2ZXJzYWx9IGluc3RhbmNlcy4KICAqIEEgdHJhdmVyc2FsIHNvdXJjZSBjYW4gZ2VuZXJhdGUgYW55IG51bWJlciBvZiB7QGxpbmsgVHJhdmVyc2FsfSBpbnN0YW5jZXMuCkBAIC01MiwxOCArNTYsNiBAQAogcHVibGljIGludGVyZmFjZSBUcmF2ZXJzYWxTb3VyY2UgZXh0ZW5kcyBDbG9uZWFibGUsIEF1dG9DbG9zZWFibGUgewogCiAgICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjMuNSwgcmVwbGFjZWQgYnkge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb24jR1JFTUxJTl9SRU1PVEV9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFTUxJTl9SRU1PVEUgPSAiZ3JlbWxpbi5yZW1vdGUuIjsKLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4zLjUsIHJlcGxhY2VkIGJ5IHtAbGluayBSZW1vdGVDb25uZWN0aW9uI0dSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1N9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUyA9IEdSRU1MSU5fUkVNT1RFICsgInJlbW90ZUNvbm5lY3Rpb25DbGFzcyI7Ci0KLSAgICAvKioKICAgICAgKiBHZXQgdGhlIHtAbGluayBUcmF2ZXJzYWxTdHJhdGVnaWVzfSBhc3NvY2lhdGVkIHdpdGggdGhpcyB0cmF2ZXJzYWwgc291cmNlLgogICAgICAqCiAgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHN0cmF0ZWdpZXMgb2YgdGhlIHRyYXZlcnNhbCBzb3VyY2UKQEAgLTkyLDYgKzg0LDcgQEAKICAgICAgICAgICAgIC8vIHN0YXRpYyBmaWVsZHMgb25seQogICAgICAgICB9CiAKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgd2l0aCA9ICJ3aXRoIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgd2l0aFNhY2sgPSAid2l0aFNhY2siOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB3aXRoU3RyYXRlZ2llcyA9ICJ3aXRoU3RyYXRlZ2llcyI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHdpdGhvdXRTdHJhdGVnaWVzID0gIndpdGhvdXRTdHJhdGVnaWVzIjsKQEAgLTEwMyw2ICs5NiwzOCBAQAogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKICAgICAvKioKKyAgICAgKiBQcm92aWRlcyBhIGNvbmZpZ3VyYXRpb24gdG8gYSB0cmF2ZXJzYWwgaW4gdGhlIGZvcm0gb2YgYSBrZXkgd2hpY2ggaXMgdGhlIHNhbWUgYXMge0Bjb2RlIHdpdGgoa2V5LCB0cnVlKX0uIFRoZQorICAgICAqIGtleSBvZiB0aGUgY29uZmlndXJhdGlvbiBtdXN0IGJlIGdyYXBoIHByb3ZpZGVyIHNwZWNpZmljIGFuZCB0aGVyZWZvcmUgYSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIHN1cHBsaWVkIHRoYXQKKyAgICAgKiBpcyBub3Qga25vd24gdG8gYmUgdmFsaWQgdW50aWwgZXhlY3V0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIGFwcGx5IHRvIGEgdHJhdmVyc2FsCisgICAgICogQHJldHVybiBhIG5ldyB0cmF2ZXJzYWwgc291cmNlIHdpdGggdGhlIGluY2x1ZGVkIGNvbmZpZ3VyYXRpb24KKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBUcmF2ZXJzYWxTb3VyY2Ugd2l0aChmaW5hbCBTdHJpbmcga2V5KSB7CisgICAgICAgIHJldHVybiB3aXRoKGtleSwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvdmlkZXMgYSBjb25maWd1cmF0aW9uIHRvIGEgdHJhdmVyc2FsIGluIHRoZSBmb3JtIG9mIGEga2V5IHZhbHVlIHBhaXIuIFRoZSAga2V5IG9mIHRoZSBjb25maWd1cmF0aW9uIG11c3QgYmUKKyAgICAgKiBncmFwaCBwcm92aWRlciBzcGVjaWZpYyBhbmQgdGhlcmVmb3JlIGEgY29uZmlndXJhdGlvbiBjb3VsZCBiZSBzdXBwbGllZCB0aGF0IGlzIG5vdCBrbm93biB0byBiZSB2YWxpZCB1bnRpbAorICAgICAqIGV4ZWN1dGlvbi4gVGhpcyBpcyBhIGhhbmR5IHNob3J0Y3V0IGZvciBidWlsZGluZyBhbiB7QGxpbmsgT3B0aW9uc1N0cmF0ZWd5fSBtYW51YWxseSBhbmQgdGhlbiBhZGQgd2l0aAorICAgICAqIHtAbGluayAjd2l0aFN0cmF0ZWdpZXMoVHJhdmVyc2FsU3RyYXRlZ3lbXSl9LgorICAgICAqCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIGFwcGx5IHRvIGEgdHJhdmVyc2FsCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byBhcHBseSB0byBhIHRyYXZlcnNhbAorICAgICAqIEByZXR1cm4gYSBuZXcgdHJhdmVyc2FsIHNvdXJjZSB3aXRoIHRoZSBpbmNsdWRlZCBjb25maWd1cmF0aW9uCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHdpdGgoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIGZpbmFsIE9wdGlvbnNTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBPcHRpb25zU3RyYXRlZ3kuYnVpbGQoKTsKKyAgICAgICAgZ2V0U3RyYXRlZ2llcygpLmdldFN0cmF0ZWd5KE9wdGlvbnNTdHJhdGVneS5jbGFzcykKKyAgICAgICAgICAgICAgICAuaWZQcmVzZW50KG9wdGlvbnNTdHJhdGVneSAtPiBvcHRpb25zU3RyYXRlZ3kuZ2V0T3B0aW9ucygpLmZvckVhY2goYnVpbGRlcjo6d2l0aCkpOworICAgICAgICBidWlsZGVyLndpdGgoa2V5LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB3aXRoU3RyYXRlZ2llcyhidWlsZGVyLmNyZWF0ZSgpKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBBZGQgYW4gYXJiaXRyYXJ5IGNvbGxlY3Rpb24gb2Yge0BsaW5rIFRyYXZlcnNhbFN0cmF0ZWd5fSBpbnN0YW5jZXMgdG8gdGhlIHRyYXZlcnNhbCBzb3VyY2UuCiAgICAgICoKICAgICAgKiBAcGFyYW0gdHJhdmVyc2FsU3RyYXRlZ2llcyBhIGNvbGxlY3Rpb24gb2YgdHJhdmVyc2FsIHN0cmF0ZWdpZXMgdG8gYWRkCkBAIC0zNTAsNyArMzc1LDcgQEAKIAogICAgIC8qKgogICAgICAqIENvbmZpZ3VyZXMgdGhlIHtAY29kZSBUcmF2ZXJzYWxTb3VyY2V9IGFzIGEgInJlbW90ZSIgdG8gaXNzdWUgdGhlIHtAbGluayBUcmF2ZXJzYWx9IGZvciBleGVjdXRpb24gZWxzZXdoZXJlLgotICAgICAqIEV4cGVjdHMga2V5IGZvciB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbiNHUkVNTElOX1JFTU9URV9DT05ORUNUSU9OX0NMQVNTfSBhcyB3ZWxsIGFzIGFueSBjb25maWd1cmF0aW9uIHJlcXVpcmVkIGJ5CisgICAgICogRXhwZWN0cyBrZXkgZm9yIHtAbGluayAjR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTU30gYXMgd2VsbCBhcyBhbnkgY29uZmlndXJhdGlvbiByZXF1aXJlZCBieQogICAgICAqIHRoZSB1bmRlcmx5aW5nIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSB3aGljaCB3aWxsIGJlIGluc3RhbnRpYXRlZC4gTm90ZSB0aGF0IHRoZSB7QGNvZGUgQ29uZmlndXJhdGlvbn0gb2JqZWN0CiAgICAgICogaXMgcGFzc2VkIGRvd24gd2l0aG91dCBjaGFuZ2UgdG8gdGhlIGNyZWF0aW9uIG9mIHRoZSB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0gaW5zdGFuY2UuCiAgICAgICoKQEAgLTM1OSw5ICszODQsMTggQEAKICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBkZWZhdWx0IFRyYXZlcnNhbFNvdXJjZSB3aXRoUmVtb3RlKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZikgewotICAgICAgICByZXR1cm4gd2l0aFJlbW90ZShSZW1vdGVDb25uZWN0aW9uLmZyb20oY29uZikpOworICAgICAgICBpZiAoIWNvbmYuY29udGFpbnNLZXkoR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUykpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb25maWd1cmF0aW9uIG11c3QgY29udGFpbiB0aGUgJyIgKyBHUkVNTElOX1JFTU9URV9DT05ORUNUSU9OX0NMQVNTICsgIicga2V5Iik7CisgICAgICAgIGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gcmVtb3RlQ29ubmVjdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBSZW1vdGVDb25uZWN0aW9uPiBjbGF6eiA9IENsYXNzLmZvck5hbWUoY29uZi5nZXRTdHJpbmcoR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUykpLmFzU3ViY2xhc3MoUmVtb3RlQ29ubmVjdGlvbi5jbGFzcyk7CisgICAgICAgICAgICBmaW5hbCBDb25zdHJ1Y3Rvcjw/IGV4dGVuZHMgUmVtb3RlQ29ubmVjdGlvbj4gY3RvciA9IGNsYXp6LmdldENvbnN0cnVjdG9yKENvbmZpZ3VyYXRpb24uY2xhc3MpOworICAgICAgICAgICAgcmVtb3RlQ29ubmVjdGlvbiA9IGN0b3IubmV3SW5zdGFuY2UoY29uZik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHdpdGhSZW1vdGUocmVtb3RlQ29ubmVjdGlvbik7CiAgICAgfQotCiAgICAgLyoqCiAgICAgICogQ29uZmlndXJlcyB0aGUge0Bjb2RlIFRyYXZlcnNhbFNvdXJjZX0gYXMgYSAicmVtb3RlIiB0byBpc3N1ZSB0aGUge0BsaW5rIFRyYXZlcnNhbH0gZm9yIGV4ZWN1dGlvbiBlbHNld2hlcmUuCiAgICAgICogQ2FsbHMge0BsaW5rICN3aXRoUmVtb3RlKENvbmZpZ3VyYXRpb24pfSBhZnRlciByZWFkaW5nIHRoZSBwcm9wZXJ0aWVzIGZpbGUgc3BlY2lmaWVkLgpAQCAtMzczLDcgKzQwNyw2IEBACiAgICAgcHVibGljIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHdpdGhSZW1vdGUoZmluYWwgU3RyaW5nIGNvbmZpZ0ZpbGUpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICByZXR1cm4gd2l0aFJlbW90ZShuZXcgUHJvcGVydGllc0NvbmZpZ3VyYXRpb24oY29uZmlnRmlsZSkpOwogICAgIH0KLQogICAgIC8qKgogICAgICAqIENvbmZpZ3VyZXMgdGhlIHtAY29kZSBUcmF2ZXJzYWxTb3VyY2V9IGFzIGEgInJlbW90ZSIgdG8gaXNzdWUgdGhlIHtAbGluayBUcmF2ZXJzYWx9IGZvciBleGVjdXRpb24gZWxzZXdoZXJlLgogICAgICAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgdHJhY2sge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IGluc3RhbmNlcyB0aGF0IGFyZSBjcmVhdGVkIGFuZCBjYWxsCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbFN0cmF0ZWdpZXMuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsU3RyYXRlZ2llcy5qYXZhCmluZGV4IGEyZjkzMmIuLjZjMmMyZjMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsU3RyYXRlZ2llcy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsU3RyYXRlZ2llcy5qYXZhCkBAIC04NSw4ICs4NSw4IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogQXBwbHkgYWxsIHRoZSB7QGxpbmsgVHJhdmVyc2FsU3RyYXRlZ3l9IG9wdGltaXplcnMgdG8gdGhlIHtAbGluayBUcmF2ZXJzYWx9IGZvciB0aGUgc3RhdGVkIHtAbGluayBUcmF2ZXJzYWxFbmdpbmV9LgotICAgICAqIFRoaXMgbWV0aG9kIG11c3QgZW5zdXJlIHRoYXQgdGhlIHN0cmF0ZWdpZXMgYXJlIHNvcnRlZCBwcmlvciB0byBhcHBsaWNhdGlvbi4KKyAgICAgKiBBcHBseSBhbGwgdGhlIHtAbGluayBUcmF2ZXJzYWxTdHJhdGVneX0gb3B0aW1pemVycyB0byB0aGUge0BsaW5rIFRyYXZlcnNhbH0uIFRoaXMgbWV0aG9kIG11c3QgZW5zdXJlIHRoYXQgdGhlCisgICAgICogc3RyYXRlZ2llcyBhcmUgc29ydGVkIHByaW9yIHRvIGFwcGxpY2F0aW9uLgogICAgICAqCiAgICAgICogQHBhcmFtIHRyYXZlcnNhbCB0aGUgdHJhdmVyc2FsIHRvIGFwcGx5IHRoZSBzdHJhdGVnaWVzIHRvCiAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjMuMTAsIG5vdCBkaXJlY3RseSByZXBsYWNlZCBhcyB0aGlzIG1vZGUgb2Ygc3RyYXRlZ3kgYXBwbGljYXRpb24gaGFzIG5vdCBiZWVuCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzZXIuamF2YQppbmRleCA5M2ViZTdkLi5lMDdiZWMxIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2VyLmphdmEKQEAgLTg5LDYgKzg5LDE1IEBACiAgICAgcHVibGljIGludCBsb29wcygpOwogCiAgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHRyYXZlcnNlciBoYXMgZ29uZSB0aHJvdWdoIHRoZSBuYW1lZCBsb29waW5nIHNlY3Rpb24gb2YgYSB0cmF2ZXJzYWwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbG9vcE5hbWUgdGhlIG5hbWUgYXBwbGllZCB0byB0aGUgbG9vcCBvciBudWxsIGZvciB0aGUgY29udGFpbmluZyBsb29wCisgICAgICogQHJldHVybiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB0cmF2ZXJzZXIgaGFzIGdvbmUgdGhyb3VnaCBhIGxvb3AKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgbG9vcE5hbWUgaXMgbm90IGRlZmluZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSk7CisKKyAgICAvKioKICAgICAgKiBBIHRyYXZlcnNlciBtYXkgcmVwcmVzZW50IGEgZ3JvdXBpbmcgb2YgdHJhdmVyc2VycyB0byBhbGxvdyBmb3IgbW9yZSBlZmZpY2llbnQgZGF0YSBwcm9wYWdhdGlvbi4KICAgICAgKgogICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiB0cmF2ZXJzZXJzIHJlcHJlc2VudGVkIGluIHRoaXMgdHJhdmVyc2VyLgpAQCAtMjEzLDE0ICsyMjIsMjAgQEAKICAgICAgICAgcHVibGljIHZvaWQgc2V0KGZpbmFsIFQgdCk7CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB0cmF2ZXJzZXIgaGFzIGdvbmUgdGhyb3VnaCBhIGxvb3Bpbmcgc2VjdGlvbiBvZiB0cmF2ZXJzYWwuCisgICAgICAgICAqIEluaXRpYWxpc2UgYSBsb29wIGJ5IHNldHRpbmcgdXAgdGhlIGxvb3BpbmcgY29uc3RydWN0LgogICAgICAgICAgKiBUaGUgc3RlcCBsYWJlbCBpcyBpbXBvcnRhbnQgdG8gY3JlYXRlIGEgc3RhY2sgb2YgbG9vcCBjb3VudGVycyB3aGVuIHdpdGhpbiBhIG5lc3RlZCBjb250ZXh0LgogICAgICAgICAgKiBJZiB0aGUgcHJvdmlkZWQgbGFiZWwgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IGxhYmVsIG9uIHRoZSBzdGFjaywgYWRkIGEgbmV3IGxvb3AgY291bnRlci4KLSAgICAgICAgICogSWYgdGhlIHByb3ZpZGVkIGxhYmVsIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IGxhYmVsIG9uIHRoZSBzdGFjaywgaW5jcmVtZW50IHRoZSBsb29wIGNvdW50ZXIuCisgICAgICAgICAqIFRoZSBsb29wTmFtZSBjYW4gYmUgdXNlZCB0byByZWZlciB0byB0aGUgbG9vcHMgY291bnRlciB2aWEgdGhlIHtAbGluayBMb29wc1N0ZXB9CiAgICAgICAgICAqCi0gICAgICAgICAqIEBwYXJhbSBzdGVwTGFiZWwgdGhlIGxhYmVsIG9mIHRoZSBzdGVwIHRoYXQgaXMgZG9pbmcgdGhlIGluY3JlbWVudGluZworICAgICAgICAgKiBAcGFyYW0gc3RlcExhYmVsIHRoZSBsYWJlbCBvZiB0aGUgc3RlcCB0aGF0IGlzIGJlaW5nIHNldC11cC4KKyAgICAgICAgICogQHBhcmFtIGxvb3BOYW1lIHRoZSB1c2VyIGRlZmluZWQgbmFtZSBmb3IgcmVmZXJlbmNpbmcgdGhlIGxvb3AgY291bnRlciBvciBudWxsIGlmIG5vdCBzZXQKICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsKTsKKyAgICAgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB0cmF2ZXJzZXIgaGFzIGdvbmUgdGhyb3VnaCBhIGxvb3Bpbmcgc2VjdGlvbiBvZiB0cmF2ZXJzYWwuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKTsKIAogICAgICAgICAvKioKICAgICAgICAgICogU2V0IHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHRyYXZlcnNlciBoYXMgZ29uZSB0aHJvdWdoIGEgbG9vcCBiYWNrIHRvIDAuCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9HcmVtbGluRHNsUHJvY2Vzc29yLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9HcmVtbGluRHNsUHJvY2Vzc29yLmphdmEKaW5kZXggMjY4MzhhOC4uZjE5OGYxNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvR3JlbWxpbkRzbFByb2Nlc3Nvci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL0dyZW1saW5Ec2xQcm9jZXNzb3IuamF2YQpAQCAtMjcsNiArMjcsNyBAQAogaW1wb3J0IGNvbS5zcXVhcmV1cC5qYXZhcG9ldC5UeXBlTmFtZTsKIGltcG9ydCBjb20uc3F1YXJldXAuamF2YXBvZXQuVHlwZVNwZWM7CiBpbXBvcnQgY29tLnNxdWFyZXVwLmphdmFwb2V0LlR5cGVWYXJpYWJsZU5hbWU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKQEAgLTIzMiw2ICsyMzMsMTEgQEAKICAgICAgICAgICAgICAgICAuYWRkUGFyYW1ldGVyKFRyYXZlcnNhbFN0cmF0ZWdpZXMuY2xhc3MsICJzdHJhdGVnaWVzIikKICAgICAgICAgICAgICAgICAuYWRkU3RhdGVtZW50KCJzdXBlcigkTiwgJE4pIiwgImdyYXBoIiwgInN0cmF0ZWdpZXMiKQogICAgICAgICAgICAgICAgIC5idWlsZCgpKTsKKyAgICAgICAgdHJhdmVyc2FsU291cmNlQ2xhc3MuYWRkTWV0aG9kKE1ldGhvZFNwZWMuY29uc3RydWN0b3JCdWlsZGVyKCkKKyAgICAgICAgICAgICAgICAuYWRkTW9kaWZpZXJzKE1vZGlmaWVyLlBVQkxJQykKKyAgICAgICAgICAgICAgICAuYWRkUGFyYW1ldGVyKFJlbW90ZUNvbm5lY3Rpb24uY2xhc3MsICJjb25uZWN0aW9uIikKKyAgICAgICAgICAgICAgICAuYWRkU3RhdGVtZW50KCJzdXBlcigkTikiLCAiY29ubmVjdGlvbiIpCisgICAgICAgICAgICAgICAgLmJ1aWxkKCkpOwogCiAgICAgICAgIC8vIG92ZXJyaWRlIG1ldGhvZHMgdG8gcmV0dXJuIGEgdGhlIERTTCBUcmF2ZXJzYWxTb3VyY2UuIGZpbmQgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgY2xhc3Mgc29tZXdoZXJlIGluIHRoZSBoaWVyYXJjaHkKICAgICAgICAgZmluYWwgRWxlbWVudCB0aW5rZXJQb3BzR3JhcGhUcmF2ZXJzYWxTb3VyY2UgPSBmaW5kQ2xhc3NBc0VsZW1lbnQoZ3JhcGhUcmF2ZXJzYWxTb3VyY2VFbGVtZW50LCBHcmFwaFRyYXZlcnNhbFNvdXJjZS5jbGFzcyk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuamF2YQppbmRleCAxYWVkMGIyLi45YjNhMmIyIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmphdmEKQEAgLTE5LDkgKzE5LDEyIEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoOwogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcuY29ubmVjdGVkLkNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5Db25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlBhZ2VSYW5rVmVydGV4UHJvZ3JhbVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKQEAgLTM2LDggKzM5LDEwIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5sYW1iZGEuUHJlZGljYXRlVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwubGFtYmRhLlRydWVUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkJ5TW9kdWxhdGluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29uZmlndXJpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkZyb21Ub01vZHVsYXRpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLk11dGF0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5SZWFkV3JpdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVGltZXNNb2R1bGF0aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxPcHRpb25QYXJlbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5CcmFuY2hTdGVwOwpAQCAtNzUsMTEgKzgwLDEzIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5EZWR1cExvY2FsU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkVkZ2VPdGhlclZlcnRleFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5FZGdlVmVydGV4U3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkVsZW1lbnRNYXBTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRm9sZFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5HcmFwaFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Hcm91cENvdW50U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyb3VwU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLklkU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkluZGV4U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkxhYmVsU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkxhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkxhbWJkYUZsYXRNYXBTdGVwOwpAQCAtMTIyLDYgKzEyOSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuR3JvdXBTaWRlRWZmZWN0U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5JZGVudGl0eVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW5qZWN0U3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Jb1N0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuTGFtYmRhU2lkZUVmZmVjdFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuUHJvZmlsZVNpZGVFZmZlY3RTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlNhY2tWYWx1ZVN0ZXA7CkBAIC0xNjUsNiArMTczLDcgQEAKIAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGludGVyZmFjZSBHcmFwaFRyYXZlcnNhbDxTLCBFPiBleHRlbmRzIFRyYXZlcnNhbDxTLCBFPiB7CiAKQEAgLTU0NSw3ICs1NTQsMjYgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBNYXAgdGhlIHtAbGluayBFbGVtZW50fSB0byBhIHtAbGluayBNYXB9IG9mIHRoZSBwcm9wZXJ0eSB2YWx1ZXMga2V5J2QgYWNjb3JkaW5nIHRvIHRoZWlyIHtAbGluayBQcm9wZXJ0eSNrZXl9LgorICAgICAqIE1hcCB0aGUge0BsaW5rIEVsZW1lbnR9IHRvIGEge0Bjb2RlIE1hcH0gb2YgdGhlIHByb3BlcnR5IHZhbHVlcyBrZXknZCBhY2NvcmRpbmcgdG8gdGhlaXIge0BsaW5rIFByb3BlcnR5I2tleX0uCisgICAgICogSWYgbm8gcHJvcGVydHkga2V5cyBhcmUgcHJvdmlkZWQsIHRoZW4gYWxsIHByb3BlcnR5IHZhbHVlcyBhcmUgcmV0cmlldmVkLiBGb3IgdmVydGljZXMsIHRoZSB7QGNvZGUgTWFwfSB3aWxsCisgICAgICogYmUgcmV0dXJuZWQgd2l0aCB0aGUgYXNzdW1wdGlvbiBvZiBzaW5nbGUgcHJvcGVydHkgdmFsdWVzIGFsb25nIHdpdGgge0BsaW5rIFQjaWR9IGFuZCB7QGxpbmsgVCNsYWJlbH0uIFByZWZlcgorICAgICAqIHtAbGluayAjdmFsdWVNYXAoU3RyaW5nLi4uKX0gaWYgbXVsdGktcHJvcGVydHkgcHJvY2Vzc2luZyBpcyByZXF1aXJlZC4gRm9yICBlZGdlcywga2V5cyB3aWxsIGluY2x1ZGUgYWRkaXRpb25hbAorICAgICAqIHJlbGF0ZWQgZWRnZSBzdHJ1Y3R1cmUgb2Yge0BsaW5rIERpcmVjdGlvbiNJTn0gYW5kIHtAbGluayBEaXJlY3Rpb24jT1VUfSB3aGljaCB0aGVtc2VsdmVzIGFyZSB7QGNvZGUgTWFwfQorICAgICAqIGluc3RhbmNlcyBvZiB0aGUgcGFydGljdWxhciB7QGxpbmsgVmVydGV4fSByZXByZXNlbnRlZCBieSB7QGxpbmsgVCNpZH0gYW5kIHtAbGluayBUI2xhYmVsfS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleXMgdGhlIHByb3BlcnRpZXMgdG8gcmV0cmlldmUKKyAgICAgKiBAcGFyYW0gPEUyPiAgICAgICAgIHRoZSB2YWx1ZSB0eXBlIG9mIHRoZSByZXR1cm5lZCBwcm9wZXJ0aWVzCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggYW4gYXBwZW5kZWQge0BsaW5rIEVsZW1lbnRNYXBTdGVwfS4KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI2VsZW1lbnRtYXAtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gRWxlbWVudE1hcCBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuNAorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IDxFMj4gR3JhcGhUcmF2ZXJzYWw8UywgTWFwPE9iamVjdCwgRTI+PiBlbGVtZW50TWFwKGZpbmFsIFN0cmluZy4uLiBwcm9wZXJ0eUtleXMpIHsKKyAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMuZWxlbWVudE1hcCwgcHJvcGVydHlLZXlzKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IEVsZW1lbnRNYXBTdGVwPD4odGhpcy5hc0FkbWluKCksIHByb3BlcnR5S2V5cykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1hcCB0aGUge0BsaW5rIEVsZW1lbnR9IHRvIGEge0Bjb2RlIE1hcH0gb2YgdGhlIHByb3BlcnR5IHZhbHVlcyBrZXknZCBhY2NvcmRpbmcgdG8gdGhlaXIge0BsaW5rIFByb3BlcnR5I2tleX0uCiAgICAgICogSWYgbm8gcHJvcGVydHkga2V5cyBhcmUgcHJvdmlkZWQsIHRoZW4gYWxsIHByb3BlcnR5IHZhbHVlcyBhcmUgcmV0cmlldmVkLgogICAgICAqCiAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5cyB0aGUgcHJvcGVydGllcyB0byByZXRyaWV2ZQpAQCAtNTU0LDEzICs1ODIsMTMgQEAKICAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3ZhbHVlbWFwLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIFZhbHVlTWFwIFN0ZXA8L2E+CiAgICAgICogQHNpbmNlIDMuMC4wLWluY3ViYXRpbmcKICAgICAgKi8KLSAgICBwdWJsaWMgZGVmYXVsdCA8RTI+IEdyYXBoVHJhdmVyc2FsPFMsIE1hcDxTdHJpbmcsIEUyPj4gdmFsdWVNYXAoZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgeworICAgIHB1YmxpYyBkZWZhdWx0IDxFMj4gR3JhcGhUcmF2ZXJzYWw8UywgTWFwPE9iamVjdCwgRTI+PiB2YWx1ZU1hcChmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CiAgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLnZhbHVlTWFwLCBwcm9wZXJ0eUtleXMpOwogICAgICAgICByZXR1cm4gdGhpcy5hc0FkbWluKCkuYWRkU3RlcChuZXcgUHJvcGVydHlNYXBTdGVwPD4odGhpcy5hc0FkbWluKCksIGZhbHNlLCBQcm9wZXJ0eVR5cGUuVkFMVUUsIHByb3BlcnR5S2V5cykpOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIE1hcCB0aGUge0BsaW5rIEVsZW1lbnR9IHRvIGEge0BsaW5rIE1hcH0gb2YgdGhlIHByb3BlcnR5IHZhbHVlcyBrZXknZCBhY2NvcmRpbmcgdG8gdGhlaXIge0BsaW5rIFByb3BlcnR5I2tleX0uCisgICAgICogTWFwIHRoZSB7QGxpbmsgRWxlbWVudH0gdG8gYSB7QGNvZGUgTWFwfSBvZiB0aGUgcHJvcGVydHkgdmFsdWVzIGtleSdkIGFjY29yZGluZyB0byB0aGVpciB7QGxpbmsgUHJvcGVydHkja2V5fS4KICAgICAgKiBJZiBubyBwcm9wZXJ0eSBrZXlzIGFyZSBwcm92aWRlZCwgdGhlbiBhbGwgcHJvcGVydHkgdmFsdWVzIGFyZSByZXRyaWV2ZWQuCiAgICAgICoKICAgICAgKiBAcGFyYW0gaW5jbHVkZVRva2VucyB3aGV0aGVyIHRvIGluY2x1ZGUge0BsaW5rIFR9IHRva2VucyBpbiB0aGUgZW1pdHRlZCBtYXAuCkBAIC01NjksNyArNTk3LDEwIEBACiAgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggYW4gYXBwZW5kZWQge0BsaW5rIFByb3BlcnR5TWFwU3RlcH0uCiAgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyN2YWx1ZW1hcC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBWYWx1ZU1hcCBTdGVwPC9hPgogICAgICAqIEBzaW5jZSAzLjAuMC1pbmN1YmF0aW5nCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjdmFsdWVNYXAoU3RyaW5nLi4uKX0gaW4gY29uanVuY3Rpb24gd2l0aAorICAgICAqICAgICAgICAgICAgIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0gb3Igc2ltcGxlIHByZWZlciB7QGxpbmsgI2VsZW1lbnRNYXAoU3RyaW5nLi4uKX0uCiAgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgZGVmYXVsdCA8RTI+IEdyYXBoVHJhdmVyc2FsPFMsIE1hcDxPYmplY3QsIEUyPj4gdmFsdWVNYXAoZmluYWwgYm9vbGVhbiBpbmNsdWRlVG9rZW5zLCBmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CiAgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLnZhbHVlTWFwLCBpbmNsdWRlVG9rZW5zLCBwcm9wZXJ0eUtleXMpOwogICAgICAgICByZXR1cm4gdGhpcy5hc0FkbWluKCkuYWRkU3RlcChuZXcgUHJvcGVydHlNYXBTdGVwPD4odGhpcy5hc0FkbWluKCksIGluY2x1ZGVUb2tlbnMsIFByb3BlcnR5VHlwZS5WQUxVRSwgcHJvcGVydHlLZXlzKSk7CkBAIC02NDgsNyArNjc5LDIwIEBACiAgICAgICovCiAgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UywgSW50ZWdlcj4gbG9vcHMoKSB7CiAgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLmxvb3BzKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IExvb3BzU3RlcDw+KHRoaXMuYXNBZG1pbigpKSk7CisgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBMb29wc1N0ZXA8Pih0aGlzLmFzQWRtaW4oKSwgbnVsbCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIElmIHRoZSB7QGxpbmsgVHJhdmVyc2VyfSBzdXBwb3J0cyBsb29waW5nIHRoZW4gY2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGV4dHJhY3QgdGhlIG51bWJlciBvZiBsb29wcyBmb3IgdGhhdAorICAgICAqIHRyYXZlcnNlciBmb3IgdGhlIG5hbWVkIGxvb3AuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCBhbiBhcHBlbmRlZCB7QGxpbmsgTG9vcHNTdGVwfQorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jbG9vcHMtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gTG9vcHMgU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBJbnRlZ2VyPiBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMubG9vcHMsIGxvb3BOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IExvb3BzU3RlcDw+KHRoaXMuYXNBZG1pbigpLCBsb29wTmFtZSkpOwogICAgIH0KIAogICAgIC8qKgpAQCAtODc3LDcgKzkyMSw3IEBACiAgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyNtYXgtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gTWF4IFN0ZXA8L2E+CiAgICAgICogQHNpbmNlIDMuMC4wLWluY3ViYXRpbmcKICAgICAgKi8KLSAgICBwdWJsaWMgZGVmYXVsdCA8RTIgZXh0ZW5kcyBOdW1iZXI+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiBtYXgoKSB7CisgICAgcHVibGljIGRlZmF1bHQgPEUyIGV4dGVuZHMgQ29tcGFyYWJsZT4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IG1heCgpIHsKICAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMubWF4KTsKICAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IE1heEdsb2JhbFN0ZXA8Pih0aGlzLmFzQWRtaW4oKSkpOwogICAgIH0KQEAgLTg4OSw3ICs5MzMsNyBAQAogICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jbWF4LXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIE1heCBTdGVwPC9hPgogICAgICAqIEBzaW5jZSAzLjAuMC1pbmN1YmF0aW5nCiAgICAgICovCi0gICAgcHVibGljIGRlZmF1bHQgPEUyIGV4dGVuZHMgTnVtYmVyPiBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gbWF4KGZpbmFsIFNjb3BlIHNjb3BlKSB7CisgICAgcHVibGljIGRlZmF1bHQgPEUyIGV4dGVuZHMgQ29tcGFyYWJsZT4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IG1heChmaW5hbCBTY29wZSBzY29wZSkgewogICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy5tYXgsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAoc2NvcGUuZXF1YWxzKFNjb3BlLmdsb2JhbCkgPyBuZXcgTWF4R2xvYmFsU3RlcDw+KHRoaXMuYXNBZG1pbigpKSA6IG5ldyBNYXhMb2NhbFN0ZXA8Pih0aGlzLmFzQWRtaW4oKSkpOwogICAgIH0KQEAgLTkwMSw3ICs5NDUsNyBAQAogICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jbWluLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIE1pbiBTdGVwPC9hPgogICAgICAqIEBzaW5jZSAzLjAuMC1pbmN1YmF0aW5nCiAgICAgICovCi0gICAgcHVibGljIGRlZmF1bHQgPEUyIGV4dGVuZHMgTnVtYmVyPiBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gbWluKCkgeworICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiBtaW4oKSB7CiAgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLm1pbik7CiAgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBNaW5HbG9iYWxTdGVwPD4odGhpcy5hc0FkbWluKCkpKTsKICAgICB9CkBAIC05MTMsNyArOTU3LDcgQEAKICAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI21pbi1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBNaW4gU3RlcDwvYT4KICAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZwogICAgICAqLwotICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IG1pbihmaW5hbCBTY29wZSBzY29wZSkgeworICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiBtaW4oZmluYWwgU2NvcGUgc2NvcGUpIHsKICAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMubWluLCBzY29wZSk7CiAgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKHNjb3BlLmVxdWFscyhTY29wZS5nbG9iYWwpID8gbmV3IE1pbkdsb2JhbFN0ZXA8RTI+KHRoaXMuYXNBZG1pbigpKSA6IG5ldyBNaW5Mb2NhbFN0ZXA8Pih0aGlzLmFzQWRtaW4oKSkpOwogICAgIH0KQEAgLTE5NDgsNyArMTk5Miw4IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogRWFnZXJseSBjb2xsZWN0cyBvYmplY3RzIHVwIHRvIHRoaXMgc3RlcCBpbnRvIGEgc2lkZS1lZmZlY3QuCisgICAgICogRWFnZXJseSBjb2xsZWN0cyBvYmplY3RzIHVwIHRvIHRoaXMgc3RlcCBpbnRvIGEgc2lkZS1lZmZlY3QuIFNhbWUgYXMgY2FsbGluZyB7QGxpbmsgI2FnZ3JlZ2F0ZShTY29wZSwgU3RyaW5nKX0KKyAgICAgKiB3aXRoIGEge0BsaW5rIFNjb3BlI2xvY2FsfS4KICAgICAgKgogICAgICAqIEBwYXJhbSBzaWRlRWZmZWN0S2V5IHRoZSBuYW1lIG9mIHRoZSBzaWRlLWVmZmVjdCBrZXkgdGhhdCB3aWxsIGhvbGQgdGhlIGFnZ3JlZ2F0ZWQgb2JqZWN0cwogICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIGFuIGFwcGVuZGVkIHtAbGluayBBZ2dyZWdhdGVTdGVwfQpAQCAtMTk2MSw2ICsyMDA2LDIxIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQ29sbGVjdHMgb2JqZWN0cyBpbiBhIGxpc3QgdXNpbmcgdGhlIHtAbGluayBTY29wZX0gYXJndW1lbnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgc2hvdWxkIGJlIGxhenkKKyAgICAgKiB7QGxpbmsgU2NvcGUjbG9jYWx9IG9yIGVhZ2VyICh7QGxpbmsgU2NvcGUjZ2xvYmFsfSB3aGlsZSBnYXRoZXJpbmcgdGhvc2Ugb2JqZWN0cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzaWRlRWZmZWN0S2V5IHRoZSBuYW1lIG9mIHRoZSBzaWRlLWVmZmVjdCBrZXkgdGhhdCB3aWxsIGhvbGQgdGhlIGFnZ3JlZ2F0ZWQgb2JqZWN0cworICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIGFuIGFwcGVuZGVkIHtAbGluayBBZ2dyZWdhdGVTdGVwfQorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jYWdncmVnYXRlLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIEFnZ3JlZ2F0ZSBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuMworICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsIEU+IGFnZ3JlZ2F0ZShmaW5hbCBTY29wZSBzY29wZSwgZmluYWwgU3RyaW5nIHNpZGVFZmZlY3RLZXkpIHsKKyAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMuYWdncmVnYXRlLCBzY29wZSwgc2lkZUVmZmVjdEtleSk7CisgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKHNjb3BlID09IFNjb3BlLmdsb2JhbCA/CisgICAgICAgICAgICAgICAgbmV3IEFnZ3JlZ2F0ZVN0ZXA8Pih0aGlzLmFzQWRtaW4oKSwgc2lkZUVmZmVjdEtleSkgOiBuZXcgU3RvcmVTdGVwPD4odGhpcy5hc0FkbWluKCksIHNpZGVFZmZlY3RLZXkpKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBPcmdhbml6ZSBvYmplY3RzIGluIHRoZSBzdHJlYW0gaW50byBhIHtAY29kZSBNYXB9LiBDYWxscyB0byB7QGNvZGUgZ3JvdXAoKX0gYXJlIHR5cGljYWxseSBhY2NvbXBhbmllZCB3aXRoCiAgICAgICoge0BsaW5rICNieSgpfSBtb2R1bGF0b3JzIHdoaWNoIGhlbHAgc3BlY2lmeSBob3cgdGhlIGdyb3VwaW5nIHNob3VsZCBvY2N1ci4KICAgICAgKgpAQCAtMjAyMSw2ICsyMDgxLDcgQEAKICAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCBhbiBhcHBlbmRlZCB7QGxpbmsgU3RvcmVTdGVwfQogICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jc3RvcmUtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gU3RvcmUgU3RlcDwvYT4KICAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZworICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayAjYWdncmVnYXRlKFNjb3BlLCBTdHJpbmcpfSB1c2luZyB7QGxpbmsgU2NvcGUjbG9jYWx9LgogICAgICAqLwogICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsIEU+IHN0b3JlKGZpbmFsIFN0cmluZyBzaWRlRWZmZWN0S2V5KSB7CiAgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLnN0b3JlLCBzaWRlRWZmZWN0S2V5KTsKQEAgLTIxMTUsMTEgKzIxNzYsMTEgQEAKICAgICAgICAgICAgICAgICAoKGVuZFN0ZXAgaW5zdGFuY2VvZiBBZGRWZXJ0ZXhTdGVwIHx8IGVuZFN0ZXAgaW5zdGFuY2VvZiBBZGRWZXJ0ZXhTdGFydFN0ZXApICYmCiAgICAgICAgICAgICAgICAgICBrZXlWYWx1ZXMubGVuZ3RoID09IDAgJiYKICAgICAgICAgICAgICAgICAgIChrZXkgaW5zdGFuY2VvZiBUIHx8IChrZXkgaW5zdGFuY2VvZiBTdHJpbmcgJiYgbnVsbCA9PSBjYXJkaW5hbGl0eSkgfHwga2V5IGluc3RhbmNlb2YgVHJhdmVyc2FsKSkpIHsKLSAgICAgICAgICAgICgoTXV0YXRpbmcpIGVuZFN0ZXApLmFkZFByb3BlcnR5TXV0YXRpb25zKGtleSwgdmFsdWUpOworICAgICAgICAgICAgKChNdXRhdGluZykgZW5kU3RlcCkuY29uZmlndXJlKGtleSwgdmFsdWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZmluYWwgQWRkUHJvcGVydHlTdGVwPEVsZW1lbnQ+IGFkZFByb3BlcnR5U3RlcCA9IG5ldyBBZGRQcm9wZXJ0eVN0ZXA8Pih0aGlzLmFzQWRtaW4oKSwgY2FyZGluYWxpdHksIGtleSwgdmFsdWUpOwogICAgICAgICAgICAgdGhpcy5hc0FkbWluKCkuYWRkU3RlcChhZGRQcm9wZXJ0eVN0ZXApOwotICAgICAgICAgICAgYWRkUHJvcGVydHlTdGVwLmFkZFByb3BlcnR5TXV0YXRpb25zKGtleVZhbHVlcyk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eVN0ZXAuY29uZmlndXJlKGtleVZhbHVlcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQpAQCAtMjMxOCw3ICsyMzc5LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBUaGlzIHN0ZXAgaXMgdXNlZCBmb3IgbG9vcGluZyBvdmVyIGEgc29tZSB0cmF2ZXJzYWwgZ2l2ZW4gc29tZSBicmVhayBwcmVkaWNhdGUuCisgICAgICogVGhpcyBzdGVwIGlzIHVzZWQgZm9yIGxvb3Bpbmcgb3ZlciBhIHRyYXZlcnNhbCBnaXZlbiBzb21lIGJyZWFrIHByZWRpY2F0ZS4KICAgICAgKgogICAgICAqIEBwYXJhbSByZXBlYXRUcmF2ZXJzYWwgdGhlIHRyYXZlcnNhbCB0byByZXBlYXQgb3ZlcgogICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIHRoZSBhcHBlbmRlZCB7QGxpbmsgUmVwZWF0U3RlcH0KQEAgLTIzMzEsNiArMjM5MiwyMSBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIFRoaXMgc3RlcCBpcyB1c2VkIGZvciBsb29waW5nIG92ZXIgYSB0cmF2ZXJzYWwgZ2l2ZW4gc29tZSBicmVhayBwcmVkaWNhdGUgYW5kIHdpdGggYSBzcGVjaWZpZWQgbG9vcCBuYW1lLgorICAgICAqCisgICAgICogQHBhcmFtIHJlcGVhdFRyYXZlcnNhbCB0aGUgdHJhdmVyc2FsIHRvIHJlcGVhdCBvdmVyCisgICAgICogQHBhcmFtIGxvb3BOYW1lIFRoZSBuYW1lIGdpdmVuIHRvIHRoZSBsb29wCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggdGhlIGFwcGVuZGVkIHtAbGluayBSZXBlYXRTdGVwfQorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jcmVwZWF0LXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIFJlcGVhdCBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsIEU+IHJlcGVhdChmaW5hbCBTdHJpbmcgbG9vcE5hbWUsIGZpbmFsIFRyYXZlcnNhbDw/LCBFPiByZXBlYXRUcmF2ZXJzYWwpIHsKKyAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMucmVwZWF0LCBsb29wTmFtZSwgcmVwZWF0VHJhdmVyc2FsKTsKKyAgICAgICAgcmV0dXJuIFJlcGVhdFN0ZXAuYWRkUmVwZWF0VG9UcmF2ZXJzYWwodGhpcywgbG9vcE5hbWUsIChUcmF2ZXJzYWwuQWRtaW48RSwgRT4pIHJlcGVhdFRyYXZlcnNhbCk7CisgICAgfQorCisKKyAgICAvKioKICAgICAgKiBFbWl0IGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB7QGxpbmsgI3JlcGVhdChUcmF2ZXJzYWwpfSB0byBkZXRlcm1pbmUgd2hhdCBvYmplY3RzIGdldCBlbWl0IGZyb20gdGhlIGxvb3AuCiAgICAgICoKICAgICAgKiBAcGFyYW0gZW1pdFRyYXZlcnNhbCB0aGUgZW1pdCBwcmVkaWNhdGUgZGVmaW5lZCBhcyBhIHRyYXZlcnNhbApAQCAtMjQ2Myw2ICsyNTM5LDM3IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogRXhlY3V0ZXMgYSBDb25uZWN0ZWQgQ29tcG9uZW50IGFsZ29yaXRobSBvdmVyIHRoZSBncmFwaC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIHRoZSBhcHBlbmRlZCB7QGxpbmsgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbX0KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI2Nvbm5lY3RlZGNvbXBvbmVudC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBDb25uZWN0ZWRDb21wb25lbnQgU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBFPiBjb25uZWN0ZWRDb21wb25lbnQoKSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLmNvbm5lY3RlZENvbXBvbmVudCk7CisgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKChTdGVwPEUsIEU+KSBuZXcgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXAodGhpcy5hc0FkbWluKCkpKTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIEV4ZWN1dGVzIGEgU2hvcnRlc3QgUGF0aCBhbGdvcml0aG0gb3ZlciB0aGUgZ3JhcGguCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCB0aGUgYXBwZW5kZWQge0BsaW5rIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwfQorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jc2hvcnRlc3RwYXRoLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIFNob3J0ZXN0UGF0aCBTdGVwPC9hPgorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsIFBhdGg+IHNob3J0ZXN0UGF0aCgpIHsKKyAgICAgICAgaWYgKHRoaXMuYXNBZG1pbigpLmdldEVuZFN0ZXAoKSBpbnN0YW5jZW9mIEdyYXBoU3RlcCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB2ZXJ5IHVuZm9ydHVuYXRlLCBidXQgSSBjb3VsZG4ndCBmaW5kIGFub3RoZXIgd2F5IHRvIG1ha2UgaXQgd29yay4gV2l0aG91dCB0aGUgYWRkaXRpb25hbAorICAgICAgICAgICAgLy8gSWRlbnRpdHlTdGVwLCBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtIGRvZXNuJ3QgaGFuZGxlIGhhbHRlZCB0cmF2ZXJzZXJzIGFzIGV4cGVjdGVkIChpdCBpZ25vcmVzIGJvdGg6CisgICAgICAgICAgICAvLyBIQUxURURfVFJBVkVSU0VSIHN0b3JlZCBpbiBtZW1vcnkgYW5kIHN0b3JlZCBhcyB2ZXJ0ZXggcHJvcGVydGllcyk7IGluc3RlYWQgaXQganVzdCBlbWl0cyBhbGwgdmVydGljZXMuCisgICAgICAgICAgICB0aGlzLmlkZW50aXR5KCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMuc2hvcnRlc3RQYXRoKTsKKyAgICAgICAgcmV0dXJuIChHcmFwaFRyYXZlcnNhbDxTLCBQYXRoPikgKChUcmF2ZXJzYWwuQWRtaW4pIHRoaXMuYXNBZG1pbigpKQorICAgICAgICAgICAgICAgIC5hZGRTdGVwKG5ldyBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcCh0aGlzLmFzQWRtaW4oKSkpOworICAgIH0KKworICAgIC8qKgogICAgICAqIEV4ZWN1dGVzIGFuIGFyYml0cmFyeSB7QGxpbmsgVmVydGV4UHJvZ3JhbX0gb3ZlciB0aGUgZ3JhcGguCiAgICAgICoKICAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCB0aGUgYXBwZW5kZWQge0BsaW5rIFByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcH0KQEAgLTI1MjQsNiArMjYzMSwyNyBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEluZGV4ZXMgYWxsIGl0ZW1zIG9mIHRoZSBjdXJyZW50IGNvbGxlY3Rpb24uIFRoZSBpbmRleGluZyBmb3JtYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0KKyAgICAgKiBhbmQge0BsaW5rIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zI2luZGV4ZXJ9LgorICAgICAqCisgICAgICogSW5kZXhlZCBhcyBsaXN0OiBbImEiLCJiIiwiYyJdID0+IFtbImEiLDBdLFsiYiIsMV0sWyJjIiwyXV0KKyAgICAgKiBJbmRleGVkIGFzIG1hcDogIFsiYSIsImIiLCJjIl0gPT4gezA6ImEiLDE6ImIiLDI6ImMifQorICAgICAqCisgICAgICogSWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIG5vdCBhIGNvbGxlY3Rpb24sIHRoaXMgc3RlcCB3aWxsIG1hcCB0aGUgb2JqZWN0IHRvIGEgc2luZ2xlIGl0ZW0gY29sbGVjdGlvbi9tYXA6CisgICAgICoKKyAgICAgKiBJbmRleGVkIGFzIGxpc3Q6ICJhIiA9PiBbImEiLDBdCisgICAgICogSW5kZXhlZCBhcyBtYXA6ICAiYSIgPT4gezA6ImEifQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggYW4gYXBwZW5kZWQge0BsaW5rIEluZGV4U3RlcH0KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI2luZGV4LXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIEluZGV4IFN0ZXA8L2E+CisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgPEUyPiBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gaW5kZXgoKSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLmluZGV4KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IEluZGV4U3RlcDw+KHRoaXMuYXNBZG1pbigpKSk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogVHVybnMgdGhlIGxhenkgdHJhdmVyc2FsIHBpcGVsaW5lIGludG8gYSBidWxrLXN5bmNocm9ub3VzIHBpcGVsaW5lIHdoaWNoIGJhc2ljYWxseSBpdGVyYXRlcyB0aGF0IHRyYXZlcnNhbCB0bwogICAgICAqIHRoZSBzaXplIG9mIHRoZSBiYXJyaWVyLiBJbiB0aGlzIGNhc2UsIGl0IGl0ZXJhdGVzIHRoZSBlbnRpcmUgdGhpbmcgYXMgdGhlIGRlZmF1bHQgYmFycmllciBzaXplIGlzIHNldCB0bwogICAgICAqIHtAY29kZSBJbnRlZ2VyLk1BWF9WQUxVRX0uCkBAIC0yNTM4LDYgKzI2NjYsNDEgQEAKICAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IExhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcDw+KHRoaXMuYXNBZG1pbigpLCAoQ29uc3VtZXIpIGJhcnJpZXJDb25zdW1lciwgSW50ZWdlci5NQVhfVkFMVUUpKTsKICAgICB9CiAKKyAgICAvLy8vIFdJVEgtTU9EVUxBVE9SCisKKyAgICAvKioKKyAgICAgKiBQcm92aWRlcyBhIGNvbmZpZ3VyYXRpb24gdG8gYSBzdGVwIGluIHRoZSBmb3JtIG9mIGEga2V5IHdoaWNoIGlzIHRoZSBzYW1lIGFzIHtAY29kZSB3aXRoKGtleSwgdHJ1ZSl9LiBUaGUga2V5CisgICAgICogb2YgdGhlIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBzdGVwIHNwZWNpZmljIGFuZCB0aGVyZWZvcmUgYSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIHN1cHBsaWVkIHRoYXQgaXMgbm90IGtub3duIHRvCisgICAgICogYmUgdmFsaWQgdW50aWwgZXhlY3V0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIGFwcGx5IHRvIGEgc3RlcAorICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIGEgbW9kdWxhdGVkIHN0ZXAKKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3dpdGgtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gV2l0aCBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsRT4gd2l0aChmaW5hbCBTdHJpbmcga2V5KSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLndpdGgsIGtleSk7CisgICAgICAgIGZpbmFsIE9iamVjdFtdIGNvbmZpZ1BhaXIgPSB7IGtleSwgdHJ1ZSB9OworICAgICAgICAoKENvbmZpZ3VyaW5nKSB0aGlzLmFzQWRtaW4oKS5nZXRFbmRTdGVwKCkpLmNvbmZpZ3VyZShjb25maWdQYWlyKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvdmlkZXMgYSBjb25maWd1cmF0aW9uIHRvIGEgc3RlcCBpbiB0aGUgZm9ybSBvZiBhIGtleSBhbmQgdmFsdWUgcGFpci4gVGhlIGtleSBvZiB0aGUgY29uZmlndXJhdGlvbiBtdXN0IGJlCisgICAgICogc3RlcCBzcGVjaWZpYyBhbmQgdGhlcmVmb3JlIGEgY29uZmlndXJhdGlvbiBjb3VsZCBiZSBzdXBwbGllZCB0aGF0IGlzIG5vdCBrbm93biB0byBiZSB2YWxpZCB1bnRpbCBleGVjdXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5IHRoZSBrZXkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYXBwbHkgdG8gYSBzdGVwCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byBhcHBseSB0byBhIHN0ZXAKKyAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCBhIG1vZHVsYXRlZCBzdGVwCisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyN3aXRoLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIFdpdGggU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLEU+IHdpdGgoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLndpdGgsIGtleSwgdmFsdWUpOworICAgICAgICBmaW5hbCBPYmplY3RbXSBjb25maWdQYWlyID0geyBrZXksIHZhbHVlIH07CisgICAgICAgICgoQ29uZmlndXJpbmcpIHRoaXMuYXNBZG1pbigpLmdldEVuZFN0ZXAoKSkuY29uZmlndXJlKGNvbmZpZ1BhaXIpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CiAKICAgICAvLy8vIEJZLU1PRFVMQVRPUlMKIApAQCAtMjcyOCw2ICsyODkxLDM4IEBACiAKICAgICAvLy8vCiAKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8gSU8gU1RFUFMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICAvKioKKyAgICAgKiBUaGlzIHN0ZXAgaXMgdGVjaG5pY2FsbHkgYSBzdGVwIG1vZHVsYXRvciBmb3IgdGhlIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWxTb3VyY2UjaW8oU3RyaW5nKX0gc3RlcCB3aGljaAorICAgICAqIGluc3RydWN0cyB0aGUgc3RlcCB0byBwZXJmb3JtIGEgcmVhZCB3aXRoIGl0cyBnaXZlbiBjb25maWd1cmF0aW9uLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggdGhlIHtAbGluayBJb1N0ZXB9IG1vZHVsYXRlZCB0byByZWFkCisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyNpby1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBJTyBTdGVwPC9hPgorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jcmVhZC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBSZWFkIFN0ZXA8L2E+CisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UyxFPiByZWFkKCkgeworICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy5yZWFkKTsKKyAgICAgICAgKChSZWFkV3JpdGluZykgdGhpcy5hc0FkbWluKCkuZ2V0RW5kU3RlcCgpKS5zZXRNb2RlKFJlYWRXcml0aW5nLk1vZGUuUkVBRElORyk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgc3RlcCBpcyB0ZWNobmljYWxseSBhIHN0ZXAgbW9kdWxhdG9yIGZvciB0aGUgdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZSNpbyhTdHJpbmcpfSBzdGVwIHdoaWNoCisgICAgICogaW5zdHJ1Y3RzIHRoZSBzdGVwIHRvIHBlcmZvcm0gYSB3cml0ZSB3aXRoIGl0cyBnaXZlbiBjb25maWd1cmF0aW9uLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggdGhlIHtAbGluayBJb1N0ZXB9IG1vZHVsYXRlZCB0byB3cml0ZQorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jaW8tc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gSU8gU3RlcDwvYT4KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3dyaXRlLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIFdyaXRlIFN0ZXA8L2E+CisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UyxFPiB3cml0ZSgpIHsKKyAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMud3JpdGUpOworICAgICAgICAoKFJlYWRXcml0aW5nKSB0aGlzLmFzQWRtaW4oKS5nZXRFbmRTdGVwKCkpLnNldE1vZGUoUmVhZFdyaXRpbmcuTW9kZS5XUklUSU5HKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCiAgICAgLyoqCiAgICAgICogSXRlcmF0ZXMgdGhlIHRyYXZlcnNhbCBwcmVzdW1hYmx5IGZvciB0aGUgZ2VuZXJhdGlvbiBvZiBzaWRlLWVmZmVjdHMuCiAgICAgICovCkBAIC0yNzcxLDYgKzI5NjYsNyBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB2YWx1ZXMgPSAidmFsdWVzIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcHJvcGVydHlNYXAgPSAicHJvcGVydHlNYXAiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB2YWx1ZU1hcCA9ICJ2YWx1ZU1hcCI7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGVsZW1lbnRNYXAgPSAiZWxlbWVudE1hcCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHNlbGVjdCA9ICJzZWxlY3QiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBrZXkgPSAia2V5IjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdmFsdWUgPSAidmFsdWUiOwpAQCAtMjgxMiw2ICszMDA4LDkgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc2tpcCA9ICJza2lwIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGFpbCA9ICJ0YWlsIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29pbiA9ICJjb2luIjsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaW8gPSAiaW8iOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyByZWFkID0gInJlYWQiOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB3cml0ZSA9ICJ3cml0ZSI7CiAKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGltZUxpbWl0ID0gInRpbWVMaW1pdCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHNpbXBsZVBhdGggPSAic2ltcGxlUGF0aCI7CkBAIC0yODIzLDEwICszMDIyLDE2IEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHNpZGVFZmZlY3QgPSAic2lkZUVmZmVjdCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNhcCA9ICJjYXAiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBwcm9wZXJ0eSA9ICJwcm9wZXJ0eSI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayBTeW1ib2xzI2FnZ3JlZ2F0ZX0gd2l0aCBhIHtAbGluayBTY29wZSNsb2NhbH0uCisgICAgICAgICAqLworICAgICAgICBARGVwcmVjYXRlZAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzdG9yZSA9ICJzdG9yZSI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGFnZ3JlZ2F0ZSA9ICJhZ2dyZWdhdGUiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzdWJncmFwaCA9ICJzdWJncmFwaCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGJhcnJpZXIgPSAiYmFycmllciI7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGluZGV4ID0gImluZGV4IjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgbG9jYWwgPSAibG9jYWwiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBlbWl0ID0gImVtaXQiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyByZXBlYXQgPSAicmVwZWF0IjsKQEAgLTI4NDAsOSArMzA0NSwxMiBAQAogCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHBhZ2VSYW5rID0gInBhZ2VSYW5rIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcGVlclByZXNzdXJlID0gInBlZXJQcmVzc3VyZSI7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvbm5lY3RlZENvbXBvbmVudCA9ICJjb25uZWN0ZWRDb21wb25lbnQiOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzaG9ydGVzdFBhdGggPSAic2hvcnRlc3RQYXRoIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcHJvZ3JhbSA9ICJwcm9ncmFtIjsKIAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBieSA9ICJieSI7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHdpdGggPSAid2l0aCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHRpbWVzID0gInRpbWVzIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgYXMgPSAiYXMiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBvcHRpb24gPSAib3B0aW9uIjsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsU291cmNlLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5qYXZhCmluZGV4IDM1Y2RkNzcuLmY1YzVjMDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsU291cmNlLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWxTb3VyY2UuamF2YQpAQCAtMzIsNiArMzIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQWRkRWRnZVN0YXJ0U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkFkZFZlcnRleFN0YXJ0U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyYXBoU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Jb1N0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW5qZWN0U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUmVxdWlyZW1lbnRzU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CkBAIC00MCw2ICs0MSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVHJhbnNhY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CiAKIGltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CiBpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpbmFyeU9wZXJhdG9yOwpAQCAtNTIsNiArNTQsNyBAQAogICogQW55IERTTCBjYW4gYmUgY29uc3RydWN0ZWQgYmFzZWQgb24gdGhlIG1ldGhvZHMgb2YgYm90aCB7QGNvZGUgR3JhcGhUcmF2ZXJzYWxTb3VyY2V9IGFuZCB7QGxpbmsgR3JhcGhUcmF2ZXJzYWx9LgogICoKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCiBwdWJsaWMgY2xhc3MgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgaW1wbGVtZW50cyBUcmF2ZXJzYWxTb3VyY2UgewogICAgIHByb3RlY3RlZCB0cmFuc2llbnQgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uOwpAQCAtODgsNiArOTEsMTIgQEAKICAgICAgICAgdGhpcyhncmFwaCwgVHJhdmVyc2FsU3RyYXRlZ2llcy5HbG9iYWxDYWNoZS5nZXRTdHJhdGVnaWVzKGdyYXBoLmdldENsYXNzKCkpKTsKICAgICB9CiAKKyAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UoZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHRoaXMoRW1wdHlHcmFwaC5pbnN0YW5jZSgpLCBUcmF2ZXJzYWxTdHJhdGVnaWVzLkdsb2JhbENhY2hlLmdldFN0cmF0ZWdpZXMoRW1wdHlHcmFwaC5jbGFzcykuY2xvbmUoKSk7CisgICAgICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgIHRoaXMuc3RyYXRlZ2llcy5hZGRTdHJhdGVnaWVzKG5ldyBSZW1vdGVTdHJhdGVneShjb25uZWN0aW9uKSk7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFRyYXZlcnNhbFN0cmF0ZWdpZXMgZ2V0U3RyYXRlZ2llcygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuc3RyYXRlZ2llczsKQEAgLTEyMSw2ICsxMzAsMjIgQEAKICAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgICovCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsU291cmNlIHdpdGgoZmluYWwgU3RyaW5nIGtleSkgeworICAgICAgICByZXR1cm4gKEdyYXBoVHJhdmVyc2FsU291cmNlKSBUcmF2ZXJzYWxTb3VyY2Uuc3VwZXIud2l0aChrZXkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIHtAaW5oZXJpdERvY30KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugd2l0aChmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIChHcmFwaFRyYXZlcnNhbFNvdXJjZSkgVHJhdmVyc2FsU291cmNlLnN1cGVyLndpdGgoa2V5LCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICoge0Bpbmhlcml0RG9jfQorICAgICAqLworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbFNvdXJjZSB3aXRoU3RyYXRlZ2llcyhmaW5hbCBUcmF2ZXJzYWxTdHJhdGVneS4uLiB0cmF2ZXJzYWxTdHJhdGVnaWVzKSB7CiAgICAgICAgIHJldHVybiAoR3JhcGhUcmF2ZXJzYWxTb3VyY2UpIFRyYXZlcnNhbFNvdXJjZS5zdXBlci53aXRoU3RyYXRlZ2llcyh0cmF2ZXJzYWxTdHJhdGVnaWVzKTsKICAgICB9CkBAIC0zMDcsNyArMzMyLDYgQEAKICAgICAgICAgLy8gY29ubmVjdGlvbiBhcyB5b3UgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4gb25lLiBtYXliZSBiZXR0ZXIgdG8gdG9zcyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24/PwogICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uICE9IG51bGwpCiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlRyYXZlcnNhbFNvdXJjZSBhbHJlYWR5IGNvbmZpZ3VyZWQgd2l0aCBhIFJlbW90ZUNvbm5lY3Rpb24gWyVzXSIsIGNvbm5lY3Rpb24pKTsKLQogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBjbG9uZSA9IHRoaXMuY2xvbmUoKTsKICAgICAgICAgY2xvbmUuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CiAgICAgICAgIGNsb25lLmdldFN0cmF0ZWdpZXMoKS5hZGRTdHJhdGVnaWVzKG5ldyBSZW1vdGVTdHJhdGVneShjb25uZWN0aW9uKSk7CkBAIC00MDAsNiArNDI0LDI3IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogUGVyZm9ybXMgYSByZWFkIG9yIHdyaXRlIGJhc2VkIG9wZXJhdGlvbiBvbiB0aGUge0BsaW5rIEdyYXBofSBiYWNraW5nIHRoaXMge0Bjb2RlIEdyYXBoVHJhdmVyc2FsU291cmNlfS4gVGhpcworICAgICAqIHN0ZXAgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9IG1vZHVsYXRvciBmb3IgZnVydGhlciBjb25maWd1cmF0aW9uCisgICAgICogYW5kIG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjcmVhZCgpfSBvciB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd3JpdGUoKX0gbW9kdWxhdG9yIHN0ZXAKKyAgICAgKiB3aGljaCB3aWxsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2FsLgorICAgICAqCisgICAgICogQHBhcmFtIGZpbGUgdGhlIG5hbWUgb2YgZmlsZSBmb3Igd2hpY2ggdGhlIHJlYWQgb3Igd3JpdGUgd2lsbCBhcHBseSAtIG5vdGUgdGhhdCB0aGUgY29udGV4dCBvZiBob3cgdGhpcworICAgICAqICAgICAgICAgICAgIHBhcmFtZXRlciBpcyB1c2VkIGlzIHdob2xseSBkZXBlbmRlbnQgb24gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggdGhlIHtAbGluayBJb1N0ZXB9IGFkZGVkCisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyNpby1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBJTyBTdGVwPC9hPgorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jcmVhZC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBSZWFkIFN0ZXA8L2E+CisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyN3cml0ZS1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBXcml0ZSBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyA8Uz4gR3JhcGhUcmF2ZXJzYWw8UywgUz4gaW8oZmluYWwgU3RyaW5nIGZpbGUpIHsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgY2xvbmUgPSB0aGlzLmNsb25lKCk7CisgICAgICAgIGNsb25lLmJ5dGVjb2RlLmFkZFN0ZXAoR3JhcGhUcmF2ZXJzYWwuU3ltYm9scy5pbywgZmlsZSk7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsUz4gdHJhdmVyc2FsID0gbmV3IERlZmF1bHRHcmFwaFRyYXZlcnNhbDw+KGNsb25lKTsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbC5hZGRTdGVwKG5ldyBJb1N0ZXA8Uz4odHJhdmVyc2FsLCBmaWxlKSk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogUHJveGllcyBjYWxscyB0aHJvdWdoIHRvIHRoZSB1bmRlcmx5aW5nIHtAbGluayBHcmFwaCN0eCgpfS4KICAgICAgKi8KICAgICBwdWJsaWMgVHJhbnNhY3Rpb24gdHgoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9fXy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvX18uamF2YQppbmRleCA1Y2JmZTg3Li5hYWI4M2Y0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9fXy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL19fLmphdmEKQEAgLTI1NCwxNSArMjU0LDI1IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCNlbGVtZW50TWFwKFN0cmluZy4uLikKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIDxBIGV4dGVuZHMgRWxlbWVudCwgQj4gR3JhcGhUcmF2ZXJzYWw8QSwgTWFwPE9iamVjdCwgQj4+IGVsZW1lbnRNYXAoZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgeworICAgICAgICByZXR1cm4gX18uPEE+c3RhcnQoKS5lbGVtZW50TWFwKHByb3BlcnR5S2V5cyk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCN2YWx1ZU1hcChTdHJpbmcuLi4pCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyA8QSBleHRlbmRzIEVsZW1lbnQsIEI+IEdyYXBoVHJhdmVyc2FsPEEsIE1hcDxTdHJpbmcsIEI+PiB2YWx1ZU1hcChmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CisgICAgcHVibGljIHN0YXRpYyA8QSBleHRlbmRzIEVsZW1lbnQsIEI+IEdyYXBoVHJhdmVyc2FsPEEsIE1hcDxPYmplY3QsIEI+PiB2YWx1ZU1hcChmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CiAgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLnZhbHVlTWFwKHByb3BlcnR5S2V5cyk7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCN2YWx1ZU1hcChib29sZWFuLCBTdHJpbmcuLi4pCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB7QGxpbmsgX18jdmFsdWVNYXAoU3RyaW5nLi4uKX0gaW4gY29uanVuY3Rpb24gd2l0aAorICAgICAqICAgICAgICAgICAgIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0uCiAgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIDxBIGV4dGVuZHMgRWxlbWVudCwgQj4gR3JhcGhUcmF2ZXJzYWw8QSwgTWFwPE9iamVjdCwgQj4+IHZhbHVlTWFwKGZpbmFsIGJvb2xlYW4gaW5jbHVkZVRva2VucywgZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgewogICAgICAgICByZXR1cm4gX18uPEE+c3RhcnQoKS52YWx1ZU1hcChpbmNsdWRlVG9rZW5zLCBwcm9wZXJ0eUtleXMpOwogICAgIH0KQEAgLTMyNCw2ICszMzQsMTMgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI2xvb3BzKFN0cmluZykKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIDxBPiBHcmFwaFRyYXZlcnNhbDxBLCBJbnRlZ2VyPiBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkubG9vcHMobG9vcE5hbWUpOworICAgIH0KKworICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjc2VsZWN0KFBvcCwgU3RyaW5nKQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgPEEsIEI+IEdyYXBoVHJhdmVyc2FsPEEsIEI+IHNlbGVjdChmaW5hbCBQb3AgcG9wLCBmaW5hbCBTdHJpbmcgc2VsZWN0S2V5KSB7CkBAIC00MTcsMjggKzQzNCwyOCBAQAogICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjbWluKCkKICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIDxBLCBCIGV4dGVuZHMgTnVtYmVyPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBtaW4oKSB7CisgICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPEEsIEI+IG1pbigpIHsKICAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkubWluKCk7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCNtaW4oU2NvcGUpCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8QSwgQj4gbWluKGZpbmFsIFNjb3BlIHNjb3BlKSB7CisgICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPEEsIEI+IG1pbihmaW5hbCBTY29wZSBzY29wZSkgewogICAgICAgICByZXR1cm4gX18uPEE+c3RhcnQoKS5taW4oc2NvcGUpOwogICAgIH0KIAogICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjbWF4KCkKICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIDxBLCBCIGV4dGVuZHMgTnVtYmVyPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBtYXgoKSB7CisgICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPEEsIEI+IG1heCgpIHsKICAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkubWF4KCk7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCNtYXgoU2NvcGUpCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8QSwgQj4gbWF4KGZpbmFsIFNjb3BlIHNjb3BlKSB7CisgICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPEEsIEI+IG1heChmaW5hbCBTY29wZSBzY29wZSkgewogICAgICAgICByZXR1cm4gX18uPEE+c3RhcnQoKS5tYXgoc2NvcGUpOwogICAgIH0KIApAQCAtODg4LDYgKzkwNSwxMyBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjYWdncmVnYXRlKFNjb3BlLCBTdHJpbmcpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyA8QT4gR3JhcGhUcmF2ZXJzYWw8QSwgQT4gYWdncmVnYXRlKGZpbmFsIFNjb3BlIHNjb3BlLCBmaW5hbCBTdHJpbmcgc2lkZUVmZmVjdEtleSkgeworICAgICAgICByZXR1cm4gX18uPEE+c3RhcnQoKS5hZ2dyZWdhdGUoc2NvcGUsIHNpZGVFZmZlY3RLZXkpOworICAgIH0KKworICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjZ3JvdXAoU3RyaW5nKQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgPEE+IEdyYXBoVHJhdmVyc2FsPEEsIEE+IGdyb3VwKGZpbmFsIFN0cmluZyBzaWRlRWZmZWN0S2V5KSB7CkBAIC05MjQsNyArOTQ4LDkgQEAKIAogICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjc3RvcmUoU3RyaW5nKQorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayAjYWdncmVnYXRlKFNjb3BlLCBTdHJpbmcpfSB1c2luZyB7QGxpbmsgU2NvcGUjbG9jYWx9LgogICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyA8QT4gR3JhcGhUcmF2ZXJzYWw8QSwgQT4gc3RvcmUoZmluYWwgU3RyaW5nIHNpZGVFZmZlY3RLZXkpIHsKICAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkuc3RvcmUoc2lkZUVmZmVjdEtleSk7CiAgICAgfQpAQCAtMTAzMCw2ICsxMDU2LDEzIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCNyZXBlYXQoVHJhdmVyc2FsKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgPEE+IEdyYXBoVHJhdmVyc2FsPEEsIEE+IHJlcGVhdChmaW5hbCBTdHJpbmcgbG9vcE5hbWUsIGZpbmFsIFRyYXZlcnNhbDw/LCBBPiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkucmVwZWF0KGxvb3BOYW1lLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjZW1pdChUcmF2ZXJzYWwpCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyA8QT4gR3JhcGhUcmF2ZXJzYWw8QSwgQT4gZW1pdChmaW5hbCBUcmF2ZXJzYWw8PywgPz4gZW1pdFRyYXZlcnNhbCkgewpAQCAtMTEwOCw0ICsxMTQxLDEwIEBACiAgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLmJhcnJpZXIoYmFycmllckNvbnN1bWVyKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI2luZGV4KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIDxBLCBCPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBpbmRleCgpIHsKKyAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkuaW5kZXgoKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2VuZ2luZS9Db21wdXRlclRyYXZlcnNhbEVuZ2luZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9lbmdpbmUvQ29tcHV0ZXJUcmF2ZXJzYWxFbmdpbmUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc4NjI4MC4uMDAwMDAwMAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2VuZ2luZS9Db21wdXRlclRyYXZlcnNhbEVuZ2luZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmVuZ2luZTsKLQotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEVuZ2luZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwotCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICovCi1ARGVwcmVjYXRlZAotcHVibGljIGZpbmFsIGNsYXNzIENvbXB1dGVyVHJhdmVyc2FsRW5naW5lIGltcGxlbWVudHMgVHJhdmVyc2FsRW5naW5lIHsKLQotICAgIHByaXZhdGUgZmluYWwgdHJhbnNpZW50IEdyYXBoQ29tcHV0ZXIgZ3JhcGhDb21wdXRlcjsKLQotICAgIHByaXZhdGUgQ29tcHV0ZXJUcmF2ZXJzYWxFbmdpbmUoZmluYWwgR3JhcGhDb21wdXRlciBncmFwaENvbXB1dGVyKSB7Ci0gICAgICAgIHRoaXMuZ3JhcGhDb21wdXRlciA9IGdyYXBoQ29tcHV0ZXI7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgVHlwZSBnZXRUeXBlKCkgewotICAgICAgICByZXR1cm4gVHlwZS5DT01QVVRFUjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpLnRvTG93ZXJDYXNlKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgT3B0aW9uYWw8R3JhcGhDb21wdXRlcj4gZ2V0R3JhcGhDb21wdXRlcigpIHsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsLm9mTnVsbGFibGUodGhpcy5ncmFwaENvbXB1dGVyKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgQnVpbGRlciBidWlsZCgpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBCdWlsZGVyKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIGNsYXNzIEJ1aWxkZXIgaW1wbGVtZW50cyBUcmF2ZXJzYWxFbmdpbmUuQnVpbGRlciB7Ci0KLSAgICAgICAgcHJpdmF0ZSBDbGFzczw/IGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gZ3JhcGhDb21wdXRlckNsYXNzOwotICAgICAgICBwcml2YXRlIGludCB3b3JrZXJzID0gLTE7Ci0gICAgICAgIHByaXZhdGUgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB2ZXJ0ZXhGaWx0ZXIgPSBudWxsOwotICAgICAgICBwcml2YXRlIFRyYXZlcnNhbDxWZXJ0ZXgsIEVkZ2U+IGVkZ2VGaWx0ZXIgPSBudWxsOwotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgTGlzdDxUcmF2ZXJzYWxTdHJhdGVneT4gZ2V0V2l0aFN0cmF0ZWdpZXMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgQnVpbGRlciB3b3JrZXJzKGZpbmFsIGludCB3b3JrZXJzKSB7Ci0gICAgICAgICAgICB0aGlzLndvcmtlcnMgPSB3b3JrZXJzOwotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgQnVpbGRlciBjb21wdXRlcihmaW5hbCBDbGFzczw/IGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gZ3JhcGhDb21wdXRlckNsYXNzKSB7Ci0gICAgICAgICAgICB0aGlzLmdyYXBoQ29tcHV0ZXJDbGFzcyA9IGdyYXBoQ29tcHV0ZXJDbGFzczsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIEJ1aWxkZXIgdmVydGljZXMoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB2ZXJ0ZXhGaWx0ZXIpIHsKLSAgICAgICAgICAgIHRoaXMudmVydGV4RmlsdGVyID0gdmVydGV4RmlsdGVyOwotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgQnVpbGRlciBlZGdlcyhmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBFZGdlPiBlZGdlRmlsdGVyKSB7Ci0gICAgICAgICAgICB0aGlzLmVkZ2VGaWx0ZXIgPSBlZGdlRmlsdGVyOwotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBDb21wdXRlclRyYXZlcnNhbEVuZ2luZSBjcmVhdGUoZmluYWwgR3JhcGggZ3JhcGgpIHsKLSAgICAgICAgICAgIEdyYXBoQ29tcHV0ZXIgZ3JhcGhDb21wdXRlciA9IG51bGwgPT0gdGhpcy5ncmFwaENvbXB1dGVyQ2xhc3MgPyBncmFwaC5jb21wdXRlKCkgOiBncmFwaC5jb21wdXRlKHRoaXMuZ3JhcGhDb21wdXRlckNsYXNzKTsKLSAgICAgICAgICAgIGlmICgtMSAhPSB0aGlzLndvcmtlcnMpCi0gICAgICAgICAgICAgICAgZ3JhcGhDb21wdXRlciA9IGdyYXBoQ29tcHV0ZXIud29ya2Vycyh0aGlzLndvcmtlcnMpOwotICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy52ZXJ0ZXhGaWx0ZXIpCi0gICAgICAgICAgICAgICAgZ3JhcGhDb21wdXRlciA9IGdyYXBoQ29tcHV0ZXIudmVydGljZXModGhpcy52ZXJ0ZXhGaWx0ZXIpOwotICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5lZGdlRmlsdGVyKQotICAgICAgICAgICAgICAgIGdyYXBoQ29tcHV0ZXIgPSBncmFwaENvbXB1dGVyLmVkZ2VzKHRoaXMuZWRnZUZpbHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENvbXB1dGVyVHJhdmVyc2FsRW5naW5lKGdyYXBoQ29tcHV0ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbFNvdXJjZSBjcmVhdGUoZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgdHJhdmVyc2FsU291cmNlKSB7Ci0gICAgICAgICAgICBDb21wdXRlciBjb21wdXRlciA9IG51bGwgPT0gdGhpcy5ncmFwaENvbXB1dGVyQ2xhc3MgPyBDb21wdXRlci5jb21wdXRlKCkgOiBDb21wdXRlci5jb21wdXRlKHRoaXMuZ3JhcGhDb21wdXRlckNsYXNzKTsKLSAgICAgICAgICAgIGlmICgtMSAhPSB0aGlzLndvcmtlcnMpCi0gICAgICAgICAgICAgICAgY29tcHV0ZXIgPSBjb21wdXRlci53b3JrZXJzKHRoaXMud29ya2Vycyk7Ci0gICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnZlcnRleEZpbHRlcikKLSAgICAgICAgICAgICAgICBjb21wdXRlciA9IGNvbXB1dGVyLnZlcnRpY2VzKHRoaXMudmVydGV4RmlsdGVyKTsKLSAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMuZWRnZUZpbHRlcikKLSAgICAgICAgICAgICAgICBjb21wdXRlciA9IGNvbXB1dGVyLmVkZ2VzKHRoaXMuZWRnZUZpbHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2FsU291cmNlLndpdGhDb21wdXRlcihjb21wdXRlcik7Ci0gICAgICAgIH0KLSAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9lbmdpbmUvU3RhbmRhcmRUcmF2ZXJzYWxFbmdpbmUuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZW5naW5lL1N0YW5kYXJkVHJhdmVyc2FsRW5naW5lLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYmQ4ZTcuLjAwMDAwMDAKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9lbmdpbmUvU3RhbmRhcmRUcmF2ZXJzYWxFbmdpbmUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5lbmdpbmU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEVuZ2luZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKLQotaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICovCi1ARGVwcmVjYXRlZAotcHVibGljIGZpbmFsIGNsYXNzIFN0YW5kYXJkVHJhdmVyc2FsRW5naW5lIGltcGxlbWVudHMgVHJhdmVyc2FsRW5naW5lIHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0YW5kYXJkVHJhdmVyc2FsRW5naW5lIElOU1RBTkNFID0gbmV3IFN0YW5kYXJkVHJhdmVyc2FsRW5naW5lKCk7Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHByaXZhdGUgU3RhbmRhcmRUcmF2ZXJzYWxFbmdpbmUoKSB7Ci0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBUeXBlIGdldFR5cGUoKSB7Ci0gICAgICAgIHJldHVybiBUeXBlLlNUQU5EQVJEOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIE9wdGlvbmFsPEdyYXBoQ29tcHV0ZXI+IGdldEdyYXBoQ29tcHV0ZXIoKSB7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbC5lbXB0eSgpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgewotICAgICAgICByZXR1cm4gQnVpbGRlci5JTlNUQU5DRTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgU3RhbmRhcmRUcmF2ZXJzYWxFbmdpbmUgaW5zdGFuY2UoKSB7Ci0gICAgICAgIHJldHVybiBJTlNUQU5DRTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpLnRvTG93ZXJDYXNlKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIGNsYXNzIEJ1aWxkZXIgaW1wbGVtZW50cyBUcmF2ZXJzYWxFbmdpbmUuQnVpbGRlciB7Ci0KLSAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnVpbGRlciBJTlNUQU5DRSA9IG5ldyBCdWlsZGVyKCk7Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWxFbmdpbmUgY3JlYXRlKGZpbmFsIEdyYXBoIGdyYXBoKSB7Ci0gICAgICAgICAgICByZXR1cm4gU3RhbmRhcmRUcmF2ZXJzYWxFbmdpbmUuSU5TVEFOQ0U7Ci0gICAgICAgIH0KLSAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvQ29sdW1uVHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Db2x1bW5UcmF2ZXJzYWwuamF2YQppbmRleCA1MDIzODA1Li45ZTJmMzFjIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Db2x1bW5UcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Db2x1bW5UcmF2ZXJzYWwuamF2YQpAQCAtMjIsNiArMjIsOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkNvbHVtbjsKIAoraW1wb3J0IGphdmEudXRpbC5PYmplY3RzOworCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCkBAIC01Nyw0ICs1OSwxMCBAQAogICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCkuaGFzaENvZGUoKSBeIHRoaXMuY29sdW1uLmhhc2hDb2RlKCk7CiAgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBDb2x1bW5UcmF2ZXJzYWwKKyAgICAgICAgICAgICAgICAmJiBPYmplY3RzLmVxdWFscygoKENvbHVtblRyYXZlcnNhbCkgb3RoZXIpLmNvbHVtbiwgdGhpcy5jb2x1bW4pOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0NvbnN0YW50VHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Db25zdGFudFRyYXZlcnNhbC5qYXZhCmluZGV4IDkxOTczYjkuLmJjZjgyZDQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0NvbnN0YW50VHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvQ29uc3RhbnRUcmF2ZXJzYWwuamF2YQpAQCAtMTgsNiArMTgsOCBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwubGFtYmRhOwogCitpbXBvcnQgamF2YS51dGlsLk9iamVjdHM7CisKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KQEAgLTQzLDUgKzQ1LDEwIEBACiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5oYXNoQ29kZSgpIF4gdGhpcy5lbmQuaGFzaENvZGUoKTsKICAgICB9Ci19CiAKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIENvbnN0YW50VHJhdmVyc2FsCisgICAgICAgICAgICAgICAgJiYgT2JqZWN0cy5lcXVhbHMoKChDb25zdGFudFRyYXZlcnNhbCkgb3RoZXIpLmVuZCwgdGhpcy5lbmQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9FbGVtZW50VmFsdWVUcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0VsZW1lbnRWYWx1ZVRyYXZlcnNhbC5qYXZhCmluZGV4IDJlOWIyNmMuLjczZjczYTYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0VsZW1lbnRWYWx1ZVRyYXZlcnNhbC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0VsZW1lbnRWYWx1ZVRyYXZlcnNhbC5qYXZhCkBAIC0yMiw3ICsyMiwxNSBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxVdGlsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CiAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5PYmplY3RzOworCiAvKioKKyAqIE1vcmUgZWZmaWNpZW50bHkgZXh0cmFjdHMgYSB2YWx1ZSBmcm9tIGFuIHtAbGluayBFbGVtZW50fSBvciB7QGNvZGUgTWFwfSB0byBhdm9pZCBzdHJhdGVneSBhcHBsaWNhdGlvbiBjb3N0cy4gTm90ZQorICogdGhhdCBhcyBvZiAzLjQuNSB0aGlzIGNsYXNzIGlzIG5vdyBwb29ybHkgbmFtZWQgYXMgaXQgd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgdG8gd29yayB3aXRoIHtAbGluayBFbGVtZW50fSBvbmx5LgorICogSW4gZnV0dXJlIDMuNS4wIHRoaXMgY2xhc3Mgd2lsbCBsaWtlbHkgYmUgcmVuYW1lZCBidXQgdG8gZW5zdXJlIHRoYXQgd2UgZ2V0IHRoaXMgcmV2aXNlZCBmdW5jdGlvbmFsaXR5IGZvcgorICoge0Bjb2RlIE1hcH0gd2l0aG91dCBpbnRyb2R1Y2luZyBhIGJyZWFraW5nIGNoYW5nZSB0aGlzIG5hbWUgd2lsbCByZW1haW4gdGhlIHNhbWUuCisgKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBFbGVtZW50VmFsdWVUcmF2ZXJzYWw8Vj4gZXh0ZW5kcyBBYnN0cmFjdExhbWJkYVRyYXZlcnNhbDxFbGVtZW50LCBWPiB7CkBAIC00Niw3ICs1NCwyMyBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgYWRkU3RhcnQoZmluYWwgVHJhdmVyc2VyLkFkbWluPEVsZW1lbnQ+IHN0YXJ0KSB7Ci0gICAgICAgIHRoaXMudmFsdWUgPSBudWxsID09IHRoaXMuYnlwYXNzVHJhdmVyc2FsID8gc3RhcnQuZ2V0KCkudmFsdWUodGhpcy5wcm9wZXJ0eUtleSkgOiBUcmF2ZXJzYWxVdGlsLmFwcGx5KHN0YXJ0LCB0aGlzLmJ5cGFzc1RyYXZlcnNhbCk7CisgICAgICAgIGlmIChudWxsID09IHRoaXMuYnlwYXNzVHJhdmVyc2FsKSB7CisgICAgICAgICAgICAvLyBwbGF5aW5nIGEgZ2FtZSBvZiB0eXBlIGVyYXN1cmUgaGVyZS4uLi4udGVjaG5pY2FsbHkgd2UgY2FuIHByb2Nlc3MgZWl0aGVyIE1hcCBvciBFbGVtZW50IGhlcmUgaW4gdGhpcworICAgICAgICAgICAgLy8gY2FzZSBhZnRlciAzLjQuNS4gYW5kIG9idmlvdXNseSB1c2VycyBnZXQgd2VpcmQgZXJyb3JzIGFsb25nIHRob3NlIGxpbmVzIGhlcmUgYW55d2F5LiB3aWxsIGZpeCB1cCB0aGUKKyAgICAgICAgICAgIC8vIGdlbmVyaWNzIGluIDMuNS4wIHdoZW4gd2UgY2FuIHRha2Ugc29tZSBicmVha2luZyBjaGFuZ2VzLiBzZWVtZWQgbGlrZSB0aGlzIGZlYXR1cmUgd291bGQgbWFrZSBHcmVtbGluCisgICAgICAgICAgICAvLyBhIGxvdCBuaWNlciBhbmQgZ2l2ZW4gdGhlIHNtYWxsIGZvb3RwcmludCBvZiB0aGUgY2hhbmdlIHRoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGhhY2sgdG8gdGFrZS4KKyAgICAgICAgICAgIGZpbmFsIE9iamVjdCBvID0gc3RhcnQuZ2V0KCk7CisgICAgICAgICAgICBpZiAobyBpbnN0YW5jZW9mIEVsZW1lbnQpCisgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICgoRWxlbWVudCkgbykudmFsdWUocHJvcGVydHlLZXkpOworICAgICAgICAgICAgZWxzZSBpZiAobyBpbnN0YW5jZW9mIE1hcCkKKyAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gKFYpICgoTWFwKSBvKS5nZXQocHJvcGVydHlLZXkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgYnkoXCIlc1wiKSBtb2R1bGF0b3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhIHRyYXZlcnNlciB0aGF0IGlzIGFuIEVsZW1lbnQgb3IgYSBNYXAgLSBpdCBpcyBiZWluZyBhcHBsaWVkIHRvIFslc10gYSAlcyBjbGFzcyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5LCBvLCBvLmdldENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gVHJhdmVyc2FsVXRpbC5hcHBseShzdGFydCwgdGhpcy5ieXBhc3NUcmF2ZXJzYWwpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIFN0cmluZyBnZXRQcm9wZXJ0eUtleSgpIHsKQEAgLTYyLDQgKzg2LDEwIEBACiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLnByb3BlcnR5S2V5Lmhhc2hDb2RlKCk7CiAgICAgfQotfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBFbGVtZW50VmFsdWVUcmF2ZXJzYWwKKyAgICAgICAgICAgICAgICAmJiBPYmplY3RzLmVxdWFscygoKEVsZW1lbnRWYWx1ZVRyYXZlcnNhbCkgb3RoZXIpLnByb3BlcnR5S2V5LCB0aGlzLnByb3BlcnR5S2V5KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvSWRlbnRpdHlUcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0lkZW50aXR5VHJhdmVyc2FsLmphdmEKaW5kZXggOThmODVjMC4uMWVkNTc0OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvSWRlbnRpdHlUcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9JZGVudGl0eVRyYXZlcnNhbC5qYXZhCkBAIC00MSw0ICs0MSw5IEBACiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuICJpZGVudGl0eSI7CiAgICAgfQotfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBJZGVudGl0eVRyYXZlcnNhbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvTG9vcFRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvTG9vcFRyYXZlcnNhbC5qYXZhCmluZGV4IGFlMDNjOTQuLjY4YjZiMTggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0xvb3BUcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Mb29wVHJhdmVyc2FsLmphdmEKQEAgLTU1LDQgKzU1LDEwIEBACiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5oYXNoQ29kZSgpIF4gTG9uZy5oYXNoQ29kZSh0aGlzLm1heExvb3BzKTsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIExvb3BUcmF2ZXJzYWwKKyAgICAgICAgICAgICAgICAmJiAoKExvb3BUcmF2ZXJzYWwpIG90aGVyKS5tYXhMb29wcyA9PSB0aGlzLm1heExvb3BzOworICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Ub2tlblRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvVG9rZW5UcmF2ZXJzYWwuamF2YQppbmRleCA0Zjk4YTU0Li5kNDFjNDAyIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Ub2tlblRyYXZlcnNhbC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL1Rva2VuVHJhdmVyc2FsLmphdmEKQEAgLTIyLDYgKzIyLDggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiAKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKKwogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwpAQCAtNTcsNCArNTksMTAgQEAKICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewogICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygpLmhhc2hDb2RlKCkgXiB0aGlzLnQuaGFzaENvZGUoKTsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFRva2VuVHJhdmVyc2FsCisgICAgICAgICAgICAgICAgJiYgT2JqZWN0cy5lcXVhbHMoKChUb2tlblRyYXZlcnNhbCkgb3RoZXIpLnQsIHRoaXMudCk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvVHJ1ZVRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvVHJ1ZVRyYXZlcnNhbC5qYXZhCmluZGV4IDg0YzBkYjYuLjcxNTgwY2UgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL1RydWVUcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9UcnVlVHJhdmVyc2FsLmphdmEKQEAgLTQzLDQgKzQzLDkgQEAKICAgICBwdWJsaWMgVHJ1ZVRyYXZlcnNhbDxTPiBjbG9uZSgpIHsKICAgICAgICAgcmV0dXJuIElOU1RBTkNFOwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgVHJ1ZVRyYXZlcnNhbDsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvQ29uZmlndXJpbmcuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9Db25maWd1cmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYzYyODAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvQ29uZmlndXJpbmcuamF2YQpAQCAtMCwwICsxLDQxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CisKKy8qKgorICogSWRlbnRpZmllcyBhIHtAbGluayBTdGVwfSBhcyBvbmUgdGhhdCBjYW4gYWNjZXB0IGNvbmZpZ3VyYXRpb25zIHZpYSB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfQorICogc3RlcCBtb2R1bGF0b3IuIFRoZSBuYXR1cmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gYWxsb3dlZCBpcyBzcGVjaWZpYyB0byB0aGUgaW1wbGVtZW50YXRpb24uCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgaW50ZXJmYWNlIENvbmZpZ3VyaW5nIGV4dGVuZHMgUGFyYW1ldGVyaXppbmcgeworCisgICAgLyoqCisgICAgICogQWNjZXB0IGEgY29uZmlndXJhdGlvbiB0byB0aGUge0BsaW5rIFN0ZXB9LiBOb3RlIHRoYXQgdGhpcyBpbnRlcmZhY2UgZXh0ZW5kcyB7QGxpbmsgUGFyYW1ldGVyaXppbmd9IGFuZCBzbworICAgICAqIHRoZXJlIGlzIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHtAbGluayBTdGVwfSBpbXBsZW1lbnRhdGlvbiB3aWxsIGhhdmUgYSB7QGxpbmsgUGFyYW1ldGVyc30gaW5zdGFuY2UgdGhhdCB3aWxsCisgICAgICogaG91c2UgYW55IHZhbHVlcyBwYXNzZWQgdG8gdGhpcyBtZXRob2QuIFN0b3JpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMgaW4ge0BsaW5rIFBhcmFtZXRlcnN9IGlzIG5vdCBhIHJlcXVpcmVtZW50CisgICAgICogaG93ZXZlciwgSUYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYW4gZXhwZWN0ZWQgb3B0aW9uIGZvciB0aGUgc3RlcCBhbmQgY2FuIGJlIHN0b3JlZCBvbiBhIG1lbWJlciBmaWVsZCB0aGF0IGNhbgorICAgICAqIGJlIGFjY2Vzc2VkIG9uIHRoZSBzdGVwIGJ5IG1vcmUgZGlyZWN0IG1lYW5zIChpLmUuIGxpa2UgYSBnZXR0ZXIgbWV0aG9kKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcyk7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvTXV0YXRpbmcuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9NdXRhdGluZy5qYXZhCmluZGV4IDUwZTQxNWEuLjE0NTUzZDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9NdXRhdGluZy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9NdXRhdGluZy5qYXZhCkBAIC0yOCwxMyArMjgsMTAgQEAKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqIEBhdXRob3IgTWF0dCBGcmFudHogKGh0dHA6Ly9naXRodWIuY29tL21oZnJhbnR6KQogICovCi1wdWJsaWMgaW50ZXJmYWNlIE11dGF0aW5nPEUgZXh0ZW5kcyBFdmVudD4geworcHVibGljIGludGVyZmFjZSBNdXRhdGluZzxFIGV4dGVuZHMgRXZlbnQ+IGV4dGVuZHMgQ29uZmlndXJpbmcgewogCiAgICAgLyoqCiAgICAgICogR2V0cyB0aGUgY2FsbGJhY2sgcmVnaXN0cnkgZm9yIGV2ZW50cyB0aGF0IHRoZSBzdGVwIHJhaXNlcy4KICAgICAgKi8KICAgICBwdWJsaWMgQ2FsbGJhY2tSZWdpc3RyeTxFPiBnZXRNdXRhdGluZ0NhbGxiYWNrUmVnaXN0cnkoKTsKLQotICAgIHB1YmxpYyB2b2lkIGFkZFByb3BlcnR5TXV0YXRpb25zKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpOwotCiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvUGFyYW1ldGVyaXppbmcuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9QYXJhbWV0ZXJpemluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkOGRjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvUGFyYW1ldGVyaXppbmcuamF2YQpAQCAtMCwwICsxLDM5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CisKKy8qKgorICogQW4gaW50ZXJmYWNlIGZvciB7QGxpbmsgU3RlcH0gaW1wbGVtZW50YXRpb25zIHRoYXQgaG9sZCBhIHtAbGluayBQYXJhbWV0ZXJzfSBvYmplY3QsIHdoaWNoIGZvbGQgaW4gYXJndW1lbnRzIGZyb20KKyAqIG90aGVyIHN0ZXBzLiBJdCBpcyB0eXBpY2FsbHkgdXNlZCBvbiBtdXRhdGluZyBzdGVwcywgc3VjaCBhcyB7QGNvZGUgYWRkVigpfSwgd2hlcmUgY2FsbHMgdG8ge0Bjb2RlIHByb3BlcnR5KGssdil9CisgKiBhcmUgZm9sZGVkIGluIGFzIHBhcmFtZXRlcnMgdG8gdGhhdCBhZGQgdmVydGV4IHN0ZXAsIGJ1dCBpdCBtYXkgYmUgdXNlZCBmb3IgYW55IHN0ZXAgdGhhdCBjb3VsZCBiZW5lZml0IGZyb20KKyAqIG1vZHVsYXRpb24uCisgKgorICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgUGFyYW1ldGVyaXppbmcgeworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgcGFyYW1ldGVycyBvbiB0aGUgc3RlcC4KKyAgICAgKi8KKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCk7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvUmVhZFdyaXRpbmcuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9SZWFkV3JpdGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZThiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvUmVhZFdyaXRpbmcuamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworCisvKioKKyAqIEFuIGludGVyZmFjZSB0aGF0IGRlZmluZXMgYSB7QGxpbmsgU3RlcH0gYXMgb25lIHRoYXQgaGFuZGxlcyBJTyBiYXNlZCBvcGVyYXRpb25zIGZvciBhIHtAbGluayBHcmFwaH0uCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgaW50ZXJmYWNlIFJlYWRXcml0aW5nIGV4dGVuZHMgQ29uZmlndXJpbmcgeworCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyB0aGUgbW9kZSBvZiB0aGUgdGhlIElPIG9wZXJhdGlvbiBhcyBiZWluZyBmb3IgcmVhZGluZyBvciB3cml0aW5nIChvciBieSBkZWZhdWx0ICJ1bnNldCIpCisgICAgICovCisgICAgcHVibGljIGVudW0gTW9kZSB7CisgICAgICAgIFVOU0VULAorICAgICAgICBSRUFESU5HLAorICAgICAgICBXUklUSU5HCisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBmaWxlIGxvY2F0aW9uIHRvIHdyaXRlIHRvLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RmlsZSgpOworCisgICAgcHVibGljIHZvaWQgc2V0TW9kZShmaW5hbCBNb2RlIG1vZGUpOworCisgICAgcHVibGljIE1vZGUgZ2V0TW9kZSgpOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL1Njb3BpbmcuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9TY29waW5nLmphdmEKaW5kZXggYzg2ZjkxZi4uMzZlNzQ5MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL1Njb3BpbmcuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvU2NvcGluZy5qYXZhCkBAIC0xMTAsMzIgKzExMCwyNCBAQAogICAgIHB1YmxpYyBlbnVtIFZhcmlhYmxlIHtTVEFSVCwgRU5EfQogCiAgICAgcHVibGljIGRlZmF1bHQgPFM+IFMgZ2V0U2NvcGVWYWx1ZShmaW5hbCBQb3AgcG9wLCBmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Pz4gdHJhdmVyc2VyKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKLSAgICAgICAgaWYgKHRyYXZlcnNlci5nZXRTaWRlRWZmZWN0cygpLmV4aXN0cyhrZXkpKQotICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlci5nZXRTaWRlRWZmZWN0cygpLmdldChrZXkpOwotICAgICAgICAvLy8KLSAgICAgICAgZmluYWwgT2JqZWN0IG9iamVjdCA9IHRyYXZlcnNlci5nZXQoKTsKLSAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIE1hcCAmJiAoKE1hcDxTdHJpbmcsIFM+KSBvYmplY3QpLmNvbnRhaW5zS2V5KGtleSkpCi0gICAgICAgICAgICByZXR1cm4gKChNYXA8U3RyaW5nLCBTPikgb2JqZWN0KS5nZXQoa2V5KTsKLSAgICAgICAgLy8vCi0gICAgICAgIGZpbmFsIFBhdGggcGF0aCA9IHRyYXZlcnNlci5wYXRoKCk7Ci0gICAgICAgIGlmIChwYXRoLmhhc0xhYmVsKGtleSkpCi0gICAgICAgICAgICByZXR1cm4gcGF0aC5nZXQocG9wLCBrZXkpOwotICAgICAgICAvLy8KLSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTmVpdGhlciB0aGUgc2lkZUVmZmVjdHMsIG1hcCwgbm9yIHBhdGggaGFzIGEgIiArIGtleSArICIta2V5OiAiICsgdGhpcyk7CisgICAgICAgIGZpbmFsIFMgbyA9IGdldE51bGxhYmxlU2NvcGVWYWx1ZShwb3AsIGtleSwgdHJhdmVyc2VyKTsKKyAgICAgICAgaWYgKG51bGwgPT0gbykKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk5laXRoZXIgdGhlIHNpZGVFZmZlY3RzLCBtYXAsIG5vciBwYXRoIGhhcyBhICIgKyBrZXkgKyAiLWtleTogIiArIHRoaXMpOworICAgICAgICByZXR1cm4gbzsKICAgICB9CiAKICAgICBwdWJsaWMgZGVmYXVsdCA8Uz4gUyBnZXROdWxsYWJsZVNjb3BlVmFsdWUoZmluYWwgUG9wIHBvcCwgZmluYWwgU3RyaW5nIGtleSwgZmluYWwgVHJhdmVyc2VyLkFkbWluPD8+IHRyYXZlcnNlcikgewotICAgICAgICBpZiAodHJhdmVyc2VyLmdldFNpZGVFZmZlY3RzKCkuZXhpc3RzKGtleSkpCi0gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VyLmdldFNpZGVFZmZlY3RzKCkuZ2V0KGtleSk7Ci0gICAgICAgIC8vLwogICAgICAgICBmaW5hbCBPYmplY3Qgb2JqZWN0ID0gdHJhdmVyc2VyLmdldCgpOwogICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgTWFwICYmICgoTWFwPFN0cmluZywgUz4pIG9iamVjdCkuY29udGFpbnNLZXkoa2V5KSkKICAgICAgICAgICAgIHJldHVybiAoKE1hcDxTdHJpbmcsIFM+KSBvYmplY3QpLmdldChrZXkpOwotICAgICAgICAvLy8KKworICAgICAgICBpZiAodHJhdmVyc2VyLmdldFNpZGVFZmZlY3RzKCkuZXhpc3RzKGtleSkpCisgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VyLmdldFNpZGVFZmZlY3RzKCkuZ2V0KGtleSk7CisKICAgICAgICAgZmluYWwgUGF0aCBwYXRoID0gdHJhdmVyc2VyLnBhdGgoKTsKICAgICAgICAgaWYgKHBhdGguaGFzTGFiZWwoa2V5KSkKICAgICAgICAgICAgIHJldHVybiBwYXRoLmdldChwb3AsIGtleSk7Ci0gICAgICAgIC8vLworCiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFN0ZXAuamF2YQppbmRleCBiZjJjMjAzLi45NTVkYWNiIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFN0ZXAuamF2YQpAQCAtNDMsNiArNDMsNyBAQAogICAgIHByaXZhdGUgVHJhdmVyc2FsLkFkbWluPFMsIFM+IHJlcGVhdFRyYXZlcnNhbCA9IG51bGw7CiAgICAgcHJpdmF0ZSBUcmF2ZXJzYWwuQWRtaW48UywgPz4gdW50aWxUcmF2ZXJzYWwgPSBudWxsOwogICAgIHByaXZhdGUgVHJhdmVyc2FsLkFkbWluPFMsID8+IGVtaXRUcmF2ZXJzYWwgPSBudWxsOworICAgIHByaXZhdGUgU3RyaW5nIGxvb3BOYW1lID0gbnVsbDsKICAgICBwdWJsaWMgYm9vbGVhbiB1bnRpbEZpcnN0ID0gZmFsc2U7CiAgICAgcHVibGljIGJvb2xlYW4gZW1pdEZpcnN0ID0gZmFsc2U7CiAKQEAgLTY4LDYgKzY5LDExIEBACiAgICAgICAgIHRoaXMuaW50ZWdyYXRlQ2hpbGQodGhpcy5yZXBlYXRUcmF2ZXJzYWwpOwogICAgIH0KIAorCisgICAgcHVibGljIHZvaWQgc2V0TG9vcE5hbWUoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIHRoaXMubG9vcE5hbWUgPSBsb29wTmFtZTsKKyAgICB9CisKICAgICBwdWJsaWMgdm9pZCBzZXRVbnRpbFRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWwuQWRtaW48UywgPz4gdW50aWxUcmF2ZXJzYWwpIHsKICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy51bnRpbFRyYXZlcnNhbCkKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlRoZSByZXBlYXQoKS1zdGVwIGFscmVhZHkgaGFzIGl0cyB1bnRpbCgpLW1vZHVsYXRvciBkZWNsYXJlZDogIiArIHRoaXMpOwpAQCAtMTcyLDYgKzE3OCw4IEBACiAgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5yZXBlYXRUcmF2ZXJzYWwuaGFzaENvZGUoKTsKICAgICAgICAgcmVzdWx0IF49IEJvb2xlYW4uaGFzaENvZGUodGhpcy51bnRpbEZpcnN0KTsKICAgICAgICAgcmVzdWx0IF49IEJvb2xlYW4uaGFzaENvZGUodGhpcy5lbWl0Rmlyc3QpIDw8IDE7CisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lICE9IG51bGwpCisgICAgICAgICAgICByZXN1bHQgXj0gdGhpcy5sb29wTmFtZS5oYXNoQ29kZSgpOwogICAgICAgICBpZiAodGhpcy51bnRpbFRyYXZlcnNhbCAhPSBudWxsKQogICAgICAgICAgICAgcmVzdWx0IF49IHRoaXMudW50aWxUcmF2ZXJzYWwuaGFzaENvZGUoKTsKICAgICAgICAgaWYgKHRoaXMuZW1pdFRyYXZlcnNhbCAhPSBudWxsKQpAQCAtMTg5LDYgKzE5Nyw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVwZWF0VHJhdmVyc2FsLmdldEVuZFN0ZXAoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHN0YXJ0ID0gdGhpcy5zdGFydHMubmV4dCgpOworICAgICAgICAgICAgICAgIHN0YXJ0LmluaXRpYWxpc2VMb29wcyh0aGlzLmdldElkKCksIHRoaXMubG9vcE5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChkb1VudGlsKHN0YXJ0LCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICBzdGFydC5yZXNldExvb3BzKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRvclV0aWxzLm9mKHN0YXJ0KTsKQEAgLTIxMCwxMiArMjE5LDEyIEBACiAKICAgICAgICAgZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHN0YXJ0ID0gdGhpcy5zdGFydHMubmV4dCgpOwogICAgICAgICBpZiAoZG9VbnRpbChzdGFydCwgdHJ1ZSkpIHsKLSAgICAgICAgICAgIHN0YXJ0LnJlc2V0TG9vcHMoKTsKICAgICAgICAgICAgIHN0YXJ0LnNldFN0ZXBJZCh0aGlzLmdldE5leHRTdGVwKCkuZ2V0SWQoKSk7CiAgICAgICAgICAgICBzdGFydC5hZGRMYWJlbHModGhpcy5sYWJlbHMpOwogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdG9yVXRpbHMub2Yoc3RhcnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RhcnQuc2V0U3RlcElkKHRoaXMucmVwZWF0VHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLmdldElkKCkpOworICAgICAgICAgICAgc3RhcnQuaW5pdGlhbGlzZUxvb3BzKHN0YXJ0LmdldFN0ZXBJZCgpLCB0aGlzLmxvb3BOYW1lKTsKICAgICAgICAgICAgIGlmIChkb0VtaXQoc3RhcnQsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IGVtaXRTcGxpdCA9IHN0YXJ0LnNwbGl0KCk7CiAgICAgICAgICAgICAgICAgZW1pdFNwbGl0LnJlc2V0TG9vcHMoKTsKQEAgLTI0MSw2ICsyNTAsMTMgQEAKICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKICAgICB9CiAKKyAgICBwdWJsaWMgc3RhdGljIDxBLCBCLCBDIGV4dGVuZHMgVHJhdmVyc2FsPEEsIEI+PiBDIGFkZFJlcGVhdFRvVHJhdmVyc2FsKGZpbmFsIEMgdHJhdmVyc2FsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUsIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxCLCBCPiByZXBlYXRUcmF2ZXJzYWwpIHsKKyAgICAgICAgYWRkUmVwZWF0VG9UcmF2ZXJzYWwodHJhdmVyc2FsLCByZXBlYXRUcmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBTdGVwPD8sIEI+IHN0ZXAgPSB0cmF2ZXJzYWwuYXNBZG1pbigpLmdldEVuZFN0ZXAoKTsKKyAgICAgICAgKChSZXBlYXRTdGVwKSBzdGVwKS5sb29wTmFtZSA9IGxvb3BOYW1lOworICAgICAgICByZXR1cm4gdHJhdmVyc2FsOworICAgIH0KKwogICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIsIEMgZXh0ZW5kcyBUcmF2ZXJzYWw8QSwgQj4+IEMgYWRkVW50aWxUb1RyYXZlcnNhbChmaW5hbCBDIHRyYXZlcnNhbCwgZmluYWwgVHJhdmVyc2FsLkFkbWluPEIsID8+IHVudGlsUHJlZGljYXRlKSB7CiAgICAgICAgIGZpbmFsIFN0ZXA8PywgQj4gc3RlcCA9IHRyYXZlcnNhbC5hc0FkbWluKCkuZ2V0RW5kU3RlcCgpOwogICAgICAgICBpZiAoc3RlcCBpbnN0YW5jZW9mIFJlcGVhdFN0ZXAgJiYgbnVsbCA9PSAoKFJlcGVhdFN0ZXApIHN0ZXApLnVudGlsVHJhdmVyc2FsKSB7CkBAIC0yNzgsNyArMjk0LDcgQEAKICAgICAgICAgICAgIGZpbmFsIFJlcGVhdFN0ZXA8Uz4gcmVwZWF0U3RlcCA9IChSZXBlYXRTdGVwPFM+KSB0aGlzLmdldFRyYXZlcnNhbCgpLmdldFBhcmVudCgpOwogICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gc3RhcnQgPSB0aGlzLnN0YXJ0cy5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgc3RhcnQuaW5jckxvb3BzKHRoaXMuZ2V0SWQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnQuaW5jckxvb3BzKCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcGVhdFN0ZXAuZG9VbnRpbChzdGFydCwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LnJlc2V0TG9vcHMoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdG9yVXRpbHMub2Yoc3RhcnQpOwpAQCAtMzAwLDcgKzMxNiw3IEBACiAgICAgICAgIHByb3RlY3RlZCBJdGVyYXRvcjxUcmF2ZXJzZXIuQWRtaW48Uz4+IGNvbXB1dGVyQWxnb3JpdGhtKCkgdGhyb3dzIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gewogICAgICAgICAgICAgZmluYWwgUmVwZWF0U3RlcDxTPiByZXBlYXRTdGVwID0gKFJlcGVhdFN0ZXA8Uz4pIHRoaXMuZ2V0VHJhdmVyc2FsKCkuZ2V0UGFyZW50KCk7CiAgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gc3RhcnQgPSB0aGlzLnN0YXJ0cy5uZXh0KCk7Ci0gICAgICAgICAgICBzdGFydC5pbmNyTG9vcHMocmVwZWF0U3RlcC5nZXRJZCgpKTsKKyAgICAgICAgICAgIHN0YXJ0LmluY3JMb29wcygpOwogICAgICAgICAgICAgaWYgKHJlcGVhdFN0ZXAuZG9VbnRpbChzdGFydCwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgc3RhcnQucmVzZXRMb29wcygpOwogICAgICAgICAgICAgICAgIHN0YXJ0LnNldFN0ZXBJZChyZXBlYXRTdGVwLmdldE5leHRTdGVwKCkuZ2V0SWQoKSk7CkBAIC0zMjAsNCArMzM2LDQgQEAKICAgICAgICAgfQogICAgIH0KIAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvQW5kU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9BbmRTdGVwLmphdmEKaW5kZXggNWQ5ZDEyNC4uNWMyMGNkOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9BbmRTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9BbmRTdGVwLmphdmEKQEAgLTM5LDQgKzM5LDQgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9Ecm9wU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9Ecm9wU3RlcC5qYXZhCmluZGV4IGNkOTVlNDguLjk3ZDA3MDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvRHJvcFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0Ryb3BTdGVwLmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuTXV0YXRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5ldmVudC5DYWxsYmFja1JlZ2lzdHJ5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLmV2ZW50LkV2ZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLmV2ZW50Lkxpc3RDYWxsYmFja1JlZ2lzdHJ5OwpAQCAtMzYsNyArMzcsNyBAQAogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBEcm9wU3RlcDxTPiBleHRlbmRzIEZpbHRlclN0ZXA8Uz4gaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudD4geworcHVibGljIGNsYXNzIERyb3BTdGVwPFM+IGV4dGVuZHMgRmlsdGVyU3RlcDxTPiBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50PiB7CiAKICAgICBwcml2YXRlIENhbGxiYWNrUmVnaXN0cnk8RXZlbnQ+IGNhbGxiYWNrUmVnaXN0cnk7CiAKQEAgLTk0LDcgKzk1LDEzIEBACiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lc24ndCBkbyBhbnl0aGluZyBhcyB7QGNvZGUgZHJvcCgpfSBkb2Vzbid0IHRha2UgcHJvcGVydHkgbXV0YXRpb24gYXJndW1lbnRzLgogICAgICAqLwotICAgIHB1YmxpYyB2b2lkIGFkZFByb3BlcnR5TXV0YXRpb25zKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgewogICAgICAgICAvLyBkbyBub3RoaW5nCiAgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIFBhcmFtZXRlcnMuRU1QVFk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRFZGdlU3RhcnRTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZEVkZ2VTdGFydFN0ZXAuamF2YQppbmRleCAzMzY5ZDM3Li5mMzc3NTZlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZEVkZ2VTdGFydFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZEVkZ2VTdGFydFN0ZXAuamF2YQpAQCAtMTksNyArMTksNiBAQAogCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhcmFtZXRlcml6aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKQEAgLTUxLDggKzUwLDggQEAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBBZGRFZGdlU3RhcnRTdGVwIGV4dGVuZHMgQWJzdHJhY3RTdGVwPEVkZ2UsIEVkZ2U+Ci0gICAgICAgIGltcGxlbWVudHMgTXV0YXRpbmc8RXZlbnQuRWRnZUFkZGVkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFBhcmFtZXRlcml6aW5nLCBTY29waW5nLCBGcm9tVG9Nb2R1bGF0aW5nIHsKK3B1YmxpYyBjbGFzcyBBZGRFZGdlU3RhcnRTdGVwIGV4dGVuZHMgQWJzdHJhY3RTdGVwPEVkZ2UsIEVkZ2U+CisgICAgICAgIGltcGxlbWVudHMgTXV0YXRpbmc8RXZlbnQuRWRnZUFkZGVkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFNjb3BpbmcsIEZyb21Ub01vZHVsYXRpbmcgewogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEZST00gPSBHcmFwaC5IaWRkZW4uaGlkZSgiZnJvbSIpOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUTyA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0byIpOwpAQCAtODcsNyArODYsNyBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGFkZFByb3BlcnR5TXV0YXRpb25zKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgewogICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZEVkZ2VTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZEVkZ2VTdGVwLmphdmEKaW5kZXggODFhZmQwMy4uYWEzODE4YiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRFZGdlU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkRWRnZVN0ZXAuamF2YQpAQCAtMTgsNyArMTgsNiBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhcmFtZXRlcml6aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Gcm9tVG9Nb2R1bGF0aW5nOwpAQCAtMzcsNyArMzYsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLkF0dGFjaGFibGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRGYWN0b3J5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKIAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwpAQCAtNDcsOCArNDUsOCBAQAogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBBZGRFZGdlU3RlcDxTPiBleHRlbmRzIE1hcFN0ZXA8UywgRWRnZT4KLSAgICAgICAgaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudC5FZGdlQWRkZWRFdmVudD4sIFRyYXZlcnNhbFBhcmVudCwgUGFyYW1ldGVyaXppbmcsIFNjb3BpbmcsIEZyb21Ub01vZHVsYXRpbmcgeworcHVibGljIGNsYXNzIEFkZEVkZ2VTdGVwPFM+IGV4dGVuZHMgTWFwU3RlcDxTLCBFZGdlPgorICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LkVkZ2VBZGRlZEV2ZW50PiwgVHJhdmVyc2FsUGFyZW50LCBTY29waW5nLCBGcm9tVG9Nb2R1bGF0aW5nIHsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGUk9NID0gR3JhcGguSGlkZGVuLmhpZGUoImZyb20iKTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE8gPSBHcmFwaC5IaWRkZW4uaGlkZSgidG8iKTsKQEAgLTgyLDcgKzgwLDcgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBhZGRQcm9wZXJ0eU11dGF0aW9ucyhmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldCh0aGlzLCBrZXlWYWx1ZXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhTdGFydFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4U3RhcnRTdGVwLmphdmEKaW5kZXggOTIwZmE0NS4uMzQ5M2VjNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhTdGFydFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZFZlcnRleFN0YXJ0U3RlcC5qYXZhCkBAIC0xOCw3ICsxOCw2IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGFyYW1ldGVyaXppbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwpAQCAtMzcsNyArMzYsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkRmFjdG9yeTsKIAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CkBAIC00Niw4ICs0NCw4IEBACiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIEFkZFZlcnRleFN0YXJ0U3RlcCBleHRlbmRzIEFic3RyYWN0U3RlcDxWZXJ0ZXgsIFZlcnRleD4KLSAgICAgICAgaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudC5WZXJ0ZXhBZGRlZEV2ZW50PiwgVHJhdmVyc2FsUGFyZW50LCBQYXJhbWV0ZXJpemluZywgU2NvcGluZyB7CitwdWJsaWMgY2xhc3MgQWRkVmVydGV4U3RhcnRTdGVwIGV4dGVuZHMgQWJzdHJhY3RTdGVwPFZlcnRleCwgVmVydGV4PgorICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LlZlcnRleEFkZGVkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFNjb3BpbmcgewogCiAgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOwogICAgIHByaXZhdGUgYm9vbGVhbiBmaXJzdCA9IHRydWU7CkBAIC03OSw3ICs3Nyw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgYWRkUHJvcGVydHlNdXRhdGlvbnMoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CiAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhTdGVwLmphdmEKaW5kZXggMTNlMmZjOC4uMTY3NTEwYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhTdGVwLmphdmEKQEAgLTE4LDcgKzE4LDYgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXJhbWV0ZXJpemluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuTXV0YXRpbmc7CkBAIC0zMyw3ICszMiw2IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRGYWN0b3J5OwogCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKQEAgLTQyLDggKzQwLDggQEAKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgQWRkVmVydGV4U3RlcDxTPiBleHRlbmRzIE1hcFN0ZXA8UywgVmVydGV4PgotICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LlZlcnRleEFkZGVkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFBhcmFtZXRlcml6aW5nLCBTY29waW5nIHsKK3B1YmxpYyBjbGFzcyBBZGRWZXJ0ZXhTdGVwPFM+IGV4dGVuZHMgTWFwU3RlcDxTLCBWZXJ0ZXg+CisgICAgICAgIGltcGxlbWVudHMgTXV0YXRpbmc8RXZlbnQuVmVydGV4QWRkZWRFdmVudD4sIFRyYXZlcnNhbFBhcmVudCwgU2NvcGluZyB7CiAKICAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJpdmF0ZSBDYWxsYmFja1JlZ2lzdHJ5PEV2ZW50LlZlcnRleEFkZGVkRXZlbnQ+IGNhbGxiYWNrUmVnaXN0cnk7CkBAIC03NCw3ICs3Miw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgYWRkUHJvcGVydHlNdXRhdGlvbnMoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CiAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQ29uc3RhbnRTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0NvbnN0YW50U3RlcC5qYXZhCmluZGV4IDVkMDJlMjguLjc0OWRlMzEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQ29uc3RhbnRTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Db25zdGFudFN0ZXAuamF2YQpAQCAtMzYsNiArMzYsMTAgQEAKICAgICAgICAgdGhpcy5jb25zdGFudCA9IGNvbnN0YW50OwogICAgIH0KIAorICAgIHB1YmxpYyBFIGdldENvbnN0YW50KCkgeworICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudDsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgRSBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewogICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudDsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWRnZU90aGVyVmVydGV4U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FZGdlT3RoZXJWZXJ0ZXhTdGVwLmphdmEKaW5kZXggM2E1YTczYi4uYTUzZGQ1MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FZGdlT3RoZXJWZXJ0ZXhTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FZGdlT3RoZXJWZXJ0ZXhTdGVwLmphdmEKQEAgLTIwLDYgKzIwLDggQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwpAQCAtMzIsNyArMzQsOCBAQAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwotcHVibGljIGNsYXNzIEVkZ2VPdGhlclZlcnRleFN0ZXAgZXh0ZW5kcyBNYXBTdGVwPEVkZ2UsIFZlcnRleD4geworcHVibGljIGNsYXNzIEVkZ2VPdGhlclZlcnRleFN0ZXAgZXh0ZW5kcyBNYXBTdGVwPEVkZ2UsIFZlcnRleD4gaW1wbGVtZW50cyBDb25maWd1cmluZyB7CisgICAgcHJvdGVjdGVkIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAKICAgICBwdWJsaWMgRWRnZU90aGVyVmVydGV4U3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsKSB7CiAgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CkBAIC01Miw2ICs1NSwxNiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChudWxsLCBrZXlWYWx1ZXMpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IGdldFJlcXVpcmVtZW50cygpIHsKICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnNpbmdsZXRvbihUcmF2ZXJzZXJSZXF1aXJlbWVudC5QQVRIKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0VkZ2VWZXJ0ZXhTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0VkZ2VWZXJ0ZXhTdGVwLmphdmEKaW5kZXggOGJlZjgzNS4uYzE1YzUyYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FZGdlVmVydGV4U3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWRnZVZlcnRleFN0ZXAuamF2YQpAQCAtMjAsNiArMjAsOCBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CkBAIC0zMyw4ICszNSw5IEBACiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCi1wdWJsaWMgY2xhc3MgRWRnZVZlcnRleFN0ZXAgZXh0ZW5kcyBGbGF0TWFwU3RlcDxFZGdlLCBWZXJ0ZXg+IGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CitwdWJsaWMgY2xhc3MgRWRnZVZlcnRleFN0ZXAgZXh0ZW5kcyBGbGF0TWFwU3RlcDxFZGdlLCBWZXJ0ZXg+IGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSwgQ29uZmlndXJpbmcgewogCisgICAgcHJvdGVjdGVkIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJvdGVjdGVkIERpcmVjdGlvbiBkaXJlY3Rpb247CiAKICAgICBwdWJsaWMgRWRnZVZlcnRleFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCwgZmluYWwgRGlyZWN0aW9uIGRpcmVjdGlvbikgewpAQCAtNDMsNiArNDYsMTYgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQobnVsbCwga2V5VmFsdWVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgSXRlcmF0b3I8VmVydGV4PiBmbGF0TWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxFZGdlPiB0cmF2ZXJzZXIpIHsKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlci5nZXQoKS52ZXJ0aWNlcyh0aGlzLmRpcmVjdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwU3RlcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMWRiNDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0VsZW1lbnRNYXBTdGVwLmphdmEKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkdyYXBoQ29tcHV0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxQYXJlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKKy8qKgorICogQ29udmVydHMgYSB7QGxpbmsgRWxlbWVudH0gdG8gYSB7QGNvZGUgTWFwfS4KKyAqCisgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBFbGVtZW50TWFwU3RlcDxLLEU+IGV4dGVuZHMgTWFwU3RlcDxFbGVtZW50LCBNYXA8SywgRT4+IGltcGxlbWVudHMgVHJhdmVyc2FsUGFyZW50LCBHcmFwaENvbXB1dGluZyB7CisKKyAgICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nW10gcHJvcGVydHlLZXlzOworICAgIHByaXZhdGUgYm9vbGVhbiBvbkdyYXBoQ29tcHV0ZXIgPSBmYWxzZTsKKworICAgIHB1YmxpYyBFbGVtZW50TWFwU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsLCBmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CisgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CisgICAgICAgIHRoaXMucHJvcGVydHlLZXlzID0gcHJvcGVydHlLZXlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBNYXA8SywgRT4gbWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxFbGVtZW50PiB0cmF2ZXJzZXIpIHsKKyAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiBtYXAgPSBuZXcgTGlua2VkSGFzaE1hcDw+KCk7CisgICAgICAgIGZpbmFsIEVsZW1lbnQgZWxlbWVudCA9IHRyYXZlcnNlci5nZXQoKTsKKyAgICAgICAgbWFwLnB1dChULmlkLCBlbGVtZW50LmlkKCkpOworICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5KSB7CisgICAgICAgICAgICBtYXAucHV0KFQua2V5LCAoKFZlcnRleFByb3BlcnR5PD8+KSBlbGVtZW50KS5rZXkoKSk7CisgICAgICAgICAgICBtYXAucHV0KFQudmFsdWUsICgoVmVydGV4UHJvcGVydHk8Pz4pIGVsZW1lbnQpLnZhbHVlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWFwLnB1dChULmxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBFZGdlKSB7CisgICAgICAgICAgICBmaW5hbCBFZGdlIGUgPSAoRWRnZSkgZWxlbWVudDsKKyAgICAgICAgICAgIG1hcC5wdXQoRGlyZWN0aW9uLklOLCBnZXRWZXJ0ZXhTdHJ1Y3R1cmUoZS5pblZlcnRleCgpKSk7CisgICAgICAgICAgICBtYXAucHV0KERpcmVjdGlvbi5PVVQsIGdldFZlcnRleFN0cnVjdHVyZShlLm91dFZlcnRleCgpKSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBJdGVyYXRvcjw/IGV4dGVuZHMgUHJvcGVydHk+IHByb3BlcnRpZXMgPSBlbGVtZW50LnByb3BlcnRpZXModGhpcy5wcm9wZXJ0eUtleXMpOworICAgICAgICB3aGlsZSAocHJvcGVydGllcy5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIFByb3BlcnR5PD8+IHByb3BlcnR5ID0gcHJvcGVydGllcy5uZXh0KCk7CisgICAgICAgICAgICBtYXAucHV0KHByb3BlcnR5LmtleSgpLCBwcm9wZXJ0eS52YWx1ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAoTWFwKSBtYXA7CisgICAgfQorCisgICAgcHJvdGVjdGVkIE1hcDxPYmplY3QsIE9iamVjdD4gZ2V0VmVydGV4U3RydWN0dXJlKGZpbmFsIFZlcnRleCB2KSB7CisgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gbSA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKKyAgICAgICAgbS5wdXQoVC5pZCwgdi5pZCgpKTsKKworICAgICAgICAvLyBjYW4ndCBhZGQgbGFiZWwgaWYgZG9pbmcgR3JhcGhDb21wdXRlciBzdHVmZiBhcyB0aGVyZSBpcyBubyBhY2Nlc3MgdG8gdGhlIGxhYmVsIG9mIHRoZSBhZGphY2VudCB2ZXJ0ZXgKKyAgICAgICAgaWYgKCFvbkdyYXBoQ29tcHV0ZXIpIG0ucHV0KFQubGFiZWwsIHYubGFiZWwoKSk7CisKKyAgICAgICAgcmV0dXJuIG07CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25HcmFwaENvbXB1dGVyKCkgeworICAgICAgICB0aGlzLm9uR3JhcGhDb21wdXRlciA9IHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNPbkdyYXBoQ29tcHV0ZXIoKSB7CisgICAgICAgIHJldHVybiBvbkdyYXBoQ29tcHV0ZXI7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZ1tdIGdldFByb3BlcnR5S2V5cygpIHsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5S2V5czsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS5zdGVwU3RyaW5nKHRoaXMsIEFycmF5cy5hc0xpc3QodGhpcy5wcm9wZXJ0eUtleXMpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKTsKKyAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgcHJvcGVydHlLZXkgOiB0aGlzLnByb3BlcnR5S2V5cykgeworICAgICAgICAgICAgcmVzdWx0IF49IHByb3BlcnR5S2V5Lmhhc2hDb2RlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRSZXF1aXJlbWVudHMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGZBbmRDaGlsZFJlcXVpcmVtZW50cyhUcmF2ZXJzZXJSZXF1aXJlbWVudC5PQkpFQ1QpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvR3JhcGhTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0dyYXBoU3RlcC5qYXZhCmluZGV4IDY4ZDVlYzQuLmFhM2EyOWYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvR3JhcGhTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9HcmFwaFN0ZXAuamF2YQpAQCAtMjQsOSArMjQsMTEgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5HcmFwaENvbXB1dGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5BYnN0cmFjdFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSGFzQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKQEAgLTQ2LDggKzQ4LDkgQEAKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGF1dGhvciBQaWV0ZXIgTWFydGluCiAgKi8KLXB1YmxpYyBjbGFzcyBHcmFwaFN0ZXA8UywgRSBleHRlbmRzIEVsZW1lbnQ+IGV4dGVuZHMgQWJzdHJhY3RTdGVwPFMsIEU+IGltcGxlbWVudHMgR3JhcGhDb21wdXRpbmcsIEF1dG9DbG9zZWFibGUgeworcHVibGljIGNsYXNzIEdyYXBoU3RlcDxTLCBFIGV4dGVuZHMgRWxlbWVudD4gZXh0ZW5kcyBBYnN0cmFjdFN0ZXA8UywgRT4gaW1wbGVtZW50cyBHcmFwaENvbXB1dGluZywgQXV0b0Nsb3NlYWJsZSwgQ29uZmlndXJpbmcgewogCisgICAgcHJvdGVjdGVkIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJvdGVjdGVkIGZpbmFsIENsYXNzPEU+IHJldHVybkNsYXNzOwogICAgIHByb3RlY3RlZCBPYmplY3RbXSBpZHM7CiAgICAgcHJvdGVjdGVkIHRyYW5zaWVudCBTdXBwbGllcjxJdGVyYXRvcjxFPj4gaXRlcmF0b3JTdXBwbGllcjsKQEAgLTcxLDYgKzc0LDE2IEBACiAgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnN0ZXBTdHJpbmcodGhpcywgdGhpcy5yZXR1cm5DbGFzcy5nZXRTaW1wbGVOYW1lKCkudG9Mb3dlckNhc2UoKSwgQXJyYXlzLnRvU3RyaW5nKHRoaXMuaWRzKSk7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KG51bGwsIGtleVZhbHVlcyk7CisgICAgfQorCiAgICAgcHVibGljIENsYXNzPEU+IGdldFJldHVybkNsYXNzKCkgewogICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5DbGFzczsKICAgICB9CkBAIC04MCw3ICs5Myw3IEBACiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU3RhcnRTdGVwKGZpbmFsIFN0ZXA8PywgPz4gc3RlcCkgewotICAgICAgICByZXR1cm4gc3RlcCBpbnN0YW5jZW9mIEdyYXBoU3RlcCAmJiAoKEdyYXBoU3RlcCkgc3RlcCkuaXNTdGFydFN0ZXAoKTsKKyAgICAgICAgcmV0dXJuIHN0ZXAgaW5zdGFuY2VvZiBHcmFwaFN0ZXAgJiYgKChHcmFwaFN0ZXApIHN0ZXApLmlzU3RhcnQ7CiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gcmV0dXJuc1ZlcnRleCgpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvSW5kZXhTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0luZGV4U3RlcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MDNjMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0luZGV4U3RlcC5qYXZhCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOworCisvKioKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK3B1YmxpYyBjbGFzcyBJbmRleFN0ZXA8UywgRT4gZXh0ZW5kcyBNYXBTdGVwPFMsIEU+IGltcGxlbWVudHMgVHJhdmVyc2FsUGFyZW50LCBDb25maWd1cmluZyB7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gSU5WQUxJRF9DT05GSUdVUkFUSU9OX0VYQ0VQVElPTiA9CisgICAgICAgICAgICBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJXaXRoT3B0aW9ucy5pbmRleGVyIHJlcXVpcmVzIGEgc2luZ2xlIEludGVnZXIgYXJndW1lbnQgKHBvc3NpYmxlICIgKyAiIiArCisgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgYXJlOiBXaXRoT3B0aW9ucy5bbGlzdHxtYXBdKSIpOworCisgICAgcHJpdmF0ZSBmaW5hbCBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOworCisgICAgcHJpdmF0ZSBGdW5jdGlvbjxJdGVyYXRvciwgT2JqZWN0PiBpbmRleGVyOworCisgICAgcHVibGljIEluZGV4U3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsKSB7CisgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CisgICAgICAgIHRoaXMuY29uZmlndXJlKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLmxpc3QpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBFIG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gdHJhdmVyc2VyKSB7CisgICAgICAgIC8vbm9pbnNwZWN0aW9uIHVuY2hlY2tlZAorICAgICAgICByZXR1cm4gKEUpIGluZGV4ZXIuYXBwbHkoSXRlcmF0b3JVdGlscy5hc0l0ZXJhdG9yKHRyYXZlcnNlci5nZXQoKSkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5pbmRleGVyLmhhc2hDb2RlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgTGlzdDxMaXN0PE9iamVjdD4+IGluZGV4ZWRMaXN0KGZpbmFsIEl0ZXJhdG9yIGl0ZXJhdG9yKSB7CisgICAgICAgIGZpbmFsIExpc3Q8TGlzdDxPYmplY3Q+PiBsaXN0ID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgbGlzdC5hZGQoQXJyYXlzLmFzTGlzdChpdGVyYXRvci5uZXh0KCksIGkrKykpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KGxpc3QpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIE1hcDxJbnRlZ2VyLCBPYmplY3Q+IGluZGV4ZWRNYXAoZmluYWwgSXRlcmF0b3IgaXRlcmF0b3IpIHsKKyAgICAgICAgZmluYWwgTWFwPEludGVnZXIsIE9iamVjdD4gbWFwID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIG1hcC5wdXQoaSsrLCBpdGVyYXRvci5uZXh0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVNYXAobWFwKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRSZXF1aXJlbWVudHMoKSB7CisgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5zaW5nbGV0b24oVHJhdmVyc2VyUmVxdWlyZW1lbnQuT0JKRUNUKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICBmaW5hbCBJbnRlZ2VyIGluZGV4ZXI7CisgICAgICAgIGlmIChrZXlWYWx1ZXNbMF0uZXF1YWxzKFdpdGhPcHRpb25zLmluZGV4ZXIpKSB7CisgICAgICAgICAgICBpZiAoa2V5VmFsdWVzLmxlbmd0aCA9PSAyICYmIGtleVZhbHVlc1sxXSBpbnN0YW5jZW9mIEludGVnZXIpIHsKKyAgICAgICAgICAgICAgICBpbmRleGVyID0gKEludGVnZXIpIGtleVZhbHVlc1sxXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgSU5WQUxJRF9DT05GSUdVUkFUSU9OX0VYQ0VQVElPTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleGVyID09IFdpdGhPcHRpb25zLmxpc3QpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmluZGV4ZXIgPSBJbmRleFN0ZXA6OmluZGV4ZWRMaXN0OworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleGVyID09IFdpdGhPcHRpb25zLm1hcCkgeworICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlciA9IEluZGV4U3RlcDo6aW5kZXhlZE1hcDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgSU5WQUxJRF9DT05GSUdVUkFUSU9OX0VYQ0VQVElPTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9MYW1iZGFDb2xsZWN0aW5nQmFycmllclN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTGFtYmRhQ29sbGVjdGluZ0JhcnJpZXJTdGVwLmphdmEKaW5kZXggOWI1MDBkNC4uZWY0MWI2MSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9MYW1iZGFDb2xsZWN0aW5nQmFycmllclN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0xhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcC5qYXZhCkBAIC0zMiwxOSArMzIsNiBAQAogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgTGFtYmRhQ29sbGVjdGluZ0JhcnJpZXJTdGVwPFM+IGV4dGVuZHMgQ29sbGVjdGluZ0JhcnJpZXJTdGVwPFM+IGltcGxlbWVudHMgTGFtYmRhSG9sZGVyIHsKIAotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAsIHJlcGxhY2VkIGJ5IHVzZSBvZiB7QGxpbmsgTm9PcEJhcnJpZXJTdGVwfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBlbnVtIENvbnN1bWVycyBpbXBsZW1lbnRzIENvbnN1bWVyPFRyYXZlcnNlclNldDxPYmplY3Q+PiB7Ci0gICAgICAgIG5vT3AgewotICAgICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgICAgICBwdWJsaWMgdm9pZCBhY2NlcHQoZmluYWwgVHJhdmVyc2VyU2V0PE9iamVjdD4gdHJhdmVyc2VyU2V0KSB7Ci0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIHByaXZhdGUgZmluYWwgQ29uc3VtZXI8VHJhdmVyc2VyU2V0PFM+PiBiYXJyaWVyQ29uc3VtZXI7CiAKICAgICBwdWJsaWMgTGFtYmRhQ29sbGVjdGluZ0JhcnJpZXJTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwsIGZpbmFsIENvbnN1bWVyPFRyYXZlcnNlclNldDxTPj4gYmFycmllckNvbnN1bWVyLCBmaW5hbCBpbnQgbWF4QmFycmllclNpemUpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTG9vcHNTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0xvb3BzU3RlcC5qYXZhCmluZGV4IDJkYjlhYjkuLjExZDg3MjkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTG9vcHNTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Mb29wc1N0ZXAuamF2YQpAQCAtMjYsMTIgKzI2LDM0IEBACiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBMb29wc1N0ZXA8Uz4gZXh0ZW5kcyBNYXBTdGVwPFMsIEludGVnZXI+IHsKIAotICAgIHB1YmxpYyBMb29wc1N0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgeworICAgIHByaXZhdGUgU3RyaW5nIGxvb3BOYW1lOworCisgICAgcHVibGljIExvb3BzU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKICAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKKyAgICAgICAgdGhpcy5sb29wTmFtZSA9IGxvb3BOYW1lOwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCBJbnRlZ2VyIG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gdHJhdmVyc2VyKSB7Ci0gICAgICAgIHJldHVybiB0cmF2ZXJzZXIubG9vcHMoKTsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlci5sb29wcyh0aGlzLmxvb3BOYW1lKTsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gbykgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBMb29wc1N0ZXApKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG8pKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgTG9vcHNTdGVwPD8+IGxvb3BzU3RlcCA9IChMb29wc1N0ZXA8Pz4pIG87CisKKyAgICAgICAgcmV0dXJuIGxvb3BOYW1lICE9IG51bGwgPyBsb29wTmFtZS5lcXVhbHMobG9vcHNTdGVwLmxvb3BOYW1lKSA6IGxvb3BzU3RlcC5sb29wTmFtZSA9PSBudWxsOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIChsb29wTmFtZSAhPSBudWxsID8gbG9vcE5hbWUuaGFzaENvZGUoKSA6IDApOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXRjaFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0Y2hTdGVwLmphdmEKaW5kZXggOTAwZDM1Ni4uOWFkNzEzMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXRjaFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGNoU3RlcC5qYXZhCkBAIC0yMCwxMCArMjAsOCBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsRW5naW5lOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5CYXJyaWVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5QYXRoUHJvY2Vzc29yOwpAQCAtMjM2LDcgKzIzNCw3IEBACiAKICAgICBwdWJsaWMgTWF0Y2hBbGdvcml0aG0gZ2V0TWF0Y2hBbGdvcml0aG0oKSB7CiAgICAgICAgIGlmIChudWxsID09IHRoaXMubWF0Y2hBbGdvcml0aG0pCi0gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVNYXRjaEFsZ29yaXRobSh0aGlzLnRyYXZlcnNlclN0ZXBJZEFuZExhYmVsc1NldEJ5Q2hpbGQgPyBUcmF2ZXJzYWxFbmdpbmUuVHlwZS5DT01QVVRFUiA6IFRyYXZlcnNhbEVuZ2luZS5UeXBlLlNUQU5EQVJEKTsKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hdGNoQWxnb3JpdGhtKHRoaXMudHJhdmVyc2VyU3RlcElkQW5kTGFiZWxzU2V0QnlDaGlsZCk7CiAgICAgICAgIHJldHVybiB0aGlzLm1hdGNoQWxnb3JpdGhtOwogICAgIH0KIApAQCAtMzI0LDEzICszMjIsMTMgQEAKICAgICAgICAgcmV0dXJuIGJpbmRpbmdzOwogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplTWF0Y2hBbGdvcml0aG0oZmluYWwgVHJhdmVyc2FsRW5naW5lLlR5cGUgdHJhdmVyc2FsRW5naW5lVHlwZSkgeworICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplTWF0Y2hBbGdvcml0aG0oZmluYWwgYm9vbGVhbiBvbkNvbXB1dGVyKSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICB0aGlzLm1hdGNoQWxnb3JpdGhtID0gdGhpcy5tYXRjaEFsZ29yaXRobUNsYXNzLmdldENvbnN0cnVjdG9yKCkubmV3SW5zdGFuY2UoKTsKICAgICAgICAgfSBjYXRjaCAoZmluYWwgTm9TdWNoTWV0aG9kRXhjZXB0aW9uIHwgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiB8IEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gfCBJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMubWF0Y2hBbGdvcml0aG0uaW5pdGlhbGl6ZSh0cmF2ZXJzYWxFbmdpbmVUeXBlLCB0aGlzLm1hdGNoVHJhdmVyc2Fscyk7CisgICAgICAgIHRoaXMubWF0Y2hBbGdvcml0aG0uaW5pdGlhbGl6ZShvbkNvbXB1dGVyLCB0aGlzLm1hdGNoVHJhdmVyc2Fscyk7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBib29sZWFuIGhhc1BhdGhMYWJlbChmaW5hbCBQYXRoIHBhdGgsIGZpbmFsIFNldDxTdHJpbmc+IGxhYmVscykgewpAQCAtMzYyLDcgKzM2MCw3IEBACiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5maXJzdCkgewogICAgICAgICAgICAgICAgIHRoaXMuZmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVNYXRjaEFsZ29yaXRobShUcmF2ZXJzYWxFbmdpbmUuVHlwZS5TVEFOREFSRCk7CisgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplTWF0Y2hBbGdvcml0aG0oZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMua2VlcExhYmVscyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZWVwTGFiZWxzLmNvbnRhaW5zQWxsKHRoaXMubWF0Y2hFbmRMYWJlbHMpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtlZXBMYWJlbHMuY29udGFpbnNBbGwodGhpcy5tYXRjaFN0YXJ0TGFiZWxzKSkKQEAgLTQxNiw3ICs0MTQsNyBAQAogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3QpIHsKICAgICAgICAgICAgICAgICB0aGlzLmZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplTWF0Y2hBbGdvcml0aG0oVHJhdmVyc2FsRW5naW5lLlR5cGUuQ09NUFVURVIpOworICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hdGNoQWxnb3JpdGhtKHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMua2VlcExhYmVscyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZWVwTGFiZWxzLmNvbnRhaW5zQWxsKHRoaXMubWF0Y2hFbmRMYWJlbHMpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtlZXBMYWJlbHMuY29udGFpbnNBbGwodGhpcy5tYXRjaFN0YXJ0TGFiZWxzKSkKQEAgLTcwNCw3ICs3MDIsNyBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIEZ1bmN0aW9uPExpc3Q8VHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0Pj4sIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbj4gVU5NQVRDSEFCTEVfUEFUVEVSTiA9IHRyYXZlcnNhbHMgLT4gbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVGhlIHByb3ZpZGVkIG1hdGNoIHBhdHRlcm4gaXMgdW5zb2x2YWJsZTogIiArIHRyYXZlcnNhbHMpOwogCiAKLSAgICAgICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBUcmF2ZXJzYWxFbmdpbmUuVHlwZSB0cmF2ZXJzYWxFbmdpbmVUeXBlLCBmaW5hbCBMaXN0PFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4+IHRyYXZlcnNhbHMpOworICAgICAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKGZpbmFsIGJvb2xlYW4gb25Db21wdXRlciwgZmluYWwgTGlzdDxUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWxzKTsKIAogICAgICAgICBwdWJsaWMgZGVmYXVsdCB2b2lkIHJlY29yZFN0YXJ0KGZpbmFsIFRyYXZlcnNlci5BZG1pbjxPYmplY3Q+IHRyYXZlcnNlciwgZmluYWwgVHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0PiB0cmF2ZXJzYWwpIHsKIApAQCAtNzIwLDcgKzcxOCw3IEBACiAgICAgICAgIHByaXZhdGUgTGlzdDxUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWxzOwogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKGZpbmFsIFRyYXZlcnNhbEVuZ2luZS5UeXBlIHRyYXZlcnNhbEVuZ2luZVR5cGUsIGZpbmFsIExpc3Q8VHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FscykgeworICAgICAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKGZpbmFsIGJvb2xlYW4gb25Db21wdXRlciwgZmluYWwgTGlzdDxUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWxzKSB7CiAgICAgICAgICAgICB0aGlzLnRyYXZlcnNhbHMgPSB0cmF2ZXJzYWxzOwogICAgICAgICB9CiAKQEAgLTc0MCw4ICs3MzgsOCBAQAogICAgICAgICBwcm90ZWN0ZWQgaW50IGNvdW50ZXIgPSAwOwogICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBvbkNvbXB1dGVyOwogCi0gICAgICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoZmluYWwgVHJhdmVyc2FsRW5naW5lLlR5cGUgdHJhdmVyc2FsRW5naW5lVHlwZSwgZmluYWwgTGlzdDxUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWxzKSB7Ci0gICAgICAgICAgICB0aGlzLm9uQ29tcHV0ZXIgPSB0cmF2ZXJzYWxFbmdpbmVUeXBlLmVxdWFscyhUcmF2ZXJzYWxFbmdpbmUuVHlwZS5DT01QVVRFUik7CisgICAgICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoZmluYWwgYm9vbGVhbiBvbkNvbXB1dGVyLCBmaW5hbCBMaXN0PFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4+IHRyYXZlcnNhbHMpIHsKKyAgICAgICAgICAgIHRoaXMub25Db21wdXRlciA9IG9uQ29tcHV0ZXI7CiAgICAgICAgICAgICB0aGlzLmJ1bmRsZXMgPSB0cmF2ZXJzYWxzLnN0cmVhbSgpLm1hcChCdW5kbGU6Om5ldykuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGhTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGhTdGVwLmphdmEKaW5kZXggMDk5NDQxMS4uN2E0ODNhMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXRoU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0aFN0ZXAuamF2YQpAQCAtMzcsNiArMzcsNyBAQAogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwogaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5PYmplY3RzOwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiBpbXBvcnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7CiBpbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CkBAIC02NywxMCArNjgsMTkgQEAKICAgICBwcm90ZWN0ZWQgRG91YmxlIG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gdHJhdmVyc2VyKSB7CiAgICAgICAgIGZpbmFsIEV4cHJlc3Npb24gbG9jYWxFeHByZXNzaW9uID0gbmV3IEV4cHJlc3Npb24odGhpcy5leHByZXNzaW9uLmdldEV4cHJlc3Npb24oKSk7CiAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIHZhciA6IHRoaXMuZXhwcmVzc2lvbi5nZXRWYXJpYWJsZXMoKSkgewotICAgICAgICAgICAgbG9jYWxFeHByZXNzaW9uLnNldFZhcmlhYmxlKHZhciwKLSAgICAgICAgICAgICAgICAgICAgdmFyLmVxdWFscyhDVVJSRU5UKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsVXRpbC5hcHBseU51bGxhYmxlKHRyYXZlcnNlciwgdGhpcy50cmF2ZXJzYWxSaW5nLm5leHQoKSkuZG91YmxlVmFsdWUoKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsVXRpbC5hcHBseU51bGxhYmxlKChTKSB0aGlzLmdldE51bGxhYmxlU2NvcGVWYWx1ZShQb3AubGFzdCwgdmFyLCB0cmF2ZXJzZXIpLCB0aGlzLnRyYXZlcnNhbFJpbmcubmV4dCgpKS5kb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgICAgIGZpbmFsIE9iamVjdCBvID0gdmFyLmVxdWFscyhDVVJSRU5UKSA/CisgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbFV0aWwuYXBwbHlOdWxsYWJsZSh0cmF2ZXJzZXIsIHRoaXMudHJhdmVyc2FsUmluZy5uZXh0KCkpIDoKKyAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsVXRpbC5hcHBseU51bGxhYmxlKChTKSB0aGlzLmdldE51bGxhYmxlU2NvcGVWYWx1ZShQb3AubGFzdCwgdmFyLCB0cmF2ZXJzZXIpLCB0aGlzLnRyYXZlcnNhbFJpbmcubmV4dCgpKTsKKworICAgICAgICAgICAgLy8gaXQncyBwb3NzaWJsZSBmb3IgRWxlbWVudFZhbHVlVHJhdmVyc2FsIHRvIHJldHVybiBudWxsIG9yIHNvbWV0aGluZyB0aGF0IGlzIHBvc3NpYmx5IG5vdCBhIE51bWJlci4KKyAgICAgICAgICAgIC8vIHdvcnRoIGEgY2hlY2sgdG8gdHJ5IHRvIHJldHVybiBhIG5pY2UgZXJyb3IgbWVzc2FnZS4gVGhlIFRyYXZlcnNhbFJpbmc8UywgTnVtYmVyPiBpcyBhIGJpdCBvcHRpbWlzdGljCisgICAgICAgICAgICAvLyBnaXZlbiB0eXBlIGVyYXN1cmUuIEl0IGNvdWxkIGVhc2lseSBlbmQgdXAgb3RoZXJ3aXNlLgorICAgICAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIE51bWJlcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB2YXJpYWJsZSAlcyBmb3IgbWF0aCgpIHN0ZXAgbXVzdCByZXNvbHZlIHRvIGEgTnVtYmVyIC0gaXQgaXMgaW5zdGVhZCBvZiB0eXBlICVzIHdpdGggdmFsdWUgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyLCBPYmplY3RzLmlzTnVsbChvKSA/ICJudWxsIiA6IG8uZ2V0Q2xhc3MoKS5nZXROYW1lKCksIG8pKTsKKworICAgICAgICAgICAgbG9jYWxFeHByZXNzaW9uLnNldFZhcmlhYmxlKHZhciwgKChOdW1iZXIpIG8pLmRvdWJsZVZhbHVlKCkpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMudHJhdmVyc2FsUmluZy5yZXNldCgpOwogICAgICAgICByZXR1cm4gbG9jYWxFeHByZXNzaW9uLmV2YWx1YXRlKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heEdsb2JhbFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF4R2xvYmFsU3RlcC5qYXZhCmluZGV4IDk1NGRiZmUuLjI4NzNmNTUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF4R2xvYmFsU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF4R2xvYmFsU3RlcC5qYXZhCkBAIC0zMiw3ICszMiw3IEBACiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgTWF4R2xvYmFsU3RlcDxTIGV4dGVuZHMgTnVtYmVyPiBleHRlbmRzIFJlZHVjaW5nQmFycmllclN0ZXA8UywgUz4geworcHVibGljIGZpbmFsIGNsYXNzIE1heEdsb2JhbFN0ZXA8UyBleHRlbmRzIENvbXBhcmFibGU+IGV4dGVuZHMgUmVkdWNpbmdCYXJyaWVyU3RlcDxTLCBTPiB7CiAKICAgICBwdWJsaWMgTWF4R2xvYmFsU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsKSB7CiAgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CkBAIC00MSw3ICs0MSwxMyBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTIHByb2plY3RUcmF2ZXJzZXIoVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgeworICAgIHB1YmxpYyB2b2lkIHByb2Nlc3NBbGxTdGFydHMoKSB7CisgICAgICAgIGlmICh0aGlzLnN0YXJ0cy5oYXNOZXh0KCkpCisgICAgICAgICAgICBzdXBlci5wcm9jZXNzQWxsU3RhcnRzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFMgcHJvamVjdFRyYXZlcnNlcihmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gdHJhdmVyc2VyKSB7CiAgICAgICAgIHJldHVybiB0cmF2ZXJzZXIuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heExvY2FsU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhMb2NhbFN0ZXAuamF2YQppbmRleCAyYmFjYTI4Li4zYWQzMjZmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heExvY2FsU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF4TG9jYWxTdGVwLmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiAKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwpAQCAtMzIsNyArMzMsNyBAQAogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgTWF4TG9jYWxTdGVwPEUgZXh0ZW5kcyBOdW1iZXIsIFMgZXh0ZW5kcyBJdGVyYWJsZTxFPj4gZXh0ZW5kcyBNYXBTdGVwPFMsIEU+IHsKK3B1YmxpYyBmaW5hbCBjbGFzcyBNYXhMb2NhbFN0ZXA8RSBleHRlbmRzIENvbXBhcmFibGUsIFMgZXh0ZW5kcyBJdGVyYWJsZTxFPj4gZXh0ZW5kcyBNYXBTdGVwPFMsIEU+IHsKIAogICAgIHB1YmxpYyBNYXhMb2NhbFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgewogICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOwpAQCAtNDAsMTcgKzQxLDE1IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgRSBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewotICAgICAgICBOdW1iZXIgcmVzdWx0OwogICAgICAgICBmaW5hbCBJdGVyYXRvcjxFPiBpdGVyYXRvciA9IHRyYXZlcnNlci5nZXQoKS5pdGVyYXRvcigpOwogICAgICAgICBpZiAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAgICBDb21wYXJhYmxlIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtYXgoaXRlcmF0b3IubmV4dCgpLCByZXN1bHQpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gRG91YmxlLk5hTjsKKyAgICAgICAgICAgIHJldHVybiAoRSkgcmVzdWx0OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAoRSkgcmVzdWx0OworICAgICAgICB0aHJvdyBGYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbi5pbnN0YW5jZSgpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuR2xvYmFsU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuR2xvYmFsU3RlcC5qYXZhCmluZGV4IDJmMWMxZGMuLjVlOTAzMzYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhbkdsb2JhbFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01lYW5HbG9iYWxTdGVwLmphdmEKQEAgLTQ5LDYgKzQ5LDEyIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcHJvY2Vzc0FsbFN0YXJ0cygpIHsKKyAgICAgICAgaWYgKHRoaXMuc3RhcnRzLmhhc05leHQoKSkKKyAgICAgICAgICAgIHN1cGVyLnByb2Nlc3NBbGxTdGFydHMoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgRSBwcm9qZWN0VHJhdmVyc2VyKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiB0cmF2ZXJzZXIpIHsKICAgICAgICAgcmV0dXJuIChFKSBuZXcgTWVhbk51bWJlcih0cmF2ZXJzZXIuZ2V0KCksIHRyYXZlcnNlci5idWxrKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhbkxvY2FsU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuTG9jYWxTdGVwLmphdmEKaW5kZXggOTkwMDVjOS4uOTE0NDdmZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuTG9jYWxTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuTG9jYWxTdGVwLmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiAKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwpAQCAtNDgsOSArNDksOCBAQAogICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOdW1iZXJIZWxwZXIuZGl2KHJlc3VsdCwgY291bnRlciwgdHJ1ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gRG91YmxlLk5hTjsKICAgICAgICAgfQorICAgICAgICB0aHJvdyBGYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbi5pbnN0YW5jZSgpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5HbG9iYWxTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pbkdsb2JhbFN0ZXAuamF2YQppbmRleCA3ZDBlYjU2Li43ODFlOTNkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pbkdsb2JhbFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pbkdsb2JhbFN0ZXAuamF2YQpAQCAtMzIsNyArMzIsNyBAQAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIE1pbkdsb2JhbFN0ZXA8UyBleHRlbmRzIE51bWJlcj4gZXh0ZW5kcyBSZWR1Y2luZ0JhcnJpZXJTdGVwPFMsIFM+IHsKK3B1YmxpYyBmaW5hbCBjbGFzcyBNaW5HbG9iYWxTdGVwPFMgZXh0ZW5kcyBDb21wYXJhYmxlPiBleHRlbmRzIFJlZHVjaW5nQmFycmllclN0ZXA8UywgUz4gewogCiAgICAgcHVibGljIE1pbkdsb2JhbFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgewogICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOwpAQCAtNDEsNiArNDEsMTIgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBwcm9jZXNzQWxsU3RhcnRzKCkgeworICAgICAgICBpZiAodGhpcy5zdGFydHMuaGFzTmV4dCgpKQorICAgICAgICAgICAgc3VwZXIucHJvY2Vzc0FsbFN0YXJ0cygpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTIHByb2plY3RUcmF2ZXJzZXIoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewogICAgICAgICByZXR1cm4gdHJhdmVyc2VyLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWluTG9jYWxTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pbkxvY2FsU3RlcC5qYXZhCmluZGV4IGU3ZTAwMWMuLjQxMzlhN2QgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWluTG9jYWxTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5Mb2NhbFN0ZXAuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5GYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKIAogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CkBAIC0zMiw3ICszMyw3IEBACiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBNaW5Mb2NhbFN0ZXA8RSBleHRlbmRzIE51bWJlciwgUyBleHRlbmRzIEl0ZXJhYmxlPEU+PiBleHRlbmRzIE1hcFN0ZXA8UywgRT4geworcHVibGljIGZpbmFsIGNsYXNzIE1pbkxvY2FsU3RlcDxFIGV4dGVuZHMgQ29tcGFyYWJsZSwgUyBleHRlbmRzIEl0ZXJhYmxlPEU+PiBleHRlbmRzIE1hcFN0ZXA8UywgRT4gewogCiAgICAgcHVibGljIE1pbkxvY2FsU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsKSB7CiAgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CkBAIC00MCwxNyArNDEsMTUgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCBFIG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gdHJhdmVyc2VyKSB7Ci0gICAgICAgIE51bWJlciByZXN1bHQ7CiAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPEU+IGl0ZXJhdG9yID0gdHJhdmVyc2VyLmdldCgpLml0ZXJhdG9yKCk7CiAgICAgICAgIGlmIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgIENvbXBhcmFibGUgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1pbihpdGVyYXRvci5uZXh0KCksIHJlc3VsdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBEb3VibGUuTmFOOworICAgICAgICAgICAgcmV0dXJuIChFKSByZXN1bHQ7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChFKSByZXN1bHQ7CisgICAgICAgIHRocm93IEZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uLmluc3RhbmNlKCk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnRpZXNTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnRpZXNTdGVwLmphdmEKaW5kZXggY2JmYzQ3NS4uN2NjMTkzYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9wZXJ0aWVzU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydGllc1N0ZXAuamF2YQpAQCAtMjAsNiArMjAsOCBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eVR5cGU7CkBAIC0zMyw4ICszNSw5IEBACiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCi1wdWJsaWMgY2xhc3MgUHJvcGVydGllc1N0ZXA8RT4gZXh0ZW5kcyBGbGF0TWFwU3RlcDxFbGVtZW50LCBFPiBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeworcHVibGljIGNsYXNzIFByb3BlcnRpZXNTdGVwPEU+IGV4dGVuZHMgRmxhdE1hcFN0ZXA8RWxlbWVudCwgRT4gaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlLCBDb25maWd1cmluZyB7CiAKKyAgICBwcm90ZWN0ZWQgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKICAgICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nW10gcHJvcGVydHlLZXlzOwogICAgIHByb3RlY3RlZCBmaW5hbCBQcm9wZXJ0eVR5cGUgcmV0dXJuVHlwZTsKIApAQCAtNDUsNiArNDgsMTYgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQobnVsbCwga2V5VmFsdWVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgSXRlcmF0b3I8RT4gZmxhdE1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48RWxlbWVudD4gdHJhdmVyc2VyKSB7CiAgICAgICAgIHJldHVybiB0aGlzLnJldHVyblR5cGUuZXF1YWxzKFByb3BlcnR5VHlwZS5WQUxVRSkgPwogICAgICAgICAgICAgICAgIHRyYXZlcnNlci5nZXQoKS52YWx1ZXModGhpcy5wcm9wZXJ0eUtleXMpIDoKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydHlNYXBTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnR5TWFwU3RlcC5qYXZhCmluZGV4IDlhYzdkM2QuLjk4YTI4NGIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydHlNYXBTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9wZXJ0eU1hcFN0ZXAuamF2YQpAQCAtMjAsOCArMjAsMTMgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5CeU1vZHVsYXRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxQYXJlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsUmluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsVXRpbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OwpAQCAtMzQsNjcgKzM5LDEyMCBAQAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCiAgKi8KLXB1YmxpYyBjbGFzcyBQcm9wZXJ0eU1hcFN0ZXA8SyxFPiBleHRlbmRzIE1hcFN0ZXA8RWxlbWVudCwgTWFwPEssIEU+PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCB7CitwdWJsaWMgY2xhc3MgUHJvcGVydHlNYXBTdGVwPEssRT4gZXh0ZW5kcyBNYXBTdGVwPEVsZW1lbnQsIE1hcDxLLCBFPj4KKyAgICAgICAgaW1wbGVtZW50cyBUcmF2ZXJzYWxQYXJlbnQsIEJ5TW9kdWxhdGluZywgQ29uZmlndXJpbmcgewogCiAgICAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZ1tdIHByb3BlcnR5S2V5czsKICAgICBwcm90ZWN0ZWQgZmluYWwgUHJvcGVydHlUeXBlIHJldHVyblR5cGU7Ci0gICAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gaW5jbHVkZVRva2VuczsKKworICAgIHByb3RlY3RlZCBpbnQgdG9rZW5zOwogICAgIHByb3RlY3RlZCBUcmF2ZXJzYWwuQWRtaW48RWxlbWVudCwgPyBleHRlbmRzIFByb3BlcnR5PiBwcm9wZXJ0eVRyYXZlcnNhbDsKIAorICAgIHByaXZhdGUgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKKyAgICBwcml2YXRlIFRyYXZlcnNhbFJpbmc8SywgRT4gdHJhdmVyc2FsUmluZzsKKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjUHJvcGVydHlNYXBTdGVwKFRyYXZlcnNhbC5BZG1pbiwgUHJvcGVydHlUeXBlLCBTdHJpbmcuLi4pfS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBQcm9wZXJ0eU1hcFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCwgZmluYWwgYm9vbGVhbiBpbmNsdWRlVG9rZW5zLCBmaW5hbCBQcm9wZXJ0eVR5cGUgcHJvcGVydHlUeXBlLCBmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CisgICAgICAgIHRoaXModHJhdmVyc2FsLCBwcm9wZXJ0eVR5cGUsIHByb3BlcnR5S2V5cyk7CisgICAgICAgIHRoaXMuY29uZmlndXJlKFdpdGhPcHRpb25zLnRva2VucywgaW5jbHVkZVRva2VucyA/IFdpdGhPcHRpb25zLmFsbCA6IFdpdGhPcHRpb25zLm5vbmUpOworICAgIH0KKworICAgIHB1YmxpYyBQcm9wZXJ0eU1hcFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCwgZmluYWwgUHJvcGVydHlUeXBlIHByb3BlcnR5VHlwZSwgZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgewogICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOwotICAgICAgICB0aGlzLmluY2x1ZGVUb2tlbnMgPSBpbmNsdWRlVG9rZW5zOwogICAgICAgICB0aGlzLnByb3BlcnR5S2V5cyA9IHByb3BlcnR5S2V5czsKICAgICAgICAgdGhpcy5yZXR1cm5UeXBlID0gcHJvcGVydHlUeXBlOwogICAgICAgICB0aGlzLnByb3BlcnR5VHJhdmVyc2FsID0gbnVsbDsKKyAgICAgICAgdGhpcy50cmF2ZXJzYWxSaW5nID0gbmV3IFRyYXZlcnNhbFJpbmc8PigpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCBNYXA8SywgRT4gbWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxFbGVtZW50PiB0cmF2ZXJzZXIpIHsKLSAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gbWFwID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOwogICAgICAgICBmaW5hbCBFbGVtZW50IGVsZW1lbnQgPSB0cmF2ZXJzZXIuZ2V0KCk7Ci0gICAgICAgIGZpbmFsIGJvb2xlYW4gaXNWZXJ0ZXggPSB0cmF2ZXJzZXIuZ2V0KCkgaW5zdGFuY2VvZiBWZXJ0ZXg7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNWZXJ0ZXggPSBlbGVtZW50IGluc3RhbmNlb2YgVmVydGV4OworICAgICAgICBpZiAodGhpcy5yZXR1cm5UeXBlID09IFByb3BlcnR5VHlwZS5WQUxVRSkgeworICAgICAgICAgICAgaWYgKGluY2x1ZGVUb2tlbihXaXRoT3B0aW9ucy5pZHMpKSBtYXAucHV0KFQuaWQsIGVsZW1lbnQuaWQoKSk7CisgICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVUb2tlbihXaXRoT3B0aW9ucy5rZXlzKSkgbWFwLnB1dChULmtleSwgKChWZXJ0ZXhQcm9wZXJ0eTw/PikgZWxlbWVudCkua2V5KCkpOworICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVG9rZW4oV2l0aE9wdGlvbnMudmFsdWVzKSkgbWFwLnB1dChULnZhbHVlLCAoKFZlcnRleFByb3BlcnR5PD8+KSBlbGVtZW50KS52YWx1ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVUb2tlbihXaXRoT3B0aW9ucy5sYWJlbHMpKSBtYXAucHV0KFQubGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgZmluYWwgSXRlcmF0b3I8PyBleHRlbmRzIFByb3BlcnR5PiBwcm9wZXJ0aWVzID0gbnVsbCA9PSB0aGlzLnByb3BlcnR5VHJhdmVyc2FsID8KICAgICAgICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXModGhpcy5wcm9wZXJ0eUtleXMpIDoKICAgICAgICAgICAgICAgICBUcmF2ZXJzYWxVdGlsLmFwcGx5QWxsKHRyYXZlcnNlciwgdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCk7CisgICAgICAgIC8vZmluYWwgSXRlcmF0b3I8PyBleHRlbmRzIFByb3BlcnR5PiBwcm9wZXJ0aWVzID0gZWxlbWVudC5wcm9wZXJ0aWVzKHRoaXMucHJvcGVydHlLZXlzKTsKICAgICAgICAgd2hpbGUgKHByb3BlcnRpZXMuaGFzTmV4dCgpKSB7CiAgICAgICAgICAgICBmaW5hbCBQcm9wZXJ0eTw/PiBwcm9wZXJ0eSA9IHByb3BlcnRpZXMubmV4dCgpOworICAgICAgICAgICAgZmluYWwgT2JqZWN0IHZhbHVlID0gdGhpcy5yZXR1cm5UeXBlID09IFByb3BlcnR5VHlwZS5WQUxVRSA/IHByb3BlcnR5LnZhbHVlKCkgOiBwcm9wZXJ0eTsKICAgICAgICAgICAgIGlmIChpc1ZlcnRleCkgewotICAgICAgICAgICAgICAgIExpc3Q8T2JqZWN0PiB2YWx1ZXMgPSAoTGlzdDxPYmplY3Q+KSBtYXAuZ2V0KHByb3BlcnR5LmtleSgpKTsKLSAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB2YWx1ZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gbmV3IEFycmF5TGlzdDw+KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1hcC5wdXQocHJvcGVydHkua2V5KCksIHZhbHVlcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZhbHVlcy5hZGQodGhpcy5yZXR1cm5UeXBlID09IFByb3BlcnR5VHlwZS5WQUxVRSA/IHByb3BlcnR5LnZhbHVlKCkgOiBwcm9wZXJ0eSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtYXAucHV0KHByb3BlcnR5LmtleSgpLCB0aGlzLnJldHVyblR5cGUgPT0gUHJvcGVydHlUeXBlLlZBTFVFID8gcHJvcGVydHkudmFsdWUoKSA6IHByb3BlcnR5KTsKLSAgICAgICAgfQotICAgICAgICBpZiAodGhpcy5yZXR1cm5UeXBlID09IFByb3BlcnR5VHlwZS5WQUxVRSAmJiB0aGlzLmluY2x1ZGVUb2tlbnMpIHsKLSAgICAgICAgCS8vIGFkZCB0b2tlbnMsIGFzIHN0cmluZyBrZXlzCi0gICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgbWFwLnB1dChULmlkLCBlbGVtZW50LmlkKCkpOwotICAgICAgICAgICAgICAgIG1hcC5wdXQoVC5rZXksICgoVmVydGV4UHJvcGVydHk8Pz4pIGVsZW1lbnQpLmtleSgpKTsKLSAgICAgICAgICAgICAgICBtYXAucHV0KFQudmFsdWUsICgoVmVydGV4UHJvcGVydHk8Pz4pIGVsZW1lbnQpLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIG1hcC5jb21wdXRlKHByb3BlcnR5LmtleSgpLCAoaywgdikgLT4geworICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PE9iamVjdD4gdmFsdWVzID0gdiAhPSBudWxsID8gKExpc3Q8T2JqZWN0PikgdiA6IG5ldyBBcnJheUxpc3Q8PigpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYWRkKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWFwLnB1dChULmlkLCBlbGVtZW50LmlkKCkpOwotICAgICAgICAgICAgICAgIG1hcC5wdXQoVC5sYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKKyAgICAgICAgICAgICAgICBtYXAucHV0KHByb3BlcnR5LmtleSgpLCB2YWx1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCF0cmF2ZXJzYWxSaW5nLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZm9yIChmaW5hbCBPYmplY3Qga2V5IDogbWFwLmtleVNldCgpKSB7CisgICAgICAgICAgICAgICAgbWFwLmNvbXB1dGUoa2V5LCAoaywgdikgLT4gVHJhdmVyc2FsVXRpbC5hcHBseU51bGxhYmxlKHYsIChUcmF2ZXJzYWwuQWRtaW4pIHRoaXMudHJhdmVyc2FsUmluZy5uZXh0KCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMudHJhdmVyc2FsUmluZy5yZXNldCgpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiAoTWFwKSBtYXA7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIExpc3Q8VHJhdmVyc2FsLkFkbWluPEVsZW1lbnQsID8gZXh0ZW5kcyBQcm9wZXJ0eT4+IGdldExvY2FsQ2hpbGRyZW4oKSB7Ci0gICAgICAgIHJldHVybiBudWxsID09IHRoaXMucHJvcGVydHlUcmF2ZXJzYWwgPyBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKSA6IENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QodGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCk7CisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoV2l0aE9wdGlvbnMudG9rZW5zKSkgeworICAgICAgICAgICAgaWYgKGtleVZhbHVlcy5sZW5ndGggPT0gMiAmJiBrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBCb29sZWFuKSB7CisgICAgICAgICAgICAgICAgdGhpcy50b2tlbnMgPSAoKGJvb2xlYW4pIGtleVZhbHVlc1sxXSkgPyBXaXRoT3B0aW9ucy5hbGwgOiBXaXRoT3B0aW9ucy5ub25lOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGtleVZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIShrZXlWYWx1ZXNbaV0gaW5zdGFuY2VvZiBJbnRlZ2VyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIldpdGhPcHRpb25zLnRva2VucyByZXF1aXJlcyBJbnRlZ2VyIGFyZ3VtZW50cyAocG9zc2libGUgIiArICIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBhcmU6IFdpdGhPcHRpb25zLltub25lfGlkc3xsYWJlbHN8a2V5c3x2YWx1ZXN8YWxsXSkiKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50b2tlbnMgfD0gKGludCkga2V5VmFsdWVzW2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBMaXN0PFRyYXZlcnNhbC5BZG1pbjxLLCBFPj4gZ2V0TG9jYWxDaGlsZHJlbigpIHsKKyAgICAgICAgZmluYWwgTGlzdDxUcmF2ZXJzYWwuQWRtaW48SywgRT4+IHJlc3VsdCA9IG5ldyBBcnJheUxpc3Q8PigpOworICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnByb3BlcnR5VHJhdmVyc2FsKQorICAgICAgICAgICAgcmVzdWx0LmFkZCgoVHJhdmVyc2FsLkFkbWluKSBwcm9wZXJ0eVRyYXZlcnNhbCk7CisgICAgICAgIHJlc3VsdC5hZGRBbGwodGhpcy50cmF2ZXJzYWxSaW5nLmdldFRyYXZlcnNhbHMoKSk7CisgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KHJlc3VsdCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbW9kdWxhdGVCeShmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gc2VsZWN0VHJhdmVyc2FsKSB7CisgICAgICAgIHRoaXMudHJhdmVyc2FsUmluZy5hZGRUcmF2ZXJzYWwodGhpcy5pbnRlZ3JhdGVDaGlsZChzZWxlY3RUcmF2ZXJzYWwpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eVRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWwuQWRtaW48RWxlbWVudCwgPyBleHRlbmRzIFByb3BlcnR5PiBwcm9wZXJ0eVRyYXZlcnNhbCkgewpAQCAtMTA5LDE0ICsxNjcsMTcgQEAKICAgICAgICAgcmV0dXJuIHByb3BlcnR5S2V5czsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgI2dldEluY2x1ZGVkVG9rZW5zKCl9LgorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIGJvb2xlYW4gaXNJbmNsdWRlVG9rZW5zKCkgewotICAgICAgICByZXR1cm4gaW5jbHVkZVRva2VuczsKKyAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zICE9IFdpdGhPcHRpb25zLm5vbmU7CiAgICAgfQogCiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuIG51bGwgIT0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCA/Ci0gICAgICAgICAgICAgICAgU3RyaW5nRmFjdG9yeS5zdGVwU3RyaW5nKHRoaXMsIHRoaXMucHJvcGVydHlUcmF2ZXJzYWwsIHRoaXMucmV0dXJuVHlwZS5uYW1lKCkudG9Mb3dlckNhc2UoKSkgOgotICAgICAgICAgICAgICAgIFN0cmluZ0ZhY3Rvcnkuc3RlcFN0cmluZyh0aGlzLCBBcnJheXMuYXNMaXN0KHRoaXMucHJvcGVydHlLZXlzKSwgdGhpcy5yZXR1cm5UeXBlLm5hbWUoKS50b0xvd2VyQ2FzZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3Rvcnkuc3RlcFN0cmluZyh0aGlzLCBBcnJheXMuYXNMaXN0KHRoaXMucHJvcGVydHlLZXlzKSwKKyAgICAgICAgICAgICAgICB0aGlzLnRyYXZlcnNhbFJpbmcsIHRoaXMucmV0dXJuVHlwZS5uYW1lKCkudG9Mb3dlckNhc2UoKSk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xMjQsMjAgKzE4NSwxOSBAQAogICAgICAgICBmaW5hbCBQcm9wZXJ0eU1hcFN0ZXA8SyxFPiBjbG9uZSA9IChQcm9wZXJ0eU1hcFN0ZXA8SyxFPikgc3VwZXIuY2xvbmUoKTsKICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCkKICAgICAgICAgICAgIGNsb25lLnByb3BlcnR5VHJhdmVyc2FsID0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbC5jbG9uZSgpOworICAgICAgICBjbG9uZS50cmF2ZXJzYWxSaW5nID0gdGhpcy50cmF2ZXJzYWxSaW5nLmNsb25lKCk7CiAgICAgICAgIHJldHVybiBjbG9uZTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMucmV0dXJuVHlwZS5oYXNoQ29kZSgpIF4gQm9vbGVhbi5oYXNoQ29kZSh0aGlzLmluY2x1ZGVUb2tlbnMpOwotICAgICAgICBpZiAobnVsbCA9PSB0aGlzLnByb3BlcnR5VHJhdmVyc2FsKSB7Ci0gICAgICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBwcm9wZXJ0eUtleSA6IHRoaXMucHJvcGVydHlLZXlzKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0IF49IHByb3BlcnR5S2V5Lmhhc2hDb2RlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5yZXR1cm5UeXBlLmhhc2hDb2RlKCkgXiBJbnRlZ2VyLmhhc2hDb2RlKHRoaXMudG9rZW5zKTsKKyAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCkKICAgICAgICAgICAgIHJlc3VsdCBePSB0aGlzLnByb3BlcnR5VHJhdmVyc2FsLmhhc2hDb2RlKCk7CisgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIHByb3BlcnR5S2V5IDogdGhpcy5wcm9wZXJ0eUtleXMpIHsKKyAgICAgICAgICAgIHJlc3VsdCBePSBwcm9wZXJ0eUtleS5oYXNoQ29kZSgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiByZXN1bHQgXiB0aGlzLnRyYXZlcnNhbFJpbmcuaGFzaENvZGUoKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTE0NSwxMCArMjA1LDE5IEBACiAgICAgICAgIHN1cGVyLnNldFRyYXZlcnNhbChwYXJlbnRUcmF2ZXJzYWwpOwogICAgICAgICBpZiAobnVsbCAhPSB0aGlzLnByb3BlcnR5VHJhdmVyc2FsKQogICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLnByb3BlcnR5VHJhdmVyc2FsKTsKKyAgICAgICAgdGhpcy50cmF2ZXJzYWxSaW5nLmdldFRyYXZlcnNhbHMoKS5mb3JFYWNoKHRoaXM6OmludGVncmF0ZUNoaWxkKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRSZXF1aXJlbWVudHMoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGZBbmRDaGlsZFJlcXVpcmVtZW50cyhUcmF2ZXJzZXJSZXF1aXJlbWVudC5PQkpFQ1QpOwogICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0SW5jbHVkZWRUb2tlbnMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnRva2VuczsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaW5jbHVkZVRva2VuKGZpbmFsIGludCB0b2tlbikgeworICAgICAgICByZXR1cm4gMCAhPSAodGhpcy50b2tlbnMgJiB0b2tlbik7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1HbG9iYWxTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1N1bUdsb2JhbFN0ZXAuamF2YQppbmRleCA3OTQyZDliLi4zNzExY2ZlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1N1bUdsb2JhbFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1N1bUdsb2JhbFN0ZXAuamF2YQpAQCAtNDgsNiArNDgsMTIgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBwcm9jZXNzQWxsU3RhcnRzKCkgeworICAgICAgICBpZiAodGhpcy5zdGFydHMuaGFzTmV4dCgpKQorICAgICAgICAgICAgc3VwZXIucHJvY2Vzc0FsbFN0YXJ0cygpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTIHByb2plY3RUcmF2ZXJzZXIoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewogICAgICAgICByZXR1cm4gKFMpIG11bCh0cmF2ZXJzZXIuZ2V0KCksIHRyYXZlcnNlci5idWxrKCkpOwogICAgIH0KQEAgLTU3LDQgKzYzLDQgQEAKICAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRSZXF1aXJlbWVudHMoKSB7CiAgICAgICAgIHJldHVybiBSRVFVSVJFTUVOVFM7CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtTG9jYWxTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1N1bUxvY2FsU3RlcC5qYXZhCmluZGV4IGIwNjJhN2UuLjcyZTY1MzkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtTG9jYWxTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1Mb2NhbFN0ZXAuamF2YQpAQCAtMjIsNiArMjIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5GYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKIAogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CkBAIC0zOSwxNyArNDAsMTUgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCBFIG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gdHJhdmVyc2VyKSB7Ci0gICAgICAgIE51bWJlciByZXN1bHQ7CiAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPEU+IGl0ZXJhdG9yID0gdHJhdmVyc2VyLmdldCgpLml0ZXJhdG9yKCk7CiAgICAgICAgIGlmIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgIE51bWJlciByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTnVtYmVySGVscGVyLmFkZChyZXN1bHQsIGl0ZXJhdG9yLm5leHQoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSAwOworICAgICAgICAgICAgcmV0dXJuIChFKSByZXN1bHQ7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChFKSByZXN1bHQ7CisgICAgICAgIHRocm93IEZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uLmluc3RhbmNlKCk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1ZlcnRleFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvVmVydGV4U3RlcC5qYXZhCmluZGV4IDlhYzZkMGMuLjY4MjU3MzYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvVmVydGV4U3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvVmVydGV4U3RlcC5qYXZhCkBAIC0yMCw2ICsyMCw4IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29uZmlndXJpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKQEAgLTM1LDggKzM3LDkgQEAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KLXB1YmxpYyBjbGFzcyBWZXJ0ZXhTdGVwPEUgZXh0ZW5kcyBFbGVtZW50PiBleHRlbmRzIEZsYXRNYXBTdGVwPFZlcnRleCwgRT4gaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsKK3B1YmxpYyBjbGFzcyBWZXJ0ZXhTdGVwPEUgZXh0ZW5kcyBFbGVtZW50PiBleHRlbmRzIEZsYXRNYXBTdGVwPFZlcnRleCwgRT4gaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlLCBDb25maWd1cmluZyB7CiAKKyAgICBwcm90ZWN0ZWQgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKICAgICBwcml2YXRlIGZpbmFsIFN0cmluZ1tdIGVkZ2VMYWJlbHM7CiAgICAgcHJpdmF0ZSBEaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIHByaXZhdGUgZmluYWwgQ2xhc3M8RT4gcmV0dXJuQ2xhc3M7CkBAIC00OSw2ICs1MiwxNiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChudWxsLCBrZXlWYWx1ZXMpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCBJdGVyYXRvcjxFPiBmbGF0TWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxWZXJ0ZXg+IHRyYXZlcnNlcikgewogICAgICAgICByZXR1cm4gVmVydGV4LmNsYXNzLmlzQXNzaWduYWJsZUZyb20odGhpcy5yZXR1cm5DbGFzcykgPwogICAgICAgICAgICAgICAgIChJdGVyYXRvcjxFPikgdHJhdmVyc2VyLmdldCgpLnZlcnRpY2VzKHRoaXMuZGlyZWN0aW9uLCB0aGlzLmVkZ2VMYWJlbHMpIDoKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0FkZFByb3BlcnR5U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvQWRkUHJvcGVydHlTdGVwLmphdmEKaW5kZXggMjdmZmU0ZS4uNDcwZmE0YiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvQWRkUHJvcGVydHlTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvQWRkUHJvcGVydHlTdGVwLmphdmEKQEAgLTE4LDcgKzE4LDYgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGFyYW1ldGVyaXppbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLk11dGF0aW5nOwpAQCAtMzcsOSArMzYsOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFByb3BlcnR5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmtleWVkLktleWVkUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5rZXllZC5LZXllZFZlcnRleFByb3BlcnR5OwogCiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwpAQCAtNDksOCArNDcsOCBAQAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIEFkZFByb3BlcnR5U3RlcDxTIGV4dGVuZHMgRWxlbWVudD4gZXh0ZW5kcyBTaWRlRWZmZWN0U3RlcDxTPgotICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LkVsZW1lbnRQcm9wZXJ0eUNoYW5nZWRFdmVudD4sIFRyYXZlcnNhbFBhcmVudCwgUGFyYW1ldGVyaXppbmcsIFNjb3BpbmcgeworcHVibGljIGNsYXNzIEFkZFByb3BlcnR5U3RlcDxTIGV4dGVuZHMgRWxlbWVudD4gZXh0ZW5kcyBTaWRlRWZmZWN0U3RlcDxTPgorICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LkVsZW1lbnRQcm9wZXJ0eUNoYW5nZWRFdmVudD4sIFRyYXZlcnNhbFBhcmVudCwgU2NvcGluZyB7CiAKICAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJpdmF0ZSBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eSBjYXJkaW5hbGl0eTsKQEAgLTc4LDcgKzc2LDcgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBhZGRQcm9wZXJ0eU11dGF0aW9ucyhmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldCh0aGlzLCBrZXlWYWx1ZXMpOwogICAgIH0KIApAQCAtMTA1LDEwICsxMDMsMTAgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXJkaW5hbGl0eSA9PSBWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5saXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dCA9IG5ldyBFdmVudC5WZXJ0ZXhQcm9wZXJ0eUNoYW5nZWRFdmVudChldmVudFN0cmF0ZWd5LmRldGFjaCgoVmVydGV4KSBlbGVtZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFN0cmF0ZWd5LmVtcHR5KGVsZW1lbnQsIGtleSksIHZhbHVlLCB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEtleWVkVmVydGV4UHJvcGVydHkoa2V5KSwgdmFsdWUsIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2FyZGluYWxpdHkgPT0gVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5IGN1cnJlbnRQcm9wZXJ0eSA9IFZlcnRleFByb3BlcnR5LmVtcHR5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5IGN1cnJlbnRQcm9wZXJ0eSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPD8gZXh0ZW5kcyBQcm9wZXJ0eT4gcHJvcGVydGllcyA9IHRyYXZlcnNlci5nZXQoKS5wcm9wZXJ0aWVzKGtleSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwcm9wZXJ0aWVzLmhhc05leHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUHJvcGVydHkgcHJvcGVydHkgPSBwcm9wZXJ0aWVzLm5leHQoKTsKQEAgLTExOCw4ICsxMTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dCA9IG5ldyBFdmVudC5WZXJ0ZXhQcm9wZXJ0eUNoYW5nZWRFdmVudChldmVudFN0cmF0ZWd5LmRldGFjaCgoVmVydGV4KSBlbGVtZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHkgPT0gVmVydGV4UHJvcGVydHkuZW1wdHkoKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFN0cmF0ZWd5LmVtcHR5KGVsZW1lbnQsIGtleSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQcm9wZXJ0eSA9PSBudWxsID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBLZXllZFZlcnRleFByb3BlcnR5KGtleSkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdHJhdGVneS5kZXRhY2goKFZlcnRleFByb3BlcnR5KSBjdXJyZW50UHJvcGVydHkpLCB2YWx1ZSwgdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyOSwxNyArMTI3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dCA9IG5ldyBFdmVudC5WZXJ0ZXhQcm9wZXJ0eUNoYW5nZWRFdmVudChldmVudFN0cmF0ZWd5LmRldGFjaCgoVmVydGV4KSBlbGVtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFN0cmF0ZWd5LmVtcHR5KGVsZW1lbnQsIGtleSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEtleWVkVmVydGV4UHJvcGVydHkoa2V5KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFN0cmF0ZWd5LmRldGFjaCgoVmVydGV4UHJvcGVydHkpIGN1cnJlbnRQcm9wZXJ0eSksIHZhbHVlLCB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEVkZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dCA9IG5ldyBFdmVudC5FZGdlUHJvcGVydHlDaGFuZ2VkRXZlbnQoZXZlbnRTdHJhdGVneS5kZXRhY2goKEVkZ2UpIGVsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U3RyYXRlZ3kuZW1wdHkoZWxlbWVudCwga2V5KSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgS2V5ZWRQcm9wZXJ0eShrZXkpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U3RyYXRlZ3kuZGV0YWNoKGN1cnJlbnRQcm9wZXJ0eSksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmVydGV4UHJvcGVydHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dCA9IG5ldyBFdmVudC5WZXJ0ZXhQcm9wZXJ0eVByb3BlcnR5Q2hhbmdlZEV2ZW50KGV2ZW50U3RyYXRlZ3kuZGV0YWNoKChWZXJ0ZXhQcm9wZXJ0eSkgZWxlbWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdHJhdGVneS5lbXB0eShlbGVtZW50LCBrZXkpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBLZXllZFByb3BlcnR5KGtleSkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdHJhdGVneS5kZXRhY2goY3VycmVudFByb3BlcnR5KSwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJUaGUgaW5jb21pbmcgb2JqZWN0IGNhbm5vdCBiZSBwcm9jZXNzZWQgYnkgY2hhbmdlIGV2ZW50aW5nIGluICVzOiAgJXMiLCBBZGRQcm9wZXJ0eVN0ZXAuY2xhc3MuZ2V0TmFtZSgpLCBlbGVtZW50KSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9Jb1N0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0lvU3RlcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MWIzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9Jb1N0ZXAuamF2YQpAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuUmVhZFdyaXRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuQWJzdHJhY3RTdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5FbXB0eVRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uR3JhcGhSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uR3JhcGhXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaG1sLkdyYXBoTUxSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhtbC5HcmFwaE1MV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OTWFwcGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b01hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9SZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOworCisvKioKKyAqIEhhbmRsZXMgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyBpbnRvIHRoZSB7QGxpbmsgR3JhcGh9LgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIElvU3RlcDxTPiBleHRlbmRzIEFic3RyYWN0U3RlcDxTLFM+IGltcGxlbWVudHMgUmVhZFdyaXRpbmcgeworCisgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOworICAgIHByaXZhdGUgYm9vbGVhbiBmaXJzdCA9IHRydWU7CisgICAgcHJpdmF0ZSBTdHJpbmcgZmlsZTsKKyAgICBwcml2YXRlIE1vZGUgbW9kZSA9IE1vZGUuVU5TRVQ7CisKKyAgICBwdWJsaWMgSW9TdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwsIGZpbmFsIFN0cmluZyBmaWxlKSB7CisgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CisKKyAgICAgICAgaWYgKG51bGwgPT0gZmlsZSB8fCBmaWxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImZpbGUgY2Fubm90IGJlIG51bGwgb3IgZW1wdHkiKTsKKworICAgICAgICB0aGlzLmZpbGUgPSBmaWxlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldE1vZGUoZmluYWwgTW9kZSBtb2RlKSB7CisgICAgICAgIHRoaXMubW9kZSA9IG1vZGU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE1vZGUgZ2V0TW9kZSgpIHsKKyAgICAgICAgcmV0dXJuIG1vZGU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyBnZXRGaWxlKCkgeworICAgICAgICByZXR1cm4gZmlsZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQobnVsbCwga2V5VmFsdWVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVHJhdmVyc2VyLkFkbWluPFM+IHByb2Nlc3NOZXh0U3RhcnQoKSB7CisgICAgICAgIGlmIChtb2RlID09IE1vZGUuVU5TRVQpIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIklPIG1vZGUgd2FzIG5vdCBzZXQgdG8gcmVhZCgpIG9yIHdyaXRlKCkiKTsKKyAgICAgICAgaWYgKCF0aGlzLmZpcnN0KSB0aHJvdyBGYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbi5pbnN0YW5jZSgpOworCisgICAgICAgIHRoaXMuZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgZmluYWwgRmlsZSBmaWxlID0gbmV3IEZpbGUodGhpcy5maWxlKTsKKworICAgICAgICBpZiAobW9kZSA9PSBNb2RlLlJFQURJTkcpIHsKKyAgICAgICAgICAgIGlmICghZmlsZS5leGlzdHMoKSkgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbih0aGlzLmZpbGUgKyAiIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgICAgICByZXR1cm4gcmVhZChmaWxlKTsKKyAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IE1vZGUuV1JJVElORykgeworICAgICAgICAgICAgcmV0dXJuIHdyaXRlKGZpbGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSW52YWxpZCBSZWFkV3JpdGluZy5Nb2RlIGNvbmZpZ3VyZWQgaW4gSW9TdGVwOiAiICsgbW9kZS5uYW1lKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIFRyYXZlcnNlci5BZG1pbjxTPiB3cml0ZShmaW5hbCBGaWxlIGZpbGUpIHsKKyAgICAgICAgdHJ5IChmaW5hbCBPdXRwdXRTdHJlYW0gc3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSkpIHsKKyAgICAgICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gKEdyYXBoKSB0aGlzLnRyYXZlcnNhbC5nZXRHcmFwaCgpLmdldCgpOworICAgICAgICAgICAgY29uc3RydWN0V3JpdGVyKCkud3JpdGVHcmFwaChzdHJlYW0sIGdyYXBoKTsKKworICAgICAgICAgICAgcmV0dXJuIEVtcHR5VHJhdmVyc2VyLmluc3RhbmNlKCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJDb3VsZCBub3Qgd3JpdGUgZmlsZSAlcyBmcm9tIGdyYXBoIiwgdGhpcy5maWxlKSwgaW9lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBUcmF2ZXJzZXIuQWRtaW48Uz4gcmVhZChmaW5hbCBGaWxlIGZpbGUpIHsKKyAgICAgICAgdHJ5IChmaW5hbCBJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpKSB7CisgICAgICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IChHcmFwaCkgdGhpcy50cmF2ZXJzYWwuZ2V0R3JhcGgoKS5nZXQoKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdFJlYWRlcigpLnJlYWRHcmFwaChzdHJlYW0sIGdyYXBoKTsKKworICAgICAgICAgICAgcmV0dXJuIEVtcHR5VHJhdmVyc2VyLmluc3RhbmNlKCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJDb3VsZCBub3QgcmVhZCBmaWxlICVzIGludG8gZ3JhcGgiLCB0aGlzLmZpbGUpLCBpb2UpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQnVpbGRzIGEge0BsaW5rIEdyYXBoUmVhZGVyfSBpbnN0YW5jZSB0byB1c2UuIEF0dGVtcHRzIHRvIGRldGVjdCB0aGUgZmlsZSBmb3JtYXQgdG8gYmUgcmVhZCB1c2luZyB0aGUgZmlsZQorICAgICAqIGV4dGVuc2lvbiBvciBzaW1wbHkgdXNlcyBjb25maWd1cmF0aW9ucyBwcm92aWRlZCBieSB0aGUgdXNlciBvbiB0aGUgcGFyYW1ldGVycyBnaXZlbiB0byB0aGUgc3RlcC4KKyAgICAgKi8KKyAgICBwcml2YXRlIEdyYXBoUmVhZGVyIGNvbnN0cnVjdFJlYWRlcigpIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IG9iamVjdE9yQ2xhc3MgPSBwYXJhbWV0ZXJzLmdldChJTy5yZWFkZXIsIHRoaXM6OmRldGVjdEZpbGVUeXBlKS5nZXQoMCk7CisgICAgICAgIGlmIChvYmplY3RPckNsYXNzIGluc3RhbmNlb2YgR3JhcGhSZWFkZXIpCisgICAgICAgICAgICByZXR1cm4gKEdyYXBoUmVhZGVyKSBvYmplY3RPckNsYXNzOworICAgICAgICBlbHNlIGlmIChvYmplY3RPckNsYXNzIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0T3JDbGFzcy5lcXVhbHMoSU8uZ3JhcGhzb24pKSB7CisgICAgICAgICAgICAgICAgZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gR3JhcGhTT05NYXBwZXIuYnVpbGQoKTsKKyAgICAgICAgICAgICAgICBkZXRlY3RSZWdpc3RyaWVzKCkuZm9yRWFjaChidWlsZGVyOjphZGRSZWdpc3RyeSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdyYXBoU09OUmVhZGVyLmJ1aWxkKCkubWFwcGVyKGJ1aWxkZXIuY3JlYXRlKCkpLmNyZWF0ZSgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3RPckNsYXNzLmVxdWFscyhJTy5ncnlvKSl7CisgICAgICAgICAgICAgICAgZmluYWwgR3J5b01hcHBlci5CdWlsZGVyIGJ1aWxkZXIgPSBHcnlvTWFwcGVyLmJ1aWxkKCk7CisgICAgICAgICAgICAgICAgZGV0ZWN0UmVnaXN0cmllcygpLmZvckVhY2goYnVpbGRlcjo6YWRkUmVnaXN0cnkpOworICAgICAgICAgICAgICAgIHJldHVybiBHcnlvUmVhZGVyLmJ1aWxkKCkubWFwcGVyKGJ1aWxkZXIuY3JlYXRlKCkpLmNyZWF0ZSgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3RPckNsYXNzLmVxdWFscyhJTy5ncmFwaG1sKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gR3JhcGhNTFJlYWRlci5idWlsZCgpLmNyZWF0ZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8Pz4gZ3JhcGhSZWFkZXJDbGF6eiA9IENsYXNzLmZvck5hbWUoKFN0cmluZykgb2JqZWN0T3JDbGFzcyk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1ldGhvZCBidWlsZCA9IGdyYXBoUmVhZGVyQ2xhenouZ2V0TWV0aG9kKCJidWlsZCIpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBHcmFwaFJlYWRlci5SZWFkZXJCdWlsZGVyIGJ1aWxkZXIgPSAoR3JhcGhSZWFkZXIuUmVhZGVyQnVpbGRlcikgYnVpbGQuaW52b2tlKG51bGwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVpbGRlci5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJDb3VsZCBub3QgY29uc3RydWN0IHRoZSBzcGVjaWZpZWQgR3JhcGhSZWFkZXIgb2YgJXMiLCBvYmplY3RPckNsYXNzKSwgZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkdyYXBoUmVhZGVyIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCdWlsZHMgYSB7QGxpbmsgR3JhcGhXcml0ZXJ9IGluc3RhbmNlIHRvIHVzZS4gQXR0ZW1wdHMgdG8gZGV0ZWN0IHRoZSBmaWxlIGZvcm1hdCB0byBiZSB3cml0ZSB1c2luZyB0aGUgZmlsZQorICAgICAqIGV4dGVuc2lvbiBvciBzaW1wbHkgdXNlcyBjb25maWd1cmF0aW9ucyBwcm92aWRlZCBieSB0aGUgdXNlciBvbiB0aGUgcGFyYW1ldGVycyBnaXZlbiB0byB0aGUgc3RlcC4KKyAgICAgKi8KKyAgICBwcml2YXRlIEdyYXBoV3JpdGVyIGNvbnN0cnVjdFdyaXRlcigpIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IG9iamVjdE9yQ2xhc3MgPSBwYXJhbWV0ZXJzLmdldChJTy53cml0ZXIsIHRoaXM6OmRldGVjdEZpbGVUeXBlKS5nZXQoMCk7CisgICAgICAgIGlmIChvYmplY3RPckNsYXNzIGluc3RhbmNlb2YgR3JhcGhXcml0ZXIpCisgICAgICAgICAgICByZXR1cm4gKEdyYXBoV3JpdGVyKSBvYmplY3RPckNsYXNzOworICAgICAgICBlbHNlIGlmIChvYmplY3RPckNsYXNzIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0T3JDbGFzcy5lcXVhbHMoSU8uZ3JhcGhzb24pKSB7CisgICAgICAgICAgICAgICAgZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gR3JhcGhTT05NYXBwZXIuYnVpbGQoKTsKKyAgICAgICAgICAgICAgICBkZXRlY3RSZWdpc3RyaWVzKCkuZm9yRWFjaChidWlsZGVyOjphZGRSZWdpc3RyeSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdyYXBoU09OV3JpdGVyLmJ1aWxkKCkubWFwcGVyKGJ1aWxkZXIuY3JlYXRlKCkpLmNyZWF0ZSgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3RPckNsYXNzLmVxdWFscyhJTy5ncnlvKSl7CisgICAgICAgICAgICAgICAgZmluYWwgR3J5b01hcHBlci5CdWlsZGVyIGJ1aWxkZXIgPSBHcnlvTWFwcGVyLmJ1aWxkKCk7CisgICAgICAgICAgICAgICAgZGV0ZWN0UmVnaXN0cmllcygpLmZvckVhY2goYnVpbGRlcjo6YWRkUmVnaXN0cnkpOworICAgICAgICAgICAgICAgIHJldHVybiBHcnlvV3JpdGVyLmJ1aWxkKCkubWFwcGVyKGJ1aWxkZXIuY3JlYXRlKCkpLmNyZWF0ZSgpOworICAgICAgICAgICAgfWVsc2UgaWYgKG9iamVjdE9yQ2xhc3MuZXF1YWxzKElPLmdyYXBobWwpKQorICAgICAgICAgICAgICAgIHJldHVybiBHcmFwaE1MV3JpdGVyLmJ1aWxkKCkuY3JlYXRlKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBDbGFzczw/PiBncmFwaFdyaXRlckNsYXp6ID0gQ2xhc3MuZm9yTmFtZSgoU3RyaW5nKSBvYmplY3RPckNsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTWV0aG9kIGJ1aWxkID0gZ3JhcGhXcml0ZXJDbGF6ei5nZXRNZXRob2QoImJ1aWxkIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIEdyYXBoV3JpdGVyLldyaXRlckJ1aWxkZXIgYnVpbGRlciA9IChHcmFwaFdyaXRlci5Xcml0ZXJCdWlsZGVyKSBidWlsZC5pbnZva2UobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVyLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgdGhlIHNwZWNpZmllZCBHcmFwaFJlYWRlciBvZiAlcyIsIG9iamVjdE9yQ2xhc3MpLCBleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiR3JhcGhSZWFkZXIgY291bGQgbm90IGJlIGRldGVybWluZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBTdHJpbmcgZGV0ZWN0RmlsZVR5cGUoKSB7CisgICAgICAgIGlmIChmaWxlLmVuZHNXaXRoKCIua3J5byIpKQorICAgICAgICAgICAgcmV0dXJuIElPLmdyeW87CisgICAgICAgIGVsc2UgaWYgKGZpbGUuZW5kc1dpdGgoIi5qc29uIikpCisgICAgICAgICAgICByZXR1cm4gSU8uZ3JhcGhzb247CisgICAgICAgIGVsc2UgaWYgKGZpbGUuZW5kc1dpdGgoIi54bWwiKSkKKyAgICAgICAgICAgIHJldHVybiBJTy5ncmFwaG1sOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJDb3VsZCBub3QgZGV0ZWN0IHRoZSBmaWxlIGZvcm1hdCAtIHNwZWNpZnkgdGhlIHdyaXRlciBleHBsaWNpdGx5IG9yIHJlbmFtZSBmaWxlIHdpdGggYSBzdGFuZGFyZCBleHRlbnNpb24iKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgTGlzdDxJb1JlZ2lzdHJ5PiBkZXRlY3RSZWdpc3RyaWVzKCkgeworICAgICAgICBmaW5hbCBMaXN0PE9iamVjdD4gayA9IHBhcmFtZXRlcnMuZ2V0KElPLnJlZ2lzdHJ5LCBudWxsKTsKKyAgICAgICAgcmV0dXJuIGsuc3RyZWFtKCkubWFwKGNuIC0+IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKGNuIGluc3RhbmNlb2YgSW9SZWdpc3RyeSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChJb1JlZ2lzdHJ5KSBjbjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8Pz4gY2xhenogPSBDbGFzcy5mb3JOYW1lKGNuLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKElvUmVnaXN0cnkpIGNsYXp6LmdldE1ldGhvZCgiaW5zdGFuY2UiKS5pbnZva2UobnVsbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgZmluYWwgaW50IGhhc2ggPSBzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5wYXJhbWV0ZXJzLmhhc2hDb2RlKCk7CisgICAgICAgIHJldHVybiAobnVsbCAhPSB0aGlzLmZpbGUpID8gKGhhc2ggXiBmaWxlLmhhc2hDb2RlKCkpIDogaGFzaDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS5zdGVwU3RyaW5nKHRoaXMsIGZpbGUsIHRoaXMucGFyYW1ldGVycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIElvU3RlcCBjbG9uZSgpIHsKKyAgICAgICAgZmluYWwgSW9TdGVwIGNsb25lID0gKElvU3RlcCkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgY2xvbmUucGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycy5jbG9uZSgpOworICAgICAgICBjbG9uZS5maWxlID0gdGhpcy5maWxlOworICAgICAgICBjbG9uZS5tb2RlID0gdGhpcy5tb2RlOworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvQWJzdHJhY3RTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9BYnN0cmFjdFN0ZXAuamF2YQppbmRleCA5ZWIxYjNjLi5lMjc1N2UyIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9BYnN0cmFjdFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9BYnN0cmFjdFN0ZXAuamF2YQpAQCAtNTQsNyArNTQsNyBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgc2V0SWQoZmluYWwgU3RyaW5nIGlkKSB7Ci0gICAgICAgIE9iamVjdHMubm9uTnVsbChpZCk7CisgICAgICAgIE9iamVjdHMucmVxdWlyZU5vbk51bGwoaWQpOwogICAgICAgICB0aGlzLmlkID0gaWQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9CdWxrU2V0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9CdWxrU2V0LmphdmEKaW5kZXggZWQ4ZDY5ZC4uMTM2ODYyNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvQnVsa1NldC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0J1bGtTZXQuamF2YQpAQCAtMTA0LDExICsxMDQsNiBAQAogICAgICAgICByZXR1cm4gbnVsbCA9PSBidWxrID8gMCA6IGJ1bGs7CiAgICAgfQogCi0gICAgLypwdWJsaWMgdm9pZCBzZXQoZmluYWwgUyBzLCBmaW5hbCBsb25nIGJ1bGspIHsKLSAgICAgICAgdGhpcy5tYXAucmVtb3ZlKHMpOwotICAgICAgICB0aGlzLm1hcC5wdXQocywgYnVsayk7Ci0gICAgfSovCi0KICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgYm9vbGVhbiByZW1vdmUoZmluYWwgT2JqZWN0IHMpIHsKICAgICAgICAgcmV0dXJuIHRoaXMubWFwLnJlbW92ZShzKSAhPSBudWxsOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvRW1wdHlQYXRoLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9FbXB0eVBhdGguamF2YQppbmRleCAwYzY4MjdlLi42OTExMWVlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9FbXB0eVBhdGguamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9FbXB0eVBhdGguamF2YQpAQCAtMTksNiArMTksNyBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbDsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CiAKIGltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CkBAIC0xMDMsNCArMTA0LDkgQEAKICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgRW1wdHlQYXRoOwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnBhdGhTdHJpbmcodGhpcyk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvSGFzQ29udGFpbmVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9IYXNDb250YWluZXIuamF2YQppbmRleCAwOGFiMzg5Li41OGYyMzUwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9IYXNDb250YWluZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9IYXNDb250YWluZXIuamF2YQpAQCAtMTksMTIgKzE5LDkgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWw7CiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkFuZFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKIAogaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOwpAQCAtODEsMjUgKzc4LDI1IEBACiAgICAgICAgIC8vIGlmIHRoZSBwcmVkaWNhdGUgdmFsdWUgaXMgYSBTdHJpbmcuICB0aGlzIGFsbG93cyBzdHVmZiBsaWtlOiBnLlYoKS5oYXMoaWQsbHQoMTApKSB0byB3b3JrIHByb3Blcmx5CiAgICAgICAgIGlmICh0aGlzLmtleS5lcXVhbHMoVC5pZC5nZXRBY2Nlc3NvcigpKSkKICAgICAgICAgICAgIHJldHVybiB0ZXN0aW5nSWRTdHJpbmcgPyB0ZXN0SWRBc1N0cmluZyhlbGVtZW50KSA6IHRlc3RJZChlbGVtZW50KTsKLSAgICAgICAgZWxzZSBpZiAodGhpcy5rZXkuZXF1YWxzKFQubGFiZWwuZ2V0QWNjZXNzb3IoKSkpCisgICAgICAgIGlmICh0aGlzLmtleS5lcXVhbHMoVC5sYWJlbC5nZXRBY2Nlc3NvcigpKSkKICAgICAgICAgICAgIHJldHVybiB0ZXN0TGFiZWwoZWxlbWVudCk7Ci0gICAgICAgIGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXhQcm9wZXJ0eSAmJiB0aGlzLmtleS5lcXVhbHMoVC52YWx1ZS5nZXRBY2Nlc3NvcigpKSkKLSAgICAgICAgICAgIHJldHVybiB0ZXN0VmFsdWUoKFZlcnRleFByb3BlcnR5KSBlbGVtZW50KTsKLSAgICAgICAgZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5ICYmIHRoaXMua2V5LmVxdWFscyhULmtleS5nZXRBY2Nlc3NvcigpKSkKLSAgICAgICAgICAgIHJldHVybiB0ZXN0S2V5KChWZXJ0ZXhQcm9wZXJ0eSkgZWxlbWVudCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXgpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjw/IGV4dGVuZHMgUHJvcGVydHk+IGl0dHkgPSBlbGVtZW50LnByb3BlcnRpZXModGhpcy5rZXkpOwotICAgICAgICAgICAgICAgIHdoaWxlIChpdHR5Lmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFZhbHVlKGl0dHkubmV4dCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZpbmFsIFByb3BlcnR5IHByb3BlcnR5ID0gZWxlbWVudC5wcm9wZXJ0eSh0aGlzLmtleSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5LmlzUHJlc2VudCgpICYmIHRlc3RWYWx1ZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgZmluYWwgSXRlcmF0b3I8PyBleHRlbmRzIFByb3BlcnR5PiBpdHR5ID0gZWxlbWVudC5wcm9wZXJ0aWVzKHRoaXMua2V5KTsKKyAgICAgICAgd2hpbGUgKGl0dHkuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBpZiAodGVzdFZhbHVlKGl0dHkubmV4dCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gdGVzdChmaW5hbCBQcm9wZXJ0eSBwcm9wZXJ0eSkgeworICAgICAgICBpZiAodGhpcy5rZXkuZXF1YWxzKFQudmFsdWUuZ2V0QWNjZXNzb3IoKSkpCisgICAgICAgICAgICByZXR1cm4gdGVzdFZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgaWYgKHRoaXMua2V5LmVxdWFscyhULmtleS5nZXRBY2Nlc3NvcigpKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0S2V5KHByb3BlcnR5KTsKKyAgICAgICAgaWYgKHByb3BlcnR5IGluc3RhbmNlb2YgRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0KChFbGVtZW50KSBwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBwcm90ZWN0ZWQgYm9vbGVhbiB0ZXN0SWQoRWxlbWVudCBlbGVtZW50KSB7CkBAIC0xMjIsNyArMTE5LDYgQEAKICAgICAgICAgcmV0dXJuIHRoaXMucHJlZGljYXRlLnRlc3QocHJvcGVydHkua2V5KCkpOwogICAgIH0KIAotCiAgICAgcHVibGljIGZpbmFsIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMua2V5ICsgJy4nICsgdGhpcy5wcmVkaWNhdGU7CiAgICAgfQpAQCAtMTc1LDI5ICsxNzEsMTcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB0ZXN0QWxsKGZpbmFsIEVsZW1lbnQgZWxlbWVudCwgZmluYWwgTGlzdDxIYXNDb250YWluZXI+IGhhc0NvbnRhaW5lcnMpIHsKKyAgICBwdWJsaWMgc3RhdGljIDxTPiBib29sZWFuIHRlc3RBbGwoZmluYWwgUyBlbGVtZW50LCBmaW5hbCBMaXN0PEhhc0NvbnRhaW5lcj4gaGFzQ29udGFpbmVycykgeworICAgICAgICBmaW5hbCBib29sZWFuIGlzUHJvcGVydHkgPSBlbGVtZW50IGluc3RhbmNlb2YgUHJvcGVydHk7CiAgICAgICAgIGZvciAoZmluYWwgSGFzQ29udGFpbmVyIGhhc0NvbnRhaW5lciA6IGhhc0NvbnRhaW5lcnMpIHsKLSAgICAgICAgICAgIGlmICghaGFzQ29udGFpbmVyLnRlc3QoZWxlbWVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGlzUHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0NvbnRhaW5lci50ZXN0KChQcm9wZXJ0eSkgZWxlbWVudCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250YWluZXIudGVzdCgoRWxlbWVudCkgZWxlbWVudCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjQuIFByb3ZpZGVycyBzaG91bGQgaGFuZGxlIGNvbXBvc2l0ZSB7QGxpbmsgUCNhbmR9IHByZWRpY2F0ZXMgYW5kIG5vdCByZWx5IG9uIHNwbGl0dGluZy4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgSGFzQ29udGFpbmVyW10gbWFrZUhhc0NvbnRhaW5lcnMoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgUDw/PiBwcmVkaWNhdGUpIHsKLSAgICAgICAgaWYgKHByZWRpY2F0ZSBpbnN0YW5jZW9mIEFuZFApIHsKLSAgICAgICAgICAgIGZpbmFsIExpc3Q8UDw/Pj4gcHJlZGljYXRlcyA9ICgoQW5kUCkgcHJlZGljYXRlKS5nZXRQcmVkaWNhdGVzKCk7Ci0gICAgICAgICAgICBmaW5hbCBIYXNDb250YWluZXJbXSBoYXNDb250YWluZXJzID0gbmV3IEhhc0NvbnRhaW5lcltwcmVkaWNhdGVzLnNpemUoKV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByZWRpY2F0ZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBoYXNDb250YWluZXJzW2ldID0gbmV3IEhhc0NvbnRhaW5lcihrZXksIHByZWRpY2F0ZXMuZ2V0KGkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBoYXNDb250YWluZXJzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBIYXNDb250YWluZXJbXXtuZXcgSGFzQ29udGFpbmVyKGtleSwgcHJlZGljYXRlKX07Ci0gICAgICAgIH0KLSAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvSW1tdXRhYmxlUGF0aC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvSW1tdXRhYmxlUGF0aC5qYXZhCmluZGV4IDdhNmI5YTguLjYyM2I4MTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0ltbXV0YWJsZVBhdGguamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9JbW11dGFibGVQYXRoLmphdmEKQEAgLTIwLDYgKzIwLDcgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CiAKIGltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwpAQCAtMjE3LDcgKzIxOCw3IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzKCkudG9TdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkucGF0aFN0cmluZyh0aGlzKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL011dGFibGVQYXRoLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9NdXRhYmxlUGF0aC5qYXZhCmluZGV4IDE2OGI3ZGMuLjQyN2M2MDEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL011dGFibGVQYXRoLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvTXV0YWJsZVBhdGguamF2YQpAQCAtMjAsNiArMjAsNyBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKIAogaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CkBAIC0xNjgsNyArMTY5LDcgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm9iamVjdHMudG9TdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkucGF0aFN0cmluZyh0aGlzKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL1BhcmFtZXRlcnMuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL1BhcmFtZXRlcnMuamF2YQppbmRleCBjMTMzNzczLi41Yzg2YWQ5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9QYXJhbWV0ZXJzLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvUGFyYW1ldGVycy5qYXZhCkBAIC00OCw2ICs0OCw4IEBACiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBQYXJhbWV0ZXJzIGltcGxlbWVudHMgQ2xvbmVhYmxlLCBTZXJpYWxpemFibGUgewogCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJhbWV0ZXJzIEVNUFRZID0gbmV3IFBhcmFtZXRlcnMoKTsKKwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdFtdIEVNUFRZX0FSUkFZID0gbmV3IE9iamVjdFswXTsKIAogICAgIHByaXZhdGUgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+PiBwYXJhbWV0ZXJzID0gbmV3IEhhc2hNYXA8PigpOwpAQCAtOTgsMTEgKzEwMCwxMSBAQAogICAgICAqIEdldHMgdGhlIHZhbHVlIG9mIGEga2V5IGFuZCBpZiB0aGF0IGtleSBpc24ndCBwcmVzZW50IHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUge0BsaW5rIFN1cHBsaWVyfS4KICAgICAgKgogICAgICAqIEBwYXJhbSBrZXkgICAgICAgICAgdGhlIGtleSB0byByZXRyaWV2ZQotICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgdGhlIGRlZmF1bHQgdmFsdWUgZ2VuZXJhdG9yCisgICAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSB0aGUgZGVmYXVsdCB2YWx1ZSBnZW5lcmF0b3Igd2hpY2ggaWYgbnVsbCB3aWxsIHJldHVybiBhbiBlbXB0eSBsaXN0CiAgICAgICovCiAgICAgcHVibGljIDxFPiBMaXN0PEU+IGdldChmaW5hbCBPYmplY3Qga2V5LCBmaW5hbCBTdXBwbGllcjxFPiBkZWZhdWx0VmFsdWUpIHsKICAgICAgICAgZmluYWwgTGlzdDxFPiBsaXN0ID0gKExpc3Q8RT4pIHRoaXMucGFyYW1ldGVycy5nZXQoa2V5KTsKLSAgICAgICAgcmV0dXJuIChudWxsID09IGxpc3QpID8gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChkZWZhdWx0VmFsdWUuZ2V0KCkpIDogbGlzdDsKKyAgICAgICAgcmV0dXJuIChudWxsID09IGxpc3QpID8gKG51bGwgPT0gZGVmYXVsdFZhbHVlID8gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCkgOiBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGRlZmF1bHRWYWx1ZS5nZXQoKSkpIDogbGlzdDsKIAogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvV2l0aE9wdGlvbnMuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL1dpdGhPcHRpb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUyMzk3NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL1dpdGhPcHRpb25zLmphdmEKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5JbmRleFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKKworLyoqCisgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9LgorICoKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK3B1YmxpYyBjbGFzcyBXaXRoT3B0aW9ucyB7CisKKyAgICAvLworICAgIC8vIFByb3BlcnR5TWFwU3RlcAorICAgIC8vCisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSB0b2tlbnMgdG8gYmUgaW5jbHVkZWQgaW4gdmFsdWUgbWFwcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB0b2tlbnMgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnZhbHVlTWFwLnRva2VucyIpOworCisgICAgLyoqCisgICAgICogSW5jbHVkZSBubyB0b2tlbnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgbm9uZSA9IDA7CisKKyAgICAvKioKKyAgICAgKiBJbmNsdWRlIGlkcyAoYWZmZWN0cyBhbGwge0BsaW5rIEVsZW1lbnR9IHZhbHVlIG1hcHMpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGlkcyA9IDE7CisKKyAgICAvKioKKyAgICAgKiBJbmNsdWRlIGxhYmVscyAoYWZmZWN0cyBhbGwge0BsaW5rIFZlcnRleH0gYW5kIHtAbGluayBFZGdlfSB2YWx1ZSBtYXBzKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBsYWJlbHMgPSAyOworCisgICAgLyoqCisgICAgICogSW5jbHVkZSBrZXlzIChhZmZlY3RzIGFsbCB7QGxpbmsgVmVydGV4UHJvcGVydHl9IHZhbHVlIG1hcHMpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGtleXMgPSA0OworCisgICAgLyoqCisgICAgICogSW5jbHVkZSBrZXlzIChhZmZlY3RzIGFsbCB7QGxpbmsgVmVydGV4UHJvcGVydHl9IHZhbHVlIG1hcHMpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IHZhbHVlcyA9IDg7CisKKyAgICAvKioKKyAgICAgKiBJbmNsdWRlIGFsbCB0b2tlbnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgYWxsID0gaWRzIHwgbGFiZWxzIHwga2V5cyB8IHZhbHVlczsKKworICAgIC8vCisgICAgLy8gSW5kZXhTdGVwCisgICAgLy8KKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIGluZGV4ZXIgdG8gYmUgdXNlZCBpbiB7QGxpbmsgSW5kZXhTdGVwfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBpbmRleGVyID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5pbmRleC5pbmRleGVyIik7CisKKyAgICAvKioKKyAgICAgKiBJbmRleCBpdGVtcyB1c2luZyAyLWl0ZW0gbGlzdHMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgbGlzdCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBJbmRleCBpdGVtcyB1c2luZyBhIHtAY29kZSBMaW5rZWRIYXNoTWFwfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBtYXAgPSAxOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvZXZlbnQvQ29uc29sZU11dGF0aW9uTGlzdGVuZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL2V2ZW50L0NvbnNvbGVNdXRhdGlvbkxpc3RlbmVyLmphdmEKaW5kZXggOTM3ZjQxNC4uMWJmZGYyNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvZXZlbnQvQ29uc29sZU11dGF0aW9uTGlzdGVuZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9ldmVudC9Db25zb2xlTXV0YXRpb25MaXN0ZW5lci5qYXZhCkBAIC04MywxMSArODMsNiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgUHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7Ci0gICAgICAgIC8vIGRvIG5vdGhpbmcgLSBkZXByZWNhdGVkCi0gICAgfQotCi0gICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgdmVydGV4UHJvcGVydHlDaGFuZ2VkKGZpbmFsIFZlcnRleCBlbGVtZW50LCBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSBvbGRWYWx1ZSwgZmluYWwgT2JqZWN0IHNldFZhbHVlLCBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpIHsKICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJWZXJ0ZXggWyIgKyBlbGVtZW50LnRvU3RyaW5nKCkgKyAiXSBwcm9wZXJ0eSBbIiArIG9sZFZhbHVlICsgIl0gY2hhbmdlIHRvIFsiICsgc2V0VmFsdWUgKyAiXSBpbiBncmFwaCBbIiArIGdyYXBoLnRvU3RyaW5nKCkgKyAiXSIpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL2V2ZW50L011dGF0aW9uTGlzdGVuZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL2V2ZW50L011dGF0aW9uTGlzdGVuZXIuamF2YQppbmRleCAyMGY4ZjQ0Li5hY2VhZGIyIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9ldmVudC9NdXRhdGlvbkxpc3RlbmVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvZXZlbnQvTXV0YXRpb25MaXN0ZW5lci5qYXZhCkBAIC01MCwxOSArNTAsMTAgQEAKICAgICAvKioKICAgICAgKiBSYWlzZWQgYWZ0ZXIgdGhlIHByb3BlcnR5IG9mIGEge0BsaW5rIFZlcnRleH0gY2hhbmdlZC4KICAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjcsIHJlcGxhY2VkIGJ5IHtAbGluayAjdmVydGV4UHJvcGVydHlDaGFuZ2VkKFZlcnRleCwgVmVydGV4UHJvcGVydHksIE9iamVjdCwgT2JqZWN0Li4uKX0uCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdmVydGV4UHJvcGVydHlDaGFuZ2VkKGZpbmFsIFZlcnRleCBlbGVtZW50LCBmaW5hbCBQcm9wZXJ0eSBvbGRWYWx1ZSwgZmluYWwgT2JqZWN0IHNldFZhbHVlLCBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpOwotCi0gICAgLyoqCi0gICAgICogUmFpc2VkIGFmdGVyIHRoZSBwcm9wZXJ0eSBvZiBhIHtAbGluayBWZXJ0ZXh9IGNoYW5nZWQuCi0gICAgICoKICAgICAgKiBAcGFyYW0gZWxlbWVudCAgdGhlIHtAbGluayBWZXJ0ZXh9IHRoYXQgY2hhbmdlZAogICAgICAqIEBwYXJhbSBzZXRWYWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eQogICAgICAqLwotICAgIHB1YmxpYyBkZWZhdWx0IHZvaWQgdmVydGV4UHJvcGVydHlDaGFuZ2VkKGZpbmFsIFZlcnRleCBlbGVtZW50LCBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSBvbGRWYWx1ZSwgZmluYWwgT2JqZWN0IHNldFZhbHVlLCBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpIHsKLSAgICAgICAgdmVydGV4UHJvcGVydHlDaGFuZ2VkKGVsZW1lbnQsIChQcm9wZXJ0eSkgb2xkVmFsdWUsIHNldFZhbHVlLCB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcyk7Ci0gICAgfQorICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgVmVydGV4UHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKTsKIAogICAgIC8qKgogICAgICAqIFJhaXNlZCBhZnRlciBhIHtAbGluayBWZXJ0ZXhQcm9wZXJ0eX0gd2FzIHJlbW92ZWQgZnJvbSB0aGUgZ3JhcGguCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L1RyYXZlcnNhbFN0cmF0ZWd5UHJveHkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvVHJhdmVyc2FsU3RyYXRlZ3lQcm94eS5qYXZhCmluZGV4IGYyNDhkYzYuLjhjOWMyOWEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvVHJhdmVyc2FsU3RyYXRlZ3lQcm94eS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvVHJhdmVyc2FsU3RyYXRlZ3lQcm94eS5qYXZhCkBAIC0yMCwxNCArMjAsMjAgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneTsKIAogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwogCiBpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CiAKIC8qKgorICogVGhpcyBjbGFzcyBpcyBmb3IgdXNlIHdpdGgge0BsaW5rIEJ5dGVjb2RlfSBhbmQgZm9yIHNlcmlhbGl6YXRpb24gcHVycG9zZXMuIEl0IGlzIG5vdCBtZWFudCBmb3IgZGlyZWN0IHVzZSB3aXRoCisgKiB7QGxpbmsgVHJhdmVyc2FsU291cmNlI3dpdGhTdHJhdGVnaWVzKFRyYXZlcnNhbFN0cmF0ZWd5W10pfS4KKyAqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIFRyYXZlcnNhbFN0cmF0ZWd5UHJveHk8VCBleHRlbmRzIFRyYXZlcnNhbFN0cmF0ZWd5PiBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CitwdWJsaWMgZmluYWwgY2xhc3MgVHJhdmVyc2FsU3RyYXRlZ3lQcm94eTxUIGV4dGVuZHMgVHJhdmVyc2FsU3RyYXRlZ3k+IGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBUcmF2ZXJzYWxTdHJhdGVneSB7CiAKICAgICBwcml2YXRlIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICAgICBwcml2YXRlIGZpbmFsIENsYXNzPFQ+IHN0cmF0ZWd5Q2xhc3M7CkBAIC00OCw0ICs1NCwxNCBAQAogICAgIHB1YmxpYyBDbGFzczxUPiBnZXRTdHJhdGVneUNsYXNzKCkgewogICAgICAgICByZXR1cm4gdGhpcy5zdHJhdGVneUNsYXNzOwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGFwcGx5KGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJUcmF2ZXJzYWxTdHJhdGVneVByb3h5IGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5IGFzIGEgVHJhdmVyc2FsU3RyYXRlZ3kgYW5kIGlzIGZvciBzZXJpYWxpemF0aW9uIHB1cnBvc2VzIG9ubHkiKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGNvbXBhcmVUbyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIlRyYXZlcnNhbFN0cmF0ZWd5UHJveHkgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHkgYXMgYSBUcmF2ZXJzYWxTdHJhdGVneSBhbmQgaXMgZm9yIHNlcmlhbGl6YXRpb24gcHVycG9zZXMgb25seSIpOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9Db25uZWN0aXZlU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9Db25uZWN0aXZlU3RyYXRlZ3kuamF2YQppbmRleCBlYjg1YzdiLi4zZGVhYjZkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vQ29ubmVjdGl2ZVN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0Nvbm5lY3RpdmVTdHJhdGVneS5qYXZhCkBAIC0zNCw2ICszNCw4IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5BYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CiAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCkBAIC03Niw0MiArNzgsNTUgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcHJvY2Vzc0Nvbmp1bmN0aW9uTWFya2VyKGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBDb25uZWN0aXZlU3RlcD4gbWFya2VyQ2xhc3MsIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0cmF2ZXJzYWwpIHsKIAotICAgICAgICBUcmF2ZXJzYWxIZWxwZXIuZ2V0U3RlcHNPZkNsYXNzKG1hcmtlckNsYXNzLCB0cmF2ZXJzYWwpLnN0cmVhbSgpCi0gICAgICAgICAgICAgICAgLmZpbHRlcihjb25qdW5jdGlvblN0ZXAgLT4gY29uanVuY3Rpb25TdGVwLmdldExvY2FsQ2hpbGRyZW4oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgLmZpbmRGaXJzdCgpLmlmUHJlc2VudChjb25uZWN0aXZlU3RlcCAtPiB7Ci0KLSAgICAgICAgICAgIFN0ZXA8PywgPz4gY3VycmVudFN0ZXAgPSBjb25uZWN0aXZlU3RlcC5nZXROZXh0U3RlcCgpOwotICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHJpZ2h0VHJhdmVyc2FsID0gX18uc3RhcnQoKS5hc0FkbWluKCk7Ci0gICAgICAgICAgICBpZiAoIWNvbm5lY3RpdmVTdGVwLmdldExhYmVscygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIFN0YXJ0U3RlcDw/PiBzdGFydFN0ZXAgPSBuZXcgU3RhcnRTdGVwPD4ocmlnaHRUcmF2ZXJzYWwpOwotICAgICAgICAgICAgICAgIGZpbmFsIFNldDxTdHJpbmc+IGNvbmp1bmN0aW9uTGFiZWxzID0gKChTdGVwPD8sID8+KSBjb25uZWN0aXZlU3RlcCkuZ2V0TGFiZWxzKCk7Ci0gICAgICAgICAgICAgICAgY29uanVuY3Rpb25MYWJlbHMuZm9yRWFjaChzdGFydFN0ZXA6OmFkZExhYmVsKTsKLSAgICAgICAgICAgICAgICBjb25qdW5jdGlvbkxhYmVscy5mb3JFYWNoKGxhYmVsIC0+IGNvbm5lY3RpdmVTdGVwLnJlbW92ZUxhYmVsKGxhYmVsKSk7Ci0gICAgICAgICAgICAgICAgcmlnaHRUcmF2ZXJzYWwuYWRkU3RlcChzdGFydFN0ZXApOworICAgICAgICBmaW5hbCBMaXN0PFN0ZXA+IHN0ZXBzID0gdHJhdmVyc2FsLmdldFN0ZXBzKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RlcHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGZpbmFsIFN0ZXAgc3RlcCA9IHN0ZXBzLmdldChpKTsKKyAgICAgICAgICAgIGlmIChzdGVwLmdldENsYXNzKCkuZXF1YWxzKG1hcmtlckNsYXNzKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIENvbm5lY3RpdmVTdGVwPD8+IGN1cnJlbnRTdGVwID0gKENvbm5lY3RpdmVTdGVwKSBzdGVwOworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcC5nZXRMb2NhbENoaWxkcmVuKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiBjb25uZWN0aXZlVHJhdmVyc2FsOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RlcC5hZGRMb2NhbENoaWxkKGNvbm5lY3RpdmVUcmF2ZXJzYWwgPSBfXy5zdGFydCgpLmFzQWRtaW4oKSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBpIC0gMTsgaiA+PSAwOyBpLS0sIGotLSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RlcCBwcmV2aW91c1N0ZXAgPSBzdGVwcy5nZXQoaik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVnYWxDdXJyZW50U3RlcChwcmV2aW91c1N0ZXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGl2ZVRyYXZlcnNhbC5hZGRTdGVwKDAsIHByZXZpb3VzU3RlcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLnJlbW92ZVN0ZXAocHJldmlvdXNTdGVwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwLmFkZExvY2FsQ2hpbGQoY29ubmVjdGl2ZVRyYXZlcnNhbCA9IGNvbm5lY3RpdmVUcmF2ZXJzYWwoY29ubmVjdGl2ZVRyYXZlcnNhbCwgY3VycmVudFN0ZXApKTsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0TGFiZWxzKCkuZm9yRWFjaChjdXJyZW50U3RlcDo6cmVtb3ZlTGFiZWwpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IHN0ZXBzLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RlcCBuZXh0U3RlcCA9IHN0ZXBzLmdldChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWdhbEN1cnJlbnRTdGVwKG5leHRTdGVwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0U3RlcC5nZXRDbGFzcygpLmVxdWFscyhtYXJrZXJDbGFzcykgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ29ubmVjdGl2ZVN0ZXApIG5leHRTdGVwKS5nZXRMb2NhbENoaWxkcmVuKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIENvbm5lY3RpdmVTdGVwPD8+IG5leHRDb25uZWN0aXZlU3RlcCA9IChDb25uZWN0aXZlU3RlcDw/PikgbmV4dFN0ZXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwLmFkZExvY2FsQ2hpbGQoY29ubmVjdGl2ZVRyYXZlcnNhbCA9IGNvbm5lY3RpdmVUcmF2ZXJzYWwoY29ubmVjdGl2ZVRyYXZlcnNhbCwgbmV4dENvbm5lY3RpdmVTdGVwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGl2ZVRyYXZlcnNhbC5hZGRTdGVwKG5leHRTdGVwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLnJlbW92ZVN0ZXAobmV4dFN0ZXApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCBpbnN0YW5jZW9mIE9yU3RlcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0TG9jYWxDaGlsZHJlbigpLmZvckVhY2godCAtPiBwcm9jZXNzQ29uanVuY3Rpb25NYXJrZXIoQW5kU3RlcC5jbGFzcywgdCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUgKGxlZ2FsQ3VycmVudFN0ZXAoY3VycmVudFN0ZXApKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgU3RlcDw/LCA/PiBuZXh0U3RlcCA9IGN1cnJlbnRTdGVwLmdldE5leHRTdGVwKCk7Ci0gICAgICAgICAgICAgICAgcmlnaHRUcmF2ZXJzYWwuYWRkU3RlcChjdXJyZW50U3RlcCk7Ci0gICAgICAgICAgICAgICAgdHJhdmVyc2FsLnJlbW92ZVN0ZXAoY3VycmVudFN0ZXApOwotICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwID0gbmV4dFN0ZXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9jZXNzQ29ubmVjdGl2ZU1hcmtlcihyaWdodFRyYXZlcnNhbCk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgICAgIGN1cnJlbnRTdGVwID0gY29ubmVjdGl2ZVN0ZXAuZ2V0UHJldmlvdXNTdGVwKCk7Ci0gICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gbGVmdFRyYXZlcnNhbCA9IF9fLnN0YXJ0KCkuYXNBZG1pbigpOwotICAgICAgICAgICAgd2hpbGUgKGxlZ2FsQ3VycmVudFN0ZXAoY3VycmVudFN0ZXApKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgU3RlcDw/LCA/PiBwcmV2aW91c1N0ZXAgPSBjdXJyZW50U3RlcC5nZXRQcmV2aW91c1N0ZXAoKTsKLSAgICAgICAgICAgICAgICBsZWZ0VHJhdmVyc2FsLmFkZFN0ZXAoMCwgY3VycmVudFN0ZXApOwotICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5yZW1vdmVTdGVwKGN1cnJlbnRTdGVwKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50U3RlcCA9IHByZXZpb3VzU3RlcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByb2Nlc3NDb25uZWN0aXZlTWFya2VyKGxlZnRUcmF2ZXJzYWwpOwotCi0gICAgICAgICAgICBpZiAoY29ubmVjdGl2ZVN0ZXAgaW5zdGFuY2VvZiBBbmRTdGVwKQotICAgICAgICAgICAgICAgIFRyYXZlcnNhbEhlbHBlci5yZXBsYWNlU3RlcCgoU3RlcCkgY29ubmVjdGl2ZVN0ZXAsIG5ldyBBbmRTdGVwKHRyYXZlcnNhbCwgbGVmdFRyYXZlcnNhbCwgcmlnaHRUcmF2ZXJzYWwpLCB0cmF2ZXJzYWwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFRyYXZlcnNhbEhlbHBlci5yZXBsYWNlU3RlcCgoU3RlcCkgY29ubmVjdGl2ZVN0ZXAsIG5ldyBPclN0ZXAodHJhdmVyc2FsLCBsZWZ0VHJhdmVyc2FsLCByaWdodFRyYXZlcnNhbCksIHRyYXZlcnNhbCk7Ci0gICAgICAgIH0pOworICAgIHByaXZhdGUgc3RhdGljIFRyYXZlcnNhbC5BZG1pbjw/LD8+IGNvbm5lY3RpdmVUcmF2ZXJzYWwoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IGNvbm5lY3RpdmVUcmF2ZXJzYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBDb25uZWN0aXZlU3RlcCBjb25uZWN0aXZlU3RlcCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdHJhdmVyc2FsID0gX18uc3RhcnQoKS5hc0FkbWluKCk7CisgICAgICAgIGZpbmFsIFNldDxTdHJpbmc+IGNvbmp1bmN0aW9uTGFiZWxzID0gY29ubmVjdGl2ZVN0ZXAuZ2V0TGFiZWxzKCk7CisgICAgICAgIGlmICghY29uanVuY3Rpb25MYWJlbHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBmaW5hbCBTdGFydFN0ZXA8Pz4gc3RhcnRTdGVwID0gbmV3IFN0YXJ0U3RlcDw+KGNvbm5lY3RpdmVUcmF2ZXJzYWwpOworICAgICAgICAgICAgY29uanVuY3Rpb25MYWJlbHMuZm9yRWFjaChzdGFydFN0ZXA6OmFkZExhYmVsKTsKKyAgICAgICAgICAgIHRyYXZlcnNhbC5hZGRTdGVwKHN0YXJ0U3RlcCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKICAgICB9CiAKICAgICBwdWJsaWMgc3RhdGljIENvbm5lY3RpdmVTdHJhdGVneSBpbnN0YW5jZSgpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FbGVtZW50SWRTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0VsZW1lbnRJZFN0cmF0ZWd5LmphdmEKaW5kZXggYzhmOWQyMi4uMjVhMjgzMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0VsZW1lbnRJZFN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0VsZW1lbnRJZFN0cmF0ZWd5LmphdmEKQEAgLTIxLDcgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLk1hcENvbmZpZ3VyYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGFyYW1ldGVyaXppbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlBhcmFtZXRlcml6aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkhhc0NvbnRhaW5lckhvbGRlcjsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneS5qYXZhCmluZGV4IDZmZWIyMTguLjIwNjFlN2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0V2ZW50U3RyYXRlZ3kuamF2YQpAQCAtNTcsNTMgKzU3LDIzIEBACiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBFdmVudFN0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5EZWNvcmF0aW9uU3RyYXRlZ3k+IGltcGxlbWVudHMgVHJhdmVyc2FsU3RyYXRlZ3kuRGVjb3JhdGlvblN0cmF0ZWd5IHsKICAgICBwcml2YXRlIGZpbmFsIEV2ZW50UXVldWUgZXZlbnRRdWV1ZTsKLSAgICBwcml2YXRlIGZpbmFsIENsYXNzPD8+IGRldGFjaG1lbnRGYWN0b3J5OworICAgIHByaXZhdGUgZmluYWwgRGV0YWNobWVudCBkZXRhY2htZW50OwogCiAgICAgcHJpdmF0ZSBFdmVudFN0cmF0ZWd5KGZpbmFsIEJ1aWxkZXIgYnVpbGRlcikgewogICAgICAgICB0aGlzLmV2ZW50UXVldWUgPSBidWlsZGVyLmV2ZW50UXVldWU7CiAgICAgICAgIHRoaXMuZXZlbnRRdWV1ZS5zZXRMaXN0ZW5lcnMoYnVpbGRlci5saXN0ZW5lcnMpOwotICAgICAgICB0aGlzLmRldGFjaG1lbnRGYWN0b3J5ID0gYnVpbGRlci5kZXRhY2htZW50RmFjdG9yeTsKKyAgICAgICAgdGhpcy5kZXRhY2htZW50ID0gYnVpbGRlci5kZXRhY2htZW50OwogICAgIH0KIAotICAgIHB1YmxpYyBDbGFzczw/PiBnZXREZXRhY2htZW50RmFjdG9yeSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuZGV0YWNobWVudEZhY3Rvcnk7CisgICAgcHVibGljIERldGFjaG1lbnQgZ2V0RGV0YWNobWVudCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZGV0YWNobWVudDsKICAgICB9CiAKICAgICAvKioKICAgICAgKiBBcHBsaWVzIHRoZSBhcHByb3ByaWF0ZSBkZXRhY2ggb3BlcmF0aW9uIHRvIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSByYWlzZWQgaW4gbXV0YXRpb24gZXZlbnRzLgogICAgICAqLwogICAgIHB1YmxpYyA8Uj4gUiBkZXRhY2goZmluYWwgUiBhdHRhY2hlZCkgewotICAgICAgICBpZiAobnVsbCA9PSBkZXRhY2htZW50RmFjdG9yeSkKLSAgICAgICAgICAgIHJldHVybiBhdHRhY2hlZDsKLSAgICAgICAgZWxzZSBpZiAoZGV0YWNobWVudEZhY3RvcnkuZXF1YWxzKERldGFjaGVkRmFjdG9yeS5jbGFzcykpCi0gICAgICAgICAgICByZXR1cm4gRGV0YWNoZWRGYWN0b3J5LmRldGFjaChhdHRhY2hlZCwgdHJ1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGRldGFjaG1lbnRGYWN0b3J5LmVxdWFscyhSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKSkKLSAgICAgICAgICAgIHJldHVybiBSZWZlcmVuY2VGYWN0b3J5LmRldGFjaChhdHRhY2hlZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVua25vd24gZGV0YWNobWVudCBvcHRpb24gdXNpbmcgIiArIGRldGFjaG1lbnRGYWN0b3J5LmdldFNpbXBsZU5hbWUoKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRm9yIG5ld2x5IGNyZWF0ZWQgcHJvcGVydGllcyB0aGF0IGRvIG5vdCB5ZXQgZXhpc3QsIGFuIGVtcHR5IHtAbGluayBQcm9wZXJ0eX0gaXMgcmVxdWlyZWQgdGhhdCBqdXN0IGNvbnRhaW5zCi0gICAgICogYSBrZXkgYXMgYSByZWZlcmVuY2UuCi0gICAgICovCi0gICAgcHVibGljIDxSIGV4dGVuZHMgUHJvcGVydHk+IFIgZW1wdHkoZmluYWwgRWxlbWVudCBlbGVtZW50LCBmaW5hbCBTdHJpbmcga2V5KSB7Ci0gICAgICAgIC8vIGN1cnJlbnRseSB0aGUgIm5vIGRldGFjaG1lbnQiIG1vZGVsIHNpbXBseSByZXR1cm5zIGEgRGV0YWNoZWQgdmFsdWUgdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kgd2l0aCB0aGUKLSAgICAgICAgLy8gb3JpZ2luYWwgQVBJIHRoYXQgYWxyZWFkeSBleGlzdGVkICh3aGVyZSByZXR1cm5pbmcgIkRldGFjaGVkIiB3YXMgdGhlIG9ubHkgb3B0aW9uKS4gVGhpcyBjb3VsZCBwcm9iYWJseQotICAgICAgICAvLyBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byB1c2UgYW4gImVtcHR5IiBwcm9wZXJ0eSBvciBwZXJoYXBzIHRoZSAiY2hhbmdlIiBldmVudCBBUEkgY291bGQgY2hhbmdlIGFsbCB0b2dldGhlcgotICAgICAgICAvLyBhbmQgaGF2ZSBhIGRpZmZlcmVudCByZXR1cm4uCi0gICAgICAgIGlmIChudWxsID09IGRldGFjaG1lbnRGYWN0b3J5IHx8IGRldGFjaG1lbnRGYWN0b3J5LmVxdWFscyhEZXRhY2hlZEZhY3RvcnkuY2xhc3MpKSB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZlcnRleCkKLSAgICAgICAgICAgICAgICByZXR1cm4gKFIpIG5ldyBEZXRhY2hlZFZlcnRleFByb3BlcnR5KG51bGwsIGtleSwgbnVsbCwgbnVsbCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIChSKSBuZXcgRGV0YWNoZWRQcm9wZXJ0eShrZXksIG51bGwpOwotICAgICAgICB9IGVsc2UgaWYgKGRldGFjaG1lbnRGYWN0b3J5LmVxdWFscyhSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKSkgewotICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChSKSBuZXcgUmVmZXJlbmNlVmVydGV4UHJvcGVydHkobmV3IERldGFjaGVkVmVydGV4UHJvcGVydHkobnVsbCwga2V5LCBudWxsLCBudWxsKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIChSKSBuZXcgUmVmZXJlbmNlUHJvcGVydHkobmV3IERldGFjaGVkUHJvcGVydHkoa2V5LCBudWxsKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVW5rbm93biBlbXB0eSBkZXRhY2htZW50IG9wdGlvbiB1c2luZyAiICsgZGV0YWNobWVudEZhY3RvcnkuZ2V0U2ltcGxlTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIChSKSBkZXRhY2htZW50LmRldGFjaChhdHRhY2hlZCk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xMzIsNyArMTAyLDcgQEAKICAgICBwdWJsaWMgZmluYWwgc3RhdGljIGNsYXNzIEJ1aWxkZXIgewogICAgICAgICBwcml2YXRlIGZpbmFsIExpc3Q8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXJzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgIHByaXZhdGUgRXZlbnRRdWV1ZSBldmVudFF1ZXVlID0gbmV3IERlZmF1bHRFdmVudFF1ZXVlKCk7Ci0gICAgICAgIHByaXZhdGUgQ2xhc3M8Pz4gZGV0YWNobWVudEZhY3RvcnkgPSBEZXRhY2hlZEZhY3RvcnkuY2xhc3M7CisgICAgICAgIHByaXZhdGUgRGV0YWNobWVudCBkZXRhY2htZW50ID0gRGV0YWNobWVudC5ERVRBQ0hFRF9XSVRIX1BST1BFUlRJRVM7CiAKICAgICAgICAgQnVpbGRlcigpIHt9CiAKQEAgLTE0NywxNSArMTE3LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICAvKioKLSAgICAgICAgICogQ29uZmlndXJlcyB0aGUgbWV0aG9kIG9mIGRldGFjaG1lbnQgZm9yIGVsZW1lbnQgcHJvdmlkZWQgaW4gbXV0YXRpb24gY2FsbGJhY2sgZXZlbnRzLiBJZiBjb25maWd1cmVkIHdpdGgKLSAgICAgICAgICoge0Bjb2RlIG51bGx9IGZvciBubyBkZXRhY2htZW50IHdpdGggYSB0cmFuc2FjdGlvbmFsIGdyYXBoLCBiZSBhd2FyZSB0aGF0IGFjY2Vzc2luZyB0aGUgZXZlbnRlZCBlbGVtZW50cwotICAgICAgICAgKiBhZnRlciB7QGNvZGUgY29tbWl0KCl9IHdpbGwgbGlrZWx5IG9wZW4gbmV3IHRyYW5zYWN0aW9ucy4KLSAgICAgICAgICoKLSAgICAgICAgICogQHBhcmFtIGZhY3RvcnlDbGFzcyBtdXN0IGJlIGVpdGhlciB7QGNvZGUgbnVsbH0gKGZvciBubyBkZXRhY2htZW50KSwge0BsaW5rIFJlZmVyZW5jZUZhY3Rvcnl9IGZvciBlbGVtZW50cwotICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgIHdpdGggbm8gcHJvcGVydGllcyBvciB7QGxpbmsgRGV0YWNoZWRGYWN0b3J5fSBmb3IgZWxlbWVudHMgd2l0aCBwcm9wZXJ0aWVzLgorICAgICAgICAgKiBDb25maWd1cmVzIHRoZSBtZXRob2Qgb2YgZGV0YWNobWVudCBmb3IgZWxlbWVudCBwcm92aWRlZCBpbiBtdXRhdGlvbiBjYWxsYmFjayBldmVudHMuIFRoZSBkZWZhdWx0IGlzCisgICAgICAgICAqIHtAbGluayBEZXRhY2htZW50I0RFVEFDSEVEX1dJVEhfUFJPUEVSVElFU30uCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlciBkZXRhY2goZmluYWwgQ2xhc3M8Pz4gZmFjdG9yeUNsYXNzKSB7Ci0gICAgICAgICAgICBkZXRhY2htZW50RmFjdG9yeSA9IGZhY3RvcnlDbGFzczsKKyAgICAgICAgcHVibGljIEJ1aWxkZXIgZGV0YWNoKGZpbmFsIERldGFjaG1lbnQgZGV0YWNobWVudCkgeworICAgICAgICAgICAgdGhpcy5kZXRhY2htZW50ID0gZGV0YWNobWVudDsKICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9CiAKQEAgLTE2NSw2ICsxMzEsNjAgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBBIGNvbW1vbiBpbnRlcmZhY2UgZm9yIGRldGFjaG1lbnQuCisgICAgICovCisgICAgcHVibGljIGludGVyZmFjZSBEZXRhY2hlciB7CisgICAgICAgIHB1YmxpYyBPYmplY3QgZGV0YWNoKGZpbmFsIE9iamVjdCBvYmplY3QpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE9wdGlvbnMgZm9yIGRldGFjaGluZyBlbGVtZW50cyBmcm9tIHRoZSBncmFwaCBkdXJpbmcgZXZlbnRpbmcuCisgICAgICovCisgICAgcHVibGljIGVudW0gRGV0YWNobWVudCBpbXBsZW1lbnRzIERldGFjaGVyIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIERvZXMgbm90IGRldGFjaCB0aGUgZWxlbWVudCBmcm9tIHRoZSBncmFwaC4gSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgaWYgdGhpcyBvcHRpb24gaXMgdXNlZCB3aXRoCisgICAgICAgICAqIHRyYW5zYWN0aW9uYWwgZ3JhcGhzIG5ldyB0cmFuc2FjdGlvbnMgbWF5IGJlIG9wZW5lZCBpZiB0aGVzZSBlbGVtZW50cyBhcmUgYWNjZXNzZWQgYWZ0ZXIgYSB7QGNvZGUgY29tbWl0KCl9CisgICAgICAgICAqIGlzIGNhbGxlZC4KKyAgICAgICAgICovCisgICAgICAgIE5PTkUgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IGRldGFjaChmaW5hbCBPYmplY3Qgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVXNlcyB7QGxpbmsgRGV0YWNoZWRGYWN0b3J5fSB0byBkZXRhY2ggYW5kIGluY2x1ZGVzIHByb3BlcnRpZXMgb2YgZWxlbWVudHMgdGhhdCBoYXZlIHRoZW0uCisgICAgICAgICAqLworICAgICAgICBERVRBQ0hFRF9XSVRIX1BST1BFUlRJRVMgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IGRldGFjaChmaW5hbCBPYmplY3Qgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIERldGFjaGVkRmFjdG9yeS5kZXRhY2gob2JqZWN0LCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVXNlcyB7QGxpbmsgRGV0YWNoZWRGYWN0b3J5fSB0byBkZXRhY2ggYW5kIGRvZXMgbm90IGluY2x1ZGUgcHJvcGVydGllcyBvZiBlbGVtZW50cyB0aGF0IGhhdmUgdGhlbS4KKyAgICAgICAgICovCisgICAgICAgIERFVEFDSEVEX05PX1BST1BFUlRJRVMgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IGRldGFjaChmaW5hbCBPYmplY3Qgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIERldGFjaGVkRmFjdG9yeS5kZXRhY2gob2JqZWN0LCBmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVzZXMge0BsaW5rIFJlZmVyZW5jZUZhY3Rvcnl9IHRvIGRldGFjaCB3aGljaCBvbmx5IGluY2x1ZGVzIGlkIGFuZCBsYWJlbCBvZiBlbGVtZW50cy4KKyAgICAgICAgICovCisgICAgICAgIFJFRkVSRU5DRSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgZGV0YWNoKGZpbmFsIE9iamVjdCBvYmplY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVmZXJlbmNlRmFjdG9yeS5kZXRhY2gob2JqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIEdhdGhlcnMgbWVzc2FnZXMgZnJvbSBjYWxsYmFja3MgYW5kIGZpcmVzIHRoZW0gdG8gbGlzdGVuZXJzLiAgV2hlbiB0aGUgZXZlbnQgaXMgc2VudCB0byB0aGUgbGlzdGVuZXIgaXMKICAgICAgKiB1cCB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UuCiAgICAgICovCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ2NGQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9PcHRpb25zU3RyYXRlZ3kuamF2YQpAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uTWFwQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisvKioKKyAqIFRoaXMgc3RyYXRlZ3kgd2lsbCBub3QgYWx0ZXIgdGhlIHRyYXZlcnNhbC4gSXQgaXMgb25seSBhIGhvbGRlciBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAqIHRyYXZlcnNhbCBtZWFudCB0byBiZSBhY2Nlc3NlZCBieSBzdGVwcyBvciBvdGhlciBjbGFzc2VzIHRoYXQgbWlnaHQgaGF2ZSBzb21lIGludGVyYWN0aW9uIHdpdGggaXQuIEl0IGlzCisgKiBlc3NlbnRpYWxseSBhIHdheSBmb3IgdXNlcnMgdG8gcHJvdmlkZSB0cmF2ZXJzYWwgbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gdmFyaW91cyB3YXlzIGJ5CisgKiBkaWZmZXJlbnQgZ3JhcGggcHJvdmlkZXJzLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIE9wdGlvbnNTdHJhdGVneSBleHRlbmRzIEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k8VHJhdmVyc2FsU3RyYXRlZ3kuRGVjb3JhdGlvblN0cmF0ZWd5PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5LkRlY29yYXRpb25TdHJhdGVneSB7CisKKyAgICAvKioKKyAgICAgKiBBbiBlbXB0eSB7QGNvZGUgT3B0aW9uc1N0cmF0ZWd5fSB3aXRoIG5vIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGluc2lkZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9wdGlvbnNTdHJhdGVneSBFTVBUWSA9IE9wdGlvbnNTdHJhdGVneS5idWlsZCgpLmNyZWF0ZSgpOworCisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG9wdGlvbnM7CisKKyAgICBwcml2YXRlIE9wdGlvbnNTdHJhdGVneShmaW5hbCBCdWlsZGVyIGJ1aWxkZXIpIHsKKyAgICAgICAgb3B0aW9ucyA9IGJ1aWxkZXIub3B0aW9uczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBvcHRpb25zIG9uIHRoZSBzdHJhdGVneSBhcyBhbiBpbW11dGFibGUge0Bjb2RlIE1hcH0uCisgICAgICovCisgICAgcHVibGljIE1hcDxTdHJpbmcsT2JqZWN0PiBnZXRPcHRpb25zKCkgeworICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTWFwKG9wdGlvbnMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBDb25maWd1cmF0aW9uIGdldENvbmZpZ3VyYXRpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgTWFwQ29uZmlndXJhdGlvbihvcHRpb25zKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBhcHBseShmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdHJhdmVyc2FsKSB7CisgICAgICAgIC8vIGhhcyBub3QgZWZmZWN0IG9uIHRoZSB0cmF2ZXJzYWwgaXRzZWxmIC0gc2ltcGx5IGNhcnJpZXMgYSBvcHRpb25zIHdpdGggaXQgdGhhdCBpbmRpdmlkdWFsIHN0ZXBzCisgICAgICAgIC8vIGNhbiBjaG9vc2UgdG8gdXNlIG9yIG5vdC4KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIE9wdGlvbnNTdHJhdGVneSBjcmVhdGUoZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSB7CisgICAgICAgIGZpbmFsIEJ1aWxkZXIgYnVpbGRlciA9IGJ1aWxkKCk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0S2V5cygpLmZvckVhY2hSZW1haW5pbmcoayAtPiBidWlsZGVyLndpdGgoaywgY29uZmlndXJhdGlvbi5nZXRQcm9wZXJ0eShrKSkpOworICAgICAgICByZXR1cm4gYnVpbGRlci5jcmVhdGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoKSB7CisgICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQnVpbGRlciB7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG9wdGlvbnMgPSBuZXcgSGFzaE1hcDw+KCk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEFkZHMgYW4ga2V5IHRvIHRoZSBjb25maWd1cmF0aW9uIHdpdGggdGhlIHZhbHVlIG9mIHtAY29kZSB0cnVlfS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIHdpdGgoZmluYWwgU3RyaW5nIGtleSkgeworICAgICAgICAgICAgcmV0dXJuIHdpdGgoa2V5LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBBZGRzIGFuIG9wdGlvbiB0byB0aGUgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIHdpdGgoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgICAgICBvcHRpb25zLnB1dChrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE9wdGlvbnNTdHJhdGVneSBjcmVhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IE9wdGlvbnNTdHJhdGVneSh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5LmphdmEKaW5kZXggZjViMjgyNS4uMTExNjA5YiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5LmphdmEKQEAgLTIxLDcgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLk1hcENvbmZpZ3VyYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGFyYW1ldGVyaXppbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlBhcmFtZXRlcml6aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwpAQCAtNDQsNiArNDQsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkFkZFByb3BlcnR5U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5IYXNDb250YWluZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LkFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OwpAQCAtMTgxLDcgKzE4Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoaXMgaXMgYSB2YWx1ZSBtYXAsIHJlcGxhY2UgdGhhdCBzdGVwIHdpdGggcHJvcGVydGllc01hcCgpIHRoYXQgcmV0dXJucyBQcm9wZXJ0eVR5cGUuVkFMVUUuCiAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlcmUsIGFkZCB0aGUgZmlsdGVyIGFzIHNob3duIGFib3ZlIGFuZCB0aGVuIHVud3JhcCB0aGUgcHJvcGVydGllcyBhcyB0aGV5IHdvdWxkIGhhdmUKICAgICAgICAgICAgICAgICAgICAgLy8gYmVlbiBkb25lIHVuZGVyIHZhbHVlTWFwKCkKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgUHJvcGVydHlNYXBTdGVwIHByb3BlcnR5TWFwU3RlcCA9IG5ldyBQcm9wZXJ0eU1hcFN0ZXAodHJhdmVyc2FsLCBzdGVwLmlzSW5jbHVkZVRva2VucygpLCBQcm9wZXJ0eVR5cGUuUFJPUEVSVFksIHN0ZXAuZ2V0UHJvcGVydHlLZXlzKCkpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBQcm9wZXJ0eU1hcFN0ZXAgcHJvcGVydHlNYXBTdGVwID0gbmV3IFByb3BlcnR5TWFwU3RlcCh0cmF2ZXJzYWwsIFByb3BlcnR5VHlwZS5QUk9QRVJUWSwgc3RlcC5nZXRQcm9wZXJ0eUtleXMoKSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TWFwU3RlcC5jb25maWd1cmUoV2l0aE9wdGlvbnMudG9rZW5zLCBzdGVwLmdldEluY2x1ZGVkVG9rZW5zKCkpOwogICAgICAgICAgICAgICAgICAgICBUcmF2ZXJzYWxIZWxwZXIucmVwbGFjZVN0ZXAoc3RlcCwgcHJvcGVydHlNYXBTdGVwLCB0cmF2ZXJzYWwpOwogCiAgICAgICAgICAgICAgICAgICAgIGZpbmFsIExhbWJkYU1hcFN0ZXAgbWFwUHJvcGVydGllc0ZpbHRlclN0ZXAgPSBuZXcgTGFtYmRhTWFwU3RlcDw+KHRyYXZlcnNhbCwgbmV3IE1hcFByb3BlcnRpZXNGaWx0ZXIoKSk7CkBAIC0yMDUsNyArMjA3LDcgQEAKICAgICAgICAgICAgIC8vIGVuZHMgdXAgYmVpbmcgYSBWZXJ0ZXggb3Igbm90LiAgQWRkUHJvcGVydHlTdGVwIGN1cnJlbnRseSBjaG9vc2VzIHRvIHNpbXBseSBub3QgYm90aGVyCiAgICAgICAgICAgICAvLyB0byB1c2UgdGhlIGFkZGl0aW9uYWwgInByb3BlcnR5IG11dGF0aW9ucyIgaWYgdGhlIEVsZW1lbnQgYmVpbmcgbXV0YXRlZCBpcyBhIEVkZ2Ugb3IKICAgICAgICAgICAgIC8vIFZlcnRleFByb3BlcnR5Ci0gICAgICAgICAgICAoKE11dGF0aW5nKSBzdGVwKS5hZGRQcm9wZXJ0eU11dGF0aW9ucyhwYXJ0aXRpb25LZXksIHdyaXRlUGFydGl0aW9uKTsKKyAgICAgICAgICAgICgoTXV0YXRpbmcpIHN0ZXApLmNvbmZpZ3VyZShwYXJ0aXRpb25LZXksIHdyaXRlUGFydGl0aW9uKTsKIAogICAgICAgICAgICAgaWYgKGluY2x1ZGVNZXRhUHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIC8vIEdyYXBoVHJhdmVyc2FsIGZvbGRzIGcuYWRkVigpLnByb3BlcnR5KCdrJywndicpIHRvIGp1c3QgQWRkVmVydGV4U3RlcC9BZGRWZXJ0ZXhTdGFydFN0ZXAgc28gdGhpcwpAQCAtMjIxLDcgKzIyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkgY2FyZGluYWxpdHkgPSB2ZXJ0ZXhGZWF0dXJlcy5nZXRDYXJkaW5hbGl0eSgoU3RyaW5nKSBrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LmZvckVhY2gobyAtPiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIEFkZFByb3BlcnR5U3RlcCBhZGRQcm9wZXJ0eVN0ZXAgPSBuZXcgQWRkUHJvcGVydHlTdGVwKHRyYXZlcnNhbCwgY2FyZGluYWxpdHksIGssIG8pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVN0ZXAuYWRkUHJvcGVydHlNdXRhdGlvbnMocGFydGl0aW9uS2V5LCB3cml0ZVBhcnRpdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5U3RlcC5jb25maWd1cmUocGFydGl0aW9uS2V5LCB3cml0ZVBhcnRpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5U3RlcHNUb0FwcGVuZC5hZGQoYWRkUHJvcGVydHlTdGVwKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIHJlbW92ZSB0aGUgcGFyYW1ldGVyIGZyb20gdGhlIEFkZFZlcnRleC9TdGFydFN0ZXAgYmVjYXVzZSBpdCdzIG5vdyBiZWluZyBhZGRlZApAQCAtNDI0LDE4ICs0MjYsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIFNwZWNpZmllcyB0aGUgcGFydGl0aW9uIG9mIHRoZSBncmFwaCB0byByZWFkIGZyb20uICBJdCBpcyBwb3NzaWJsZSB0byBhc3NpZ24gbXVsdGlwbGUgcGFydGl0aW9uIGtleXMgc28KLSAgICAgICAgICogYXMgdG8gcmVhZCBmcm9tIG11bHRpcGxlIHBhcnRpdGlvbnMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgICoKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMywgcmVwbGFjZWQgYnkge0BsaW5rIEJ1aWxkZXIjcmVhZFBhcnRpdGlvbnMoTGlzdCl9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIEJ1aWxkZXIgYWRkUmVhZFBhcnRpdGlvbihmaW5hbCBTdHJpbmcgcmVhZFBhcnRpdGlvbikgewotICAgICAgICAgICAgdGhpcy5yZWFkUGFydGl0aW9ucy5hZGQocmVhZFBhcnRpdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgogICAgICAgICAgKiBDcmVhdGVzIHRoZSB7QGNvZGUgUGFydGl0aW9uU3RyYXRlZ3l9LgogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIFBhcnRpdGlvblN0cmF0ZWd5IGNyZWF0ZSgpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneS5qYXZhCmluZGV4IGFhNzM5OGIuLmE1N2E3ZDMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3kuamF2YQpAQCAtNDMsNyArNDMsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlNpZGVFZmZlY3RTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkVtcHR5U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LkFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247CkBAIC0zODQsMjIgKzM4Myw2IEBACiAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfQogCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4yLCByZXBsYWNlZCBieSB7QGNvZGUgQnVpbGRlciN2ZXJ0aWNlc30uCi0gICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQnVpbGRlciB2ZXJ0ZXhDcml0ZXJpb24oZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPz4gcHJlZGljYXRlKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJ0aWNlcyhwcmVkaWNhdGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjIsIHJlcGxhY2VkIGJ5IHtAY29kZSBCdWlsZGVyI2VkZ2VzfS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIGVkZ2VDcml0ZXJpb24oZmluYWwgVHJhdmVyc2FsPEVkZ2UsID8+IHByZWRpY2F0ZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWRnZXMocHJlZGljYXRlKTsKLSAgICAgICAgfQotCiAgICAgICAgIHB1YmxpYyBTdWJncmFwaFN0cmF0ZWd5IGNyZWF0ZSgpIHsKICAgICAgICAgICAgIGlmIChudWxsID09IHRoaXMudmVydGV4Q3JpdGVyaW9uICYmIG51bGwgPT0gdGhpcy5lZGdlQ3JpdGVyaW9uICYmIG51bGwgPT0gdGhpcy52ZXJ0ZXhQcm9wZXJ0eUNyaXRlcmlvbikKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJBIHN1YmdyYXBoIG11c3QgYmUgZmlsdGVyZWQgYnkgYSB2ZXJ0ZXgsIGVkZ2UsIG9yIHZlcnRleCBwcm9wZXJ0eSBjcml0ZXJpb24iKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZmluYWxpemF0aW9uL1JlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9maW5hbGl6YXRpb24vUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlMTMyNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZmluYWxpemF0aW9uL1JlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5qYXZhCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmZpbmFsaXphdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXBTdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlByb2ZpbGVTaWRlRWZmZWN0U3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5FbXB0eVN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5BYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlRmFjdG9yeTsKKworaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKKworLyoqCisgKiBBIHN0cmF0ZWd5IHRoYXQgZGV0YWNoZXMgdHJhdmVyc2VycyB3aXRoIGdyYXBoIGVsZW1lbnRzIGFzIHJlZmVyZW5jZXMgKGkuZS4gd2l0aG91dCBwcm9wZXJ0aWVzIC0ganVzdCB7QGNvZGUgaWR9CisgKiBhbmQge0Bjb2RlIGxhYmVsfS4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kgZXh0ZW5kcyBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5PFRyYXZlcnNhbFN0cmF0ZWd5LkZpbmFsaXphdGlvblN0cmF0ZWd5PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5LkZpbmFsaXphdGlvblN0cmF0ZWd5IHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSBJTlNUQU5DRSA9IG5ldyBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3koKTsKKworICAgIHByaXZhdGUgUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5KCkge30KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGFwcGx5KGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgaWYgKHRyYXZlcnNhbC5nZXRQYXJlbnQoKSA9PSBFbXB0eVN0ZXAuaW5zdGFuY2UoKSkgeworICAgICAgICAgICAgZmluYWwgT3B0aW9uYWw8UHJvZmlsZVNpZGVFZmZlY3RTdGVwPiBwcm9maWxlU3RlcCA9IFRyYXZlcnNhbEhlbHBlci5nZXRGaXJzdFN0ZXBPZkFzc2lnbmFibGVDbGFzcyhQcm9maWxlU2lkZUVmZmVjdFN0ZXAuY2xhc3MsIHRyYXZlcnNhbCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgaW5kZXggPSBwcm9maWxlU3RlcC5tYXAoc3RlcCAtPiB0cmF2ZXJzYWwuZ2V0U3RlcHMoKS5pbmRleE9mKHN0ZXApKQorICAgICAgICAgICAgICAgICAgICAub3JFbHNlR2V0KCgpIC0+IHRyYXZlcnNhbC5nZXRTdGVwcygpLnNpemUoKSk7CisgICAgICAgICAgICB0cmF2ZXJzYWwuYWRkU3RlcChpbmRleCwgbmV3IFJlZmVyZW5jZUVsZW1lbnRTdGVwPD4odHJhdmVyc2FsKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSBpbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgUmVmZXJlbmNlRWxlbWVudFN0ZXA8UywgRT4gZXh0ZW5kcyBNYXBTdGVwPFMsIEU+IHsKKworICAgICAgICBwdWJsaWMgUmVmZXJlbmNlRWxlbWVudFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgeworICAgICAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgRSBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgeworICAgICAgICAgICAgcmV0dXJuIFJlZmVyZW5jZUZhY3RvcnkuZGV0YWNoKHRyYXZlcnNlci5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9BZGphY2VudFRvSW5jaWRlbnRTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vQWRqYWNlbnRUb0luY2lkZW50U3RyYXRlZ3kuamF2YQppbmRleCAyZDE5NDc5Li5kOGU1MzhhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9BZGphY2VudFRvSW5jaWRlbnRTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0FkamFjZW50VG9JbmNpZGVudFN0cmF0ZWd5LmphdmEKQEAgLTQyLDEwICs0MiwxMiBAQAogCiAvKioKICAqIFRoaXMgc3RyYXRlZ3kgbG9va3MgZm9yIHZlcnRleC0gYW5kIHZhbHVlLWVtaXR0aW5nIHN0ZXBzIGZvbGxvd2VkIGJ5IGEge0BsaW5rIENvdW50R2xvYmFsU3RlcH0gYW5kIHJlcGxhY2VzIHRoZQotICogcGF0dGVybiB3aXRoIGFuIGVkZ2UtIG9yIHByb3BlcnR5LWVtaXR0aW5nIHN0ZXAgZm9sbG93ZWQgYnkgYSB7QGNvZGUgQ291bnRHbG9iYWxTdGVwfS4gRnVydGhlcm1vcmUsIGlmIGEgdmVydGV4LQorICogcGF0dGVybiB3aXRoIGFuIGVkZ2UtIG9yIHByb3BlcnR5LWVtaXR0aW5nIHN0ZXAgZm9sbG93ZWQgYnkgYSB7QGxpbmsgQ291bnRHbG9iYWxTdGVwfS4gRnVydGhlcm1vcmUsIGlmIGEgdmVydGV4LQogICogb3IgdmFsdWUtZW1pdHRpbmcgc3RlcCBpcyB0aGUgbGFzdCBzdGVwIGluIGEge0Bjb2RlIC5oYXModHJhdmVyc2FsKX0sIHtAY29kZSAuYW5kKHRyYXZlcnNhbCwgLi4uKX0gb3IKICAqIHtAY29kZSAub3IodHJhdmVyc2FsLCAuLi4pfSBjaGlsZCB0cmF2ZXJzYWwsIGl0IGlzIHJlcGxhY2VkIGJ5IGFuIGFwcHJvcHJpYXRlIGVkZ2UtIG9yIHByb3BlcnR5LWVtaXR0aW5nIHN0ZXAuCi0gKiA8cC8+CisgKiBQZXJmb3JtaW5nIHRoaXMgcmVwbGFjZW1lbnQgcmVtb3ZlcyBzaXR1YXRpb25zIHdoZXJlIHRoZSBtb3JlIGV4cGVuc2l2ZSB0cmlwIHRvIGFuIGFkamFjZW50IGdyYXBoIGVsZW1lbnQgKGUuZy4KKyAqIHRoZSB2ZXJ0ZXggb24gdGhlIG90aGVyIHNpZGUgb2YgYW4gZWRnZSkgY2FuIGJlIHNhdGlzZmllZCBieSB0cmlwcyB0byBpbmNpZGVudCBncmFwaCBlbGVtZW50cyAoZS5nLiBqdXN0IHRoZSBlZGdlCisgKiBpdHNlbGYpLgogICoKICAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCiAgKiBAZXhhbXBsZSA8cHJlPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vRWFybHlMaW1pdFN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9FYXJseUxpbWl0U3RyYXRlZ3kuamF2YQppbmRleCA2NGUwNDE1Li5lOTkwM2E5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9FYXJseUxpbWl0U3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9FYXJseUxpbWl0U3RyYXRlZ3kuamF2YQpAQCAtMzUsOSArMzUsOSBAQAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCiAvKioKLSAqIFRoaXMgc3RyYXRlZ3kgbG9va3MgZm9yIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9J3MgdGhhdCBjYW4gYmUgbW92ZWQgZnVydGhlciBsZWZ0IGluIHRoZSB0cmF2ZXJzYWwgYW5kIHRodXMgYmUgYXBwbGllZAotICogYXBwbGllZCBlYXJsaWVyLiBJdCB3aWxsIGFsc28gdHJ5IHRvIG1lcmdlIG11bHRpcGxlIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9J3MgaW50byBvbmUuCi0gKiBJZiB0aGUgbG9naWNhbCBjb25zZXF1ZW5jZSBvZiBvbmUgb3IgbXVsdGlwbGUge0BsaW5rIFJhbmdlR2xvYmFsU3RlcH0ncyBpcyBhbiBlbXB0eSByZXN1bHQsIHRoZSBzdHJhdGVneSB3aWxsIHJlbW92ZQorICogVGhpcyBzdHJhdGVneSBsb29rcyBmb3Ige0BsaW5rIFJhbmdlR2xvYmFsU3RlcH1zIHRoYXQgY2FuIGJlIG1vdmVkIGZ1cnRoZXIgbGVmdCBpbiB0aGUgdHJhdmVyc2FsIGFuZCB0aHVzIGJlIGFwcGxpZWQKKyAqIGVhcmxpZXIuIEl0IHdpbGwgYWxzbyB0cnkgdG8gbWVyZ2UgbXVsdGlwbGUge0BsaW5rIFJhbmdlR2xvYmFsU3RlcH1zIGludG8gb25lLgorICogSWYgdGhlIGxvZ2ljYWwgY29uc2VxdWVuY2Ugb2Ygb25lIG9yIG11bHRpcGxlIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9cyBpcyBhbiBlbXB0eSByZXN1bHQsIHRoZSBzdHJhdGVneSB3aWxsIHJlbW92ZQogICogYXMgbWFueSBzdGVwcyBhcyBwb3NzaWJsZSBhbmQgYWRkIGEge0BsaW5rIE5vbmVTdGVwfSBpbnN0ZWFkLgogICoKICAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9GaWx0ZXJSYW5raW5nU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0ZpbHRlclJhbmtpbmdTdHJhdGVneS5qYXZhCmluZGV4IGJlYzI1MDIuLjhiYjdkNjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0ZpbHRlclJhbmtpbmdTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0ZpbHRlclJhbmtpbmdTdHJhdGVneS5qYXZhCkBAIC00NCw5ICs0NCwxMCBAQAogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgotICogRmlsdGVyUmFua2luZ1N0cmF0ZWd5IHJlb3JkZXJzIGZpbHRlci0gYW5kIG9yZGVyLXN0ZXBzIGFjY29yZGluZyB0byB0aGVpciByYW5rLiBJdCB3aWxsIGFsc28gZG8gaXRzIGJlc3QgdG8gcHVzaAotICogc3RlcCBsYWJlbHMgYXMgZmFyICJyaWdodCIgYXMgcG9zc2libGUgaW4gb3JkZXIgdG8ga2VlcCB0cmF2ZXJzZXJzIGFzIHNtYWxsIGFuZCBidWxrYWJsZSBhcyBwb3NzaWJsZSBwcmlvciB0byB0aGUKLSAqIGFic29sdXRlIG5lZWQgZm9yIHBhdGgtbGFiZWxpbmcuCisgKiB7QGNvZGUgRmlsdGVyUmFua2luZ1N0cmF0ZWd5fSByZW9yZGVycyBmaWx0ZXItIGFuZCBvcmRlci1zdGVwcyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuay4gU3RlcCByYW5rcyBhcmUgZGVmaW5lZCB3aXRoaW4KKyAqIHRoZSBzdHJhdGVneSBhbmQgaW5kaWNhdGUgd2hlbiBpdCBpcyByZWFzb25hYmxlIGZvciBhIHN0ZXAgdG8gbW92ZSBpbiBmcm9udCBvZiBhbm90aGVyLiBJdCB3aWxsIGFsc28gZG8gaXRzIGJlc3QgdG8KKyAqIHB1c2ggc3RlcCBsYWJlbHMgYXMgZmFyICJyaWdodCIgYXMgcG9zc2libGUgaW4gb3JkZXIgdG8ga2VlcCB0cmF2ZXJzZXJzIGFzIHNtYWxsIGFuZCBidWxrYWJsZSBhcyBwb3NzaWJsZSBwcmlvciB0bworICogdGhlIGFic29sdXRlIG5lZWQgZm9yIHBhdGgtbGFiZWxpbmcuCiAgKgogICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSWRlbnRpdHlSZW1vdmFsU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lkZW50aXR5UmVtb3ZhbFN0cmF0ZWd5LmphdmEKaW5kZXggNTRkNGJjYS4uM2M0YTg3NSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSWRlbnRpdHlSZW1vdmFsU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JZGVudGl0eVJlbW92YWxTdHJhdGVneS5qYXZhCkBAIC0yOCw4ICsyOCw3IEBACiAvKioKICAqIHtAY29kZSBJZGVudGl0eVJlbW92YWxTdHJhdGVneX0gbG9va3MgZm9yIHtAbGluayBJZGVudGl0eVN0ZXB9IGluc3RhbmNlcyBhbmQgcmVtb3ZlcyB0aGVtLgogICogSWYgdGhlIGlkZW50aXR5IHN0ZXAgaXMgbGFiZWxlZCwgaXRzIGxhYmVscyBhcmUgYWRkZWQgdG8gdGhlIHByZXZpb3VzIHN0ZXAuCi0gKiBJZiB0aGUgaWRlbnRpdHkgc3RlcCBpcyBsYWJlbGVkIGFuZCBpdHMgdGhlIGZpcnN0IHN0ZXAgaW4gdGhlIHRyYXZlcnNhbCwgaXQgc3RheXMuCi0gKiA8cC8+CisgKiBJZiB0aGUgaWRlbnRpdHkgc3RlcCBpcyBsYWJlbGVkIGFuZCBpdCdzIHRoZSBmaXJzdCBzdGVwIGluIHRoZSB0cmF2ZXJzYWwsIGl0IHN0YXlzLgogICoKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGV4YW1wbGUgPHByZT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0luY2lkZW50VG9BZGphY2VudFN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JbmNpZGVudFRvQWRqYWNlbnRTdHJhdGVneS5qYXZhCmluZGV4IDc3ZTg5NmMuLmU3MGU1NGEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0luY2lkZW50VG9BZGphY2VudFN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5jaWRlbnRUb0FkamFjZW50U3RyYXRlZ3kuamF2YQpAQCAtNTAsMTMgKzUwLDE2IEBACiAgKiBUaGlzIHN0cmF0ZWd5IGxvb2tzIGZvciB7QGNvZGUgLm91dEUoKS5pblYoKX0sIHtAY29kZSAuaW5FKCkub3V0VigpfSBhbmQge0Bjb2RlIC5ib3RoRSgpLm90aGVyVigpfQogICogYW5kIHJlcGxhY2VzIHRoZXNlIHN0ZXAgc2VxdWVuY2VzIHdpdGgge0Bjb2RlIC5vdXQoKX0sIHtAY29kZSAuaW4oKX0gb3Ige0Bjb2RlIC5ib3RoKCl9IHJlc3BlY3RpdmVseS4KICAqIFRoZSBzdHJhdGVneSB3b24ndCBtb2RpZnkgdGhlIHRyYXZlcnNhbCBpZjoKKyAqIDxwLz4KICAqIDx1bD4KLSAqIDxsaT50aGUgZWRnZSBzdGVwIGlzIGxhYmVsZWQ8L2xpPgotICogPGxpPnRoZSB0cmF2ZXJzYWwgY29udGFpbnMgYSB7QGNvZGUgcGF0aH0gc3RlcDwvbGk+Ci0gKiA8bGk+dGhlIHRyYXZlcnNhbCBjb250YWlucyBhIGxhbWJkYSBzdGVwPC9saT4KKyAqICAgICA8bGk+dGhlIGVkZ2Ugc3RlcCBpcyBsYWJlbGVkPC9saT4KKyAqICAgICA8bGk+dGhlIHRyYXZlcnNhbCBjb250YWlucyBhIHtAY29kZSBwYXRofSBzdGVwPC9saT4KKyAqICAgICA8bGk+dGhlIHRyYXZlcnNhbCBjb250YWlucyBhIGxhbWJkYSBzdGVwPC9saT4KICAqIDwvdWw+CiAgKiA8cC8+CiAgKgorICogQnkgcmUtd3JpdGluZyB0aGUgdHJhdmVyc2FsIGluIHRoaXMgZmFzaGlvbiwgdGhlIHRyYXZlcnNhbCBlbGltaW5hdGVzIHVubmVjZXNzYXJ5IHN0ZXBzIGFuZCBiZWNvbWVzIG1vcmUgbm9ybWFsaXplZC4KKyAqCiAgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQogICogQGV4YW1wbGUgPHByZT4KICAqIF9fLm91dEUoKS5pblYoKSAgICAgICAgIC8vIGlzIHJlcGxhY2VkIGJ5IF9fLm91dCgpCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JbmxpbmVGaWx0ZXJTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5saW5lRmlsdGVyU3RyYXRlZ3kuamF2YQppbmRleCBlMmYxNTRlLi5mNWY5ODBmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JbmxpbmVGaWx0ZXJTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lubGluZUZpbHRlclN0cmF0ZWd5LmphdmEKQEAgLTU0LDEwICs1NCwxMSBAQAogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgotICogSW5saW5lRmlsdGVyU3RyYXRlZ3kgYW5hbHl6ZXMgZmlsdGVyLXN0ZXBzIHdpdGggY2hpbGQgdHJhdmVyc2FscyB0aGF0IHRoZW1zZWx2ZXMgYXJlIHB1cmUgZmlsdGVycy4KLSAqIElmIHRoZSBjaGlsZCB0cmF2ZXJzYWxzIGFyZSBwdXJlIGZpbHRlcnMgdGhlbiB0aGUgd3JhcHBpbmcgcGFyZW50IGZpbHRlciBpcyBub3QgbmVlZGVkIGFuZCB0aHVzLCB0aGUKLSAqIGNoaWxkcmVuIGNhbiBiZSAiaW5saW5lZC4iCi0gKiA8cC8+CisgKiBUaGlzIHN0cmF0ZWd5IGFuYWx5emVzIGZpbHRlci1zdGVwcyB3aXRoIGNoaWxkIHRyYXZlcnNhbHMgdGhhdCB0aGVtc2VsdmVzIGFyZSBwdXJlIGZpbHRlcnMuIElmIHRoZSBjaGlsZCB0cmF2ZXJzYWxzCisgKiBhcmUgcHVyZSBmaWx0ZXJzIHRoZW4gdGhlIHdyYXBwaW5nIHBhcmVudCBmaWx0ZXIgaXMgbm90IG5lZWRlZCBhbmQgdGh1cywgdGhlIGNoaWxkcmVuIGNhbiBiZSAiaW5saW5lZC4iIE5vcm1hbGl6aW5nCisgKiBwdXJlIGZpbHRlcnMgd2l0aCBpbmxpbmluZyByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdmFyaWF0aW9ucyBvZiBhIGZpbHRlciB0aGF0IGEgZ3JhcGggcHJvdmlkZXIgbWF5IG5lZWQgdG8gcmVhc29uCisgKiBhYm91dCB3aGVuIHdyaXRpbmcgdGhlaXIgb3duIHN0cmF0ZWdpZXMuIEFzIGEgcmVzdWx0LCB0aGlzIHN0cmF0ZWd5IGhlbHBzIGluY3JlYXNlIHRoZSBsaWtlbGlob29kIHRoYXQgYSBwcm92aWRlcidzCisgKiBmaWx0ZXJpbmcgb3B0aW1pemF0aW9uIHdpbGwgc3VjY2VlZCBhdCByZS13cml0aW5nIHRoZSB0cmF2ZXJzYWwuCiAgKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAZXhhbXBsZSA8cHJlPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTGF6eUJhcnJpZXJTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTGF6eUJhcnJpZXJTdHJhdGVneS5qYXZhCmluZGV4IDEzMTNkM2UuLjFlMjI1N2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0xhenlCYXJyaWVyU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9MYXp5QmFycmllclN0cmF0ZWd5LmphdmEKQEAgLTIzLDYgKzIzLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5CYXJyaWVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5QYXRoUHJvY2Vzc29yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuRHJvcFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5IYXNTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuTm9uZVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5GbGF0TWFwU3RlcDsKQEAgLTQxLDcgKzQyLDE2IEBACiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCisgKiB7QGNvZGUgTGF6eUJhcnJpZXJTdHJhdGVneX0gaXMgYW4gT0xUUC1vbmx5IHN0cmF0ZWd5IHRoYXQgYXV0b21hdGljYWxseSBpbnNlcnRzIGEge0BsaW5rIE5vT3BCYXJyaWVyU3RlcH0gYWZ0ZXIgZXZlcnkKKyAqIHtAbGluayBGbGF0TWFwU3RlcH0gaWYgbmVpdGhlciBwYXRoLXRyYWNraW5nIG5vciBwYXJ0aWFsIHBhdGgtdHJhY2tpbmcgaXMgcmVxdWlyZWQsIGFuZCB0aGUgbmV4dCBzdGVwIGlzIG5vdCB0aGUKKyAqIHRyYXZlcnNhbCdzIGxhc3Qgc3RlcCBvciBhIHtAbGluayBCYXJyaWVyfS4ge0BsaW5rIE5vT3BCYXJyaWVyU3RlcH1zIGFsbG93IHRyYXZlcnNlcnMgdG8gYmUgYnVsa2VkLCB0aHVzIHRoaXMgc3RyYXRlZ3kKKyAqIGlzIG1lYW50IHRvIHJlZHVjZSBtZW1vcnkgcmVxdWlyZW1lbnRzIGFuZCBpbXByb3ZlIHRoZSBvdmVyYWxsIHF1ZXJ5IHBlcmZvcm1hbmNlLgorICoKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICogQGV4YW1wbGUgPHByZT4KKyAqIF9fLm91dCgpLmJvdGhFKCkuY291bnQoKSAgICAgIC8vIGlzIHJlcGxhY2VkIGJ5IF9fLm91dCgpLmJhcnJpZXIoMjUwMCkuYm90aEUoKS5jb3VudCgpCisgKiBfXy5ib3RoKCkuYm90aCgpLnZhbHVlTWFwKCkgICAvLyBpcyByZXBsYWNlZCBieSBfXy5ib3RoKCkuYmFycmllcigyNTAwKS5ib3RoKCkuYmFycmllcigyNTAwKS52YWx1ZU1hcCgpCisgKiA8L3ByZT4KICAqLwogcHVibGljIGZpbmFsIGNsYXNzIExhenlCYXJyaWVyU3RyYXRlZ3kgZXh0ZW5kcyBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5PFRyYXZlcnNhbFN0cmF0ZWd5Lk9wdGltaXphdGlvblN0cmF0ZWd5PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5Lk9wdGltaXphdGlvblN0cmF0ZWd5IHsKIApAQCAtNjUsNyArNzUsMTEgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIGFwcGx5KGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgLy8gZHJvcCgpIGlzIGEgcHJvYmxlbSBmb3IgYnVsa2VkIGVkZ2UvbWV0YSBwcm9wZXJ0aWVzIGJlY2F1c2Ugb2YgUHJvcGVydHkgZXF1YWxpdHkgY2hhbmdlcyBpbiBUSU5LRVJQT1AtMjMxOAorICAgICAgICAvLyB3aGljaCBtYWRlIGl0IHNvIHRoYXQgYSBQcm9wZXJ0eSBpcyBlcXVhbCBpZiB0aGUga2V5L3ZhbHVlIGlzIGVxdWFsLiBhcyBhIHJlc3VsdCwgdGhleSBidWxrIHRvZ2V0aGVyIHdoaWNoCisgICAgICAgIC8vIGlzIGZpbmUgZm9yIGFsbW9zdCBhbGwgY2FzZXMgZXhjZXB0IHdoZW4geW91IHdpc2ggdG8gZHJvcCB0aGUgcHJvcGVydHkuCiAgICAgICAgIGlmIChUcmF2ZXJzYWxIZWxwZXIub25HcmFwaENvbXB1dGVyKHRyYXZlcnNhbCkgfHwKKyAgICAgICAgICAgICAgICBUcmF2ZXJzYWxIZWxwZXIuaGFzU3RlcE9mQXNzaWduYWJsZUNsYXNzKERyb3BTdGVwLmNsYXNzLCB0cmF2ZXJzYWwpIHx8CiAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLmdldFRyYXZlcnNlclJlcXVpcmVtZW50cygpLmNvbnRhaW5zKFRyYXZlcnNlclJlcXVpcmVtZW50LlBBVEgpIHx8CiAgICAgICAgICAgICAgICAgKElTX1RFU1RJTkcgJiYgKChUcmF2ZXJzYWxIZWxwZXIuaGFzU3RlcE9mQXNzaWduYWJsZUNsYXNzKFByb2ZpbGVTdGVwLmNsYXNzLCBUcmF2ZXJzYWxIZWxwZXIuZ2V0Um9vdFRyYXZlcnNhbCh0cmF2ZXJzYWwpKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLmhhc1N0ZXBPZkFzc2lnbmFibGVDbGFzcyhQcm9maWxlU2lkZUVmZmVjdFN0ZXAuY2xhc3MsIFRyYXZlcnNhbEhlbHBlci5nZXRSb290VHJhdmVyc2FsKHRyYXZlcnNhbCkpKSkpKSAvLyBuZWNlc3NhcnkgY2F1c2UgUHJvZmlsZVRlc3QgYW5hbHl6ZXMgY291bnRzCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9NYXRjaFByZWRpY2F0ZVN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9NYXRjaFByZWRpY2F0ZVN0cmF0ZWd5LmphdmEKaW5kZXggYzkxYzM5Mi4uYzU2NTJjZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL01hdGNoUHJlZGljYXRlU3RyYXRlZ3kuamF2YQpAQCAtMzksMTYgKzM5LDE0IEBACiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCi0gKiBNYXRjaFdoZXJlU3RyYXRlZ3kgd2lsbCBmb2xkIGFueSBwb3N0LXtAY29kZSB3aGVyZSgpfSBzdGVwIHRoYXQgbWFpbnRhaW5zIGEgdHJhdmVyc2FsIGNvbnN0cmFpbnQgaW50bworICoge0Bjb2RlIE1hdGNoV2hlcmVTdHJhdGVneX0gd2lsbCBmb2xkIGFueSBwb3N0LXtAY29kZSB3aGVyZSgpfSBzdGVwIHRoYXQgbWFpbnRhaW5zIGEgdHJhdmVyc2FsIGNvbnN0cmFpbnQgaW50bwogICoge0Bjb2RlIG1hdGNoKCl9LiB7QGxpbmsgTWF0Y2hTdGVwfSBpcyBpbnRlbGxpZ2VudCB3aXRoIHRyYXZlcnNhbCBjb25zdHJhaW50IGFwcGxpY2F0aW9ucyBhbmQgdGh1cywgY2FuIG1vcmUKICAqIGVmZmljaWVudGx5IHVzZSB0aGUgY29uc3RyYWludCBvZiB7QGxpbmsgV2hlcmVUcmF2ZXJzYWxTdGVwfSBvciB7QGxpbmsgV2hlcmVQcmVkaWNhdGVTdGVwfS4KLSAqIDxwLz4KLSAqIDxwLz4KICAqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBleGFtcGxlIDxwcmU+CiAgKiBfXy5tYXRjaChhLGIpLndoZXJlKGMpICAgICAgICAgICAgLy8gaXMgcmVwbGFjZWQgYnkgX18ubWF0Y2goYSxiLGMpCi0gKiBfXy5tYXRjaChhLGIpLnNlbGVjdCgpLndoZXJlKGMpICAvLyBpcyByZXBsYWNlZCBieSBfXy5tYXRjaChhLGIsYykuc2VsZWN0KCkKKyAqIF9fLm1hdGNoKGEsYikuc2VsZWN0KCkud2hlcmUoYykgICAvLyBpcyByZXBsYWNlZCBieSBfXy5tYXRjaChhLGIsYykuc2VsZWN0KCkKICAqIDwvcHJlPgogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgTWF0Y2hQcmVkaWNhdGVTdHJhdGVneSBleHRlbmRzIEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k8VHJhdmVyc2FsU3RyYXRlZ3kuT3B0aW1pemF0aW9uU3RyYXRlZ3k+IGltcGxlbWVudHMgVHJhdmVyc2FsU3RyYXRlZ3kuT3B0aW1pemF0aW9uU3RyYXRlZ3kgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vT3JkZXJMaW1pdFN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9PcmRlckxpbWl0U3RyYXRlZ3kuamF2YQppbmRleCA5OGQ3ZWJkLi5lZTBjMWEzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9PcmRlckxpbWl0U3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9PcmRlckxpbWl0U3RyYXRlZ3kuamF2YQpAQCAtNDAsNiArNDAsMjUgQEAKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKKyAqIHtAY29kZSBPcmRlckxpbWl0U3RyYXRlZ3l9IGlzIGFuIE9MQVAgc3RyYXRlZ3kgdGhhdCBmb2xkcyBhIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9IGludG8gYSBwcmVjZWRpbmcKKyAqIHtAbGluayBPcmRlckdsb2JhbFN0ZXB9LiBUaGlzIGhlbHBzIHRvIGVsaW1pbmF0ZSB0cmF2ZXJzZXJzIGVhcmx5IGluIHRoZSB0cmF2ZXJzYWwgYW5kIGNhbgorICogc2lnbmlmaWNhbnRseSByZWR1Y2UgdGhlIGFtb3VudCBvZiBtZW1vcnkgcmVxdWlyZWQgYnkgdGhlIE9MQVAgZXhlY3V0aW9uIGVuZ2luZS4KKyAqCisgKiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0IGNlcnRhaW4gc3RlcHMgYXJlIGFsbG93ZWQgYmV0d2VlbiB7QGxpbmsgT3JkZXJHbG9iYWxTdGVwfSBhbmQge0BsaW5rIFJhbmdlR2xvYmFsU3RlcH06CisgKiA8cC8+CisgKiA8dWw+CisgKiAgICAgPGxpPntAbGluayBJZFN0ZXB9PC9saT4KKyAqICAgICA8bGk+e0BsaW5rIExhYmVsU3RlcH08L2xpPgorICogICAgIDxsaT57QGxpbmsgU2Fja1N0ZXB9PC9saT4KKyAqICAgICA8bGk+e0BsaW5rIFNlbGVjdE9uZVN0ZXB9PC9saT4KKyAqICAgICA8bGk+e0BsaW5rIFNlbGVjdFN0ZXB9PC9saT4KKyAqICAgICA8bGk+e0BsaW5rIFBhdGhTdGVwfTwvbGk+CisgKiAgICAgPGxpPntAbGluayBUcmVlU3RlcH08L2xpPgorICogPC91bD4KKyAqIDxwLz4KKyAqCisgKiBUaGVzZSBzdGVwcyB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIHtAY29kZSBPcmRlckxpbWl0U3RyYXRlZ3l9IGFuZCB0aHVzIG5vdCBhZmZlY3QgaXRzIGJlaGF2aW9yLgorICoKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgT3JkZXJMaW1pdFN0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5PcHRpbWl6YXRpb25TdHJhdGVneT4gaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5PcHRpbWl6YXRpb25TdHJhdGVneSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9QYXRoUHJvY2Vzc29yU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1BhdGhQcm9jZXNzb3JTdHJhdGVneS5qYXZhCmluZGV4IDBiOWU1MDUuLjkxNzlkM2EgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1BhdGhQcm9jZXNzb3JTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1BhdGhQcm9jZXNzb3JTdHJhdGVneS5qYXZhCkBAIC00OSw5ICs0OSwxMCBAQAogaW1wb3J0IGphdmEudXRpbC5VVUlEOwogCiAvKioKLSAqIFBhdGhQcm9jZXNzU3RyYXRlZ3kgaXMgYW4gT0xBUCBzdHJhdGVneSB0aGF0IGRvZXMgaXRzIGJlc3QgdG8gdHVybiBub24tbG9jYWwgY2hpbGRyZW4gaW4ge0Bjb2RlIHdoZXJlKCl9IGFuZCB7QGNvZGUgc2VsZWN0KCl9Ci0gKiBpbnRvIGxvY2FsIGNoaWxkcmVuIGJ5IGlubGluaW5nIGNvbXBvbmVudHMgb2YgdGhlIG5vbi1sb2NhbCBjaGlsZC4gSW4gdGhpcyB3YXksIFBhdGhQcm9jZXNzU3RyYXRlZ3kgaGVscHMgdG8gZW5zdXJlCi0gKiB0aGF0IG1vcmUgdHJhdmVyc2FscyBtZWV0IHRoZSBsb2NhbCBjaGlsZCBjb25zdHJhaW50IGltcG9zZWQgb24gT0xBUCB0cmF2ZXJzYWxzLgorICoge0Bjb2RlIFBhdGhQcm9jZXNzU3RyYXRlZ3l9IGlzIGFuIE9MQVAgc3RyYXRlZ3kgdGhhdCBkb2VzIGl0cyBiZXN0IHRvIHR1cm4gbm9uLWxvY2FsIGNoaWxkcmVuIGluIHtAY29kZSB3aGVyZSgpfQorICogYW5kIHtAY29kZSBzZWxlY3QoKX0gaW50byBsb2NhbCBjaGlsZHJlbiBieSBpbmxpbmluZyBjb21wb25lbnRzIG9mIHRoZSBub24tbG9jYWwgY2hpbGQuIEluIHRoaXMgd2F5LAorICoge0Bjb2RlIFBhdGhQcm9jZXNzU3RyYXRlZ3l9IGhlbHBzIHRvIGVuc3VyZSB0aGF0IG1vcmUgdHJhdmVyc2FscyBtZWV0IHRoZSBsb2NhbCBjaGlsZCBjb25zdHJhaW50IGltcG9zZWQgb24gT0xBUAorICogdHJhdmVyc2Fscy4KICAqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBleGFtcGxlIDxwcmU+CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9SZXBlYXRVbnJvbGxTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vUmVwZWF0VW5yb2xsU3RyYXRlZ3kuamF2YQppbmRleCBhYWYxYTU1Li45MjRiNGQ0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9SZXBlYXRVbnJvbGxTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1JlcGVhdFVucm9sbFN0cmF0ZWd5LmphdmEKQEAgLTM3LDcgKzM3LDIwIEBACiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCisgKiB7QGNvZGUgUmVwZWF0VW5yb2xsU3RyYXRlZ3l9IGlzIGFuIE9MVFAtb25seSBzdHJhdGVneSB0aGF0IHVucm9sbHMgYW55IHtAbGluayBSZXBlYXRTdGVwfSBpZiBpdCB1c2VzIGEgY29uc3RhbnQKKyAqIG51bWJlciBvZiBsb29wcyAoe0Bjb2RlIHRpbWVzKHgpfSkgYW5kIGRvZXNuJ3QgZW1pdCBpbnRlcm1pdHRlbnQgZWxlbWVudHMuIElmIGFueSBvZiB0aGUgZm9sbG93aW5nIDMgc3RlcHMgYXBwZWFycworICogd2l0aGluIHRoZSByZXBlYXQtdHJhdmVyc2FsLCB0aGUgc3RyYXRlZ3kgd2lsbCBub3QgYmUgYXBwbGllZDoKKyAqIDxwLz4KKyAqIDx1bD4KKyAqICAgICA8bGk+e0BsaW5rIERlZHVwR2xvYmFsU3RlcH08L2xpPgorICogICAgIDxsaT57QGxpbmsgTG9vcHNTdGVwfTwvbGk+CisgKiAgICAgPGxpPntAbGluayBMYW1iZGFIb2xkZXJ9PC9saT4KKyAqIDwvdWw+CisgKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAZXhhbXBsZSA8cHJlPgorICogICAgIF9fLnJlcGVhdChvdXQoKSkudGltZXMoMikgICAvLyBpcyByZXBsYWNlZCBieSBfXy5vdXQoKS5iYXJyaWVyKDI1MDApLm91dCgpLmJhcnJpZXIoMjUwMCkKKyAqIDwvcHJlPgogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgUmVwZWF0VW5yb2xsU3RyYXRlZ3kgZXh0ZW5kcyBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5PFRyYXZlcnNhbFN0cmF0ZWd5Lk9wdGltaXphdGlvblN0cmF0ZWd5PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5Lk9wdGltaXphdGlvblN0cmF0ZWd5IHsKIApAQCAtNjksOCArODIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsb29wczsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBUcmF2ZXJzYWxIZWxwZXIuaW5zZXJ0VHJhdmVyc2FsKGluc2VydEluZGV4LCByZXBlYXRUcmF2ZXJzYWwuY2xvbmUoKSwgdHJhdmVyc2FsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEluZGV4ID0gaW5zZXJ0SW5kZXggKyByZXBlYXRMZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiAhPSAobG9vcHMgLSAxKSB8fCAhKHRyYXZlcnNhbC5nZXRTdGVwcygpLmdldChpbnNlcnRJbmRleCkuZ2V0TmV4dFN0ZXAoKSBpbnN0YW5jZW9mIEJhcnJpZXIpKSAvLyBvbmx5IGFkZCBhIGZpbmFsIE5vT3BCYXJyaWVyIGlzIHN1YnNlcXVlbnQgc3RlcCBpcyBub3QgYSBiYXJyaWVyCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogIT0gKGxvb3BzIC0gMSkgfHwgISh0cmF2ZXJzYWwuZ2V0U3RlcHMoKS5nZXQoaW5zZXJ0SW5kZXgpLmdldE5leHRTdGVwKCkgaW5zdGFuY2VvZiBCYXJyaWVyKSkgLy8gb25seSBhZGQgYSBmaW5hbCBOb09wQmFycmllciBpcyBzdWJzZXF1ZW50IHN0ZXAgaXMgbm90IGEgYmFycmllcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICEodHJhdmVyc2FsLmdldFN0ZXBzKCkuZ2V0KGluc2VydEluZGV4KSBpbnN0YW5jZW9mIE5vT3BCYXJyaWVyU3RlcCkgLy8gRG9uJ3QgYWRkIGEgYmFycmllciBpZiB0aGlzIHN0ZXAgaXMgYSBiYXJyaWVyIChwcmV2ZW50cyBuZXN0ZWQgcmVwZWF0IGFkZGluZyB0aGUgYmFycmllciBtdWx0aXBsZSB0aW1lcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5hZGRTdGVwKCsraW5zZXJ0SW5kZXgsIG5ldyBOb09wQmFycmllclN0ZXA8Pih0cmF2ZXJzYWwsIE1BWF9CQVJSSUVSX1NJWkUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAvLyBsYWJlbCBsYXN0IHN0ZXAgaWYgcmVwZWF0KCkgd2FzIGxhYmVsZWQKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBlYXRTdGVwLmdldExhYmVscygpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL0NvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL0NvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YQppbmRleCAyZDA3NmI2Li41YzJkMjk5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9Db21wdXRlclZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vQ29tcHV0ZXJWZXJpZmljYXRpb25TdHJhdGVneS5qYXZhCkBAIC0yOCw2ICsyOCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlBhdGhQcm9jZXNzb3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5HcmFwaFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW5qZWN0U3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Jb1N0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuU3ViZ3JhcGhTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkVtcHR5U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5Qcm9maWxlU3RlcDsKQEAgLTQ2LDcgKzQ3LDcgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIENvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3kgSU5TVEFOQ0UgPSBuZXcgQ29tcHV0ZXJWZXJpZmljYXRpb25TdHJhdGVneSgpOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxDbGFzczw/Pj4gVU5TVVBQT1JURURfU1RFUFMgPSBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoCi0gICAgICAgICAgICBJbmplY3RTdGVwLmNsYXNzLCBNdXRhdGluZy5jbGFzcywgU3ViZ3JhcGhTdGVwLmNsYXNzLCBDb21wdXRlclJlc3VsdFN0ZXAuY2xhc3MKKyAgICAgICAgICAgIEluamVjdFN0ZXAuY2xhc3MsIE11dGF0aW5nLmNsYXNzLCBTdWJncmFwaFN0ZXAuY2xhc3MsIENvbXB1dGVyUmVzdWx0U3RlcC5jbGFzcywgSW9TdGVwLmNsYXNzCiAgICAgKSk7CiAKICAgICBwcml2YXRlIENvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3koKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9SZXNlcnZlZEtleXNWZXJpZmljYXRpb25TdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vUmVzZXJ2ZWRLZXlzVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YQppbmRleCAxYTU0MDRhLi44ZmU2NDI0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9SZXNlcnZlZEtleXNWZXJpZmljYXRpb25TdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1Jlc2VydmVkS2V5c1ZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEKQEAgLTE5LDkgKzE5LDkgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb247CiAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGFyYW1ldGVyaXppbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5QYXJhbWV0ZXJpemluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkFkZEVkZ2VTdGFydFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5BZGRFZGdlU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkFkZFZlcnRleFN0YXJ0U3RlcDsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1N0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1N0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YQppbmRleCA1MGZhYTI1Li5mYzMzYzY5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9TdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vU3RhbmRhcmRWZXJpZmljYXRpb25TdHJhdGVneS5qYXZhCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlJlYWRXcml0aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLk5vbmVTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlByb2ZpbGVTaWRlRWZmZWN0U3RlcDsKQEAgLTM5LDYgKzQwLDcgQEAKIAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGZpbmFsIGNsYXNzIFN0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5PFRyYXZlcnNhbFN0cmF0ZWd5LlZlcmlmaWNhdGlvblN0cmF0ZWd5PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5LlZlcmlmaWNhdGlvblN0cmF0ZWd5IHsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFmOWRiZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5tYXAuUmVmZXJlbmNlTWFwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkxhYmVsbGVkQ291bnRlcjsKKworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TdGFjazsKKworcHVibGljIGNsYXNzIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IGV4dGVuZHMgQl9MUF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI8VD4geworCisgICAgcHJvdGVjdGVkIFN0YWNrPExhYmVsbGVkQ291bnRlcj4gbmVzdGVkTG9vcHM7CisgICAgcHJvdGVjdGVkIFJlZmVyZW5jZU1hcCBsb29wTmFtZXMgPSBudWxsOworCisgICAgcHJvdGVjdGVkIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyKCkgeworICAgIH0KKworICAgIHB1YmxpYyBCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcihmaW5hbCBUIHQsIGZpbmFsIFN0ZXA8VCwgPz4gc3RlcCwgZmluYWwgbG9uZyBpbml0aWFsQnVsaykgeworICAgICAgICBzdXBlcih0LCBzdGVwLCBpbml0aWFsQnVsayk7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICB0aGlzLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmNvdW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKGxvb3BOYW1lID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gbG9vcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5sb29wTmFtZXMuY29udGFpbnNLZXkobG9vcE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuICgoTGFiZWxsZWRDb3VudGVyKSB0aGlzLmxvb3BOYW1lcy5nZXQobG9vcE5hbWUpKS5jb3VudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMb29wIG5hbWUgbm90IGRlZmluZWQ6ICIgKyBsb29wTmFtZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAodGhpcy5uZXN0ZWRMb29wcy5lbXB0eSgpIHx8ICF0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5oYXNMYWJlbChzdGVwTGFiZWwpKSB7CisgICAgICAgICAgICBmaW5hbCBMYWJlbGxlZENvdW50ZXIgbGMgPSBuZXcgTGFiZWxsZWRDb3VudGVyKHN0ZXBMYWJlbCwgKHNob3J0KSAwKTsKKyAgICAgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucHVzaChsYyk7CisgICAgICAgICAgICBpZiAobG9vcE5hbWUgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICB0aGlzLmxvb3BOYW1lcy5wdXQobG9vcE5hbWUsIGxjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaW5jcmVtZW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVzZXRMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wb3AoKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxSPiBBZG1pbjxSPiBzcGxpdChmaW5hbCBSIHIsIGZpbmFsIFN0ZXA8VCwgUj4gc3RlcCkgeworICAgICAgICBmaW5hbCBCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcjxSPiBjbG9uZSA9IChCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcjxSPikgc3VwZXIuc3BsaXQociwgc3RlcCk7CisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBBZG1pbjxUPiBzcGxpdCgpIHsKKyAgICAgICAgZmluYWwgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI8VD4gY2xvbmUgPSAoQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI8VD4pIHN1cGVyLnNwbGl0KCk7CisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG1lcmdlKGZpbmFsIEFkbWluPD8+IG90aGVyKSB7CisgICAgICAgIHN1cGVyLm1lcmdlKG90aGVyKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG8pKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI8Pz4gdGhhdCA9IChCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcjw/PikgbzsKKworICAgICAgICBpZiAoIXRoaXMubmVzdGVkTG9vcHMuZXF1YWxzKHRoYXQubmVzdGVkTG9vcHMpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLmxvb3BOYW1lcyAhPSBudWxsID8gdGhpcy5sb29wTmFtZXMuZXF1YWxzKHRoYXQubG9vcE5hbWVzKSA6IHRoYXQubG9vcE5hbWVzID09IG51bGw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgdGhpcy5uZXN0ZWRMb29wcy5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsID8gdGhpcy5sb29wTmFtZXMuaGFzaENvZGUoKSA6IDApOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkzOTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpAQCAtMCwwICsxLDU4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXJHZW5lcmF0b3I7CisKK2ltcG9ydCBqYXZhLnV0aWwuRW51bVNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgZmluYWwgY2xhc3MgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW1wbGVtZW50cyBUcmF2ZXJzZXJHZW5lcmF0b3IgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgSU5TVEFOQ0UgPSBuZXcgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gUkVRVUlSRU1FTlRTID0gRW51bVNldC5vZigKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LkJVTEssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5MQUJFTEVEX1BBVEgsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5ORVNURURfTE9PUCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk9CSkVDVCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlBBVEgsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TQUNLLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0lERV9FRkZFQ1RTLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0lOR0xFX0xPT1ApOworCisgICAgcHJpdmF0ZSBCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcigpIHsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPFM+IFRyYXZlcnNlci5BZG1pbjxTPiBnZW5lcmF0ZShmaW5hbCBTIHN0YXJ0LCBmaW5hbCBTdGVwPFMsID8+IHN0YXJ0U3RlcCwgZmluYWwgbG9uZyBpbml0aWFsQnVsaykgeworICAgICAgICByZXR1cm4gbmV3IEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyPD4oc3RhcnQsIHN0YXJ0U3RlcCwgaW5pdGlhbEJ1bGspOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IGdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gUkVRVUlSRU1FTlRTOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5Mjg3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5SZWZlcmVuY2VNYXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuTGFiZWxsZWRDb3VudGVyOworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TdGFjazsKKworcHVibGljIGNsYXNzIEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxUPiBleHRlbmRzIEJfTFBfT19TX1NFX1NMX1RyYXZlcnNlcjxUPiB7CisKKyAgICBwcm90ZWN0ZWQgU3RhY2s8TGFiZWxsZWRDb3VudGVyPiBuZXN0ZWRMb29wczsKKyAgICBwcm90ZWN0ZWQgUmVmZXJlbmNlTWFwIGxvb3BOYW1lcyA9IG51bGw7CisKKyAgICBwcm90ZWN0ZWQgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyKCkgeworICAgIH0KKworICAgIHB1YmxpYyBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXIoZmluYWwgVCB0LCBmaW5hbCBTdGVwPFQsID8+IHN0ZXAsIGZpbmFsIGxvbmcgaW5pdGlhbEJ1bGspIHsKKyAgICAgICAgc3VwZXIodCwgc3RlcCwgaW5pdGlhbEJ1bGspOworICAgICAgICB0aGlzLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgdGhpcy5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5jb3VudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIGlmIChsb29wTmFtZSA9PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGxvb3BzKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMubG9vcE5hbWVzLmNvbnRhaW5zS2V5KGxvb3BOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAoKExhYmVsbGVkQ291bnRlcikgdGhpcy5sb29wTmFtZXMuZ2V0KGxvb3BOYW1lKSkuY291bnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTG9vcCBuYW1lIG5vdCBkZWZpbmVkOiAiICsgbG9vcE5hbWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpc2VMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKHRoaXMubmVzdGVkTG9vcHMuZW1wdHkoKSB8fCAhdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaGFzTGFiZWwoc3RlcExhYmVsKSkgeworICAgICAgICAgICAgZmluYWwgTGFiZWxsZWRDb3VudGVyIGxjID0gbmV3IExhYmVsbGVkQ291bnRlcihzdGVwTGFiZWwsIChzaG9ydCkgMCk7CisgICAgICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnB1c2gobGMpOworICAgICAgICAgICAgaWYgKGxvb3BOYW1lICE9IG51bGwpCisgICAgICAgICAgICAgICAgdGhpcy5sb29wTmFtZXMucHV0KGxvb3BOYW1lLCBsYyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmluY3JlbWVudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlc2V0TG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucG9wKCk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uj4gQWRtaW48Uj4gc3BsaXQoZmluYWwgUiByLCBmaW5hbCBTdGVwPFQsIFI+IHN0ZXApIHsKKyAgICAgICAgZmluYWwgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPFI+IGNsb25lID0gKEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxSPikgc3VwZXIuc3BsaXQociwgc3RlcCk7CisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBBZG1pbjxUPiBzcGxpdCgpIHsKKyAgICAgICAgZmluYWwgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IGNsb25lID0gKEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxUPikgc3VwZXIuc3BsaXQoKTsKKyAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICBmb3IoTGFiZWxsZWRDb3VudGVyIGxjIDogdGhpcy5uZXN0ZWRMb29wcykKKyAgICAgICAgICAgIGNsb25lLm5lc3RlZExvb3BzLnB1c2goKExhYmVsbGVkQ291bnRlcikgbGMuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKHRoaXMubG9vcE5hbWVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgbG9vcE5hbWVzSXRlcmF0b3IgPSB0aGlzLmxvb3BOYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAobG9vcE5hbWVzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVmZXJlbmNlTWFwLkVudHJ5IHBhaXIgPSAoUmVmZXJlbmNlTWFwLkVudHJ5KSBsb29wTmFtZXNJdGVyYXRvci5uZXh0KCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaWR4ID0gdGhpcy5uZXN0ZWRMb29wcy5pbmRleE9mKHBhaXIuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzLnB1dChwYWlyLmdldEtleSgpLCBjbG9uZS5uZXN0ZWRMb29wcy5nZXQoaWR4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbWVyZ2UoZmluYWwgQWRtaW48Pz4gb3RoZXIpIHsKKyAgICAgICAgc3VwZXIubWVyZ2Uob3RoZXIpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gbykgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG8pKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPD8+IHRoYXQgPSAoQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPD8+KSBvOworCisgICAgICAgIGlmICghdGhpcy5uZXN0ZWRMb29wcy5lcXVhbHModGhhdC5uZXN0ZWRMb29wcykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5lcXVhbHModGhhdC5sb29wTmFtZXMpIDogdGhhdC5sb29wTmFtZXMgPT0gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyB0aGlzLm5lc3RlZExvb3BzLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgKHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5oYXNoQ29kZSgpIDogMCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwYzQ2NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlckdlbmVyYXRvcjsKKworaW1wb3J0IGphdmEudXRpbC5FbnVtU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW1wbGVtZW50cyBUcmF2ZXJzZXJHZW5lcmF0b3IgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIElOU1RBTkNFID0gbmV3IEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcigpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBSRVFVSVJFTUVOVFMgPSBFbnVtU2V0Lm9mKAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuQlVMSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LkxBQkVMRURfUEFUSCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk5FU1RFRF9MT09QLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuT0JKRUNULAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0FDSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJREVfRUZGRUNUUywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJTkdMRV9MT09QLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuTkVTVEVEX0xPT1ApOworCisgICAgcHJpdmF0ZSBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxTPiBUcmF2ZXJzZXIuQWRtaW48Uz4gZ2VuZXJhdGUoZmluYWwgUyBzdGFydCwgZmluYWwgU3RlcDxTLCA/PiBzdGFydFN0ZXAsIGZpbmFsIGxvbmcgaW5pdGlhbEJ1bGspIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8PihzdGFydCwgc3RhcnRTdGVwLCBpbml0aWFsQnVsayk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKSB7CisgICAgICAgIHJldHVybiBSRVFVSVJFTUVOVFM7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTkxfT19TX1NFX1NMX1RyYXZlcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZWQxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLk1hcEl0ZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5tYXAuUmVmZXJlbmNlTWFwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkxhYmVsbGVkQ291bnRlcjsKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CisKK3B1YmxpYyBjbGFzcyBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8VD4gZXh0ZW5kcyBCX09fU19TRV9TTF9UcmF2ZXJzZXI8VD4geworCisgICAgcHJvdGVjdGVkIFN0YWNrPExhYmVsbGVkQ291bnRlcj4gbmVzdGVkTG9vcHM7CisgICAgcHJvdGVjdGVkIFJlZmVyZW5jZU1hcCBsb29wTmFtZXMgPSBudWxsOworCisgICAgcHJvdGVjdGVkIEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyKGZpbmFsIFQgdCwgZmluYWwgU3RlcDxULCA/PiBzdGVwLCBmaW5hbCBsb25nIGluaXRpYWxCdWxrKSB7CisgICAgICAgIHN1cGVyKHQsIHN0ZXAsIGluaXRpYWxCdWxrKTsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIHRoaXMubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuY291bnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAobG9vcE5hbWUgPT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBsb29wcygpOworICAgICAgICBlbHNlIGlmICh0aGlzLmxvb3BOYW1lcy5jb250YWluc0tleShsb29wTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gKChMYWJlbGxlZENvdW50ZXIpIHRoaXMubG9vcE5hbWVzLmdldChsb29wTmFtZSkpLmNvdW50KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxvb3AgbmFtZSBub3QgZGVmaW5lZDogIiArIGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXNlTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCwgZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIGlmICh0aGlzLm5lc3RlZExvb3BzLmVtcHR5KCkgfHwgIXRoaXMubmVzdGVkTG9vcHMucGVlaygpLmhhc0xhYmVsKHN0ZXBMYWJlbCkpIHsKKyAgICAgICAgICAgIGZpbmFsIExhYmVsbGVkQ291bnRlciBsYyA9IG5ldyBMYWJlbGxlZENvdW50ZXIoc3RlcExhYmVsLCAoc2hvcnQpIDApOworICAgICAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wdXNoKGxjKTsKKyAgICAgICAgICAgIGlmIChsb29wTmFtZSAhPSBudWxsKQorICAgICAgICAgICAgICAgIHRoaXMubG9vcE5hbWVzLnB1dChsb29wTmFtZSwgbGMpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCkgeworICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5pbmNyZW1lbnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCByZXNldExvb3BzKCkgeworICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnBvcCgpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPFI+IEFkbWluPFI+IHNwbGl0KGZpbmFsIFIgciwgZmluYWwgU3RlcDxULCBSPiBzdGVwKSB7CisgICAgICAgIGZpbmFsIEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxSPiBjbG9uZSA9IChCX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8Uj4pIHN1cGVyLnNwbGl0KHIsIHN0ZXApOworCisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBBZG1pbjxUPiBzcGxpdCgpIHsKKyAgICAgICAgZmluYWwgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IGNsb25lID0gKEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxUPikgc3VwZXIuc3BsaXQoKTsKKworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBtZXJnZShmaW5hbCBBZG1pbjw/PiBvdGhlcikgeworICAgICAgICBzdXBlci5tZXJnZShvdGhlcik7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlcikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFzdXBlci5lcXVhbHMobykpIHJldHVybiBmYWxzZTsKKworICAgICAgICBmaW5hbCBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8Pz4gdGhhdCA9IChCX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8Pz4pIG87CisKKyAgICAgICAgaWYgKCF0aGlzLm5lc3RlZExvb3BzLmVxdWFscyh0aGF0Lm5lc3RlZExvb3BzKSkgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmVxdWFscyh0aGF0Lmxvb3BOYW1lcykgOiB0aGF0Lmxvb3BOYW1lcyA9PSBudWxsOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIHRoaXMubmVzdGVkTG9vcHMuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmhhc2hDb2RlKCkgOiAwKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGYyN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyR2VuZXJhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkVudW1TZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGZpbmFsIGNsYXNzIEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBpbXBsZW1lbnRzIFRyYXZlcnNlckdlbmVyYXRvciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgSU5TVEFOQ0UgPSBuZXcgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IFJFUVVJUkVNRU5UUyA9IEVudW1TZXQub2YoCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5CVUxLLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuTkVTVEVEX0xPT1AsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5PQkpFQ1QsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TQUNLLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0lERV9FRkZFQ1RTLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0lOR0xFX0xPT1ApOworCisgICAgcHJpdmF0ZSBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxTPiBUcmF2ZXJzZXIuQWRtaW48Uz4gZ2VuZXJhdGUoZmluYWwgUyBzdGFydCwgZmluYWwgU3RlcDxTLCA/PiBzdGFydFN0ZXAsIGZpbmFsIGxvbmcgaW5pdGlhbEJ1bGspIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8PihzdGFydCwgc3RhcnRTdGVwLCBpbml0aWFsQnVsayk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKSB7CisgICAgICAgIHJldHVybiBSRVFVSVJFTUVOVFM7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfT19TX1NFX1NMX1RyYXZlcnNlci5qYXZhCmluZGV4IDA0MDljZDcuLjMzYzU1MjAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfT19TX1NFX1NMX1RyYXZlcnNlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfT19TX1NFX1NMX1RyYXZlcnNlci5qYXZhCkBAIC0xOCwxMiArMTgsMTEgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKIAotCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU2lkZUVmZmVjdHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiAKLWltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworaW1wb3J0IGphdmEudXRpbC5PYmplY3RzOwogCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQpAQCAtMzIsNiArMzEsNyBAQAogCiAgICAgcHJvdGVjdGVkIE9iamVjdCBzYWNrID0gbnVsbDsKICAgICBwcm90ZWN0ZWQgc2hvcnQgbG9vcHMgPSAwOyAgLy8gYW4gb3B0aW1pemF0aW9uIGhhY2sgdG8gdXNlIGEgc2hvcnQgaW50ZXJuYWxseSB0byBzYXZlIGJpdHMgOikKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGxvb3BOYW1lID0gbnVsbDsKICAgICBwcm90ZWN0ZWQgdHJhbnNpZW50IFRyYXZlcnNhbFNpZGVFZmZlY3RzIHNpZGVFZmZlY3RzOwogCiAgICAgcHJvdGVjdGVkIEJfT19TX1NFX1NMX1RyYXZlcnNlcigpIHsKQEAgLTY0LDcgKzY0LDIwIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5jckxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwpIHsKKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAobG9vcE5hbWUgPT0gbnVsbCB8fCB0aGlzLmxvb3BOYW1lICE9IG51bGwgJiYgdGhpcy5sb29wTmFtZS5lcXVhbHMobG9vcE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9vcHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxvb3AgbmFtZSBub3QgZGVmaW5lZDogIiArIGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXNlTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCAsIGZpbmFsIFN0cmluZyBsb29wTmFtZSl7CisgICAgICAgIHRoaXMubG9vcE5hbWUgPSBsb29wTmFtZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CiAgICAgICAgIHRoaXMubG9vcHMrKzsKICAgICB9CiAKQEAgLTgwLDcgKzkzLDYgQEAKICAgICAgICAgcmV0dXJuIHRoaXMuc2lkZUVmZmVjdHM7CiAgICAgfQogCi0KICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBzZXRTaWRlRWZmZWN0cyhmaW5hbCBUcmF2ZXJzYWxTaWRlRWZmZWN0cyBzaWRlRWZmZWN0cykgewogICAgICAgICB0aGlzLnNpZGVFZmZlY3RzID0gc2lkZUVmZmVjdHM7CkBAIC0xMTksMTEgKzEzMSwxMyBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgcmV0dXJuIGNhcnJpZXNVbm1lcmdlYWJsZVNhY2soKSA/IFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHRoaXMpIDogKHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLmxvb3BzKTsKKyAgICAgICAgcmV0dXJuIGNhcnJpZXNVbm1lcmdlYWJsZVNhY2soKSA/IFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHRoaXMpIDogKHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLmxvb3BzIF4gT2JqZWN0cy5oYXNoQ29kZSh0aGlzLmxvb3BOYW1lKSk7CiAgICAgfQogCiAgICAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gZXF1YWxzKGZpbmFsIEJfT19TX1NFX1NMX1RyYXZlcnNlciBvdGhlcikgewotICAgICAgICByZXR1cm4gc3VwZXIuZXF1YWxzKG90aGVyKSAmJiBvdGhlci5sb29wcyA9PSB0aGlzLmxvb3BzICYmICFjYXJyaWVzVW5tZXJnZWFibGVTYWNrKCk7CisgICAgICAgIHJldHVybiBzdXBlci5lcXVhbHMob3RoZXIpICYmIG90aGVyLmxvb3BzID09IHRoaXMubG9vcHMKKyAgICAgICAgICAgICAgICAmJiAodGhpcy5sb29wTmFtZSAhPSBudWxsID8gdGhpcy5sb29wTmFtZS5lcXVhbHMob3RoZXIubG9vcE5hbWUpIDogb3RoZXIubG9vcE5hbWUgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAmJiAhY2Fycmllc1VubWVyZ2VhYmxlU2FjaygpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9MUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2IxZGQzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5SZWZlcmVuY2VNYXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuTGFiZWxsZWRDb3VudGVyOworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TdGFjazsKKworcHVibGljIGNsYXNzIExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcjxUPiBleHRlbmRzIExQX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcjxUPiB7CisKKyAgICBwcm90ZWN0ZWQgU3RhY2s8TGFiZWxsZWRDb3VudGVyPiBuZXN0ZWRMb29wczsKKyAgICBwcm90ZWN0ZWQgUmVmZXJlbmNlTWFwIGxvb3BOYW1lcyA9IG51bGw7CisKKyAgICBwcm90ZWN0ZWQgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyKCkgeworICAgIH0KKworICAgIHB1YmxpYyBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIoZmluYWwgVCB0LCBmaW5hbCBTdGVwPFQsID8+IHN0ZXApIHsKKyAgICAgICAgc3VwZXIodCwgc3RlcCk7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICB0aGlzLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmNvdW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKGxvb3BOYW1lID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gbG9vcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5sb29wTmFtZXMuY29udGFpbnNLZXkobG9vcE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuICgoTGFiZWxsZWRDb3VudGVyKSB0aGlzLmxvb3BOYW1lcy5nZXQobG9vcE5hbWUpKS5jb3VudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMb29wIG5hbWUgbm90IGRlZmluZWQ6ICIgKyBsb29wTmFtZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAodGhpcy5uZXN0ZWRMb29wcy5lbXB0eSgpIHx8ICF0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5oYXNMYWJlbChzdGVwTGFiZWwpKSB7CisgICAgICAgICAgICBmaW5hbCBMYWJlbGxlZENvdW50ZXIgbGMgPSBuZXcgTGFiZWxsZWRDb3VudGVyKHN0ZXBMYWJlbCwgKHNob3J0KSAwKTsKKyAgICAgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucHVzaChsYyk7CisgICAgICAgICAgICBpZiAobG9vcE5hbWUgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICB0aGlzLmxvb3BOYW1lcy5wdXQobG9vcE5hbWUsIGxjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaW5jcmVtZW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVzZXRMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wb3AoKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxSPiBBZG1pbjxSPiBzcGxpdChmaW5hbCBSIHIsIGZpbmFsIFN0ZXA8VCwgUj4gc3RlcCkgeworICAgICAgICBmaW5hbCBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI8Uj4gY2xvbmUgPSAoTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyPFI+KSBzdXBlci5zcGxpdChyLCBzdGVwKTsKKyAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICBmb3IoTGFiZWxsZWRDb3VudGVyIGxjIDogdGhpcy5uZXN0ZWRMb29wcykKKyAgICAgICAgICAgIGNsb25lLm5lc3RlZExvb3BzLnB1c2goKExhYmVsbGVkQ291bnRlcikgbGMuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKHRoaXMubG9vcE5hbWVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgbG9vcE5hbWVzSXRlcmF0b3IgPSB0aGlzLmxvb3BOYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAobG9vcE5hbWVzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVmZXJlbmNlTWFwLkVudHJ5IHBhaXIgPSAoUmVmZXJlbmNlTWFwLkVudHJ5KSBsb29wTmFtZXNJdGVyYXRvci5uZXh0KCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaWR4ID0gdGhpcy5uZXN0ZWRMb29wcy5pbmRleE9mKHBhaXIuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzLnB1dChwYWlyLmdldEtleSgpLCBjbG9uZS5uZXN0ZWRMb29wcy5nZXQoaWR4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEFkbWluPFQ+IHNwbGl0KCkgeworICAgICAgICBmaW5hbCBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI8VD4gY2xvbmUgPSAoTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyPFQ+KSBzdXBlci5zcGxpdCgpOworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBtZXJnZShmaW5hbCBBZG1pbjw/PiBvdGhlcikgeworICAgICAgICBzdXBlci5tZXJnZShvdGhlcik7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFzdXBlci5lcXVhbHMobykpIHJldHVybiBmYWxzZTsKKworICAgICAgICBmaW5hbCBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI8Pz4gdGhhdCA9IChMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI8Pz4pIG87CisKKyAgICAgICAgaWYgKCF0aGlzLm5lc3RlZExvb3BzLmVxdWFscyh0aGF0Lm5lc3RlZExvb3BzKSkgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmVxdWFscyh0aGF0Lmxvb3BOYW1lcykgOiB0aGF0Lmxvb3BOYW1lcyA9PSBudWxsOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIHRoaXMubmVzdGVkTG9vcHMuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmhhc2hDb2RlKCkgOiAwKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9MUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGViMmNhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXJHZW5lcmF0b3I7CisKK2ltcG9ydCBqYXZhLnV0aWwuRW51bVNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgZmluYWwgY2xhc3MgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGltcGxlbWVudHMgVHJhdmVyc2VyR2VuZXJhdG9yIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gUkVRVUlSRU1FTlRTID0gRW51bVNldC5vZigKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LkxBQkVMRURfUEFUSCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk5FU1RFRF9MT09QLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuT0JKRUNULAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuT05FX0JVTEssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5QQVRILAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0FDSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJREVfRUZGRUNUUywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJTkdMRV9MT09QKTsKKworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIElOU1RBTkNFID0gbmV3IExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcigpOworCisgICAgcHJpdmF0ZSBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxTPiBUcmF2ZXJzZXIuQWRtaW48Uz4gZ2VuZXJhdGUoZmluYWwgUyBzdGFydCwgZmluYWwgU3RlcDxTLCA/PiBzdGFydFN0ZXAsIGZpbmFsIGxvbmcgaW5pdGlhbEJ1bGspIHsKKyAgICAgICAgcmV0dXJuIG5ldyBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI8PihzdGFydCwgc3RhcnRTdGVwKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRQcm92aWRlZFJlcXVpcmVtZW50cygpIHsKKyAgICAgICAgcmV0dXJuIFJFUVVJUkVNRU5UUzsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBpbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9MUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9MUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTljZDdmYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLlJlZmVyZW5jZU1hcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5MYWJlbGxlZENvdW50ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlN0YWNrOworCitwdWJsaWMgY2xhc3MgTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjxUPiBleHRlbmRzIExQX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8VD4geworCisgICAgcHJvdGVjdGVkIFN0YWNrPExhYmVsbGVkQ291bnRlcj4gbmVzdGVkTG9vcHM7CisgICAgcHJvdGVjdGVkIFJlZmVyZW5jZU1hcCBsb29wTmFtZXMgPSBudWxsOworCisgICAgcHJvdGVjdGVkIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIoKSB7CisgICAgfQorCisgICAgcHVibGljIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIoZmluYWwgVCB0LCBmaW5hbCBTdGVwPFQsID8+IHN0ZXApIHsKKyAgICAgICAgc3VwZXIodCwgc3RlcCk7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICB0aGlzLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmNvdW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKGxvb3BOYW1lID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gbG9vcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5sb29wTmFtZXMuY29udGFpbnNLZXkobG9vcE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuICgoTGFiZWxsZWRDb3VudGVyKSB0aGlzLmxvb3BOYW1lcy5nZXQobG9vcE5hbWUpKS5jb3VudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMb29wIG5hbWUgbm90IGRlZmluZWQ6ICIgKyBsb29wTmFtZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAodGhpcy5uZXN0ZWRMb29wcy5lbXB0eSgpIHx8ICF0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5oYXNMYWJlbChzdGVwTGFiZWwpKSB7CisgICAgICAgICAgICBmaW5hbCBMYWJlbGxlZENvdW50ZXIgbGMgPSBuZXcgTGFiZWxsZWRDb3VudGVyKHN0ZXBMYWJlbCwgKHNob3J0KSAwKTsKKyAgICAgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucHVzaChsYyk7CisgICAgICAgICAgICBpZiAobG9vcE5hbWUgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICB0aGlzLmxvb3BOYW1lcy5wdXQobG9vcE5hbWUsIGxjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaW5jcmVtZW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVzZXRMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wb3AoKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxSPiBBZG1pbjxSPiBzcGxpdChmaW5hbCBSIHIsIGZpbmFsIFN0ZXA8VCwgUj4gc3RlcCkgeworICAgICAgICBmaW5hbCBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPFI+IGNsb25lID0gKExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8Uj4pIHN1cGVyLnNwbGl0KHIsIHN0ZXApOworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQWRtaW48VD4gc3BsaXQoKSB7CisgICAgICAgIGZpbmFsIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8VD4gY2xvbmUgPSAoTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjxUPikgc3VwZXIuc3BsaXQoKTsKKyAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICBmb3IoTGFiZWxsZWRDb3VudGVyIGxjIDogdGhpcy5uZXN0ZWRMb29wcykKKyAgICAgICAgICAgIGNsb25lLm5lc3RlZExvb3BzLnB1c2goKExhYmVsbGVkQ291bnRlcikgbGMuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKHRoaXMubG9vcE5hbWVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgbG9vcE5hbWVzSXRlcmF0b3IgPSB0aGlzLmxvb3BOYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAobG9vcE5hbWVzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVmZXJlbmNlTWFwLkVudHJ5IHBhaXIgPSAoUmVmZXJlbmNlTWFwLkVudHJ5KSBsb29wTmFtZXNJdGVyYXRvci5uZXh0KCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaWR4ID0gdGhpcy5uZXN0ZWRMb29wcy5pbmRleE9mKHBhaXIuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzLnB1dChwYWlyLmdldEtleSgpLCBjbG9uZS5uZXN0ZWRMb29wcy5nZXQoaWR4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbWVyZ2UoZmluYWwgQWRtaW48Pz4gb3RoZXIpIHsKKyAgICAgICAgc3VwZXIubWVyZ2Uob3RoZXIpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gbykgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXN1cGVyLmVxdWFscyhvKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8Pz4gdGhhdCA9IChMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPD8+KSBvOworCisgICAgICAgIGlmICghdGhpcy5uZXN0ZWRMb29wcy5lcXVhbHModGhhdC5uZXN0ZWRMb29wcykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5lcXVhbHModGhhdC5sb29wTmFtZXMpIDogdGhhdC5sb29wTmFtZXMgPT0gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyB0aGlzLm5lc3RlZExvb3BzLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgKHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5oYXNoQ29kZSgpIDogMCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjQ2NmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyR2VuZXJhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkVudW1TZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGZpbmFsIGNsYXNzIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW1wbGVtZW50cyBUcmF2ZXJzZXJHZW5lcmF0b3IgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBSRVFVSVJFTUVOVFMgPSBFbnVtU2V0Lm9mKAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuTEFCRUxFRF9QQVRILAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuTkVTVEVEX0xPT1AsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5PQkpFQ1QsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5PTkVfQlVMSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNBQ0ssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSURFX0VGRkVDVFMsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSU5HTEVfTE9PUCk7CisKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgSU5TVEFOQ0UgPSBuZXcgTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcigpOworCisgICAgcHJpdmF0ZSBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uz4gVHJhdmVyc2VyLkFkbWluPFM+IGdlbmVyYXRlKGZpbmFsIFMgc3RhcnQsIGZpbmFsIFN0ZXA8UywgPz4gc3RhcnRTdGVwLCBmaW5hbCBsb25nIGluaXRpYWxCdWxrKSB7CisgICAgICAgIHJldHVybiBuZXcgTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjw+KHN0YXJ0LCBzdGFydFN0ZXApOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IGdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gUkVRVUlSRU1FTlRTOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBpbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJmNDNmZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLlJlZmVyZW5jZU1hcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5MYWJlbGxlZENvdW50ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlN0YWNrOworCitwdWJsaWMgY2xhc3MgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjxUPiBleHRlbmRzIE9fT0JfU19TRV9TTF9UcmF2ZXJzZXI8VD4geworCisgICAgcHJvdGVjdGVkIFN0YWNrPExhYmVsbGVkQ291bnRlcj4gbmVzdGVkTG9vcHM7CisgICAgcHJvdGVjdGVkIFJlZmVyZW5jZU1hcCBsb29wTmFtZXM7CisKKyAgICBwcm90ZWN0ZWQgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcihmaW5hbCBUIHQsIGZpbmFsIFN0ZXA8VCwgPz4gc3RlcCkgeworICAgICAgICBzdXBlcih0LCBzdGVwKTsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIHRoaXMubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuY291bnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAobG9vcE5hbWUgPT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBsb29wcygpOworICAgICAgICBlbHNlIGlmICh0aGlzLmxvb3BOYW1lcy5jb250YWluc0tleShsb29wTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gKChMYWJlbGxlZENvdW50ZXIpIHRoaXMubG9vcE5hbWVzLmdldChsb29wTmFtZSkpLmNvdW50KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxvb3AgbmFtZSBub3QgZGVmaW5lZDogIiArIGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXNlTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCwgZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIGlmICh0aGlzLm5lc3RlZExvb3BzLmVtcHR5KCkgfHwgIXRoaXMubmVzdGVkTG9vcHMucGVlaygpLmhhc0xhYmVsKHN0ZXBMYWJlbCkpIHsKKyAgICAgICAgICAgIGZpbmFsIExhYmVsbGVkQ291bnRlciBsYyA9IG5ldyBMYWJlbGxlZENvdW50ZXIoc3RlcExhYmVsLCAoc2hvcnQpIDApOworICAgICAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wdXNoKGxjKTsKKyAgICAgICAgICAgIGlmIChsb29wTmFtZSAhPSBudWxsKQorICAgICAgICAgICAgICAgIHRoaXMubG9vcE5hbWVzLnB1dChsb29wTmFtZSwgbGMpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCkgeworICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5pbmNyZW1lbnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCByZXNldExvb3BzKCkgeworICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnBvcCgpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPFI+IEFkbWluPFI+IHNwbGl0KGZpbmFsIFIgciwgZmluYWwgU3RlcDxULCBSPiBzdGVwKSB7CisgICAgICAgIGZpbmFsIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8Uj4gY2xvbmUgPSAoTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjxSPikgc3VwZXIuc3BsaXQociwgc3RlcCk7CisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBBZG1pbjxUPiBzcGxpdCgpIHsKKyAgICAgICAgZmluYWwgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjxUPiBjbG9uZSA9IChOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPFQ+KSBzdXBlci5zcGxpdCgpOworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBtZXJnZShmaW5hbCBBZG1pbjw/PiBvdGhlcikgeworICAgICAgICBzdXBlci5tZXJnZShvdGhlcik7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG8pKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjw/PiB0aGF0ID0gKE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8Pz4pIG87CisKKyAgICAgICAgaWYgKCF0aGlzLm5lc3RlZExvb3BzLmVxdWFscyh0aGF0Lm5lc3RlZExvb3BzKSkgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmVxdWFscyh0aGF0Lmxvb3BOYW1lcykgOiB0aGF0Lmxvb3BOYW1lcyA9PSBudWxsOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIHRoaXMubmVzdGVkTG9vcHMuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmhhc2hDb2RlKCkgOiAwKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNDEzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXJHZW5lcmF0b3I7CisKK2ltcG9ydCBqYXZhLnV0aWwuRW51bVNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgZmluYWwgY2xhc3MgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBpbXBsZW1lbnRzIFRyYXZlcnNlckdlbmVyYXRvciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IFJFUVVJUkVNRU5UUyA9IEVudW1TZXQub2YoCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5ORVNURURfTE9PUCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk9CSkVDVCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk9ORV9CVUxLLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0FDSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJREVfRUZGRUNUUywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJTkdMRV9MT09QKTsKKworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBJTlNUQU5DRSA9IG5ldyBOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCk7CisKKyAgICBwcml2YXRlIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxTPiBUcmF2ZXJzZXIuQWRtaW48Uz4gZ2VuZXJhdGUoZmluYWwgUyBzdGFydCwgZmluYWwgU3RlcDxTLCA/PiBzdGFydFN0ZXAsIGZpbmFsIGxvbmcgaW5pdGlhbEJ1bGspIHsKKyAgICAgICAgcmV0dXJuIG5ldyBOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPD4oc3RhcnQsIHN0YXJ0U3RlcCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKSB7CisgICAgICAgIHJldHVybiBSRVFVSVJFTUVOVFM7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuamF2YQppbmRleCBkODFhNTY0Li42MDFiY2RhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvT19PQl9TX1NFX1NMX1RyYXZlcnNlci5qYXZhCkBAIC0yMyw2ICsyMyw4IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTaWRlRWZmZWN0czsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIAoraW1wb3J0IGphdmEudXRpbC5PYmplY3RzOworCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCkBAIC0zMCw2ICszMiw3IEBACiAKICAgICBwcm90ZWN0ZWQgT2JqZWN0IHNhY2sgPSBudWxsOwogICAgIHByb3RlY3RlZCBzaG9ydCBsb29wcyA9IDA7ICAvLyBhbiBvcHRpbWl6YXRpb24gaGFjayB0byB1c2UgYSBzaG9ydCBpbnRlcm5hbGx5IHRvIHNhdmUgYml0cyA6KQorICAgIHByb3RlY3RlZCBTdHJpbmcgbG9vcE5hbWUgPSBudWxsOwogICAgIHByb3RlY3RlZCB0cmFuc2llbnQgVHJhdmVyc2FsU2lkZUVmZmVjdHMgc2lkZUVmZmVjdHM7CiAgICAgcHJvdGVjdGVkIFN0cmluZyBmdXR1cmUgPSBIQUxUOwogICAgIHByb3RlY3RlZCBsb25nIGJ1bGsgPSAxTDsKQEAgLTc0LDcgKzc3LDIwIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5jckxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwpIHsKKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAobG9vcE5hbWUgPT0gbnVsbCB8fCB0aGlzLmxvb3BOYW1lICE9IG51bGwgJiYgdGhpcy5sb29wTmFtZS5lcXVhbHMobG9vcE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9vcHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxvb3AgbmFtZSBub3QgZGVmaW5lZDogIiArIGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXNlTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCAsIGZpbmFsIFN0cmluZyBsb29wTmFtZSl7CisgICAgICAgIHRoaXMubG9vcE5hbWUgPSBsb29wTmFtZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CiAgICAgICAgIHRoaXMubG9vcHMrKzsKICAgICB9CiAKQEAgLTE0MCwxMyArMTU2LDE1IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICByZXR1cm4gY2Fycmllc1VubWVyZ2VhYmxlU2FjaygpID8gU3lzdGVtLmlkZW50aXR5SGFzaENvZGUodGhpcykgOiAoc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMubG9vcHMpOworICAgICAgICByZXR1cm4gY2Fycmllc1VubWVyZ2VhYmxlU2FjaygpID8gU3lzdGVtLmlkZW50aXR5SGFzaENvZGUodGhpcykgOiAoc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMubG9vcHMgXiBPYmplY3RzLmhhc2hDb2RlKHRoaXMubG9vcE5hbWUpKTsKICAgICB9CiAKICAgICBwcm90ZWN0ZWQgIGZpbmFsIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9fT0JfU19TRV9TTF9UcmF2ZXJzZXIgb3RoZXIpIHsKLSAgICAgICAgcmV0dXJuIHN1cGVyLmVxdWFscyhvdGhlcikgJiYgb3RoZXIubG9vcHMgPT0gdGhpcy5sb29wcyAmJiBvdGhlci5mdXR1cmUuZXF1YWxzKHRoaXMuZnV0dXJlKSAmJgotICAgICAgICAgICAgICAgICFjYXJyaWVzVW5tZXJnZWFibGVTYWNrKCk7CisgICAgICAgIHJldHVybiBzdXBlci5lcXVhbHMob3RoZXIpICYmIG90aGVyLmxvb3BzID09IHRoaXMubG9vcHMgJiYgb3RoZXIuZnV0dXJlLmVxdWFscyh0aGlzLmZ1dHVyZSkKKyAgICAgICAgICAgICAgICAmJiAodGhpcy5sb29wTmFtZSAhPSBudWxsID8gdGhpcy5sb29wTmFtZS5lcXVhbHMob3RoZXIubG9vcE5hbWUpIDogb3RoZXIubG9vcE5hbWUgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAmJiAhY2Fycmllc1VubWVyZ2VhYmxlU2FjaygpOwogICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBPX09CX1NfU0VfU0xfVHJhdmVyc2VyICYmIHRoaXMuZXF1YWxzKChPX09CX1NfU0VfU0xfVHJhdmVyc2VyKSBvYmplY3QpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvUHJvamVjdGVkVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9Qcm9qZWN0ZWRUcmF2ZXJzZXIuamF2YQppbmRleCA2MDJmODhmLi43Y2VmODQ0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9Qcm9qZWN0ZWRUcmF2ZXJzZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9Qcm9qZWN0ZWRUcmF2ZXJzZXIuamF2YQpAQCAtOTEsOCArOTEsMTMgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCkgewotICAgICAgICB0aGlzLmJhc2VUcmF2ZXJzZXIuaW5jckxvb3BzKHN0ZXBMYWJlbCk7CisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICB0aGlzLmJhc2VUcmF2ZXJzZXIuaW5pdGlhbGlzZUxvb3BzKHN0ZXBMYWJlbCwgbG9vcE5hbWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcygpIHsKKyAgICAgICAgdGhpcy5iYXNlVHJhdmVyc2VyLmluY3JMb29wcygpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTY3LDYgKzE3MiwxMSBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJhc2VUcmF2ZXJzZXIubG9vcHMobG9vcE5hbWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBsb25nIGJ1bGsoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmJhc2VUcmF2ZXJzZXIuYnVsaygpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvQWJzdHJhY3RUcmF2ZXJzZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvQWJzdHJhY3RUcmF2ZXJzZXIuamF2YQppbmRleCA1MGEyMDZiLi42NThiYTRiIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0Fic3RyYWN0VHJhdmVyc2VyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9BYnN0cmFjdFRyYXZlcnNlci5qYXZhCkBAIC05OCw4ICs5OCwxNCBAQAogICAgICAgICB0aGlzLnQgPSB0OwogICAgIH0KIAorCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5jckxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwpIHsKKyAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXNlTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCwgZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CiAKICAgICB9CiAKQEAgLTE3NCw2ICsxODAsMTEgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIlRoaXMgdHJhdmVyc2VyIGRvZXMgbm90IHN1cHBvcnQgbmFtZWQgbG9vcHM6ICIgKyB0aGlzLmdldENsYXNzKCkuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgbG9uZyBidWxrKCkgewogICAgICAgICByZXR1cm4gMWw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9EZWZhdWx0VHJhdmVyc2VyR2VuZXJhdG9yRmFjdG9yeS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9EZWZhdWx0VHJhdmVyc2VyR2VuZXJhdG9yRmFjdG9yeS5qYXZhCmluZGV4IDkzMjc5MWUuLjA1YTNmM2EgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRGVmYXVsdFRyYXZlcnNlckdlbmVyYXRvckZhY3RvcnkuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0RlZmF1bHRUcmF2ZXJzZXJHZW5lcmF0b3JGYWN0b3J5LmphdmEKQEAgLTE4LDE4ICsxOCwyMiBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWw7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlckdlbmVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX09fUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1RyYXZlcnNlckdlbmVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5MUF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLk5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5MUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyR2VuZXJhdG9yRmFjdG9yeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsSGVscGVyOwogCiBpbXBvcnQgamF2YS51dGlsLlNldDsKIApAQCAtNTMsMTEgKzU3LDIwIEBACiAgICAgICAgICAgICBpZiAoT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOwogCisgICAgICAgICAgICBpZiAoTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOworCiAgICAgICAgICAgICBpZiAoTFBfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTFBfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOwogCisgICAgICAgICAgICBpZiAoTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOworCiAgICAgICAgICAgICBpZiAoTFBfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCkuZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKS5jb250YWluc0FsbChyZXF1aXJlbWVudHMpKQogICAgICAgICAgICAgICAgIHJldHVybiBMUF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKKworICAgICAgICAgICAgaWYgKExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoQl9PX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQl9PX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOwpAQCAtNjUsMTEgKzc4LDIwIEBACiAgICAgICAgICAgICBpZiAoQl9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCkuZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKS5jb250YWluc0FsbChyZXF1aXJlbWVudHMpKQogICAgICAgICAgICAgICAgIHJldHVybiBCX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKIAorICAgICAgICAgICAgaWYgKEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCk7CisKICAgICAgICAgICAgIGlmIChCX0xQX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEJfTFBfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOwogCisgICAgICAgICAgICBpZiAoQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCkuZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKS5jb250YWluc0FsbChyZXF1aXJlbWVudHMpKQorICAgICAgICAgICAgICAgIHJldHVybiBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKKwogICAgICAgICAgICAgaWYgKEJfTFBfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCkuZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKS5jb250YWluc0FsbChyZXF1aXJlbWVudHMpKQogICAgICAgICAgICAgICAgIHJldHVybiBCX0xQX09fUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOworCisgICAgICAgICAgICBpZiAoQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJUaGUgcHJvdmlkZWQgdHJhdmVyc2VyIGdlbmVyYXRvciBmYWN0b3J5IGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgdHJhdmVyc2FsOiAiICsgdGhpcy5nZXRDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSArIHJlcXVpcmVtZW50cyk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0VtcHR5VHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0VtcHR5VHJhdmVyc2VyLmphdmEKaW5kZXggN2M5OWNiNS4uM2FlYWZiZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9FbXB0eVRyYXZlcnNlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRW1wdHlUcmF2ZXJzZXIuamF2YQpAQCAtNzAsNyArNzAsMTIgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCkgeworICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpc2VMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbSkgeworCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCkgewogCiAgICAgfQogCkBAIC0xNTAsNiArMTU1LDExIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGxvbmcgYnVsaygpIHsKICAgICAgICAgcmV0dXJuIDBsOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvTGFiZWxsZWRDb3VudGVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0xhYmVsbGVkQ291bnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MDczNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0xhYmVsbGVkQ291bnRlci5qYXZhCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWw7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKKworLyoqCisgKiBDbGFzcyB0byB0cmFjayBhIGNvdW50IGFzc29jaWF0ZWQgd2l0aCBhIExhYmVsCisgKi8KK3B1YmxpYyBjbGFzcyBMYWJlbGxlZENvdW50ZXIgaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIENsb25lYWJsZSB7CisKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBsYWJlbDsKKyAgICBwcml2YXRlIHNob3J0IGNvdW50ID0gMDsKKworICAgIHByb3RlY3RlZCBMYWJlbGxlZENvdW50ZXIoKSB7CisgICAgICAgIGxhYmVsID0gIiI7CisgICAgfQorCisgICAgcHVibGljIExhYmVsbGVkQ291bnRlcihmaW5hbCBTdHJpbmcgbGFiZWwsIGZpbmFsIHNob3J0IGluaXRpYWxDb3VudCkgeworICAgICAgICBpZiAobGFiZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJMYWJlbCBpcyBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsOworICAgICAgICB0aGlzLmNvdW50ID0gaW5pdGlhbENvdW50OworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc0xhYmVsKGZpbmFsIFN0cmluZyBsYWJlbCl7CisgICAgICAgIHJldHVybiB0aGlzLmxhYmVsLmVxdWFscyhsYWJlbCk7CisgICAgfQorCisgICAgcHVibGljIGludCBjb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY291bnQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5jcmVtZW50KCkgeworICAgICAgICB0aGlzLmNvdW50Kys7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBMYWJlbGxlZENvdW50ZXIodGhpcy5sYWJlbCwgdGhpcy5jb3VudCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpeworICAgICAgICByZXR1cm4gIlN0ZXAgTGFiZWw6ICIgKyB0aGlzLmxhYmVsICsgIiBDb3VudGVyOiAiICsgU2hvcnQudG9TdHJpbmcodGhpcy5jb3VudCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgTGFiZWxsZWRDb3VudGVyKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIExhYmVsbGVkQ291bnRlciB0aGF0ID0gKExhYmVsbGVkQ291bnRlcikgbzsKKworICAgICAgICBpZiAoY291bnQgIT0gdGhhdC5jb3VudCkgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbGFiZWwgIT0gbnVsbCA/IGxhYmVsLmVxdWFscyh0aGF0LmxhYmVsKSA6IHRoYXQubGFiZWwgPT0gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gbGFiZWwgIT0gbnVsbCA/IGxhYmVsLmhhc2hDb2RlKCkgOiAwOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIChpbnQpIGNvdW50OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9CeXRlY29kZVV0aWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9CeXRlY29kZVV0aWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmNlYWJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0J5dGVjb2RlVXRpbC5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKKy8qKgorICogVXRpbGl0eSBjbGFzcyBmb3IgcGFyc2luZyB7QGxpbmsgQnl0ZWNvZGV9LgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEJ5dGVjb2RlVXRpbCB7CisKKyAgICBwcml2YXRlIEJ5dGVjb2RlVXRpbCgpIHt9CisKKyAgICAvKioKKyAgICAgKiBQYXJzZXMge0BsaW5rIEJ5dGVjb2RlfSB0byBmaW5kIHtAbGluayBUcmF2ZXJzYWxTdHJhdGVneX0gb2JqZWN0cyBpbiB0aGUgc291cmNlIGluc3RydWN0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIDxBIGV4dGVuZHMgVHJhdmVyc2FsU3RyYXRlZ3k+IEl0ZXJhdG9yPEE+IGZpbmRTdHJhdGVnaWVzKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlLCBmaW5hbCBDbGFzczxBPiBjbGF6eikgeworICAgICAgICByZXR1cm4gSXRlcmF0b3JVdGlscy5tYXAoCisgICAgICAgICAgICAgICAgSXRlcmF0b3JVdGlscy5maWx0ZXIoYnl0ZWNvZGUuZ2V0U291cmNlSW5zdHJ1Y3Rpb25zKCkuaXRlcmF0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgLT4gcy5nZXRPcGVyYXRvcigpLmVxdWFscyhUcmF2ZXJzYWxTb3VyY2UuU3ltYm9scy53aXRoU3RyYXRlZ2llcykgJiYgY2xhenouaXNBc3NpZ25hYmxlRnJvbShzLmdldEFyZ3VtZW50cygpWzBdLmdldENsYXNzKCkpKSwKKyAgICAgICAgICAgICAgICBvcyAtPiAoQSkgb3MuZ2V0QXJndW1lbnRzKClbMF0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9EZWZhdWx0VHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvRGVmYXVsdFRyYXZlcnNhbC5qYXZhCmluZGV4IDRlMDVhZDAuLmI3YmY5NGQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9EZWZhdWx0VHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0RlZmF1bHRUcmF2ZXJzYWwuamF2YQpAQCAtNTQsNiArNTQsNyBAQAogICAgIHByaXZhdGUgU3RlcDw/LCBFPiBmaW5hbEVuZFN0ZXAgPSBFbXB0eVN0ZXAuaW5zdGFuY2UoKTsKICAgICBwcml2YXRlIGZpbmFsIFN0ZXBQb3NpdGlvbiBzdGVwUG9zaXRpb24gPSBuZXcgU3RlcFBvc2l0aW9uKCk7CiAgICAgcHJvdGVjdGVkIHRyYW5zaWVudCBHcmFwaCBncmFwaDsKKyAgICBwcm90ZWN0ZWQgdHJhbnNpZW50IFRyYXZlcnNhbFNvdXJjZSBnOwogICAgIHByb3RlY3RlZCBMaXN0PFN0ZXA+IHN0ZXBzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgLy8gc3RlcHMgd2lsbCBiZSByZXBlYXRlZGx5IHJldHJpZXZlZCBmcm9tIHRoaXMgdHJhdmVyc2FsIHNvIHdyYXAgdGhlbSBvbmNlIGluIGFuIGltbXV0YWJsZSBsaXN0IHRoYXQgY2FuIGJlIHJldXNlZAogICAgIHByb3RlY3RlZCBMaXN0PFN0ZXA+IHVubW9kaWZpYWJsZVN0ZXBzID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChzdGVwcyk7CkBAIC03MCw2ICs3MSw3IEBACiAgICAgICAgIHRoaXMuZ3JhcGggPSBncmFwaDsKICAgICAgICAgdGhpcy5zdHJhdGVnaWVzID0gdHJhdmVyc2FsU3RyYXRlZ2llczsKICAgICAgICAgdGhpcy5ieXRlY29kZSA9IGJ5dGVjb2RlOworICAgICAgICB0aGlzLmcgPSBudWxsOwogICAgIH0KIAogICAgIHB1YmxpYyBEZWZhdWx0VHJhdmVyc2FsKGZpbmFsIEdyYXBoIGdyYXBoKSB7CkBAIC03OCwxMCArODAsMTIgQEAKIAogICAgIHB1YmxpYyBEZWZhdWx0VHJhdmVyc2FsKGZpbmFsIFRyYXZlcnNhbFNvdXJjZSB0cmF2ZXJzYWxTb3VyY2UpIHsKICAgICAgICAgdGhpcyh0cmF2ZXJzYWxTb3VyY2UuZ2V0R3JhcGgoKSwgdHJhdmVyc2FsU291cmNlLmdldFN0cmF0ZWdpZXMoKSwgdHJhdmVyc2FsU291cmNlLmdldEJ5dGVjb2RlKCkpOworICAgICAgICB0aGlzLmcgPSB0cmF2ZXJzYWxTb3VyY2U7CiAgICAgfQogCiAgICAgcHVibGljIERlZmF1bHRUcmF2ZXJzYWwoZmluYWwgVHJhdmVyc2FsU291cmNlIHRyYXZlcnNhbFNvdXJjZSwgZmluYWwgRGVmYXVsdFRyYXZlcnNhbC5BZG1pbjxTLEU+IHRyYXZlcnNhbCkgewogICAgICAgICB0aGlzKHRyYXZlcnNhbFNvdXJjZS5nZXRHcmFwaCgpLCB0cmF2ZXJzYWxTb3VyY2UuZ2V0U3RyYXRlZ2llcygpLCB0cmF2ZXJzYWwuZ2V0Qnl0ZWNvZGUoKSk7CisgICAgICAgIHRoaXMuZyA9IHRyYXZlcnNhbFNvdXJjZTsKICAgICAgICAgc3RlcHMuYWRkQWxsKHRyYXZlcnNhbC5nZXRTdGVwcygpKTsKICAgICB9CiAKQEAgLTMzNyw2ICszNDEsMTEgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgT3B0aW9uYWw8VHJhdmVyc2FsU291cmNlPiBnZXRUcmF2ZXJzYWxTb3VyY2UoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKHRoaXMuZyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgc2V0R3JhcGgoZmluYWwgR3JhcGggZ3JhcGgpIHsKICAgICAgICAgdGhpcy5ncmFwaCA9IGdyYXBoOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9JbW11dGFibGVNZXRyaWNzLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvSW1tdXRhYmxlTWV0cmljcy5qYXZhCmluZGV4IGQyYjE0MzAuLmY2MzMzMjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9JbW11dGFibGVNZXRyaWNzLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0ltbXV0YWJsZU1ldHJpY3MuamF2YQpAQCAtMjAsNiArMjAsNyBAQAogCiBpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5NYXA7CkBAIC00MSw3ICs0Miw3IEBACiAgICAgcHJvdGVjdGVkIFN0cmluZyBuYW1lOwogICAgIHByb3RlY3RlZCBNYXA8U3RyaW5nLCBBdG9taWNMb25nPiBjb3VudHMgPSBuZXcgQ29uY3VycmVudEhhc2hNYXA8PigpOwogICAgIHByb3RlY3RlZCBsb25nIGR1cmF0aW9uTnMgPSAwbDsKLSAgICBwcm90ZWN0ZWQgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBhbm5vdGF0aW9ucyA9IG5ldyBDb25jdXJyZW50SGFzaE1hcDw+KCk7CisgICAgcHJvdGVjdGVkIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gYW5ub3RhdGlvbnMgPSBDb2xsZWN0aW9ucy5zeW5jaHJvbml6ZWRNYXAobmV3IExpbmtlZEhhc2hNYXA8PigpKTsKICAgICBwcm90ZWN0ZWQgZmluYWwgTWFwPFN0cmluZywgSW1tdXRhYmxlTWV0cmljcz4gbmVzdGVkID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOwogCiAgICAgcHJvdGVjdGVkIEltbXV0YWJsZU1ldHJpY3MoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9FbGVtZW50LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9FbGVtZW50LmphdmEKaW5kZXggZWYzZWE3MC4uMGI3OTZhMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvRWxlbWVudC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0VsZW1lbnQuamF2YQpAQCAtMTQ1LDE0ICsxNDUsNSBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBsYWJlbENhbk5vdEJlQUhpZGRlbktleShmaW5hbCBTdHJpbmcgbGFiZWwpIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMYWJlbCBjYW4gbm90IGJlIGEgaGlkZGVuIGtleTogIiArIGxhYmVsKTsKICAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMS4wLCBub3QgcmVwbGFjZWQgLSB0aGlzIGV4Y2VwdGlvbiBpcyBubyBsb25nZXIgZW5mb3JjZWQgYnkgdGhlIHRlc3Qgc3VpdGUuCi0gICAgICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjk3Ij5USU5LRVJQT1AtMjk3PC9hPgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIHN0YXRpYyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gZWxlbWVudEFscmVhZHlSZW1vdmVkKGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBFbGVtZW50PiBjbGF6eiwgZmluYWwgT2JqZWN0IGlkKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCIlcyB3aXRoIGlkICVzIHdhcyByZW1vdmVkLiIsIGNsYXp6LmdldFNpbXBsZU5hbWUoKSwgaWQpKTsKLSAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0dyYXBoLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9HcmFwaC5qYXZhCmluZGV4IDZiOWQwZTQuLjViYmI0MTUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0dyYXBoLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvR3JhcGguamF2YQpAQCAtMjEsMTEgKzIxLDExIEBACiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEVuZ2luZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmVuZ2luZS5Db21wdXRlclRyYXZlcnNhbEVuZ2luZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5HcmFwaFJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5HcmFwaFdyaXRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5JbzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1JlZ2lzdHJ5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuRmVhdHVyZURlc2NyaXB0b3I7CkBAIC00Myw3ICs0Myw2IEBACiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogaW1wb3J0IGphdmEudXRpbC5VVUlEOwpAQCAtMzAyLDggKzMwMSwxMSBAQAogICAgICAqIDwvcD4KICAgICAgKiBGb3IgdGhvc2UgZ3JhcGhzIHRoYXQgZG8gbm90IG5lZWQgdG8gcmVnaXN0ZXIgYW55IGN1c3RvbSBzZXJpYWxpemVycywgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gc2hvdWxkIHN1ZmZpY2UuCiAgICAgICogSWYgdGhlIGRlZmF1bHQgaXMgb3ZlcnJpZGRlbiwgdGFrZSBjYXJlIHRvIHJlZ2lzdGVyIHRoZSBjdXJyZW50IGdyYXBoIHZpYSB0aGUKLSAgICAgKiB7QGxpbmsgSW8uQnVpbGRlciNncmFwaChHcmFwaCl9IG1ldGhvZC4KKyAgICAgKiB7QGxpbmsgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW8uQnVpbGRlciNncmFwaChHcmFwaCl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZSNpbyhTdHJpbmcpfS4KICAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBkZWZhdWx0IDxJIGV4dGVuZHMgSW8+IEkgaW8oZmluYWwgSW8uQnVpbGRlcjxJPiBidWlsZGVyKSB7CiAgICAgICAgIHJldHVybiAoSSkgYnVpbGRlci5ncmFwaCh0aGlzKS5jcmVhdGUoKTsKICAgICB9CkBAIC00NDQsNiArNDQ2LDggQEAKICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfUEVSU0lTVEVOQ0UgPSAiUGVyc2lzdGVuY2UiOwogICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9USFJFQURFRF9UUkFOU0FDVElPTlMgPSAiVGhyZWFkZWRUcmFuc2FjdGlvbnMiOwogICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9DT05DVVJSRU5UX0FDQ0VTUyA9ICJDb25jdXJyZW50QWNjZXNzIjsKKyAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfSU9fUkVBRCA9ICJJb1JlYWQiOworICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9JT19XUklURSA9ICJJb1dyaXRlIjsKIAogICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB7QGNvZGUgR3JhcGh9IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHtAbGluayBHcmFwaENvbXB1dGVyfSBiYXNlZCBwcm9jZXNzaW5nLgpAQCAtNDk0LDYgKzQ5OCwyOSBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIERldGVybWluZXMgaWYgdGhlIHtAY29kZSBHcmFwaH0gaW1wbGVtZW50YXRpb25zIHN1cHBvcnRzIHJlYWQgb3BlcmF0aW9ucyBhcyBleGVjdXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICoge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9IHN0ZXAuIEdyYXBoIGltcGxlbWVudGF0aW9ucyB3aWxsIGdlbmVyYWxseSBzdXBwb3J0IHRoaXMgYnkKKyAgICAgICAgICAgICAqIGRlZmF1bHQgYXMgYW55IGdyYXBoIHRoYXQgY2FuIHN1cHBvcnQgZGlyZWN0IG11dGF0aW9uIHRocm91Z2ggdGhlIFN0cnVjdHVyZSBBUEkgd2lsbCBieSBkZWZhdWx0CisgICAgICAgICAgICAgKiBhY2NlcHQgZGF0YSBmcm9tIHRoZSBzdGFuZGFyZCBUaW5rZXJQb3Age0BsaW5rIEdyYXBoUmVhZGVyfSBpbXBsZW1lbnRhdGlvbnMuIEhvd2V2ZXIsIHNvbWUgZ3JhcGhzIGxpa2UKKyAgICAgICAgICAgICAqIHtAY29kZSBIYWRvb3BHcmFwaH0gZG9uJ3QgYWNjZXB0IGRpcmVjdCBtdXRhdGlvbnMgYnV0IGNhbiBzdGlsbCBkbyByZWFkcyBmcm9tIHRoYXQge0Bjb2RlIGlvKCl9IHN0ZXAuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEBGZWF0dXJlRGVzY3JpcHRvcihuYW1lID0gRkVBVFVSRV9JT19SRUFEKQorICAgICAgICAgICAgcHVibGljIGRlZmF1bHQgYm9vbGVhbiBzdXBwb3J0c0lvUmVhZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB7QGNvZGUgR3JhcGh9IGltcGxlbWVudGF0aW9ucyBzdXBwb3J0cyB3cml0ZSBvcGVyYXRpb25zIGFzIGV4ZWN1dGVkIHdpdGggdGhlCisgICAgICAgICAgICAgKiB7QGxpbmsgR3JhcGhUcmF2ZXJzYWxTb3VyY2UjaW8oU3RyaW5nKX0gc3RlcC4gR3JhcGggaW1wbGVtZW50YXRpb25zIHdpbGwgZ2VuZXJhbGx5IHN1cHBvcnQgdGhpcyBieQorICAgICAgICAgICAgICogZGVmYXVsdCBnaXZlbiB0aGUgc3RhbmRhcmQgVGlua2VyUG9wIHtAbGluayBHcmFwaFdyaXRlcn0gaW1wbGVtZW50YXRpb25zLiBIb3dldmVyLCBzb21lIGdyYXBocyBsaWtlCisgICAgICAgICAgICAgKiB7QGNvZGUgSGFkb29wR3JhcGh9IHdpbGwgdXNlIGEgZGlmZmVyZW50IGFwcHJvYWNoIHRvIGhhbmRsZSB3cml0ZXMuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEBGZWF0dXJlRGVzY3JpcHRvcihuYW1lID0gRkVBVFVSRV9JT19XUklURSkKKyAgICAgICAgICAgIHB1YmxpYyBkZWZhdWx0IGJvb2xlYW4gc3VwcG9ydHNJb1dyaXRlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAqIEdldHMgdGhlIGZlYXR1cmVzIHJlbGF0ZWQgdG8gImdyYXBoIHNpZGVFZmZlY3RzIiBvcGVyYXRpb24uCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHB1YmxpYyBkZWZhdWx0IFZhcmlhYmxlRmVhdHVyZXMgdmFyaWFibGVzKCkgewpAQCAtNTExLDYgKzUzOCw3IEBACiAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX0RVUExJQ0FURV9NVUxUSV9QUk9QRVJUSUVTID0gIkR1cGxpY2F0ZU11bHRpUHJvcGVydGllcyI7CiAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX01FVEFfUFJPUEVSVElFUyA9ICJNZXRhUHJvcGVydGllcyI7CiAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX1JFTU9WRV9WRVJUSUNFUyA9ICJSZW1vdmVWZXJ0aWNlcyI7CisgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX1VQU0VSVCA9ICJVcHNlcnQiOwogCiAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAqIEdldHMgdGhlIHtAbGluayBWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eX0gZm9yIGEga2V5LiAgQnkgZGVmYXVsdCwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4KQEAgLTU3Miw2ICs2MDAsMjAgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB7QGNvZGUgR3JhcGh9IGltcGxlbWVudGF0aW9uIHVzZXMgdXBzZXJ0IGZ1bmN0aW9uYWxpdHkgYXMgb3Bwb3NlZCB0byBpbnNlcnQKKyAgICAgICAgICAgICAqIGZ1bmN0aW9uYWxpdHkgZm9yIHtAbGluayAjYWRkVmVydGV4KFN0cmluZyl9LiBUaGlzIGZlYXR1cmUgZ2l2ZXMgZ3JhcGggcHJvdmlkZXJzIHNvbWUgZmxleGliaWxpdHkgYXMKKyAgICAgICAgICAgICAqIHRvIGhvdyBncmFwaCBtdXRhdGlvbnMgYXJlIHRyZWF0ZWQuIEZvciBncmFwaCBwcm92aWRlcnMsIHRlc3Rpbmcgb2YgdGhpcyBmZWF0dXJlIChhcyBmYXIgYXMgVGlua2VyUG9wCisgICAgICAgICAgICAgKiBpcyBjb25jZXJuZWQpIG9ubHkgY292ZXJzIGdyYXBocyB0aGF0IGNhbiBzdXBwb3J0IHVzZXIgc3VwcGxpZWQgaWRlbnRpZmllcnMgYXMgdGhlcmUgaXMgbm8gb3RoZXIgd2F5CisgICAgICAgICAgICAgKiBmb3IgVGlua2VyUG9wIHRvIGtub3cgd2hhdCBhc3BlY3Qgb2YgYSB2ZXJ0ZXggaXMgdW5pcXVlIHRvIGFwcHJvcHJpYXRlbHkgYXBwbHkgYXNzZXJ0aW9ucy4gR3JhcGgKKyAgICAgICAgICAgICAqIHByb3ZpZGVycywgZXNwZWNpYWxseSB0aG9zZSB3aG8gc3VwcG9ydCBzY2hlbWEgZmVhdHVyZXMsIG1heSBoYXZlIG90aGVyIG1ldGhvZHMgZm9yIHVuaXF1ZWx5IGlkZW50aWZ5aW5nCisgICAgICAgICAgICAgKiBhIHZlcnRleCBhbmQgc2hvdWxkIHRoZXJlZm9yZSByZXNvcnQgdG8gdGhlaXIgb3duIGJvZHkgb2YgdGVzdHMgdG8gdmFsaWRhdGUgdGhpcyBmZWF0dXJlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBARmVhdHVyZURlc2NyaXB0b3IobmFtZSA9IEZFQVRVUkVfVVBTRVJUKQorICAgICAgICAgICAgcHVibGljIGRlZmF1bHQgYm9vbGVhbiBzdXBwb3J0c1Vwc2VydCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICogR2V0cyBmZWF0dXJlcyByZWxhdGVkIHRvICJwcm9wZXJ0aWVzIiBvbiBhIHtAbGluayBWZXJ0ZXh9LgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBwdWJsaWMgZGVmYXVsdCBWZXJ0ZXhQcm9wZXJ0eUZlYXR1cmVzIHByb3BlcnRpZXMoKSB7CkBAIC01ODYsNiArNjI4LDcgQEAKICAgICAgICAgcHVibGljIGludGVyZmFjZSBFZGdlRmVhdHVyZXMgZXh0ZW5kcyBFbGVtZW50RmVhdHVyZXMgewogICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9BRERfRURHRVMgPSAiQWRkRWRnZXMiOwogICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9SRU1PVkVfRURHRVMgPSAiUmVtb3ZlRWRnZXMiOworICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9VUFNFUlQgPSAiVXBzZXJ0IjsKIAogICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIHtAbGluayBFZGdlfSBjYW4gYmUgYWRkZWQgdG8gYSB7QGNvZGUgVmVydGV4fS4KQEAgLTYwNCw2ICs2NDcsMjEgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB7QGNvZGUgR3JhcGh9IGltcGxlbWVudGF0aW9uIHVzZXMgdXBzZXJ0IGZ1bmN0aW9uYWxpdHkgYXMgb3Bwb3NlZCB0byBpbnNlcnQKKyAgICAgICAgICAgICAqIGZ1bmN0aW9uYWxpdHkgZm9yIHtAbGluayBWZXJ0ZXgjYWRkRWRnZShTdHJpbmcsIFZlcnRleCwgT2JqZWN0Li4uKX0uIFRoaXMgZmVhdHVyZSBnaXZlcyBncmFwaCBwcm92aWRlcnMKKyAgICAgICAgICAgICAqIHNvbWUgZmxleGliaWxpdHkgYXMgdG8gaG93IGdyYXBoIG11dGF0aW9ucyBhcmUgdHJlYXRlZC4gRm9yIGdyYXBoIHByb3ZpZGVycywgdGVzdGluZyBvZiB0aGlzIGZlYXR1cmUKKyAgICAgICAgICAgICAqIChhcyBmYXIgYXMgVGlua2VyUG9wIGlzIGNvbmNlcm5lZCkgb25seSBjb3ZlcnMgZ3JhcGhzIHRoYXQgY2FuIHN1cHBvcnQgdXNlciBzdXBwbGllZCBpZGVudGlmaWVycyBhcworICAgICAgICAgICAgICogdGhlcmUgaXMgbm8gb3RoZXIgd2F5IGZvciBUaW5rZXJQb3AgdG8ga25vdyB3aGF0IGFzcGVjdCBvZiBhIGVkZ2UgaXMgdW5pcXVlIHRvIGFwcHJvcHJpYXRlbHkgYXBwbHkKKyAgICAgICAgICAgICAqIGFzc2VydGlvbnMuIEdyYXBoIHByb3ZpZGVycywgZXNwZWNpYWxseSB0aG9zZSB3aG8gc3VwcG9ydCBzY2hlbWEgZmVhdHVyZXMsIG1heSBoYXZlIG90aGVyIG1ldGhvZHMgZm9yCisgICAgICAgICAgICAgKiB1bmlxdWVseSBpZGVudGlmeWluZyBhIGVkZ2UgYW5kIHNob3VsZCB0aGVyZWZvcmUgcmVzb3J0IHRvIHRoZWlyIG93biBib2R5IG9mIHRlc3RzIHRvIHZhbGlkYXRlIHRoaXMKKyAgICAgICAgICAgICAqIGZlYXR1cmUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEBGZWF0dXJlRGVzY3JpcHRvcihuYW1lID0gRkVBVFVSRV9VUFNFUlQpCisgICAgICAgICAgICBwdWJsaWMgZGVmYXVsdCBib29sZWFuIHN1cHBvcnRzVXBzZXJ0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBHZXRzIGZlYXR1cmVzIHJlbGF0ZWQgdG8gInByb3BlcnRpZXMiIG9uIGFuIHtAbGluayBFZGdlfS4KICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgcHVibGljIGRlZmF1bHQgRWRnZVByb3BlcnR5RmVhdHVyZXMgcHJvcGVydGllcygpIHsKQEAgLTExMjQsMTEgKzExODIsNiBAQAogICAgICAgICAgICAgcmV0dXJuIG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBncmFwaCBjb21wdXRlciIpOwogICAgICAgICB9CiAKLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIHN0YXRpYyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdHJhdmVyc2FsRW5naW5lTm90U3VwcG9ydGVkKGZpbmFsIFRyYXZlcnNhbEVuZ2luZSBlbmdpbmUpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBwcm92aWRlZCB0cmF2ZXJzYWwgZW5naW5lOiAiICsgZW5naW5lLmdldENsYXNzKCkuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGdyYXBoRG9lc05vdFN1cHBvcnRQcm92aWRlZEdyYXBoQ29tcHV0ZXIoZmluYWwgQ2xhc3MgZ3JhcGhDb21wdXRlckNsYXNzKSB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiR3JhcGggZG9lcyBub3Qgc3VwcG9ydCB0aGUgcHJvdmlkZWQgZ3JhcGggY29tcHV0ZXI6ICIgKyBncmFwaENvbXB1dGVyQ2xhc3MuZ2V0U2ltcGxlTmFtZSgpKTsKICAgICAgICAgfQpAQCAtMTE1MiwzNCArMTIwNSw2IEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGFyZ3VtZW50Q2FuTm90QmVOdWxsKGZpbmFsIFN0cmluZyBhcmd1bWVudCkgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiVGhlIHByb3ZpZGVkIGFyZ3VtZW50IGNhbiBub3QgYmUgbnVsbDogJXMiLCBhcmd1bWVudCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIERlcHJlY2F0ZWQgYXMgb2YgMy4yLjMsIG5vdCByZXBsYWNlZC4KLSAgICAgICAgICoKLSAgICAgICAgICogQHNlZSA8YSBocmVmPSJodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC05NDQiPlRJTktFUlBPUC05NDQ8L2E+Ci0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgc3RhdGljIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gZWxlbWVudE5vdEZvdW5kKGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBFbGVtZW50PiBlbGVtZW50Q2xhc3MsIGZpbmFsIE9iamVjdCBpZCkgewotICAgICAgICAgICAgcmV0dXJuIChudWxsID09IGlkKSA/Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uKCJUaGUgIiArIGVsZW1lbnRDbGFzcy5nZXRTaW1wbGVOYW1lKCkudG9Mb3dlckNhc2UoKSArICIgd2l0aCBpZCBudWxsIGRvZXMgbm90IGV4aXN0IGluIHRoZSBncmFwaCIpIDoKLSAgICAgICAgICAgICAgICAgICAgbmV3IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24oIlRoZSAiICsgZWxlbWVudENsYXNzLmdldFNpbXBsZU5hbWUoKS50b0xvd2VyQ2FzZSgpICsgIiB3aXRoIGlkICIgKyBpZCArICIgb2YgdHlwZSAiICsgaWQuZ2V0Q2xhc3MoKS5nZXRTaW1wbGVOYW1lKCkgKyAiIGRvZXMgbm90IGV4aXN0IGluIHRoZSBncmFwaCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIERlcHJlY2F0ZWQgYXMgb2YgMy4yLjMsIG5vdCByZXBsYWNlZC4KLSAgICAgICAgICoKLSAgICAgICAgICogQHNlZSA8YSBocmVmPSJodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC05NDQiPlRJTktFUlBPUC05NDQ8L2E+Ci0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgc3RhdGljIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gZWxlbWVudE5vdEZvdW5kKGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBFbGVtZW50PiBlbGVtZW50Q2xhc3MsIGZpbmFsIE9iamVjdCBpZCwgZmluYWwgRXhjZXB0aW9uIHJvb3RDYXVzZSkgewotICAgICAgICAgICAgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBlbGVtZW50Tm90Rm91bmRFeGNlcHRpb247Ci0gICAgICAgICAgICBpZiAobnVsbCA9PSBpZCkKLSAgICAgICAgICAgICAgICBlbGVtZW50Tm90Rm91bmRFeGNlcHRpb24gPSBuZXcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigiVGhlICIgKyBlbGVtZW50Q2xhc3MuZ2V0U2ltcGxlTmFtZSgpLnRvTG93ZXJDYXNlKCkgKyAiIHdpdGggaWQgbnVsbCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZ3JhcGgiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbGVtZW50Tm90Rm91bmRFeGNlcHRpb24gPSBuZXcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigiVGhlICIgKyBlbGVtZW50Q2xhc3MuZ2V0U2ltcGxlTmFtZSgpLnRvTG93ZXJDYXNlKCkgKyAiIHdpdGggaWQgIiArIGlkICsgIiBvZiB0eXBlICIgKyBpZC5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKSArICIgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGdyYXBoIik7Ci0gICAgICAgICAgICBlbGVtZW50Tm90Rm91bmRFeGNlcHRpb24uaW5pdENhdXNlKHJvb3RDYXVzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudE5vdEZvdW5kRXhjZXB0aW9uOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyoqCkBAIC0xMjQ3LDcgKzEyNzIsNyBAQAogICAgICAgICAvKioKICAgICAgICAgICogVGhlIGxpc3Qgb2Yge0BsaW5rIEdyYXBoQ29tcHV0ZXJ9IGltcGxlbWVudGF0aW9ucyBieSBjbGFzcyBuYW1lIHRoYXQgYSB0ZXN0IHNob3VsZCBvcHQtb3V0IGZyb20gdXNpbmcgKGkuZS4gb3RoZXIKICAgICAgICAgICogZ3JhcGggY29tcHV0ZXJzIG5vdCBpbiB0aGlzIGxpc3Qgd2lsbCBleGVjdXRlIHRoZSB0ZXN0KS4gIFRoaXMgc2V0dGluZyBzaG91bGQgb25seSBiZSBpbmNsdWRlZCB3aGVuCi0gICAgICAgICAqIHRoZSB0ZXN0IGlzIG9uZSB0aGF0IHVzZXMgdGhlIHtAbGluayBDb21wdXRlclRyYXZlcnNhbEVuZ2luZX0gLSBpdCB3aWxsIG90aGVyd2lzZSBiZSBpZ25vcmVkLiAgQnkKKyAgICAgICAgICogdGhlIHRlc3QgaXMgb25lIHRoYXQgdXNlcyB0aGUge0Bjb2RlIFRyYXZlcnNhbEVuZ2luZS5DT01QVVRFUn0gLSBpdCB3aWxsIG90aGVyd2lzZSBiZSBpZ25vcmVkLiAgQnkKICAgICAgICAgICogZGVmYXVsdCwgYW4gZW1wdHkgYXJyYXkgaXMgYXNzaWduZWQgYW5kIGl0IGlzIHRodXMgYXNzdW1lZCB0aGF0IGFsbCBjb21wdXRlcnMgYXJlIGV4Y2x1ZGVkIHdoZW4gYW4KICAgICAgICAgICoge0Bjb2RlIE9wdE91dH0gYW5ub3RhdGlvbiBpcyB1c2VkLCB0aGVyZWZvcmUgdGhpcyB2YWx1ZSBtdXN0IGJlIG92ZXJyaWRkZW4gdG8gYmUgbW9yZSBzcGVjaWZpYy4KICAgICAgICAgICovCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9ULmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9ULmphdmEKaW5kZXggYTgzNjg0MC4uMmQ2N2Q2YiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvVC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL1QuamF2YQpAQCAtMzAsNiArMzAsOCBAQAogcHVibGljIGVudW0gVCBpbXBsZW1lbnRzIEZ1bmN0aW9uPEVsZW1lbnQsIE9iamVjdD4gewogICAgIC8qKgogICAgICAqIExhYmVsIChyZXByZXNlbnRpbmcgRWxlbWVudC5sYWJlbCgpKQorICAgICAqCisgICAgICogQHNpbmNlIDMuMC4wLWluY3ViYXRpbmcKICAgICAgKi8KICAgICBsYWJlbCB7CiAgICAgICAgIEBPdmVycmlkZQpAQCAtNDQsNiArNDYsOCBAQAogICAgIH0sCiAgICAgLyoqCiAgICAgICogSWQgKHJlcHJlc2VudGluZyBFbGVtZW50LmlkKCkpCisgICAgICoKKyAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZwogICAgICAqLwogICAgIGlkIHsKICAgICAgICAgQE92ZXJyaWRlCkBAIC01OCw2ICs2Miw4IEBACiAgICAgfSwKICAgICAvKioKICAgICAgKiBLZXkgKHJlcHJlc2VudGluZyBQcm9wZXJ0eS5rZXkoKSkKKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjAuMC1pbmN1YmF0aW5nCiAgICAgICovCiAgICAga2V5IHsKICAgICAgICAgQE92ZXJyaWRlCkBAIC03Miw2ICs3OCw4IEBACiAgICAgfSwKICAgICAvKioKICAgICAgKiBWYWx1ZSAocmVwcmVzZW50aW5nIFByb3BlcnR5LnZhbHVlKCkpCisgICAgICoKKyAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZwogICAgICAqLwogICAgIHZhbHVlIHsKICAgICAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9CdWZmZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0J1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MDc4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9CdWZmZXIuamF2YQpAQCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCisvKioKKyAqIFJlcHJlc2VudHMgYW4gYWJzdHJhY3QgdmlldyBmb3Igb25lIG9yIG1vcmUgcHJpbWl0aXZlIGJ5dGUgYXJyYXlzIGFuZCBOSU8gYnVmZmVycy4KKyAqLworcHVibGljIGludGVyZmFjZSBCdWZmZXIgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlYWRhYmxlIGJ5dGVzLgorICAgICAqLworICAgIGludCByZWFkYWJsZUJ5dGVzKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSByZWFkZXIgaW5kZXggb2YgdGhpcyBidWZmZXIuCisgICAgICovCisgICAgaW50IHJlYWRlckluZGV4KCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSByZWFkZXIgaW5kZXggb2YgdGhpcyBidWZmZXIuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24KKyAgICAgKiAgICAgICAgIGlmIGl0cyBvdXQgb2YgYm91bmRzLgorICAgICAqLworICAgIEJ1ZmZlciByZWFkZXJJbmRleChmaW5hbCBpbnQgcmVhZGVySW5kZXgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgd3JpdGVyIGluZGV4IG9mIHRoaXMgYnVmZmVyLgorICAgICAqLworICAgIGludCB3cml0ZXJJbmRleCgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgd3JpdGVyIGluZGV4IG9mIHRoaXMgYnVmZmVyLgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZXJJbmRleChmaW5hbCBpbnQgd3JpdGVySW5kZXgpOworCisgICAgLyoqCisgICAgICogTWFya3MgdGhlIGN1cnJlbnQgd3JpdGVyIGluZGV4IGluIHRoaXMgYnVmZmVyLgorICAgICAqLworICAgIEJ1ZmZlciBtYXJrV3JpdGVySW5kZXgoKTsKKworICAgIC8qKgorICAgICAqIFJlcG9zaXRpb25zIHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCB0byB0aGUgbWFya2VkIGluZGV4IGluIHRoaXMgYnVmZmVyLgorICAgICAqLworICAgIEJ1ZmZlciByZXNldFdyaXRlckluZGV4KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgKG9jdGV0cykgdGhpcyBidWZmZXIgY2FuIGNvbnRhaW4uCisgICAgICovCisgICAgaW50IGNhcGFjaXR5KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHtAY29kZSB0cnVlfSBpZiBhbmQgb25seSBpZiB0aGlzIGJ1ZmZlciBpcyBiYWNrZWQgYnkgYW4KKyAgICAgKiBOSU8gZGlyZWN0IGJ1ZmZlci4KKyAgICAgKi8KKyAgICBib29sZWFuIGlzRGlyZWN0KCk7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgYm9vbGVhbiBhbmQgYWR2YW5jZXMgdGhlIHJlYWRlciBpbmRleC4KKyAgICAgKi8KKyAgICBib29sZWFuIHJlYWRCb29sZWFuKCk7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgYnl0ZSBhbmQgYWR2YW5jZXMgdGhlIHJlYWRlciBpbmRleC4KKyAgICAgKi8KKyAgICBieXRlIHJlYWRCeXRlKCk7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgMTYtYml0IHNob3J0IGludGVnZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICovCisgICAgc2hvcnQgcmVhZFNob3J0KCk7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgMzItYml0IGludGVnZXIgYXQgdGhlIGN1cnJlbnQgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICovCisgICAgaW50IHJlYWRJbnQoKTsKKworICAgIC8qKgorICAgICAqIEdldHMgYSA2NC1iaXQgaW50ZWdlciAgYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICovCisgICAgbG9uZyByZWFkTG9uZygpOworCisgICAgLyoqCisgICAgICogR2V0cyBhIDMyLWJpdCBmbG9hdGluZyBwb2ludCBudW1iZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICovCisgICAgZmxvYXQgcmVhZEZsb2F0KCk7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgNjQtYml0IGZsb2F0aW5nIHBvaW50IG51bWJlciBhbmQgYWR2YW5jZXMgdGhlIHJlYWRlciBpbmRleC4KKyAgICAgKi8KKyAgICBkb3VibGUgcmVhZERvdWJsZSgpOworCisgICAgLyoqCisgICAgICogVHJhbnNmZXJzIHRoaXMgYnVmZmVyJ3MgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uIHN0YXJ0aW5nIGF0CisgICAgICogdGhlIGN1cnJlbnQgcmVhZGVyIGluZGV4IGFuZCBhZHZhbmNlcyB0aGUgcmVhZGVyIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciByZWFkQnl0ZXMoYnl0ZVtdIGRlc3RpbmF0aW9uKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGlzIGJ1ZmZlcidzIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiBzdGFydGluZyBhdAorICAgICAqIHRoZSBjdXJyZW50IHJlYWRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIHJlYWRlciBpbmRleC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkZXN0aW5hdGlvbiBUaGUgZGVzdGluYXRpb24gYnVmZmVyCisgICAgICogQHBhcmFtIGRzdEluZGV4IHRoZSBmaXJzdCBpbmRleCBvZiB0aGUgZGVzdGluYXRpb24KKyAgICAgKiBAcGFyYW0gbGVuZ3RoICAgdGhlIG51bWJlciBvZiBieXRlcyB0byB0cmFuc2ZlcgorICAgICAqLworICAgIEJ1ZmZlciByZWFkQnl0ZXMoZmluYWwgYnl0ZVtdIGRlc3RpbmF0aW9uLCBmaW5hbCBpbnQgZHN0SW5kZXgsIGZpbmFsIGludCBsZW5ndGgpOworCisgICAgLyoqCisgICAgICogVHJhbnNmZXJzIHRoaXMgYnVmZmVyJ3MgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uIHN0YXJ0aW5nIGF0CisgICAgICogdGhlIGN1cnJlbnQgcmVhZGVyIGluZGV4IHVudGlsIHRoZSBkZXN0aW5hdGlvbidzIHBvc2l0aW9uCisgICAgICogcmVhY2hlcyBpdHMgbGltaXQsIGFuZCBhZHZhbmNlcyB0aGUgcmVhZGVyIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciByZWFkQnl0ZXMoZmluYWwgQnl0ZUJ1ZmZlciBkc3QpOworCisgICAgLyoqCisgICAgICogVHJhbnNmZXJzIHRoaXMgYnVmZmVyJ3MgZGF0YSB0byB0aGUgc3BlY2lmaWVkIHN0cmVhbSBzdGFydGluZyBhdCB0aGUKKyAgICAgKiBjdXJyZW50IHJlYWRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqCisgICAgICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHRyYW5zZmVyCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgICogICAgICAgICBpZiB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0aHJldyBhbiBleGNlcHRpb24gZHVyaW5nIEkvTworICAgICAqLworICAgIEJ1ZmZlciByZWFkQnl0ZXMoZmluYWwgT3V0cHV0U3RyZWFtIG91dCwgZmluYWwgaW50IGxlbmd0aCkgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgc3BlY2lmaWVkIGJvb2xlYW4gYXQgdGhlIGN1cnJlbnQgd3JpdGVyIGluZGV4IGFuZCBhZHZhbmNlcyB0aGUgaW5kZXguCisgICAgICovCisgICAgQnVmZmVyIHdyaXRlQm9vbGVhbihmaW5hbCBib29sZWFuIHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCBieXRlIGF0IHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZUJ5dGUoZmluYWwgaW50IHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCAxNi1iaXQgc2hvcnQgaW50ZWdlciBhdCB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVTaG9ydChmaW5hbCBpbnQgdmFsdWUpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ2VyIGF0IHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZUludChmaW5hbCBpbnQgdmFsdWUpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgc3BlY2lmaWVkIDY0LWJpdCBsb25nIGludGVnZXIgYXQgdGhlIGN1cnJlbnQgd3JpdGVyIGluZGV4IGFuZCBhZHZhbmNlcyB0aGUgaW5kZXguCisgICAgICovCisgICAgQnVmZmVyIHdyaXRlTG9uZyhmaW5hbCBsb25nIHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCAzMi1iaXQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGF0IHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZUZsb2F0KGZpbmFsIGZsb2F0IHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCA2NC1iaXQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGF0IHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZURvdWJsZShmaW5hbCBkb3VibGUgdmFsdWUpOworCisgICAgLyoqCisgICAgICogVHJhbnNmZXJzIHRoZSBzcGVjaWZpZWQgc291cmNlIGFycmF5J3MgZGF0YSB0byB0aGlzIGJ1ZmZlciBzdGFydGluZyBhdCB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXgKKyAgICAgKiBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZUJ5dGVzKGZpbmFsIGJ5dGVbXSBzcmMpOworCisgICAgLyoqCisgICAgICogVHJhbnNmZXJzIHRoZSBzcGVjaWZpZWQgc291cmNlIGJ5dGUgZGF0YSB0byB0aGlzIGJ1ZmZlciBzdGFydGluZyBhdCB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXgKKyAgICAgKiBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZUJ5dGVzKGZpbmFsIEJ5dGVCdWZmZXIgc3JjKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBhcnJheSdzIGRhdGEgdG8gdGhpcyBidWZmZXIgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgd3JpdGVyIGluZGV4CisgICAgICogYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVCeXRlcyhmaW5hbCBieXRlW10gc3JjLCBmaW5hbCBpbnQgc3JjSW5kZXgsIGZpbmFsIGludCBsZW5ndGgpOworCisgICAgLyoqCisgICAgICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgYnkge0Bjb2RlIDF9IGFuZCBkZWFsbG9jYXRlcyB0aGlzIG9iamVjdCBpZiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgYXQKKyAgICAgKiB7QGNvZGUgMH0uCisgICAgICovCisgICAgYm9vbGVhbiByZWxlYXNlKCk7CisKKyAgICAvKioKKyAgICAgKiBJbmNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBieSB7QGNvZGUgMX0uCisgICAgICovCisgICAgQnVmZmVyIHJldGFpbigpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoaXMgb2JqZWN0LgorICAgICAqLworICAgIGludCByZWZlcmVuY2VDb3VudCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgTklPIHtAbGluayBCeXRlQnVmZmVyfXMgdGhhdCBjb25zaXN0IHRoaXMgYnVmZmVyLgorICAgICAqLworICAgIGludCBuaW9CdWZmZXJDb3VudCgpOworCisgICAgLyoqCisgICAgICogRXhwb3NlcyB0aGlzIGJ1ZmZlcidzIHJlYWRhYmxlIGJ5dGVzIGFzIE5JTyBCeXRlQnVmZmVyJ3MgaW5zdGFuY2VzLgorICAgICAqLworICAgIEJ5dGVCdWZmZXJbXSBuaW9CdWZmZXJzKCk7CisKKyAgICAvKioKKyAgICAgKiBFeHBvc2VzIHRoaXMgYnVmZmVyJ3MgcmVhZGFibGUgYnl0ZXMgYXMgTklPIEJ5dGVCdWZmZXIncyBpbnN0YW5jZXMuCisgICAgICovCisgICAgQnl0ZUJ1ZmZlcltdIG5pb0J1ZmZlcnMoZmluYWwgaW50IGluZGV4LCBmaW5hbCBpbnQgbGVuZ3RoKTsKKworICAgIC8qKgorICAgICAqIEV4cG9zZXMgdGhpcyBidWZmZXIncyByZWFkYWJsZSBieXRlcyBhcyBhIE5JTyB7QGxpbmsgQnl0ZUJ1ZmZlcn0uIFRoZSByZXR1cm5lZCBidWZmZXIKKyAgICAgKiBlaXRoZXIgc2hhcmUgb3IgY29udGFpbnMgdGhlIGNvcGllZCBjb250ZW50IG9mIHRoaXMgYnVmZmVyLCB3aGlsZSBjaGFuZ2luZyB0aGUgcG9zaXRpb24KKyAgICAgKiBhbmQgbGltaXQgb2YgdGhlIHJldHVybmVkIE5JTyBidWZmZXIgZG9lcyBub3QgYWZmZWN0IHRoZSBpbmRleGVzIGFuZCBtYXJrcyBvZiB0aGlzIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBCeXRlQnVmZmVyIG5pb0J1ZmZlcigpOworCisgICAgLyoqCisgICAgICogRXhwb3NlcyB0aGlzIGJ1ZmZlcidzIHN1Yi1yZWdpb24gYXMgYW4gTklPIHtAbGluayBCeXRlQnVmZmVyfS4KKyAgICAgKi8KKyAgICBCeXRlQnVmZmVyIG5pb0J1ZmZlcihmaW5hbCBpbnQgaW5kZXgsIGZpbmFsIGludCBsZW5ndGgpOworCisgICAgLyoqCisgICAgICogVHJhbnNmZXJzIHRoaXMgYnVmZmVyJ3MgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uIHN0YXJ0aW5nIGF0CisgICAgICogdGhlIHNwZWNpZmllZCBhYnNvbHV0ZSB7QGNvZGUgaW5kZXh9LgorICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IG1vZGlmeSByZWFkZXIgb3Igd3JpdGVyIGluZGV4ZXMuCisgICAgICovCisgICAgQnVmZmVyIGdldEJ5dGVzKGZpbmFsIGludCBpbmRleCwgZmluYWwgYnl0ZVtdIGRzdCk7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9CdWZmZXJGYWN0b3J5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9CdWZmZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NlZTI5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0J1ZmZlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDM5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW87CisKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCisvKioKKyAqIFJlcHJlc2VudHMgYSBmYWN0b3J5IHRvIGNyZWF0ZSB7QGxpbmsgQnVmZmVyfSBpbnN0YW5jZXMgZnJvbSB7QGxpbmsgVH0gaW5zdGFuY2VzLgorICovCitwdWJsaWMgaW50ZXJmYWNlIEJ1ZmZlckZhY3Rvcnk8VD4geworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQnVmZmVyfSBnaXZlbiBhIHtAbGluayBUfSBpbnN0YW5jZS4KKyAgICAgKiBAcGFyYW0gdmFsdWUKKyAgICAgKiBAcmV0dXJuCisgICAgICovCisgICAgQnVmZmVyIGNyZWF0ZShmaW5hbCBUIHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFdyYXBzIGEgTklPIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JhcChmaW5hbCBCeXRlQnVmZmVyIHZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvQ29yZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vSW9Db3JlLmphdmEKaW5kZXggZDVhNzM4NC4uNzNlNTQ5MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vSW9Db3JlLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vSW9Db3JlLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pbzsKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBobWwuR3JhcGhNTElvOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW87CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvSW87CkBAIC0yNyw3ICsyOCw5IEBACiAgKiBtZXRob2RzIHN0YXRpY2FsbHkuCiAgKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9LgogICovCitARGVwcmVjYXRlZAogcHVibGljIGZpbmFsIGNsYXNzIElvQ29yZSB7CiAKICAgICBwcml2YXRlIElvQ29yZSgpIHt9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvRGF0YVR5cGUuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9EYXRhVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNTlkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvRGF0YVR5cGUuamF2YQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8qKgorICogUmVwcmVzZW50cyBhIEdyYXBoQmluYXJ5IGRhdGEgdHlwZS4KKyAqLworcHVibGljIGVudW0gRGF0YVR5cGUgeworICAgIElOVCgweDAxKSwKKyAgICBMT05HKDB4MDIpLAorICAgIFNUUklORygwWDAzKSwKKyAgICBEQVRFKDBYMDQpLAorICAgIFRJTUVTVEFNUCgwWDA1KSwKKyAgICBDTEFTUygwWDA2KSwKKyAgICBET1VCTEUoMFgwNyksCisgICAgRkxPQVQoMFgwOCksCisgICAgTElTVCgwWDA5KSwKKyAgICBNQVAoMFgwQSksCisgICAgU0VUKDBYMEIpLAorICAgIFVVSUQoMFgwQyksCisgICAgRURHRSgwWDBEKSwKKyAgICBQQVRIKDBYMEUpLAorICAgIFBST1BFUlRZKDBYMEYpLAorICAgIEdSQVBIKDBYMTApLAorICAgIFZFUlRFWCgwWDExKSwKKyAgICBWRVJURVhQUk9QRVJUWSgwWDEyKSwKKyAgICBCQVJSSUVSKDBYMTMpLAorICAgIEJJTkRJTkcoMFgxNCksCisgICAgQllURUNPREUoMFgxNSksCisgICAgQ0FSRElOQUxJVFkoMFgxNiksCisgICAgQ09MVU1OKDBYMTcpLAorICAgIERJUkVDVElPTigwWDE4KSwKKyAgICBPUEVSQVRPUigwWDE5KSwKKyAgICBPUkRFUigwWDFBKSwKKyAgICBQSUNLKDBYMUIpLAorICAgIFBPUCgwWDFDKSwKKyAgICBMQU1CREEoMFgxRCksCisgICAgUCgwWDFFKSwKKyAgICBTQ09QRSgwWDFGKSwKKyAgICBUKDBYMjApLAorICAgIFRSQVZFUlNFUigwWDIxKSwKKyAgICBCSUdERUNJTUFMKDBYMjIpLAorICAgIEJJR0lOVEVHRVIoMFgyMyksCisgICAgQllURSgwWDI0KSwKKyAgICBCWVRFQlVGRkVSKDBYMjUpLAorICAgIFNIT1JUKDBYMjYpLAorICAgIEJPT0xFQU4oMHgyNyksCisgICAgVEVYVFAoMHgyOCksCisgICAgVFJBVkVSU0FMU1RSQVRFR1koMFgyOSksCisgICAgQlVMS1NFVCgwWDJBKSwKKyAgICBUUkVFKDBYMkIpLAorICAgIE1FVFJJQ1MoMHgyQyksCisgICAgVFJBVkVSU0FMTUVUUklDUygweDJEKSwKKworICAgIENIQVIoMFg4MCksCisgICAgRFVSQVRJT04oMFg4MSksCisgICAgSU5FVEFERFJFU1MoMFg4MiksCisgICAgSU5TVEFOVCgwWDgzKSwKKyAgICBMT0NBTERBVEUoMFg4NCksCisgICAgTE9DQUxEQVRFVElNRSgwWDg1KSwKKyAgICBMT0NBTFRJTUUoMFg4NiksCisgICAgTU9OVEhEQVkoMFg4NyksCisgICAgT0ZGU0VUREFURVRJTUUoMFg4OCksCisgICAgT0ZGU0VUVElNRSgwWDg5KSwKKyAgICBQRVJJT0QoMFg4QSksCisgICAgWUVBUigwWDhCKSwKKyAgICBZRUFSTU9OVEgoMFg4QyksCisgICAgWk9ORURBVEVUSU1FKDBYOEQpLAorICAgIFpPTkVPRkZTRVQoMFg4RSksCisKKyAgICBDVVNUT00oMCksCisgICAgVU5TUEVDSUZJRURfTlVMTCgwWEZFKTsKKworICAgIHByaXZhdGUgZmluYWwgaW50IGNvZGU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWFwPEludGVnZXIsIERhdGFUeXBlPiB0eXBlQnlDb2RlID0gbmV3IEhhc2hNYXA8PigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE1hcDxEYXRhVHlwZSwgYnl0ZVtdPiBidWZmZXJCeURhdGFUeXBlID0gbmV3IEhhc2hNYXA8PigpOworCisgICAgc3RhdGljIHsKKyAgICAgICAgZm9yIChEYXRhVHlwZSB0IDogRGF0YVR5cGUudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIHR5cGVCeUNvZGUucHV0KHQuY29kZSwgdCk7CisgICAgICAgICAgICBidWZmZXJCeURhdGFUeXBlLnB1dCh0LCBuZXcgYnl0ZVtdIHsgKGJ5dGUpdC5jb2RlIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgRGF0YVR5cGUoZmluYWwgaW50IGNvZGUpIHsKKyAgICAgICAgdGhpcy5jb2RlID0gY29kZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBkYXRhIHR5cGUgY29kZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldENvZGUoKSB7CisgICAgICAgIHJldHVybiBjb2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGEgdHlwZSBjb2RlLgorICAgICAqLworICAgIHB1YmxpYyBieXRlIGdldENvZGVCeXRlKCkgeworICAgICAgICByZXR1cm4gKGJ5dGUpIGNvZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBhIGJ5dGUgYXJyYXkgY29udGFpbmluZyBhIHNpbmdsZSBieXRlIHJlcHJlc2VudGluZyB0aGUgdHlwZSBjb2RlLgorICAgICAqLworICAgIGJ5dGVbXSBnZXREYXRhVHlwZUJ1ZmZlcigpIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlckJ5RGF0YVR5cGUuZ2V0KHRoaXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBEYXRhVHlwZSBieSBjb2RlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgRGF0YVR5cGUgZ2V0KGZpbmFsIGludCBjb2RlKSB7CisgICAgICAgIHJldHVybiB0eXBlQnlDb2RlLmdldChjb2RlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvR3JhcGhCaW5hcnlJby5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0dyYXBoQmluYXJ5SW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzNlNjU1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0dyYXBoQmluYXJ5SW8uamF2YQpAQCAtMCwwICsxLDYwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uR3JhcGhSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uR3JhcGhXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW87CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5NYXBwZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIFRoaXMgaXMgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgSW99IHdoaWNoIGlzIG9ubHkgdXNlZCBpbiB0aGUgY29udGV4dCBvZiBoZWxwaW5nIHRvIGNvbmZpZ3VyZSBhCisgKiBHcmFwaEJpbmFyeSB7QGNvZGUgTWVzc2FnZVNlcmlhbGl6ZXJ9IHdpdGggYW4ge0BsaW5rIElvUmVnaXN0cnl9LiBJdCdzIG1ldGhvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZC4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBHcmFwaEJpbmFyeUlvIGltcGxlbWVudHMgSW8geworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBHcmFwaFJlYWRlci5SZWFkZXJCdWlsZGVyIHJlYWRlcigpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJHcmFwaEJpbmFyeUlvIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IElvUmVnaXN0cnkgY29uZmlndXJhdGlvbiAtIGl0J3MgbWV0aG9kcyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoV3JpdGVyLldyaXRlckJ1aWxkZXIgd3JpdGVyKCkgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIkdyYXBoQmluYXJ5SW8gaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgSW9SZWdpc3RyeSBjb25maWd1cmF0aW9uIC0gaXQncyBtZXRob2RzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgTWFwcGVyLkJ1aWxkZXIgbWFwcGVyKCkgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIkdyYXBoQmluYXJ5SW8gaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgSW9SZWdpc3RyeSBjb25maWd1cmF0aW9uIC0gaXQncyBtZXRob2RzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUdyYXBoKGZpbmFsIFN0cmluZyBmaWxlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIkdyYXBoQmluYXJ5SW8gaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgSW9SZWdpc3RyeSBjb25maWd1cmF0aW9uIC0gaXQncyBtZXRob2RzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCByZWFkR3JhcGgoZmluYWwgU3RyaW5nIGZpbGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiR3JhcGhCaW5hcnlJbyBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBJb1JlZ2lzdHJ5IGNvbmZpZ3VyYXRpb24gLSBpdCdzIG1ldGhvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9HcmFwaEJpbmFyeVJlYWRlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0dyYXBoQmluYXJ5UmVhZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUxMjlmNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9HcmFwaEJpbmFyeVJlYWRlci5qYXZhCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBSZWFkcyBhIHZhbHVlIGZyb20gYSBidWZmZXIgdXNpbmcgdGhlIHtAbGluayBUeXBlU2VyaWFsaXplcn0gaW5zdGFuY2VzIGNvbmZpZ3VyZWQgaW4gdGhlCisgKiB7QGxpbmsgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeX0uCisgKgorICogPHA+CisgKiAgICAgVGhpcyBjbGFzcyBleHBvc2VzIHR3byBkaWZmZXJlbnQgbWV0aG9kcyB0byByZWFkIGEgdmFsdWUgZnJvbSBhIGJ1ZmZlcjoge0BsaW5rIEdyYXBoQmluYXJ5UmVhZGVyI3JlYWQoQnVmZmVyKX0KKyAqICAgICBhbmQge0BsaW5rIEdyYXBoQmluYXJ5UmVhZGVyI3JlYWRWYWx1ZShCdWZmZXIsIENsYXNzLCBib29sZWFuKX06CisgKiAgICAgPHVsPgorICogICAgICAgICA8bGk+e0Bjb2RlIHJlYWQoKX0gbWV0aG9kIGV4cGVjdHMgYSB2YWx1ZSBpbiBmdWxseS1xdWFsaWZpZWQgZm9ybWF0LCBjb21wb3NlZCBvZgorICogICAgICAgICA8Y29kZT57dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfTwvY29kZT4uPC9saT4KKyAqICAgICAgICAgPGxpPntAY29kZSByZWFkVmFsdWUoKX0gbWV0aG9kIGV4cGVjdHMgYSA8Y29kZT57dmFsdWVfZmxhZ317dmFsdWV9PC9jb2RlPiB3aGVuIGEgdmFsdWUgaXMgbnVsbGFibGUgYW5kCisgKiAgICAgICAgIG9ubHkgPGNvZGU+e3ZhbHVlfTwvY29kZT4gd2hlbiBhIHZhbHVlIGlzIG5vdCBudWxsYWJsZS4KKyAqICAgICAgICAgPC9saT4KKyAqICAgICA8L3VsPgorICogPC9wPgorICoKKyAqIDxwPgorICogICAgIFRoZSB7QGxpbmsgR3JhcGhCaW5hcnlSZWFkZXJ9IHNob3VsZCBiZSB1c2VkIHRvIHJlYWQgYSBuZXN0ZWQga25vd24gdHlwZSBmcm9tIGEge0BsaW5rIFR5cGVTZXJpYWxpemVyfS4KKyAqICAgICBGb3IgZXhhbXBsZSwgaWYgYSBQT0lOVCB0eXBlIGlzIGNvbXBvc2VkIGJ5IHR3byBkb3VibGVzIHJlcHJlc2VudGluZyB0aGUgcG9zaXRpb24gaW4gdGhlIHggYW5kIHkgYXhlcywgYQorICogICAgIHtAbGluayBUeXBlU2VyaWFsaXplcn0gZm9yIFBPSU5UIHR5cGUgc2hvdWxkIHVzZSB0aGUgcHJvdmlkZWQge0BsaW5rIEdyYXBoQmluYXJ5UmVhZGVyfSBpbnN0YW5jZSB0byByZWFkIHRob3NlCisgKiAgICAgdHdvIGRvdWJsZSB2YWx1ZXMuIEFzIHggYW5kIHkgdmFsdWVzIGFyZSBleHBlY3RlZCB0byBiZSBwcm92aWRlZCBhcyBub24tbnVsbGFibGUgZG91YmxlcywgdGhlIG1ldGhvZAorICogICAgIHtAY29kZSByZWFkVmFsdWUoKX0gc2hvdWxkIGJlIHVzZWQ6IHtAY29kZSByZWFkVmFsdWUoYnVmZmVyLCBEb3VibGUuY2xhc3MsIGZhbHNlKX0KKyAqIDwvcD4KKyAqLworcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5UmVhZGVyIHsKKyAgICBwcml2YXRlIGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnk7CisKKyAgICBwdWJsaWMgR3JhcGhCaW5hcnlSZWFkZXIoKSB7CisgICAgICAgIHRoaXMoVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5JTlNUQU5DRSk7CisgICAgfQorCisgICAgcHVibGljIEdyYXBoQmluYXJ5UmVhZGVyKGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnkpIHsKKyAgICAgICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlYWRzIGEgdmFsdWUgZm9yIGFuIHNwZWNpZmljIHR5cGUuCisgICAgICoKKyAgICAgKiA8cD5XaGVuIHRoZSB2YWx1ZSBpcyBudWxsYWJsZSwgdGhlIHJlYWRlciBleHBlY3RzIHRoZSA8Y29kZT57dmFsdWVfZmxhZ317dmFsdWV9PC9jb2RlPiB0byBiZSBjb250YWluZWQgaW4gdGhlCisgICAgICogYnVmZmVyLjwvcD4KKyAgICAgKgorICAgICAqIDxwPldoZW4gdGhlIHZhbHVlIGlzIG5vdCBudWxsYWJsZSwgdGhlIHJlYWRlciBleHBlY3RzIG9ubHkgdGhlIDxjb2RlPnt2YWx1ZX08L2NvZGU+IHRvIGJlIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAgKiBidWZmZXIuPC9wPgorICAgICAqLworICAgIHB1YmxpYyA8VD4gVCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgQ2xhc3M8VD4gdHlwZSwgZmluYWwgYm9vbGVhbiBudWxsYWJsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGJ1ZmZlciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbnB1dCBjYW5ub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInR5cGUgY2Fubm90IGJlIG51bGwuIik7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplcjxUPiBzZXJpYWxpemVyID0gcmVnaXN0cnkuZ2V0U2VyaWFsaXplcih0eXBlKTsKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIucmVhZFZhbHVlKGJ1ZmZlciwgdGhpcywgbnVsbGFibGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlYWRzIHRoZSB0eXBlIGNvZGUsIGluZm9ybWF0aW9uIGFuZCB2YWx1ZSBvZiBhIGdpdmVuIGJ1ZmZlciB3aXRoIGZ1bGx5LXF1YWxpZmllZCBmb3JtYXQuCisgICAgICovCisgICAgcHVibGljIDxUPiBUIHJlYWQoZmluYWwgQnVmZmVyIGJ1ZmZlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gRnVsbHktcXVhbGlmaWVkIGZvcm1hdDoge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX0KKyAgICAgICAgZmluYWwgRGF0YVR5cGUgdHlwZSA9IERhdGFUeXBlLmdldChCeXRlLnRvVW5zaWduZWRJbnQoYnVmZmVyLnJlYWRCeXRlKCkpKTsKKworICAgICAgICBpZiAodHlwZSA9PSBEYXRhVHlwZS5VTlNQRUNJRklFRF9OVUxMKSB7CisgICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBUeXBlU2VyaWFsaXplciBmb3IgdW5zcGVjaWZpZWQgbnVsbCBvYmplY3QKKyAgICAgICAgICAgIC8vIFJlYWQgdGhlIHZhbHVlX2ZsYWcgLSAoZm9sZGluZyB0aGUgYnVmZmVyLnJlYWRCeXRlKCkgaW50byB0aGUgYXNzZXJ0IGRvZXMgbm90IGFkdmFuY2UgdGhlIGluZGV4IHNvCisgICAgICAgICAgICAvLyBhc3NpZ24gdG8gYSB2YXIgZmlyc3QgYW5kIHRoZW4gZG8gZXF1YWxpdHkgb24gdGhhdCAtIGxlYXJuZWQgdGhhdCB0aGUgaGFyZCB3YXkKKyAgICAgICAgICAgIGZpbmFsIGJ5dGUgY2hlY2sgPSBidWZmZXIucmVhZEJ5dGUoKTsKKyAgICAgICAgICAgIGFzc2VydCBjaGVjayA9PSAxOworCisgICAgICAgICAgICAvLyBKdXN0IHJldHVybiBudWxsCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIFR5cGVTZXJpYWxpemVyPFQ+IHNlcmlhbGl6ZXI7CisgICAgICAgIGlmICh0eXBlICE9IERhdGFUeXBlLkNVU1RPTSkgeworICAgICAgICAgICAgc2VyaWFsaXplciA9IHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIodHlwZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY3VzdG9tVHlwZU5hbWUgPSB0aGlzLnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgc2VyaWFsaXplciA9IHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXJGb3JDdXN0b21UeXBlKGN1c3RvbVR5cGVOYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzZXJpYWxpemVyLnJlYWQoYnVmZmVyLCB0aGlzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvR3JhcGhCaW5hcnlXcml0ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9HcmFwaEJpbmFyeVdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMGIwOTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvR3JhcGhCaW5hcnlXcml0ZXIuamF2YQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlcy5DdXN0b21UeXBlU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXMuVHJhbnNmb3JtU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIFdyaXRlcyBhIHZhbHVlIHRvIGEgYnVmZmVyIHVzaW5nIHRoZSB7QGxpbmsgVHlwZVNlcmlhbGl6ZXJ9IGluc3RhbmNlcyBjb25maWd1cmVkIGluIHRoZQorICoge0BsaW5rIFR5cGVTZXJpYWxpemVyUmVnaXN0cnl9LgorICoKKyAqIDxwPgorICogICAgIFRoaXMgY2xhc3MgZXhwb3NlcyB0d28gZGlmZmVyZW50IG1ldGhvZHMgdG8gd3JpdGUgYSB2YWx1ZSB0byBhIGJ1ZmZlcjoKKyAqICAgICB7QGxpbmsgR3JhcGhCaW5hcnlXcml0ZXIjd3JpdGUoT2JqZWN0LCBCdWZmZXIpfSBhbmQKKyAqICAgICB7QGxpbmsgR3JhcGhCaW5hcnlXcml0ZXIjd3JpdGVWYWx1ZShPYmplY3QsIEJ1ZmZlciwgYm9vbGVhbil9OgorICogICAgIDx1bD4KKyAqICAgICAgICAgPGxpPntAY29kZSB3cml0ZSgpfSBtZXRob2Qgd3JpdGVzIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgKiAgICAgICAgIDxjb2RlPnt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9PC9jb2RlPiBjb21wb25lbnRzLjwvbGk+CisgKiAgICAgICAgIDxsaT57QGNvZGUgd3JpdGVWYWx1ZSgpfSBtZXRob2Qgd3JpdGVzIHRoZSA8Y29kZT57dmFsdWVfZmxhZ317dmFsdWV9PC9jb2RlPiB3aGVuIGEgdmFsdWUgaXMgbnVsbGFibGUgYW5kCisgKiAgICAgICAgIG9ubHkgPGNvZGU+e3ZhbHVlfTwvY29kZT4gd2hlbiBhIHZhbHVlIGlzIG5vdCBudWxsYWJsZS4KKyAqICAgICAgICAgPC9saT4KKyAqICAgICA8L3VsPgorICogPC9wPgorICovCitwdWJsaWMgY2xhc3MgR3JhcGhCaW5hcnlXcml0ZXIgeworICAgIHByaXZhdGUgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeTsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBieXRlIFZBTFVFX0ZMQUdfTlVMTCA9IDE7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgYnl0ZSBWQUxVRV9GTEFHX05PTkUgPSAwOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYnl0ZSBWRVJTSU9OX0JZVEUgPSAoYnl0ZSkweDgxOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJ5dGVbXSB1bnNwZWNpZmllZE51bGxCeXRlcyA9IG5ldyBieXRlW10geyBEYXRhVHlwZS5VTlNQRUNJRklFRF9OVUxMLmdldENvZGVCeXRlKCksIDB4MDF9OworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJ5dGVbXSBjdXN0b21UeXBlQ29kZUJ5dGVzID0gbmV3IGJ5dGVbXSB7IERhdGFUeXBlLkNVU1RPTS5nZXRDb2RlQnl0ZSgpIH07CisKKyAgICBwdWJsaWMgR3JhcGhCaW5hcnlXcml0ZXIoKSB7CisgICAgICAgIHRoaXMoVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5JTlNUQU5DRSk7CisgICAgfQorCisgICAgcHVibGljIEdyYXBoQmluYXJ5V3JpdGVyKGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnkpIHsKKyAgICAgICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFdyaXRlcyBhIHZhbHVlIHdpdGhvdXQgaW5jbHVkaW5nIHR5cGUgaW5mb3JtYXRpb24uCisgICAgICovCisgICAgcHVibGljIDxUPiB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgYm9vbGVhbiBudWxsYWJsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghbnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlVuZXhwZWN0ZWQgbnVsbCB2YWx1ZSB3aGVuIG51bGxhYmxlIGlzIGZhbHNlIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdyaXRlVmFsdWVGbGFnTnVsbChidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQ2xhc3M8Pz4gb2JqZWN0Q2xhc3MgPSB2YWx1ZS5nZXRDbGFzcygpOworCisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyPFQ+IHNlcmlhbGl6ZXIgPSAoVHlwZVNlcmlhbGl6ZXI8VD4pIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIob2JqZWN0Q2xhc3MpOworICAgICAgICBzZXJpYWxpemVyLndyaXRlVmFsdWUodmFsdWUsIGJ1ZmZlciwgdGhpcywgbnVsbGFibGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdyaXRlcyBhbiBvYmplY3QgaW4gZnVsbHktcXVhbGlmaWVkIGZvcm1hdCwgY29udGFpbmluZyB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgPFQ+IHZvaWQgd3JpdGUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIHJldHVybiBPYmplY3Qgb2YgdHlwZSAidW5zcGVjaWZpZWQgb2JqZWN0IG51bGwiIHdpdGggdGhlIHZhbHVlIGZsYWcgc2V0IHRvIG51bGwuCisgICAgICAgICAgICBidWZmZXIud3JpdGVCeXRlcyh1bnNwZWNpZmllZE51bGxCeXRlcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBDbGFzczw/PiBvYmplY3RDbGFzcyA9IHZhbHVlLmdldENsYXNzKCk7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyPFQ+IHNlcmlhbGl6ZXIgPSAoVHlwZVNlcmlhbGl6ZXI8VD4pIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIob2JqZWN0Q2xhc3MpOworCisgICAgICAgIGlmIChzZXJpYWxpemVyIGluc3RhbmNlb2YgQ3VzdG9tVHlwZVNlcmlhbGl6ZXIpIHsKKyAgICAgICAgICAgIC8vIEl0J3MgYSBjdXN0b20gdHlwZQorICAgICAgICAgICAgQ3VzdG9tVHlwZVNlcmlhbGl6ZXIgY3VzdG9tVHlwZVNlcmlhbGl6ZXIgPSAoQ3VzdG9tVHlwZVNlcmlhbGl6ZXIpIHNlcmlhbGl6ZXI7CisKKyAgICAgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGVzKGN1c3RvbVR5cGVDb2RlQnl0ZXMpOworICAgICAgICAgICAgd3JpdGVWYWx1ZShjdXN0b21UeXBlU2VyaWFsaXplci5nZXRUeXBlTmFtZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGN1c3RvbVR5cGVTZXJpYWxpemVyLndyaXRlKHZhbHVlLCBidWZmZXIsIHRoaXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlcmlhbGl6ZXIgaW5zdGFuY2VvZiBUcmFuc2Zvcm1TZXJpYWxpemVyKSB7CisgICAgICAgICAgICAvLyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIHRyYW5zZm9ybWVkIGludG8gYW5vdGhlciB0eXBlCisgICAgICAgICAgICAvLyBiZWZvcmUgc2VyaWFsaXphdGlvbiwgZS5nLiwgTWFwLkVudHJ5CisgICAgICAgICAgICBUcmFuc2Zvcm1TZXJpYWxpemVyPFQ+IHRyYW5zZm9ybVNlcmlhbGl6ZXIgPSAoVHJhbnNmb3JtU2VyaWFsaXplcjxUPikgc2VyaWFsaXplcjsKKyAgICAgICAgICAgIHdyaXRlKHRyYW5zZm9ybVNlcmlhbGl6ZXIudHJhbnNmb3JtKHZhbHVlKSwgYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRyeSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBjb21wb3NpdGUgYnVmZmVyCisgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGVzKHNlcmlhbGl6ZXIuZ2V0RGF0YVR5cGUoKS5nZXREYXRhVHlwZUJ1ZmZlcigpKTsKKyAgICAgICAgc2VyaWFsaXplci53cml0ZSh2YWx1ZSwgYnVmZmVyLCB0aGlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXByZXNlbnRzIGEgbnVsbCB2YWx1ZSBvZiBhIHNwZWNpZmljIHR5cGUsIHVzZWZ1bCB3aGVuIHRoZSBwYXJlbnQgdHlwZSBjb250YWlucyBhIHR5cGUgcGFyYW1ldGVyIHRoYXQgbXVzdCBiZQorICAgICAqIHNwZWNpZmllZC4KKyAgICAgKiA8cD5Ob3RlIHRoYXQgZm9yIHNpbXBsZSB0eXBlcywgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uIHdpbGwgYmUgPGNvZGU+bnVsbDwvY29kZT4uPC9wPgorICAgICAqLworICAgIHB1YmxpYyA8VD4gdm9pZCB3cml0ZUZ1bGx5UXVhbGlmaWVkTnVsbChmaW5hbCBDbGFzczxUPiBvYmplY3RDbGFzcywgQnVmZmVyIGJ1ZmZlciwgZmluYWwgT2JqZWN0IGluZm9ybWF0aW9uKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBUeXBlU2VyaWFsaXplcjxUPiBzZXJpYWxpemVyID0gcmVnaXN0cnkuZ2V0U2VyaWFsaXplcihvYmplY3RDbGFzcyk7CisgICAgICAgIHNlcmlhbGl6ZXIud3JpdGUobnVsbCwgYnVmZmVyLCB0aGlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXcml0ZXMgYSBzaW5nbGUgYnl0ZSByZXByZXNlbnRpbmcgdGhlIG51bGwgdmFsdWVfZmxhZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZVZhbHVlRmxhZ051bGwoQnVmZmVyIGJ1ZmZlcikgeworICAgICAgICBidWZmZXIud3JpdGVCeXRlKFZBTFVFX0ZMQUdfTlVMTCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogV3JpdGVzIGEgc2luZ2xlIGJ5dGUgd2l0aCB2YWx1ZSAwLCByZXByZXNlbnRpbmcgYW4gdW5zZXQgdmFsdWVfZmxhZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZVZhbHVlRmxhZ05vbmUoQnVmZmVyIGJ1ZmZlcikgeworICAgICAgICBidWZmZXIud3JpdGVCeXRlKFZBTFVFX0ZMQUdfTk9ORSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L1R5cGVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvVHlwZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTBkMjUxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L1R5cGVTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogUmVwcmVzZW50cyBhIHNlcmlhbGl6ZXIgZm9yIGEgZ2l2ZW4gdHlwZS4KKyAqLworcHVibGljIGludGVyZmFjZSBUeXBlU2VyaWFsaXplcjxUPiB7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB7QGxpbmsgRGF0YVR5cGV9IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHtAbGluayBUfS4KKyAgICAgKi8KKyAgICBEYXRhVHlwZSBnZXREYXRhVHlwZSgpOworCisgICAgLyoqCisgICAgICogUmVhZHMgdGhlIHR5cGUgaW5mb3JtYXRpb24gYW5kIHZhbHVlIGZyb20gdGhlIGJ1ZmZlciBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBULgorICAgICAqLworICAgIFQgcmVhZChmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb247CisKKyAgICAvKioKKyAgICAgKiBSZWFkcyB0aGUgdmFsdWUgZnJvbSB0aGUgYnVmZmVyIChub3QgdGhlIHR5cGUgaW5mb3JtYXRpb24pIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIFQuCisgICAgICogPHA+CisgICAgICogICAgIEltcGxlbWVudG9ycyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gYSBjb21wbGV4IHR5cGUgZG9lc24ndCBzdXBwb3J0IHJlYWRpbmcgd2l0aG91dCB0aGUgdHlwZQorICAgICAqICAgICBpbmZvcm1hdGlvbi4KKyAgICAgKiA8L3A+CisgICAgICovCisgICAgVCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCwgZmluYWwgYm9vbGVhbiBudWxsYWJsZSkgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogV3JpdGVzIHRoZSB0eXBlIGNvZGUsIGluZm9ybWF0aW9uIGFuZCB2YWx1ZSB0byBhIGJ1ZmZlciB1c2luZyB0aGUgcHJvdmlkZWQgYWxsb2NhdG9yLgorICAgICAqLworICAgIHZvaWQgd3JpdGUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogV3JpdGVzIHRoZSB2YWx1ZSB0byBhIGJ1ZmZlciwgY29tcG9zZWQgYnkgdGhlIHZhbHVlIGZsYWcgYW5kIHRoZSBzZXF1ZW5jZSBvZiBieXRlcy4KKyAgICAgKi8KKyAgICB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCwgZmluYWwgYm9vbGVhbiBudWxsYWJsZSkgdGhyb3dzIElPRXhjZXB0aW9uOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L1R5cGVTZXJpYWxpemVyUmVnaXN0cnkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9UeXBlU2VyaWFsaXplclJlZ2lzdHJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlhZWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9UeXBlU2VyaWFsaXplclJlZ2lzdHJ5LmphdmEKQEAgLTAsMCArMSwzOTcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXMuKjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3BlcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcmRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsT3B0aW9uUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkJ1bGtTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuVHJlZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuQW5kUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuT3JQOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxFeHBsYW5hdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Db2x1bW47CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLkxhbWJkYTsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXI7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS5uZXQuSW5ldDRBZGRyZXNzOworaW1wb3J0IGphdmEubmV0LkluZXQ2QWRkcmVzczsKK2ltcG9ydCBqYXZhLm5ldC5JbmV0QWRkcmVzczsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEuc3FsLlRpbWVzdGFtcDsKK2ltcG9ydCBqYXZhLnRpbWUuRHVyYXRpb247CitpbXBvcnQgamF2YS50aW1lLkluc3RhbnQ7CitpbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZTsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlVGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxUaW1lOworaW1wb3J0IGphdmEudGltZS5Nb250aERheTsKK2ltcG9ydCBqYXZhLnRpbWUuT2Zmc2V0RGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLk9mZnNldFRpbWU7CitpbXBvcnQgamF2YS50aW1lLlBlcmlvZDsKK2ltcG9ydCBqYXZhLnRpbWUuWWVhcjsKK2ltcG9ydCBqYXZhLnRpbWUuWWVhck1vbnRoOworaW1wb3J0IGphdmEudGltZS5ab25lT2Zmc2V0OworaW1wb3J0IGphdmEudGltZS5ab25lZERhdGVUaW1lOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmEudXRpbC5VVUlEOworaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbmN1cnJlbnRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5GdW5jdGlvbjsKKworcHVibGljIGNsYXNzIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgeworCisgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgeworICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSZWdpc3RyeUVudHJ5W10gZGVmYXVsdEVudHJpZXMgPSBuZXcgUmVnaXN0cnlFbnRyeVtdIHsKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oSW50ZWdlci5jbGFzcywgU2luZ2xlVHlwZVNlcmlhbGl6ZXIuSW50U2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KExvbmcuY2xhc3MsIFNpbmdsZVR5cGVTZXJpYWxpemVyLkxvbmdTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oU3RyaW5nLmNsYXNzLCBuZXcgU3RyaW5nU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oRGF0ZS5jbGFzcywgRGF0ZVNlcmlhbGl6ZXIuRGF0ZVNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihUaW1lc3RhbXAuY2xhc3MsIERhdGVTZXJpYWxpemVyLlRpbWVzdGFtcFNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihDbGFzcy5jbGFzcywgbmV3IENsYXNzU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oRG91YmxlLmNsYXNzLCBTaW5nbGVUeXBlU2VyaWFsaXplci5Eb3VibGVTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oRmxvYXQuY2xhc3MsIFNpbmdsZVR5cGVTZXJpYWxpemVyLkZsb2F0U2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KExpc3QuY2xhc3MsIG5ldyBMaXN0U2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oTWFwLmNsYXNzLCBuZXcgTWFwU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oU2V0LmNsYXNzLCBuZXcgU2V0U2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVVVJRC5jbGFzcywgbmV3IFVVSURTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihFZGdlLmNsYXNzLCBuZXcgRWRnZVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFBhdGguY2xhc3MsIG5ldyBQYXRoU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVmVydGV4UHJvcGVydHkuY2xhc3MsIG5ldyBWZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIoKSksIC8vIG5lZWRzIHRvIHJlZ2lzdGVyIGJlZm9yZSB0aGUgbGVzcyBzcGVjaWZpYyBQcm9wZXJ0eQorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihQcm9wZXJ0eS5jbGFzcywgbmV3IFByb3BlcnR5U2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oR3JhcGguY2xhc3MsIG5ldyBHcmFwaFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFZlcnRleC5jbGFzcywgbmV3IFZlcnRleFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFNhY2tGdW5jdGlvbnMuQmFycmllci5jbGFzcywgRW51bVNlcmlhbGl6ZXIuQmFycmllclNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihCeXRlY29kZS5CaW5kaW5nLmNsYXNzLCBuZXcgQmluZGluZ1NlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEJ5dGVjb2RlLmNsYXNzLCBuZXcgQnl0ZUNvZGVTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5jbGFzcywgRW51bVNlcmlhbGl6ZXIuQ2FyZGluYWxpdHlTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQ29sdW1uLmNsYXNzLCBFbnVtU2VyaWFsaXplci5Db2x1bW5TZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oRGlyZWN0aW9uLmNsYXNzLCBFbnVtU2VyaWFsaXplci5EaXJlY3Rpb25TZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oT3BlcmF0b3IuY2xhc3MsIEVudW1TZXJpYWxpemVyLk9wZXJhdG9yU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE9yZGVyLmNsYXNzLCBFbnVtU2VyaWFsaXplci5PcmRlclNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljay5jbGFzcywgRW51bVNlcmlhbGl6ZXIuUGlja1NlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihQb3AuY2xhc3MsIEVudW1TZXJpYWxpemVyLlBvcFNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihMYW1iZGEuY2xhc3MsIG5ldyBMYW1iZGFTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihQLmNsYXNzLCBuZXcgUFNlcmlhbGl6ZXI8PihEYXRhVHlwZS5QLCBQLmNsYXNzKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEFuZFAuY2xhc3MsIG5ldyBQU2VyaWFsaXplcjw+KERhdGFUeXBlLlAsIEFuZFAuY2xhc3MpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oT3JQLmNsYXNzLCBuZXcgUFNlcmlhbGl6ZXI8PihEYXRhVHlwZS5QLCBPclAuY2xhc3MpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVGV4dFAuY2xhc3MsIG5ldyBQU2VyaWFsaXplcjw+KERhdGFUeXBlLlRFWFRQLCBUZXh0UC5jbGFzcykpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihTY29wZS5jbGFzcywgRW51bVNlcmlhbGl6ZXIuU2NvcGVTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVC5jbGFzcywgRW51bVNlcmlhbGl6ZXIuVFNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihUcmF2ZXJzZXIuY2xhc3MsIG5ldyBUcmF2ZXJzZXJTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihCaWdEZWNpbWFsLmNsYXNzLCBuZXcgQmlnRGVjaW1hbFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEJpZ0ludGVnZXIuY2xhc3MsIG5ldyBCaWdJbnRlZ2VyU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQnl0ZS5jbGFzcywgU2luZ2xlVHlwZVNlcmlhbGl6ZXIuQnl0ZVNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihCeXRlQnVmZmVyLmNsYXNzLCBuZXcgQnl0ZUJ1ZmZlclNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFNob3J0LmNsYXNzLCBTaW5nbGVUeXBlU2VyaWFsaXplci5TaG9ydFNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihCb29sZWFuLmNsYXNzLCBTaW5nbGVUeXBlU2VyaWFsaXplci5Cb29sZWFuU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFRyYXZlcnNhbFN0cmF0ZWd5LmNsYXNzLCBuZXcgVHJhdmVyc2FsU3RyYXRlZ3lTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihCdWxrU2V0LmNsYXNzLCBuZXcgQnVsa1NldFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFRyZWUuY2xhc3MsIG5ldyBUcmVlU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oTWV0cmljcy5jbGFzcywgbmV3IE1ldHJpY3NTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihUcmF2ZXJzYWxNZXRyaWNzLmNsYXNzLCBuZXcgVHJhdmVyc2FsTWV0cmljc1NlcmlhbGl6ZXIoKSksCisKKyAgICAgICAgICAgIC8vIFRyYW5zZm9ybVNlcmlhbGl6ZXIgaW1wbGVtZW50YXRpb25zCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE1hcC5FbnRyeS5jbGFzcywgbmV3IE1hcEVudHJ5U2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVHJhdmVyc2FsRXhwbGFuYXRpb24uY2xhc3MsIG5ldyBUcmF2ZXJzYWxFeHBsYW5hdGlvblNlcmlhbGl6ZXIoKSksCisKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQ2hhcmFjdGVyLmNsYXNzLCBuZXcgQ2hhclNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KER1cmF0aW9uLmNsYXNzLCBuZXcgRHVyYXRpb25TZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihJbmV0QWRkcmVzcy5jbGFzcywgbmV3IEluZXRBZGRyZXNzU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oSW5ldDRBZGRyZXNzLmNsYXNzLCBuZXcgSW5ldEFkZHJlc3NTZXJpYWxpemVyPD4oKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEluZXQ2QWRkcmVzcy5jbGFzcywgbmV3IEluZXRBZGRyZXNzU2VyaWFsaXplcjw+KCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihJbnN0YW50LmNsYXNzLCBuZXcgSW5zdGFudFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KExvY2FsRGF0ZS5jbGFzcywgbmV3IExvY2FsRGF0ZVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KExvY2FsVGltZS5jbGFzcywgbmV3IExvY2FsVGltZVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KExvY2FsRGF0ZVRpbWUuY2xhc3MsIG5ldyBMb2NhbERhdGVUaW1lU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oTW9udGhEYXkuY2xhc3MsIG5ldyBNb250aERheVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE9mZnNldERhdGVUaW1lLmNsYXNzLCBuZXcgT2Zmc2V0RGF0ZVRpbWVTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihPZmZzZXRUaW1lLmNsYXNzLCBuZXcgT2Zmc2V0VGltZVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFBlcmlvZC5jbGFzcywgbmV3IFBlcmlvZFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFllYXIuY2xhc3MsIFNpbmdsZVR5cGVTZXJpYWxpemVyLlllYXJTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oWWVhck1vbnRoLmNsYXNzLCBuZXcgWWVhck1vbnRoU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oWm9uZWREYXRlVGltZS5jbGFzcywgbmV3IFpvbmVkRGF0ZVRpbWVTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8Pihab25lT2Zmc2V0LmNsYXNzLCBuZXcgWm9uZU9mZnNldFNlcmlhbGl6ZXIoKSkKKworICAgIH07CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgSU5TVEFOQ0UgPSBidWlsZCgpLmNyZWF0ZSgpOworCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCdWlsZGVyIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBMaXN0PFJlZ2lzdHJ5RW50cnk+IGxpc3QgPSBuZXcgTGlua2VkTGlzdDw+KCk7CisgICAgICAgIHByaXZhdGUgRnVuY3Rpb248Q2xhc3M8Pz4sIFR5cGVTZXJpYWxpemVyPD8+PiBmYWxsYmFja1Jlc29sdmVyOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBZGRzIGEgc2VyaWFsaXplciBmb3IgYSBidWlsdC1pbiB0eXBlLgorICAgICAgICAgKiA8cD4KKyAgICAgICAgICogICAgIE5vdGUgdGhhdCB3aGVuIHByb3ZpZGluZyBhIHNlcmlhbGl6ZXIgZm9yIGFuIEludGVyZmFjZSAoe0BsaW5rIFZlcnRleFByb3BlcnR5fSwge0BsaW5rIFByb3BlcnR5fSwKKyAgICAgICAgICogICAgIHtAbGluayBWZXJ0ZXh9LCAuLi4pLCB0aGUgc2VyaWFsaXplciByZXNvbHV0aW9uIGZyb20gdGhlIHJlZ2lzdHJ5IHdpbGwgYmUgZGVmaW5lZCBieSB0aGUgb3JkZXIgdGhhdAorICAgICAgICAgKiAgICAgaXQgd2FzIHByb3ZpZGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgdHlwZSBzZXJpYWxpemVyIHN0YXJ0aW5nIGZyb20gbW9zdCBzcGVjaWZpYyB0bworICAgICAgICAgKiAgICAgbGVzcyBzcGVjaWZpYyBvciB0byBwdXQgaXQgaW4gb3RoZXIgd29yZHMsIHN0YXJ0IGZyb20gZGVyaXZlZCB0eXBlcyBhbmQgdGhlbiBwYXJlbnQgdHlwZXMsIGUuZy4sCisgICAgICAgICAqICAgICB7QGxpbmsgVmVydGV4UHJvcGVydHl9IGJlZm9yZSB7QGxpbmsgUHJvcGVydHl9LgorICAgICAgICAgKiA8L3A+CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgPERUPiBCdWlsZGVyIGFkZChmaW5hbCBDbGFzczxEVD4gdHlwZSwgZmluYWwgVHlwZVNlcmlhbGl6ZXI8RFQ+IHNlcmlhbGl6ZXIpIHsKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVyLmdldERhdGFUeXBlKCkgPT0gRGF0YVR5cGUuQ1VTVE9NKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRGF0YVR5cGUgY2FuIG5vdCBiZSBDVVNUT00sIHVzZSBhZGRDdXN0b21UeXBlKCkgbWV0aG9kIGluc3RlYWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZXIuZ2V0RGF0YVR5cGUoKSA9PSBEYXRhVHlwZS5VTlNQRUNJRklFRF9OVUxMKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQWRkaW5nIGEgc2VyaWFsaXplciBmb3IgYSBVTlNQRUNJRklFRF9OVUxMIGlzIG5vdCBwZXJtaXR0ZWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZXIgaW5zdGFuY2VvZiBDdXN0b21UeXBlU2VyaWFsaXplcikgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAiQ3VzdG9tVHlwZVNlcmlhbGl6ZXIgaW1wbGVtZW50YXRpb25zIGFyZSByZXNlcnZlZCBmb3IgY3VzdG9tdHlwZXMiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGlzdC5hZGQobmV3IFJlZ2lzdHJ5RW50cnk8Pih0eXBlLCBzZXJpYWxpemVyKSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBBZGRzIGEgc2VyaWFsaXplciBmb3IgYSBjdXN0b20gdHlwZS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyA8RFQ+IEJ1aWxkZXIgYWRkQ3VzdG9tVHlwZShmaW5hbCBDbGFzczxEVD4gdHlwZSwgZmluYWwgQ3VzdG9tVHlwZVNlcmlhbGl6ZXI8RFQ+IHNlcmlhbGl6ZXIpIHsKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInNlcmlhbGl6ZXIgY2FuIG5vdCBiZSBudWxsIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVyLmdldERhdGFUeXBlKCkgIT0gRGF0YVR5cGUuQ1VTVE9NKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ3VzdG9tIHNlcmlhbGl6ZXIgbXVzdCB1c2UgQ1VTVE9NIGRhdGEgdHlwZSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2VyaWFsaXplci5nZXRUeXBlTmFtZSgpID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInNlcmlhbGl6ZXIgY3VzdG9tIHR5cGUgbmFtZSBjYW4gbm90IGJlIG51bGwiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGlzdC5hZGQobmV3IFJlZ2lzdHJ5RW50cnk8Pih0eXBlLCBzZXJpYWxpemVyKSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBQcm92aWRlcyBhIHdheSB0byByZXNvbHZlIHRoZSB0eXBlIHNlcmlhbGl6ZXIgdG8gdXNlIHdoZW4gdGhlcmUgaXNuJ3QgYW55IGRpcmVjdCBtYXRjaC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIHdpdGhGYWxsYmFja1Jlc29sdmVyKEZ1bmN0aW9uPENsYXNzPD8+LCBUeXBlU2VyaWFsaXplcjw/Pj4gZmFsbGJhY2tSZXNvbHZlcikgeworICAgICAgICAgICAgdGhpcy5mYWxsYmFja1Jlc29sdmVyID0gZmFsbGJhY2tSZXNvbHZlcjsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFR5cGVTZXJpYWxpemVyUmVnaXN0cnl9IGluc3RhbmNlIGJhc2VkIG9uIHRoZSBzZXJpYWxpemVycyBhZGRlZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IGNyZWF0ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeShsaXN0LCBmYWxsYmFja1Jlc29sdmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFJlZ2lzdHJ5RW50cnk8RFQ+IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBDbGFzczxEVD4gdHlwZTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBUeXBlU2VyaWFsaXplcjxEVD4gdHlwZVNlcmlhbGl6ZXI7CisKKyAgICAgICAgcHJpdmF0ZSBSZWdpc3RyeUVudHJ5KENsYXNzPERUPiB0eXBlLCBUeXBlU2VyaWFsaXplcjxEVD4gdHlwZVNlcmlhbGl6ZXIpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgICAgICAgICB0aGlzLnR5cGVTZXJpYWxpemVyID0gdHlwZVNlcmlhbGl6ZXI7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQ2xhc3M8RFQ+IGdldFR5cGUoKSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBEYXRhVHlwZSBnZXREYXRhVHlwZSgpIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlU2VyaWFsaXplci5nZXREYXRhVHlwZSgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRDdXN0b21UeXBlTmFtZSgpIHsKKyAgICAgICAgICAgIGlmIChnZXREYXRhVHlwZSgpICE9IERhdGFUeXBlLkNVU1RPTSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBDdXN0b21UeXBlU2VyaWFsaXplciBjdXN0b21UeXBlU2VyaWFsaXplciA9IChDdXN0b21UeXBlU2VyaWFsaXplcikgdHlwZVNlcmlhbGl6ZXI7CisgICAgICAgICAgICByZXR1cm4gY3VzdG9tVHlwZVNlcmlhbGl6ZXIuZ2V0VHlwZU5hbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUeXBlU2VyaWFsaXplcjxEVD4gZ2V0VHlwZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZVNlcmlhbGl6ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIE1hcDxDbGFzczw/PiwgVHlwZVNlcmlhbGl6ZXI8Pz4+IHNlcmlhbGl6ZXJzID0gbmV3IEhhc2hNYXA8PigpOworICAgIHByaXZhdGUgZmluYWwgTWFwPENsYXNzPD8+LCBUeXBlU2VyaWFsaXplcjw/Pj4gc2VyaWFsaXplcnNCeUludGVyZmFjZSA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKKyAgICBwcml2YXRlIGZpbmFsIE1hcDxEYXRhVHlwZSwgVHlwZVNlcmlhbGl6ZXI8Pz4+IHNlcmlhbGl6ZXJzQnlEYXRhVHlwZSA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICBwcml2YXRlIGZpbmFsIE1hcDxTdHJpbmcsIEN1c3RvbVR5cGVTZXJpYWxpemVyPiBzZXJpYWxpemVyc0J5Q3VzdG9tVHlwZU5hbWUgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgcHJpdmF0ZSBGdW5jdGlvbjxDbGFzczw/PiwgVHlwZVNlcmlhbGl6ZXI8Pz4+IGZhbGxiYWNrUmVzb2x2ZXI7CisKKyAgICAvKioKKyAgICAgKiBTdG9yZXMgc2VyaWFsaXplcnMgYnkgY2xhc3MsIHdoZXJlIHRoZSBjbGFzcyByZXNvbHV0aW9uIGludm9sdmVkIGEgbG9va3VwIG9yIHNwZWNpYWwgY29uZGl0aW9ucy4KKyAgICAgKiBUaGlzIGlzIHVzZWQgZm9yIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMgYW5kIGVudW1zLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgQ29uY3VycmVudEhhc2hNYXA8Q2xhc3M8Pz4sIFR5cGVTZXJpYWxpemVyPD8+PiBzZXJpYWxpemVyc0J5SW1wbGVtZW50YXRpb24gPSBuZXcgQ29uY3VycmVudEhhc2hNYXA8PigpOworCisgICAgcHJpdmF0ZSBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5KGZpbmFsIENvbGxlY3Rpb248UmVnaXN0cnlFbnRyeT4gZW50cmllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgRnVuY3Rpb248Q2xhc3M8Pz4sIFR5cGVTZXJpYWxpemVyPD8+PiBmYWxsYmFja1Jlc29sdmVyKSB7CisgICAgICAgIGZpbmFsIFNldDxDbGFzcz4gcHJvdmlkZWRUeXBlcyA9IG5ldyBIYXNoU2V0PD4oZW50cmllcy5zaXplKCkpOworCisgICAgICAgIC8vIEluY2x1ZGUgdXNlci1wcm92aWRlZCBlbnRyaWVzIGZpcnN0CisgICAgICAgIGZvciAoUmVnaXN0cnlFbnRyeSBlbnRyeSA6IGVudHJpZXMpIHsKKyAgICAgICAgICAgIHB1dChlbnRyeSk7CisgICAgICAgICAgICBwcm92aWRlZFR5cGVzLmFkZChlbnRyeS50eXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvbGxvd2VkIGJ5IHRoZSBkZWZhdWx0cworICAgICAgICBBcnJheXMuc3RyZWFtKGRlZmF1bHRFbnRyaWVzKS5maWx0ZXIoZSAtPiAhcHJvdmlkZWRUeXBlcy5jb250YWlucyhlLnR5cGUpKS5mb3JFYWNoKHRoaXM6OnB1dCk7CisKKyAgICAgICAgdGhpcy5mYWxsYmFja1Jlc29sdmVyID0gZmFsbGJhY2tSZXNvbHZlcjsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcHV0KGZpbmFsIFJlZ2lzdHJ5RW50cnkgZW50cnkpIHsKKyAgICAgICAgZmluYWwgQ2xhc3MgdHlwZSA9IGVudHJ5LmdldFR5cGUoKTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IGVudHJ5LmdldFR5cGVTZXJpYWxpemVyKCk7CisKKyAgICAgICAgaWYgKHR5cGUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJUeXBlIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlcmlhbGl6ZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJTZXJpYWxpemVyIGluc3RhbmNlIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlcmlhbGl6ZXIuZ2V0RGF0YVR5cGUoKSA9PSBudWxsICYmICEoc2VyaWFsaXplciBpbnN0YW5jZW9mIFRyYW5zZm9ybVNlcmlhbGl6ZXIpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIlNlcmlhbGl6ZXIgZGF0YSB0eXBlIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0eXBlLmlzSW50ZXJmYWNlKCkgJiYgIU1vZGlmaWVyLmlzQWJzdHJhY3QodHlwZS5nZXRNb2RpZmllcnMoKSkpIHsKKyAgICAgICAgICAgIC8vIERpcmVjdCBjbGFzcyBtYXRjaAorICAgICAgICAgICAgc2VyaWFsaXplcnMucHV0KHR5cGUsIHNlcmlhbGl6ZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSW50ZXJmYWNlIG9yIGFic3RyYWN0IGNsYXNzIGNhbiBiZSBhc3NpZ25lZCBieSBwcm92aWRlZCB0eXBlCisgICAgICAgICAgICBzZXJpYWxpemVyc0J5SW50ZXJmYWNlLnB1dCh0eXBlLCBzZXJpYWxpemVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXJpYWxpemVyLmdldERhdGFUeXBlKCkgPT0gRGF0YVR5cGUuQ1VTVE9NKSB7CisgICAgICAgICAgICBzZXJpYWxpemVyc0J5Q3VzdG9tVHlwZU5hbWUucHV0KGVudHJ5LmdldEN1c3RvbVR5cGVOYW1lKCksIChDdXN0b21UeXBlU2VyaWFsaXplcikgc2VyaWFsaXplcik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VyaWFsaXplci5nZXREYXRhVHlwZSgpICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNlcmlhbGl6ZXJzQnlEYXRhVHlwZS5wdXQoc2VyaWFsaXplci5nZXREYXRhVHlwZSgpLCBzZXJpYWxpemVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyA8RFQ+IFR5cGVTZXJpYWxpemVyPERUPiBnZXRTZXJpYWxpemVyKGZpbmFsIENsYXNzPERUPiB0eXBlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBUeXBlU2VyaWFsaXplcjw/PiBzZXJpYWxpemVyID0gc2VyaWFsaXplcnMuZ2V0KHR5cGUpOworCisgICAgICAgIGlmIChudWxsID09IHNlcmlhbGl6ZXIpIHsKKyAgICAgICAgICAgIC8vIFRyeSB0byBvYnRhaW4gdGhlIHNlcmlhbGl6ZXIgYnkgdGhlIHR5cGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIG9yIHN1cGVyY2xhc3MsCisgICAgICAgICAgICAvLyB3aGVuIHByZXZpb3VzbHkgYWNjZXNzZWQuCisgICAgICAgICAgICBzZXJpYWxpemVyID0gc2VyaWFsaXplcnNCeUltcGxlbWVudGF0aW9uLmdldCh0eXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXJpYWxpemVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiAoVHlwZVNlcmlhbGl6ZXIpIHNlcmlhbGl6ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBVc2UgZGlmZmVyZW50IGxvb2t1cCB0ZWNobmlxdWVzIGFuZCBjYWNoZSB0aGUgbG9va3VwIHJlc3VsdCB3aGVuIHN1Y2Nlc3NmdWwKKworICAgICAgICBpZiAoRW51bS5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKHR5cGUpKSB7CisgICAgICAgICAgICAvLyBtYXliZSBpdCdzIGEgZW51bSAtIGVudW1zIHdpdGggYm9kaWVzIGFyZSB3ZWlyZCBpbiBqYXZhLCB0aGV5IGFyZSBzdWJjbGFzc2VzIG9mIHRoZW1zZWx2ZXMsIHNvCisgICAgICAgICAgICAvLyBDb2x1bW5zLnZhbHVlcyB3aWxsIGJlIG9mIHR5cGUgQ29sdW1uJDIuCisgICAgICAgICAgICBzZXJpYWxpemVyID0gc2VyaWFsaXplcnMuZ2V0KHR5cGUuZ2V0U3VwZXJjbGFzcygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChudWxsID09IHNlcmlhbGl6ZXIpIHsKKyAgICAgICAgICAgIC8vIExvb2t1cCBieSBpbnRlcmZhY2UKKyAgICAgICAgICAgIGZvciAoTWFwLkVudHJ5PENsYXNzPD8+LCBUeXBlU2VyaWFsaXplcjw/Pj4gZW50cnkgOiBzZXJpYWxpemVyc0J5SW50ZXJmYWNlLmVudHJ5U2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkuZ2V0S2V5KCkuaXNBc3NpZ25hYmxlRnJvbSh0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVyID0gZW50cnkuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG51bGwgPT0gc2VyaWFsaXplciAmJiBmYWxsYmFja1Jlc29sdmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNlcmlhbGl6ZXIgPSBmYWxsYmFja1Jlc29sdmVyLmFwcGx5KHR5cGUpOworICAgICAgICB9CisKKyAgICAgICAgdmFsaWRhdGVJbnN0YW5jZShzZXJpYWxpemVyLCB0eXBlLmdldFR5cGVOYW1lKCkpOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBsb29rdXAgbWF0Y2ggdG8gYXZvaWQgbG9va2luZyBpdCB1cCBpbiB0aGUgZnV0dXJlCisgICAgICAgIHNlcmlhbGl6ZXJzQnlJbXBsZW1lbnRhdGlvbi5wdXQodHlwZSwgc2VyaWFsaXplcik7CisKKyAgICAgICAgcmV0dXJuIChUeXBlU2VyaWFsaXplcjxEVD4pIHNlcmlhbGl6ZXI7CisgICAgfQorCisgICAgcHVibGljIDxEVD4gVHlwZVNlcmlhbGl6ZXI8RFQ+IGdldFNlcmlhbGl6ZXIoZmluYWwgRGF0YVR5cGUgZGF0YVR5cGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChkYXRhVHlwZSA9PSBEYXRhVHlwZS5DVVNUT00pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkN1c3RvbSB0eXBlIHNlcmlhbGl6ZXJzIGNhbiBub3QgYmUgcmV0cmlldmVkIHVzaW5nIHRoaXMgbWV0aG9kIik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdmFsaWRhdGVJbnN0YW5jZShzZXJpYWxpemVyc0J5RGF0YVR5cGUuZ2V0KGRhdGFUeXBlKSwgZGF0YVR5cGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgc2VyaWFsaXplciBmb3IgYSBnaXZlbiBjdXN0b20gdHlwZSBuYW1lLgorICAgICAqLworICAgIHB1YmxpYyA8RFQ+IEN1c3RvbVR5cGVTZXJpYWxpemVyPERUPiBnZXRTZXJpYWxpemVyRm9yQ3VzdG9tVHlwZShmaW5hbCBTdHJpbmcgbmFtZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ3VzdG9tVHlwZVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IHNlcmlhbGl6ZXJzQnlDdXN0b21UeXBlTmFtZS5nZXQobmFtZSk7CisKKyAgICAgICAgaWYgKHNlcmlhbGl6ZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlNlcmlhbGl6ZXIgZm9yIGN1c3RvbSB0eXBlICclcycgbm90IGZvdW5kIiwgbmFtZSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXI7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgVHlwZVNlcmlhbGl6ZXIgdmFsaWRhdGVJbnN0YW5jZShmaW5hbCBUeXBlU2VyaWFsaXplciBzZXJpYWxpemVyLCBmaW5hbCBTdHJpbmcgdHlwZU5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChzZXJpYWxpemVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJTZXJpYWxpemVyIGZvciB0eXBlICVzIG5vdCBmb3VuZCIsIHR5cGVOYW1lKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc2VyaWFsaXplcjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQmlnRGVjaW1hbFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CaWdEZWNpbWFsU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOGFkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQmlnRGVjaW1hbFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDUwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBCaWdEZWNpbWFsU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPEJpZ0RlY2ltYWw+IHsKKyAgICBwdWJsaWMgQmlnRGVjaW1hbFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkJJR0RFQ0lNQUwpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBCaWdEZWNpbWFsIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBpbnQgc2NhbGUgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEludGVnZXIuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgQmlnSW50ZWdlciB1bnNjYWxlZCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgQmlnSW50ZWdlci5jbGFzcywgZmFsc2UpOworICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwodW5zY2FsZWQsIHNjYWxlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIEJpZ0RlY2ltYWwgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5zY2FsZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLnVuc2NhbGVkVmFsdWUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0JpZ0ludGVnZXJTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQmlnSW50ZWdlclNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjg3N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0JpZ0ludGVnZXJTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgQmlnSW50ZWdlclNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxCaWdJbnRlZ2VyPiB7CisKKyAgICBwdWJsaWMgQmlnSW50ZWdlclNlcmlhbGl6ZXIoKXsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuQklHSU5URUdFUik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIEJpZ0ludGVnZXIgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGJ5dGVbXSBiaWdJbnRCeXRlcyA9IG5ldyBieXRlW2J1ZmZlci5yZWFkSW50KCldOworICAgICAgICBidWZmZXIucmVhZEJ5dGVzKGJpZ0ludEJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGJpZ0ludEJ5dGVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIEJpZ0ludGVnZXIgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGJ5dGVbXSB0d29zQ29tcGxlbWVudCA9IHZhbHVlLnRvQnl0ZUFycmF5KCk7CisgICAgICAgIGJ1ZmZlci53cml0ZUludCh0d29zQ29tcGxlbWVudC5sZW5ndGgpLndyaXRlQnl0ZXModHdvc0NvbXBsZW1lbnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CaW5kaW5nU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0JpbmRpbmdTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE1ODM1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CaW5kaW5nU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgQmluZGluZ1NlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxCeXRlY29kZS5CaW5kaW5nPiB7CisKKyAgICBwdWJsaWMgQmluZGluZ1NlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkJJTkRJTkcpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBCeXRlY29kZS5CaW5kaW5nIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgayA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBuZXcgQnl0ZWNvZGUuQmluZGluZzw+KGssIGNvbnRleHQucmVhZChidWZmZXIpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIEJ5dGVjb2RlLkJpbmRpbmcgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS52YXJpYWJsZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZSh2YWx1ZS52YWx1ZSgpLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CdWxrU2V0U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0J1bGtTZXRTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxMWY3MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CdWxrU2V0U2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5CdWxrU2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBCdWxrU2V0U2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPEJ1bGtTZXQ+IHsKKyAgICBwdWJsaWMgQnVsa1NldFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkJVTEtTRVQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBCdWxrU2V0IHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gYnVmZmVyLnJlYWRJbnQoKTsKKworICAgICAgICBmaW5hbCBCdWxrU2V0IHJlc3VsdCA9IG5ldyBCdWxrU2V0KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoY29udGV4dC5yZWFkKGJ1ZmZlciksIGJ1ZmZlci5yZWFkTG9uZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBCdWxrU2V0IHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LExvbmc+IHJhdyA9IHZhbHVlLmFzQnVsaygpOworICAgICAgICBidWZmZXIud3JpdGVJbnQocmF3LnNpemUoKSk7CisKKyAgICAgICAgZm9yIChPYmplY3Qga2V5IDogcmF3LmtleVNldCgpKSB7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlKGtleSwgYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlci53cml0ZUxvbmcodmFsdWUuZ2V0KGtleSkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0J5dGVCdWZmZXJTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQnl0ZUJ1ZmZlclNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTYxM2NlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0J5dGVCdWZmZXJTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBCeXRlQnVmZmVyU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPEJ5dGVCdWZmZXI+IHsKKworICAgIHB1YmxpYyBCeXRlQnVmZmVyU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuQllURUJVRkZFUik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIEJ5dGVCdWZmZXIgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWZmZXIgYmIgPSBCeXRlQnVmZmVyLmFsbG9jYXRlKGJ1ZmZlci5yZWFkSW50KCkpOworICAgICAgICBidWZmZXIucmVhZEJ5dGVzKGJiKTsKKyAgICAgICAgYmIucmV3aW5kKCk7CisgICAgICAgIHJldHVybiBiYjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIEJ5dGVCdWZmZXIgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGJ5dGVbXSBieXRlcyA9IHZhbHVlLmFycmF5KCk7CisgICAgICAgIGJ1ZmZlci53cml0ZUludChieXRlcy5sZW5ndGgpLndyaXRlQnl0ZXMoYnl0ZXMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CeXRlQ29kZVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CeXRlQ29kZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjg5MGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0J5dGVDb2RlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBCeXRlQ29kZVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxCeXRlY29kZT4geworICAgIHB1YmxpYyBCeXRlQ29kZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkJZVEVDT0RFKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgQnl0ZWNvZGUgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVjb2RlIHJlc3VsdCA9IG5ldyBCeXRlY29kZSgpOworCisgICAgICAgIGZpbmFsIGludCBzdGVwc0xlbmd0aCA9IGJ1ZmZlci5yZWFkSW50KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RlcHNMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0LmFkZFN0ZXAoY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKSwgZ2V0SW5zdHJ1Y3Rpb25Bcmd1bWVudHMoYnVmZmVyLCBjb250ZXh0KSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgc291cmNlc0xlbmd0aCA9IGJ1ZmZlci5yZWFkSW50KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlc0xlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQuYWRkU291cmNlKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSksIGdldEluc3RydWN0aW9uQXJndW1lbnRzKGJ1ZmZlciwgY29udGV4dCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBPYmplY3RbXSBnZXRJbnN0cnVjdGlvbkFyZ3VtZW50cyhmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBpbnQgdmFsdWVzTGVuZ3RoID0gYnVmZmVyLnJlYWRJbnQoKTsKKyAgICAgICAgZmluYWwgT2JqZWN0W10gdmFsdWVzID0gbmV3IE9iamVjdFt2YWx1ZXNMZW5ndGhdOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHZhbHVlc0xlbmd0aDsgaisrKSB7CisgICAgICAgICAgICB2YWx1ZXNbal0gPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgQnl0ZWNvZGUgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIExpc3Q8Qnl0ZWNvZGUuSW5zdHJ1Y3Rpb24+IHN0ZXBzID0gdmFsdWUuZ2V0U3RlcEluc3RydWN0aW9ucygpOworICAgICAgICBmaW5hbCBMaXN0PEJ5dGVjb2RlLkluc3RydWN0aW9uPiBzb3VyY2VzID0gdmFsdWUuZ2V0U291cmNlSW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgIC8vIDIgYnVmZmVycyBmb3IgdGhlIGxlbmd0aCArIHBsdXMgMiBidWZmZXJzIHBlciBlYWNoIHN0ZXAgYW5kIHNvdXJjZQorCisgICAgICAgIHdyaXRlSW5zdHJ1Y3Rpb25zKGJ1ZmZlciwgY29udGV4dCwgc3RlcHMpOworICAgICAgICB3cml0ZUluc3RydWN0aW9ucyhidWZmZXIsIGNvbnRleHQsIHNvdXJjZXMpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB3cml0ZUluc3RydWN0aW9ucyhmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PEJ5dGVjb2RlLkluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKGluc3RydWN0aW9ucy5zaXplKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIGZvciAoQnl0ZWNvZGUuSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gOiBpbnN0cnVjdGlvbnMpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShpbnN0cnVjdGlvbi5nZXRPcGVyYXRvcigpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGZpbGxBcmd1bWVudHNCdWZmZXIoaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKCksIGJ1ZmZlciwgY29udGV4dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGZpbGxBcmd1bWVudHNCdWZmZXIoZmluYWwgT2JqZWN0W10gYXJndW1lbnRzLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShhcmd1bWVudHMubGVuZ3RoLCBidWZmZXIsIGZhbHNlKTsKKworICAgICAgICBmb3IgKE9iamVjdCB2YWx1ZSA6IGFyZ3VtZW50cykgeworICAgICAgICAgICAgY29udGV4dC53cml0ZSh2YWx1ZSwgYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DaGFyU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0NoYXJTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxMTBiNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DaGFyU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0czsKKworcHVibGljIGNsYXNzIENoYXJTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8Q2hhcmFjdGVyPiB7CisgICAgcHVibGljIENoYXJTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5DSEFSKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgQ2hhcmFjdGVyIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBpbnQgZmlyc3RCeXRlID0gYnVmZmVyLnJlYWRCeXRlKCkgJiAweGZmOworICAgICAgICBpbnQgYnl0ZUxlbmd0aCA9IDE7CisgICAgICAgIC8vIEEgYnl0ZSB3aXRoIHRoZSBmaXJzdCBieXRlIE9OICgxMDAwMDAwMCkgc2lnbmFscyB0aGF0IG1vcmUgYnl0ZXMgYXJlIG5lZWRlZCB0byByZXByZXNlbnQgdGhlIFVURi04IGNoYXIKKyAgICAgICAgaWYgKChmaXJzdEJ5dGUgJiAweDgwKSA+IDApIHsKKyAgICAgICAgICAgIGlmICgoZmlyc3RCeXRlICYgMHhmMCkgPT0gMHhmMCkgeyAvLyAweGYwID0gMTExMTAwMDAKKyAgICAgICAgICAgICAgICBieXRlTGVuZ3RoID0gNDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGZpcnN0Qnl0ZSAmIDB4ZTApID09IDB4ZTApIHsgLy8xMTEwMDAwMAorICAgICAgICAgICAgICAgIGJ5dGVMZW5ndGggPSAzOworICAgICAgICAgICAgfSBlbHNlIGlmICgoZmlyc3RCeXRlICYgMHhjMCkgPT0gMHhjMCkgeyAvLzExMDAwMDAwCisgICAgICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBieXRlW10gYnl0ZUFycmF5OworICAgICAgICBpZiAoYnl0ZUxlbmd0aCA9PSAxKSB7CisgICAgICAgICAgICBieXRlQXJyYXkgPSBuZXcgYnl0ZVtdIHsgKGJ5dGUpZmlyc3RCeXRlIH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBieXRlQXJyYXkgPSBuZXcgYnl0ZVtieXRlTGVuZ3RoXTsKKyAgICAgICAgICAgIGJ5dGVBcnJheVswXSA9IChieXRlKWZpcnN0Qnl0ZTsKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFkQnl0ZXMoYnl0ZUFycmF5LCAxLCBieXRlTGVuZ3RoIC0gMSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhieXRlQXJyYXksIFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpLmNoYXJBdCgwKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIENoYXJhY3RlciB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHN0cmluZ1ZhbHVlID0gQ2hhcmFjdGVyLnRvU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgYnVmZmVyLndyaXRlQnl0ZXMoc3RyaW5nVmFsdWUuZ2V0Qnl0ZXMoU3RhbmRhcmRDaGFyc2V0cy5VVEZfOCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DbGFzc1NlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DbGFzc1NlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjgzMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0NsYXNzU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitwdWJsaWMgY2xhc3MgQ2xhc3NTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8Q2xhc3M+IHsKKyAgICBwdWJsaWMgQ2xhc3NTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5DTEFTUyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIENsYXNzIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gQ2xhc3MuZm9yTmFtZShuYW1lKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIENsYXNzIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0TmFtZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ29sbGVjdGlvblNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Db2xsZWN0aW9uU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MDIwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ29sbGVjdGlvblNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDU1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBDb2xsZWN0aW9uU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPENvbGxlY3Rpb24+IHsKKyAgICBwdWJsaWMgQ29sbGVjdGlvblNlcmlhbGl6ZXIoZmluYWwgRGF0YVR5cGUgZGF0YVR5cGUpIHsKKyAgICAgICAgc3VwZXIoZGF0YVR5cGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBDb2xsZWN0aW9uIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gYnVmZmVyLnJlYWRJbnQoKTsKKworICAgICAgICBmaW5hbCBBcnJheUxpc3QgcmVzdWx0ID0gbmV3IEFycmF5TGlzdChsZW5ndGgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQuYWRkKGNvbnRleHQucmVhZChidWZmZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBDb2xsZWN0aW9uIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBidWZmZXIud3JpdGVJbnQodmFsdWUuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKE9iamVjdCBpdGVtIDogdmFsdWUpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGUoaXRlbSwgYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DdXN0b21UeXBlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0N1c3RvbVR5cGVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE3ZTc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DdXN0b21UeXBlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuVHlwZVNlcmlhbGl6ZXI7CisKKy8qKgorICogUmVwcmVzZW50cyBhIHNlcmlhbGl6ZXIgZm9yIGEgY3VzdG9tIChwcm92aWRlciBzcGVjaWZpYykgc2VyaWFsaXplci4KKyAqIEBwYXJhbSA8VD4KKyAqLworcHVibGljIGludGVyZmFjZSBDdXN0b21UeXBlU2VyaWFsaXplcjxUPiBleHRlbmRzIFR5cGVTZXJpYWxpemVyPFQ+IHsKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBjdXN0b20gdHlwZSBuYW1lLgorICAgICAqLworICAgIFN0cmluZyBnZXRUeXBlTmFtZSgpOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0RhdGVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvRGF0ZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDg3MzgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0RhdGVTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuc3FsLlRpbWVzdGFtcDsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgRGF0ZVNlcmlhbGl6ZXI8VCBleHRlbmRzIERhdGU+IGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VD4geworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBEYXRlU2VyaWFsaXplcjxEYXRlPiBEYXRlU2VyaWFsaXplciA9IG5ldyBEYXRlU2VyaWFsaXplcjw+KERhdGFUeXBlLkRBVEUsIERhdGU6Om5ldyk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBEYXRlU2VyaWFsaXplcjxUaW1lc3RhbXA+IFRpbWVzdGFtcFNlcmlhbGl6ZXIgPSBuZXcgRGF0ZVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5USU1FU1RBTVAsIFRpbWVzdGFtcDo6bmV3KTsKKworICAgIHByaXZhdGUgZmluYWwgRnVuY3Rpb248TG9uZywgVD4gcmVhZGVyOworCisgICAgcHJpdmF0ZSBEYXRlU2VyaWFsaXplcihmaW5hbCBEYXRhVHlwZSB0eXBlLCBmaW5hbCBGdW5jdGlvbjxMb25nLCBUPiByZWFkZXIpIHsKKyAgICAgICAgc3VwZXIodHlwZSk7CisgICAgICAgIHRoaXMucmVhZGVyID0gcmVhZGVyOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBUIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiByZWFkZXIuYXBwbHkoYnVmZmVyLnJlYWRMb25nKCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgeworICAgICAgICBidWZmZXIud3JpdGVMb25nKHZhbHVlLmdldFRpbWUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0R1cmF0aW9uU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0R1cmF0aW9uU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMGI1MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvRHVyYXRpb25TZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLkR1cmF0aW9uOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIER1cmF0aW9uU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPER1cmF0aW9uPiB7CisgICAgcHVibGljIER1cmF0aW9uU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuRFVSQVRJT04pOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBEdXJhdGlvbiByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIER1cmF0aW9uLm9mU2Vjb25kcyhidWZmZXIucmVhZExvbmcoKSwgYnVmZmVyLnJlYWRJbnQoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBEdXJhdGlvbiB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgYnVmZmVyLndyaXRlTG9uZyh2YWx1ZS5nZXRTZWNvbmRzKCkpLndyaXRlSW50KHZhbHVlLmdldE5hbm8oKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0VkZ2VTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvRWRnZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTg4MTgwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0VkZ2VTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZUVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlVmVydGV4OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBFZGdlU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPEVkZ2U+IHsKKyAgICBwdWJsaWMgRWRnZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkVER0UpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBFZGdlIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBPYmplY3QgaWQgPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGxhYmVsID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKTsKKworICAgICAgICBmaW5hbCBSZWZlcmVuY2VWZXJ0ZXggaW5WID0gbmV3IFJlZmVyZW5jZVZlcnRleChjb250ZXh0LnJlYWQoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKSk7CisgICAgICAgIGZpbmFsIFJlZmVyZW5jZVZlcnRleCBvdXRWID0gbmV3IFJlZmVyZW5jZVZlcnRleChjb250ZXh0LnJlYWQoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSkpOworCisgICAgICAgIC8vIGRpc2NhcmQgdGhlIHBhcmVudCB2ZXJ0ZXggLSB3ZSBvbmx5IHNlbmQgInJlZmVyZW5jZXMgc28gdGhpcyBzaG91bGQgYWx3YXlzIGJlIG51bGwsIGJ1dCB3aWxsIHdlIGNoYW5nZSBvdXIKKyAgICAgICAgLy8gbWluZHMgc29tZWRheT8/Pz8KKyAgICAgICAgY29udGV4dC5yZWFkKGJ1ZmZlcik7CisKKyAgICAgICAgLy8gZGlzY2FyZCB0aGUgcHJvcGVydGllcyAtIGFzIHdlIG9ubHkgc2VuZCAicmVmZXJlbmNlcyIgdGhpcyBzaG91bGQgYWx3YXlzIGJlIG51bGwsIGJ1dCB3aWxsIHdlIGNoYW5nZSBvdXIKKyAgICAgICAgLy8gbWluZHMgc29tZSBkYXk/Pz8/CisgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOworCisgICAgICAgIHJldHVybiBuZXcgUmVmZXJlbmNlRWRnZShpZCwgbGFiZWwsIGluViwgb3V0Vik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBFZGdlIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUuaWQoKSwgYnVmZmVyKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmxhYmVsKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUuaW5WZXJ0ZXgoKS5pZCgpLCBidWZmZXIpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuaW5WZXJ0ZXgoKS5sYWJlbCgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZSh2YWx1ZS5vdXRWZXJ0ZXgoKS5pZCgpLCBidWZmZXIpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUub3V0VmVydGV4KCkubGFiZWwoKSwgYnVmZmVyLCBmYWxzZSk7CisKKyAgICAgICAgLy8gd2UgZG9uJ3Qgc2VyaWFsaXplIHRoZSBwYXJlbnQgVmVydGV4IGZvciBlZGdlcy4gdGhleSBhcmUgInJlZmVyZW5jZXMiLCBidXQgd2UgbGVhdmUgYSBwbGFjZSBob2xkZXIKKyAgICAgICAgLy8gaGVyZSBhcyBhbiBvcHRpb24gZm9yIHRoZSBmdXR1cmUgYXMgd2UndmUgd2FmZmxlZCB0aGlzIHNvb29vb29vb29vIG1hbnkgdGltZXMgbm93CisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKyAgICAgICAgLy8gd2UgZG9uJ3Qgc2VyaWFsaXplIHByb3BlcnRpZXMgZm9yIGdyYXBoIHZlcnRpY2VzL2VkZ2VzLiB0aGV5IGFyZSAicmVmZXJlbmNlcyIsIGJ1dCB3ZSBsZWF2ZSBhIHBsYWNlIGhvbGRlcgorICAgICAgICAvLyBoZXJlIGFzIGFuIG9wdGlvbiBmb3IgdGhlIGZ1dHVyZSBhcyB3ZSd2ZSB3YWZmbGVkIHRoaXMgc29vb29vb29vb28gbWFueSB0aW1lcyBub3cKKyAgICAgICAgY29udGV4dC53cml0ZShudWxsLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9FbnVtU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0VudW1TZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJlMmQxNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9FbnVtU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Qb3A7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TYWNrRnVuY3Rpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Db2x1bW47CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb247CisKKy8qKgorICogR2VuZXJhbGl6ZWQgc2VyaWFsaXplciBmb3IgeyNjb2RlIEVudW19IHZhbHVlIHR5cGVzLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEVudW1TZXJpYWxpemVyPEUgZXh0ZW5kcyBFbnVtPiBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPEU+IHsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRW51bVNlcmlhbGl6ZXI8U2Fja0Z1bmN0aW9ucy5CYXJyaWVyPiBCYXJyaWVyU2VyaWFsaXplciA9IG5ldyBFbnVtU2VyaWFsaXplcjw+KERhdGFUeXBlLkJBUlJJRVIsIFNhY2tGdW5jdGlvbnMuQmFycmllcjo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eT4gQ2FyZGluYWxpdHlTZXJpYWxpemVyID0gbmV3IEVudW1TZXJpYWxpemVyPD4oRGF0YVR5cGUuQ0FSRElOQUxJVFksIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5Ojp2YWx1ZU9mKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1TZXJpYWxpemVyPENvbHVtbj4gQ29sdW1uU2VyaWFsaXplciA9IG5ldyBFbnVtU2VyaWFsaXplcjw+KERhdGFUeXBlLkNPTFVNTiwgQ29sdW1uOjp2YWx1ZU9mKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1TZXJpYWxpemVyPERpcmVjdGlvbj4gRGlyZWN0aW9uU2VyaWFsaXplciA9IG5ldyBFbnVtU2VyaWFsaXplcjw+KERhdGFUeXBlLkRJUkVDVElPTiwgRGlyZWN0aW9uOjp2YWx1ZU9mKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1TZXJpYWxpemVyPE9wZXJhdG9yPiBPcGVyYXRvclNlcmlhbGl6ZXIgPSBuZXcgRW51bVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5PUEVSQVRPUiwgT3BlcmF0b3I6OnZhbHVlT2YpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRW51bVNlcmlhbGl6ZXI8T3JkZXI+IE9yZGVyU2VyaWFsaXplciA9IG5ldyBFbnVtU2VyaWFsaXplcjw+KERhdGFUeXBlLk9SREVSLCBPcmRlcjo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljaz4gUGlja1NlcmlhbGl6ZXIgPSBuZXcgRW51bVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5QSUNLLCBUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljazo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxQb3A+IFBvcFNlcmlhbGl6ZXIgPSBuZXcgRW51bVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5QT1AsIFBvcDo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxTY29wZT4gU2NvcGVTZXJpYWxpemVyID0gbmV3IEVudW1TZXJpYWxpemVyPD4oRGF0YVR5cGUuU0NPUEUsIFNjb3BlOjp2YWx1ZU9mKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1TZXJpYWxpemVyPFQ+IFRTZXJpYWxpemVyID0gbmV3IEVudW1TZXJpYWxpemVyPD4oRGF0YVR5cGUuVCwgVDo6dmFsdWVPZik7CisKKyAgICBwcml2YXRlIGZpbmFsIEZ1bmN0aW9uPFN0cmluZywgRT4gcmVhZEZ1bmM7CisKKyAgICBwcml2YXRlIEVudW1TZXJpYWxpemVyKGZpbmFsIERhdGFUeXBlIGRhdGFUeXBlLCBmaW5hbCBGdW5jdGlvbjxTdHJpbmcsIEU+IHJlYWRGdW5jKSB7CisgICAgICAgIHN1cGVyKGRhdGFUeXBlKTsKKyAgICAgICAgdGhpcy5yZWFkRnVuYyA9IHJlYWRGdW5jOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBFIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gcmVhZEZ1bmMuYXBwbHkoY29udGV4dC5yZWFkKGJ1ZmZlcikpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgRSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZSh2YWx1ZS5uYW1lKCksIGJ1ZmZlcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0dyYXBoU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0dyYXBoU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MjdmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvR3JhcGhTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSwyMDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5CYXNlQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEdyYXBoU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPEdyYXBoPiB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNZXRob2Qgb3Blbk1ldGhvZCA9IGRldGVjdEdyYXBoT3Blbk1ldGhvZCgpOworCisgICAgcHVibGljIEdyYXBoU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuR1JBUEgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBHcmFwaCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAobnVsbCA9PSBvcGVuTWV0aG9kKQorICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJUaW5rZXJHcmFwaCBpcyBhbiBvcHRpb25hbCBkZXBlbmRlbmN5IHRvIGdyZW1saW4tZHJpdmVyIC0gaWYgZGVzZXJpYWxpemluZyBHcmFwaCBpbnN0YW5jZXMgaXQgbXVzdCBiZSBleHBsaWNpdGx5IGFkZGVkIGFzIGEgZGVwZW5kZW5jeSIpOworCisgICAgICAgIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZiA9IG5ldyBCYXNlQ29uZmlndXJhdGlvbigpOworICAgICAgICBjb25mLnNldFByb3BlcnR5KCJncmVtbGluLnRpbmtlcmdyYXBoLmRlZmF1bHRWZXJ0ZXhQcm9wZXJ0eUNhcmRpbmFsaXR5IiwgImxpc3QiKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSAoR3JhcGgpIG9wZW5NZXRob2QuaW52b2tlKG51bGwsIGNvbmYpOworICAgICAgICAgICAgZmluYWwgaW50IHZlcnRleENvdW50ID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBJbnRlZ2VyLmNsYXNzLCBmYWxzZSk7CisgICAgICAgICAgICBmb3IgKGludCBpeCA9IDA7IGl4IDwgdmVydGV4Q291bnQ7IGl4KyspIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdyYXBoLmFkZFZlcnRleChULmlkLCBjb250ZXh0LnJlYWQoYnVmZmVyKSwgVC5sYWJlbCwgY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IHZlcnRleFByb3BlcnR5Q291bnQgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEludGVnZXIuY2xhc3MsIGZhbHNlKTsKKworICAgICAgICAgICAgICAgIGZvciAoaW50IGl5ID0gMDsgaXkgPCB2ZXJ0ZXhQcm9wZXJ0eUNvdW50OyBpeSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBpZCA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbGFiZWwgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3QgdmFsID0gY29udGV4dC5yZWFkKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOyAvLyB0b3NzIHBhcmVudCBhcyBpdCdzIGFsd2F5cyBudWxsCisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5PE9iamVjdD4gdnAgPSB2LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5Lmxpc3QsIGxhYmVsLCB2YWwsIFQuaWQsIGlkKTsKKworICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFByb3BlcnR5PiBlZGdlUHJvcGVydGllcyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgQXJyYXlMaXN0LmNsYXNzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoUHJvcGVydHkgcCA6IGVkZ2VQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2cC5wcm9wZXJ0eShwLmtleSgpLCBwLnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBpbnQgZWRnZUNvdW50ID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBJbnRlZ2VyLmNsYXNzLCBmYWxzZSk7CisgICAgICAgICAgICBmb3IgKGludCBpeCA9IDA7IGl4IDwgZWRnZUNvdW50OyBpeCsrKSB7CisgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGlkID0gY29udGV4dC5yZWFkKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxhYmVsID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3QgaW5JZCA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleCBpblYgPSBncmFwaC52ZXJ0aWNlcyhpbklkKS5uZXh0KCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5yZWFkKGJ1ZmZlcik7ICAvLyB0b3NzIGluIGxhYmVsIC0gYWx3YXlzIG51bGwgaW4gdGhpcyBjb250ZXh0CisgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IG91dElkID0gY29udGV4dC5yZWFkKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgZmluYWwgVmVydGV4IG91dFYgPSBncmFwaC52ZXJ0aWNlcyhvdXRJZCkubmV4dCgpOworICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOyAvLyB0b3NzIGluIGxhYmVsIC0gYWx3YXlzIG51bGwgaW4gdGhpcyBjb250ZXh0CisgICAgICAgICAgICAgICAgY29udGV4dC5yZWFkKGJ1ZmZlcik7IC8vIHRvc3MgcGFyZW50IC0gbmV2ZXIgcHJlc2VudCBhcyBpdCdzIGp1c3QgYSBwbGFjZWhvbGRlcgorCisgICAgICAgICAgICAgICAgZmluYWwgRWRnZSBlID0gb3V0Vi5hZGRFZGdlKGxhYmVsLCBpblYsIFQuaWQsICBpZCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFByb3BlcnR5PiBlZGdlUHJvcGVydGllcyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgQXJyYXlMaXN0LmNsYXNzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZm9yIChQcm9wZXJ0eSBwIDogZWRnZVByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgZS5wcm9wZXJ0eShwLmtleSgpLCBwLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGdyYXBoOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIC8vIGZhbW91cyBsYXN0IHdvcmRzIC0gY2FuJ3QgaGFwcGVuCisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBHcmFwaCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gdGhpcyBraW5kYSBsb29rcyBzY2FyeSBtZW1vcnktd2lzZSwgYnV0IEdyYXBoQmluYXJ5IGlzIGFib3V0IG5ldHdvcmsgZGVyc2VyIHNvIHdlIGFyZSBkZWFsaW5nIHdpdGggYQorICAgICAgICAvLyBncmFwaCBpbnN0YW5jZSB0aGF0IHNob3VsZCBsaXZlIGluIG1lbW9yeSBhbHJlYWR5IC0gbm90IGV4cGVjdGluZyAiYmlnIiBzdHVmZiBoZXJlLgorICAgICAgICBmaW5hbCBMaXN0PFZlcnRleD4gdmVydGV4TGlzdCA9IEl0ZXJhdG9yVXRpbHMubGlzdCh2YWx1ZS52ZXJ0aWNlcygpKTsKKyAgICAgICAgZmluYWwgTGlzdDxFZGdlPiBlZGdlTGlzdCA9IEl0ZXJhdG9yVXRpbHMubGlzdCh2YWx1ZS5lZGdlcygpKTsKKworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmVydGV4TGlzdC5zaXplKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIGZvciAoVmVydGV4IHYgOiB2ZXJ0ZXhMaXN0KSB7CisgICAgICAgICAgICB3cml0ZVZlcnRleChidWZmZXIsIGNvbnRleHQsIHYpOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKGVkZ2VMaXN0LnNpemUoKSwgYnVmZmVyLCBmYWxzZSk7CisKKyAgICAgICAgZm9yIChFZGdlIGUgOiBlZGdlTGlzdCkgeworICAgICAgICAgICAgd3JpdGVFZGdlKGJ1ZmZlciwgY29udGV4dCwgZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgd3JpdGVWZXJ0ZXgoQnVmZmVyIGJ1ZmZlciwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCwgVmVydGV4IHZlcnRleCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTGlzdDxWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+PiB2ZXJ0ZXhQcm9wZXJ0aWVzID0gSXRlcmF0b3JVdGlscy5saXN0KHZlcnRleC5wcm9wZXJ0aWVzKCkpOworCisgICAgICAgIGNvbnRleHQud3JpdGUodmVydGV4LmlkKCksIGJ1ZmZlcik7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2ZXJ0ZXgubGFiZWwoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2ZXJ0ZXhQcm9wZXJ0aWVzLnNpemUoKSwgYnVmZmVyLCBmYWxzZSk7CisKKyAgICAgICAgZm9yIChWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+IHZwIDogdmVydGV4UHJvcGVydGllcykgeworICAgICAgICAgICAgY29udGV4dC53cml0ZSh2cC5pZCgpLCBidWZmZXIpOworICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZwLmxhYmVsKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICAgICAgY29udGV4dC53cml0ZSh2cC52YWx1ZSgpLCBidWZmZXIpOworCisgICAgICAgICAgICAvLyBtYWludGFpbiB0aGUgVmVydGV4UHJvcGVydHkgZm9ybWF0IHdlIGhhdmUgd2l0aCB0aGlzIGVtcHR5IHBhcmVudC4uLi4uLi4uLgorICAgICAgICAgICAgY29udGV4dC53cml0ZShudWxsLCBidWZmZXIpOworCisgICAgICAgICAgICAvLyB3cml0ZSB0aG9zZSBwcm9wZXJ0aWVzIG91dCB1c2luZyB0aGUgc3RhbmRhcmQgUHJvcGVydHkgc2VyaWFsaXplcgorICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKEl0ZXJhdG9yVXRpbHMubGlzdCh2cC5wcm9wZXJ0aWVzKCkpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB3cml0ZUVkZ2UoQnVmZmVyIGJ1ZmZlciwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCwgRWRnZSBlZGdlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlKGVkZ2UuaWQoKSwgYnVmZmVyKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKGVkZ2UubGFiZWwoKSwgYnVmZmVyLCBmYWxzZSk7CisKKyAgICAgICAgY29udGV4dC53cml0ZShlZGdlLmluVmVydGV4KCkuaWQoKSwgYnVmZmVyKTsKKworICAgICAgICAvLyB2ZXJ0ZXggbGFiZWxzIGFyZW4ndCBuZWVkZWQgYnV0IG1haW50YWluaW5nIHRoZSBFZGdlIGZvcm0gdGhhdCB3ZSBoYXZlCisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKworICAgICAgICBjb250ZXh0LndyaXRlKGVkZ2Uub3V0VmVydGV4KCkuaWQoKSwgYnVmZmVyKTsKKworICAgICAgICAvLyB2ZXJ0ZXggbGFiZWxzIGFyZW4ndCBuZWVkZWQgYnV0IG1haW50YWluaW5nIHRoZSBFZGdlIGZvcm0gdGhhdCB3ZSBoYXZlCisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKworICAgICAgICAvLyBtYWludGFpbiB0aGUgRWRnZSBmb3JtYXQgd2UgaGF2ZSB3aXRoIHRoaXMgZW1wdHkgcGFyZW50Li4uLi4uLi4uLi4uLi4uLi4uCisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKworICAgICAgICAvLyB3cml0ZSB0aG9zZSBwcm9wZXJ0aWVzIG91dCB1c2luZyB0aGUgc3RhbmRhcmQgUHJvcGVydHkgc2VyaWFsaXplcgorICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUoSXRlcmF0b3JVdGlscy5saXN0KGVkZ2UucHJvcGVydGllcygpKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgTWFwPFN0cmluZywgTGlzdDxWZXJ0ZXhQcm9wZXJ0eT4+IGluZGV4ZWRWZXJ0ZXhQcm9wZXJ0aWVzKGZpbmFsIFZlcnRleCB2KSB7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsTGlzdDxWZXJ0ZXhQcm9wZXJ0eT4+IGluZGV4ID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICB2LnByb3BlcnRpZXMoKS5mb3JFYWNoUmVtYWluaW5nKHZwIC0+IHsKKyAgICAgICAgICAgIGlmICghaW5kZXguY29udGFpbnNLZXkodnAua2V5KCkpKSB7CisgICAgICAgICAgICAgICAgaW5kZXgucHV0KHZwLmtleSgpLCBuZXcgQXJyYXlMaXN0PD4oKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluZGV4LmdldCh2cC5rZXkoKSkuYWRkKHZwKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBNZXRob2QgZGV0ZWN0R3JhcGhPcGVuTWV0aG9kKCkgeworICAgICAgICBmaW5hbCBDbGFzczw/PiBncmFwaENsYXp6ID0gZGV0ZWN0VGlua2VyR3JhcGgoKTsKKworICAgICAgICAvLyBpZiBubyBjbGFzcyB0aGVuIG5vIG1ldGhvZCB0byBsb29rdXAKKyAgICAgICAgaWYgKG51bGwgPT0gZ3JhcGhDbGF6eikgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICByZXR1cm4gZ3JhcGhDbGF6ei5nZXRNZXRob2QoIm9wZW4iLCBDb25maWd1cmF0aW9uLmNsYXNzKTsKKyAgICAgICAgfSBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIG5zbWUpIHsKKyAgICAgICAgICAgIC8vIGZhbW91cyBsYXN0IHdvcmRzIC0gY2FuJ3QgaGFwcGVuCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKG5zbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgQ2xhc3M8Pz4gZGV0ZWN0VGlua2VyR3JhcGgoKSB7CisgICAgICAgIC8vIHRoZSBqYXZhIGRyaXZlciBkZWZhdWx0cyB0byB1c2luZyBUaW5rZXJHcmFwaCB0byBkZXNlcmlhbGl6ZSBHcmFwaCBpbnN0YW5jZXMuIGlmIFRpbmtlckdyYXBoIGlzbid0IHByZXNlbnQKKyAgICAgICAgLy8gb24gdGhlIHBhdGgsIHRoYXQncyBjb29sLCB1c2VycyBqdXN0IHdvbid0IGJlIGFibGUgdG8gZGVzZXJpYWxpemUgdGhhdAorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIENsYXNzLmZvck5hbWUoIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckdyYXBoIik7CisgICAgICAgIH0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gY25mZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvSW5ldEFkZHJlc3NTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvSW5ldEFkZHJlc3NTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxNTNjNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9JbmV0QWRkcmVzc1NlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDU2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm5ldC5JbmV0QWRkcmVzczsKK2ltcG9ydCBqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBJbmV0QWRkcmVzc1NlcmlhbGl6ZXI8VCBleHRlbmRzIEluZXRBZGRyZXNzPiBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFQ+IHsKKyAgICBwdWJsaWMgSW5ldEFkZHJlc3NTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5JTkVUQUREUkVTUyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFQgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBidWZmZXIucmVhZEludCgpOworICAgICAgICBmaW5hbCBieXRlW10gYnl0ZXMgPSBuZXcgYnl0ZVtsZW5ndGhdOworICAgICAgICBidWZmZXIucmVhZEJ5dGVzKGJ5dGVzKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIChUKSBJbmV0QWRkcmVzcy5nZXRCeUFkZHJlc3MoYnl0ZXMpOworICAgICAgICB9IGNhdGNoIChVbmtub3duSG9zdEV4Y2VwdGlvbiB1aGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiQ2Fubm90IGRlc2VyaWFsaXplIEluZXRBZGRyZXNzIHZhbHVlIiwgdWhlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgYnl0ZVtdIGJ5dGVzID0gdmFsdWUuZ2V0QWRkcmVzcygpOworICAgICAgICBidWZmZXIud3JpdGVJbnQoYnl0ZXMubGVuZ3RoKS53cml0ZUJ5dGVzKGJ5dGVzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvSW5zdGFudFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9JbnN0YW50U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMGI4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvSW5zdGFudFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuSW5zdGFudDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBJbnN0YW50U2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPEluc3RhbnQ+IHsKKyAgICBwdWJsaWMgSW5zdGFudFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLklOU1RBTlQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBJbnN0YW50IHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gSW5zdGFudC5vZkVwb2NoU2Vjb25kKGJ1ZmZlci5yZWFkTG9uZygpLCBidWZmZXIucmVhZEludCgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIEluc3RhbnQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUxvbmcodmFsdWUuZ2V0RXBvY2hTZWNvbmQoKSkud3JpdGVJbnQodmFsdWUuZ2V0TmFubygpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTGFtYmRhU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xhbWJkYVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNiYjUyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xhbWJkYVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDU5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5mdW5jdGlvbi5MYW1iZGE7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIExhbWJkYVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxMYW1iZGE+IHsKKyAgICBwdWJsaWMgTGFtYmRhU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuTEFNQkRBKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTGFtYmRhIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgbGFuZyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIFN0cmluZyBzY3JpcHQgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICBmaW5hbCBpbnQgYXJncyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgSW50ZWdlci5jbGFzcywgZmFsc2UpOworCisgICAgICAgIGlmICgwID09IGFyZ3MpCisgICAgICAgICAgICByZXR1cm4gbmV3IExhbWJkYS5aZXJvQXJnTGFtYmRhPD4oc2NyaXB0LCBsYW5nKTsKKyAgICAgICAgZWxzZSBpZiAoMSA9PSBhcmdzKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBMYW1iZGEuT25lQXJnTGFtYmRhPD4oc2NyaXB0LCBsYW5nKTsKKyAgICAgICAgZWxzZSBpZiAoMiA9PSBhcmdzKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBMYW1iZGEuVHdvQXJnTGFtYmRhPD4oc2NyaXB0LCBsYW5nKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG5ldyBMYW1iZGEuVW5rbm93bkFyZ0xhbWJkYShzY3JpcHQsIGxhbmcsIGFyZ3MpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgTGFtYmRhIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0TGFtYmRhTGFuZ3VhZ2UoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRMYW1iZGFTY3JpcHQoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRMYW1iZGFBcmd1bWVudHMoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xpc3RTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTGlzdFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGFjMTRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xpc3RTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBMaXN0U2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPExpc3Q+IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDb2xsZWN0aW9uU2VyaWFsaXplciBjb2xsZWN0aW9uU2VyaWFsaXplciA9IG5ldyBDb2xsZWN0aW9uU2VyaWFsaXplcihEYXRhVHlwZS5MSVNUKTsKKworICAgIHB1YmxpYyBMaXN0U2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuTElTVCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIExpc3QgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIC8vIFRoZSBjb2xsZWN0aW9uIGlzIGEgTGlzdDw+CisgICAgICAgIHJldHVybiAoTGlzdCkgY29sbGVjdGlvblNlcmlhbGl6ZXIucmVhZFZhbHVlKGJ1ZmZlciwgY29udGV4dCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBMaXN0IHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb2xsZWN0aW9uU2VyaWFsaXplci53cml0ZVZhbHVlKHZhbHVlLCBidWZmZXIsIGNvbnRleHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Mb2NhbERhdGVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTG9jYWxEYXRlU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YTNhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTG9jYWxEYXRlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGU7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgTG9jYWxEYXRlU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPExvY2FsRGF0ZT4geworICAgIHB1YmxpYyBMb2NhbERhdGVTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5MT0NBTERBVEUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBMb2NhbERhdGUgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBMb2NhbERhdGUub2YoYnVmZmVyLnJlYWRJbnQoKSwgYnVmZmVyLnJlYWRCeXRlKCksIGJ1ZmZlci5yZWFkQnl0ZSgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIExvY2FsRGF0ZSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KHZhbHVlLmdldFllYXIoKSkud3JpdGVCeXRlKHZhbHVlLmdldE1vbnRoVmFsdWUoKSkud3JpdGVCeXRlKHZhbHVlLmdldERheU9mTW9udGgoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsRGF0ZVRpbWVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTG9jYWxEYXRlVGltZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2U5MmM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsRGF0ZVRpbWVTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZTsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlVGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxUaW1lOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIExvY2FsRGF0ZVRpbWVTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8TG9jYWxEYXRlVGltZT4geworICAgIHB1YmxpYyBMb2NhbERhdGVUaW1lU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuTE9DQUxEQVRFVElNRSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIExvY2FsRGF0ZVRpbWUgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBMb2NhbERhdGVUaW1lLm9mKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTG9jYWxEYXRlLmNsYXNzLCBmYWxzZSksCisgICAgICAgICAgICAgICAgY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBMb2NhbFRpbWUuY2xhc3MsIGZhbHNlKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBMb2NhbERhdGVUaW1lIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUudG9Mb2NhbERhdGUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS50b0xvY2FsVGltZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTG9jYWxUaW1lU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsVGltZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjY1NGFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsVGltZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxUaW1lOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIExvY2FsVGltZVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxMb2NhbFRpbWU+IHsKKyAgICBwdWJsaWMgTG9jYWxUaW1lU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuTE9DQUxUSU1FKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTG9jYWxUaW1lIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gTG9jYWxUaW1lLm9mTmFub09mRGF5KGJ1ZmZlci5yZWFkTG9uZygpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIExvY2FsVGltZSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgYnVmZmVyLndyaXRlTG9uZyh2YWx1ZS50b05hbm9PZkRheSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTWFwRW50cnlTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTWFwRW50cnlTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhMjhkNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9NYXBFbnRyeVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDUwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK3B1YmxpYyBjbGFzcyBNYXBFbnRyeVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxNYXAuRW50cnk+IGltcGxlbWVudHMgVHJhbnNmb3JtU2VyaWFsaXplcjxNYXAuRW50cnk+IHsKKyAgICBwdWJsaWMgTWFwRW50cnlTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihudWxsKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTWFwLkVudHJ5IHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkEgbWFwIGVudHJ5IHNob3VsZCBub3QgYmUgcmVhZCBpbmRpdmlkdWFsbHkiKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIE1hcC5FbnRyeSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJBIG1hcCBlbnRyeSBzaG91bGQgbm90IGJlIHdyaXR0ZW4gaW5kaXZpZHVhbGx5Iik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oZmluYWwgTWFwLkVudHJ5IHZhbHVlKSB7CisgICAgICAgIGZpbmFsIE1hcCBtYXAgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICBtYXAucHV0KHZhbHVlLmdldEtleSgpLCB2YWx1ZS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTWFwU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01hcFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmI5NWQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01hcFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDU3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBjbGFzcyBNYXBTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8TWFwPiB7CisgICAgcHVibGljIE1hcFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLk1BUCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIE1hcCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IGJ1ZmZlci5yZWFkSW50KCk7CisKKyAgICAgICAgZmluYWwgTWFwPE9iamVjdCxPYmplY3Q+IHJlc3VsdCA9IG5ldyBMaW5rZWRIYXNoTWFwPD4obGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0LnB1dChjb250ZXh0LnJlYWQoYnVmZmVyKSwgY29udGV4dC5yZWFkKGJ1ZmZlcikpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIE1hcCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KHZhbHVlLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChNYXAuRW50cnkgZW50cnkgOiAoU2V0PE1hcC5FbnRyeT4pIHZhbHVlLmVudHJ5U2V0KCkpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGUoZW50cnkuZ2V0S2V5KCksIGJ1ZmZlcik7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlKGVudHJ5LmdldFZhbHVlKCksIGJ1ZmZlcik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTWV0cmljc1NlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9NZXRyaWNzU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZGYyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTWV0cmljc1NlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk11dGFibGVNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKKworcHVibGljIGNsYXNzIE1ldHJpY3NTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8TWV0cmljcz4geworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIENvbGxlY3Rpb25TZXJpYWxpemVyIGNvbGxlY3Rpb25TZXJpYWxpemVyID0gbmV3IENvbGxlY3Rpb25TZXJpYWxpemVyKERhdGFUeXBlLkxJU1QpOworCisgICAgcHVibGljIE1ldHJpY3NTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5NRVRSSUNTKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTWV0cmljcyByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gQ29uc2lkZXIgdXNpbmcgYSBjdXN0b20gaW1wbGVtZW50YXRpb24sIGxpa2UgIkRlZmF1bHRNZXRyaWNzIgorICAgICAgICBmaW5hbCBNdXRhYmxlTWV0cmljcyByZXN1bHQgPSBuZXcgTXV0YWJsZU1ldHJpY3MoCisgICAgICAgICAgICAgICAgY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKSwKKyAgICAgICAgICAgICAgICBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpKTsKKyAgICAgICAgcmVzdWx0LnNldER1cmF0aW9uKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTG9uZy5jbGFzcywgZmFsc2UpLCBUaW1lVW5pdC5OQU5PU0VDT05EUyk7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIExvbmc+IGNvdW50cyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTWFwLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGNvdW50cy5mb3JFYWNoKHJlc3VsdDo6c2V0Q291bnQpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGFubm90YXRpb25zID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBNYXAuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgYW5ub3RhdGlvbnMuZm9yRWFjaChyZXN1bHQ6OnNldEFubm90YXRpb24pOworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPE11dGFibGVNZXRyaWNzPiBuZXN0ZWRNZXRyaWNzID0gY29sbGVjdGlvblNlcmlhbGl6ZXIucmVhZFZhbHVlKGJ1ZmZlciwgY29udGV4dCk7CisgICAgICAgIG5lc3RlZE1ldHJpY3MuZm9yRWFjaChyZXN1bHQ6OmFkZE5lc3RlZCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBNZXRyaWNzIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0SWQoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXROYW1lKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0RHVyYXRpb24oVGltZVVuaXQuTkFOT1NFQ09ORFMpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldENvdW50cygpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldEFubm90YXRpb25zKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIC8vIEF2b2lkIGNoYW5naW5nIHR5cGUgdG8gTGlzdAorICAgICAgICBjb2xsZWN0aW9uU2VyaWFsaXplci53cml0ZVZhbHVlKHZhbHVlLmdldE5lc3RlZCgpLCBidWZmZXIsIGNvbnRleHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Nb250aERheVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Nb250aERheVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmMyYzkyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01vbnRoRGF5U2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5Nb250aERheTsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBNb250aERheVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxNb250aERheT4geworICAgIHB1YmxpYyBNb250aERheVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLk1PTlRIREFZKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTW9udGhEYXkgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBNb250aERheS5vZihidWZmZXIucmVhZEJ5dGUoKSwgYnVmZmVyLnJlYWRCeXRlKCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgTW9udGhEYXkgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGUodmFsdWUuZ2V0TW9udGhWYWx1ZSgpKS53cml0ZUJ5dGUodmFsdWUuZ2V0RGF5T2ZNb250aCgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvT2Zmc2V0RGF0ZVRpbWVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvT2Zmc2V0RGF0ZVRpbWVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBiMWM3OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9PZmZzZXREYXRlVGltZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlVGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuT2Zmc2V0RGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLlpvbmVPZmZzZXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgT2Zmc2V0RGF0ZVRpbWVTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8T2Zmc2V0RGF0ZVRpbWU+IHsKKyAgICBwdWJsaWMgT2Zmc2V0RGF0ZVRpbWVTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5PRkZTRVREQVRFVElNRSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIE9mZnNldERhdGVUaW1lIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBMb2NhbERhdGVUaW1lIGxkdCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTG9jYWxEYXRlVGltZS5jbGFzcywgZmFsc2UpOworICAgICAgICBmaW5hbCBab25lT2Zmc2V0IHpvID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBab25lT2Zmc2V0LmNsYXNzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBPZmZzZXREYXRlVGltZS5vZihsZHQsIHpvKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIE9mZnNldERhdGVUaW1lIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUudG9Mb2NhbERhdGVUaW1lKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0T2Zmc2V0KCksIGJ1ZmZlciwgZmFsc2UpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9PZmZzZXRUaW1lU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL09mZnNldFRpbWVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRkY2ZlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9PZmZzZXRUaW1lU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5Mb2NhbFRpbWU7CitpbXBvcnQgamF2YS50aW1lLk9mZnNldFRpbWU7CitpbXBvcnQgamF2YS50aW1lLlpvbmVPZmZzZXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgT2Zmc2V0VGltZVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxPZmZzZXRUaW1lPiB7CisgICAgcHVibGljIE9mZnNldFRpbWVTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5PRkZTRVRUSU1FKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgT2Zmc2V0VGltZSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTG9jYWxUaW1lIGxkdCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTG9jYWxUaW1lLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIFpvbmVPZmZzZXQgem8gPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFpvbmVPZmZzZXQuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIE9mZnNldFRpbWUub2YobGR0LCB6byk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBPZmZzZXRUaW1lIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUudG9Mb2NhbFRpbWUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRPZmZzZXQoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1BTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWVhM2UzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1BTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkFuZFA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkNvbm5lY3RpdmVQOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBQU2VyaWFsaXplcjxUIGV4dGVuZHMgUD4gZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxUPiB7CisKKyAgICBwcml2YXRlIGZpbmFsIENsYXNzPFQ+IGNsYXNzT2ZQOworCisgICAgcHJpdmF0ZSBmaW5hbCBDb25jdXJyZW50SGFzaE1hcDxQRnVuY3Rpb25JZCwgQ2hlY2tlZEZ1bmN0aW9uPiBtZXRob2RzID0gbmV3IENvbmN1cnJlbnRIYXNoTWFwPD4oKTsKKworICAgIHB1YmxpYyBQU2VyaWFsaXplcihmaW5hbCBEYXRhVHlwZSB0eXBlT2ZQLCBmaW5hbCBDbGFzczxUPiBjbGFzc09mUCkgeworICAgICAgICBzdXBlcih0eXBlT2ZQKTsKKyAgICAgICAgdGhpcy5jbGFzc09mUCA9IGNsYXNzT2ZQOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBUIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgcHJlZGljYXRlTmFtZSA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEludGVnZXIuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgT2JqZWN0W10gYXJncyA9IG5ldyBPYmplY3RbbGVuZ3RoXTsKKyAgICAgICAgZmluYWwgQ2xhc3M8Pz5bXSBhcmd1bWVudENsYXNzZXMgPSBuZXcgQ2xhc3NbbGVuZ3RoXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgYXJnc1tpXSA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICAgICAgYXJndW1lbnRDbGFzc2VzW2ldID0gYXJnc1tpXS5nZXRDbGFzcygpOworICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoImFuZCIuZXF1YWxzKHByZWRpY2F0ZU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIChUKSAoKFApIGFyZ3NbMF0pLmFuZCgoUCkgYXJnc1sxXSk7CisgICAgICAgIGVsc2UgaWYgKCJvciIuZXF1YWxzKHByZWRpY2F0ZU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIChUKSAoKFApIGFyZ3NbMF0pLm9yKChQKSBhcmdzWzFdKTsKKyAgICAgICAgZWxzZSBpZiAoIm5vdCIuZXF1YWxzKHByZWRpY2F0ZU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIChUKSBQLm5vdCgoUCkgYXJnc1swXSk7CisKKyAgICAgICAgZmluYWwgQ2hlY2tlZEZ1bmN0aW9uPE9iamVjdFtdLCBUPiBmID0gZ2V0TWV0aG9kKHByZWRpY2F0ZU5hbWUsIGFyZ3VtZW50Q2xhc3Nlcyk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBmLmFwcGx5KGFyZ3MpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJDYW4ndCBkZXNlcmlhbGl6ZSB2YWx1ZSBpbnRvIHRoZSBwcmVkaWNhdGU6ICclcyciLCBwcmVkaWNhdGVOYW1lKSwgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBDaGVja2VkRnVuY3Rpb24gZ2V0TWV0aG9kKGZpbmFsIFN0cmluZyBwcmVkaWNhdGVOYW1lLCBmaW5hbCBDbGFzczw/PltdIGFyZ3VtZW50Q2xhc3NlcykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgUEZ1bmN0aW9uSWQgaWQgPSBuZXcgUEZ1bmN0aW9uSWQocHJlZGljYXRlTmFtZSwgYXJndW1lbnRDbGFzc2VzKTsKKworICAgICAgICBDaGVja2VkRnVuY3Rpb248T2JqZWN0W10sIFQ+IHJlc3VsdCA9IG1ldGhvZHMuZ2V0KGlkKTsKKworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gY29sbGVjdGlvblR5cGUgPSBmYWxzZTsKKyAgICAgICAgICAgIE1ldGhvZCBtOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBkbyBhIGRpcmVjdCBsb29rdXAKKyAgICAgICAgICAgICAgICBtID0gY2xhc3NPZlAuZ2V0TWV0aG9kKHByZWRpY2F0ZU5hbWUsIGFyZ3VtZW50Q2xhc3Nlcyk7CisgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZXgwKSB7CisgICAgICAgICAgICAgICAgLy8gdGhlbiB0cnkgY29sbGVjdGlvbiB0eXBlcworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG0gPSBjbGFzc09mUC5nZXRNZXRob2QocHJlZGljYXRlTmFtZSwgQ29sbGVjdGlvbi5jbGFzcyk7CisgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25UeXBlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZXgxKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGZpbmFsbHkgZ28gZm9yIHRoZSBnZW5lcmljcworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGNsYXNzT2ZQLmdldE1ldGhvZChwcmVkaWNhdGVOYW1lLCBPYmplY3QuY2xhc3MpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaW5hbGx5IGdvIGZvciB0aGUgZ2VuZXJpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGNsYXNzT2ZQLmdldE1ldGhvZChwcmVkaWNhdGVOYW1lLCBPYmplY3QuY2xhc3MsIE9iamVjdC5jbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZXgzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkNhbid0IGZpbmQgcHJlZGljYXRlIG1ldGhvZDogJyVzJyIsIHByZWRpY2F0ZU5hbWUpLCBleDIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBNZXRob2QgZmluYWxNZXRob2QgPSBtOworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmIChNb2RpZmllci5pc1N0YXRpYyhtLmdldE1vZGlmaWVycygpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvblR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChhcmdzKSAtPiAoVCkgZmluYWxNZXRob2QuaW52b2tlKG51bGwsIEFycmF5cy5hc0xpc3QoYXJncykpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKGFyZ3MpIC0+IChUKSBmaW5hbE1ldGhvZC5pbnZva2UobnVsbCwgYXJncyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyB0cnkgYW4gaW5zdGFuY2UgbWV0aG9kIGFzIGl0IG1pZ2h0IGJlIGEgZm9ybSBvZiBDb25uZWN0aXZlUCB3aGljaCBtZWFucyB0aGVyZSBpcyBhIFAgYXMgYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gYXJndW1lbnQgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgb2JqZWN0IG9mIGFuIGluc3RhbmNlIG1ldGhvZAorICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRDbGFzc2VzLmxlbmd0aCAhPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGZvcm0gb2YgUCBmb3IgJXMgYW5kICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlTmFtZSwgQXJyYXlzLmFzTGlzdChhcmd1bWVudENsYXNzZXMpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoYXJncykgLT4geworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYXJnc1swXSBpbnN0YW5jZW9mIFApIHx8ICEoYXJnc1sxXSBpbnN0YW5jZW9mIFApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiQ291bGQgbm90IGRldGVybWluZSB0aGUgZm9ybSBvZiBQIGZvciAlcyBhbmQgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlTmFtZSwgQXJyYXlzLmFzTGlzdChhcmdzKSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBQIGZpcnN0UCA9IChQKSBhcmdzWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUCBzZWNvbmRQID0gKFApIGFyZ3NbMV07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoVCkgZmluYWxNZXRob2QuaW52b2tlKGZpcnN0UCwgc2Vjb25kUCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbWV0aG9kcy5wdXQoaWQsIHJlc3VsdCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIC8vIHRoZSBwcmVkaWNhdGUgbmFtZSBpcyBlaXRoZXIgYSBzdGF0aWMgbWV0aG9kIG9mIFAgb3IgYW4gaW5zdGFuY2UgbWV0aG9kIHdoZW4gYSB0eXBlIENvbm5lY3RpdmVQCisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNDb25uZWN0ZWRQID0gdmFsdWUgaW5zdGFuY2VvZiBDb25uZWN0aXZlUDsKKyAgICAgICAgZmluYWwgU3RyaW5nIHByZWRpY2F0ZU5hbWUgPSBpc0Nvbm5lY3RlZFAgPworICAgICAgICAgICAgICAgICh2YWx1ZSBpbnN0YW5jZW9mIEFuZFAgPyAiYW5kIiA6ICJvciIpIDoKKyAgICAgICAgICAgICAgICB2YWx1ZS5nZXRCaVByZWRpY2F0ZSgpLnRvU3RyaW5nKCk7CisgICAgICAgIGZpbmFsIE9iamVjdCBhcmdzID0gaXNDb25uZWN0ZWRQID8gKChDb25uZWN0aXZlUDw/PikgdmFsdWUpLmdldFByZWRpY2F0ZXMoKSA6IHZhbHVlLmdldFZhbHVlKCk7CisKKyAgICAgICAgZmluYWwgTGlzdDxPYmplY3Q+IGFyZ3NBc0xpc3QgPSBhcmdzIGluc3RhbmNlb2YgQ29sbGVjdGlvbiA/IG5ldyBBcnJheUxpc3Q8PigoQ29sbGVjdGlvbikgYXJncykgOiBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGFyZ3MpOworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gYXJnc0FzTGlzdC5zaXplKCk7CisKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHByZWRpY2F0ZU5hbWUsIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUobGVuZ3RoLCBidWZmZXIsIGZhbHNlKTsKKworICAgICAgICBmb3IgKE9iamVjdCBvIDogYXJnc0FzTGlzdCkgeworICAgICAgICAgICAgY29udGV4dC53cml0ZShvLCBidWZmZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgQEZ1bmN0aW9uYWxJbnRlcmZhY2UKKyAgICBpbnRlcmZhY2UgQ2hlY2tlZEZ1bmN0aW9uPEEsIFI+IHsKKyAgICAgICAgUiBhcHBseShBIHQpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLCBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uOworICAgIH0KKworICAgIGNsYXNzIFBGdW5jdGlvbklkIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgcHJlZGljYXRlTmFtZTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBDbGFzczw/PltdIGFyZ3VtZW50Q2xhc3NlczsKKworICAgICAgICBQRnVuY3Rpb25JZChmaW5hbCBTdHJpbmcgcHJlZGljYXRlTmFtZSwgZmluYWwgQ2xhc3M8Pz5bXSBhcmd1bWVudENsYXNzZXMpIHsKKyAgICAgICAgICAgIHRoaXMucHJlZGljYXRlTmFtZSA9IHByZWRpY2F0ZU5hbWU7CisgICAgICAgICAgICB0aGlzLmFyZ3VtZW50Q2xhc3NlcyA9IGFyZ3VtZW50Q2xhc3NlczsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKG8gPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG8uZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgUEZ1bmN0aW9uSWQgdGhhdCA9IChQRnVuY3Rpb25JZCkgbzsKKyAgICAgICAgICAgIHJldHVybiBwcmVkaWNhdGVOYW1lLmVxdWFscyh0aGF0LnByZWRpY2F0ZU5hbWUpICYmCisgICAgICAgICAgICAgICAgICAgIEFycmF5cy5lcXVhbHMoYXJndW1lbnRDbGFzc2VzLCB0aGF0LmFyZ3VtZW50Q2xhc3Nlcyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBPYmplY3RzLmhhc2gocHJlZGljYXRlTmFtZSk7CisgICAgICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIEFycmF5cy5oYXNoQ29kZShhcmd1bWVudENsYXNzZXMpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9QYXRoU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1BhdGhTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU5NDM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9QYXRoU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuTXV0YWJsZVBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZUZhY3Rvcnk7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgUGF0aFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxQYXRoPiB7CisKKyAgICBwdWJsaWMgUGF0aFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlBBVEgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBQYXRoIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBNdXRhYmxlUGF0aCBwYXRoID0gKE11dGFibGVQYXRoKSBNdXRhYmxlUGF0aC5tYWtlKCk7CisgICAgICAgIGZpbmFsIExpc3Q8U2V0PFN0cmluZz4+IGxhYmVscyA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICBmaW5hbCBMaXN0PE9iamVjdD4gb2JqZWN0cyA9IGNvbnRleHQucmVhZChidWZmZXIpOworCisgICAgICAgIGlmIChsYWJlbHMuc2l6ZSgpICE9IG9iamVjdHMuc2l6ZSgpKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRm9ybWF0IGZvciBQYXRoIG9iamVjdCByZXF1aXJlcyB0aGF0IHRoZSBsYWJlbHMgYW5kIG9iamVjdHMgZmllbGRzIGJlIG9mIHRoZSBzYW1lIGxlbmd0aCIpOworCisgICAgICAgIGZvciAoaW50IGl4ID0gMDsgaXggPCBsYWJlbHMuc2l6ZSgpOyBpeCsrKSB7CisgICAgICAgICAgICBwYXRoLmV4dGVuZChvYmplY3RzLmdldChpeCksIGxhYmVscy5nZXQoaXgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBSZWZlcmVuY2VGYWN0b3J5LmRldGFjaChwYXRoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFBhdGggdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUubGFiZWxzKCksIGJ1ZmZlcik7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUub2JqZWN0cygpLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9QZXJpb2RTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUGVyaW9kU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2N2UyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUGVyaW9kU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5QZXJpb2Q7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgUGVyaW9kU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFBlcmlvZD4geworICAgIHB1YmxpYyBQZXJpb2RTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5QRVJJT0QpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBQZXJpb2QgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBQZXJpb2Qub2YoYnVmZmVyLnJlYWRJbnQoKSwgYnVmZmVyLnJlYWRJbnQoKSwgYnVmZmVyLnJlYWRJbnQoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBQZXJpb2QgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUludCh2YWx1ZS5nZXRZZWFycygpKS53cml0ZUludCh2YWx1ZS5nZXRNb250aHMoKSkud3JpdGVJbnQodmFsdWUuZ2V0RGF5cygpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUHJvcGVydHlTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUHJvcGVydHlTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZhMjJlZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Qcm9wZXJ0eVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDU2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVByb3BlcnR5OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBQcm9wZXJ0eVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxQcm9wZXJ0eT4geworCisgICAgcHVibGljIFByb3BlcnR5U2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuUFJPUEVSVFkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBQcm9wZXJ0eSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgUHJvcGVydHkgcCA9IG5ldyBSZWZlcmVuY2VQcm9wZXJ0eTw+KGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSksIGNvbnRleHQucmVhZChidWZmZXIpKTsKKworICAgICAgICAvLyBkaXNjYXJkIHRoZSBwYXJlbnQgZWxlbWVudCBhcyBpdCdzIG5vdCBzZXJpYWxpemVkIGZvciByZWZlcmVuY2VzIHJpZ2h0IG5vdworICAgICAgICBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBQcm9wZXJ0eSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmtleSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZSh2YWx1ZS52YWx1ZSgpLCBidWZmZXIpOworCisgICAgICAgIC8vIGxlYXZlIHNwYWNlIGZvciB0aGUgcGFyZW50IHJlZmVyZW5jZSBlbGVtZW50IGFzIGl0J3Mgbm90IHNlcmlhbGl6ZWQgZm9yIHJlZmVyZW5jZXMKKyAgICAgICAgY29udGV4dC53cml0ZShudWxsLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TZXRTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU2V0U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhN2E3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU2V0U2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBjbGFzcyBTZXRTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8U2V0PnsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDb2xsZWN0aW9uU2VyaWFsaXplciBjb2xsZWN0aW9uU2VyaWFsaXplciA9IG5ldyBDb2xsZWN0aW9uU2VyaWFsaXplcihEYXRhVHlwZS5TRVQpOworCisgICAgcHVibGljIFNldFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlNFVCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFNldCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG5ldyBIYXNoU2V0PD4oY29sbGVjdGlvblNlcmlhbGl6ZXIucmVhZFZhbHVlKGJ1ZmZlciwgY29udGV4dCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgU2V0IHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb2xsZWN0aW9uU2VyaWFsaXplci53cml0ZVZhbHVlKHZhbHVlLCBidWZmZXIsIGNvbnRleHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TaW1wbGVUeXBlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1NpbXBsZVR5cGVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZhMGY5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TaW1wbGVUeXBlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LlR5cGVTZXJpYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogQmFzZSBjbGFzcyBmb3Igc2VyaWFsaXphdGlvbiBvZiB0eXBlcyB0aGF0IGRvbid0IGNvbnRhaW4gdHlwZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbmx5IHt0eXBlX2NvZGV9LCB7dmFsdWVfZmxhZ30KKyAqIGFuZCB7dmFsdWV9LgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VD4gaW1wbGVtZW50cyBUeXBlU2VyaWFsaXplcjxUPiB7CisgICAgcHJpdmF0ZSBmaW5hbCBEYXRhVHlwZSBkYXRhVHlwZTsKKworICAgIHB1YmxpYyBEYXRhVHlwZSBnZXREYXRhVHlwZSgpIHsKKyAgICAgICAgcmV0dXJuIGRhdGFUeXBlOworICAgIH0KKworICAgIHB1YmxpYyBTaW1wbGVUeXBlU2VyaWFsaXplcihmaW5hbCBEYXRhVHlwZSBkYXRhVHlwZSkgeworICAgICAgICB0aGlzLmRhdGFUeXBlID0gZGF0YVR5cGU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFQgcmVhZChmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAvLyBObyB7dHlwZV9pbmZvfSwganVzdCB7dmFsdWVfZmxhZ317dmFsdWV9CisgICAgICAgIHJldHVybiByZWFkVmFsdWUoYnVmZmVyLCBjb250ZXh0LCB0cnVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCwgZmluYWwgYm9vbGVhbiBudWxsYWJsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKG51bGxhYmxlKSB7CisgICAgICAgICAgICBmaW5hbCBieXRlIHZhbHVlRmxhZyA9IGJ1ZmZlci5yZWFkQnl0ZSgpOworICAgICAgICAgICAgaWYgKCh2YWx1ZUZsYWcgJiAxKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVhZFZhbHVlKGJ1ZmZlciwgY29udGV4dCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVhZHMgYSBub24tbnVsbGFibGUgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIGZvcm1hdC4KKyAgICAgKiBAcGFyYW0gYnVmZmVyIEEgYnVmZmVyIHdoaWNoIHJlYWRlciBpbmRleCBoYXMgYmVlbiBzZXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUge3ZhbHVlfS4KKyAgICAgKiBAcGFyYW0gY29udGV4dCBUaGUgYmluYXJ5IHdyaXRlci4KKyAgICAgKiBAcmV0dXJuCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICAqLworICAgIHByb3RlY3RlZCBhYnN0cmFjdCBUIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb247CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShmaW5hbCBUIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB3cml0ZVZhbHVlKHZhbHVlLCBidWZmZXIsIGNvbnRleHQsIHRydWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCwgZmluYWwgYm9vbGVhbiBudWxsYWJsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghbnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlVuZXhwZWN0ZWQgbnVsbCB2YWx1ZSB3aGVuIG51bGxhYmxlIGlzIGZhbHNlIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZUZsYWdOdWxsKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVsbGFibGUpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZUZsYWdOb25lKGJ1ZmZlcik7CisgICAgICAgIH0KKworICAgICAgICB3cml0ZVZhbHVlKHZhbHVlLCBidWZmZXIsIGNvbnRleHQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdyaXRlcyBhIG5vbi1udWxsYWJsZSB2YWx1ZSBpbnRvIGEgYnVmZmVyIHVzaW5nIHRoZSBwcm92aWRlZCBhbGxvY2F0b3IuCisgICAgICogQHBhcmFtIHZhbHVlIEEgbm9uLW51bGxhYmxlIHZhbHVlLgorICAgICAqIEBwYXJhbSBidWZmZXIgVGhlIGJ1ZmZlciBhbGxvY2F0b3IgdG8gdXNlLgorICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBiaW5hcnkgd3JpdGVyLgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbjsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TaW5nbGVUeXBlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1NpbmdsZVR5cGVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkZmI1YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TaW5nbGVUeXBlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLnRpbWUuWWVhcjsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uQmlDb25zdW1lcjsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb247CisKKy8qKgorICogUmVwcmVzZW50cyBhIHNlcmlhbGl6ZXIgZm9yIHR5cGVzIHRoYXQgYmUgcmVwcmVzZW50ZWQgYXMgYSBzaW5nbGUgdmFsdWUgYW5kIHRoYXQgY2FuIGJlIHJlYWQgYW5kIHdyaXRlCisgKiBpbiBhIHNpbmdsZSBvcGVyYXRpb24uCisgKi8KK3B1YmxpYyBjbGFzcyBTaW5nbGVUeXBlU2VyaWFsaXplcjxUPiBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFQ+IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbmdsZVR5cGVTZXJpYWxpemVyPEludGVnZXI+IEludFNlcmlhbGl6ZXIgPQorICAgICAgICAgICAgbmV3IFNpbmdsZVR5cGVTZXJpYWxpemVyPD4oRGF0YVR5cGUuSU5ULCBCdWZmZXI6OnJlYWRJbnQsICh2LCBiKSAtPiBiLndyaXRlSW50KHYpKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbmdsZVR5cGVTZXJpYWxpemVyPExvbmc+IExvbmdTZXJpYWxpemVyID0KKyAgICAgICAgICAgIG5ldyBTaW5nbGVUeXBlU2VyaWFsaXplcjw+KERhdGFUeXBlLkxPTkcsIEJ1ZmZlcjo6cmVhZExvbmcsICh2LCBiKSAtPiBiLndyaXRlTG9uZyh2KSk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW5nbGVUeXBlU2VyaWFsaXplcjxEb3VibGU+IERvdWJsZVNlcmlhbGl6ZXIgPQorICAgICAgICAgICAgbmV3IFNpbmdsZVR5cGVTZXJpYWxpemVyPD4oRGF0YVR5cGUuRE9VQkxFLCBCdWZmZXI6OnJlYWREb3VibGUsICh2LCBiKSAtPiBiLndyaXRlRG91YmxlKHYpKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbmdsZVR5cGVTZXJpYWxpemVyPEZsb2F0PiBGbG9hdFNlcmlhbGl6ZXIgPQorICAgICAgICAgICAgbmV3IFNpbmdsZVR5cGVTZXJpYWxpemVyPD4oRGF0YVR5cGUuRkxPQVQsIEJ1ZmZlcjo6cmVhZEZsb2F0LCAodiwgYikgLT4gYi53cml0ZUZsb2F0KHYpKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbmdsZVR5cGVTZXJpYWxpemVyPFNob3J0PiBTaG9ydFNlcmlhbGl6ZXIgPQorICAgICAgICAgICAgbmV3IFNpbmdsZVR5cGVTZXJpYWxpemVyPD4oRGF0YVR5cGUuU0hPUlQsIEJ1ZmZlcjo6cmVhZFNob3J0LCAodiwgYikgLT4gYi53cml0ZVNob3J0KHYpKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbmdsZVR5cGVTZXJpYWxpemVyPEJvb2xlYW4+IEJvb2xlYW5TZXJpYWxpemVyID0KKyAgICAgICAgICAgIG5ldyBTaW5nbGVUeXBlU2VyaWFsaXplcjw+KERhdGFUeXBlLkJPT0xFQU4sIEJ1ZmZlcjo6cmVhZEJvb2xlYW4sICh2LCBiKSAtPiBiLndyaXRlQm9vbGVhbih2KSk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW5nbGVUeXBlU2VyaWFsaXplcjxCeXRlPiBCeXRlU2VyaWFsaXplciA9CisgICAgICAgICAgICBuZXcgU2luZ2xlVHlwZVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5CWVRFLCBCdWZmZXI6OnJlYWRCeXRlLCAodiwgYikgLT4gYi53cml0ZUJ5dGUodikpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2luZ2xlVHlwZVNlcmlhbGl6ZXI8WWVhcj4gWWVhclNlcmlhbGl6ZXIgPQorICAgICAgICAgICAgbmV3IFNpbmdsZVR5cGVTZXJpYWxpemVyPD4oRGF0YVR5cGUuWUVBUiwgYmIgLT4gWWVhci5vZihiYi5yZWFkSW50KCkpLCAodiwgYikgLT4gYi53cml0ZUludCh2LmdldFZhbHVlKCkpKTsKKworICAgIHByaXZhdGUgZmluYWwgRnVuY3Rpb248QnVmZmVyLCBUPiByZWFkRnVuYzsKKyAgICBwcml2YXRlIGZpbmFsIEJpQ29uc3VtZXI8VCwgQnVmZmVyPiB3cml0ZUZ1bmM7CisKKyAgICBwcml2YXRlIFNpbmdsZVR5cGVTZXJpYWxpemVyKGZpbmFsIERhdGFUeXBlIGRhdGFUeXBlLCBmaW5hbCBGdW5jdGlvbjxCdWZmZXIsIFQ+IHJlYWRGdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQmlDb25zdW1lcjxULCBCdWZmZXI+IHdyaXRlRnVuYykgeworICAgICAgICBzdXBlcihkYXRhVHlwZSk7CisgICAgICAgIHRoaXMucmVhZEZ1bmMgPSByZWFkRnVuYzsKKyAgICAgICAgdGhpcy53cml0ZUZ1bmMgPSB3cml0ZUZ1bmM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFQgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIHJlYWRGdW5jLmFwcGx5KGJ1ZmZlcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBUIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB7CisgICAgICAgIHdyaXRlRnVuYy5hY2NlcHQodmFsdWUsIGJ1ZmZlcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1N0cmluZ1NlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TdHJpbmdTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkwYzVlMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TdHJpbmdTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0czsKKworcHVibGljIGNsYXNzIFN0cmluZ1NlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxTdHJpbmc+IHsKKyAgICBwdWJsaWMgU3RyaW5nU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuU1RSSU5HKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB7CisgICAgICAgIC8vIFVzZSBOZXR0eSA0LjAgQVBJIChhdm9pZCBCeXRlQnVmI3JlYWRDaGFyU2VxdWVuY2UoKSBtZXRob2QpIHRvIG1heGltaXplIGNvbXBhdGliaWxpdHkKKyAgICAgICAgZmluYWwgYnl0ZVtdIGJ5dGVzID0gbmV3IGJ5dGVbYnVmZmVyLnJlYWRJbnQoKV07CisgICAgICAgIGJ1ZmZlci5yZWFkQnl0ZXMoYnl0ZXMpOworICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhieXRlcywgU3RhbmRhcmRDaGFyc2V0cy5VVEZfOCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBTdHJpbmcgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHsKKyAgICAgICAgZmluYWwgYnl0ZVtdIHN0cmluZ0J5dGVzID0gdmFsdWUuZ2V0Qnl0ZXMoU3RhbmRhcmRDaGFyc2V0cy5VVEZfOCk7CisgICAgICAgIGJ1ZmZlci53cml0ZUludChzdHJpbmdCeXRlcy5sZW5ndGgpLndyaXRlQnl0ZXMoc3RyaW5nQnl0ZXMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmFuc2Zvcm1TZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhbnNmb3JtU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3Y2NiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhbnNmb3JtU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuVHlwZVNlcmlhbGl6ZXI7CisKKy8qKgorICogUmVwcmVzZW50cyBhIHNwZWNpYWwgVHlwZVNlcmlhbGl6ZXIgcGxhY2Vob2xkZXIgdGhhdCB0cmFuc2Zvcm1zIHRoZSB2YWx1ZSBpbnRvIGFub3RoZXIgYmVmb3JlIHNlcmlhbGl6aW5nIGl0LgorICovCitwdWJsaWMgaW50ZXJmYWNlIFRyYW5zZm9ybVNlcmlhbGl6ZXI8VD4gZXh0ZW5kcyBUeXBlU2VyaWFsaXplcjxUPiB7CisgICAgT2JqZWN0IHRyYW5zZm9ybShUIHZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzYWxFeHBsYW5hdGlvblNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzYWxFeHBsYW5hdGlvblNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzhkOGJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNhbEV4cGxhbmF0aW9uU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEV4cGxhbmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuamF2YXR1cGxlcy5QYWlyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKKworcHVibGljIGNsYXNzIFRyYXZlcnNhbEV4cGxhbmF0aW9uU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFRyYXZlcnNhbEV4cGxhbmF0aW9uPiBpbXBsZW1lbnRzIFRyYW5zZm9ybVNlcmlhbGl6ZXI8VHJhdmVyc2FsRXhwbGFuYXRpb24+IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JJR0lOQUwgPSAib3JpZ2luYWwiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGSU5BTCA9ICJmaW5hbCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOVEVSTUVESUFURSA9ICJpbnRlcm1lZGlhdGUiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDQVRFR09SWSA9ICJjYXRlZ29yeSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRSQVZFUlNBTCA9ICJ0cmF2ZXJzYWwiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJBVEVHWSA9ICJzdHJhdGVneSI7CisKKyAgICBwdWJsaWMgVHJhdmVyc2FsRXhwbGFuYXRpb25TZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihudWxsKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVHJhdmVyc2FsRXhwbGFuYXRpb24gcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiQSBUcmF2ZXJzYWxFeHBsYW5hdGlvbiBzaG91bGQgbm90IGJlIHJlYWQgaW5kaXZpZHVhbGx5Iik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBUcmF2ZXJzYWxFeHBsYW5hdGlvbiB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJBIFRyYXZlcnNhbEV4cGxhbmF0aW9uIHNob3VsZCBub3QgYmUgd3JpdHRlbiBpbmRpdmlkdWFsbHkiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgTWFwIGNvbnRhaW5pbmcgIm9yaWdpbmFsIiwgImludGVybWVkaWF0ZSIgYW5kICJmaW5hbCIga2V5cy4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgT2JqZWN0IHRyYW5zZm9ybShmaW5hbCBUcmF2ZXJzYWxFeHBsYW5hdGlvbiB2YWx1ZSkgeworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IHJlc3VsdCA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgcmVzdWx0LnB1dChPUklHSU5BTCwgZ2V0VHJhdmVyc2FsU3RlcHModmFsdWUuZ2V0T3JpZ2luYWxUcmF2ZXJzYWwoKSkpOworCisgICAgICAgIGZpbmFsIExpc3Q8UGFpcjxUcmF2ZXJzYWxTdHJhdGVneSwgVHJhdmVyc2FsLkFkbWluPD8sID8+Pj4gc3RyYXRlZ3lUcmF2ZXJzYWxzID0gdmFsdWUuZ2V0U3RyYXRlZ3lUcmF2ZXJzYWxzKCk7CisKKyAgICAgICAgcmVzdWx0LnB1dChJTlRFUk1FRElBVEUsCisgICAgICAgICAgICAgICAgc3RyYXRlZ3lUcmF2ZXJzYWxzLnN0cmVhbSgpLm1hcChwYWlyIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBpdGVtID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnB1dChTVFJBVEVHWSwgcGFpci5nZXRWYWx1ZTAoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5wdXQoQ0FURUdPUlksIHBhaXIuZ2V0VmFsdWUwKCkuZ2V0VHJhdmVyc2FsQ2F0ZWdvcnkoKS5nZXRTaW1wbGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnB1dChUUkFWRVJTQUwsIGdldFRyYXZlcnNhbFN0ZXBzKHBhaXIuZ2V0VmFsdWUxKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAgICAgICAgICAgfSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKSk7CisKKyAgICAgICAgcmVzdWx0LnB1dChGSU5BTCwgZ2V0VHJhdmVyc2FsU3RlcHMoc3RyYXRlZ3lUcmF2ZXJzYWxzLmlzRW1wdHkoKQorICAgICAgICAgICAgICAgID8gdmFsdWUuZ2V0T3JpZ2luYWxUcmF2ZXJzYWwoKSA6IHN0cmF0ZWd5VHJhdmVyc2Fscy5nZXQoc3RyYXRlZ3lUcmF2ZXJzYWxzLnNpemUoKSAtIDEpLmdldFZhbHVlMSgpKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgTGlzdDxTdHJpbmc+IGdldFRyYXZlcnNhbFN0ZXBzKGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0KSB7CisgICAgICAgIHJldHVybiB0LmdldFN0ZXBzKCkuc3RyZWFtKCkubWFwKE9iamVjdDo6dG9TdHJpbmcpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNhbE1ldHJpY3NTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhdmVyc2FsTWV0cmljc1NlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjdiMzYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNhbE1ldHJpY3NTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuTXV0YWJsZU1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbE1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0OworCitwdWJsaWMgY2xhc3MgVHJhdmVyc2FsTWV0cmljc1NlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxUcmF2ZXJzYWxNZXRyaWNzPiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29sbGVjdGlvblNlcmlhbGl6ZXIgY29sbGVjdGlvblNlcmlhbGl6ZXIgPSBuZXcgQ29sbGVjdGlvblNlcmlhbGl6ZXIoRGF0YVR5cGUuTElTVCk7CisKKyAgICBwdWJsaWMgVHJhdmVyc2FsTWV0cmljc1NlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlRSQVZFUlNBTE1FVFJJQ1MpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBUcmF2ZXJzYWxNZXRyaWNzIHJlYWRWYWx1ZShCdWZmZXIgYnVmZmVyLCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBMb25nIGR1cmF0aW9uTmFub3MgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIExvbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgTGlzdDxNdXRhYmxlTWV0cmljcz4gbWV0cmljcyA9IG5ldyBBcnJheUxpc3Q8Pihjb2xsZWN0aW9uU2VyaWFsaXplci5yZWFkVmFsdWUoYnVmZmVyLCBjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBuZXcgRGVmYXVsdFRyYXZlcnNhbE1ldHJpY3MoZHVyYXRpb25OYW5vcywgbWV0cmljcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShUcmF2ZXJzYWxNZXRyaWNzIHZhbHVlLCBCdWZmZXIgYnVmZmVyLCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0RHVyYXRpb24oVGltZVVuaXQuTkFOT1NFQ09ORFMpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29sbGVjdGlvblNlcmlhbGl6ZXIud3JpdGVWYWx1ZSh2YWx1ZS5nZXRNZXRyaWNzKCksIGJ1ZmZlciwgY29udGV4dCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNhbFN0cmF0ZWd5U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNhbFN0cmF0ZWd5U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZWE5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhdmVyc2FsU3RyYXRlZ3lTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb25Db252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uTWFwQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuVHJhdmVyc2FsU3RyYXRlZ3lQcm94eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgVHJhdmVyc2FsU3RyYXRlZ3lTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VHJhdmVyc2FsU3RyYXRlZ3k+IHsKKworICAgIHB1YmxpYyBUcmF2ZXJzYWxTdHJhdGVneVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlRSQVZFUlNBTFNUUkFURUdZKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVHJhdmVyc2FsU3RyYXRlZ3kgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENsYXNzPFRyYXZlcnNhbFN0cmF0ZWd5PiBjbGF6eiA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgQ2xhc3MuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgTWFwIGNvbmZpZyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTWFwLmNsYXNzLCBmYWxzZSk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBUcmF2ZXJzYWxTdHJhdGVneVByb3h5KGNsYXp6LCBuZXcgTWFwQ29uZmlndXJhdGlvbihjb25maWcpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFRyYXZlcnNhbFN0cmF0ZWd5IHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0Q2xhc3MoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh0cmFuc2xhdGVUb0J5dGVjb2RlKENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIuZ2V0TWFwKHZhbHVlLmdldENvbmZpZ3VyYXRpb24oKSkpLCBidWZmZXIsIGZhbHNlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBNYXA8T2JqZWN0LE9iamVjdD4gdHJhbnNsYXRlVG9CeXRlY29kZShmaW5hbCBNYXA8T2JqZWN0LE9iamVjdD4gY29uZikgeworICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LE9iamVjdD4gbmV3Q29uZiA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oY29uZi5zaXplKCkpOworICAgICAgICBjb25mLmVudHJ5U2V0KCkuZm9yRWFjaChlbnRyeSAtPiB7CisgICAgICAgICAgICBpZiAoZW50cnkuZ2V0VmFsdWUoKSBpbnN0YW5jZW9mIFRyYXZlcnNhbCkKKyAgICAgICAgICAgICAgICBuZXdDb25mLnB1dChlbnRyeS5nZXRLZXkoKSwgKChUcmF2ZXJzYWwpIGVudHJ5LmdldFZhbHVlKCkpLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdDb25mLnB1dChlbnRyeS5nZXRLZXkoKSwgZW50cnkuZ2V0VmFsdWUoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gbmV3Q29uZjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhdmVyc2VyU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNlclNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzYxZmIwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNlclNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuRGVmYXVsdFJlbW90ZVRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFRyYXZlcnNlclNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxUcmF2ZXJzZXI+IHsKKworICAgIHB1YmxpYyBUcmF2ZXJzZXJTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5UUkFWRVJTRVIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBUcmF2ZXJzZXIgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGxvbmcgYnVsayA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTG9uZy5jbGFzcywgZmFsc2UpOworICAgICAgICBmaW5hbCBPYmplY3QgdiA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICByZXR1cm4gbmV3IERlZmF1bHRSZW1vdGVUcmF2ZXJzZXI8Pih2LCBidWxrKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFRyYXZlcnNlciB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmJ1bGsoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUuZ2V0KCksIGJ1ZmZlcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyZWVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJlZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmJiZjhlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyZWVTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlRyZWU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworcHVibGljIGNsYXNzIFRyZWVTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VHJlZT4geworICAgIHB1YmxpYyBUcmVlU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuVFJFRSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFRyZWUgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBidWZmZXIucmVhZEludCgpOworCisgICAgICAgIGZpbmFsIFRyZWUgcmVzdWx0ID0gbmV3IFRyZWUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0LnB1dChjb250ZXh0LnJlYWQoYnVmZmVyKSwgY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBUcmVlLmNsYXNzLCBmYWxzZSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFRyZWUgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUludCh2YWx1ZS5zaXplKCkpOworCisgICAgICAgIGZvciAoT2JqZWN0IGtleSA6IHZhbHVlLmtleVNldCgpKSB7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlKGtleSwgYnVmZmVyKTsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXQoa2V5KSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVVVJRFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9VVUlEU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDU4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVVVJRFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKK3B1YmxpYyBjbGFzcyBVVUlEU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFVVSUQ+IHsKKyAgICBwdWJsaWMgVVVJRFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlVVSUQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBVVUlEIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiBuZXcgVVVJRChidWZmZXIucmVhZExvbmcoKSwgYnVmZmVyLnJlYWRMb25nKCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVVVJRCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgeworICAgICAgICBidWZmZXIud3JpdGVMb25nKHZhbHVlLmdldE1vc3RTaWduaWZpY2FudEJpdHMoKSkud3JpdGVMb25nKHZhbHVlLmdldExlYXN0U2lnbmlmaWNhbnRCaXRzKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVmVydGV4UHJvcGVydHlTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVmVydGV4UHJvcGVydHlTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI5YmE4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9WZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDY2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleFByb3BlcnR5OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBWZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxWZXJ0ZXhQcm9wZXJ0eT4geworCisgICAgcHVibGljIFZlcnRleFByb3BlcnR5U2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuVkVSVEVYUFJPUEVSVFkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBWZXJ0ZXhQcm9wZXJ0eSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgVmVydGV4UHJvcGVydHkgdiA9IG5ldyBSZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eTw+KGNvbnRleHQucmVhZChidWZmZXIpLAorICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSksCisgICAgICAgICAgICAgICAgY29udGV4dC5yZWFkKGJ1ZmZlcikpOworCisgICAgICAgIC8vIGRpc2NhcmQgdGhlIHBhcmVudCB2ZXJ0ZXggLSB3ZSBvbmx5IHNlbmQgInJlZmVyZW5jZXMiCisgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOworCisgICAgICAgIC8vIGRpc2NhcmQgdGhlIHByb3BlcnRpZXMgLSBhcyB3ZSBvbmx5IHNlbmQgInJlZmVyZW5jZXMiIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBudWxsLCBidXQgd2lsbCB3ZSBjaGFuZ2Ugb3VyCisgICAgICAgIC8vIG1pbmRzIHNvbWUgZGF5Pz8/PworICAgICAgICBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZSh2YWx1ZS5pZCgpLCBidWZmZXIpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUubGFiZWwoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUudmFsdWUoKSwgYnVmZmVyKTsKKworICAgICAgICAvLyB3ZSBkb24ndCBzZXJpYWxpemUgdGhlIHBhcmVudCB2ZXJ0ZXggZXZlbiBhcyBhICJyZWZlcmVuY2UiLCBidXQsIGxldCdzIGhvbGQgYSBwbGFjZSBmb3IgaXQKKyAgICAgICAgY29udGV4dC53cml0ZShudWxsLCBidWZmZXIpOworICAgICAgICAvLyB3ZSBkb24ndCBzZXJpYWxpemUgcHJvcGVydGllcyBmb3IgZ3JhcGggZWxlbWVudHMuIHRoZXkgYXJlICJyZWZlcmVuY2VzIiwgYnV0IHdlIGxlYXZlIGEgcGxhY2UgaG9sZGVyCisgICAgICAgIC8vIGhlcmUgYXMgYW4gb3B0aW9uIGZvciB0aGUgZnV0dXJlIGFzIHdlJ3ZlIHdhZmZsZWQgdGhpcyBzb29vb29vb29vbyBtYW55IHRpbWVzIG5vdworICAgICAgICBjb250ZXh0LndyaXRlKG51bGwsIGJ1ZmZlcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1ZlcnRleFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9WZXJ0ZXhTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg5MDlmMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9WZXJ0ZXhTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlVmVydGV4OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBWZXJ0ZXhTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VmVydGV4PiB7CisgICAgcHVibGljIFZlcnRleFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlZFUlRFWCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFZlcnRleCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgVmVydGV4IHYgPSBuZXcgUmVmZXJlbmNlVmVydGV4KGNvbnRleHQucmVhZChidWZmZXIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSkpOworICAgICAgICAKKyAgICAgICAgLy8gZGlzY2FyZCB0aGUgcHJvcGVydGllcyAtIGFzIHdlIG9ubHkgc2VuZCAicmVmZXJlbmNlcyIgdGhpcyBzaG91bGQgYWx3YXlzIGJlIG51bGwsIGJ1dCB3aWxsIHdlIGNoYW5nZSBvdXIKKyAgICAgICAgLy8gbWluZHMgc29tZSBkYXk/Pz8/CisgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFZlcnRleCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZSh2YWx1ZS5pZCgpLCBidWZmZXIpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUubGFiZWwoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvWWVhck1vbnRoU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1llYXJNb250aFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzBjMjE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1llYXJNb250aFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuWWVhck1vbnRoOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFllYXJNb250aFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxZZWFyTW9udGg+IHsKKyAgICBwdWJsaWMgWWVhck1vbnRoU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuWUVBUk1PTlRIKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgWWVhck1vbnRoIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gWWVhck1vbnRoLm9mKGJ1ZmZlci5yZWFkSW50KCksIGJ1ZmZlci5yZWFkQnl0ZSgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFllYXJNb250aCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KHZhbHVlLmdldFllYXIoKSkud3JpdGVCeXRlKHZhbHVlLmdldE1vbnRoVmFsdWUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1pvbmVPZmZzZXRTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvWm9uZU9mZnNldFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWI2ZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1pvbmVPZmZzZXRTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLlpvbmVPZmZzZXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgWm9uZU9mZnNldFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxab25lT2Zmc2V0PiB7CisKKyAgICBwdWJsaWMgWm9uZU9mZnNldFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlpPTkVPRkZTRVQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBab25lT2Zmc2V0IHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gWm9uZU9mZnNldC5vZlRvdGFsU2Vjb25kcyhidWZmZXIucmVhZEludCgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFpvbmVPZmZzZXQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUludCh2YWx1ZS5nZXRUb3RhbFNlY29uZHMoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1pvbmVkRGF0ZVRpbWVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvWm9uZWREYXRlVGltZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzlkZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1pvbmVkRGF0ZVRpbWVTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLlpvbmVkRGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLlpvbmVPZmZzZXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgWm9uZWREYXRlVGltZVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxab25lZERhdGVUaW1lPiB7CisgICAgcHVibGljIFpvbmVkRGF0ZVRpbWVTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5aT05FREFURVRJTUUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBab25lZERhdGVUaW1lIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBMb2NhbERhdGVUaW1lIGxkdCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTG9jYWxEYXRlVGltZS5jbGFzcywgZmFsc2UpOworICAgICAgICBmaW5hbCBab25lT2Zmc2V0IHpvID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBab25lT2Zmc2V0LmNsYXNzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBab25lZERhdGVUaW1lLm9mKGxkdCwgem8pOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgWm9uZWREYXRlVGltZSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLnRvTG9jYWxEYXRlVGltZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldE9mZnNldCgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxUb2tlbnMuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBobWwvR3JhcGhNTFRva2Vucy5qYXZhCmluZGV4IDkyMWExMGYuLjU4OGU0NjQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBobWwvR3JhcGhNTFRva2Vucy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBobWwvR3JhcGhNTFRva2Vucy5qYXZhCkBAIC01NSw0ICs1NSw2IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9ORyA9ICJsb25nIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCT09MRUFOID0gImJvb2xlYW4iOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElOVCA9ICJpbnQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFZFUlRFWF9TVUZGSVggPSAiViI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRURHRV9TVUZGSVggPSAiRSI7CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxXcml0ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBobWwvR3JhcGhNTFdyaXRlci5qYXZhCmluZGV4IGY3MDkzYjUuLjM5OTFlNGUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBobWwvR3JhcGhNTFdyaXRlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBobWwvR3JhcGhNTFdyaXRlci5qYXZhCkBAIC0xOCw2ICsxOCwyMiBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBobWw7CiAKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKK2ltcG9ydCBqYXZheC54bWwuWE1MQ29uc3RhbnRzOworaW1wb3J0IGphdmF4LnhtbC5zdHJlYW0uWE1MT3V0cHV0RmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwuc3RyZWFtLlhNTFN0cmVhbUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC54bWwuc3RyZWFtLlhNTFN0cmVhbVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuQ29sbGVjdGlvblV0aWxzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CkBAIC0zMSwyMSArNDcsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuQ29tcGFyYXRvcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiAKLWltcG9ydCBqYXZheC54bWwuWE1MQ29uc3RhbnRzOwotaW1wb3J0IGphdmF4LnhtbC5zdHJlYW0uWE1MT3V0cHV0RmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwuc3RyZWFtLlhNTFN0cmVhbUV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC54bWwuc3RyZWFtLlhNTFN0cmVhbVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ci1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKLQogLyoqCiAgKiBHcmFwaE1MV3JpdGVyIHdyaXRlcyBhIEdyYXBoIHRvIGEgR3JhcGhNTCBPdXRwdXRTdHJlYW0uIE5vdGUgdGhhdCB0aGlzIGZvcm1hdCBpcyBsb3NzeSwgaW4gdGhlIHNlbnNlIHRoYXQgZGF0YQogICogdHlwZXMgYW5kIGZlYXR1cmVzIG9mIEdyZW1saW4gU3RydWN0dXJlIG5vdCBzdXBwb3J0ZWQgYnkgR3JhcGhNTCBhcmUgbm90IHNlcmlhbGl6ZWQuICBUaGlzIGZvcm1hdCBpcyBtZWFudCBmb3IKQEAgLTY2LDEwICs2NywxMSBAQAogICAgIHByaXZhdGUgZmluYWwgT3B0aW9uYWw8U3RyaW5nPiB4bWxTY2hlbWFMb2NhdGlvbjsKICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBlZGdlTGFiZWxLZXk7CiAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdmVydGV4TGFiZWxLZXk7CisgICAgcHJpdmF0ZSBDb2xsZWN0aW9uPFN0cmluZz4gaW50ZXJzZWN0aW9uID0gQ29sbGVjdGlvbnMuZW1wdHlTZXQoKTsKIAogICAgIHByaXZhdGUgR3JhcGhNTFdyaXRlcihmaW5hbCBib29sZWFuIG5vcm1hbGl6ZSwgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiB2ZXJ0ZXhLZXlUeXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBlZGdlS2V5VHlwZXMsIGZpbmFsIFN0cmluZyB4bWxTY2hlbWFMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGVkZ2VMYWJlbEtleSwgZmluYWwgU3RyaW5nIHZlcnRleExhYmVsS2V5KSB7CisgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGVkZ2VLZXlUeXBlcywgZmluYWwgU3RyaW5nIHhtbFNjaGVtYUxvY2F0aW9uLAorICAgICAgICAgICAgZmluYWwgU3RyaW5nIGVkZ2VMYWJlbEtleSwgZmluYWwgU3RyaW5nIHZlcnRleExhYmVsS2V5KSB7CiAgICAgICAgIHRoaXMubm9ybWFsaXplID0gbm9ybWFsaXplOwogICAgICAgICB0aGlzLnZlcnRleEtleVR5cGVzID0gT3B0aW9uYWwub2ZOdWxsYWJsZSh2ZXJ0ZXhLZXlUeXBlcyk7CiAgICAgICAgIHRoaXMuZWRnZUtleVR5cGVzID0gT3B0aW9uYWwub2ZOdWxsYWJsZShlZGdlS2V5VHlwZXMpOwpAQCAtMjEzLDI2ICsyMTUsMzYgQEAKICAgICAgICAgICAgIHJldHVybiB3cml0ZXI7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZXI7Ci0gICAgfQorICAgICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgd3JpdGVUeXBlcyhmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGlkZW50aWZpZWRWZXJ0ZXhLZXlUeXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGlkZW50aWZpZWRFZGdlS2V5VHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgWE1MU3RyZWFtV3JpdGVyIHdyaXRlcikgdGhyb3dzIFhNTFN0cmVhbUV4Y2VwdGlvbiB7CisgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGlkZW50aWZpZWRFZGdlS2V5VHlwZXMsCisgICAgICAgICAgICBmaW5hbCBYTUxTdHJlYW1Xcml0ZXIgd3JpdGVyKSB0aHJvd3MgWE1MU3RyZWFtRXhjZXB0aW9uIHsKICAgICAgICAgLy8gPGtleSBpZD0id2VpZ2h0IiBmb3I9ImVkZ2UiIGF0dHIubmFtZT0id2VpZ2h0IiBhdHRyLnR5cGU9ImZsb2F0Ii8+CiAgICAgICAgIGZpbmFsIENvbGxlY3Rpb248U3RyaW5nPiB2ZXJ0ZXhLZXlTZXQgPSBnZXRLZXlzQW5kTm9ybWFsaXplSWZSZXF1aXJlZChpZGVudGlmaWVkVmVydGV4S2V5VHlwZXMpOworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPFN0cmluZz4gZWRnZUtleVNldCA9IGdldEtleXNBbmROb3JtYWxpemVJZlJlcXVpcmVkKGlkZW50aWZpZWRFZGdlS2V5VHlwZXMpOworICAgICAgICAvLyBpbiBjYXNlIHZlcnRleCBhbmQgZWRnZSBtYXkgaGF2ZSB0aGUgc2FtZSBhdHRyaWJ1dGUgbmFtZSwgdGhlIGtleSBpZCBpbiBncmFwaG1sIGhhdmUgdG8gYmUgZGlmZmVyZW50CisgICAgICAgIGludGVyc2VjdGlvbiA9IENvbGxlY3Rpb25VdGlscy5pbnRlcnNlY3Rpb24odmVydGV4S2V5U2V0LCBlZGdlS2V5U2V0KTsKKwogICAgICAgICBmb3IgKFN0cmluZyBrZXkgOiB2ZXJ0ZXhLZXlTZXQpIHsKICAgICAgICAgICAgIHdyaXRlci53cml0ZVN0YXJ0RWxlbWVudChHcmFwaE1MVG9rZW5zLktFWSk7Ci0gICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5JRCwga2V5KTsKKyAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb24uY29udGFpbnMoa2V5KSkgeworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLklELCBrZXkuY29uY2F0KEdyYXBoTUxUb2tlbnMuVkVSVEVYX1NVRkZJWCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5JRCwga2V5KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLkZPUiwgR3JhcGhNTFRva2Vucy5OT0RFKTsKICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLkFUVFJfTkFNRSwga2V5KTsKICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLkFUVFJfVFlQRSwgaWRlbnRpZmllZFZlcnRleEtleVR5cGVzLmdldChrZXkpKTsKICAgICAgICAgICAgIHdyaXRlci53cml0ZUVuZEVsZW1lbnQoKTsKICAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIENvbGxlY3Rpb248U3RyaW5nPiBlZGdlS2V5U2V0ID0gZ2V0S2V5c0FuZE5vcm1hbGl6ZUlmUmVxdWlyZWQoaWRlbnRpZmllZEVkZ2VLZXlUeXBlcyk7CiAgICAgICAgIGZvciAoU3RyaW5nIGtleSA6IGVkZ2VLZXlTZXQpIHsKICAgICAgICAgICAgIHdyaXRlci53cml0ZVN0YXJ0RWxlbWVudChHcmFwaE1MVG9rZW5zLktFWSk7Ci0gICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5JRCwga2V5KTsKKyAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb24uY29udGFpbnMoa2V5KSkgeworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLklELCBrZXkuY29uY2F0KEdyYXBoTUxUb2tlbnMuRURHRV9TVUZGSVgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuSUQsIGtleSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5GT1IsIEdyYXBoTUxUb2tlbnMuRURHRSk7CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5BVFRSX05BTUUsIGtleSk7CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5BVFRSX1RZUEUsIGlkZW50aWZpZWRFZGdlS2V5VHlwZXMuZ2V0KGtleSkpOwpAQCAtMjYzLDcgKzI3NSwxMSBAQAogCiAgICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIGtleSA6IGtleXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZVN0YXJ0RWxlbWVudChHcmFwaE1MVG9rZW5zLkRBVEEpOwotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiAhPSBudWxsICYmIGludGVyc2VjdGlvbi5jb250YWlucyhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkgKyBHcmFwaE1MVG9rZW5zLkVER0VfU1VGRklYKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVjaG5pY2FsbHkgdGhlcmUgY2FuJ3QgYmUgYSBudWxsIGhlcmUgYXMgZ3JlbWxpbiBzdHJ1Y3R1cmUgZm9yYmlkcyB0aGF0IG9jY3VycmVuY2UgZXZlbiBpZiBHcmFwaAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb25zIHN1cHBvcnQgaXQsIGJ1dCBvdXQgdG8gZW1wdHkgc3RyaW5nIGp1c3QgaW4gY2FzZS4KICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUNoYXJhY3RlcnMoZWRnZS5wcm9wZXJ0eShrZXkpLm9yRWxzZSgiIikudG9TdHJpbmcoKSk7CkBAIC0yODYsNyArMzAyLDExIEBACiAKICAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcga2V5IDogZWRnZS5rZXlzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZVN0YXJ0RWxlbWVudChHcmFwaE1MVG9rZW5zLkRBVEEpOwotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiAhPSBudWxsICYmIGludGVyc2VjdGlvbi5jb250YWlucyhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkgKyBHcmFwaE1MVG9rZW5zLkVER0VfU1VGRklYKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVjaG5pY2FsbHkgdGhlcmUgY2FuJ3QgYmUgYSBudWxsIGhlcmUgYXMgZ3JlbWxpbiBzdHJ1Y3R1cmUgZm9yYmlkcyB0aGF0IG9jY3VycmVuY2UgZXZlbiBpZiBHcmFwaAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb25zIHN1cHBvcnQgaXQsIGJ1dCBvdXQgdG8gZW1wdHkgc3RyaW5nIGp1c3QgaW4gY2FzZS4KICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUNoYXJhY3RlcnMoZWRnZS5wcm9wZXJ0eShrZXkpLm9yRWxzZSgiIikudG9TdHJpbmcoKSk7CkBAIC0zMTQsNyArMzM0LDEyIEBACiAKICAgICAgICAgICAgIGZvciAoU3RyaW5nIGtleSA6IGtleXMpIHsKICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVTdGFydEVsZW1lbnQoR3JhcGhNTFRva2Vucy5EQVRBKTsKLSAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5LRVksIGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiAhPSBudWxsICYmIGludGVyc2VjdGlvbi5jb250YWlucyhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLktFWSwga2V5LmNvbmNhdChHcmFwaE1MVG9rZW5zLlZFUlRFWF9TVUZGSVgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5LRVksIGtleSk7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgZmluYWwgVmVydGV4UHJvcGVydHk8T2JqZWN0PiBjdXJyZW50VmFsdWUgPSBnZXRDaGVja2VkVmVydGV4UHJvcGVydHkodmVydGV4LCBrZXkpOwogCiAgICAgICAgICAgICAgICAgLy8gdGVjaG5pY2FsbHkgdGhlcmUgY2FuJ3QgYmUgYSBudWxsIGhlcmUgYXMgZ3JlbWxpbiBzdHJ1Y3R1cmUgZm9yYmlkcyB0aGF0IG9jY3VycmVuY2UgZXZlbiBpZiBHcmFwaApAQCAtNDQ1LDcgKzQ3MCw3IEBACiAgICAgICAgICAgICByZXR1cm4gR3JhcGhNTFRva2Vucy5CT09MRUFOOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gR3JhcGhNTFRva2Vucy5TVFJJTkc7Ci0gICAgfQorICAgICAgICB9CiAKICAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoKSB7CiAgICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhtbC9HcmFwaE1MV3JpdGVySGVscGVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxXcml0ZXJIZWxwZXIuamF2YQppbmRleCA2MGVjZTNkLi4xM2I3ZDI2IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxXcml0ZXJIZWxwZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxXcml0ZXJIZWxwZXIuamF2YQpAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHMgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwogICAgICAgICAgICAgZm9yICg7IGluZGVudFN0ZXAgPiAwOyBpbmRlbnRTdGVwLS0pCiAgICAgICAgICAgICAgICAgcy5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIHNldEluZGVudFN0ZXAocy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHRoaXMuaW5kZW50U3RlcCA9IHMudG9TdHJpbmcoKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyB2b2lkIHNldEluZGVudFN0ZXAoU3RyaW5nIHMpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0Fic3RyYWN0R3JhcGhTT05UeXBlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vQWJzdHJhY3RHcmFwaFNPTlR5cGVTZXJpYWxpemVyLmphdmEKaW5kZXggOWQ4MmVlZi4uNzEzNGQwNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vQWJzdHJhY3RHcmFwaFNPTlR5cGVTZXJpYWxpemVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vQWJzdHJhY3RHcmFwaFNPTlR5cGVTZXJpYWxpemVyLmphdmEKQEAgLTgyLDcgKzgyLDcgQEAKIAogICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVHlwZVByZWZpeChmaW5hbCBKc29uR2VuZXJhdG9yIGpzb25HZW5lcmF0b3IsIGZpbmFsIFN0cmluZyBzKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlU3RhcnRPYmplY3QoKTsKLSAgICAgICAganNvbkdlbmVyYXRvci53cml0ZVN0cmluZ0ZpZWxkKHRoaXMucHJvcGVydHlOYW1lLCBzKTsKKyAgICAgICAganNvbkdlbmVyYXRvci53cml0ZVN0cmluZ0ZpZWxkKHByb3BlcnR5TmFtZSwgcyk7CiAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVGaWVsZE5hbWUodGhpcy52YWx1ZVByb3BlcnR5TmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05NYXBwZXIuamF2YQppbmRleCBlOGI4M2NlLi4zMDExMmY5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyLmphdmEKQEAgLTEwMCw3ICsxMDAsNyBAQAogICAgICAgICBpZiAodmVyc2lvbiA9PSBHcmFwaFNPTlZlcnNpb24uVjNfMCB8fCAodmVyc2lvbiA9PSBHcmFwaFNPTlZlcnNpb24uVjJfMCAmJiB0eXBlSW5mbyAhPSBUeXBlSW5mby5OT19UWVBFUykpIHsKICAgICAgICAgICAgIGZpbmFsIEdyYXBoU09OVHlwZUlkUmVzb2x2ZXIgZ3JhcGhTT05UeXBlSWRSZXNvbHZlciA9IG5ldyBHcmFwaFNPTlR5cGVJZFJlc29sdmVyKCk7CiAgICAgICAgICAgICBmaW5hbCBUeXBlUmVzb2x2ZXJCdWlsZGVyIHR5cGVyID0gbmV3IEdyYXBoU09OVHlwZVJlc29sdmVyQnVpbGRlcih2ZXJzaW9uKQotICAgICAgICAgICAgICAgICAgICAudHlwZXNFbWJlZGRpbmcoZ2V0VHlwZUluZm8oKSkKKyAgICAgICAgICAgICAgICAgICAgLnR5cGVzRW1iZWRkaW5nKHRoaXMudHlwZUluZm8pCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZVByb3BlcnR5TmFtZShHcmFwaFNPTlRva2Vucy5WQUxVRVBST1ApCiAgICAgICAgICAgICAgICAgICAgIC5pbml0KEpzb25UeXBlSW5mby5JZC5DVVNUT00sIGdyYXBoU09OVHlwZUlkUmVzb2x2ZXIpCiAgICAgICAgICAgICAgICAgICAgIC50eXBlUHJvcGVydHkoR3JhcGhTT05Ub2tlbnMuVkFMVUVUWVBFKTsKQEAgLTE2MSw2ICsxNjEsMjMgQEAKICAgICAgICAgcmV0dXJuIG5ldyBCdWlsZGVyKCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEJ1aWxkZXIgZnJvbSBhIGdpdmVuIHtAbGluayBHcmFwaFNPTk1hcHBlcn0uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgbmV3IGJ1aWxkZXIsIHdpdGggcHJvcGVydGllcyB0YWtlbiBmcm9tIHRoZSBvcmlnaW5hbCBtYXBwZXIgYWxyZWFkeSBhcHBsaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgQnVpbGRlciBidWlsZChmaW5hbCBHcmFwaFNPTk1hcHBlciBtYXBwZXIpIHsKKyAgICAgICAgQnVpbGRlciBidWlsZGVyID0gYnVpbGQoKTsKKworICAgICAgICBidWlsZGVyLmN1c3RvbU1vZHVsZXMgPSBtYXBwZXIuY3VzdG9tTW9kdWxlczsKKyAgICAgICAgYnVpbGRlci52ZXJzaW9uID0gbWFwcGVyLnZlcnNpb247CisgICAgICAgIGJ1aWxkZXIubG9hZEN1c3RvbU1vZHVsZXMgPSBtYXBwZXIubG9hZEN1c3RvbVNlcmlhbGl6ZXJzOworICAgICAgICBidWlsZGVyLm5vcm1hbGl6ZSA9IG1hcHBlci5ub3JtYWxpemU7CisgICAgICAgIGJ1aWxkZXIudHlwZUluZm8gPSBtYXBwZXIudHlwZUluZm87CisKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXI7CisgICAgfQorCiAgICAgcHVibGljIFR5cGVJbmZvIGdldFR5cGVJbmZvKCkgewogICAgICAgICByZXR1cm4gdGhpcy50eXBlSW5mbzsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1vZHVsZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Nb2R1bGUuamF2YQppbmRleCAxNWM0NzkzLi5jYjBlZWFmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1vZHVsZS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTW9kdWxlLmphdmEKQEAgLTI4LDE1ICsyOCwxOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsT3B0aW9uUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkJ1bGtTZXQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuVHJlZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uQ29ubmVjdGl2ZVN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FbGVtZW50SWRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRXZlbnRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uSGFsdGVkVHJhdmVyc2VyU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLk9wdGlvbnNTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUGFydGl0aW9uU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5maW5hbGl6YXRpb24uTWF0Y2hBbGdvcml0aG1TdHJhdGVneTsKQEAgLTk1LDYgKzk4LDcgQEAKIGltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uU3RyZWFtOwogCkBAIC0xMTUsNiArMTE5LDE4IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQXR0ZW1wdCB0byBsb2FkIHtAY29kZSBTcGFycWxTdHJhdGVneX0gaWYgaXQncyBvbiB0aGUgcGF0aC4gRHluYW1pY2FsbHkgbG9hZGluZyBpdCBmcm9tIGNvcmUgbWFrZXMgaXQgZWFzaWVyCisgICAgICogZm9yIHVzZXJzIGFzIHRoZXkgd29uJ3QgaGF2ZSB0byByZWdpc3RlciBzcGVjaWFsIG1vZHVsZXMgZm9yIHNlcmlhbGl6YXRpb24gcHVycG9zZXMuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgT3B0aW9uYWw8Q2xhc3M8Pz4+IHRyeUxvYWRTcGFycWxTdHJhdGVneSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5vZihDbGFzcy5mb3JOYW1lKCJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5TcGFycWxTdHJhdGVneSIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5lbXB0eSgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCiAgICAgICogVmVyc2lvbiAzLjAgb2YgR3JhcGhTT04uCiAgICAgICovCiAgICAgc3RhdGljIGZpbmFsIGNsYXNzIEdyYXBoU09OTW9kdWxlVjNkMCBleHRlbmRzIEdyYXBoU09OTW9kdWxlIHsKQEAgLTEzMiw3ICsxNDgsNyBAQAogICAgICAgICAgICAgICAgICAgICBwdXQoTGlzdC5jbGFzcywgIkxpc3QiKTsKICAgICAgICAgICAgICAgICAgICAgcHV0KFNldC5jbGFzcywgIlNldCIpOwogCi0gICAgICAgICAgICAgICAgICAgIC8vIFRpbmtlcnBvcCBHcmFwaCBvYmplY3RzCisgICAgICAgICAgICAgICAgICAgIC8vIFRpbmtlclBvcCBHcmFwaCBvYmplY3RzCiAgICAgICAgICAgICAgICAgICAgIHB1dChMYW1iZGEuY2xhc3MsICJMYW1iZGEiKTsKICAgICAgICAgICAgICAgICAgICAgcHV0KFZlcnRleC5jbGFzcywgIlZlcnRleCIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoRWRnZS5jbGFzcywgIkVkZ2UiKTsKQEAgLTE0NCwxMSArMTYwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIHB1dChUcmF2ZXJzYWxFeHBsYW5hdGlvbi5jbGFzcywgIlRyYXZlcnNhbEV4cGxhbmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChUcmF2ZXJzZXIuY2xhc3MsICJUcmF2ZXJzZXIiKTsKICAgICAgICAgICAgICAgICAgICAgcHV0KFRyZWUuY2xhc3MsICJUcmVlIik7CisgICAgICAgICAgICAgICAgICAgIHB1dChCdWxrU2V0LmNsYXNzLCAiQnVsa1NldCIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoQnl0ZWNvZGUuY2xhc3MsICJCeXRlY29kZSIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoQnl0ZWNvZGUuQmluZGluZy5jbGFzcywgIkJpbmRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgcHV0KEFuZFAuY2xhc3MsICJQIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChPclAuY2xhc3MsICJQIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChQLmNsYXNzLCAiUCIpOworICAgICAgICAgICAgICAgICAgICBwdXQoVGV4dFAuY2xhc3MsICJUZXh0UCIpOwogICAgICAgICAgICAgICAgICAgICBTdHJlYW0ub2YoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uLmNsYXNzLApAQCAtMTc2LDYgKzE5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lRmlsdGVyU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckxpbWl0U3RyYXRlZ3kuY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uc1N0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhQcm9jZXNzb3JTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoUmV0cmFjdGlvblN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50U3RyYXRlZ3kuY2xhc3MsCkBAIC0xOTEsNiArMjEwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaEZpbHRlclN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleFByb2dyYW1TdHJhdGVneS5jbGFzcwogICAgICAgICAgICAgICAgICAgICApLmZvckVhY2goc3RyYXRlZ3kgLT4gcHV0KHN0cmF0ZWd5LCBzdHJhdGVneS5nZXRTaW1wbGVOYW1lKCkpKTsKKworICAgICAgICAgICAgICAgICAgICBHcmFwaFNPTk1vZHVsZS50cnlMb2FkU3BhcnFsU3RyYXRlZ3koKS5pZlByZXNlbnQocyAtPiBwdXQocywgcy5nZXRTaW1wbGVOYW1lKCkpKTsKICAgICAgICAgICAgICAgICB9fSk7CiAKICAgICAgICAgLyoqCkBAIC0yMjQsNiArMjQ1LDcgQEAKICAgICAgICAgICAgIGFkZFNlcmlhbGl6ZXIoRG91YmxlLmNsYXNzLCBuZXcgR3JhcGhTT05TZXJpYWxpemVyc1YzZDAuRG91YmxlR3JhcGhTT05TZXJpYWxpemVyKCkpOwogCiAgICAgICAgICAgICAvLyB0cmF2ZXJzYWwKKyAgICAgICAgICAgIGFkZFNlcmlhbGl6ZXIoQnVsa1NldC5jbGFzcywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5CdWxrU2V0SmFja3NvblNlcmlhbGl6ZXIoKSk7CiAgICAgICAgICAgICBhZGRTZXJpYWxpemVyKFRyYXZlcnNhbC5jbGFzcywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5UcmF2ZXJzYWxKYWNrc29uU2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIGFkZFNlcmlhbGl6ZXIoQnl0ZWNvZGUuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuQnl0ZWNvZGVKYWNrc29uU2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIFN0cmVhbS5vZihWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5jbGFzcywKQEAgLTI2NSw2ICsyODcsNyBAQAogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKERvdWJsZS5jbGFzcywgbmV3IEdyYXBoU09OU2VyaWFsaXplcnNWM2QwLkRvdWJsZUphY2tzb25EZXNlcmlhbGl6ZXIoKSk7CiAKICAgICAgICAgICAgIC8vIHRyYXZlcnNhbAorICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKEJ1bGtTZXQuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuQnVsa1NldEphY2tzb25EZXNlcmlhbGl6ZXIoKSk7CiAgICAgICAgICAgICBhZGREZXNlcmlhbGl6ZXIoQnl0ZWNvZGUuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuQnl0ZWNvZGVKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKEJ5dGVjb2RlLkJpbmRpbmcuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuQmluZGluZ0phY2tzb25EZXNlcmlhbGl6ZXIoKSk7CiAgICAgICAgICAgICBTdHJlYW0ub2YoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkudmFsdWVzKCksCkBAIC0yNzgsNiArMzAxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2sudmFsdWVzKCksCiAgICAgICAgICAgICAgICAgICAgIFQudmFsdWVzKCkpLmZsYXRNYXAoU3RyZWFtOjpvZikuZm9yRWFjaChlIC0+IGFkZERlc2VyaWFsaXplcihlLmdldENsYXNzKCksIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuRW51bUphY2tzb25EZXNlcmlhbGl6ZXIoZS5nZXREZWNsYXJpbmdDbGFzcygpKSkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFAuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuUEphY2tzb25EZXNlcmlhbGl6ZXIoKSk7CisgICAgICAgICAgICBhZGREZXNlcmlhbGl6ZXIoVGV4dFAuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuVGV4dFBKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKExhbWJkYS5jbGFzcywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5MYW1iZGFKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFRyYXZlcnNlci5jbGFzcywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5UcmF2ZXJzZXJKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgQXJyYXlzLmFzTGlzdCgKQEAgLTI5Niw2ICszMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBJbmxpbmVGaWx0ZXJTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgT3JkZXJMaW1pdFN0cmF0ZWd5LmNsYXNzLAorICAgICAgICAgICAgICAgICAgICBPcHRpb25zU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIFBhdGhQcm9jZXNzb3JTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgUGF0aFJldHJhY3Rpb25TdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgQ291bnRTdHJhdGVneS5jbGFzcywKQEAgLTMxMSw2ICszMzYsOCBAQAogICAgICAgICAgICAgICAgICAgICBHcmFwaEZpbHRlclN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MKICAgICAgICAgICAgICkuZm9yRWFjaChzdHJhdGVneSAtPiBhZGREZXNlcmlhbGl6ZXIoc3RyYXRlZ3ksIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuVHJhdmVyc2FsU3RyYXRlZ3lQcm94eUphY2tzb25EZXNlcmlhbGl6ZXIoc3RyYXRlZ3kpKSk7CisKKyAgICAgICAgICAgIEdyYXBoU09OTW9kdWxlLnRyeUxvYWRTcGFycWxTdHJhdGVneSgpLmlmUHJlc2VudChzIC0+IGFkZERlc2VyaWFsaXplcihzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLlRyYXZlcnNhbFN0cmF0ZWd5UHJveHlKYWNrc29uRGVzZXJpYWxpemVyKHMpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoKSB7CkBAIC0zNzEsNiArMzk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcHV0KEFuZFAuY2xhc3MsICJQIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChPclAuY2xhc3MsICJQIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChQLmNsYXNzLCAiUCIpOworICAgICAgICAgICAgICAgICAgICBwdXQoVGV4dFAuY2xhc3MsICJUZXh0UCIpOwogICAgICAgICAgICAgICAgICAgICBTdHJlYW0ub2YoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uLmNsYXNzLApAQCAtMzk4LDYgKzQyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lRmlsdGVyU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckxpbWl0U3RyYXRlZ3kuY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uc1N0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhQcm9jZXNzb3JTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoUmV0cmFjdGlvblN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50U3RyYXRlZ3kuY2xhc3MsCkBAIC00MTMsNiArNDQyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaEZpbHRlclN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleFByb2dyYW1TdHJhdGVneS5jbGFzcwogICAgICAgICAgICAgICAgICAgICApLmZvckVhY2goc3RyYXRlZ3kgLT4gcHV0KHN0cmF0ZWd5LCBzdHJhdGVneS5nZXRTaW1wbGVOYW1lKCkpKTsKKworICAgICAgICAgICAgICAgICAgICBHcmFwaFNPTk1vZHVsZS50cnlMb2FkU3BhcnFsU3RyYXRlZ3koKS5pZlByZXNlbnQocyAtPiBwdXQocywgcy5nZXRTaW1wbGVOYW1lKCkpKTsKICAgICAgICAgICAgICAgICB9fSk7CiAKICAgICAgICAgLyoqCkBAIC00OTIsNiArNTIzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2sudmFsdWVzKCksCiAgICAgICAgICAgICAgICAgICAgIFQudmFsdWVzKCkpLmZsYXRNYXAoU3RyZWFtOjpvZikuZm9yRWFjaChlIC0+IGFkZERlc2VyaWFsaXplcihlLmdldENsYXNzKCksIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YyZDAuRW51bUphY2tzb25EZXNlcmlhbGl6ZXIoZS5nZXREZWNsYXJpbmdDbGFzcygpKSkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFAuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YyZDAuUEphY2tzb25EZXNlcmlhbGl6ZXIoKSk7CisgICAgICAgICAgICBhZGREZXNlcmlhbGl6ZXIoVGV4dFAuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YyZDAuVGV4dFBKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKExhbWJkYS5jbGFzcywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjJkMC5MYW1iZGFKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFRyYXZlcnNlci5jbGFzcywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjJkMC5UcmF2ZXJzZXJKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgQXJyYXlzLmFzTGlzdCgKQEAgLTUxMCw2ICs1NDIsNyBAQAogICAgICAgICAgICAgICAgICAgICBJbmxpbmVGaWx0ZXJTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgT3JkZXJMaW1pdFN0cmF0ZWd5LmNsYXNzLAorICAgICAgICAgICAgICAgICAgICBPcHRpb25zU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIFBhdGhQcm9jZXNzb3JTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgUGF0aFJldHJhY3Rpb25TdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgQ291bnRTdHJhdGVneS5jbGFzcywKQEAgLTUyNSw2ICs1NTgsOCBAQAogICAgICAgICAgICAgICAgICAgICBHcmFwaEZpbHRlclN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MKICAgICAgICAgICAgICkuZm9yRWFjaChzdHJhdGVneSAtPiBhZGREZXNlcmlhbGl6ZXIoc3RyYXRlZ3ksIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YyZDAuVHJhdmVyc2FsU3RyYXRlZ3lQcm94eUphY2tzb25EZXNlcmlhbGl6ZXIoc3RyYXRlZ3kpKSk7CisKKyAgICAgICAgICAgIEdyYXBoU09OTW9kdWxlLnRyeUxvYWRTcGFycWxTdHJhdGVneSgpLmlmUHJlc2VudChzIC0+IGFkZERlc2VyaWFsaXplcihzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLlRyYXZlcnNhbFN0cmF0ZWd5UHJveHlKYWNrc29uRGVzZXJpYWxpemVyKHMpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlR5cGVTZXJpYWxpemVyVjNkMC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05UeXBlU2VyaWFsaXplclYzZDAuamF2YQppbmRleCAyY2Q1N2RjLi5lY2E5MWVmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlR5cGVTZXJpYWxpemVyVjNkMC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVHlwZVNlcmlhbGl6ZXJWM2QwLmphdmEKQEAgLTEyNSw5ICsxMjUsOSBAQAogICAgICAgICAgICAgICAgIG1hcHBlZCA9IFRyZWUuY2xhc3M7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbWFwcGVkID0gTWFwLmNsYXNzOwotICAgICAgICB9IGVsc2UgaWYgKExpc3QuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShjKSB8fCBCdWxrU2V0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20oYykpICAvLyBjb2VyY2UgQnVsa1NldCB0byBMaXN0IGFzIHRoZWlyIGJlaGF2aW9yIG9uIGl0ZXJhdGlvbiBpcyBpZGVudGljYWwKKyAgICAgICAgfSBlbHNlIGlmIChMaXN0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20oYykpCiAgICAgICAgICAgICBtYXBwZWQgPSBMaXN0LmNsYXNzOwotICAgICAgICBlbHNlIGlmIChTZXQuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShjKSkKKyAgICAgICAgZWxzZSBpZiAoU2V0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20oYykgJiYgIUJ1bGtTZXQuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShjKSkgICAvLyB3ZSBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgb2YgQnVsa1NldAogICAgICAgICAgICAgbWFwcGVkID0gU2V0LmNsYXNzOwogICAgICAgICBlbHNlIGlmIChWZXJ0ZXguY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShjKSkKICAgICAgICAgICAgIG1hcHBlZCA9IFZlcnRleC5jbGFzczsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjJkMC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLmphdmEKaW5kZXggMmEwNzcyMy4uNTI5NzczMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLmphdmEKQEAgLTI0LDYgKzI0LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5EZWZhdWx0UmVtb3RlVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKQEAgLTM3Miw2ICszNzMsNDAgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGZpbmFsIHN0YXRpYyBjbGFzcyBUZXh0UEphY2tzb25EZXNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGREZXNlcmlhbGl6ZXI8VGV4dFA+IHsKKworICAgICAgICBwdWJsaWMgVGV4dFBKYWNrc29uRGVzZXJpYWxpemVyKCkgeworICAgICAgICAgICAgc3VwZXIoVGV4dFAuY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUZXh0UCBkZXNlcmlhbGl6ZShmaW5hbCBKc29uUGFyc2VyIGpzb25QYXJzZXIsIGZpbmFsIERlc2VyaWFsaXphdGlvbkNvbnRleHQgZGVzZXJpYWxpemF0aW9uQ29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uLCBKc29uUHJvY2Vzc2luZ0V4Y2VwdGlvbiB7CisgICAgICAgICAgICBTdHJpbmcgcHJlZGljYXRlID0gbnVsbDsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG51bGw7CisKKyAgICAgICAgICAgIHdoaWxlIChqc29uUGFyc2VyLm5leHRUb2tlbigpICE9IEpzb25Ub2tlbi5FTkRfT0JKRUNUKSB7CisgICAgICAgICAgICAgICAgaWYgKGpzb25QYXJzZXIuZ2V0Q3VycmVudE5hbWUoKS5lcXVhbHMoR3JhcGhTT05Ub2tlbnMuUFJFRElDQVRFKSkgeworICAgICAgICAgICAgICAgICAgICBqc29uUGFyc2VyLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPSBqc29uUGFyc2VyLmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGpzb25QYXJzZXIuZ2V0Q3VycmVudE5hbWUoKS5lcXVhbHMoR3JhcGhTT05Ub2tlbnMuVkFMVUUpKSB7CisgICAgICAgICAgICAgICAgICAgIGpzb25QYXJzZXIubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZGVzZXJpYWxpemF0aW9uQ29udGV4dC5yZWFkVmFsdWUoanNvblBhcnNlciwgU3RyaW5nLmNsYXNzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChUZXh0UCkgVGV4dFAuY2xhc3MuZ2V0TWV0aG9kKHByZWRpY2F0ZSwgU3RyaW5nLmNsYXNzKS5pbnZva2UobnVsbCwgdmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0NhY2hhYmxlKCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBmaW5hbCBzdGF0aWMgY2xhc3MgTGFtYmRhSmFja3NvbkRlc2VyaWFsaXplciBleHRlbmRzIFN0ZERlc2VyaWFsaXplcjxMYW1iZGE+IHsKIAogICAgICAgICBwdWJsaWMgTGFtYmRhSmFja3NvbkRlc2VyaWFsaXplcigpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLmphdmEKaW5kZXggZWFhN2IwZi4uNTEzMmViZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLmphdmEKQEAgLTI0LDkgKzI0LDExIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuRGVmYXVsdFJlbW90ZVRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuQnVsa1NldDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LlRyYXZlcnNhbFN0cmF0ZWd5UHJveHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkFuZFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkNvbm5lY3RpdmVQOwpAQCAtNDcsMTAgKzQ5LDExIEBACiAKIGltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5czsKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCkBAIC0xODUsNiArMTg4LDI0IEBACiAKICAgICB9CiAKKyAgICBmaW5hbCBzdGF0aWMgY2xhc3MgQnVsa1NldEphY2tzb25TZXJpYWxpemVyIGV4dGVuZHMgU3RkU2NhbGFyU2VyaWFsaXplcjxCdWxrU2V0PiB7CisKKyAgICAgICAgcHVibGljIEJ1bGtTZXRKYWNrc29uU2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKEJ1bGtTZXQuY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHNlcmlhbGl6ZShmaW5hbCBCdWxrU2V0IGJ1bGtTZXQsIGZpbmFsIEpzb25HZW5lcmF0b3IganNvbkdlbmVyYXRvciwgZmluYWwgU2VyaWFsaXplclByb3ZpZGVyIHNlcmlhbGl6ZXJQcm92aWRlcikKKyAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZVN0YXJ0QXJyYXkoKTsKKyAgICAgICAgICAgIGZvciAoTWFwLkVudHJ5IGVudHJ5IDogKFNldDxNYXAuRW50cnk+KSBidWxrU2V0LmFzQnVsaygpLmVudHJ5U2V0KCkpIHsKKyAgICAgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0KGVudHJ5LmdldEtleSgpKTsKKyAgICAgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0KGVudHJ5LmdldFZhbHVlKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZUVuZEFycmF5KCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBmaW5hbCBzdGF0aWMgY2xhc3MgQmluZGluZ0phY2tzb25TZXJpYWxpemVyIGV4dGVuZHMgU3RkU2NhbGFyU2VyaWFsaXplcjxCeXRlY29kZS5CaW5kaW5nPiB7CiAKICAgICAgICAgcHVibGljIEJpbmRpbmdKYWNrc29uU2VyaWFsaXplcigpIHsKQEAgLTM3MCw2ICszOTEsNDAgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGZpbmFsIHN0YXRpYyBjbGFzcyBUZXh0UEphY2tzb25EZXNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGREZXNlcmlhbGl6ZXI8VGV4dFA+IHsKKworICAgICAgICBwdWJsaWMgVGV4dFBKYWNrc29uRGVzZXJpYWxpemVyKCkgeworICAgICAgICAgICAgc3VwZXIoVGV4dFAuY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUZXh0UCBkZXNlcmlhbGl6ZShmaW5hbCBKc29uUGFyc2VyIGpzb25QYXJzZXIsIGZpbmFsIERlc2VyaWFsaXphdGlvbkNvbnRleHQgZGVzZXJpYWxpemF0aW9uQ29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uLCBKc29uUHJvY2Vzc2luZ0V4Y2VwdGlvbiB7CisgICAgICAgICAgICBTdHJpbmcgcHJlZGljYXRlID0gbnVsbDsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG51bGw7CisKKyAgICAgICAgICAgIHdoaWxlIChqc29uUGFyc2VyLm5leHRUb2tlbigpICE9IEpzb25Ub2tlbi5FTkRfT0JKRUNUKSB7CisgICAgICAgICAgICAgICAgaWYgKGpzb25QYXJzZXIuZ2V0Q3VycmVudE5hbWUoKS5lcXVhbHMoR3JhcGhTT05Ub2tlbnMuUFJFRElDQVRFKSkgeworICAgICAgICAgICAgICAgICAgICBqc29uUGFyc2VyLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPSBqc29uUGFyc2VyLmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGpzb25QYXJzZXIuZ2V0Q3VycmVudE5hbWUoKS5lcXVhbHMoR3JhcGhTT05Ub2tlbnMuVkFMVUUpKSB7CisgICAgICAgICAgICAgICAgICAgIGpzb25QYXJzZXIubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZGVzZXJpYWxpemF0aW9uQ29udGV4dC5yZWFkVmFsdWUoanNvblBhcnNlciwgU3RyaW5nLmNsYXNzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChUZXh0UCkgVGV4dFAuY2xhc3MuZ2V0TWV0aG9kKHByZWRpY2F0ZSwgU3RyaW5nLmNsYXNzKS5pbnZva2UobnVsbCwgdmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0NhY2hhYmxlKCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBmaW5hbCBzdGF0aWMgY2xhc3MgTGFtYmRhSmFja3NvbkRlc2VyaWFsaXplciBleHRlbmRzIFN0ZERlc2VyaWFsaXplcjxMYW1iZGE+IHsKIAogICAgICAgICBwdWJsaWMgTGFtYmRhSmFja3NvbkRlc2VyaWFsaXplcigpIHsKQEAgLTQxMSw2ICs0NjYsMzIgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGZpbmFsIHN0YXRpYyBjbGFzcyBCdWxrU2V0SmFja3NvbkRlc2VyaWFsaXplciBleHRlbmRzIFN0ZERlc2VyaWFsaXplcjxCdWxrU2V0PiB7CisgICAgICAgIHB1YmxpYyBCdWxrU2V0SmFja3NvbkRlc2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKEJ1bGtTZXQuY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWxrU2V0IGRlc2VyaWFsaXplKGZpbmFsIEpzb25QYXJzZXIganNvblBhcnNlciwgZmluYWwgRGVzZXJpYWxpemF0aW9uQ29udGV4dCBkZXNlcmlhbGl6YXRpb25Db250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24sIEpzb25Qcm9jZXNzaW5nRXhjZXB0aW9uIHsKKworICAgICAgICAgICAgZmluYWwgQnVsa1NldDxPYmplY3Q+IGJ1bGtTZXQgPSBuZXcgQnVsa1NldDw+KCk7CisKKyAgICAgICAgICAgIHdoaWxlIChqc29uUGFyc2VyLm5leHRUb2tlbigpICE9IEpzb25Ub2tlbi5FTkRfQVJSQVkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3Qga2V5ID0gZGVzZXJpYWxpemF0aW9uQ29udGV4dC5yZWFkVmFsdWUoanNvblBhcnNlciwgT2JqZWN0LmNsYXNzKTsKKyAgICAgICAgICAgICAgICBqc29uUGFyc2VyLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIGZpbmFsIExvbmcgdmFsID0gZGVzZXJpYWxpemF0aW9uQ29udGV4dC5yZWFkVmFsdWUoanNvblBhcnNlciwgTG9uZy5jbGFzcyk7CisgICAgICAgICAgICAgICAgYnVsa1NldC5hZGQoa2V5LCB2YWwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gYnVsa1NldDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0NhY2hhYmxlKCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBmaW5hbCBzdGF0aWMgY2xhc3MgQmluZGluZ0phY2tzb25EZXNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGREZXNlcmlhbGl6ZXI8Qnl0ZWNvZGUuQmluZGluZz4gewogCiAgICAgICAgIHB1YmxpYyBCaW5kaW5nSmFja3NvbkRlc2VyaWFsaXplcigpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1NlcmlhbGl6ZXJzVjFkMC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvU2VyaWFsaXplcnNWMWQwLmphdmEKaW5kZXggY2E3YzI0MS4uNzY5NzQ2MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvU2VyaWFsaXplcnNWMWQwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvU2VyaWFsaXplcnNWMWQwLmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuQW5kUDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuQ29ubmVjdGl2ZVA7CkBAIC0yMjgsNiArMjI5LDI2IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGNsYXNzIFRleHRQU2VyaWFsaXplciBpbXBsZW1lbnRzIFNlcmlhbGl6ZXJTaGltPFRleHRQPiB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgPE8gZXh0ZW5kcyBPdXRwdXRTaGltPiB2b2lkIHdyaXRlKGZpbmFsIEtyeW9TaGltPD8sIE8+IGtyeW8sIGZpbmFsIE8gb3V0cHV0LCBmaW5hbCBUZXh0UCBwKSB7CisgICAgICAgICAgICBvdXRwdXQud3JpdGVTdHJpbmcocC5nZXRCaVByZWRpY2F0ZSgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAga3J5by53cml0ZU9iamVjdChvdXRwdXQsIHAuZ2V0VmFsdWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIDxJIGV4dGVuZHMgSW5wdXRTaGltPiBUZXh0UCByZWFkKGZpbmFsIEtyeW9TaGltPEksID8+IGtyeW8sIGZpbmFsIEkgaW5wdXQsIGZpbmFsIENsYXNzPFRleHRQPiBjbGF6eikgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZWRpY2F0ZSA9IGlucHV0LnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyB2YWx1ZSA9IGtyeW8ucmVhZE9iamVjdChpbnB1dCwgU3RyaW5nLmNsYXNzKTsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKFRleHRQKSBUZXh0UC5jbGFzcy5nZXRNZXRob2QocHJlZGljYXRlLCBTdHJpbmcuY2xhc3MpLmludm9rZShudWxsLCB2YWx1ZSk7CisgICAgICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBMYW1iZGFTZXJpYWxpemVyIGltcGxlbWVudHMgU2VyaWFsaXplclNoaW08TGFtYmRhPiB7CiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgPE8gZXh0ZW5kcyBPdXRwdXRTaGltPiB2b2lkIHdyaXRlKGZpbmFsIEtyeW9TaGltPD8sIE8+IGtyeW8sIGZpbmFsIE8gb3V0cHV0LCBmaW5hbCBMYW1iZGEgbGFtYmRhKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9TZXJpYWxpemVyc1YzZDAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1NlcmlhbGl6ZXJzVjNkMC5qYXZhCmluZGV4IDhhNTdhMDYuLmUzNWJkMzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1NlcmlhbGl6ZXJzVjNkMC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1NlcmlhbGl6ZXJzVjNkMC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkFuZFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkNvbm5lY3RpdmVQOwpAQCAtNTIsNiArNTMsNyBAQAogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0OwpAQCAtMzQzLDYgKzM0NSwyNiBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBUZXh0UFNlcmlhbGl6ZXIgaW1wbGVtZW50cyBTZXJpYWxpemVyU2hpbTxUZXh0UD4geworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIDxPIGV4dGVuZHMgT3V0cHV0U2hpbT4gdm9pZCB3cml0ZShmaW5hbCBLcnlvU2hpbTw/LCBPPiBrcnlvLCBmaW5hbCBPIG91dHB1dCwgZmluYWwgVGV4dFAgcCkgeworICAgICAgICAgICAgb3V0cHV0LndyaXRlU3RyaW5nKHAuZ2V0QmlQcmVkaWNhdGUoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGtyeW8ud3JpdGVPYmplY3Qob3V0cHV0LCBwLmdldFZhbHVlKCkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyA8SSBleHRlbmRzIElucHV0U2hpbT4gVGV4dFAgcmVhZChmaW5hbCBLcnlvU2hpbTxJLCA/PiBrcnlvLCBmaW5hbCBJIGlucHV0LCBmaW5hbCBDbGFzczxUZXh0UD4gY2xhenopIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmVkaWNhdGUgPSBpbnB1dC5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdmFsdWUgPSBrcnlvLnJlYWRPYmplY3QoaW5wdXQsIFN0cmluZy5jbGFzcyk7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChUZXh0UCkgVGV4dFAuY2xhc3MuZ2V0TWV0aG9kKHByZWRpY2F0ZSwgU3RyaW5nLmNsYXNzKS5pbnZva2UobnVsbCwgdmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgY2xhc3MgTGFtYmRhU2VyaWFsaXplciBpbXBsZW1lbnRzIFNlcmlhbGl6ZXJTaGltPExhbWJkYT4gewogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIDxPIGV4dGVuZHMgT3V0cHV0U2hpbT4gdm9pZCB3cml0ZShmaW5hbCBLcnlvU2hpbTw/LCBPPiBrcnlvLCBmaW5hbCBPIG91dHB1dCwgZmluYWwgTGFtYmRhIGxhbWJkYSkgewpAQCAtNDI3LDcgKzQ0OSwxMiBAQAogICAgICAgICAgICAgb3V0cHV0LndyaXRlU3RyaW5nKG9iamVjdC5nZXROYW1lKCkpOwogICAgICAgICAgICAgb3V0cHV0LndyaXRlRG91YmxlKG9iamVjdC5nZXREdXJhdGlvbihUaW1lVW5pdC5OQU5PU0VDT05EUykgLyAxMDAwMDAwZCk7CiAgICAgICAgICAgICBrcnlvLndyaXRlT2JqZWN0KG91dHB1dCwgb2JqZWN0LmdldENvdW50cygpKTsKLSAgICAgICAgICAgIGtyeW8ud3JpdGVPYmplY3Qob3V0cHV0LCBvYmplY3QuZ2V0QW5ub3RhdGlvbnMoKSk7CisKKyAgICAgICAgICAgIC8vIGFubm90YXRpb25zIGlzIGEgc3luY2hyb25pemVkIExpbmtlZEhhc2hNYXAgLSBnZXQgcmlkIG9mIHRoZSAic3luY2giIGZvciBzZXJpYWxpemF0aW9uIGFzIGdyeW8KKyAgICAgICAgICAgIC8vIGRvZXNuJ3Qga25vdyBob3cgdG8gZGVzZXJpYWxpemUgdGhhdCB3ZWxsIGFuZCBMaW5rZWRIYXNoTWFwIHNob3VsZCB3b3JrIHdpdGggMy4zLnggYW5kIHByZXZpb3VzCisgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGFubm90YXRpb25zID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOworICAgICAgICAgICAgb2JqZWN0LmdldEFubm90YXRpb25zKCkuZm9yRWFjaChhbm5vdGF0aW9uczo6cHV0KTsKKyAgICAgICAgICAgIGtyeW8ud3JpdGVPYmplY3Qob3V0cHV0LCBhbm5vdGF0aW9ucyk7CiAKICAgICAgICAgICAgIC8vIGtyeW8gbWlnaHQgaGF2ZSBhIHByb2JsZW0gd2l0aCBMaW5rZWRIYXNoTWFwIHZhbHVlIGNvbGxlY3Rpb25zLiBjYW4ndCByZWNyZWF0ZSBpdCBpbmRlcGVuZGVudGx5IGJ1dAogICAgICAgICAgICAgLy8gaXQgZ2V0cyBmaXhlZCB3aXRoIHN0YW5kYXJkIGNvbGxlY3Rpb25zIGZvciBzb21lIHJlYXNvbi4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1ZlcnNpb24uamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1ZlcnNpb24uamF2YQppbmRleCBiOTQyYzQxLi4zMTM4NDg4IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9WZXJzaW9uLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvVmVyc2lvbi5qYXZhCkBAIC0zMyw2ICszMyw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Qb3A7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TYWNrRnVuY3Rpb25zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsT3B0aW9uUGFyZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuUmFuZ2VHbG9iYWxTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRm9sZFN0ZXA7CkBAIC00Nyw2ICs0OCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuVHJlZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uQ29ubmVjdGl2ZVN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5IYWx0ZWRUcmF2ZXJzZXJTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uT3B0aW9uc1N0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5QYXJ0aXRpb25TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmZpbmFsaXphdGlvbi5NYXRjaEFsZ29yaXRobVN0cmF0ZWd5OwpAQCAtNjgsMTIgKzcwLDE4IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uUmVhZE9ubHlTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5SZXNlcnZlZEtleXNWZXJpZmljYXRpb25TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX09fUF9TX1NFX1NMX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX09fU19TRV9TTF9UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19TX1NFX1NMX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX05MX09fU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5MUF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5MUF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkxQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5PX09CX1NfU0VfU0xfVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLk5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuT19UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuUHJvamVjdGVkVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuSW5kZXhlZFRyYXZlcnNlclNldDsKQEAgLTExMSw2ICsxMTksOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5rcnlvLkNsYXNzUmVzb2x2ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmtyeW8uS3J5b1NlcmlhbGl6YWJsZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQua3J5by5zZXJpYWxpemVycy5KYXZhU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkxhYmVsbGVkQ291bnRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLlJlZmVyZW5jZU1hcDsKIGltcG9ydCBvcmcuamF2YXR1cGxlcy5QYWlyOwogaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlRyaXBsZXQ7CiAKQEAgLTE0OSw2ICsxNTksNyBAQAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CiBpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOworaW1wb3J0IGphdmEudXRpbC5TdGFjazsKIGltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CiBpbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7CiBpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CkBAIC0yOTksMTEgKzMxMCwxMyBAQAogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKE9fT0JfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDg5KSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTFBfT19PQl9TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgOTApKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMUF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDkxKSk7CisKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihQcm9qZWN0ZWRUcmF2ZXJzZXIuY2xhc3MsIDE2OCkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKERlZmF1bHRSZW1vdGVUcmF2ZXJzZXIuY2xhc3MsIDEyMywgbmV3IEdyeW9TZXJpYWxpemVyc1YzZDAuRGVmYXVsdFJlbW90ZVRyYXZlcnNlclNlcmlhbGl6ZXIoKSkpOwogCiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQnl0ZWNvZGUuY2xhc3MsIDEyMiwgbmV3IEdyeW9TZXJpYWxpemVyc1YzZDAuQnl0ZWNvZGVTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihQLmNsYXNzLCAxMjQsIG5ldyBHcnlvU2VyaWFsaXplcnNWM2QwLlBTZXJpYWxpemVyKCkpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihUZXh0UC5jbGFzcywgMTg2LCBuZXcgR3J5b1NlcmlhbGl6ZXJzVjNkMC5UZXh0UFNlcmlhbGl6ZXIoKSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKExhbWJkYS5jbGFzcywgMTI1LCBuZXcgR3J5b1NlcmlhbGl6ZXJzVjNkMC5MYW1iZGFTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihCeXRlY29kZS5CaW5kaW5nLmNsYXNzLCAxMjYsIG5ldyBHcnlvU2VyaWFsaXplcnNWM2QwLkJpbmRpbmdTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihPcmRlci5jbGFzcywgMTI3KSk7CkBAIC0zMzEsNiArMzQ0LDcgQEAKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMYXp5QmFycmllclN0cmF0ZWd5LmNsYXNzLCAxNTApKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihNYXRjaFByZWRpY2F0ZVN0cmF0ZWd5LmNsYXNzLCAxNTEpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihPcmRlckxpbWl0U3RyYXRlZ3kuY2xhc3MsIDE1MikpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKE9wdGlvbnNTdHJhdGVneS5jbGFzcywgMTg3LCBuZXcgSmF2YVNlcmlhbGl6ZXIoKSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFBhdGhQcm9jZXNzb3JTdHJhdGVneS5jbGFzcywgMTUzKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoUGF0aFJldHJhY3Rpb25TdHJhdGVneS5jbGFzcywgMTU0KSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQ291bnRTdHJhdGVneS5jbGFzcywgMTU1KSk7CkBAIC0zNTQsNiArMzY4LDcgQEAKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihNYXBSZWR1Y2UuTnVsbE9iamVjdC5jbGFzcywgNzQpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihBdG9taWNMb25nLmNsYXNzLCA3OSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFBhaXIuY2xhc3MsIDg4LCBuZXcgVXRpbFNlcmlhbGl6ZXJzLlBhaXJTZXJpYWxpemVyKCkpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihUcmlwbGV0LmNsYXNzLCAxODMsIG5ldyBVdGlsU2VyaWFsaXplcnMuVHJpcGxldFNlcmlhbGl6ZXIoKSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFRyYXZlcnNhbEV4cGxhbmF0aW9uLmNsYXNzLCAxMDYsIG5ldyBKYXZhU2VyaWFsaXplcigpKSk7CiAKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihEdXJhdGlvbi5jbGFzcywgOTMsIG5ldyBKYXZhVGltZVNlcmlhbGl6ZXJzLkR1cmF0aW9uU2VyaWFsaXplcigpKSk7CkBAIC0zODMsNiArMzk4LDE2IEBACiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoUHJvZmlsZVN0ZXAuUHJvZmlsZUJpT3BlcmF0b3IuY2xhc3MsIDExOSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKEluZGV4ZWRUcmF2ZXJzZXJTZXQuVmVydGV4SW5kZXhlZFRyYXZlcnNlclNldC5jbGFzcywgMTczKSk7CiAKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgMTc0KSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzUpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3NikpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3NykpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3OCkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgMTc5KSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTGFiZWxsZWRDb3VudGVyLmNsYXNzLCAxODApKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihTdGFjay5jbGFzcywgMTgxKSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoUmVmZXJlbmNlTWFwLmNsYXNzLCAxODIpKTsKKwogICAgICAgICAgICAgLy8gcGxhY2Vob2xkZXIgc2VyaWFsaXplcnMgZm9yIGNsYXNzZXMgdGhhdCBkb24ndCBsaXZlIGhlcmUgaW4gY29yZS4gdGhpcyB3aWxsIGFsbG93IHRoZW0gdG8gYmUgdXNlZCBpZgogICAgICAgICAgICAgLy8gcHJlc2VudCAgb3IgaWdub3JlZCBpZiB0aGUgY2xhc3MgaXNuJ3QgYXZhaWxhYmxlLiBlaXRoZXIgd2F5IHRoZSByZWdpc3RyYXRpb24gbnVtYmVycyBhcmUgaGVsZCBhcwogICAgICAgICAgICAgLy8gcGxhY2Vob2xkZXJzIHNvIHRoYXQgdGhlIGZvcm1hdCBzdGF5cyBzdGFibGUKQEAgLTM5MCw2ICs0MTUsOSBAQAogICAgICAgICAgICAgICAgICAgICAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlJlcXVlc3RNZXNzYWdlR3J5b1NlcmlhbGl6ZXIiLCAxNjcpOwogICAgICAgICAgICAgdHJ5QWRkRHluYW1pY1R5cGUodGhpcywgIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlIiwKICAgICAgICAgICAgICAgICAgICAgIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5SZXNwb25zZU1lc3NhZ2VHcnlvU2VyaWFsaXplciIsIDE2OSk7CisKKyAgICAgICAgICAgIHRyeUFkZER5bmFtaWNUeXBlKHRoaXMsICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5TcGFycWxTdHJhdGVneSIsCisgICAgICAgICAgICAgICAgICAgIG51bGwsIDE4NCk7CiAgICAgICAgIH19OwogICAgIH0KIApAQCAtNDg0LDYgKzUxMiw3IEBACiAKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihCeXRlY29kZS5jbGFzcywgMTIyLCBuZXcgR3J5b1NlcmlhbGl6ZXJzVjFkMC5CeXRlY29kZVNlcmlhbGl6ZXIoKSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFAuY2xhc3MsIDEyNCwgbmV3IEdyeW9TZXJpYWxpemVyc1YxZDAuUFNlcmlhbGl6ZXIoKSkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFRleHRQLmNsYXNzLCAxODYsIG5ldyBHcnlvU2VyaWFsaXplcnNWMWQwLlRleHRQU2VyaWFsaXplcigpKSk7IC8vICoqKkxBU1QgSUQqKioKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMYW1iZGEuY2xhc3MsIDEyNSwgbmV3IEdyeW9TZXJpYWxpemVyc1YxZDAuTGFtYmRhU2VyaWFsaXplcigpKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQnl0ZWNvZGUuQmluZGluZy5jbGFzcywgMTI2LCBuZXcgR3J5b1NlcmlhbGl6ZXJzVjFkMC5CaW5kaW5nU2VyaWFsaXplcigpKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoT3JkZXIuY2xhc3MsIDEyNykpOwpAQCAtNTUyLDYgKzU4MSw3IEBACiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTGF6eUJhcnJpZXJTdHJhdGVneS5jbGFzcywgMTUwKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5jbGFzcywgMTUxKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoT3JkZXJMaW1pdFN0cmF0ZWd5LmNsYXNzLCAxNTIpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihPcHRpb25zU3RyYXRlZ3kuY2xhc3MsIDE4NywgbmV3IEphdmFTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihQYXRoUHJvY2Vzc29yU3RyYXRlZ3kuY2xhc3MsIDE1MykpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFBhdGhSZXRyYWN0aW9uU3RyYXRlZ3kuY2xhc3MsIDE1NCkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKENvdW50U3RyYXRlZ3kuY2xhc3MsIDE1NSkpOwpAQCAtNTY2LDYgKzU5NiwxNiBAQAogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFJlc2VydmVkS2V5c1ZlcmlmaWNhdGlvblN0cmF0ZWd5LmNsYXNzLCAxOTApKTsgICAvLyAqKipMQVNUIElEKioqCiAgICAgICAgICAgICAvLyBza2lwIDE3MSwgMTcyIHRvIHN5bmMgd2l0aCB0aGUgMy4zLngKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihJbmRleGVkVHJhdmVyc2VyU2V0LlZlcnRleEluZGV4ZWRUcmF2ZXJzZXJTZXQuY2xhc3MsIDE3MykpOworCisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3NCkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgMTc1KSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzYpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzcpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzgpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3OSkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKExhYmVsbGVkQ291bnRlci5jbGFzcywgMTgwKSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoU3RhY2suY2xhc3MsIDE4MSkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFJlZmVyZW5jZU1hcC5jbGFzcywgMTgyKSk7CiAgICAgICAgIH19OwogICAgIH0KIApAQCAtNTczLDcgKzYxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBzZXJpYWxpemVyLCBmaW5hbCBpbnQgcmVnaXN0cmF0aW9uSWQpIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGZpbmFsIENsYXNzIHR5cGVDbGFzcyA9IENsYXNzLmZvck5hbWUodHlwZSk7Ci0gICAgICAgICAgICBmaW5hbCBPcHRpb25hbDxTZXJpYWxpemVyU2hpbTw/Pj4gc2VyaWFsaXplckluc3RhbmNlID0gT3B0aW9uYWwub2Yoc2VyaWFsaXplcikKKyAgICAgICAgICAgIGZpbmFsIE9wdGlvbmFsPFNlcmlhbGl6ZXJTaGltPD8+PiBzZXJpYWxpemVySW5zdGFuY2UgPSBPcHRpb25hbC5vZk51bGxhYmxlKHNlcmlhbGl6ZXIpCiAgICAgICAgICAgICAgICAgICAgIC5tYXAoRnVuY3Rpb25VdGlscy53cmFwRnVuY3Rpb24oQ2xhc3M6OmZvck5hbWUpKQogICAgICAgICAgICAgICAgICAgICAubWFwKEZ1bmN0aW9uVXRpbHMud3JhcEZ1bmN0aW9uKGMgLT4gKFNlcmlhbGl6ZXJTaGltPD8+KSBjLmdldENvbnN0cnVjdG9yKCkubmV3SW5zdGFuY2UoKSkpOwogICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZXJJbnN0YW5jZS5pc1ByZXNlbnQoKSkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9VdGlsU2VyaWFsaXplcnMuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVXRpbFNlcmlhbGl6ZXJzLmphdmEKaW5kZXggN2FlYzIzNS4uZWRhMzE0YyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9VdGlsU2VyaWFsaXplcnMuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL1V0aWxTZXJpYWxpemVycy5qYXZhCkBAIC0yNTYsNiArMjU2LDcgQEAKICAgICAgICAgICAgIG1hcC5mb3JFYWNoKG06OnB1dCk7CiAgICAgICAgICAgICBrcnlvLndyaXRlT2JqZWN0KG91dHB1dCwgbSk7CiAgICAgICAgIH0KKwogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIDxJIGV4dGVuZHMgSW5wdXRTaGltPiBNYXAgcmVhZChmaW5hbCBLcnlvU2hpbTxJLCA/PiBrcnlvLCBmaW5hbCBJIGlucHV0LCBmaW5hbCBDbGFzczxNYXA+IGNsYXp6KSB7CiAgICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuc3luY2hyb25pemVkTWFwKGtyeW8ucmVhZE9iamVjdChpbnB1dCwgTGlua2VkSGFzaE1hcC5jbGFzcykpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9BdHRhY2hhYmxlLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0F0dGFjaGFibGUuamF2YQppbmRleCBmYTk5OWFhLi4zY2Q3NmYyIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0F0dGFjaGFibGUuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0F0dGFjaGFibGUuamF2YQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKIAogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CkBAIC03MCw3ICs3MSw3IEBACiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBNZXRob2QgewogICAgICAgICBwdWJsaWMgc3RhdGljIDxWPiBGdW5jdGlvbjxBdHRhY2hhYmxlPFY+LCBWPiBnZXQoZmluYWwgSG9zdCBob3N0VmVydGV4T3JHcmFwaCkgewotICAgICAgICAgICAgcmV0dXJuIChBdHRhY2hhYmxlPFY+IGF0dGFjaGFibGUpIC0+IHsKKyAgICAgICAgICAgIHJldHVybiBob3N0VmVydGV4T3JHcmFwaCBpbnN0YW5jZW9mIEVtcHR5R3JhcGggPyBBdHRhY2hhYmxlOjpnZXQgOiAoQXR0YWNoYWJsZTxWPiBhdHRhY2hhYmxlKSAtPiB7CiAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGJhc2UgPSBhdHRhY2hhYmxlLmdldCgpOwogICAgICAgICAgICAgICAgIGlmIChiYXNlIGluc3RhbmNlb2YgVmVydGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9wdGlvbmFsPFZlcnRleD4gb3B0aW9uYWwgPSBob3N0VmVydGV4T3JHcmFwaCBpbnN0YW5jZW9mIEdyYXBoID8KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvRWxlbWVudEhlbHBlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9FbGVtZW50SGVscGVyLmphdmEKaW5kZXggMGE3MTc4OC4uMGVmN2E2MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9FbGVtZW50SGVscGVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9FbGVtZW50SGVscGVyLmphdmEKQEAgLTM5NCwxMSArMzk0LDEwIEBACiAgICAgICogQHJldHVybiB0cnVlIGlmIGVsZW1lbnRzIGFuZCBlcXVhbCBhbmQgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGFyZUVxdWFsKGZpbmFsIEVsZW1lbnQgYSwgZmluYWwgT2JqZWN0IGIpIHsKLSAgICAgICAgaWYgKG51bGwgPT0gYiB8fCBudWxsID09IGEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgaWYgKGEgPT0gYikKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobnVsbCA9PSBiIHx8IG51bGwgPT0gYSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCEoKGEgaW5zdGFuY2VvZiBWZXJ0ZXggJiYgYiBpbnN0YW5jZW9mIFZlcnRleCkgfHwKICAgICAgICAgICAgICAgICAoYSBpbnN0YW5jZW9mIEVkZ2UgJiYgYiBpbnN0YW5jZW9mIEVkZ2UpIHx8CiAgICAgICAgICAgICAgICAgKGEgaW5zdGFuY2VvZiBWZXJ0ZXhQcm9wZXJ0eSAmJiBiIGluc3RhbmNlb2YgVmVydGV4UHJvcGVydHkpKSkKQEAgLTQ3MSwxOCArNDcwLDE3IEBACiAgICAgICogQHJldHVybiB0cnVlIGlmIGVxdWFsIGFuZCBmYWxzZSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gYXJlRXF1YWwoZmluYWwgUHJvcGVydHkgYSwgZmluYWwgT2JqZWN0IGIpIHsKLSAgICAgICAgaWYgKG51bGwgPT0gYiB8fCBudWxsID09IGEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgaWYgKGEgPT0gYikKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobnVsbCA9PSBiIHx8IG51bGwgPT0gYSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFByb3BlcnR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFhLmlzUHJlc2VudCgpICYmICEoKFByb3BlcnR5KSBiKS5pc1ByZXNlbnQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoIWEuaXNQcmVzZW50KCkgJiYgKChQcm9wZXJ0eSkgYikuaXNQcmVzZW50KCkgfHwgYS5pc1ByZXNlbnQoKSAmJiAhKChQcm9wZXJ0eSkgYikuaXNQcmVzZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBhLmtleSgpLmVxdWFscygoKFByb3BlcnR5KSBiKS5rZXkoKSkgJiYgYS52YWx1ZSgpLmVxdWFscygoKFByb3BlcnR5KSBiKS52YWx1ZSgpKSAmJiBhcmVFcXVhbChhLmVsZW1lbnQoKSwgKChQcm9wZXJ0eSkgYikuZWxlbWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGEua2V5KCkuZXF1YWxzKCgoUHJvcGVydHkpIGIpLmtleSgpKSAmJiBhLnZhbHVlKCkuZXF1YWxzKCgoUHJvcGVydHkpIGIpLnZhbHVlKCkpOwogCiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL1N0cmluZ0ZhY3RvcnkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvU3RyaW5nRmFjdG9yeS5qYXZhCmluZGV4IGNmNTY0OTUuLjgxNGJjMDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvU3RyaW5nRmFjdG9yeS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvU3RyaW5nRmFjdG9yeS5qYXZhCkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuVmVydGV4UHJvZ3JhbTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uVmVydGV4UHJvZ3JhbVN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmFuc2xhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwpAQCAtNDAsNiArNDEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb25VdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKIGltcG9ydCBvcmcuamF2YXR1cGxlcy5QYWlyOwogCiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwpAQCAtNTMsNyArNTUsNiBAQAogaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKIGltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKIAotCiAvKioKICAqIEEgY29sbGVjdGlvbiBvZiBoZWxwZnVsIG1ldGhvZHMgZm9yIGNyZWF0aW5nIHN0YW5kYXJkIHtAbGluayBPYmplY3QjdG9TdHJpbmcoKX0gcmVwcmVzZW50YXRpb25zIG9mIGdyYXBoLXJlbGF0ZWQKICAqIG9iamVjdHMuCkBAIC02Niw2ICs2Nyw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEUgPSAiZSI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFAgPSAicCI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFZQID0gInZwIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFUSCA9ICJwYXRoIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTF9CUkFDS0VUID0gIlsiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBSX0JSQUNLRVQgPSAiXSI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPTU1BX1NQQUNFID0gIiwgIjsKQEAgLTE3Niw3ICsxNzgsNyBAQAogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRyYW5zbGF0b3JTdHJpbmcoZmluYWwgVHJhbnNsYXRvciB0cmFuc2xhdG9yKSB7Ci0gICAgICAgIHJldHVybiAidHJhbnNsYXRvclsiICsgdHJhbnNsYXRvci5nZXRUcmF2ZXJzYWxTb3VyY2UoKSArICI6IiArIHRyYW5zbGF0b3IuZ2V0VGFyZ2V0TGFuZ3VhZ2UoKSArICJdIjsKKyAgICAgICAgcmV0dXJuICJ0cmFuc2xhdG9yIiArIExfQlJBQ0tFVCArIHRyYW5zbGF0b3IuZ2V0VHJhdmVyc2FsU291cmNlKCkgKyAiOiIgKyB0cmFuc2xhdG9yLmdldFRhcmdldExhbmd1YWdlKCkgKyBSX0JSQUNLRVQ7CiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmVydGV4UHJvZ3JhbVN0cmluZyhmaW5hbCBWZXJ0ZXhQcm9ncmFtIHZlcnRleFByb2dyYW0sIGZpbmFsIFN0cmluZyBpbnRlcm5hbFN0cmluZykgewpAQCAtMjUyLDQgKzI1NCw3IEBACiAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDEsIHN0cmluZy5sZW5ndGgoKSAtIDEpOwogICAgIH0KIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHBhdGhTdHJpbmcoZmluYWwgUGF0aCBwYXRoKSB7CisgICAgICAgIHJldHVybiBQQVRIICsgTF9CUkFDS0VUICsgU3RyaW5nLmpvaW4oIiwgIiwgSXRlcmF0b3JVdGlscy5tYXAocGF0aCwgT2JqZWN0Ojp0b1N0cmluZykpICsgUl9CUkFDS0VUOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvZW1wdHkvRW1wdHlWZXJ0ZXhQcm9wZXJ0eS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9lbXB0eS9FbXB0eVZlcnRleFByb3BlcnR5LmphdmEKaW5kZXggYTc3ZmQ2Zi4uYzdhNWI0NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9lbXB0eS9FbXB0eVZlcnRleFByb3BlcnR5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9lbXB0eS9FbXB0eVZlcnRleFByb3BlcnR5LmphdmEKQEAgLTkwLDcgKzkwLDcgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPFU+IEl0ZXJhdG9yPFByb3BlcnR5PFU+PiBwcm9wZXJ0aWVzKFN0cmluZy4uLiBwcm9wZXJ0eUtleXMpIHsKKyAgICBwdWJsaWMgPFU+IEl0ZXJhdG9yPFByb3BlcnR5PFU+PiBwcm9wZXJ0aWVzKGZpbmFsIFN0cmluZy4uLiBwcm9wZXJ0eUtleXMpIHsKICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5SXRlcmF0b3IoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2tleWVkL0tleWVkUHJvcGVydHkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwva2V5ZWQvS2V5ZWRQcm9wZXJ0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MzJmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2tleWVkL0tleWVkUHJvcGVydHkuamF2YQpAQCAtMCwwICsxLDg1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5rZXllZDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworCitpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CisKKy8qKgorICogQSB1dGlsaXR5IGltcGxlbWVudGF0aW9uIG9mIGEge0BsaW5rIFByb3BlcnR5fSB0aGF0IG9ubHkgaGFzIGEga2V5IGJ1dCBubyB2YWx1ZS4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBLZXllZFByb3BlcnR5PFY+IGltcGxlbWVudHMgUHJvcGVydHk8Vj4geworCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcga2V5OworCisgICAgcHVibGljIEtleWVkUHJvcGVydHkoZmluYWwgU3RyaW5nIGtleSkgeworICAgICAgICBpZiAobnVsbCA9PSBrZXkgfHwga2V5LmlzRW1wdHkoKSkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigia2V5IGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgIHRoaXMua2V5ID0ga2V5OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcga2V5KCkgeworICAgICAgICByZXR1cm4gdGhpcy5rZXk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFYgdmFsdWUoKSB0aHJvd3MgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IEV4Y2VwdGlvbnMucHJvcGVydHlEb2VzTm90RXhpc3QoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1ByZXNlbnQoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRWxlbWVudCBlbGVtZW50KCkgeworICAgICAgICB0aHJvdyBFeGNlcHRpb25zLnByb3BlcnR5RG9lc05vdEV4aXN0KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVtb3ZlKCkgeworCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkucHJvcGVydHlTdHJpbmcodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAobyA9PSBudWxsIHx8IGdldENsYXNzKCkgIT0gby5nZXRDbGFzcygpKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgS2V5ZWRQcm9wZXJ0eTw/PiB0aGF0ID0gKEtleWVkUHJvcGVydHk8Pz4pIG87CisKKyAgICAgICAgcmV0dXJuIGtleS5lcXVhbHModGhhdC5rZXkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBrZXkuaGFzaENvZGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2tleWVkL0tleWVkVmVydGV4UHJvcGVydHkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwva2V5ZWQvS2V5ZWRWZXJ0ZXhQcm9wZXJ0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzY2JhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2tleWVkL0tleWVkVmVydGV4UHJvcGVydHkuamF2YQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwua2V5ZWQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKKworLyoqCisgKiBBIHV0aWxpdHkgaW1wbGVtZW50YXRpb24gb2YgYSB7QGxpbmsgUHJvcGVydHl9IHRoYXQgb25seSBoYXMgYSBrZXkgYnV0IG5vIHZhbHVlIGFuZCBubyBtZXRhLXByb3BlcnRpZXMuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgS2V5ZWRWZXJ0ZXhQcm9wZXJ0eTxWPiBpbXBsZW1lbnRzIFZlcnRleFByb3BlcnR5PFY+IHsKKworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGtleTsKKworICAgIHB1YmxpYyBLZXllZFZlcnRleFByb3BlcnR5KGZpbmFsIFN0cmluZyBrZXkpIHsKKyAgICAgICAgaWYgKG51bGwgPT0ga2V5IHx8IGtleS5pc0VtcHR5KCkpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImtleSBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB0aGlzLmtleSA9IGtleTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVmVydGV4IGVsZW1lbnQoKSB7CisgICAgICAgIHRocm93IFByb3BlcnR5LkV4Y2VwdGlvbnMucHJvcGVydHlEb2VzTm90RXhpc3QoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgT2JqZWN0IGlkKCkgeworICAgICAgICB0aHJvdyBQcm9wZXJ0eS5FeGNlcHRpb25zLnByb3BlcnR5RG9lc05vdEV4aXN0KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoIGdyYXBoKCkgeworICAgICAgICB0aHJvdyBQcm9wZXJ0eS5FeGNlcHRpb25zLnByb3BlcnR5RG9lc05vdEV4aXN0KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxVPiBQcm9wZXJ0eTxVPiBwcm9wZXJ0eShTdHJpbmcga2V5KSB7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eS48VT5lbXB0eSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8VT4gUHJvcGVydHk8VT4gcHJvcGVydHkoU3RyaW5nIGtleSwgVSB2YWx1ZSkgeworICAgICAgICByZXR1cm4gUHJvcGVydHkuPFU+ZW1wdHkoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIGtleSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMua2V5OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBWIHZhbHVlKCkgdGhyb3dzIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24geworICAgICAgICB0aHJvdyBQcm9wZXJ0eS5FeGNlcHRpb25zLnByb3BlcnR5RG9lc05vdEV4aXN0KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gaXNQcmVzZW50KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVtb3ZlKCkgeworCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkucHJvcGVydHlTdHJpbmcodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxVPiBJdGVyYXRvcjxQcm9wZXJ0eTxVPj4gcHJvcGVydGllcyhmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CisgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUl0ZXJhdG9yKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAobyA9PSBudWxsIHx8IGdldENsYXNzKCkgIT0gby5nZXRDbGFzcygpKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgS2V5ZWRWZXJ0ZXhQcm9wZXJ0eTw/PiB0aGF0ID0gKEtleWVkVmVydGV4UHJvcGVydHk8Pz4pIG87CisKKyAgICAgICAgcmV0dXJuIGtleS5lcXVhbHModGhhdC5rZXkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBrZXkuaGFzaENvZGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VFZGdlLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VFZGdlLmphdmEKaW5kZXggYTM1M2VhNy4uNGE5ZDdiZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlRWRnZS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZUVkZ2UuamF2YQpAQCAtNDcsNiArNDcsMTIgQEAKICAgICAgICAgdGhpcy5vdXRWZXJ0ZXggPSBuZXcgUmVmZXJlbmNlVmVydGV4KGVkZ2Uub3V0VmVydGV4KCkpOwogICAgIH0KIAorICAgIHB1YmxpYyBSZWZlcmVuY2VFZGdlKGZpbmFsIE9iamVjdCBpZCwgZmluYWwgU3RyaW5nIGxhYmVsLCBmaW5hbCBSZWZlcmVuY2VWZXJ0ZXggaW5WZXJ0ZXgsIGZpbmFsIFJlZmVyZW5jZVZlcnRleCBvdXRWZXJ0ZXgpIHsKKyAgICAgICAgc3VwZXIoaWQsIGxhYmVsKTsKKyAgICAgICAgdGhpcy5pblZlcnRleCA9IGluVmVydGV4OworICAgICAgICB0aGlzLm91dFZlcnRleCA9IG91dFZlcnRleDsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgPFY+IFByb3BlcnR5PFY+IHByb3BlcnR5KGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIFYgdmFsdWUpIHsKICAgICAgICAgdGhyb3cgRWxlbWVudC5FeGNlcHRpb25zLnByb3BlcnR5QWRkaXRpb25Ob3RTdXBwb3J0ZWQoKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZUVsZW1lbnQuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZUVsZW1lbnQuamF2YQppbmRleCA5ZWUwNzBkLi4wMDQ0MWI0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VFbGVtZW50LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlRWxlbWVudC5qYXZhCkBAIC00Miw2ICs0MiwxMSBAQAogCiAgICAgfQogCisgICAgcHJvdGVjdGVkIFJlZmVyZW5jZUVsZW1lbnQoZmluYWwgT2JqZWN0IGlkLCBmaW5hbCBTdHJpbmcgbGFiZWwpIHsKKyAgICAgICAgdGhpcy5pZCA9IGlkOworICAgICAgICB0aGlzLmxhYmVsID0gbGFiZWw7CisgICAgfQorCiAgICAgcHVibGljIFJlZmVyZW5jZUVsZW1lbnQoZmluYWwgRWxlbWVudCBlbGVtZW50KSB7CiAgICAgICAgIHRoaXMuaWQgPSBlbGVtZW50LmlkKCk7CiAgICAgICAgIHRyeSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VQcm9wZXJ0eS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlUHJvcGVydHkuamF2YQppbmRleCAwNzRmODYzLi4yMDcxMTdhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VQcm9wZXJ0eS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVByb3BlcnR5LmphdmEKQEAgLTUyLDYgKzUyLDEyIEBACiAgICAgICAgIHRoaXMudmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSgpOwogICAgIH0KIAorICAgIHB1YmxpYyBSZWZlcmVuY2VQcm9wZXJ0eShmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBWIHZhbHVlKSB7CisgICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMua2V5ID0ga2V5OworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgICAgICAgcmV0dXJuIEVsZW1lbnRIZWxwZXIuaGFzaENvZGUodGhpcyk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VWZXJ0ZXguamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVZlcnRleC5qYXZhCmluZGV4IGEwNDc2NWMuLjVlMTNiMGQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVZlcnRleC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVZlcnRleC5qYXZhCkBAIC0zOCw2ICszOCwxMCBAQAogCiAgICAgfQogCisgICAgcHVibGljIFJlZmVyZW5jZVZlcnRleChmaW5hbCBPYmplY3QgaWQsIGZpbmFsIFN0cmluZyBsYWJlbCkgeworICAgICAgICBzdXBlcihpZCwgbGFiZWwpOworICAgIH0KKwogICAgIHB1YmxpYyBSZWZlcmVuY2VWZXJ0ZXgoZmluYWwgVmVydGV4IHZlcnRleCkgewogICAgICAgICBzdXBlcih2ZXJ0ZXgpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVZlcnRleFByb3BlcnR5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eS5qYXZhCmluZGV4IGU1MmFiZWMuLjhjMzBkOWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVZlcnRleFByb3BlcnR5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlVmVydGV4UHJvcGVydHkuamF2YQpAQCAtNDYsNiArNDYsMTMgQEAKICAgICAgICAgdGhpcy52YWx1ZSA9IHZlcnRleFByb3BlcnR5LnZhbHVlKCk7CiAgICAgfQogCisgICAgcHVibGljIFJlZmVyZW5jZVZlcnRleFByb3BlcnR5KGZpbmFsIE9iamVjdCBpZCwgZmluYWwgU3RyaW5nIGxhYmVsLCBmaW5hbCBWIHZhbHVlKSB7CisgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsOworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgICAgIHRoaXMudmVydGV4ID0gbnVsbDsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS5wcm9wZXJ0eVN0cmluZyh0aGlzKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9OdW1iZXJIZWxwZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9OdW1iZXJIZWxwZXIuamF2YQppbmRleCBlZmQ0NDZiLi5jNDU3YzU4IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvTnVtYmVySGVscGVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL051bWJlckhlbHBlci5qYXZhCkBAIC0zNDUsMTEgKzM0NSwzMyBAQAogICAgICAgICByZXR1cm4gZ2V0SGVscGVyKGNsYXp6KS5taW4uYXBwbHkoYSwgYik7CiAgICAgfQogCisgICAgcHVibGljIHN0YXRpYyBDb21wYXJhYmxlIG1pbihmaW5hbCBDb21wYXJhYmxlIGEsIGZpbmFsIENvbXBhcmFibGUgYikgeworICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIE51bWJlciAmJiBiIGluc3RhbmNlb2YgTnVtYmVyICYmICFhLmVxdWFscyhEb3VibGUuTmFOKSAmJiAhYi5lcXVhbHMoRG91YmxlLk5hTikpIHsKKyAgICAgICAgICAgIGZpbmFsIE51bWJlciBhbiA9IChOdW1iZXIpIGEsIGJuID0gKE51bWJlcikgYjsKKyAgICAgICAgICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBOdW1iZXI+IGNsYXp6ID0gZ2V0SGlnaGVzdENvbW1vbk51bWJlckNsYXNzKGFuLCBibik7CisgICAgICAgICAgICByZXR1cm4gKENvbXBhcmFibGUpIGdldEhlbHBlcihjbGF6eikubWluLmFwcGx5KGFuLCBibik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlzTm9uVmFsdWUoYSkgPyBiIDoKKyAgICAgICAgICAgICAgICBpc05vblZhbHVlKGIpID8gYSA6CisgICAgICAgICAgICAgICAgICAgICAgICBhLmNvbXBhcmVUbyhiKSA8IDAgPyBhIDogYjsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIE51bWJlciBtYXgoZmluYWwgTnVtYmVyIGEsIGZpbmFsIE51bWJlciBiKSB7CiAgICAgICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBOdW1iZXI+IGNsYXp6ID0gZ2V0SGlnaGVzdENvbW1vbk51bWJlckNsYXNzKGEsIGIpOwogICAgICAgICByZXR1cm4gZ2V0SGVscGVyKGNsYXp6KS5tYXguYXBwbHkoYSwgYik7CiAgICAgfQogCisgICAgcHVibGljIHN0YXRpYyBDb21wYXJhYmxlIG1heChmaW5hbCBDb21wYXJhYmxlIGEsIGZpbmFsIENvbXBhcmFibGUgYikgeworICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIE51bWJlciAmJiBiIGluc3RhbmNlb2YgTnVtYmVyICYmICFhLmVxdWFscyhEb3VibGUuTmFOKSAmJiAhYi5lcXVhbHMoRG91YmxlLk5hTikpIHsKKyAgICAgICAgICAgIGZpbmFsIE51bWJlciBhbiA9IChOdW1iZXIpIGEsIGJuID0gKE51bWJlcikgYjsKKyAgICAgICAgICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBOdW1iZXI+IGNsYXp6ID0gZ2V0SGlnaGVzdENvbW1vbk51bWJlckNsYXNzKGFuLCBibik7CisgICAgICAgICAgICByZXR1cm4gKENvbXBhcmFibGUpIGdldEhlbHBlcihjbGF6eikubWF4LmFwcGx5KGFuLCBibik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlzTm9uVmFsdWUoYSkgPyBiIDoKKyAgICAgICAgICAgICAgICBpc05vblZhbHVlKGIpID8gYSA6CisgICAgICAgICAgICAgICAgICAgICAgICBhLmNvbXBhcmVUbyhiKSA+IDAgPyBhIDogYjsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIEludGVnZXIgY29tcGFyZShmaW5hbCBOdW1iZXIgYSwgZmluYWwgTnVtYmVyIGIpIHsKICAgICAgICAgZmluYWwgQ2xhc3M8PyBleHRlbmRzIE51bWJlcj4gY2xhenogPSBnZXRIaWdoZXN0Q29tbW9uTnVtYmVyQ2xhc3MoYSwgYik7CiAgICAgICAgIHJldHVybiBnZXRIZWxwZXIoY2xhenopLmNtcC5hcHBseShhLCBiKTsKQEAgLTQxNSw0ICs0MzcsOCBAQAogICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNOdW1iZXIoZmluYWwgTnVtYmVyIG51bWJlcikgewogICAgICAgICByZXR1cm4gbnVtYmVyICE9IG51bGwgJiYgIW51bWJlci5lcXVhbHMoRG91YmxlLk5hTik7CiAgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc05vblZhbHVlKGZpbmFsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEb3VibGUgJiYgIWlzTnVtYmVyKChEb3VibGUpIHZhbHVlKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvVGVzdFN1cHBvcnQuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9UZXN0U3VwcG9ydC5qYXZhCmluZGV4IGFjMWFmMTcuLjY2ODIwZDYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9UZXN0U3VwcG9ydC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9UZXN0U3VwcG9ydC5qYXZhCkBAIC0xNTUsMTYgKzE1NSwyNyBAQAogICAgICAqIHtAbGluayAjbWFrZVRlc3REYXRhUGF0aH0gaW4gYSBzdWJkaXJlY3RvcnkgY2FsbGVkIHtAY29kZSB0ZW1wL3Jlc291cmNlc30uCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBGaWxlIGdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoZmluYWwgQ2xhc3MgZ3JhcGhDbGFzcywgZmluYWwgQ2xhc3MgcmVzb3VyY2VDbGFzcywgZmluYWwgU3RyaW5nIHJlc291cmNlTmFtZSwgZmluYWwgU3RyaW5nIGV4dGVuc2lvbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoZ3JhcGhDbGFzcywgcmVzb3VyY2VDbGFzcywgcmVzb3VyY2VOYW1lLCBleHRlbnNpb24sIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvcGllcyBhIGZpbGUgc3RvcmVkIGFzIHBhcnQgb2YgYSByZXNvdXJjZSB0byB0aGUgZmlsZSBzeXN0ZW0gaW4gdGhlIHBhdGggcmV0dXJuZWQgZnJvbQorICAgICAqIHtAbGluayBUZXN0SGVscGVyI21ha2VUZXN0RGF0YVBhdGh9IGluIGEgc3ViZGlyZWN0b3J5IGNhbGxlZCB7QGNvZGUgdGVtcC9yZXNvdXJjZXN9LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgRmlsZSBnZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKGZpbmFsIENsYXNzIGdyYXBoQ2xhc3MsIGZpbmFsIENsYXNzIHJlc291cmNlQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlc291cmNlTmFtZSwgZmluYWwgU3RyaW5nIGV4dGVuc2lvbiwgZmluYWwgYm9vbGVhbiBvdmVyd3JpdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIEZpbGUgdGVtcCA9IG1ha2VUZXN0RGF0YVBhdGgoZ3JhcGhDbGFzcywgInJlc291cmNlcyIpOwogICAgICAgICBmaW5hbCBGaWxlIHRlbXBGaWxlID0gbmV3IEZpbGUodGVtcCwgcmVzb3VyY2VOYW1lICsgZXh0ZW5zaW9uKTsKLSAgICAgICAgZmluYWwgRmlsZU91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbSh0ZW1wRmlsZSk7Ci0gICAgICAgIGludCBkYXRhOwotICAgICAgICBmaW5hbCBJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IHJlc291cmNlQ2xhc3MuZ2V0UmVzb3VyY2VBc1N0cmVhbShyZXNvdXJjZU5hbWUpOwotICAgICAgICB3aGlsZSAoKGRhdGEgPSBpbnB1dFN0cmVhbS5yZWFkKCkpICE9IC0xKSB7Ci0gICAgICAgICAgICBvdXRwdXRTdHJlYW0ud3JpdGUoZGF0YSk7CisgICAgICAgIGlmICghdGVtcEZpbGUuZXhpc3RzKCkgfHwgb3ZlcndyaXRlKSB7CisgICAgICAgICAgICB0cnkgKGZpbmFsIEZpbGVPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0odGVtcEZpbGUpKSB7CisgICAgICAgICAgICAgICAgaW50IGRhdGE7CisgICAgICAgICAgICAgICAgdHJ5IChmaW5hbCBJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IHJlc291cmNlQ2xhc3MuZ2V0UmVzb3VyY2VBc1N0cmVhbShyZXNvdXJjZU5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoZGF0YSA9IGlucHV0U3RyZWFtLnJlYWQoKSkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFN0cmVhbS53cml0ZShkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBvdXRwdXRTdHJlYW0uY2xvc2UoKTsKLSAgICAgICAgaW5wdXRTdHJlYW0uY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIHRlbXBGaWxlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL2Z1bmN0aW9uL0xhbWJkYS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL2Z1bmN0aW9uL0xhbWJkYS5qYXZhCmluZGV4IDBlYzMyZWIuLmMwZjJkZjMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9mdW5jdGlvbi9MYW1iZGEuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvZnVuY3Rpb24vTGFtYmRhLmphdmEKQEAgLTg0LDcgKzg0LDcgQEAKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb2JqZWN0KSB7CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgTGFtYmRhICYmCi0gICAgICAgICAgICAgICAgICAgICgoTGFtYmRhKSBvYmplY3QpLmdldExhbWJkYUFyZ3VtZW50cygpID09IHRoaXMuZ2V0TGFtYmRhQXJndW1lbnRzKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKChMYW1iZGEpIG9iamVjdCkuZ2V0TGFtYmRhQXJndW1lbnRzKCkgPT0gdGhpcy5sYW1iZGFBcmd1bWVudHMgJiYKICAgICAgICAgICAgICAgICAgICAgKChMYW1iZGEpIG9iamVjdCkuZ2V0TGFtYmRhU2NyaXB0KCkuZXF1YWxzKHRoaXMubGFtYmRhU291cmNlKSAmJgogICAgICAgICAgICAgICAgICAgICAoKExhbWJkYSkgb2JqZWN0KS5nZXRMYW1iZGFMYW5ndWFnZSgpLmVxdWFscyh0aGlzLmxhbWJkYUxhbmd1YWdlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9Bc3NlcnRIZWxwZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQXNzZXJ0SGVscGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVjNWE5MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQXNzZXJ0SGVscGVyLmphdmEKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW47CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXI7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgQXNzZXJ0SGVscGVyIHsKKworICAgIHByb3RlY3RlZCBBc3NlcnRIZWxwZXIoKSB7fQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhc3NlcnRJc1V0aWxpdHlDbGFzcyhmaW5hbCBDbGFzczw/PiB1dGlsaXR5Q2xhc3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDb25zdHJ1Y3RvciBjb25zdHJ1Y3RvciA9IHV0aWxpdHlDbGFzcy5nZXREZWNsYXJlZENvbnN0cnVjdG9yKCk7CisKKyAgICAgICAgYXNzZXJ0VHJ1ZShNb2RpZmllci5pc0ZpbmFsKHV0aWxpdHlDbGFzcy5nZXRNb2RpZmllcnMoKSkpOworICAgICAgICBhc3NlcnRUcnVlKE1vZGlmaWVyLmlzUHJpdmF0ZShjb25zdHJ1Y3Rvci5nZXRNb2RpZmllcnMoKSkpOworICAgICAgICBjb25zdHJ1Y3Rvci5zZXRBY2Nlc3NpYmxlKHRydWUpOworICAgICAgICBjb25zdHJ1Y3Rvci5uZXdJbnN0YW5jZSgpOworICAgIH0KKyAgICAgICAgCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL1Rlc3RIZWxwZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vVGVzdEhlbHBlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzVkODE1Li4wMDAwMDAwCi0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vVGVzdEhlbHBlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW47Ci0KLWltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOwotCi1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7Ci1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXI7Ci0KLS8qKgotICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQotICovCi1wdWJsaWMgY2xhc3MgVGVzdEhlbHBlciB7Ci0KLSAgICBwcm90ZWN0ZWQgVGVzdEhlbHBlcigpIHt9Ci0gICAgCi0gICAgcHVibGljIHN0YXRpYyB2b2lkIGFzc2VydElzVXRpbGl0eUNsYXNzKGZpbmFsIENsYXNzPD8+IHV0aWxpdHlDbGFzcykgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIENvbnN0cnVjdG9yIGNvbnN0cnVjdG9yID0gdXRpbGl0eUNsYXNzLmdldERlY2xhcmVkQ29uc3RydWN0b3IoKTsKLQotICAgICAgICBhc3NlcnRUcnVlKE1vZGlmaWVyLmlzRmluYWwodXRpbGl0eUNsYXNzLmdldE1vZGlmaWVycygpKSk7Ci0gICAgICAgIGFzc2VydFRydWUoTW9kaWZpZXIuaXNQcml2YXRlKGNvbnN0cnVjdG9yLmdldE1vZGlmaWVycygpKSk7Ci0gICAgICAgIGNvbnN0cnVjdG9yLnNldEFjY2Vzc2libGUodHJ1ZSk7Ci0gICAgICAgIGNvbnN0cnVjdG9yLm5ld0luc3RhbmNlKCk7Ci0gICAgfQotICAgICAgICAKLX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXJUZXN0LmphdmEKaW5kZXggZTQ4MGI3ZC4uMjE1M2FjMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXJUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXJUZXN0LmphdmEKQEAgLTE4LDE0ICsxOCwxNSBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzOwogCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAoraW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkZpZWxkOwogaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKIGltcG9ydCBqYXZhLnRpbWUuRGF5T2ZXZWVrOwogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKIAogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jc0NvbGxlY3Rpb25Db250YWluaW5nLmhhc0l0ZW1zOwpAQCAtMzUsMTMgKzM2LDE3IEBACiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KIHB1YmxpYyBjbGFzcyBEZWZhdWx0SW1wb3J0Q3VzdG9taXplclRlc3QgeworCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXR1cm5Bc3NpZ25lZEltcG9ydHMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgTWV0aG9kIGFicyA9IE1hdGguY2xhc3MuZ2V0TWV0aG9kKCJhYnMiLCBkb3VibGUuY2xhc3MpOwogICAgICAgICBmaW5hbCBFbnVtIGRheU9mV2Vla0VudW0gPSBEYXlPZldlZWsuU0FUVVJEQVk7CiAgICAgICAgIGZpbmFsIEVudW0gdEVudW0gPSBULmlkOworICAgICAgICBmaW5hbCBGaWVsZCBmaWVsZExhYmVscyA9IFdpdGhPcHRpb25zLmNsYXNzLmdldERlY2xhcmVkRmllbGQoImxhYmVscyIpOworCiAgICAgICAgIGZpbmFsIEltcG9ydEN1c3RvbWl6ZXIgaW1wb3J0cyA9IERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkKICAgICAgICAgICAgICAgICAuYWRkQ2xhc3NJbXBvcnRzKGphdmEuYXd0LkNvbG9yLmNsYXNzLCBqYXZhLmF3dC5BbHBoYUNvbXBvc2l0ZS5jbGFzcykKKyAgICAgICAgICAgICAgICAuYWRkRmllbGRJbXBvcnRzKGZpZWxkTGFiZWxzKQogICAgICAgICAgICAgICAgIC5hZGRNZXRob2RJbXBvcnRzKGFicykKICAgICAgICAgICAgICAgICAuYWRkRW51bUltcG9ydHMoZGF5T2ZXZWVrRW51bSwgdEVudW0pLmNyZWF0ZSgpOwogCkBAIC01OSw2ICs2NCwxMSBAQAogICAgICAgICBhc3NlcnRUaGF0KGltcG9ydHMuZ2V0RW51bUltcG9ydHMoKSwgaGFzSXRlbXMoZGF5T2ZXZWVrRW51bSwgdEVudW0pKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIGltcG9ydHMuZ2V0RW51bUNsYXNzZXMoKS5zaXplKCkpOwogICAgICAgICBhc3NlcnRUaGF0KGltcG9ydHMuZ2V0RW51bUNsYXNzZXMoKSwgaGFzSXRlbXMoVC5jbGFzcywgRGF5T2ZXZWVrLmNsYXNzKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGltcG9ydHMuZ2V0RmllbGRJbXBvcnRzKCkuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChpbXBvcnRzLmdldEZpZWxkSW1wb3J0cygpLCBoYXNJdGVtcyhmaWVsZExhYmVscykpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgaW1wb3J0cy5nZXRGaWVsZENsYXNzZXMoKS5zaXplKCkpOworICAgICAgICBhc3NlcnRUaGF0KGltcG9ydHMuZ2V0RmllbGRDbGFzc2VzKCksIGhhc0l0ZW1zKFdpdGhPcHRpb25zLmNsYXNzKSk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL1NjcmlwdEVuZ2luZUNhY2hlVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvU2NyaXB0RW5naW5lQ2FjaGVUZXN0LmphdmEKaW5kZXggYzI1OTRjNi4uOWU2ZDBkYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvU2NyaXB0RW5naW5lQ2FjaGVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvU2NyaXB0RW5naW5lQ2FjaGVUZXN0LmphdmEKQEAgLTIwLDcgKzIwLDcgQEAKIAogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFNhbWU7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKIC8qKgpAQCAtMzAsNyArMzAsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKFNjcmlwdEVuZ2luZUNhY2hlLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKFNjcmlwdEVuZ2luZUNhY2hlLmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db250YWluc1Rlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29udGFpbnNUZXN0LmphdmEKaW5kZXggNmQ5ZWEzOC4uMmVhNjM1ZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db250YWluc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0NvbnRhaW5zVGVzdC5qYXZhCkBAIC00Myw3ICs0Myw3IEBACiAgICAgICAgICAgICAgICAge0NvbnRhaW5zLndpdGhpbiwgMTAsIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpLCBmYWxzZX0sCiAgICAgICAgICAgICAgICAge0NvbnRhaW5zLndpdGhvdXQsIDEwLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKSwgdHJ1ZX0sCiAgICAgICAgICAgICAgICAge0NvbnRhaW5zLndpdGhpbiwgMTAwLCBBcnJheXMuYXNMaXN0KDEsIDIsIDMsIDQsIDEwKSwgZmFsc2V9LAotICAgICAgICAgICAgICAgIHtDb250YWlucy53aXRob3V0LCAxMGwsIEFycmF5cy5hc0xpc3QoMSwgMiwgMywgNCwgMTApLCB0cnVlfSwgICAgLy8gbm8gZm9yZ2l2ZW5lc3MKKyAgICAgICAgICAgICAgICB7Q29udGFpbnMud2l0aG91dCwgMTBMLCBBcnJheXMuYXNMaXN0KDEsIDIsIDMsIDQsIDEwKSwgZmFsc2V9LAogICAgICAgICAgICAgICAgIHtDb250YWlucy53aXRoaW4sICJ0ZXN0IiwgQXJyYXlzLmFzTGlzdCgxLCAyLCAzLCAidGVzdCIsIDEwKSwgdHJ1ZX0sCiAgICAgICAgICAgICAgICAge0NvbnRhaW5zLndpdGhvdXQsICJ0ZXN0aW5nIiwgQXJyYXlzLmFzTGlzdCgxLCAyLCAzLCAidGVzdCIsIDEwKSwgdHJ1ZX0KICAgICAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvckV4Y2VwdGlvblRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3JFeGNlcHRpb25UZXN0LmphdmEKaW5kZXggOWFhMTMzOS4uNTEzZDA0ZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvckV4Y2VwdGlvblRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL09wZXJhdG9yRXhjZXB0aW9uVGVzdC5qYXZhCkBAIC0zMSwxNiArMzEsNiBAQAogICAgIH0KIAogICAgIEBUZXN0KGV4cGVjdGVkID0gQ2xhc3NDYXN0RXhjZXB0aW9uLmNsYXNzKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93SWZWYWx1ZVRvTWF4SXNOb3ROdW1lcmljKCkgewotICAgICAgICBPcGVyYXRvci5tYXguYXBwbHkoIjEiLCAiMSIpOwotICAgIH0KLQotICAgIEBUZXN0KGV4cGVjdGVkID0gQ2xhc3NDYXN0RXhjZXB0aW9uLmNsYXNzKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93SWZWYWx1ZVRvTWluSXNOb3ROdW1lcmljKCkgewotICAgICAgICBPcGVyYXRvci5taW4uYXBwbHkoIjEiLCAiMSIpOwotICAgIH0KLQotICAgIEBUZXN0KGV4cGVjdGVkID0gQ2xhc3NDYXN0RXhjZXB0aW9uLmNsYXNzKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93SWZWYWx1ZVRvTWludXNJc05vdE51bWVyaWMoKSB7CiAgICAgICAgIE9wZXJhdG9yLm1pbnVzLmFwcGx5KCIxIiwgIjEiKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL09wZXJhdG9yVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvclRlc3QuamF2YQppbmRleCAzOGY3NzQyLi5lNDk4Y2FlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL09wZXJhdG9yVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3JUZXN0LmphdmEKQEAgLTM4LDcgKzM4LDcgQEAKICAgICAvKioKICAgICAgKiBSZXF1aXJlZCB0byB2ZXJpZnkgdGhhdCBPcGVyYXRvciBjYW4gaGFuZGxlIE51bWJlciB0eXBlLCB0aGF0IGl0IGRvZXNuJ3Qga25vdyBleHBsaWNpdGx5LgogICAgICAqLwotICAgIHN0YXRpYyBjbGFzcyBDdXN0b21OdW1iZXIgZXh0ZW5kcyBOdW1iZXIgeworICAgIHN0YXRpYyBjbGFzcyBDdXN0b21OdW1iZXIgZXh0ZW5kcyBOdW1iZXIgaW1wbGVtZW50cyBDb21wYXJhYmxlPEN1c3RvbU51bWJlcj4gewogCiAgICAgICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgQ3VzdG9tTnVtYmVyIE9ORSA9IG5ldyBDdXN0b21OdW1iZXIoMSk7CiAgICAgICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgQ3VzdG9tTnVtYmVyIFRFTiA9IG5ldyBDdXN0b21OdW1iZXIoMTApOwpAQCAtNjgsNiArNjgsMTEgQEAKICAgICAgICAgcHVibGljIGRvdWJsZSBkb3VibGVWYWx1ZSgpIHsKICAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKGZpbmFsIEN1c3RvbU51bWJlciBhbm90aGVyQ3VzdG9tTnVtYmVyKSB7CisgICAgICAgICAgICByZXR1cm4gSW50ZWdlci5jb21wYXJlKG4sIGFub3RoZXJDdXN0b21OdW1iZXIubik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXJzKG5hbWUgPSAiezB9KHsxfSx7Mn0pID0gezN9IikKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvUFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvUFRlc3QuamF2YQppbmRleCBiNjVkMzIwLi5mMmUwODY4IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1BUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9QVGVzdC5qYXZhCkBAIC05NSw2ICs5NSwyMSBAQAogICAgICAgICAgICAgICAgICAgICB7UC5iZXR3ZWVuKCJtIiwgIm4iKS5vcihQLmVxKCJkYW5pZWwiKSksICJtYXJrbyIsIHRydWV9LAogICAgICAgICAgICAgICAgICAgICB7UC5iZXR3ZWVuKCJtIiwgIm4iKS5vcihQLmVxKCJkYW5pZWwiKSksICJkYW5pZWwiLCB0cnVlfSwKICAgICAgICAgICAgICAgICAgICAge1AuYmV0d2VlbigibSIsICJuIikub3IoUC5lcSgiZGFuaWVsIikpLCAic3RlcGhlbiIsIGZhbHNlfSwKKyAgICAgICAgICAgICAgICAgICAgLy8gdGV4dCBwcmVkaWNhdGVzCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5jb250YWluaW5nKCJhcmsiKSwgIm1hcmtvIiwgdHJ1ZX0sCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5jb250YWluaW5nKCJhcmsiKSwgImpvc2giLCBmYWxzZX0sCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5zdGFydGluZ1dpdGgoImpvIiksICJtYXJrbyIsIGZhbHNlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLnN0YXJ0aW5nV2l0aCgiam8iKSwgImpvc2giLCB0cnVlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLmVuZGluZ1dpdGgoInRlciIpLCAibWFya28iLCBmYWxzZX0sCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5lbmRpbmdXaXRoKCJ0ZXIiKSwgInBldGVyIiwgdHJ1ZX0sCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5jb250YWluaW5nKCJvIiksICJtYXJrbyIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLCAiam9zaCIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmd0ZSgiaiIpKSwgIm1hcmtvIiwgdHJ1ZX0sCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5jb250YWluaW5nKCJvIikuYW5kKFAuZ3RlKCJqIikpLCAiam9zaCIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmd0ZSgiaiIpKS5hbmQoVGV4dFAuZW5kaW5nV2l0aCgia28iKSksICJtYXJrbyIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmd0ZSgiaiIpKS5hbmQoVGV4dFAuZW5kaW5nV2l0aCgia28iKSksICJqb3NoIiwgZmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmd0ZSgiaiIpLmFuZChUZXh0UC5lbmRpbmdXaXRoKCJrbyIpKSksICJtYXJrbyIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmd0ZSgiaiIpLmFuZChUZXh0UC5lbmRpbmdXaXRoKCJrbyIpKSksICJqb3NoIiwgZmFsc2V9LAogICAgICAgICAgICAgfSkpOwogICAgICAgICB9CiAKQEAgLTExMiw3ICsxMjcsNyBAQAogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBwcmVkaWNhdGUudGVzdCh2YWx1ZSkpOwogICAgICAgICAgICAgYXNzZXJ0Tm90RXF1YWxzKGV4cGVjdGVkLCBwcmVkaWNhdGUuY2xvbmUoKS5uZWdhdGUoKS50ZXN0KHZhbHVlKSk7CiAgICAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoZXhwZWN0ZWQsIFAubm90KHByZWRpY2F0ZS5jbG9uZSgpKS50ZXN0KHZhbHVlKSk7Ci0gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIgJiYgIShwcmVkaWNhdGUuYmlQcmVkaWNhdGUgaW5zdGFuY2VvZiBDb250YWlucykpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZCwgcHJlZGljYXRlLnRlc3QoKChOdW1iZXIpIHZhbHVlKS5sb25nVmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGFzc2VydE5vdEVxdWFscyhleHBlY3RlZCwgcHJlZGljYXRlLmNsb25lKCkubmVnYXRlKCkudGVzdCgoKE51bWJlcikgdmFsdWUpLmxvbmdWYWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Tm90RXF1YWxzKGV4cGVjdGVkLCBQLm5vdChwcmVkaWNhdGUpLnRlc3QoKChOdW1iZXIpIHZhbHVlKS5sb25nVmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvR3JlbWxpbkRzbFByb2Nlc3NvclRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL0dyZW1saW5Ec2xQcm9jZXNzb3JUZXN0LmphdmEKaW5kZXggNWRmMDEwZC4uMjM4NzZjNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvR3JlbWxpbkRzbFByb2Nlc3NvclRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9HcmVtbGluRHNsUHJvY2Vzc29yVGVzdC5qYXZhCkBAIC0yMiw3ICsyMiwxNSBAQAogaW1wb3J0IGNvbS5nb29nbGUudGVzdGluZy5jb21waWxlLkphdmFGaWxlT2JqZWN0czsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAoraW1wb3J0IGphdmF4LnRvb2xzLkphdmFGaWxlT2JqZWN0OwogaW1wb3J0IGphdmF4LnRvb2xzLlN0YW5kYXJkTG9jYXRpb247CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOworaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKIAogaW1wb3J0IHN0YXRpYyBjb20uZ29vZ2xlLnRlc3RpbmcuY29tcGlsZS5Db21waWxhdGlvblN1YmplY3QuYXNzZXJ0VGhhdDsKIGltcG9ydCBzdGF0aWMgY29tLmdvb2dsZS50ZXN0aW5nLmNvbXBpbGUuQ29tcGlsZXIuamF2YWM7CkBAIC0zNCw3ICs0Miw3IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbXBpbGVUb0RlZmF1bHRQYWNrYWdlKCkgewotICAgICAgICBDb21waWxhdGlvbiBjb21waWxhdGlvbiA9IGphdmFjKCkKKyAgICAgICAgZmluYWwgQ29tcGlsYXRpb24gY29tcGlsYXRpb24gPSBqYXZhYygpCiAgICAgICAgICAgICAgICAgLndpdGhQcm9jZXNzb3JzKG5ldyBHcmVtbGluRHNsUHJvY2Vzc29yKCkpCiAgICAgICAgICAgICAgICAgLmNvbXBpbGUoSmF2YUZpbGVPYmplY3RzLmZvclJlc291cmNlKEdyZW1saW5Ec2wuY2xhc3MuZ2V0UmVzb3VyY2UoIlNvY2lhbFRyYXZlcnNhbERzbC5qYXZhIikpKTsKICAgICAgICAgYXNzZXJ0VGhhdChjb21waWxhdGlvbikuc3VjY2VlZGVkV2l0aG91dFdhcm5pbmdzKCk7CkBAIC00Miw3ICs1MCw3IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbXBpbGVBbmRNb3ZlUGFja2FnZSgpIHsKLSAgICAgICAgQ29tcGlsYXRpb24gY29tcGlsYXRpb24gPSBqYXZhYygpCisgICAgICAgIGZpbmFsIENvbXBpbGF0aW9uIGNvbXBpbGF0aW9uID0gamF2YWMoKQogICAgICAgICAgICAgICAgIC53aXRoUHJvY2Vzc29ycyhuZXcgR3JlbWxpbkRzbFByb2Nlc3NvcigpKQogICAgICAgICAgICAgICAgIC5jb21waWxlKEphdmFGaWxlT2JqZWN0cy5mb3JSZXNvdXJjZShHcmVtbGluRHNsLmNsYXNzLmdldFJlc291cmNlKCJTb2NpYWxNb3ZlVHJhdmVyc2FsRHNsLmphdmEiKSkpOwogICAgICAgICBhc3NlcnRUaGF0KGNvbXBpbGF0aW9uKS5zdWNjZWVkZWRXaXRob3V0V2FybmluZ3MoKTsKQEAgLTUyLDcgKzYwLDcgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQ29tcGlsZVRyYXZlcnNhbEFuZFRyYXZlcnNhbFNvdXJjZVRvRGVmYXVsdFBhY2thZ2UoKSB7Ci0gICAgICAgIENvbXBpbGF0aW9uIGNvbXBpbGF0aW9uID0gamF2YWMoKQorICAgICAgICBmaW5hbCBDb21waWxhdGlvbiBjb21waWxhdGlvbiA9IGphdmFjKCkKICAgICAgICAgICAgICAgICAud2l0aFByb2Nlc3NvcnMobmV3IEdyZW1saW5Ec2xQcm9jZXNzb3IoKSkKICAgICAgICAgICAgICAgICAuY29tcGlsZShKYXZhRmlsZU9iamVjdHMuZm9yUmVzb3VyY2UoR3JlbWxpbkRzbC5jbGFzcy5nZXRSZXNvdXJjZSgiU29jaWFsUGFja2FnZVRyYXZlcnNhbERzbC5qYXZhIikpKTsKICAgICAgICAgYXNzZXJ0VGhhdChjb21waWxhdGlvbikuc3VjY2VlZGVkV2l0aG91dFdhcm5pbmdzKCk7CkBAIC02MCw5ICs2OCw2MiBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRDb21waWxlV2l0aE5vRGVmYXVsdE1ldGhvZHMoKSB7Ci0gICAgICAgIENvbXBpbGF0aW9uIGNvbXBpbGF0aW9uID0gamF2YWMoKQorICAgICAgICBmaW5hbCBDb21waWxhdGlvbiBjb21waWxhdGlvbiA9IGphdmFjKCkKICAgICAgICAgICAgICAgICAud2l0aFByb2Nlc3NvcnMobmV3IEdyZW1saW5Ec2xQcm9jZXNzb3IoKSkKICAgICAgICAgICAgICAgICAuY29tcGlsZShKYXZhRmlsZU9iamVjdHMuZm9yUmVzb3VyY2UoR3JlbWxpbkRzbC5jbGFzcy5nZXRSZXNvdXJjZSgiU29jaWFsTm9EZWZhdWx0TWV0aG9kc1RyYXZlcnNhbERzbC5qYXZhIikpKTsKICAgICAgICAgYXNzZXJ0VGhhdChjb21waWxhdGlvbikuc3VjY2VlZGVkV2l0aG91dFdhcm5pbmdzKCk7CiAgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRDb21waWxlUmVtb3RlRHNsVHJhdmVyc2FsKCkgeworICAgICAgICBmaW5hbCBDb21waWxhdGlvbiBjb21waWxhdGlvbiA9IGphdmFjKCkKKyAgICAgICAgICAgICAgICAud2l0aFByb2Nlc3NvcnMobmV3IEdyZW1saW5Ec2xQcm9jZXNzb3IoKSkKKyAgICAgICAgICAgICAgICAuY29tcGlsZShKYXZhRmlsZU9iamVjdHMuZm9yUmVzb3VyY2UoR3JlbWxpbkRzbC5jbGFzcy5nZXRSZXNvdXJjZSgiU29jaWFsVHJhdmVyc2FsRHNsLmphdmEiKSksCisgICAgICAgICAgICAgICAgICAgICAgICBKYXZhRmlsZU9iamVjdHMuZm9yUmVzb3VyY2UoR3JlbWxpbkRzbC5jbGFzcy5nZXRSZXNvdXJjZSgiUmVtb3RlRHNsVHJhdmVyc2FsLmphdmEiKSkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBDbGFzc0xvYWRlciBjbCA9IG5ldyBKYXZhRmlsZU9iamVjdENsYXNzTG9hZGVyKGNvbXBpbGF0aW9uLmdlbmVyYXRlZEZpbGVzKCkpOworICAgICAgICAgICAgZmluYWwgQ2xhc3MgY2xzID0gY2wubG9hZENsYXNzKCJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5SZW1vdGVEc2xUcmF2ZXJzYWwiKTsKKyAgICAgICAgICAgIGNscy5nZXRDb25zdHJ1Y3RvcigpLm5ld0luc3RhbmNlKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBKYXZhRmlsZU9iamVjdENsYXNzTG9hZGVyIGV4dGVuZHMgQ2xhc3NMb2FkZXIgeworICAgICAgICBNYXA8U3RyaW5nLCBKYXZhRmlsZU9iamVjdD4gY2xhc3NGaWxlTWFwOworCisgICAgICAgIEphdmFGaWxlT2JqZWN0Q2xhc3NMb2FkZXIoTGlzdDxKYXZhRmlsZU9iamVjdD4gY2xhc3NGaWxlcykgeworICAgICAgICAgICAgY2xhc3NGaWxlTWFwID0gY2xhc3NGaWxlcy5zdHJlYW0oKS5jb2xsZWN0KENvbGxlY3RvcnMudG9NYXAoCisgICAgICAgICAgICAgICAgICAgIGYgLT4gZi50b1VyaSgpLnRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZUZpcnN0KCIuKig/PW9yZy9hcGFjaGUvdGlua2VycG9wKSIsICIiKSwKKyAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb24uaWRlbnRpdHkoKSkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIENsYXNzIGZpbmRDbGFzcyhTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBieXRlW10gYiA9IGxvYWRDbGFzc0RhdGEobmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmluZUNsYXNzKG5hbWUsIGIsIDAsIGIubGVuZ3RoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBieXRlW10gbG9hZENsYXNzRGF0YShTdHJpbmcgbmFtZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGZpbmFsIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBvdXQgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2xhc3NGaWxlbmFtZSA9IG5hbWUucmVwbGFjZUFsbCgiXFwuIiwgIi8iKSArICIuY2xhc3MiOworICAgICAgICAgICAgZmluYWwgSW5wdXRTdHJlYW0gaW4gPSBjbGFzc0ZpbGVNYXAuZ2V0KGNsYXNzRmlsZW5hbWUpLm9wZW5JbnB1dFN0cmVhbSgpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBmaW5hbCBieXRlW10gYnVmID0gbmV3IGJ5dGVbMTAyNF07CisgICAgICAgICAgICAgICAgaW50IGxlbiA9IGluLnJlYWQoYnVmKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAobGVuICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIG91dC53cml0ZShidWYsIDAsIGxlbik7CisgICAgICAgICAgICAgICAgICAgIGxlbiA9IGluLnJlYWQoYnVmKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIGluLmNsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIH0KKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9Tb2NpYWxQYWNrYWdlVHJhdmVyc2FsU291cmNlRHNsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9Tb2NpYWxQYWNrYWdlVHJhdmVyc2FsU291cmNlRHNsLmphdmEKaW5kZXggNjQ4NTllYi4uYjRmNTgzMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvU29jaWFsUGFja2FnZVRyYXZlcnNhbFNvdXJjZURzbC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL1NvY2lhbFBhY2thZ2VUcmF2ZXJzYWxTb3VyY2VEc2wuamF2YQpAQCAtMTgsMTcgKzE4LDE0IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2w7CiAKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5HcmVtbGluRHNsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkRlZmF1bHRHcmFwaFRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyYXBoU3RlcDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5IYXNDb250YWluZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIAogLyoqCkBAIC00NCw2ICs0MSwxMCBAQAogICAgICAgICBzdXBlcihncmFwaCk7CiAgICAgfQogCisgICAgcHVibGljIFNvY2lhbFBhY2thZ2VUcmF2ZXJzYWxTb3VyY2VEc2woZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHN1cGVyKGNvbm5lY3Rpb24pOworICAgIH0KKwogICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gcGVyc29ucyhTdHJpbmcuLi4gbmFtZXMpIHsKICAgICAgICAgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgY2xvbmUgPSB0aGlzLmNsb25lKCk7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsU291cmNlVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWxTb3VyY2VUZXN0LmphdmEKaW5kZXggMGJlZDZlYi4uZWRlNjZjYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWxTb3VyY2VUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWxTb3VyY2VUZXN0LmphdmEKQEAgLTQ3LDEzICs0Nyw2IEBACiAgICAgICAgIHZlcmlmeShtb2NrLCB0aW1lcygxKSkuY2xvc2UoKTsKICAgICB9CiAKLSAgICBAVGVzdChleHBlY3RlZCA9IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbi5jbGFzcykKLSAgICBwdWJsaWMgdm9pZCBzaG91bGROb3RBbGxvd0xlYWtSZW1vdGVDb25uZWN0aW9uc0lmTXVsdGlwbGVBcmVDcmVhdGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gbW9jazEgPSBtb2NrKFJlbW90ZUNvbm5lY3Rpb24uY2xhc3MpOwotICAgICAgICBmaW5hbCBSZW1vdGVDb25uZWN0aW9uIG1vY2syID0gbW9jayhSZW1vdGVDb25uZWN0aW9uLmNsYXNzKTsKLSAgICAgICAgdHJhdmVyc2FsKCkud2l0aFJlbW90ZShtb2NrMSkud2l0aFJlbW90ZShtb2NrMik7Ci0gICAgfQotCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRTdXBwb3J0TWFwQmFzZWRTdHJhdGVnaWVzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBFbXB0eUdyYXBoLmluc3RhbmNlKCkudHJhdmVyc2FsKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsVGVzdC5qYXZhCmluZGV4IDZkZWNiZTAuLjE2NmM4OTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsVGVzdC5qYXZhCkBAIC0zMywxOCArMzMsMjAgQEAKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkNvbnN1bWVyOwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCiBwdWJsaWMgY2xhc3MgR3JhcGhUcmF2ZXJzYWxUZXN0IHsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoR3JhcGhUcmF2ZXJzYWxUZXN0LmNsYXNzKTsKIAotICAgIHByaXZhdGUgc3RhdGljIFNldDxTdHJpbmc+IE5PX0dSQVBIID0gbmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KCJhc0FkbWluIiwgImJ5IiwgIm9wdGlvbiIsICJpdGVyYXRlIiwgInRvIiwgImZyb20iLCAicHJvZmlsZSIsICJwYWdlUmFuayIsICJwZWVyUHJlc3N1cmUiLCAicHJvZ3JhbSIsICJub25lIikpOworICAgIHByaXZhdGUgc3RhdGljIFNldDxTdHJpbmc+IE5PX0dSQVBIID0gbmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KCJhc0FkbWluIiwgImJ5IiwgInJlYWQiLCAid3JpdGUiLCAid2l0aCIsICJvcHRpb24iLCAiaXRlcmF0ZSIsICJ0byIsICJmcm9tIiwgInByb2ZpbGUiLCAicGFnZVJhbmsiLCAiY29ubmVjdGVkQ29tcG9uZW50IiwgInBlZXJQcmVzc3VyZSIsICJzaG9ydGVzdFBhdGgiLCAicHJvZ3JhbSIsICJub25lIikpOwogICAgIHByaXZhdGUgc3RhdGljIFNldDxTdHJpbmc+IE5PX0FOT05ZTU9VUyA9IG5ldyBIYXNoU2V0PD4oQXJyYXlzLmFzTGlzdCgic3RhcnQiLCAiX18iKSk7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgU2V0PFN0cmluZz4gSUdOT1JFU19CWVRFQ09ERSA9IG5ldyBIYXNoU2V0PD4oQXJyYXlzLmFzTGlzdCgiYXNBZG1pbiIsICJpdGVyYXRlIiwgIm1hcFZhbHVlcyIsICJtYXBLZXlzIikpOworICAgIHByaXZhdGUgc3RhdGljIFNldDxTdHJpbmc+IElHTk9SRVNfQllURUNPREUgPSBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoImFzQWRtaW4iLCAicmVhZCIsICJ3cml0ZSIsICJpdGVyYXRlIikpOwogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIYXZlTWV0aG9kc09mR3JhcGhUcmF2ZXJzYWxPbkFub255bW91c0dyYXBoVHJhdmVyc2FsKCkgewpAQCAtOTksMTAgKzEwMSwxNiBAQAogICAgICAgICAgICAgICAgIC8vLwogICAgICAgICAgICAgICAgIGlmIChzdGVwTWV0aG9kLmdldE5hbWUoKS5lcXVhbHMoImJ5IikpCiAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5vcmRlcigpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0ZXBNZXRob2QuZ2V0TmFtZSgpLmVxdWFscygid2l0aCIpKQorICAgICAgICAgICAgICAgICAgICByYW5kb21Qb3NzaWJsZVN0ZXAocmFuZG9tLCB0cmF2ZXJzYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhUcmF2ZXJzYWw6OlYsIEdyYXBoVHJhdmVyc2FsOjpzaG9ydGVzdFBhdGgsIEdyYXBoVHJhdmVyc2FsOjpwYWdlUmFuaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaFRyYXZlcnNhbDo6Y29ubmVjdGVkQ29tcG9uZW50LCBHcmFwaFRyYXZlcnNhbDo6cGVlclByZXNzdXJlLCB0IC0+IHQuYWRkRSgibGluayIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoVHJhdmVyc2FsOjphZGRWKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGVwTWV0aG9kLmdldE5hbWUoKS5lcXVhbHMoIm9wdGlvbiIpKQogICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwuYnJhbmNoKF9fLmlkZW50aXR5KCkub3V0KHJhbmRvbVN0cmluZyhyYW5kb20pKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RlcE1ldGhvZC5nZXROYW1lKCkuZXF1YWxzKCJ0byIpIHx8IHN0ZXBNZXRob2QuZ2V0TmFtZSgpLmVxdWFscygiZnJvbSIpKQogICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwuYWRkRShyYW5kb21TdHJpbmcocmFuZG9tKSk7CisKICAgICAgICAgICAgICAgICBpZiAoc3RlcE1ldGhvZC5nZXROYW1lKCkuZXF1YWxzKCJyYW5nZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChTY29wZS5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKHN0ZXBNZXRob2QuZ2V0UGFyYW1ldGVyVHlwZXMoKVswXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuYWRkKGFyZ3VtZW50c1swXSA9IFNjb3BlLmxvY2FsKTsKQEAgLTE2NSw3ICsxNzMsMTEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyByYW5kb21TdHJpbmcoZmluYWwgUmFuZG9tIHJhbmRvbSkgeworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcmFuZG9tUG9zc2libGVTdGVwKGZpbmFsIFJhbmRvbSByYW5kb20sIGZpbmFsIEdyYXBoVHJhdmVyc2FsIHQsIGZpbmFsIENvbnN1bWVyPEdyYXBoVHJhdmVyc2FsPi4uLiBwb3NzaWJsZSkgeworICAgICAgICBwb3NzaWJsZVtyYW5kb20ubmV4dEludChwb3NzaWJsZS5sZW5ndGgpXS5hY2NlcHQodCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHJhbmRvbVN0cmluZyhmaW5hbCBSYW5kb20gcmFuZG9tKSB7CiAgICAgICAgIFN0cmluZyBzID0gIiI7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZG9tLm5leHRJbnQoMTApICsgMTsgaSsrKSB7CiAgICAgICAgICAgICBzID0gKHMgKyAoY2hhcikgKHJhbmRvbS5uZXh0SW50KDEwMCkgKyAxKSkudHJpbSgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvRWxlbWVudFZhbHVlVHJhdmVyc2FsVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvRWxlbWVudFZhbHVlVHJhdmVyc2FsVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NTJhM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9FbGVtZW50VmFsdWVUcmF2ZXJzYWxUZXN0LmphdmEKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwubGFtYmRhOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5tb2NraXRvLk1vY2tpdG8ubW9jazsKK2ltcG9ydCBzdGF0aWMgb3JnLm1vY2tpdG8uTW9ja2l0by53aGVuOworCitwdWJsaWMgY2xhc3MgRWxlbWVudFZhbHVlVHJhdmVyc2FsVGVzdCB7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFdvcmtPblZlcnRleCgpIHsKKyAgICAgICAgZmluYWwgRWxlbWVudFZhbHVlVHJhdmVyc2FsPEludGVnZXI+IHQgPSBuZXcgRWxlbWVudFZhbHVlVHJhdmVyc2FsPD4oImFnZSIpOworICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IG1vY2soVmVydGV4LmNsYXNzKTsKKyAgICAgICAgd2hlbih2LnZhbHVlKCJhZ2UiKSkudGhlblJldHVybigyOSk7CisgICAgICAgIHQuYWRkU3RhcnQobmV3IEJfT19UcmF2ZXJzZXIodiwgMSkuYXNBZG1pbigpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCB0Lm5leHQoKS5pbnRWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFdvcmtPbkVkZ2UoKSB7CisgICAgICAgIGZpbmFsIEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDxEb3VibGU+IHQgPSBuZXcgRWxlbWVudFZhbHVlVHJhdmVyc2FsPD4oIndlaWdodCIpOworICAgICAgICBmaW5hbCBFZGdlIGUgPSBtb2NrKEVkZ2UuY2xhc3MpOworICAgICAgICB3aGVuKGUudmFsdWUoIndlaWdodCIpKS50aGVuUmV0dXJuKDEuMGQpOworICAgICAgICB0LmFkZFN0YXJ0KG5ldyBCX09fVHJhdmVyc2VyKGUsIDEpLmFzQWRtaW4oKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLjBkLCB0Lm5leHQoKSwgMC4wMDAwMWQpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkV29ya09uVmVydGV4UHJvcGVydHkoKSB7CisgICAgICAgIGZpbmFsIEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDxJbnRlZ2VyPiB0ID0gbmV3IEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDw+KCJhZ2UiKTsKKyAgICAgICAgZmluYWwgVmVydGV4UHJvcGVydHkgdnAgPSBtb2NrKFZlcnRleFByb3BlcnR5LmNsYXNzKTsKKyAgICAgICAgd2hlbih2cC52YWx1ZSgiYWdlIikpLnRoZW5SZXR1cm4oMjkpOworICAgICAgICB0LmFkZFN0YXJ0KG5ldyBCX09fVHJhdmVyc2VyKHZwLCAxKS5hc0FkbWluKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMjksIHQubmV4dCgpLmludFZhbHVlKCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkV29ya09uTWFwKCkgeworICAgICAgICBmaW5hbCBFbGVtZW50VmFsdWVUcmF2ZXJzYWw8SW50ZWdlcj4gdCA9IG5ldyBFbGVtZW50VmFsdWVUcmF2ZXJzYWw8PigiYWdlIik7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsSW50ZWdlcj4gbSA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgbS5wdXQoImFnZSIsIDI5KTsKKyAgICAgICAgdC5hZGRTdGFydChuZXcgQl9PX1RyYXZlcnNlcihtLCAxKS5hc0FkbWluKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMjksIHQubmV4dCgpLmludFZhbHVlKCkpOworICAgIH0KKworICAgIEBUZXN0KGV4cGVjdGVkID0gSWxsZWdhbFN0YXRlRXhjZXB0aW9uLmNsYXNzKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93RXhjZXB0aW9uV2hlblRyeWluZ1Vuc3VwcG9ydGVkVHlwZSgpIHsKKyAgICAgICAgZmluYWwgRWxlbWVudFZhbHVlVHJhdmVyc2FsPEludGVnZXI+IHQgPSBuZXcgRWxlbWVudFZhbHVlVHJhdmVyc2FsPD4oImFnZSIpOworICAgICAgICB0LmFkZFN0YXJ0KG5ldyBCX09fVHJhdmVyc2VyKDI5LCAxKS5hc0FkbWluKCkpOworICAgICAgICB0Lm5leHQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFN0ZXBUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFN0ZXBUZXN0LmphdmEKaW5kZXggNmM4NmMyNy4uMWM2YWU2NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRTdGVwVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvUmVwZWF0U3RlcFRlc3QuamF2YQpAQCAtMzksNyArMzksOSBAQAogICAgICAgICAgICAgICAgIF9fLnJlcGVhdChvdXQoKSkudGltZXMoMyksCiAgICAgICAgICAgICAgICAgX18ucmVwZWF0KG91dCgpLmFzKCJ4IikpLnRpbWVzKDMpLAogICAgICAgICAgICAgICAgIF9fLm91dCgpLmVtaXQoKS5yZXBlYXQob3V0KCkpLnRpbWVzKDMpLAotICAgICAgICAgICAgICAgIF9fLnJlcGVhdChvdXQoKSkudW50aWwoaGFzTGFiZWwoIngiKSkKKyAgICAgICAgICAgICAgICBfXy5yZXBlYXQob3V0KCkpLnVudGlsKGhhc0xhYmVsKCJ4IikpLAorICAgICAgICAgICAgICAgIF9fLnJlcGVhdCgiYSIsIF9fLm91dCgpKS50aW1lcygzKSwKKyAgICAgICAgICAgICAgICBfXy5yZXBlYXQob3V0KCkucmVwZWF0KG91dCgpKS50aW1lcygxKSkudGltZXMoMSkubGltaXQoMSkKICAgICAgICAgKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0VsZW1lbnRNYXBTdGVwVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwU3RlcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmZmYmUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwU3RlcFRlc3QuamF2YQpAQCAtMCwwICsxLDQyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5TdGVwVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgRWxlbWVudE1hcFN0ZXBUZXN0IGV4dGVuZHMgU3RlcFRlc3QgeworCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIExpc3Q8VHJhdmVyc2FsPiBnZXRUcmF2ZXJzYWxzKCkgeworICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBfXy5lbGVtZW50TWFwKCksCisgICAgICAgICAgICAgICAgX18uZWxlbWVudE1hcCgibmFtZSIpLAorICAgICAgICAgICAgICAgIF9fLmVsZW1lbnRNYXAoImFnZSIpLAorICAgICAgICAgICAgICAgIF9fLmVsZW1lbnRNYXAoIm5hbWUiLCAiYWdlIikKKyAgICAgICAgKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0luZGV4U3RlcFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvSW5kZXhTdGVwVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYjQwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0luZGV4U3RlcFRlc3QuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5TdGVwVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CisKKy8qKgorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqLworcHVibGljIGNsYXNzIEluZGV4U3RlcFRlc3QgZXh0ZW5kcyBTdGVwVGVzdCB7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTGlzdDxUcmF2ZXJzYWw+IGdldFRyYXZlcnNhbHMoKSB7CisgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIF9fLmluZGV4KCksCisgICAgICAgICAgICAgICAgX18uaW5kZXgoKS53aXRoKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLm1hcCkKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3REZWZhdWx0KCkgeworICAgICAgICBhc3NlcnRFcXVhbHMoX18uaW5kZXgoKSwgX18uaW5kZXgoKS53aXRoKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLmxpc3QpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGNoU3RlcFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0Y2hTdGVwVGVzdC5qYXZhCmluZGV4IDkwNjEyNTguLjliMjA0Y2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0Y2hTdGVwVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0Y2hTdGVwVGVzdC5qYXZhCkBAIC0yMCw3ICsyMCw2IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxFbmdpbmU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlN0ZXBUZXN0OwpAQCAtMjAwLDcgKzE5OSw3IEBACiAgICAgICAgIC8vIE1BS0UgU1VSRSBUSEUgU09SVCBPUkRFUiBDSEFOR0VTIEFTIE1PUkUgUkVTVUxUUyBBUkUgUkVUVVJORUQgQlkgT05FIE9SIFRIRSBPVEhFUiBUUkFWRVJTQUwKICAgICAgICAgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCA9IF9fLm1hdGNoKGFzKCJhIikub3V0KCkuYXMoImIiKSwgYXMoImMiKS5pbigpLmFzKCJkIikpLmFzQWRtaW4oKTsKICAgICAgICAgTWF0Y2hTdGVwLkNvdW50TWF0Y2hBbGdvcml0aG0gY291bnRNYXRjaEFsZ29yaXRobSA9IG5ldyBNYXRjaFN0ZXAuQ291bnRNYXRjaEFsZ29yaXRobSgpOwotICAgICAgICBjb3VudE1hdGNoQWxnb3JpdGhtLmluaXRpYWxpemUoVHJhdmVyc2FsRW5naW5lLlR5cGUuU1RBTkRBUkQsICgoTWF0Y2hTdGVwPD8sID8+KSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkpLmdldEdsb2JhbENoaWxkcmVuKCkpOworICAgICAgICBjb3VudE1hdGNoQWxnb3JpdGhtLmluaXRpYWxpemUoZmFsc2UsICgoTWF0Y2hTdGVwPD8sID8+KSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkpLmdldEdsb2JhbENoaWxkcmVuKCkpOwogICAgICAgICBUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+IGZpcnN0UGF0dGVybiA9ICgoTWF0Y2hTdGVwPD8sID8+KSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkpLmdldEdsb2JhbENoaWxkcmVuKCkuZ2V0KDApOwogICAgICAgICBUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+IHNlY29uZFBhdHRlcm4gPSAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpLmdldCgxKTsKICAgICAgICAgLy8KQEAgLTI0Niw3ICsyNDUsNyBAQAogICAgICAgICAvLy8vLy8vICBNQUtFIFNVUkUgV0hFUkUgUFJFRElDQVRFIFRSQVZFUlNBTFMgQVJFIEFMV0FZUyBGSVJTVCBBUyBUSEVZIEFSRSBTSU1QTFkgLmhhc05leHQoKSBDSEVDS1MKICAgICAgICAgdHJhdmVyc2FsID0gX18ubWF0Y2goYXMoImEiKS5vdXQoKS5hcygiYiIpLCBhcygiYyIpLmluKCkuYXMoImQiKSwgd2hlcmUoImEiLCBQLmVxKCJiIikpKS5hc0FkbWluKCk7CiAgICAgICAgIGNvdW50TWF0Y2hBbGdvcml0aG0gPSBuZXcgTWF0Y2hTdGVwLkNvdW50TWF0Y2hBbGdvcml0aG0oKTsKLSAgICAgICAgY291bnRNYXRjaEFsZ29yaXRobS5pbml0aWFsaXplKFRyYXZlcnNhbEVuZ2luZS5UeXBlLlNUQU5EQVJELCAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpKTsKKyAgICAgICAgY291bnRNYXRjaEFsZ29yaXRobS5pbml0aWFsaXplKGZhbHNlLCAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIGNvdW50TWF0Y2hBbGdvcml0aG0uYnVuZGxlcy5zaXplKCkpOwogICAgICAgICBmaXJzdFBhdHRlcm4gPSAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpLmdldCgwKTsKICAgICAgICAgc2Vjb25kUGF0dGVybiA9ICgoTWF0Y2hTdGVwPD8sID8+KSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkpLmdldEdsb2JhbENoaWxkcmVuKCkuZ2V0KDEpOwpAQCAtMzM0LDcgKzMzMyw3IEBACiAgICAgICAgICAgICAgICAgLmFzQWRtaW4oKTsKICAgICAgICAgdHJhdmVyc2FsLmFwcGx5U3RyYXRlZ2llcygpOyAvLyBuZWNlc3NhcnkgdG8gZW51cmUgc3RlcCBpZHMgYXJlIHVuaXF1ZQogICAgICAgICBmaW5hbCBNYXRjaFN0ZXAuQ291bnRNYXRjaEFsZ29yaXRobSBjb3VudE1hdGNoQWxnb3JpdGhtID0gbmV3IE1hdGNoU3RlcC5Db3VudE1hdGNoQWxnb3JpdGhtKCk7Ci0gICAgICAgIGNvdW50TWF0Y2hBbGdvcml0aG0uaW5pdGlhbGl6ZShUcmF2ZXJzYWxFbmdpbmUuVHlwZS5DT01QVVRFUiwgKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKSk7CisgICAgICAgIGNvdW50TWF0Y2hBbGdvcml0aG0uaW5pdGlhbGl6ZSh0cnVlLCAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpKTsKICAgICAgICAgVHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0PiBmaXJzdFBhdHRlcm4gPSAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpLmdldCgwKTsKICAgICAgICAgVHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0PiBzZWNvbmRQYXR0ZXJuID0gKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKS5nZXQoMSk7CiAgICAgICAgIFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4gdGhpcmRQYXR0ZXJuID0gKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKS5nZXQoMik7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnR5TWFwU3RlcFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydHlNYXBTdGVwVGVzdC5qYXZhCmluZGV4IGNjMjIzZGMuLmM0Njk1MGUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydHlNYXBTdGVwVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydHlNYXBTdGVwVGVzdC5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlN0ZXBUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zOwogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKQEAgLTM3LDEwICszOCwxMiBAQAogICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJuYW1lIiksCiAgICAgICAgICAgICAgICAgX18udmFsdWVNYXAoImFnZSIpLAogICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJuYW1lIiwgImFnZSIpLAotICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKHRydWUpLAotICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKHRydWUsICJuYW1lIiksCi0gICAgICAgICAgICAgICAgX18udmFsdWVNYXAodHJ1ZSwgImFnZSIpLAotICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKHRydWUsICJuYW1lIiwgImFnZSIpLAorICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpLAorICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJuYW1lIikud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpLAorICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJhZ2UiKS53aXRoKFdpdGhPcHRpb25zLnRva2VucyksCisgICAgICAgICAgICAgICAgX18udmFsdWVNYXAoIm5hbWUiLCAiYWdlIikud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpLAorICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJuYW1lIiwgImFnZSIpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zLCBXaXRoT3B0aW9ucy5pZHMpLAorICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJuYW1lIiwgImFnZSIpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zLCBXaXRoT3B0aW9ucy5sYWJlbHMpLAogICAgICAgICAgICAgICAgIF9fLnByb3BlcnR5TWFwKCksCiAgICAgICAgICAgICAgICAgX18ucHJvcGVydHlNYXAoIm5hbWUiKSwKICAgICAgICAgICAgICAgICBfXy5wcm9wZXJ0eU1hcCgiYWdlIiksCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vQ29ubmVjdGl2ZVN0cmF0ZWd5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0Nvbm5lY3RpdmVTdHJhdGVneVRlc3QuamF2YQppbmRleCA0N2JlZTZhLi4xM2NjZDgwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vQ29ubmVjdGl2ZVN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9Db25uZWN0aXZlU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTI4LDYgKzI4LDkgQEAKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiAKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uVjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uZmlsdGVyOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5oYXM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogCiAvKioKQEAgLTU4LDYgKzYxLDcgQEAKICAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXJzKG5hbWUgPSAiezB9IikKICAgICBwdWJsaWMgc3RhdGljIEl0ZXJhYmxlPE9iamVjdFtdPiBnZW5lcmF0ZVRlc3RQYXJhbWV0ZXJzKCkgewogICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChuZXcgVHJhdmVyc2FsW11bXXsKKyAgICAgICAgICAgICAgICB7X18uaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIiksIF9fLmFuZChoYXMoIm5hbWUiLCAibWFya28iKSwgX18uaGFzKCJuYW1lIiwgIm1hcmtvIiksIF9fLmhhcygibmFtZSIsICJtYXJrbyIpKX0sCiAgICAgICAgICAgICAgICAge19fLmhhcygibmFtZSIsICJzdGVwaGVuIikub3IoKS53aGVyZShfXy5vdXQoImtub3dzIikuaGFzKCJuYW1lIiwgInN0ZXBoZW4iKSksIF9fLm9yKF9fLmhhcygibmFtZSIsICJzdGVwaGVuIiksIF9fLndoZXJlKF9fLm91dCgia25vd3MiKS5oYXMoIm5hbWUiLCAic3RlcGhlbiIpKSl9LAogICAgICAgICAgICAgICAgIHtfXy5vdXQoImEiKS5vdXQoImIiKS5hbmQoKS5vdXQoImMiKS5vcigpLm91dCgiZCIpLCBfXy5vcihfXy5hbmQoX18ub3V0KCJhIikub3V0KCJiIiksIF9fLm91dCgiYyIpKSwgX18ub3V0KCJkIikpfSwKICAgICAgICAgICAgICAgICB7X18uYXMoIjEiKS5vdXQoImEiKS5vdXQoImIiKS5hcygiMiIpLmFuZCgpLmFzKCIzIikub3V0KCJjIikuYXMoIjQiKS5vcigpLmFzKCI1Iikub3V0KCJkIikuYXMoIjYiKSwgX18ub3IoX18uYW5kKF9fLmFzKCIxIikub3V0KCJhIikub3V0KCJiIikuYXMoIjIiKSwgX18uYXMoIjMiKS5vdXQoImMiKS5hcygiNCIpKSwgX18uYXMoIjUiKS5vdXQoImQiKS5hcygiNiIpKX0sCkBAIC04Myw0MyArODcsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVYUEVDVDoKICAgICAgICAgICAgICAgICAgICAgICAgIF9fLm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiYTEiKS5vdXQoImEiKS5hcygiYTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18ub3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImIxIikub3V0KCJiIikuYXMoImIyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiYzEiKS5vdXQoImMiKS5hcygiYzIiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18ub3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiZDEiKS5vdXQoImQiKS5hcygiZDIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJiMSIpLm91dCgiYiIpLmFzKCJiMiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJjMSIpLm91dCgiYyIpLmFzKCJjMiIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImQxIikub3V0KCJkIikuYXMoImQyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiZTEiKS5vdXQoImUiKS5hcygiZTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiZjEiKS5vdXQoImYiKS5hcygiZjIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiZzEiKS5vdXQoImciKS5hcygiZzIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiaDEiKS5vdXQoImgiKS5hcygiaDIiKS5vcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiaTEiKS5vdXQoImkiKS5hcygiaTIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJlMSIpLm91dCgiZSIpLmFzKCJlMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJmMSIpLm91dCgiZiIpLmFzKCJmMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImcxIikub3V0KCJnIikuYXMoImcyIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiaDEiKS5vdXQoImgiKS5hcygiaDIiKS5vcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiaTEiKS5vdXQoImkiKS5hcygiaTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJqMSIpLm91dCgiaiIpLmFzKCJqMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJrMSIpLm91dCgiayIpLmFzKCJrMiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJsMSIpLm91dCgibCIpLmFzKCJsMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygibTEiKS5vdXQoIm0iKS5hcygibTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoIm4xIikub3V0KCJuIikuYXMoIm4yIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiajEiKS5vdXQoImoiKS5hcygiajIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiazEiKS5vdXQoImsiKS5hcygiazIiKSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImwxIikub3V0KCJsIikuYXMoImwyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJtMSIpLm91dCgibSIpLmFzKCJtMiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygibjEiKS5vdXQoIm4iKS5hcygibjIiKSkpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5VGVzdC5qYXZhCmluZGV4IDI3ZDliN2UuLjkxMWVmNDEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5VGVzdC5qYXZhCkBAIC0yMyw3ICsyMyw2IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLk11dGF0aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLmV2ZW50LkNvbnNvbGVNdXRhdGlvbkxpc3RlbmVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLmV2ZW50Lk11dGF0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjVjMzlmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneVRlc3QuamF2YQpAQCAtMCwwICsxLDQzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uOworCitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXMuaXM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgT3B0aW9uc1N0cmF0ZWd5VGVzdCB7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZENyZWF0ZU9wdGlvbnNTdHJhdGVneSgpIHsKKyAgICAgICAgZmluYWwgT3B0aW9uc1N0cmF0ZWd5IHN0cmF0ZWd5ID0gT3B0aW9uc1N0cmF0ZWd5LmJ1aWxkKCkud2l0aCgiYSIsICJ0ZXN0Iikud2l0aCgiYiIpLmNyZWF0ZSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBzdHJhdGVneS5nZXRPcHRpb25zKCkuZ2V0KCJhIikpOworICAgICAgICBhc3NlcnRUaGF0KHN0cmF0ZWd5LmdldE9wdGlvbnMoKS5nZXQoImIiKSwgaXModHJ1ZSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkSGF2ZU5vRW50cmllc0luRW1wdHlPcHRpb25zU3RyYXRlZ3koKSB7CisgICAgICAgIGFzc2VydFRoYXQoT3B0aW9uc1N0cmF0ZWd5LkVNUFRZLmdldE9wdGlvbnMoKS5pc0VtcHR5KCksIGlzKHRydWUpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUGFydGl0aW9uU3RyYXRlZ3lUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUGFydGl0aW9uU3RyYXRlZ3lUZXN0LmphdmEKaW5kZXggOGNhOGUzYS4uMDcxNzA2YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVRlc3QuamF2YQpAQCAtMzcsNyArMzcsNyBAQAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQ29uc3RydWN0UGFydGl0aW9uU3RyYXRlZ3koKSB7CiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHN0cmF0ZWd5ID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkoInAiKS53cml0ZVBhcnRpdGlvbigiYSIpLmFkZFJlYWRQYXJ0aXRpb24oImEiKS5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KCJwIikud3JpdGVQYXJ0aXRpb24oImEiKS5yZWFkUGFydGl0aW9ucygiYSIpLmNyZWF0ZSgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImEiLCBzdHJhdGVneS5nZXRSZWFkUGFydGl0aW9ucygpLml0ZXJhdG9yKCkubmV4dCgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHN0cmF0ZWd5LmdldFJlYWRQYXJ0aXRpb25zKCkuc2l6ZSgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwIiwgc3RyYXRlZ3kuZ2V0UGFydGl0aW9uS2V5KCkpOwpAQCAtNDcsOSArNDcsOSBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbnN0cnVjdFBhcnRpdGlvblN0cmF0ZWd5V2l0aE11bHRpcGxlUmVhZFBhcnRpdGlvbnMoKSB7CiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHN0cmF0ZWd5ID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkoInAiKS53cml0ZVBhcnRpdGlvbigiYSIpCi0gICAgICAgICAgICAgICAgLmFkZFJlYWRQYXJ0aXRpb24oImEiKQotICAgICAgICAgICAgICAgIC5hZGRSZWFkUGFydGl0aW9uKCJiIikKLSAgICAgICAgICAgICAgICAuYWRkUmVhZFBhcnRpdGlvbigiYyIpLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIC5yZWFkUGFydGl0aW9ucygiYSIpCisgICAgICAgICAgICAgICAgLnJlYWRQYXJ0aXRpb25zKCJiIikKKyAgICAgICAgICAgICAgICAucmVhZFBhcnRpdGlvbnMoImMiKS5jcmVhdGUoKTsKIAogICAgICAgICBhc3NlcnRUcnVlKEl0ZXJhdG9yVXRpbHMuYXNMaXN0KHN0cmF0ZWd5LmdldFJlYWRQYXJ0aXRpb25zKCkuaXRlcmF0b3IoKSkuY29udGFpbnMoImEiKSk7CiAgICAgICAgIGFzc2VydFRydWUoSXRlcmF0b3JVdGlscy5hc0xpc3Qoc3RyYXRlZ3kuZ2V0UmVhZFBhcnRpdGlvbnMoKS5pdGVyYXRvcigpKS5jb250YWlucygiYiIpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVRyYXZlcnNlVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5VHJhdmVyc2VUZXN0LmphdmEKaW5kZXggYThmODA5YS4uYzEzNzA5OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5VHJhdmVyc2VUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5VHJhdmVyc2VUZXN0LmphdmEKQEAgLTk2LDcgKzk2LDcgQEAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEluY2x1ZGVBZGRpdGlvbmFsSGFzU3RlcHNBbmRBcHBlbmRQYXJ0aXRpb25Pbk11dGF0aW5nU3RlcHMoKSB7CiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHN0cmF0ZWd5ID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkoInAiKS53cml0ZVBhcnRpdGlvbigiYSIpLmFkZFJlYWRQYXJ0aXRpb24oImEiKS5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KCJwIikud3JpdGVQYXJ0aXRpb24oImEiKS5yZWFkUGFydGl0aW9ucygiYSIpLmNyZWF0ZSgpOwogCiAgICAgICAgIGlmIChoYXNNdXRhdGluZ1N0ZXApIHsKICAgICAgICAgICAgIGlmIChUcmF2ZXJzYWxIZWxwZXIuaGFzU3RlcE9mQXNzaWduYWJsZUNsYXNzKEFkZEVkZ2VTdGVwLmNsYXNzLCB0cmF2ZXJzYWwuYXNBZG1pbigpKSkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1JlZmVyZW5jZUVsZW1lbnRTdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9SZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM0ZWM1MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9SZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lUZXN0LmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZmluYWxpemF0aW9uLlJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5pbjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18ub3V0OworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jcy5pczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5VGVzdCB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aEdyYXBoKEVtcHR5R3JhcGguaW5zdGFuY2UoKSkuCisgICAgICAgICAgICB3aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSk7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEFwcGVuZE9uZVJlZmVyZW5jZUVsZW1lbnRTdGVwKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCA/PiB0ID0gZy5WKCkudW5pb24ob3V0KCksIGluKCkpLmdyb3VwQ291bnQoKTsKKyAgICAgICAgdC5hc0FkbWluKCkuYXBwbHlTdHJhdGVnaWVzKCk7CisgICAgICAgIGFzc2VydFRoYXQoKHQuYXNBZG1pbigpLmdldEVuZFN0ZXAoKSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5SZWZlcmVuY2VFbGVtZW50U3RlcCksIGlzKHRydWUpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIFRyYXZlcnNhbEhlbHBlci5nZXRTdGVwc09mQXNzaWduYWJsZUNsYXNzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5SZWZlcmVuY2VFbGVtZW50U3RlcC5jbGFzcywgdC5hc0FkbWluKCkpLnNpemUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3lUcmF2ZXJzZVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5VHJhdmVyc2VUZXN0LmphdmEKaW5kZXggYzA3NzhlMC4uYWQ1Njg2ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3lUcmF2ZXJzZVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneVRyYXZlcnNlVGVzdC5qYXZhCkBAIC05MSw3ICs5MSw3IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFN1YmdyYXBoKCkgewotICAgICAgICBmaW5hbCBTdWJncmFwaFN0cmF0ZWd5IHN0cmF0ZWd5ID0gU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLmVkZ2VDcml0ZXJpb24oX18uaWRlbnRpdHkoKSkudmVydGV4Q3JpdGVyaW9uKF9fLmlkZW50aXR5KCkpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBTdWJncmFwaFN0cmF0ZWd5IHN0cmF0ZWd5ID0gU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLmVkZ2VzKF9fLmlkZW50aXR5KCkpLnZlcnRpY2VzKF9fLmlkZW50aXR5KCkpLmNyZWF0ZSgpOwogICAgICAgICBzdHJhdGVneS5hcHBseSh0cmF2ZXJzYWwuYXNBZG1pbigpKTsKIAogICAgICAgICBmaW5hbCBMaXN0PFRyYXZlcnNhbEZpbHRlclN0ZXA+IHN0ZXBzID0gVHJhdmVyc2FsSGVscGVyLmdldFN0ZXBzT2ZDbGFzcyhUcmF2ZXJzYWxGaWx0ZXJTdGVwLmNsYXNzLCB0cmF2ZXJzYWwuYXNBZG1pbigpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3lUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVmVydGV4UHJvZ3JhbVN0cmF0ZWd5VGVzdC5qYXZhCmluZGV4IGMwOTFiYjMuLjhjZWVmNDggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3lUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1ZlcnRleFByb2dyYW1TdHJhdGVneVRlc3QuamF2YQpAQCAtMzIsNiArMzIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kudmVyaWZpY2F0aW9uLkNvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWxTdHJhdGVnaWVzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5FbXB0eVRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLlBhcmFtZXRlcml6ZWQ7CkBAIC02Niw3ICs2Nyw2IEBACiAgICAgcHVibGljIHN0YXRpYyBJdGVyYWJsZTxPYmplY3RbXT4gZ2VuZXJhdGVUZXN0UGFyYW1ldGVycygpIHsKIAogICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdFN0ZXAgY29tcHV0ZXJSZXN1bHRTdGVwID0gbmV3IENvbXB1dGVyUmVzdWx0U3RlcChFbXB0eVRyYXZlcnNhbC5pbnN0YW5jZSgpKTsKLQogICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChuZXcgVHJhdmVyc2FsW11bXXsKICAgICAgICAgICAgICAgICB7X18uVigpLm91dCgpLmNvdW50KCksIHN0YXJ0KCkuYWRkU3RlcCh0cmF2ZXJzYWwoX18uVigpLm91dCgpLmNvdW50KCkpKS5hZGRTdGVwKGNvbXB1dGVyUmVzdWx0U3RlcCl9LAogICAgICAgICAgICAgICAgIHtfXy5WKCkucGFnZVJhbmsoKS5vdXQoKS5jb3VudCgpLCBzdGFydCgpLnBhZ2VSYW5rKCkuYXNBZG1pbigpLmFkZFN0ZXAodHJhdmVyc2FsKF9fLlYoKS5vdXQoKS5jb3VudCgpKSkuYWRkU3RlcChjb21wdXRlclJlc3VsdFN0ZXApfSwKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lubGluZUZpbHRlclN0cmF0ZWd5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5saW5lRmlsdGVyU3RyYXRlZ3lUZXN0LmphdmEKaW5kZXggNmZmZmVmMC4uY2Y1NGY1MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5saW5lRmlsdGVyU3RyYXRlZ3lUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5saW5lRmlsdGVyU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTIyLDIwICsyMiwyNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLkhhc1N0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSGFzQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5Db25uZWN0aXZlU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWxTdHJhdGVnaWVzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5FbXB0eVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuUGFyYW1ldGVyaXplZDsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC5lcTsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QLmd0OworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAuaW5zaWRlOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAubHQ7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLlY7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmFuZDsKQEAgLTU2LDggKzYzLDYgQEAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KLQotCiBAUnVuV2l0aChQYXJhbWV0ZXJpemVkLmNsYXNzKQogcHVibGljIGNsYXNzIElubGluZUZpbHRlclN0cmF0ZWd5VGVzdCB7CiAKQEAgLTY3LDEwICs3MiwxNiBAQAogICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDEpCiAgICAgcHVibGljIFRyYXZlcnNhbCBvcHRpbWl6ZWQ7CiAKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAyKQorICAgIHB1YmxpYyBMaXN0PFRyYXZlcnNhbFN0cmF0ZWd5PiBleHRyYXM7CisKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKICAgICAgICAgZmluYWwgVHJhdmVyc2FsU3RyYXRlZ2llcyBzdHJhdGVnaWVzID0gbmV3IERlZmF1bHRUcmF2ZXJzYWxTdHJhdGVnaWVzKCk7CiAgICAgICAgIHN0cmF0ZWdpZXMuYWRkU3RyYXRlZ2llcyhJbmxpbmVGaWx0ZXJTdHJhdGVneS5pbnN0YW5jZSgpKTsKKworICAgICAgICBleHRyYXMuZm9yRWFjaChzdHJhdGVnaWVzOjphZGRTdHJhdGVnaWVzKTsKKwogICAgICAgICB0aGlzLm9yaWdpbmFsLmFzQWRtaW4oKS5zZXRTdHJhdGVnaWVzKHN0cmF0ZWdpZXMpOwogICAgICAgICB0aGlzLm9yaWdpbmFsLmFzQWRtaW4oKS5hcHBseVN0cmF0ZWdpZXMoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKHRoaXMub3B0aW1pemVkLCB0aGlzLm9yaWdpbmFsKTsKQEAgLTc5LDU3ICs5MCw2NyBAQAogICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcnMobmFtZSA9ICJ7MH0iKQogICAgIHB1YmxpYyBzdGF0aWMgSXRlcmFibGU8T2JqZWN0W10+IGdlbmVyYXRlVGVzdFBhcmFtZXRlcnMoKSB7CiAKLSAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QobmV3IFRyYXZlcnNhbFtdW117Ci0gICAgICAgICAgICAgICAge2hhcygiYWdlIiwgMTApLmFzKCJhIikuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKS5jb2luKDAuNSkuYXMoImMiKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBlcSgxMCksICJuYW1lIiwgZXEoIm1hcmtvIikpLmFzKCJhIiwgImIiKS5jb2luKDAuNSkuYXMoImMiKX0sCisgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgIHtoYXMoImFnZSIsIDEwKS5hcygiYSIpLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJiIikuY29pbigwLjUpLmFzKCJjIiksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZXEoMTApLCAibmFtZSIsIGVxKCJtYXJrbyIpKS5hcygiYSIsICJiIikuY29pbigwLjUpLmFzKCJjIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIHtmaWx0ZXIob3V0KCJrbm93cyIpKSwgZmlsdGVyKG91dCgia25vd3MiKSl9LAotICAgICAgICAgICAgICAgIHtmaWx0ZXIoaGFzKCJhZ2UiLCBndCgxMCkpKS5hcygiYSIpLCBoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKX0sCi0gICAgICAgICAgICAgICAge2ZpbHRlcihoYXMoImFnZSIsIGd0KDEwKSkuYXMoImIiKSkuYXMoImEiKSwgaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJiIiwgImEiKX0sCi0gICAgICAgICAgICAgICAge2ZpbHRlcihoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKSksIGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpfSwKLSAgICAgICAgICAgICAgICB7ZmlsdGVyKGFuZChoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgxMCksICJuYW1lIiwgZXEoIm1hcmtvIikpLmFzKCJhIil9LAorICAgICAgICAgICAgICAgIHtmaWx0ZXIob3V0KCJrbm93cyIpKSwgZmlsdGVyKG91dCgia25vd3MiKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7ZmlsdGVyKGhhcygiYWdlIiwgZ3QoMTApKSkuYXMoImEiKSwgaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7ZmlsdGVyKGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYiIpKS5hcygiYSIpLCBoYXMoImFnZSIsIGd0KDEwKSkuYXMoImIiLCAiYSIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2ZpbHRlcihoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKSksIGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2ZpbHRlcihhbmQoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIGhhcygibmFtZSIsICJtYXJrbyIpKSksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMTApLCAibmFtZSIsIGVxKCJtYXJrbyIpKS5hcygiYSIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2ZpbHRlcihvdXQoImNyZWF0ZWQiKS5hbmQoKS5vdXQoImtub3dzIikub3IoKS5pbigia25vd3MiKSksIGZpbHRlcihvcihhbmQob3V0KCJjcmVhdGVkIiksIG91dCgia25vd3MiKSksIF9fLmluKCJrbm93cyIpKSksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoQ29ubmVjdGl2ZVN0cmF0ZWd5Lmluc3RhbmNlKCkpfSwKICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIHtvcihoYXMoIm5hbWUiLCAibWFya28iKSwgaGFzKCJhZ2UiLCAzMikpLCBvcihoYXMoIm5hbWUiLCAibWFya28iKSwgaGFzKCJhZ2UiLCAzMikpfSwKLSAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIsICJib2IiKSksIGhhcygibmFtZSIsIGVxKCJtYXJrbyIpLm9yKGVxKCJib2IiKSkpfSwKLSAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIpKSwgb3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIpKX0sCi0gICAgICAgICAgICAgICAge29yKGhhcygiYWdlIiwgMTApLCBhbmQoaGFzKCJhZ2UiLCBndCgyMCkpLCBoYXMoImFnZSIsIGx0KDEwMCkpKSksIGhhcygiYWdlIiwgZXEoMTApLm9yKGd0KDIwKS5hbmQobHQoMTAwKSkpKX0sCi0gICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBmaWx0ZXIoaGFzKCJuYW1lIiwgImJvYiIpKSksIGhhcygibmFtZSIsIGVxKCJtYXJrbyIpLm9yKGVxKCJib2IiKSkpfSwKLSAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGZpbHRlcihvcihmaWx0ZXIoaGFzKCJuYW1lIiwgImJvYiIpKSwgaGFzKCJuYW1lIiwgInN0ZXBoZW4iKSkpKSwgaGFzKCJuYW1lIiwgZXEoIm1hcmtvIikub3IoZXEoImJvYiIpLm9yKGVxKCJzdGVwaGVuIikpKSl9LAotICAgICAgICAgICAgICAgIHtvcihoYXMoIm5hbWUiLCAibWFya28iKS5hcygiYSIpLCBmaWx0ZXIob3IoZmlsdGVyKGhhcygibmFtZSIsICJib2IiKSkuYXMoImIiKSwgaGFzKCJuYW1lIiwgInN0ZXBoZW4iKS5hcygiYyIpKSkpLCBoYXMoIm5hbWUiLCBlcSgibWFya28iKS5vcihlcSgiYm9iIikub3IoZXEoInN0ZXBoZW4iKSkpKS5hcygiYSIsICJiIiwgImMiKX0sCi0gICAgICAgICAgICAgICAge29yKGFuZChoYXMoImFnZSIsZ3QoMjApKSwgaGFzKCJhZ2UiLGx0KDMwKSkpLCBhbmQoaGFzKCJhZ2UiLGd0KDM1KSksIGhhcygiYWdlIixsdCg0MCkpKSksIGhhcygiYWdlIiwgZ3QoMjApLmFuZChsdCgzMCkpLm9yKGd0KDM1KS5hbmQobHQoNDApKSkpfSwKKyAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygiYWdlIiwgMzIpKSwgb3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygiYWdlIiwgMzIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtvcihoYXMoIm5hbWUiLCAibWFya28iKSwgaGFzKCJuYW1lIiwgImJvYiIpKSwgaGFzKCJuYW1lIiwgZXEoIm1hcmtvIikub3IoZXEoImJvYiIpKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIpKSwgb3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtvcihoYXMoImFnZSIsIDEwKSwgYW5kKGhhcygiYWdlIiwgZ3QoMjApKSwgaGFzKCJhZ2UiLCBsdCgxMDApKSkpLCBoYXMoImFnZSIsIGVxKDEwKS5vcihndCgyMCkuYW5kKGx0KDEwMCkpKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGZpbHRlcihoYXMoIm5hbWUiLCAiYm9iIikpKSwgaGFzKCJuYW1lIiwgZXEoIm1hcmtvIikub3IoZXEoImJvYiIpKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGZpbHRlcihvcihmaWx0ZXIoaGFzKCJuYW1lIiwgImJvYiIpKSwgaGFzKCJuYW1lIiwgInN0ZXBoZW4iKSkpKSwgaGFzKCJuYW1lIiwgZXEoIm1hcmtvIikub3IoZXEoImJvYiIpLm9yKGVxKCJzdGVwaGVuIikpKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImEiKSwgZmlsdGVyKG9yKGZpbHRlcihoYXMoIm5hbWUiLCAiYm9iIikpLmFzKCJiIiksIGhhcygibmFtZSIsICJzdGVwaGVuIikuYXMoImMiKSkpKSwgaGFzKCJuYW1lIiwgZXEoIm1hcmtvIikub3IoZXEoImJvYiIpLm9yKGVxKCJzdGVwaGVuIikpKSkuYXMoImEiLCAiYiIsICJjIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3IoYW5kKGhhcygiYWdlIixndCgyMCkpLCBoYXMoImFnZSIsbHQoMzApKSksIGFuZChoYXMoImFnZSIsZ3QoMzUpKSwgaGFzKCJhZ2UiLGx0KDQwKSkpKSwgaGFzKCJhZ2UiLCBndCgyMCkuYW5kKGx0KDMwKSkub3IoZ3QoMzUpLmFuZChsdCg0MCkpKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgxMCkpLCBmaWx0ZXIoaGFzKCJhZ2UiLCAyMikpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgxMCksICJhZ2UiLCBlcSgyMikpfSwKLSAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBmaWx0ZXIoaGFzKCJhZ2UiLCAyMikuYXMoImIiKSkuYXMoImMiKSkuYXMoImQiKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgxMCksICJhZ2UiLCBlcSgyMikpLmFzKCJhIiwgImIiLCAiYyIsICJkIil9LAotICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIGFuZChmaWx0ZXIoaGFzKCJhZ2UiLCAyMikuYXMoImIiKSkuYXMoImMiKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImQiKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDEwKSwgImFnZSIsIGVxKDIyKSwgIm5hbWUiLCBlcSgibWFya28iKSkuYXMoImEiLCAiYiIsICJjIiwgImQiKX0sCi0gICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKSwgYW5kKGhhcygibmFtZSIsICJzdGVwaGVuIikuYXMoImIiKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImMiKSkuYXMoImQiKSkuYXMoImUiKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgxMCksICJuYW1lIiwgZXEoInN0ZXBoZW4iKSwgIm5hbWUiLCBlcSgibWFya28iKSkuYXMoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpfSwKLSAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKSwgYW5kKG91dCgia25vd3MiKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikpKSwgaGFzKCJhZ2UiLCBndCgxMCkpLmFuZChvdXQoImtub3dzIiksIGhhcygibmFtZSIsICJtYXJrbyIpKX0sCi0gICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDIwKSksIG9yKGhhcygiYWdlIiwgbHQoMTApKSwgaGFzKCJhZ2UiLCBndCgxMDApKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDIwKSwgImFnZSIsIGx0KDEwKS5vcihndCgxMDApKSl9LAotICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgyMCkpLmFzKCJhIiksIG9yKGhhcygiYWdlIiwgbHQoMTApKSwgaGFzKCJhZ2UiLCBndCgxMDApKS5hcygiYiIpKSksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMjApLCAiYWdlIiwgbHQoMTApLm9yKGd0KDEwMCkpKS5hcygiYSIsICJiIil9LAotICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgyMCkpLmFzKCJhIiksIG9yKGhhcygiYWdlIiwgbHQoMTApKS5hcygiYyIpLCBoYXMoImFnZSIsIGd0KDEwMCkpLmFzKCJiIikpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgyMCksICJhZ2UiLCBsdCgxMCkub3IoZ3QoMTAwKSkpLmFzKCJhIiwgImIiLCAiYyIpfSwKKyAgICAgICAgICAgICAgICB7aGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2ZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSkuYW5kKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKS5hbmQoKS5maWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLCBoYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtWKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIiksIFYoKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtWKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKS5hbmQoKS5maWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLmFuZCgpLmZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSksIFYoKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtoYXMoIm5hbWUiLCAibWFya28iKS5hbmQoKS5oYXMoIm5hbWUiLCAibWFya28iKS5hbmQoKS5oYXMoIm5hbWUiLCAibWFya28iKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIiksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoQ29ubmVjdGl2ZVN0cmF0ZWd5Lmluc3RhbmNlKCkpfSwKKyAgICAgICAgICAgICAgICB7VigpLmZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSkuYW5kKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKS5hbmQoKS5maWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLCBhbmQoVigpLmhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiLCAibWFya28iKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KENvbm5lY3RpdmVTdHJhdGVneS5pbnN0YW5jZSgpKX0sCisgICAgICAgICAgICAgICAge1YoKS5oYXMoIm5hbWUiLCAibWFya28iKS5hbmQoKS5oYXMoIm5hbWUiLCAibWFya28iKS5hbmQoKS5oYXMoIm5hbWUiLCAibWFya28iKSwgYW5kKFYoKS5oYXMoIm5hbWUiLCAibWFya28iKSwgaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIsICJtYXJrbyIpKSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChDb25uZWN0aXZlU3RyYXRlZ3kuaW5zdGFuY2UoKSl9LAorICAgICAgICAgICAgICAgIHtFbXB0eUdyYXBoLmluc3RhbmNlKCkudHJhdmVyc2FsKCkuVigpLmZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSkuYW5kKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKS5hbmQoKS5maWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLCBFbXB0eUdyYXBoLmluc3RhbmNlKCkudHJhdmVyc2FsKCkuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KENvbm5lY3RpdmVTdHJhdGVneS5pbnN0YW5jZSgpKX0sCisgICAgICAgICAgICAgICAge0VtcHR5R3JhcGguaW5zdGFuY2UoKS50cmF2ZXJzYWwoKS5WKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIiksIEVtcHR5R3JhcGguaW5zdGFuY2UoKS50cmF2ZXJzYWwoKS5WKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIiksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoQ29ubmVjdGl2ZVN0cmF0ZWd5Lmluc3RhbmNlKCkpfSwKICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5maWx0ZXIoaGFzKCJuYW1lIikpLmFzKCJiIikpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuYXMoImEiKS5tYXRjaChhcygiYSIpLmhhcygibmFtZSIpLmFzKCJiIikpfSwKLSAgICAgICAgICAgICAgICB7bWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5maWx0ZXIoaGFzKCJuYW1lIikpLmFzKCJiIikpLCBtYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLCBhcygiYSIpLmhhcygibmFtZSIpLmFzKCJiIikpfSwKLSAgICAgICAgICAgICAgICB7bWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5ib3RoKCkuYXMoImIiKSwgYXMoImIiKS5vdXQoKS5hcygiYyIpKSwgbWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5ib3RoKCkuYXMoImIiKSwgYXMoImIiKS5vdXQoKS5hcygiYyIpKX0sCi0gICAgICAgICAgICAgICAge19fLm1hcChtYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLCBhcygiYSIpLmZpbHRlcihoYXMoIm5hbWUiKSkuYXMoImIiKSkpLCBfXy5tYXAobWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKSl9LAotICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSksIFYoKS5oYXMoImFnZSIsIDEwKS5hcygiYSIpfSwKLSAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYSIsICJiIil9LAotICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYiIpLCBhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKSwgVigpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKX0sCi0gICAgICAgICAgICAgICAge1YoKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpLCBhcygiYSIpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJiIikpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImEiLCAiYiIpLm1hdGNoKGFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJjIikpfSwKLSAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJjIiksIGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKSwgYXMoImEiKS5oYXMoIm5hbWUiLCAiYm9iIikpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgImJvYiIpLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKX0sCi0gICAgICAgICAgICAgICAge1YoKS5tYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLmFzKCJiIiksIGFzKCJhIikuZmlsdGVyKGhhcygibmFtZSIpKS5hcygiYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLmhhcygibmFtZSIpLmFzKCJiIikpfSwKKyAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKSwgZmlsdGVyKGhhcygiYWdlIiwgMjIpKSksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMTApLCAiYWdlIiwgZXEoMjIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIGZpbHRlcihoYXMoImFnZSIsIDIyKS5hcygiYiIpKS5hcygiYyIpKS5hcygiZCIpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDEwKSwgImFnZSIsIGVxKDIyKSkuYXMoImEiLCAiYiIsICJjIiwgImQiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIGFuZChmaWx0ZXIoaGFzKCJhZ2UiLCAyMikuYXMoImIiKSkuYXMoImMiKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImQiKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDEwKSwgImFnZSIsIGVxKDIyKSwgIm5hbWUiLCBlcSgibWFya28iKSkuYXMoImEiLCAiYiIsICJjIiwgImQiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIGFuZChoYXMoIm5hbWUiLCAic3RlcGhlbiIpLmFzKCJiIiksIGhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJjIikpLmFzKCJkIikpLmFzKCJlIiksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMTApLCAibmFtZSIsIGVxKCJzdGVwaGVuIiksICJuYW1lIiwgZXEoIm1hcmtvIikpLmFzKCJhIiwgImIiLCAiYyIsICJkIiwgImUiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgxMCkpLCBhbmQob3V0KCJrbm93cyIpLCBoYXMoIm5hbWUiLCAibWFya28iKSkpLCBoYXMoImFnZSIsIGd0KDEwKSkuYW5kKG91dCgia25vd3MiKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDIwKSksIG9yKGhhcygiYWdlIiwgbHQoMTApKSwgaGFzKCJhZ2UiLCBndCgxMDApKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDIwKSwgImFnZSIsIGx0KDEwKS5vcihndCgxMDApKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMjApKS5hcygiYSIpLCBvcihoYXMoImFnZSIsIGx0KDEwKSksIGhhcygiYWdlIiwgZ3QoMTAwKSkuYXMoImIiKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDIwKSwgImFnZSIsIGx0KDEwKS5vcihndCgxMDApKSkuYXMoImEiLCAiYiIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDIwKSkuYXMoImEiKSwgb3IoaGFzKCJhZ2UiLCBsdCgxMCkpLmFzKCJjIiksIGhhcygiYWdlIiwgZ3QoMTAwKSkuYXMoImIiKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDIwKSwgImFnZSIsIGx0KDEwKS5vcihndCgxMDApKSkuYXMoImEiLCAiYiIsICJjIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIHtmaWx0ZXIoZGVkdXAoKSksIGZpbHRlcihkZWR1cCgpKX0sCi0gICAgICAgICAgICAgICAge2ZpbHRlcihmaWx0ZXIoZHJvcCgpKSksIGZpbHRlcihkcm9wKCkpfSwKLSAgICAgICAgICAgICAgICB7YW5kKGhhcygibmFtZSIpLCBsaW1pdCgxMCkuaGFzKCJhZ2UiKSksIGFuZChoYXMoIm5hbWUiKSwgbGltaXQoMTApLmhhcygiYWdlIikpfSwKLSAgICAgICAgICAgICAgICB7ZmlsdGVyKHRhaWwoMTApLmFzKCJhIikpLCBmaWx0ZXIodGFpbCgxMCkuYXMoImEiKSl9LAorICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5maWx0ZXIoaGFzKCJuYW1lIikpLmFzKCJiIikpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuYXMoImEiKS5tYXRjaChhcygiYSIpLmhhcygibmFtZSIpLmFzKCJiIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge21hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCksIGFzKCJhIikuZmlsdGVyKGhhcygibmFtZSIpKS5hcygiYiIpKSwgbWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHttYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLmJvdGgoKS5hcygiYiIpLCBhcygiYiIpLm91dCgpLmFzKCJjIikpLCBtYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLmJvdGgoKS5hcygiYiIpLCBhcygiYiIpLm91dCgpLmFzKCJjIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLm1hcChtYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLCBhcygiYSIpLmZpbHRlcihoYXMoIm5hbWUiKSkuYXMoImIiKSkpLCBfXy5tYXAobWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuYXMoImEiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJhIiwgImIiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYiIpLCBhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKSwgVigpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSwgYXMoImEiKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSwgYXMoImEiKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYiIpLCBhcygiYSIpLmhhcygibmFtZSIsICJib2IiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAiYm9iIikuYXMoImEiLCAiYiIpLm1hdGNoKGFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJjIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge1YoKS5tYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLmFzKCJiIiksIGFzKCJhIikuZmlsdGVyKGhhcygibmFtZSIpKS5hcygiYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLmhhcygibmFtZSIpLmFzKCJiIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKCJrbm93cyIpLmluVigpLCBvdXRFKCJrbm93cyIpLmluVigpfSwKLSAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKCJrbm93cyIpLmhhc0xhYmVsKCJjcmVhdGVkIikuaW5WKCksIG91dEUoImtub3dzIikuaGFzTGFiZWwoImNyZWF0ZWQiKS5pblYoKX0sCi0gICAgICAgICAgICAgICAge291dEUoKS5vcihoYXNMYWJlbCgia25vd3MiKSwgaGFzTGFiZWwoImNyZWF0ZWQiKSkuaW5WKCksIG91dEUoImtub3dzIiwgImNyZWF0ZWQiKS5pblYoKX0sCi0gICAgICAgICAgICAgICAge291dEUoKS5vcihoYXNMYWJlbCgia25vd3MiKS5hcygiYSIpLCBoYXNMYWJlbCgiY3JlYXRlZCIpLmFzKCJiIikpLmFzKCJjIikuaW5WKCksIG91dEUoImtub3dzIiwgImNyZWF0ZWQiKS5hcygiYSIsICJiIiwgImMiKS5pblYoKX0sCi0gICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbChQLmVxKCJrbm93cyIpLm9yKFAuZ3QoImNyZWF0ZWQiKSkpLmhhcygid2VpZ2h0IiwgZ3QoMS4wKSkuaW5WKCksIGFkZEhhcyhvdXRFKCksIFQubGFiZWwuZ2V0QWNjZXNzb3IoKSwgUC5lcSgia25vd3MiKS5vcihQLmd0KCJjcmVhdGVkIikpLCAid2VpZ2h0IiwgZ3QoMS4wKSkuaW5WKCl9LAotICAgICAgICAgICAgICAgIHtvdXRFKCkuaGFzTGFiZWwoUC5lcSgia25vd3MiKS5vcihQLmVxKCJjcmVhdGVkIikpKS5oYXMoIndlaWdodCIsIGd0KDEuMCkpLmluVigpLCBvdXRFKCJrbm93cyIsICJjcmVhdGVkIikuaGFzKCJ3ZWlnaHQiLCBndCgxLjApKS5pblYoKX0sCi0gICAgICAgICAgICAgICAgLy8ge291dEUoKS5vcihoYXMoVC5sYWJlbCxQLndpdGhpbigia25vd3MiLCJsaWtlcyIpKS5oYXNMYWJlbCgiY3JlYXRlZCIpKS5pblYoKSwgb3V0RSgia25vd3MiLCAibGlrZXMiLCAiY3JlYXRlZCIpLmluVigpfSwKLSAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKFAud2l0aGluKCJrbm93cyIsICJjcmVhdGVkIikpLmluVigpLCBvdXRFKCJrbm93cyIsICJjcmVhdGVkIikuaW5WKCl9LAorICAgICAgICAgICAgICAgIHtmaWx0ZXIoZGVkdXAoKSksIGZpbHRlcihkZWR1cCgpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtmaWx0ZXIoZmlsdGVyKGRyb3AoKSkpLCBmaWx0ZXIoZHJvcCgpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHthbmQoaGFzKCJuYW1lIiksIGxpbWl0KDEwKS5oYXMoImFnZSIpKSwgYW5kKGhhcygibmFtZSIpLCBsaW1pdCgxMCkuaGFzKCJhZ2UiKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7ZmlsdGVyKHRhaWwoMTApLmFzKCJhIikpLCBmaWx0ZXIodGFpbCgxMCkuYXMoImEiKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIHtvdXRFKCkuaGFzTGFiZWwoImtub3dzIikuaW5WKCksIG91dEUoImtub3dzIikuaW5WKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKCJrbm93cyIpLmhhc0xhYmVsKCJjcmVhdGVkIikuaW5WKCksIG91dEUoImtub3dzIikuaGFzTGFiZWwoImNyZWF0ZWQiKS5pblYoKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtvdXRFKCkub3IoaGFzTGFiZWwoImtub3dzIiksIGhhc0xhYmVsKCJjcmVhdGVkIikpLmluVigpLCBvdXRFKCJrbm93cyIsICJjcmVhdGVkIikuaW5WKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3V0RSgpLm9yKGhhc0xhYmVsKCJrbm93cyIpLmFzKCJhIiksIGhhc0xhYmVsKCJjcmVhdGVkIikuYXMoImIiKSkuYXMoImMiKS5pblYoKSwgb3V0RSgia25vd3MiLCAiY3JlYXRlZCIpLmFzKCJhIiwgImIiLCAiYyIpLmluVigpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbChQLmVxKCJrbm93cyIpLm9yKFAuZ3QoImNyZWF0ZWQiKSkpLmhhcygid2VpZ2h0IiwgZ3QoMS4wKSkuaW5WKCksIGFkZEhhcyhvdXRFKCksIFQubGFiZWwuZ2V0QWNjZXNzb3IoKSwgUC5lcSgia25vd3MiKS5vcihQLmd0KCJjcmVhdGVkIikpLCAid2VpZ2h0IiwgZ3QoMS4wKSkuaW5WKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKFAuZXEoImtub3dzIikub3IoUC5lcSgiY3JlYXRlZCIpKSkuaGFzKCJ3ZWlnaHQiLCBndCgxLjApKS5pblYoKSwgb3V0RSgia25vd3MiLCAiY3JlYXRlZCIpLmhhcygid2VpZ2h0IiwgZ3QoMS4wKSkuaW5WKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKFAud2l0aGluKCJrbm93cyIsICJjcmVhdGVkIikpLmluVigpLCBvdXRFKCJrbm93cyIsICJjcmVhdGVkIikuaW5WKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKICAgICAgICAgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9MYXp5QmFycmllclN0cmF0ZWd5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTGF6eUJhcnJpZXJTdHJhdGVneVRlc3QuamF2YQppbmRleCBiMmJiZDk0Li4xMDBiYThiIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9MYXp5QmFycmllclN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0xhenlCYXJyaWVyU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTEwMCw3ICsxMDAsMTQgQEAKICAgICAgICAgICAgICAgICB7X18ub3V0KCkuYXMoImEiKS5vdXQoKS5hcygiYiIpLmluKCkud2hlcmUoUC5uZXEoImEiKSkub3V0KCkuc2VsZWN0KCJiIikub3V0KCksIF9fLm91dCgpLmFzKCJhIikub3V0KCkuYXMoImIiKS5pbigpLndoZXJlKFAubmVxKCJhIikpLmJhcnJpZXIoUEFUSF9TSVpFKS5vdXQoKS5zZWxlY3QoImIiKS5iYXJyaWVyKFBBVEhfU0laRSkub3V0KCksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoUGF0aFJldHJhY3Rpb25TdHJhdGVneS5pbnN0YW5jZSgpKX0sCiAgICAgICAgICAgICAgICAge19fLm91dCgpLmFzKCJhIikub3V0KCkuYXMoImIiKS5pbigpLndoZXJlKFAubmVxKCJhIikpLm91dCgpLnNlbGVjdCgiYiIpLm91dCgpLm91dCgpLCBfXy5vdXQoKS5hcygiYSIpLm91dCgpLmFzKCJiIikuaW4oKS53aGVyZShQLm5lcSgiYSIpKS5iYXJyaWVyKFBBVEhfU0laRSkub3V0KCkuc2VsZWN0KCJiIikuYmFycmllcihQQVRIX1NJWkUpLm91dCgpLmJhcnJpZXIoTEFaWV9TSVpFKS5vdXQoKSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChQYXRoUmV0cmFjdGlvblN0cmF0ZWd5Lmluc3RhbmNlKCkpfSwKICAgICAgICAgICAgICAgICB7X18uVigpLm91dCgpLm91dCgpLmdyb3VwQ291bnQoKS5ieShfXy5vdXQoKS5vdXQoKS5vdXQoKSkub3V0KCksIF9fLlYoKS5vdXQoKS5iYXJyaWVyKExBWllfU0laRSkub3V0KCkuZ3JvdXBDb3VudCgpLmJ5KF9fLm91dCgpLm91dCgpLmJhcnJpZXIoTEFaWV9TSVpFKS5vdXQoKSkub3V0KCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKLSAgICAgICAgICAgICAgICB7X18uVigpLm91dCgpLm91dCgpLmdyb3VwQ291bnQoKS5ieShfXy5vdXQoKS5vdXQoKS5vdXQoKSkub3V0KCkuYXMoImEiKSwgX18uVigpLm91dCgpLmJhcnJpZXIoTEFaWV9TSVpFKS5vdXQoKS5ncm91cENvdW50KCkuYnkoX18ub3V0KCkub3V0KCkuYmFycmllcihMQVpZX1NJWkUpLm91dCgpKS5vdXQoKS5hcygiYSIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0KKyAgICAgICAgICAgICAgICB7X18uVigpLm91dCgpLm91dCgpLmdyb3VwQ291bnQoKS5ieShfXy5vdXQoKS5vdXQoKS5vdXQoKSkub3V0KCkuYXMoImEiKSwgX18uVigpLm91dCgpLmJhcnJpZXIoTEFaWV9TSVpFKS5vdXQoKS5ncm91cENvdW50KCkuYnkoX18ub3V0KCkub3V0KCkuYmFycmllcihMQVpZX1NJWkUpLm91dCgpKS5vdXQoKS5hcygiYSIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLm91dCgpLmRyb3AoKSwgX18ub3V0KCkuZHJvcCgpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLm91dCgpLnByb3BlcnRpZXMoKS5kcm9wKCksIF9fLm91dCgpLnByb3BlcnRpZXMoKS5kcm9wKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7X18ub3V0KCkucHJvcGVydGllcygpLnByb3BlcnRpZXMoKS5kcm9wKCksIF9fLm91dCgpLnByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLm91dCgpLm91dCgpLnByb3BlcnRpZXMoKS5kcm9wKCksIF9fLm91dCgpLm91dCgpLnByb3BlcnRpZXMoKS5kcm9wKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7X18ub3V0KCkub3V0KCkudmFsdWVzKCkuaXModHJ1ZSksIF9fLm91dCgpLm91dCgpLmJhcnJpZXIoTEFaWV9TSVpFKS52YWx1ZXMoKS5iYXJyaWVyKExBWllfU0laRSkuaXModHJ1ZSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7X18ub3V0RSgpLmRyb3AoKSwgX18ub3V0RSgpLmRyb3AoKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtfXy5vdXRFKCkucHJvcGVydGllcygpLmRyb3AoKSwgX18ub3V0RSgpLnByb3BlcnRpZXMoKS5kcm9wKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfQogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9SZXBlYXRVbnJvbGxTdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1JlcGVhdFVucm9sbFN0cmF0ZWd5VGVzdC5qYXZhCmluZGV4IDg4ZWI1YTYuLjEzMjIzY2IgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1JlcGVhdFVucm9sbFN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1JlcGVhdFVucm9sbFN0cmF0ZWd5VGVzdC5qYXZhCkBAIC05Miw2ICs5MiwxMyBAQAogICAgICAgICAgICAgICAgIHtfXy5yZXBlYXQoX18ub3V0RSgpLmluVigpKS50aW1lcygyKSwgX18ub3V0RSgpLmluVigpLmJhcnJpZXIobWF4QmFycmllclNpemUpLm91dEUoKS5pblYoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAogICAgICAgICAgICAgICAgIHtfXy5yZXBlYXQoX18ub3V0RSgpLmZpbHRlcihwYXRoKCkpLmluVigpKS50aW1lcygyKSwgX18ub3V0RSgpLmZpbHRlcihwYXRoKCkpLmluVigpLmJhcnJpZXIobWF4QmFycmllclNpemUpLm91dEUoKS5maWx0ZXIocGF0aCgpKS5pblYoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChJbmNpZGVudFRvQWRqYWNlbnRTdHJhdGVneS5pbnN0YW5jZSgpKX0sCiAgICAgICAgICAgICAgICAge19fLnJlcGVhdChfXy5vdXRFKCkuaW5WKCkpLnRpbWVzKDIpLCBfXy5vdXQoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKS5vdXQoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChJbmNpZGVudFRvQWRqYWNlbnRTdHJhdGVneS5pbnN0YW5jZSgpKX0sCisgICAgICAgICAgICAgICAgLy8gTmVzdGVkIExvb3AgdGVzdHMKKyAgICAgICAgICAgICAgICB7X18ucmVwZWF0KG91dCgpLnJlcGVhdChvdXQoKSkudGltZXMoMCkpLnRpbWVzKDEpLCBfXy5vdXQoKS5yZXBlYXQob3V0KCkpLnRpbWVzKDApLmJhcnJpZXIobWF4QmFycmllclNpemUpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLnJlcGVhdChvdXQoKS5yZXBlYXQob3V0KCkpLnRpbWVzKDEpKS50aW1lcygxKSwgX18ub3V0KCkub3V0KCkuYmFycmllcihtYXhCYXJyaWVyU2l6ZSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7X18ucmVwZWF0KG91dCgpKS51bnRpbChfXy5yZXBlYXQob3V0KCkpLnVudGlsKHByZWRpY2F0ZSkpLCBfXy5yZXBlYXQob3V0KCkpLnVudGlsKF9fLnJlcGVhdChvdXQoKSkudW50aWwocHJlZGljYXRlKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7X18ucmVwZWF0KF9fLnJlcGVhdChvdXQoKSkudGltZXMoMikpLnVudGlsKHByZWRpY2F0ZSksIF9fLnJlcGVhdChfXy5vdXQoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKS5vdXQoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKSkudW50aWwocHJlZGljYXRlKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtfXy5yZXBlYXQoX18ucmVwZWF0KG91dCgiY3JlYXRlZCIpKS51bnRpbChfXy5oYXMoIm5hbWUiLCAicmlwcGxlIikpKSwgX18ucmVwZWF0KF9fLnJlcGVhdChvdXQoImNyZWF0ZWQiKSkudW50aWwoX18uaGFzKCJuYW1lIiwgInJpcHBsZSIpKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9TdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vU3RhbmRhcmRWZXJpZmljYXRpb25TdHJhdGVneVRlc3QuamF2YQppbmRleCBlZTk2MjY2Li5hM2U3YzA3IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9TdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1N0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTI0LDYgKzI0LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUmVxdWlyZW1lbnRzU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWxTdHJhdGVnaWVzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5UZXN0U3VwcG9ydDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuUGFyYW1ldGVyaXplZDsKQEAgLTQ0LDEzICs0NSwxNSBAQAogcHVibGljIGNsYXNzIFN0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3lUZXN0IHsKIAogICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcnMobmFtZSA9ICJ7MH0iKQotICAgIHB1YmxpYyBzdGF0aWMgSXRlcmFibGU8T2JqZWN0W10+IGRhdGEoKSB7CisgICAgcHVibGljIHN0YXRpYyBJdGVyYWJsZTxPYmplY3RbXT4gZGF0YSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIFRlc3RTdXBwb3J0LmdlbmVyYXRlVGVtcEZpbGUoU3RhbmRhcmRWZXJpZmljYXRpb25TdHJhdGVneVRlc3QuY2xhc3MsICJzaG91bGRCZVZlcmlmaWVkIiwgIi5rcnlvIik7CisKICAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QobmV3IE9iamVjdFtdW117CiAgICAgICAgICAgICAgICAgLy8gdHJhdmVyc2FscyB0aGF0IHNob3VsZCBmYWlsIHZlcmlmaWNhdGlvbgogICAgICAgICAgICAgICAgIHsiX18ucmVwZWF0KG91dCgpLmZvbGQoKS51bmZvbGQoKSkudGltZXMoMikiLCByZXBlYXQob3V0KCkuZm9sZCgpLnVuZm9sZCgpKS50aW1lcygyKSwgZmFsc2V9LAogICAgICAgICAgICAgICAgIHsiX18ucmVwZWF0KHN1bSgpKS50aW1lcygyKSIsIHJlcGVhdChzdW0oKSkudGltZXMoMiksIGZhbHNlfSwKICAgICAgICAgICAgICAgICB7Il9fLnJlcGVhdChvdXQoKS5jb3VudCgpKSIsIHJlcGVhdChvdXQoKS5jb3VudCgpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAgIC8vIHRyYXZlcnNhbHMgdGhhdCBzaG91bGQgcGFzcyB2ZXJpZmljYXRpb24KICAgICAgICAgICAgICAgICB7Il9fLlYoKS5wcm9maWxlKCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgX18uVigpLnByb2ZpbGUoKSwgdHJ1ZX0sCiAgICAgICAgICAgICAgICAgeyJfXy5WKCkucHJvZmlsZSgnbWV0cmljcycpLmNhcCgnbWV0cmljcycpIiwKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRGVmYXVsdFRyYXZlcnNlckdlbmVyYXRvckZhY3RvcnlUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0RlZmF1bHRUcmF2ZXJzZXJHZW5lcmF0b3JGYWN0b3J5VGVzdC5qYXZhCmluZGV4IDYwZjM4ODAuLmZiZGFiY2MgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRGVmYXVsdFRyYXZlcnNlckdlbmVyYXRvckZhY3RvcnlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9EZWZhdWx0VHJhdmVyc2VyR2VuZXJhdG9yRmFjdG9yeVRlc3QuamF2YQpAQCAtMjUsOCArMjUsMTAgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX09fUF9TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX0xQX09fU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1NfU0VfU0xfVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX09fVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkxQX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5MUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5PX09CX1NfU0VfU0xfVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKQEAgLTU2LDYgKzU4LDEwIEBACiAgICAgICAgIHRyYXZlcnNhbC5hcHBseVN0cmF0ZWdpZXMoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKEJfT19TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgdHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHN0YXJ0LCB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCksIDFsKS5nZXRDbGFzcygpKTsKICAgICAgICAgLy8KKyAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsU291cmNlLlYoKS5yZXBlYXQoX18ucmVwZWF0KF9fLm91dCgpKSkudGltZXMoMTApLmFzQWRtaW4oKTsKKyAgICAgICAgdHJhdmVyc2FsLmFwcGx5U3RyYXRlZ2llcygpOworICAgICAgICBhc3NlcnRFcXVhbHMoQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCB0cmF2ZXJzYWwuZ2V0VHJhdmVyc2VyR2VuZXJhdG9yKCkuZ2VuZXJhdGUoc3RhcnQsIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSwgMWwpLmdldENsYXNzKCkpOworICAgICAgICAvLwogICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWxTb3VyY2UuVigpLm91dCgpLnNhY2soKS5hc0FkbWluKCk7CiAgICAgICAgIHRyYXZlcnNhbC5hcHBseVN0cmF0ZWdpZXMoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKEJfT19TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgdHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHN0YXJ0LCB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCksIDFsKS5nZXRDbGFzcygpKTsKQEAgLTc5LDYgKzg1LDEwIEBACiAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbFNvdXJjZS53aXRoQnVsayhmYWxzZSkuVigpLm91dCgpLnBhdGgoKS5hc0FkbWluKCk7CiAgICAgICAgIHRyYXZlcnNhbC5hcHBseVN0cmF0ZWdpZXMoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKExQX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgdHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHN0YXJ0LCB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCksIDFsKS5nZXRDbGFzcygpKTsKKyAgICAgICAgLy8KKyAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsU291cmNlLndpdGhCdWxrKGZhbHNlKS5WKCkucmVwZWF0KF9fLnJlcGVhdChfXy5vdXQoKSkpLnRpbWVzKDEwKS5wYXRoKCkuYXNBZG1pbigpOworICAgICAgICB0cmF2ZXJzYWwuYXBwbHlTdHJhdGVnaWVzKCk7CisgICAgICAgIGFzc2VydEVxdWFscyhMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIHRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJHZW5lcmF0b3IoKS5nZW5lcmF0ZShzdGFydCwgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLCAxbCkuZ2V0Q2xhc3MoKSk7CiAKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvQnl0ZWNvZGVVdGlsVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0J5dGVjb2RlVXRpbFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWNjZDc3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0J5dGVjb2RlVXRpbFRlc3QuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLk9wdGlvbnNTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5SZWFkT25seVN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jcy5pczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VGhhdDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBCeXRlY29kZVV0aWxUZXN0IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gRW1wdHlHcmFwaC5pbnN0YW5jZSgpLnRyYXZlcnNhbCgpOworICAgIAorICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZFN0cmF0ZWd5KCkgeworICAgICAgICBmaW5hbCBJdGVyYXRvcjxPcHRpb25zU3RyYXRlZ3k+IGl0dHkgPSBCeXRlY29kZVV0aWwuZmluZFN0cmF0ZWdpZXMoZy53aXRoKCJ4Iikud2l0aCgieSIsIDEwMCkuVigpLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLCBPcHRpb25zU3RyYXRlZ3kuY2xhc3MpOworICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgIHdoaWxlKGl0dHkuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBmaW5hbCBPcHRpb25zU3RyYXRlZ3kgc3RyYXRlZ3kgPSBpdHR5Lm5leHQoKTsKKyAgICAgICAgICAgIGlmIChzdHJhdGVneS5nZXRPcHRpb25zKCkua2V5U2V0KCkuY29udGFpbnMoIngiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQoc3RyYXRlZ3kuZ2V0T3B0aW9ucygpLmdldCgieCIpLCBpcyh0cnVlKSk7CisgICAgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJhdGVneS5nZXRPcHRpb25zKCkua2V5U2V0KCkuY29udGFpbnMoInkiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxMDAsIHN0cmF0ZWd5LmdldE9wdGlvbnMoKS5nZXQoInkiKSk7CisgICAgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIGNvdW50ZXIpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkTm90RmluZFN0cmF0ZWd5KCkgeworICAgICAgICBmaW5hbCBJdGVyYXRvcjxSZWFkT25seVN0cmF0ZWd5PiBpdHR5ID0gQnl0ZWNvZGVVdGlsLmZpbmRTdHJhdGVnaWVzKGcud2l0aCgieCIpLndpdGgoInkiLCAxMDApLlYoKS5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSwgUmVhZE9ubHlTdHJhdGVneS5jbGFzcyk7CisgICAgICAgIGFzc2VydFRoYXQoaXR0eS5oYXNOZXh0KCksIGlzKGZhbHNlKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vR3JhcGhNaWdyYXRvclRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0dyYXBoTWlncmF0b3JUZXN0LmphdmEKaW5kZXggMGI0YTkxMi4uNGExOGM4NSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vR3JhcGhNaWdyYXRvclRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9HcmFwaE1pZ3JhdG9yVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW87CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKIC8qKgpAQCAtMjcsNiArMjcsNiBAQAogcHVibGljIGNsYXNzIEdyYXBoTWlncmF0b3JUZXN0IHsKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhNaWdyYXRvci5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhHcmFwaE1pZ3JhdG9yLmNsYXNzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb0NvcmVUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb0NvcmVUZXN0LmphdmEKaW5kZXggMjM1OTQyZC4uNTc3NjU3ZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vSW9Db3JlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvQ29yZVRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBobWwuR3JhcGhNTElvOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW87CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvSW87CkBAIC0zMyw3ICszMyw3IEBACiBwdWJsaWMgY2xhc3MgSW9Db3JlVGVzdCB7CiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKElvQ29yZS5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhJb0NvcmUuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlckVtYmVkZGVkVHlwZVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyRW1iZWRkZWRUeXBlVGVzdC5qYXZhCmluZGV4IDZjMjc3NzAuLmY3ZGNlMjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyRW1iZWRkZWRUeXBlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyRW1iZWRkZWRUeXBlVGVzdC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuQnVsa1NldDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsRXhwbGFuYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLkxhbWJkYTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5PYmplY3RNYXBwZXI7CkBAIC01NCw2ICs1NSw3IEBACiAKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uX187CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVycy5laXRoZXI7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLkFueU9mLmFueU9mOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jc05vdC5ub3Q7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLlN0cmluZ1N0YXJ0c1dpdGguc3RhcnRzV2l0aDsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CkBAIC04OCwxMyArOTAsMjYgQEAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZVRyYXZlcnNhbEV4cGxhbmF0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGFzc3VtZVRoYXQodmVyc2lvbiwgbm90KHN0YXJ0c1dpdGgoInYxIikpKTsKLSAgICAgICAgCisKICAgICAgICAgZmluYWwgVHJhdmVyc2FsRXhwbGFuYXRpb24gbyA9IF9fKCkub3V0KCkub3V0VigpLm91dEUoKS5leHBsYWluKCk7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbEV4cGxhbmF0aW9uIGRlc2VyID0gc2VyaWFsaXplRGVzZXJpYWxpemUobWFwcGVyLCBvLCBUcmF2ZXJzYWxFeHBsYW5hdGlvbi5jbGFzcyk7CiAgICAgICAgIGFzc2VydEVxdWFscyhvLnByZXR0eVByaW50KCksIGRlc2VyLnByZXR0eVByaW50KCkpOwogICAgIH0KIAogICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkSGFuZGxlQnVsa1NldCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAvLyBvbmx5IHN1cHBvcnRlZCBvbiBWMworICAgICAgICBhc3N1bWVUaGF0KHZlcnNpb24sIG5vdChhbnlPZihzdGFydHNXaXRoKCJ2MSIpLCBzdGFydHNXaXRoKCJ2MiIpKSkpOworCisgICAgICAgIGZpbmFsIEJ1bGtTZXQ8U3RyaW5nPiBicyA9IG5ldyBCdWxrU2V0PD4oKTsKKyAgICAgICAgYnMuYWRkKCJ0ZXN0MSIsIDEpOworICAgICAgICBicy5hZGQoInRlc3QyIiwgMik7CisgICAgICAgIGJzLmFkZCgidGVzdDMiLCAzKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoYnMsIHNlcmlhbGl6ZURlc2VyaWFsaXplKG1hcHBlciwgYnMsIEJ1bGtTZXQuY2xhc3MpKTsKKyAgICB9CisKKyAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZU51bWJlckNvbnN0YW50cygpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBhc3N1bWVUaGF0KHZlcnNpb24sIG5vdChzdGFydHNXaXRoKCJ2MSIpKSk7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyUGFydGlhbEVtYmVkZGVkVHlwZVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyUGFydGlhbEVtYmVkZGVkVHlwZVRlc3QuamF2YQppbmRleCA0ZTg2ZWJkLi45NTMzMzUzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlclBhcnRpYWxFbWJlZGRlZFR5cGVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05NYXBwZXJQYXJ0aWFsRW1iZWRkZWRUeXBlVGVzdC5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuRGVmYXVsdFJlbW90ZVRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLkpzb25NYXBwaW5nRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLk9iamVjdE1hcHBlcjsKQEAgLTMyNywxMCArMzI4LDE5IEBACiAgICAgICAgICAgICAgICAgUC53aXRob3V0KDEsMiwzLDQpLAogICAgICAgICAgICAgICAgIFAud2l0aG91dChBcnJheXMuYXNMaXN0KDEsMiwzLDQpKSwKICAgICAgICAgICAgICAgICBQLmVxKDEpLmFuZChQLmVxKDIpKSwKLSAgICAgICAgICAgICAgICBQLmVxKDEpLm9yKFAuZXEoMikpKTsKKyAgICAgICAgICAgICAgICBQLmVxKDEpLm9yKFAuZXEoMikpLAorICAgICAgICAgICAgICAgIFRleHRQLmNvbnRhaW5pbmcoImFyayIpLAorICAgICAgICAgICAgICAgIFRleHRQLnN0YXJ0aW5nV2l0aCgibWFyIiksCisgICAgICAgICAgICAgICAgVGV4dFAuZW5kaW5nV2l0aCgia28iKSwKKyAgICAgICAgICAgICAgICBUZXh0UC5lbmRpbmdXaXRoKCJrbyIpLmFuZChQLmd0ZSgibWFyIikpLAorICAgICAgICAgICAgICAgIFAuZ3RlKCJtYXIiKS5hbmQoVGV4dFAuZW5kaW5nV2l0aCgia28iKSkpOwogCiAgICAgICAgIGZvciAoUCBwIDogdmFyaWFudHNPZlApIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLCBzZXJpYWxpemVEZXNlcmlhbGl6ZShtYXBwZXIsIHAsIFAuY2xhc3MpKTsKKyAgICAgICAgICAgIGlmIChwIGluc3RhbmNlb2YgVGV4dFApIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocCwgc2VyaWFsaXplRGVzZXJpYWxpemUobWFwcGVyLCBwLCBUZXh0UC5jbGFzcykpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocCwgc2VyaWFsaXplRGVzZXJpYWxpemUobWFwcGVyLCBwLCBQLmNsYXNzKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVG9rZW5zVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Ub2tlbnNUZXN0LmphdmEKaW5kZXggMzM2OGY0Ni4uMmVmYTM1MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Ub2tlbnNUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Ub2tlbnNUZXN0LmphdmEKQEAgLTE4LDcgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbjsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAogLyoqCkBAIC0yNyw2ICsyNyw2IEBACiBwdWJsaWMgY2xhc3MgR3JhcGhTT05Ub2tlbnNUZXN0IHsKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhTT05Ub2tlbnMuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhTT05Ub2tlbnMuY2xhc3MpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVXRpbFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVXRpbFRlc3QuamF2YQppbmRleCAwMjk1OGU1Li5mZDIwOTNjIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlV0aWxUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05VdGlsVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb247CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKIC8qKgpAQCAtMjcsNiArMjcsNiBAQAogcHVibGljIGNsYXNzIEdyYXBoU09OVXRpbFRlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhHcmFwaFNPTlV0aWwuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhTT05VdGlsLmNsYXNzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0NvbXBhcmF0b3JzVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9Db21wYXJhdG9yc1Rlc3QuamF2YQppbmRleCBlYjE4MmZkLi45Zjc4ZjAzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0NvbXBhcmF0b3JzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvQ29tcGFyYXRvcnNUZXN0LmphdmEKQEAgLTE4LDcgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKQEAgLTM4LDcgKzM4LDcgQEAKIHB1YmxpYyBjbGFzcyBDb21wYXJhdG9yc1Rlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhDb21wYXJhdG9ycy5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhDb21wYXJhdG9ycy5jbGFzcyk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvRWxlbWVudEhlbHBlclRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvRWxlbWVudEhlbHBlclRlc3QuamF2YQppbmRleCBkZTc3NGRhLi42MzY4NTlkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0VsZW1lbnRIZWxwZXJUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9FbGVtZW50SGVscGVyVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CkBAIC01MCw3ICs1MCw3IEBACiBwdWJsaWMgY2xhc3MgRWxlbWVudEhlbHBlclRlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhFbGVtZW50SGVscGVyLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEVsZW1lbnRIZWxwZXIuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0yNzcsOCArMjc3LDggQEAKICAgICB9CiAKICAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZERldGVybWluZUVsZW1lbnRzQXJlTm90RXF1YWxXaGVuQm90aE51bGwoKSB7Ci0gICAgICAgIGFzc2VydEZhbHNlKEVsZW1lbnRIZWxwZXIuYXJlRXF1YWwoKEVsZW1lbnQpIG51bGwsIG51bGwpKTsKKyAgICBwdWJsaWMgdm9pZCBzaG91bGREZXRlcm1pbmVFbGVtZW50c0FyZUVxdWFsV2hlbkJvdGhOdWxsKCkgeworICAgICAgICBhc3NlcnRUcnVlKEVsZW1lbnRIZWxwZXIuYXJlRXF1YWwoKEVsZW1lbnQpIG51bGwsIG51bGwpKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtMzEyLDggKzMxMiw4IEBACiAgICAgfQogCiAgICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGREZXRlcm1pbmVQcm9wZXJ0aWVzQXJlTm90RXF1YWxCZWNhdXNlQm90aEFyZU51bGwoKSB7Ci0gICAgICAgIGFzc2VydEZhbHNlKEVsZW1lbnRIZWxwZXIuYXJlRXF1YWwoKFByb3BlcnR5KSBudWxsLCBudWxsKSk7CisgICAgcHVibGljIHZvaWQgc2hvdWxkRGV0ZXJtaW5lUHJvcGVydGllc0FyZUVxdWFsQmVjYXVzZUJvdGhBcmVOdWxsKCkgeworICAgICAgICBhc3NlcnRUcnVlKEVsZW1lbnRIZWxwZXIuYXJlRXF1YWwoKFByb3BlcnR5KSBudWxsLCBudWxsKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTM4NCw3ICszODQsNyBAQAogICAgIH0KIAogICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRGV0ZXJtaW5lUHJvcGVydGllc0FyZU5vdEVxdWFsV2hlbkVsZW1lbnRzQXJlRGlmZmVyZW50KCkgeworICAgIHB1YmxpYyB2b2lkIHNob3VsZERldGVybWluZVByb3BlcnRpZXNBcmVFcXVhbFdoZW5FbGVtZW50c0FyZURpZmZlcmVudCgpIHsKICAgICAgICAgZmluYWwgUHJvcGVydHkgbW9ja1Byb3BlcnR5QSA9IG1vY2soUHJvcGVydHkuY2xhc3MpOwogICAgICAgICBmaW5hbCBQcm9wZXJ0eSBtb2NrUHJvcGVydHlCID0gbW9jayhQcm9wZXJ0eS5jbGFzcyk7CiAgICAgICAgIGZpbmFsIEVsZW1lbnQgbW9ja0VsZW1lbnQgPSBtb2NrKEVsZW1lbnQuY2xhc3MpOwpAQCAtMzk4LDcgKzM5OCw3IEBACiAgICAgICAgIHdoZW4obW9ja1Byb3BlcnR5QS52YWx1ZSgpKS50aGVuUmV0dXJuKCJ2Iik7CiAgICAgICAgIHdoZW4obW9ja1Byb3BlcnR5Qi52YWx1ZSgpKS50aGVuUmV0dXJuKCJ2Iik7CiAKLSAgICAgICAgYXNzZXJ0RmFsc2UoRWxlbWVudEhlbHBlci5hcmVFcXVhbChtb2NrUHJvcGVydHlBLCBtb2NrUHJvcGVydHlCKSk7CisgICAgICAgIGFzc2VydFRydWUoRWxlbWVudEhlbHBlci5hcmVFcXVhbChtb2NrUHJvcGVydHlBLCBtb2NrUHJvcGVydHlCKSk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvR3JhcGhGYWN0b3J5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9HcmFwaEZhY3RvcnlUZXN0LmphdmEKaW5kZXggNmRiZjFkMy4uNzAxZTE1OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9HcmFwaEZhY3RvcnlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9HcmFwaEZhY3RvcnlUZXN0LmphdmEKQEAgLTIwLDcgKzIwLDcgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkJhc2VDb25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CkBAIC00Nyw3ICs0Nyw3IEBACiBwdWJsaWMgY2xhc3MgR3JhcGhGYWN0b3J5VGVzdCB7CiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyYXBoRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhHcmFwaEZhY3RvcnkuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0dyYXBoVmFyaWFibGVIZWxwZXJUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0dyYXBoVmFyaWFibGVIZWxwZXJUZXN0LmphdmEKaW5kZXggYWY2N2Q4Yi4uZmE4NzJkZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9HcmFwaFZhcmlhYmxlSGVscGVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvR3JhcGhWYXJpYWJsZUhlbHBlclRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWw7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKQEAgLTMxLDcgKzMxLDcgQEAKIHB1YmxpYyBjbGFzcyBHcmFwaFZhcmlhYmxlSGVscGVyVGVzdCB7CiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyYXBoVmFyaWFibGVIZWxwZXIuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhWYXJpYWJsZUhlbHBlci5jbGFzcyk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvU3RyaW5nRmFjdG9yeVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvU3RyaW5nRmFjdG9yeVRlc3QuamF2YQppbmRleCAzZGNhOTg4Li41YThkZGMzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL1N0cmluZ0ZhY3RvcnlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9TdHJpbmdGYWN0b3J5VGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAogLyoqCkBAIC0yNyw2ICsyNyw2IEBACiBwdWJsaWMgY2xhc3MgU3RyaW5nRmFjdG9yeVRlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhTdHJpbmdGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKFN0cmluZ0ZhY3RvcnkuY2xhc3MpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9HcmVtbGluVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL0dyZW1saW5UZXN0LmphdmEKaW5kZXggOGNlOGQ1Yy4uMTUwNDY4MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL0dyZW1saW5UZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL0dyZW1saW5UZXN0LmphdmEKQEAgLTE4LDcgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWw7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CkBAIC0yOSw3ICsyOSw3IEBACiBwdWJsaWMgY2xhc3MgR3JlbWxpblRlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhHcmVtbGluLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyZW1saW4uY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvU2VyaWFsaXplclRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9TZXJpYWxpemVyVGVzdC5qYXZhCmluZGV4IDBmNDAyODAuLjhjYWNjYTQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9TZXJpYWxpemVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9TZXJpYWxpemVyVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwpAQCAtMzAsNyArMzAsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKFNlcmlhbGl6ZXIuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoU2VyaWFsaXplci5jbGFzcyk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9UaW1lVXRpbFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9UaW1lVXRpbFRlc3QuamF2YQppbmRleCAyNDJhMDE4Li41ZTVkNzJhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvVGltZVV0aWxUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL1RpbWVVdGlsVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXI7CkBAIC0zMiw3ICszMiw3IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoVGltZVV0aWwuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoVGltZVV0aWwuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvZnVuY3Rpb24vRnVuY3Rpb25VdGlsc1Rlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9mdW5jdGlvbi9GdW5jdGlvblV0aWxzVGVzdC5qYXZhCmluZGV4IDI2NzlmZDEuLmI2NWI3NDAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9mdW5jdGlvbi9GdW5jdGlvblV0aWxzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9mdW5jdGlvbi9GdW5jdGlvblV0aWxzVGVzdC5qYXZhCkBAIC0xOCw4ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnMuaW5zdGFuY2VPZjsKQEAgLTM0LDcgKzMzLDcgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhGdW5jdGlvblV0aWxzLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEZ1bmN0aW9uVXRpbHMuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvaXRlcmF0b3IvSXRlcmF0b3JVdGlsc1Rlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9pdGVyYXRvci9JdGVyYXRvclV0aWxzVGVzdC5qYXZhCmluZGV4IGZlMjk5MTMuLjk2NDliZTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9pdGVyYXRvci9JdGVyYXRvclV0aWxzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9pdGVyYXRvci9JdGVyYXRvclV0aWxzVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5GYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIApAQCAtNDUsNyArNDUsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEl0ZXJhdG9yVXRpbHMuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoSXRlcmF0b3JVdGlscy5jbGFzcyk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC90b29scy9NdWx0aU1hcFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC90b29scy9NdWx0aU1hcFRlc3QuamF2YQppbmRleCAwYzJhZDE3Li5jNTAyYTUxIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvdG9vbHMvTXVsdGlNYXBUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL3Rvb2xzL011bHRpTWFwVGVzdC5qYXZhCkBAIC0xOCw4ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLnRvb2xzOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwpAQCAtMzksNyArMzgsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKE11bHRpTWFwLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKE11bHRpTWFwLmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9SZW1vdGVEc2xUcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvUmVtb3RlRHNsVHJhdmVyc2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3ZGE3MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvUmVtb3RlRHNsVHJhdmVyc2FsLmphdmEKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlOworCitpbXBvcnQgc3RhdGljIG9yZy5tb2NraXRvLk1vY2tpdG8ubW9jazsKKworcHVibGljIGNsYXNzIFJlbW90ZURzbFRyYXZlcnNhbCB7CisgICAgcHVibGljIFJlbW90ZURzbFRyYXZlcnNhbCgpIHsKKyAgICAgICAgZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBtb2NrUmVtb3RlID0gbW9jayhSZW1vdGVDb25uZWN0aW9uLmNsYXNzKTsKKyAgICAgICAgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbChTb2NpYWxUcmF2ZXJzYWxTb3VyY2UuY2xhc3MpLndpdGhSZW1vdGUobW9ja1JlbW90ZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvZ2x2L0dyYXBoVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlIGIvZ3JlbWxpbi1kb3RuZXQvZ2x2L0dyYXBoVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlCmluZGV4IGJiYzM2ODQuLmYzMDkzZTUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L2dsdi9HcmFwaFRyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZQorKysgYi9ncmVtbGluLWRvdG5ldC9nbHYvR3JhcGhUcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUKQEAgLTEyOCw5ICsxMjgsOSBAQAogICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gb2ZmIHRoaXMgZ3JhcGggdHJhdmVyc2FsIHNvdXJjZSBhbmQgYWRkcyB0aGUgPCU9IG1ldGhvZC5tZXRob2ROYW1lICU+IHN0ZXAgdG8gdGhhdAogICAgICAgICAvLy8gICAgIHRyYXZlcnNhbC4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KLSAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPCRtZXRob2QudHlwZU5hbWVTdHJpbmc+IDwlPSB0b0NTaGFycE1ldGhvZE5hbWUuY2FsbChtZXRob2QubWV0aG9kTmFtZSkgJT48JT0gbWV0aG9kLnRQYXJhbSAlPig8JT0gbWV0aG9kLnBhcmFtZXRlcnMgJT4pCisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDwkbWV0aG9kLnQxLCAkbWV0aG9kLnQyPiA8JT0gdG9DU2hhcnBNZXRob2ROYW1lLmNhbGwobWV0aG9kLm1ldGhvZE5hbWUpICU+PCU9IG1ldGhvZC50UGFyYW0gJT4oPCU9IG1ldGhvZC5wYXJhbWV0ZXJzICU+KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdHJhdmVyc2FsID0gbmV3IEdyYXBoVHJhdmVyc2FsPCRtZXRob2QudHlwZU5hbWVTdHJpbmc+KFRyYXZlcnNhbFN0cmF0ZWdpZXMsIG5ldyBCeXRlY29kZShCeXRlY29kZSkpOworICAgICAgICAgICAgdmFyIHRyYXZlcnNhbCA9IG5ldyBHcmFwaFRyYXZlcnNhbDwkbWV0aG9kLnQxLCAkbWV0aG9kLnQyPihUcmF2ZXJzYWxTdHJhdGVnaWVzLCBuZXcgQnl0ZWNvZGUoQnl0ZWNvZGUpKTsKICAgICAgICAgICAgIDwlICBpZiAobWV0aG9kLnBhcmFtZXRlcnMuY29udGFpbnMoInBhcmFtcyAiKSkgewogICAgICAgICAgICU+dmFyIGFyZ3MgPSBuZXcgTGlzdDxvYmplY3Q+KDwlPSBtZXRob2QucGFyYW1OYW1lcy5pbml0KCkuc2l6ZSgpICU+ICsgPCU9IG1ldGhvZC5wYXJhbU5hbWVzLmxhc3QoKSAlPi5MZW5ndGgpIHs8JT0gbWV0aG9kLnBhcmFtTmFtZXMuaW5pdCgpLmpvaW4oIiwgIikgJT59OwogICAgICAgICAgICAgYXJncy5BZGRSYW5nZSg8JT0gbWV0aG9kLnBhcmFtTmFtZXMubGFzdCgpICU+PCUgaWYgKG1ldGhvZC5pc0FyZ3NDYXN0TmVjZXNzYXJ5KSB7ICU+LkNhc3Q8b2JqZWN0PigpPCUgfSAlPik7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9nbHYvVGV4dFAudGVtcGxhdGUgYi9ncmVtbGluLWRvdG5ldC9nbHYvVGV4dFAudGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UyODlmNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L2dsdi9UZXh0UC50ZW1wbGF0ZQpAQCAtMCwwICsxLDcxIEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsCit7CisjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAxNTkxCisKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vICAgICBBIDxzZWUgY3JlZj0iVGV4dFAiIC8+IGlzIGEgcHJlZGljYXRlIG9mIHRoZSBmb3JtIEZ1bmMmbHQ7c3RyaW5nLCBib29sJmd0Oy4KKyAgICAvLy8gICAgIFRoYXQgaXMsIGdpdmVuIHNvbWUgc3RyaW5nLCByZXR1cm4gdHJ1ZSBvciBmYWxzZS4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIHB1YmxpYyBjbGFzcyBUZXh0UCA6IFAKKyAgICB7CisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJUZXh0UCIgLz4gY2xhc3MuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3BlcmF0b3JOYW1lIj5UaGUgbmFtZSBvZiB0aGUgcHJlZGljYXRlLjwvcGFyYW0+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idmFsdWUiPlRoZSB2YWx1ZSBvZiB0aGUgcHJlZGljYXRlLjwvcGFyYW0+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPkFuIG9wdGlvbmFsIG90aGVyIHByZWRpY2F0ZSB0aGF0IGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgZm9yIHRoaXMgcHJlZGljYXRlLjwvcGFyYW0+CisgICAgICAgIHB1YmxpYyBUZXh0UChzdHJpbmcgb3BlcmF0b3JOYW1lLCBzdHJpbmcgdmFsdWUsIFAgb3RoZXIgPSBudWxsKSA6IGJhc2Uob3BlcmF0b3JOYW1lLCB2YWx1ZSwgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgfQorCis8JSB0cG1ldGhvZHMuZWFjaCB7IG1ldGhvZCAtPiAlPgorICAgICAgICBwdWJsaWMgc3RhdGljIFRleHRQIDwlPSB0b0NTaGFycE1ldGhvZE5hbWUuY2FsbChtZXRob2QpICU+KHN0cmluZyB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0UCgiPCU9IG1ldGhvZCAlPiIsIHZhbHVlKTsKKyAgICAgICAgfQorPCUgfSAlPgorCisgICAgICAgIHByaXZhdGUgc3RhdGljIFRbXSBUb0dlbmVyaWNBcnJheTxUPihJQ29sbGVjdGlvbjxUPiBjb2xsZWN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbj8uVG9BcnJheSgpID8/IG5ldyBUWzBdOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxpbmhlcml0ZG9jIC8+CisgICAgICAgIHB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gT3RoZXIgPT0gbnVsbCA/IFwkIntPcGVyYXRvck5hbWV9KHtWYWx1ZX0pIiA6IFwkIntPcGVyYXRvck5hbWV9KHtWYWx1ZX0se090aGVyfSkiOworICAgICAgICB9CisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9nbHYvVG9rZW4udGVtcGxhdGUgYi9ncmVtbGluLWRvdG5ldC9nbHYvVG9rZW4udGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg2NjM0YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L2dsdi9Ub2tlbi50ZW1wbGF0ZQpAQCAtMCwwICsxLDQzIEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsCit7CisjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAxNTkxCisKKyAgICBwdWJsaWMgY2xhc3MgPCU9IHRva2VuTmFtZSAlPgorICAgIHsKKyAgICAgICAgPCUgdG9rZW5GaWVsZHMuZWFjaCB7ayx2IC0+ICU+CisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIDwlPSBrICU+ID0gIjwlPSB2ICU+IjsKKyAgICAgICAgPCUgfSAlPgorICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L2dsdi9XaXRoT3B0aW9ucy50ZW1wbGF0ZSBiL2dyZW1saW4tZG90bmV0L2dsdi9XaXRoT3B0aW9ucy50ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGRkNmJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvZ2x2L1dpdGhPcHRpb25zLnRlbXBsYXRlCkBAIC0wLDAgKzEsNDcgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKworLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIE1PRElGWSBUSElTIEZJTEUgRElSRUNUTFkgLSBzZWUgcG9tLnhtbAordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uTGlucTsKK3VzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuU3RlcC5VdGlsCit7CisjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAxNTkxCisKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vICAgICBDb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZSA8Yz5XaXRoKCk8L2M+IG1vZHVsYXRvci4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIHB1YmxpYyBjbGFzcyBXaXRoT3B0aW9ucworICAgIHsKKzwlIHdpdGhPcHRpb25zLmVhY2ggeyBmaWVsZCAtPiAlPgorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgPCU9IGZpZWxkLnR5cGUgJT4gPCU9IGZpZWxkLm5hbWUgJT4gPSA8JT0gZmllbGQudmFsdWUgJT47Cis8JSB9ICU+CisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9nbHYvZ2VuZXJhdGUuZ3Jvb3Z5IGIvZ3JlbWxpbi1kb3RuZXQvZ2x2L2dlbmVyYXRlLmdyb292eQppbmRleCBmMzk2ODBjLi4yNmRhYTU4IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9nbHYvZ2VuZXJhdGUuZ3Jvb3Z5CisrKyBiL2dyZW1saW4tZG90bmV0L2dsdi9nZW5lcmF0ZS5ncm9vdnkKQEAgLTE4LDExICsxOCwxOCBAQAogICovCiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5Db3JlSW1wb3J0cworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuQ29ubmVjdGVkQ29tcG9uZW50CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QYWdlUmFuaworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGVlclByZXNzdXJlCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5TaG9ydGVzdFBhdGgKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZQogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2UKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnMKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb24KIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Nb2RpZmllcgogaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZQpAQCAtMzgsNiArNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAiT2JqZWN0W10iOiAib2JqZWN0W10iLAogICAgICAgICAgICAgICAgICAgICAgICAiQ2xhc3MiOiAiVHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJDbGFzc1tdIjogIlR5cGVbXSIsCisgICAgICAgICAgICAgICAgICAgICAgICJqYXZhLnV0aWwuTWFwPGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3Q+IjogIklEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJqYXZhLnV0aWwuTWFwPGphdmEubGFuZy5TdHJpbmcsIEUyPiI6ICJJRGljdGlvbmFyeTxzdHJpbmcsIEUyPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJqYXZhLnV0aWwuTWFwPGphdmEubGFuZy5TdHJpbmcsIEI+IjogIklEaWN0aW9uYXJ5PHN0cmluZywgRTI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgImphdmEudXRpbC5NYXA8amF2YS5sYW5nLk9iamVjdCwgRTI+IjogIklEaWN0aW9uYXJ5PG9iamVjdCwgRTI+IiwKQEAgLTUzLDYgKzYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIlRyYXZlcnNhbFtdIjogIklUcmF2ZXJzYWxbXSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJQcmVkaWNhdGUiOiAiSVByZWRpY2F0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJQIjogIlAiLAorICAgICAgICAgICAgICAgICAgICAgICAiVGV4dFAiOiAiVGV4dFAiLAogICAgICAgICAgICAgICAgICAgICAgICAiVHJhdmVyc2FsU3RyYXRlZ3kiOiAiSVRyYXZlcnNhbFN0cmF0ZWd5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIlRyYXZlcnNhbFN0cmF0ZWd5W10iOiAiSVRyYXZlcnNhbFN0cmF0ZWd5W10iLAogICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24iOiAiSUZ1bmN0aW9uIiwKQEAgLTEwNiw2ICsxMTUsMTAgQEAKIAogZGVmIHRvQ1NoYXJwTWV0aG9kTmFtZSA9IHsgc3ltYm9sIC0+IChTdHJpbmcpIENoYXJhY3Rlci50b1VwcGVyQ2FzZShzeW1ib2wuY2hhckF0KDApKSArIHN5bWJvbC5zdWJzdHJpbmcoMSkgfQogCitkZWYgdG9DU2hhcnBWYWx1ZSA9IHsgdHlwZSwgdmFsdWUgLT4KKyAgdHlwZSA9PSBTdHJpbmcuY2xhc3MgJiYgdmFsdWUgIT0gbnVsbCA/ICgnIicgKyB2YWx1ZSArICciJykgOiB2YWx1ZQorfQorCiBkZWYgZ2V0SmF2YUdlbmVyaWNUeXBlUGFyYW1ldGVyVHlwZU5hbWVzID0geyBtZXRob2QgLT4KICAgICBkZWYgdHlwZUFyZ3VtZW50cyA9IG1ldGhvZC5nZW5lcmljUmV0dXJuVHlwZS5hY3R1YWxUeXBlQXJndW1lbnRzCiAgICAgcmV0dXJuIHR5cGVBcmd1bWVudHMuCkBAIC0xMjUsNyArMTM4LDcgQEAKICAgICByZXR1cm4gbWV0aG9kLnBhcmFtZXRlcnMuCiAgICAgICAgICAgICBjb2xsZWN0IHsgcGFyYW0gLT4KICAgICAgICAgICAgICAgICBwYXJhbS50eXBlLnNpbXBsZU5hbWUKLSAgICAgICAgICAgIH0gCisgICAgICAgICAgICB9CiB9CiAKIGRlZiB0b0NTaGFycFBhcmFtU3RyaW5nID0geyBwYXJhbSwgZ2VuVHlwZU5hbWUgLT4KQEAgLTE3NCw3ICsxODcsNyBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChnZW5UeXBlIGluc3RhbmNlb2YgR2VuZXJpY0FycmF5VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoR2VuZXJpY0FycmF5VHlwZSlnZW5UeXBlKS5nZXRHZW5lcmljQ29tcG9uZW50VHlwZSgpIGluc3RhbmNlb2YgVHlwZVZhcmlhYmxlPD8+KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuVHlwZU5hbWUgPSAoKFR5cGVWYXJpYWJsZTw/PikoKEdlbmVyaWNBcnJheVR5cGUpZ2VuVHlwZSkuZ2V0R2VuZXJpY0NvbXBvbmVudFR5cGUoKSkubmFtZSArICJbXSIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b0NTaGFycFBhcmFtU3RyaW5nKHBhcmFtLCBnZW5UeXBlTmFtZSkKQEAgLTIyMSwxMiArMjM0LDI0IEBACiAgICAgcmV0dXJuIHQyCiB9CiAKK2RlZiBnYXRoZXJUb2tlbnNGcm9tID0geyB0b2tlbkNsYXNzZXMgLT4KKyAgICBkZWYgbSA9IFs6XQorICAgIHRva2VuQ2xhc3Nlcy5lYWNoIHsgdGMgLT4gbSA8PCBbKHRjLnNpbXBsZU5hbWUpIDogdGMuZ2V0RmllbGRzKCkuc29ydHsgYSwgYiAtPiBhLm5hbWUgPD0+IGIubmFtZSB9LmNvbGxlY3RFbnRyaWVzeyBmIC0+IFsoZi5uYW1lKSA6IGYuZ2V0KG51bGwpXX1dfQorICAgIHJldHVybiBtCit9CisKIGRlZiBiaW5kaW5nID0gWyJwbWV0aG9kcyI6IFAuY2xhc3MuZ2V0TWV0aG9kcygpLgogICAgICAgICBmaW5kQWxsIHsgTW9kaWZpZXIuaXNTdGF0aWMoaXQuZ2V0TW9kaWZpZXJzKCkpIH0uCiAgICAgICAgIGZpbmRBbGwgeyBQLmNsYXNzLmlzQXNzaWduYWJsZUZyb20oaXQucmV0dXJuVHlwZSkgfS4KICAgICAgICAgY29sbGVjdCB7IGl0Lm5hbWUgfS4KICAgICAgICAgdW5pcXVlKCkuCiAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEgPD0+IGIgfSwKKyAgICAgICAgICAgICAgICJ0cG1ldGhvZHMiOiBUZXh0UC5jbGFzcy5nZXRNZXRob2RzKCkuCisgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBNb2RpZmllci5pc1N0YXRpYyhpdC5nZXRNb2RpZmllcnMoKSkgfS4KKyAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7IFRleHRQLmNsYXNzLmlzQXNzaWduYWJsZUZyb20oaXQucmV0dXJuVHlwZSkgfS4KKyAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7IGl0Lm5hbWUgfS4KKyAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKCkuCisgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEgPD0+IGIgfSwKICAgICAgICAgICAgICAgICJzb3VyY2VTdGVwTWV0aG9kcyI6IEdyYXBoVHJhdmVyc2FsU291cmNlLmdldE1ldGhvZHMoKS4gLy8gU09VUkNFIFNURVBTCiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgR3JhcGhUcmF2ZXJzYWxTb3VyY2UuY2xhc3MuZXF1YWxzKGl0LnJldHVyblR5cGUpIH0uCiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsKQEAgLTI0MywxOSArMjY4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsibWV0aG9kTmFtZSI6IGphdmFNZXRob2QubmFtZSwgInBhcmFtZXRlcnMiOnBhcmFtZXRlcnMsICJwYXJhbU5hbWVzIjpwYXJhbU5hbWVzXQogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJzb3VyY2VTcGF3bk1ldGhvZHMiOiBHcmFwaFRyYXZlcnNhbFNvdXJjZS5nZXRNZXRob2RzKCkuIC8vIFNQQVdOIFNURVBTCi0gICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgR3JhcGhUcmF2ZXJzYWwuY2xhc3MuZXF1YWxzKGl0LnJldHVyblR5cGUpIH0uICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFNlbGVjdCB1bmlxdWUgY29tYmluYXRpb24gb2YgQyMgcGFyYW1ldGVyIHR5cGVzIGFuZCBzb3J0IGJ5IEphdmEgcGFyYW1ldGVyIHR5cGUgY29tYmluYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7IEdyYXBoVHJhdmVyc2FsLmNsYXNzLmVxdWFscyhpdC5yZXR1cm5UeXBlKSB9LgorICAgICAgICAgICAgICAgIC8vIFNlbGVjdCB1bmlxdWUgY29tYmluYXRpb24gb2YgQyMgcGFyYW1ldGVyIHR5cGVzIGFuZCBzb3J0IGJ5IEphdmEgcGFyYW1ldGVyIHR5cGUgY29tYmluYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEubmFtZSA8PT4gYi5uYW1lID86IGdldEphdmFQYXJhbVR5cGVTdHJpbmcoYSkgPD0+IGdldEphdmFQYXJhbVR5cGVTdHJpbmcoYikgfS4KICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSB7IGEsYiAtPiBhLm5hbWUgPD0+IGIubmFtZSA/OiBnZXRDU2hhcnBQYXJhbVR5cGVTdHJpbmcoYSkgPD0+IGdldENTaGFycFBhcmFtVHlwZVN0cmluZyhiKSB9LgogICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7IGphdmFNZXRob2QgLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgdHlwZU5hbWVzID0gZ2V0SmF2YUdlbmVyaWNUeXBlUGFyYW1ldGVyVHlwZU5hbWVzKGphdmFNZXRob2QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIHR5cGVOYW1lU3RyaW5nID0gdHlwZU5hbWVzLmpvaW4oIiwgIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgdDEgPSB0b0NTaGFycFR5cGUodHlwZU5hbWVzWzBdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiB0MiA9IHRvQ1NoYXJwVHlwZSh0eXBlTmFtZXNbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIHRQYXJhbSA9IGdldENTaGFycEdlbmVyaWNUeXBlUGFyYW0odDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIHBhcmFtZXRlcnMgPSBnZXRDU2hhcnBQYXJhbVN0cmluZyhqYXZhTWV0aG9kLCB0cnVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBwYXJhbU5hbWVzID0gZ2V0UGFyYW1OYW1lcyhqYXZhTWV0aG9kLnBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIGlzQXJnc0Nhc3ROZWNlc3NhcnkgPSBpc1BhcmFtc0FyZ0Nhc3ROZWNlc3NhcnkocGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyJtZXRob2ROYW1lIjogamF2YU1ldGhvZC5uYW1lLCAidHlwZU5hbWVTdHJpbmciOiB0eXBlTmFtZVN0cmluZywgInRQYXJhbSI6dFBhcmFtLCAicGFyYW1ldGVycyI6cGFyYW1ldGVycywgInBhcmFtTmFtZXMiOnBhcmFtTmFtZXMsICJpc0FyZ3NDYXN0TmVjZXNzYXJ5Ijppc0FyZ3NDYXN0TmVjZXNzYXJ5XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIm1ldGhvZE5hbWUiOiBqYXZhTWV0aG9kLm5hbWUsICJ0MSI6dDEsICJ0MiI6dDIsICJ0UGFyYW0iOnRQYXJhbSwgInBhcmFtZXRlcnMiOnBhcmFtZXRlcnMsICJwYXJhbU5hbWVzIjpwYXJhbU5hbWVzLCAiaXNBcmdzQ2FzdE5lY2Vzc2FyeSI6aXNBcmdzQ2FzdE5lY2Vzc2FyeV0KICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiZ3JhcGhTdGVwTWV0aG9kcyI6IEdyYXBoVHJhdmVyc2FsLmdldE1ldGhvZHMoKS4KICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBHcmFwaFRyYXZlcnNhbC5jbGFzcy5lcXVhbHMoaXQucmV0dXJuVHlwZSkgfS4KQEAgLTMwMCw3ICszMjUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgZ3JhcGhUcmF2ZXJzYWxUMiA9IGdldEdyYXBoVHJhdmVyc2FsVDJGb3JUMih0MikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyJtZXRob2ROYW1lIjogamF2YU1ldGhvZC5uYW1lLCAidDIiOnQyLCAidFBhcmFtIjp0UGFyYW0sICJwYXJhbWV0ZXJzIjpwYXJhbWV0ZXJzLCAicGFyYW1OYW1lcyI6cGFyYW1OYW1lcywgImNhbGxHZW5lcmljVHlwZUFyZyI6Y2FsbEdlbmVyaWNUeXBlQXJnLCAiZ3JhcGhUcmF2ZXJzYWxUMiI6Z3JhcGhUcmF2ZXJzYWxUMl0KICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAidG9DU2hhcnBNZXRob2ROYW1lIjogdG9DU2hhcnBNZXRob2ROYW1lXQorICAgICAgICAgICAgICAgInRva2VucyI6IGdhdGhlclRva2Vuc0Zyb20oW0lPLCBDb25uZWN0ZWRDb21wb25lbnQsIFNob3J0ZXN0UGF0aCwgUGFnZVJhbmssIFBlZXJQcmVzc3VyZV0pLAorICAgICAgICAgICAgICAgInRvQ1NoYXJwTWV0aG9kTmFtZSI6IHRvQ1NoYXJwTWV0aG9kTmFtZSwKKyAgICAgICAgICAgICAgICJ3aXRoT3B0aW9ucyI6IFdpdGhPcHRpb25zLmdldERlY2xhcmVkRmllbGRzKCkuCisgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IHtbInR5cGUiOiB0b0NTaGFycFR5cGUoaXQudHlwZS5zaW1wbGVOYW1lKSwgIm5hbWUiOiB0b0NTaGFycE1ldGhvZE5hbWUoaXQubmFtZSksICJ2YWx1ZSI6IHRvQ1NoYXJwVmFsdWUoaXQudHlwZSwgaXQuZ2V0KG51bGwpKV19XQogCiBkZWYgZW5naW5lID0gbmV3IGdyb292eS50ZXh0LkdTdHJpbmdUZW1wbGF0ZUVuZ2luZSgpCiBkZWYgdHJhdmVyc2FsVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L2dsdi9HcmFwaFRyYXZlcnNhbC50ZW1wbGF0ZSIpKS5tYWtlKGJpbmRpbmcpCkBAIC0zMTksNiArMzQ3LDE5IEBACiBkZWYgcEZpbGUgPSBuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1AuY3MiKQogcEZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgcFRlbXBsYXRlIH0KIAorZGVmIHRwVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L2dsdi9UZXh0UC50ZW1wbGF0ZSIpKS5tYWtlKGJpbmRpbmcpCitkZWYgdHBGaWxlID0gbmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9UZXh0UC5jcyIpCit0cEZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgdHBUZW1wbGF0ZSB9CisKK2RlZiB3aXRoT3B0aW9uc1RlbXBsYXRlID0gZW5naW5lLmNyZWF0ZVRlbXBsYXRlKG5ldyBGaWxlKCIke3Byb2plY3RCYXNlRGlyfS9nbHYvV2l0aE9wdGlvbnMudGVtcGxhdGUiKSkubWFrZShiaW5kaW5nKQorZGVmIHdpdGhPcHRpb25zRmlsZSA9IG5ldyBGaWxlKCIke3Byb2plY3RCYXNlRGlyfS9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvV2l0aE9wdGlvbnMuY3MiKQord2l0aE9wdGlvbnNGaWxlLm5ld1dyaXRlcigpLndpdGhXcml0ZXJ7IGl0IDw8IHdpdGhPcHRpb25zVGVtcGxhdGUgfQorCitiaW5kaW5nLnRva2Vucy5lYWNoIHtrLHYgLT4KKyAgICBkZWYgdG9rZW5UZW1wbGF0ZSA9IGVuZ2luZS5jcmVhdGVUZW1wbGF0ZShuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vZ2x2L1Rva2VuLnRlbXBsYXRlIikpLm1ha2UoW3Rva2VuRmllbGRzOiB2LCB0b2tlbk5hbWU6IGtdKQorICAgIGRlZiB0b2tlbkZpbGUgPSBuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsLyR7a30uY3MiKQorICAgIHRva2VuRmlsZS5uZXdXcml0ZXIoKS53aXRoV3JpdGVyeyBpdCA8PCB0b2tlblRlbXBsYXRlIH0KK30KIAogZGVmIGNyZWF0ZUVudW0gPSB7IGVudW1DbGFzcyAtPgogICAgIGRlZiBiID0gWyJlbnVtQ2xhc3MiOiBlbnVtQ2xhc3MsCkBAIC0zNjIsNCArNDAzLDQgQEAKIHRlbXBsYXRlQ3Nwcm9qRmlsZS5uZXdXcml0ZXIoKS53aXRoV3JpdGVyeyBpdCA8PCB0ZW1wbGF0ZUNzcHJvalRlbXBsYXRlIH0KIGRlZiBudXNwZWNUZW1wbGF0ZSA9IGVuZ2luZS5jcmVhdGVUZW1wbGF0ZShuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vZ2x2L0dyZW1saW4uTmV0LlRlbXBsYXRlLm51c3BlYy50ZW1wbGF0ZSIpKS5tYWtlKFsicHJvamVjdFZlcnNpb24iOnZlcnNpb25Ub1VzZV0pCiBkZWYgbnVzcGVjRmlsZSA9IG5ldyBGaWxlKCIke3Byb2plY3RCYXNlRGlyfS9zcmMvR3JlbWxpbi5OZXQuVGVtcGxhdGUvR3JlbWxpbi5OZXQuVGVtcGxhdGUubnVzcGVjIikKLW51c3BlY0ZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgbnVzcGVjVGVtcGxhdGUgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK251c3BlY0ZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgbnVzcGVjVGVtcGxhdGUgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvcG9tLnhtbCBiL2dyZW1saW4tZG90bmV0L3BvbS54bWwKaW5kZXggMzk4YmZlMC4uZjI0NWMwZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvcG9tLnhtbAorKysgYi9ncmVtbGluLWRvdG5ldC9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWRvdG5ldDwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4uTmV0PC9uYW1lPgpAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLmdyb292eTwvZ3JvdXBJZD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyb292eS1hbGw8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4ke2dyb292eS52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxjbGFzc2lmaWVyPmluZHk8L2NsYXNzaWZpZXI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZT5wb208L3R5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+cnVudGltZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgICAgICAgICAgICAgPGRlcGVuZGVuY3k+CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQuVGVtcGxhdGUvR3JlbWxpbi5OZXQuVGVtcGxhdGUuY3Nwcm9qIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0LlRlbXBsYXRlL0dyZW1saW4uTmV0LlRlbXBsYXRlLmNzcHJvagppbmRleCBjNmZkMWU1Li42YWYxNjk0IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQuVGVtcGxhdGUvR3JlbWxpbi5OZXQuVGVtcGxhdGUuY3Nwcm9qCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC5UZW1wbGF0ZS9HcmVtbGluLk5ldC5UZW1wbGF0ZS5jc3Byb2oKQEAgLTI2LDcgKzI2LDcgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8IS0tIFdlIG5lZWQgYm90aCByZWZlcmVuY2UgZWxlbWVudHMgdW50aWwgdGhpcyBpcyByZXNvbHZlZDogaHR0cHM6Ly9naXRodWIuY29tL2RvdG5ldC9zZGsvaXNzdWVzLzExNTEgLS0+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi4vR3JlbWxpbi5OZXQvR3JlbWxpbi5OZXQuY3Nwcm9qIiAvPgotICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9IkdyZW1saW4uTmV0IiBWZXJzaW9uPSIzLjMuMTEtU05BUFNIT1QiIC8+CisgICAgPFBhY2thZ2VSZWZlcmVuY2UgSW5jbHVkZT0iR3JlbWxpbi5OZXQiIFZlcnNpb249IjMuNC43LVNOQVBTSE9UIiAvPgogICA8L0l0ZW1Hcm91cD4KIAogPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0LlRlbXBsYXRlL0dyZW1saW4uTmV0LlRlbXBsYXRlLm51c3BlYyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC5UZW1wbGF0ZS9HcmVtbGluLk5ldC5UZW1wbGF0ZS5udXNwZWMKaW5kZXggOWEzMTYzMC4uNjhhZTI4MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0LlRlbXBsYXRlL0dyZW1saW4uTmV0LlRlbXBsYXRlLm51c3BlYworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQuVGVtcGxhdGUvR3JlbWxpbi5OZXQuVGVtcGxhdGUubnVzcGVjCkBAIC0zLDcgKzMsNyBAQAogICAgIDxtZXRhZGF0YT4KICAgICAgICAgPGlkPkdyZW1saW4uTmV0LlRlbXBsYXRlPC9pZD4KICAgICAgICAgPHRpdGxlPkdyZW1saW4uTmV0IFRlbXBsYXRlPC90aXRsZT4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICAgICAgPGRlc2NyaXB0aW9uPkdyZW1saW4uTmV0IHRlbXBsYXRlIHRvIGNyZWF0ZSBhIGNvbnNvbGUgYXBwbGljYXRpb24gd2l0aCBkb3RuZXQgbmV3LjwvZGVzY3JpcHRpb24+CiAgICAgICAgIDxhdXRob3JzPkFwYWNoZSBUaW5rZXJQb3A8L2F1dGhvcnM+CiAgICAgICAgIDxsaWNlbnNlIHR5cGU9ImV4cHJlc3Npb24iPkFwYWNoZS0yLjA8L2xpY2Vuc2U+CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb24uY3MKaW5kZXggZjE0MmNlNS4uNzQzNmMzZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db25uZWN0aW9uLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29ubmVjdGlvbi5jcwpAQCAtMjIsMTcgKzIyLDI2IEBACiAjZW5kcmVnaW9uCiAKIHVzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5Db25jdXJyZW50OwogdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CiB1c2luZyBTeXN0ZW0uTmV0LldlYlNvY2tldHM7CiB1c2luZyBTeXN0ZW0uVGV4dDsKK3VzaW5nIFN5c3RlbS5UaHJlYWRpbmc7CiB1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwogdXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLk1lc3NhZ2VzOwotdXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLlJlc3VsdHNBZ2dyZWdhdGlvbjsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3M7CiB1c2luZyBHcmVtbGluLk5ldC5TdHJ1Y3R1cmUuSU8uR3JhcGhTT047CiB1c2luZyBOZXd0b25zb2Z0Lkpzb24uTGlucTsKIAogbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlcgogeworICAgIGludGVybmFsIGludGVyZmFjZSBJUmVzcG9uc2VIYW5kbGVyRm9yU2luZ2xlUmVxdWVzdE1lc3NhZ2UKKyAgICB7CisgICAgICAgIHZvaWQgSGFuZGxlUmVjZWl2ZWQoUmVzcG9uc2VNZXNzYWdlPEpUb2tlbj4gcmVjZWl2ZWQpOworICAgICAgICB2b2lkIEZpbmFsaXplKERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMpOworICAgICAgICB2b2lkIEhhbmRsZUZhaWx1cmUoRXhjZXB0aW9uIG9iakV4Y2VwdGlvbik7CisgICAgfQorCiAgICAgaW50ZXJuYWwgY2xhc3MgQ29ubmVjdGlvbiA6IElDb25uZWN0aW9uCiAgICAgewogICAgICAgICBwcml2YXRlIHJlYWRvbmx5IEdyYXBoU09OUmVhZGVyIF9ncmFwaFNPTlJlYWRlcjsKQEAgLTQ0LDYgKzUzLDEzIEBACiAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nIF9wYXNzd29yZDsKICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgX3Nlc3Npb25JZDsKICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBib29sIF9zZXNzaW9uRW5hYmxlZDsKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBDb25jdXJyZW50UXVldWU8UmVxdWVzdE1lc3NhZ2U+IF93cml0ZVF1ZXVlID0gbmV3IENvbmN1cnJlbnRRdWV1ZTxSZXF1ZXN0TWVzc2FnZT4oKTsKKworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IENvbmN1cnJlbnREaWN0aW9uYXJ5PEd1aWQsIElSZXNwb25zZUhhbmRsZXJGb3JTaW5nbGVSZXF1ZXN0TWVzc2FnZT4gX2NhbGxiYWNrQnlSZXF1ZXN0SWQgPQorICAgICAgICAgICAgbmV3IENvbmN1cnJlbnREaWN0aW9uYXJ5PEd1aWQsIElSZXNwb25zZUhhbmRsZXJGb3JTaW5nbGVSZXF1ZXN0TWVzc2FnZT4oKTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgX2Nvbm5lY3Rpb25TdGF0ZSA9IDA7CisgICAgICAgIHByaXZhdGUgaW50IF93cml0ZUluUHJvZ3Jlc3MgPSAwOworICAgICAgICBwcml2YXRlIGNvbnN0IGludCBDbG9zZWQgPSAxOwogCiAgICAgICAgIHB1YmxpYyBDb25uZWN0aW9uKFVyaSB1cmksIHN0cmluZyB1c2VybmFtZSwgc3RyaW5nIHBhc3N3b3JkLCBHcmFwaFNPTlJlYWRlciBncmFwaFNPTlJlYWRlciwKICAgICAgICAgICAgIEdyYXBoU09OV3JpdGVyIGdyYXBoU09OV3JpdGVyLCBzdHJpbmcgbWltZVR5cGUsCkBAIC02MywzNiArNzksMTY5IEBACiAgICAgICAgICAgICBfd2ViU29ja2V0Q29ubmVjdGlvbiA9IG5ldyBXZWJTb2NrZXRDb25uZWN0aW9uKHdlYlNvY2tldENvbmZpZ3VyYXRpb24pOwogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIGFzeW5jIFRhc2s8SVJlYWRPbmx5Q29sbGVjdGlvbjxUPj4gU3VibWl0QXN5bmM8VD4oUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF3YWl0IFNlbmRBc3luYyhyZXF1ZXN0TWVzc2FnZSkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGF3YWl0IFJlY2VpdmVBc3luYzxUPigpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKLSAgICAgICAgfQotCiAgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrIENvbm5lY3RBc3luYygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGF3YWl0IF93ZWJTb2NrZXRDb25uZWN0aW9uLkNvbm5lY3RBc3luYyhfdXJpKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICBCZWdpblJlY2VpdmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgQ2xvc2VBc3luYygpCisgICAgICAgIHB1YmxpYyBpbnQgTnJSZXF1ZXN0c0luRmxpZ2h0ID0+IF9jYWxsYmFja0J5UmVxdWVzdElkLkNvdW50OworCisgICAgICAgIHB1YmxpYyBib29sIElzT3BlbiA9PiBfd2ViU29ja2V0Q29ubmVjdGlvbi5Jc09wZW4gJiYgVm9sYXRpbGUuUmVhZChyZWYgX2Nvbm5lY3Rpb25TdGF0ZSkgIT0gQ2xvc2VkOworCisgICAgICAgIHB1YmxpYyBUYXNrPFJlc3VsdFNldDxUPj4gU3VibWl0QXN5bmM8VD4oUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChfc2Vzc2lvbkVuYWJsZWQpCisgICAgICAgICAgICB2YXIgcmVjZWl2ZXIgPSBuZXcgUmVzcG9uc2VIYW5kbGVyRm9yU2luZ2xlUmVxdWVzdE1lc3NhZ2U8VD4oX2dyYXBoU09OUmVhZGVyKTsKKyAgICAgICAgICAgIF9jYWxsYmFja0J5UmVxdWVzdElkLkdldE9yQWRkKHJlcXVlc3RNZXNzYWdlLlJlcXVlc3RJZCwgcmVjZWl2ZXIpOworICAgICAgICAgICAgX3dyaXRlUXVldWUuRW5xdWV1ZShyZXF1ZXN0TWVzc2FnZSk7CisgICAgICAgICAgICBCZWdpblNlbmRpbmdNZXNzYWdlcygpOworICAgICAgICAgICAgcmV0dXJuIHJlY2VpdmVyLlJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBCZWdpblJlY2VpdmluZygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzdGF0ZSA9IFZvbGF0aWxlLlJlYWQocmVmIF9jb25uZWN0aW9uU3RhdGUpOworICAgICAgICAgICAgaWYgKHN0YXRlID09IENsb3NlZCkgcmV0dXJuOworICAgICAgICAgICAgUmVjZWl2ZU1lc3NhZ2VzQXN5bmMoKS5Gb3JnZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBSZWNlaXZlTWVzc2FnZXNBc3luYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGF3YWl0IENsb3NlU2Vzc2lvbigpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHZhciByZWNlaXZlZCA9IGF3YWl0IF93ZWJTb2NrZXRDb25uZWN0aW9uLlJlY2VpdmVNZXNzYWdlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIFBhcnNlKHJlY2VpdmVkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgQ2xvc2VDb25uZWN0aW9uQmVjYXVzZU9mRmFpbHVyZUFzeW5jKGUpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXdhaXQgX3dlYlNvY2tldENvbm5lY3Rpb24uQ2xvc2VBc3luYygpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKICAgICAgICAgfQogCi0gICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBDbG9zZVNlc3Npb24oKQorICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2UoYnl0ZVtdIHJlY2VpdmVkKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbXNnID0gUmVxdWVzdE1lc3NhZ2UuQnVpbGQoVG9rZW5zLk9wc0Nsb3NlKS5Qcm9jZXNzb3IoVG9rZW5zLlByb2Nlc3NvclNlc3Npb24pLkNyZWF0ZSgpOworICAgICAgICAgICAgdmFyIHJlY2VpdmVkTXNnID0gX21lc3NhZ2VTZXJpYWxpemVyLkRlc2VyaWFsaXplTWVzc2FnZTxSZXNwb25zZU1lc3NhZ2U8SlRva2VuPj4ocmVjZWl2ZWQpOworICAgICAgICAgICAgaWYgKHJlY2VpdmVkTXNnID09IG51bGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVGhyb3dNZXNzYWdlRGVzZXJpYWxpemVkTnVsbCgpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhd2FpdCBTZW5kQXN5bmMobXNnKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUcnlQYXJzZVJlc3BvbnNlTWVzc2FnZShyZWNlaXZlZE1zZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKF9jYWxsYmFja0J5UmVxdWVzdElkLlRyeVJlbW92ZShyZWNlaXZlZE1zZy5SZXF1ZXN0SWQsIG91dCB2YXIgcmVzcG9uc2VIYW5kbGVyKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlSGFuZGxlcj8uSGFuZGxlRmFpbHVyZShlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBwdWJsaWMgYm9vbCBJc09wZW4gPT4gX3dlYlNvY2tldENvbm5lY3Rpb24uSXNPcGVuOworICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFRocm93TWVzc2FnZURlc2VyaWFsaXplZE51bGwoKSA9PgorICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlJlY2VpdmVkIGRhdGEgZGVzZXJpYWxpemVkIGludG8gbnVsbCBvYmplY3QgbWVzc2FnZS4gQ2Fubm90IG9wZXJhdGUgb24gaXQuIik7CiAKLSAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIFNlbmRBc3luYyhSZXF1ZXN0TWVzc2FnZSBtZXNzYWdlKQorICAgICAgICBwcml2YXRlIHZvaWQgVHJ5UGFyc2VSZXNwb25zZU1lc3NhZ2UoUmVzcG9uc2VNZXNzYWdlPEpUb2tlbj4gcmVjZWl2ZWRNc2cpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzdGF0dXMgPSByZWNlaXZlZE1zZy5TdGF0dXM7CisgICAgICAgICAgICBzdGF0dXMuVGhyb3dJZlN0YXR1c0luZGljYXRlc0Vycm9yKCk7CisKKyAgICAgICAgICAgIGlmIChzdGF0dXMuQ29kZSA9PSBSZXNwb25zZVN0YXR1c0NvZGUuQXV0aGVudGljYXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0ZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0YXR1cy5Db2RlICE9IFJlc3BvbnNlU3RhdHVzQ29kZS5Ob0NvbnRlbnQpCisgICAgICAgICAgICAgICAgX2NhbGxiYWNrQnlSZXF1ZXN0SWRbcmVjZWl2ZWRNc2cuUmVxdWVzdElkXS5IYW5kbGVSZWNlaXZlZChyZWNlaXZlZE1zZyk7CisKKyAgICAgICAgICAgIGlmIChzdGF0dXMuQ29kZSA9PSBSZXNwb25zZVN0YXR1c0NvZGUuU3VjY2VzcyB8fCBzdGF0dXMuQ29kZSA9PSBSZXNwb25zZVN0YXR1c0NvZGUuTm9Db250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9jYWxsYmFja0J5UmVxdWVzdElkW3JlY2VpdmVkTXNnLlJlcXVlc3RJZF0uRmluYWxpemUoc3RhdHVzLkF0dHJpYnV0ZXMpOworICAgICAgICAgICAgICAgIF9jYWxsYmFja0J5UmVxdWVzdElkLlRyeVJlbW92ZShyZWNlaXZlZE1zZy5SZXF1ZXN0SWQsIG91dCBfKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBBdXRoZW50aWNhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoX3VzZXJuYW1lKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShfcGFzc3dvcmQpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAkIlRoZSBHcmVtbGluIFNlcnZlciByZXF1aXJlcyBhdXRoZW50aWNhdGlvbiwgYnV0IG5vIGNyZWRlbnRpYWxzIGFyZSBzcGVjaWZpZWQgLSB1c2VybmFtZToge191c2VybmFtZX0sIHBhc3N3b3JkOiB7X3Bhc3N3b3JkfS4iKTsKKworICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBSZXF1ZXN0TWVzc2FnZS5CdWlsZChUb2tlbnMuT3BzQXV0aGVudGljYXRpb24pLlByb2Nlc3NvcihUb2tlbnMuUHJvY2Vzc29yVHJhdmVyc2FsKQorICAgICAgICAgICAgICAgIC5BZGRBcmd1bWVudChUb2tlbnMuQXJnc1Nhc2wsIFNhc2xBcmd1bWVudCgpKS5DcmVhdGUoKTsKKworICAgICAgICAgICAgX3dyaXRlUXVldWUuRW5xdWV1ZShtZXNzYWdlKTsKKyAgICAgICAgICAgIEJlZ2luU2VuZGluZ01lc3NhZ2VzKCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHN0cmluZyBTYXNsQXJndW1lbnQoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYXV0aCA9ICQiXDB7X3VzZXJuYW1lfVwwe19wYXNzd29yZH0iOworICAgICAgICAgICAgdmFyIGF1dGhCeXRlcyA9IEVuY29kaW5nLlVURjguR2V0Qnl0ZXMoYXV0aCk7CisgICAgICAgICAgICByZXR1cm4gQ29udmVydC5Ub0Jhc2U2NFN0cmluZyhhdXRoQnl0ZXMpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIEJlZ2luU2VuZGluZ01lc3NhZ2VzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKEludGVybG9ja2VkLkNvbXBhcmVFeGNoYW5nZShyZWYgX3dyaXRlSW5Qcm9ncmVzcywgMSwgMCkgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBTZW5kTWVzc2FnZXNGcm9tUXVldWVBc3luYygpLkZvcmdldCgpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIFNlbmRNZXNzYWdlc0Zyb21RdWV1ZUFzeW5jKCkKKyAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKF93cml0ZVF1ZXVlLlRyeURlcXVldWUob3V0IHZhciBtc2cpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgU2VuZE1lc3NhZ2VBc3luYyhtc2cpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgQ2xvc2VDb25uZWN0aW9uQmVjYXVzZU9mRmFpbHVyZUFzeW5jKGUpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgSW50ZXJsb2NrZWQuQ29tcGFyZUV4Y2hhbmdlKHJlZiBfd3JpdGVJblByb2dyZXNzLCAwLCAxKTsKKworICAgICAgICAgICAgLy8gU2luY2UgdGhlIGxvb3AgZW5kZWQgYW5kIHRoZSB3cml0ZSBpbiBwcm9ncmVzcyB3YXMgc2V0IHRvIDAKKyAgICAgICAgICAgIC8vIGEgbmV3IGl0ZW0gY291bGQgaGF2ZSBiZWVuIGFkZGVkLCB3cml0ZSBxdWV1ZSBjYW4gY29udGFpbiBpdGVtcyBhdCB0aGlzIHRpbWUKKyAgICAgICAgICAgIGlmICghX3dyaXRlUXVldWUuSXNFbXB0eSAmJiBJbnRlcmxvY2tlZC5Db21wYXJlRXhjaGFuZ2UocmVmIF93cml0ZUluUHJvZ3Jlc3MsIDEsIDApID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXdhaXQgU2VuZE1lc3NhZ2VzRnJvbVF1ZXVlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgQ2xvc2VDb25uZWN0aW9uQmVjYXVzZU9mRmFpbHVyZUFzeW5jKEV4Y2VwdGlvbiBleGNlcHRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIEVtcHR5V3JpdGVRdWV1ZSgpOworICAgICAgICAgICAgYXdhaXQgQ2xvc2VBc3luYygpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgIE5vdGlmeUFib3V0Q29ubmVjdGlvbkZhaWx1cmUoZXhjZXB0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBFbXB0eVdyaXRlUXVldWUoKQorICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAoX3dyaXRlUXVldWUuVHJ5RGVxdWV1ZShvdXQgXykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgTm90aWZ5QWJvdXRDb25uZWN0aW9uRmFpbHVyZShFeGNlcHRpb24gZXhjZXB0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBmb3JlYWNoICh2YXIgY2IgaW4gX2NhbGxiYWNrQnlSZXF1ZXN0SWQuVmFsdWVzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNiLkhhbmRsZUZhaWx1cmUoZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9jYWxsYmFja0J5UmVxdWVzdElkLkNsZWFyKCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgU2VuZE1lc3NhZ2VBc3luYyhSZXF1ZXN0TWVzc2FnZSBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoX3Nlc3Npb25FbmFibGVkKQogICAgICAgICAgICAgewpAQCAtMTIwLDcxICsyNjksMjMgQEAKICAgICAgICAgICAgIHJldHVybiBtc2dCdWlsZGVyLkNyZWF0ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrPElSZWFkT25seUNvbGxlY3Rpb248VD4+IFJlY2VpdmVBc3luYzxUPigpCisgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrIENsb3NlQXN5bmMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBSZXNwb25zZVN0YXR1cyBzdGF0dXM7Ci0gICAgICAgICAgICBJQWdncmVnYXRvciBhZ2dyZWdhdG9yID0gbnVsbDsKLSAgICAgICAgICAgIHZhciBpc0FnZ3JlZ2F0aW5nU2lkZUVmZmVjdHMgPSBmYWxzZTsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGlzdDxUPigpOwotICAgICAgICAgICAgZG8KKyAgICAgICAgICAgIEludGVybG9ja2VkLkV4Y2hhbmdlKHJlZiBfY29ubmVjdGlvblN0YXRlLCBDbG9zZWQpOworCisgICAgICAgICAgICBpZiAoX3Nlc3Npb25FbmFibGVkKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciByZWNlaXZlZCA9IGF3YWl0IF93ZWJTb2NrZXRDb25uZWN0aW9uLlJlY2VpdmVNZXNzYWdlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgdmFyIHJlY2VpdmVkTXNnID0gX21lc3NhZ2VTZXJpYWxpemVyLkRlc2VyaWFsaXplTWVzc2FnZTxSZXNwb25zZU1lc3NhZ2U8SlRva2VuPj4ocmVjZWl2ZWQpOwotCi0gICAgICAgICAgICAgICAgc3RhdHVzID0gcmVjZWl2ZWRNc2cuU3RhdHVzOwotICAgICAgICAgICAgICAgIHN0YXR1cy5UaHJvd0lmU3RhdHVzSW5kaWNhdGVzRXJyb3IoKTsKLQotICAgICAgICAgICAgICAgIGlmIChzdGF0dXMuQ29kZSA9PSBSZXNwb25zZVN0YXR1c0NvZGUuQXV0aGVudGljYXRlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgQXV0aGVudGljYXRlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cy5Db2RlICE9IFJlc3BvbnNlU3RhdHVzQ29kZS5Ob0NvbnRlbnQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB2YXIgcmVjZWl2ZWREYXRhID0gdHlwZW9mKFQpID09IHR5cGVvZihKVG9rZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICA/IG5ld1tdIHsgcmVjZWl2ZWRNc2cuUmVzdWx0LkRhdGEgfQotICAgICAgICAgICAgICAgICAgICAgICAgOiBfZ3JhcGhTT05SZWFkZXIuVG9PYmplY3QocmVjZWl2ZWRNc2cuUmVzdWx0LkRhdGEpOwotCi0gICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBkIGluIHJlY2VpdmVkRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDYxMiw2MTgKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlZE1zZy5SZXN1bHQuTWV0YS5Db250YWluc0tleShUb2tlbnMuQXJnc1NpZGVFZmZlY3RLZXkpKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdhdG9yID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0b3IgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFnZ3JlZ2F0b3JGYWN0b3J5KCkuR2V0QWdncmVnYXRvckZvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nKSByZWNlaXZlZE1zZy5SZXN1bHQuTWV0YVtUb2tlbnMuQXJnc0FnZ3JlZ2F0ZVRvXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRvci5BZGQoZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBZ2dyZWdhdGluZ1NpZGVFZmZlY3RzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuQWRkKGQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgNjEyLDYxOAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gd2hpbGUgKHN0YXR1cy5Db2RlID09IFJlc3BvbnNlU3RhdHVzQ29kZS5QYXJ0aWFsQ29udGVudCB8fCBzdGF0dXMuQ29kZSA9PSBSZXNwb25zZVN0YXR1c0NvZGUuQXV0aGVudGljYXRlKTsKLQotICAgICAgICAgICAgaWYgKGlzQWdncmVnYXRpbmdTaWRlRWZmZWN0cykKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IExpc3Q8VD4geyhUKSBhZ2dyZWdhdG9yLkdldEFnZ3JlZ2F0ZWRSZXN1bHQoKX07Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGF3YWl0IENsb3NlU2Vzc2lvbigpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF3YWl0IF93ZWJTb2NrZXRDb25uZWN0aW9uLkNsb3NlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgQXV0aGVudGljYXRlQXN5bmMoKQorICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgQ2xvc2VTZXNzaW9uKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KF91c2VybmFtZSkgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoX3Bhc3N3b3JkKSkKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJCJUaGUgR3JlbWxpbiBTZXJ2ZXIgcmVxdWlyZXMgYXV0aGVudGljYXRpb24sIGJ1dCBubyBjcmVkZW50aWFscyBhcmUgc3BlY2lmaWVkIC0gdXNlcm5hbWU6IHtfdXNlcm5hbWV9LCBwYXNzd29yZDoge19wYXNzd29yZH0uIik7CisgICAgICAgICAgICAvLyBidWlsZCBhIHJlcXVlc3QgdG8gY2xvc2UgdGhpcyBzZXNzaW9uCisgICAgICAgICAgICB2YXIgbXNnID0gUmVxdWVzdE1lc3NhZ2UuQnVpbGQoVG9rZW5zLk9wc0Nsb3NlKS5Qcm9jZXNzb3IoVG9rZW5zLlByb2Nlc3NvclNlc3Npb24pLkNyZWF0ZSgpOwogCi0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IFJlcXVlc3RNZXNzYWdlLkJ1aWxkKFRva2Vucy5PcHNBdXRoZW50aWNhdGlvbikuUHJvY2Vzc29yKFRva2Vucy5Qcm9jZXNzb3JUcmF2ZXJzYWwpCi0gICAgICAgICAgICAgICAgLkFkZEFyZ3VtZW50KFRva2Vucy5BcmdzU2FzbCwgU2FzbEFyZ3VtZW50KCkpLkNyZWF0ZSgpOwotCi0gICAgICAgICAgICBhd2FpdCBTZW5kQXN5bmMobWVzc2FnZSkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZSBzdHJpbmcgU2FzbEFyZ3VtZW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGF1dGggPSAkIlwwe191c2VybmFtZX1cMHtfcGFzc3dvcmR9IjsKLSAgICAgICAgICAgIHZhciBhdXRoQnl0ZXMgPSBFbmNvZGluZy5VVEY4LkdldEJ5dGVzKGF1dGgpOwotICAgICAgICAgICAgcmV0dXJuIENvbnZlcnQuVG9CYXNlNjRTdHJpbmcoYXV0aEJ5dGVzKTsKKyAgICAgICAgICAgIGF3YWl0IFNlbmRNZXNzYWdlQXN5bmMobXNnKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICAjcmVnaW9uIElEaXNwb3NhYmxlIFN1cHBvcnQKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29ubmVjdGlvblBvb2wuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sLmNzCmluZGV4IGQ5ZTUzZjQuLjM0YmM3N2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29ubmVjdGlvblBvb2wuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db25uZWN0aW9uUG9vbC5jcwpAQCAtMjIsMTAyICsyMiwxNjYgQEAKICNlbmRyZWdpb24KIAogdXNpbmcgU3lzdGVtOwotdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkNvbmN1cnJlbnQ7Ci11c2luZyBTeXN0ZW0uTGlucTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLlRocmVhZGluZzsKIHVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXIuRXhjZXB0aW9uczsKIHVzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3M7CiAKIG5hbWVzcGFjZSBHcmVtbGluLk5ldC5Ecml2ZXIKIHsKICAgICBpbnRlcm5hbCBjbGFzcyBDb25uZWN0aW9uUG9vbCA6IElEaXNwb3NhYmxlCiAgICAgeworICAgICAgICBwcml2YXRlIGNvbnN0IGludCBDb25uZWN0aW9uSW5kZXhPdmVyZmxvd0xpbWl0ID0gaW50Lk1heFZhbHVlIC0gMTAwMDAwMDsKKyAgICAgICAgCiAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgQ29ubmVjdGlvbkZhY3RvcnkgX2Nvbm5lY3Rpb25GYWN0b3J5OwotICAgICAgICBwcml2YXRlIHJlYWRvbmx5IENvbmN1cnJlbnRCYWc8Q29ubmVjdGlvbj4gX2Nvbm5lY3Rpb25zID0gbmV3IENvbmN1cnJlbnRCYWc8Q29ubmVjdGlvbj4oKTsKLSAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvYmplY3QgX2Nvbm5lY3Rpb25zTG9jayA9IG5ldyBvYmplY3QoKTsKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBDb3B5T25Xcml0ZUNvbGxlY3Rpb248Q29ubmVjdGlvbj4gX2Nvbm5lY3Rpb25zID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxDb25uZWN0aW9uPigpOworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludCBfcG9vbFNpemU7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50IF9tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uOworICAgICAgICBwcml2YXRlIGludCBfY29ubmVjdGlvbkluZGV4OworICAgICAgICBwcml2YXRlIGludCBfcG9vbFN0YXRlOworICAgICAgICBwcml2YXRlIGNvbnN0IGludCBQb29sSWRsZSA9IDA7CisgICAgICAgIHByaXZhdGUgY29uc3QgaW50IFBvb2xQb3B1bGF0aW9uSW5Qcm9ncmVzcyA9IDE7CiAKLSAgICAgICAgcHVibGljIENvbm5lY3Rpb25Qb29sKENvbm5lY3Rpb25GYWN0b3J5IGNvbm5lY3Rpb25GYWN0b3J5KQorICAgICAgICBwdWJsaWMgQ29ubmVjdGlvblBvb2woQ29ubmVjdGlvbkZhY3RvcnkgY29ubmVjdGlvbkZhY3RvcnksIENvbm5lY3Rpb25Qb29sU2V0dGluZ3Mgc2V0dGluZ3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIF9jb25uZWN0aW9uRmFjdG9yeSA9IGNvbm5lY3Rpb25GYWN0b3J5OworICAgICAgICAgICAgX3Bvb2xTaXplID0gc2V0dGluZ3MuUG9vbFNpemU7CisgICAgICAgICAgICBfbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiA9IHNldHRpbmdzLk1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb247CisgICAgICAgICAgICBQb3B1bGF0ZVBvb2xBc3luYygpLldhaXRVbndyYXAoKTsKICAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgTnJDb25uZWN0aW9ucyB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBpbnQgTnJDb25uZWN0aW9ucyA9PiBfY29ubmVjdGlvbnMuQ291bnQ7CiAKICAgICAgICAgcHVibGljIGFzeW5jIFRhc2s8SUNvbm5lY3Rpb24+IEdldEF2YWlsYWJsZUNvbm5lY3Rpb25Bc3luYygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghVHJ5R2V0Q29ubmVjdGlvbkZyb21Qb29sKG91dCB2YXIgY29ubmVjdGlvbikpCi0gICAgICAgICAgICAgICAgY29ubmVjdGlvbiA9IGF3YWl0IENyZWF0ZU5ld0Nvbm5lY3Rpb25Bc3luYygpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKLQotICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm94eUNvbm5lY3Rpb24oY29ubmVjdGlvbiwgQWRkQ29ubmVjdGlvbklmT3Blbik7CisgICAgICAgICAgICBhd2FpdCBFbnN1cmVQb29sSXNQb3B1bGF0ZWRBc3luYygpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBQcm94aWVkQ29ubmVjdGlvbihHZXRDb25uZWN0aW9uRnJvbVBvb2woKSk7CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIGJvb2wgVHJ5R2V0Q29ubmVjdGlvbkZyb21Qb29sKG91dCBDb25uZWN0aW9uIGNvbm5lY3Rpb24pCisgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBFbnN1cmVQb29sSXNQb3B1bGF0ZWRBc3luYygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKQorICAgICAgICAgICAgLy8gVGhlIHBvb2wgY291bGQgaGF2ZSBiZWVuIChwYXJ0aWFsbHkpIGVtcHR5IGJlY2F1c2Ugb2YgY29ubmVjdGlvbiBwcm9ibGVtcy4gU28sIHdlIG5lZWQgdG8gcG9wdWxhdGUgaXQgYWdhaW4uCisgICAgICAgICAgICBpZiAoX3Bvb2xTaXplIDw9IE5yQ29ubmVjdGlvbnMpIHJldHVybjsKKyAgICAgICAgICAgIHZhciBwb29sU3RhdGUgPSBJbnRlcmxvY2tlZC5Db21wYXJlRXhjaGFuZ2UocmVmIF9wb29sU3RhdGUsIFBvb2xQb3B1bGF0aW9uSW5Qcm9ncmVzcywgUG9vbElkbGUpOworICAgICAgICAgICAgaWYgKHBvb2xTdGF0ZSA9PSBQb29sUG9wdWxhdGlvbkluUHJvZ3Jlc3MpIHJldHVybjsKKyAgICAgICAgICAgIHRyeQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBudWxsOwotICAgICAgICAgICAgICAgIGxvY2sgKF9jb25uZWN0aW9uc0xvY2spCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoX2Nvbm5lY3Rpb25zLklzRW1wdHkpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgX2Nvbm5lY3Rpb25zLlRyeVRha2Uob3V0IGNvbm5lY3Rpb24pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uLklzT3BlbikgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5EaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgYXdhaXQgUG9wdWxhdGVQb29sQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5hbGx5CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgdGhlIFBvb2xQb3B1bGF0aW9uSW5Qcm9ncmVzcyBmbGFnIGFnYWluIGV2ZW4gaWYgYW4gZXhjZXB0aW9uIG9jY3VycmVkLCBzbyB3ZSBkb24ndCBibG9jayB0aGUgcG9vbCBwb3B1bGF0aW9uIGZvciBldmVyCisgICAgICAgICAgICAgICAgSW50ZXJsb2NrZWQuQ29tcGFyZUV4Y2hhbmdlKHJlZiBfcG9vbFN0YXRlLCBQb29sSWRsZSwgUG9vbFBvcHVsYXRpb25JblByb2dyZXNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgUG9wdWxhdGVQb29sQXN5bmMoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbnJDb25uZWN0aW9uc1RvQ3JlYXRlID0gX3Bvb2xTaXplIC0gX2Nvbm5lY3Rpb25zLkNvdW50OworICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb25DcmVhdGlvblRhc2tzID0gbmV3IExpc3Q8VGFzazxDb25uZWN0aW9uPj4obnJDb25uZWN0aW9uc1RvQ3JlYXRlKTsKKyAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnJDb25uZWN0aW9uc1RvQ3JlYXRlOyBpKyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uQ3JlYXRpb25UYXNrcy5BZGQoQ3JlYXRlTmV3Q29ubmVjdGlvbkFzeW5jKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgY3JlYXRlZENvbm5lY3Rpb25zID0gYXdhaXQgVGFzay5XaGVuQWxsKGNvbm5lY3Rpb25DcmVhdGlvblRhc2tzKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICAgICAgX2Nvbm5lY3Rpb25zLkFkZFJhbmdlKGNyZWF0ZWRDb25uZWN0aW9ucyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaChFeGNlcHRpb24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gRGlzcG9zZSBjcmVhdGVkIGNvbm5lY3Rpb25zIGlmIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgZmFpbGVkCisgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGNyZWF0aW9uVGFzayBpbiBjb25uZWN0aW9uQ3JlYXRpb25UYXNrcykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY3JlYXRpb25UYXNrLklzRmF1bHRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uVGFzay5SZXN1bHQ/LkRpc3Bvc2UoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhyb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzazxDb25uZWN0aW9uPiBDcmVhdGVOZXdDb25uZWN0aW9uQXN5bmMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBOckNvbm5lY3Rpb25zKys7CiAgICAgICAgICAgICB2YXIgbmV3Q29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICBhd2FpdCBuZXdDb25uZWN0aW9uLkNvbm5lY3RBc3luYygpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBuZXdDb25uZWN0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSB2b2lkIEFkZENvbm5lY3Rpb25JZk9wZW4oQ29ubmVjdGlvbiBjb25uZWN0aW9uKQorICAgICAgICBwcml2YXRlIENvbm5lY3Rpb24gR2V0Q29ubmVjdGlvbkZyb21Qb29sKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFjb25uZWN0aW9uLklzT3BlbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25zaWRlclVuYXZhaWxhYmxlKCk7Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5EaXNwb3NlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQWRkQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHZhciBjb25uZWN0aW9ucyA9IF9jb25uZWN0aW9ucy5TbmFwc2hvdDsKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9ucy5MZW5ndGggPT0gMCkgdGhyb3cgbmV3IFNlcnZlclVuYXZhaWxhYmxlRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gVHJ5R2V0QXZhaWxhYmxlQ29ubmVjdGlvbihjb25uZWN0aW9ucyk7CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIHZvaWQgQWRkQ29ubmVjdGlvbihDb25uZWN0aW9uIGNvbm5lY3Rpb24pCisgICAgICAgIHByaXZhdGUgQ29ubmVjdGlvbiBUcnlHZXRBdmFpbGFibGVDb25uZWN0aW9uKENvbm5lY3Rpb25bXSBjb25uZWN0aW9ucykKICAgICAgICAgewotICAgICAgICAgICAgbG9jayAoX2Nvbm5lY3Rpb25zTG9jaykKKyAgICAgICAgICAgIHZhciBpbmRleCA9IEludGVybG9ja2VkLkluY3JlbWVudChyZWYgX2Nvbm5lY3Rpb25JbmRleCk7CisgICAgICAgICAgICBQcm90ZWN0SW5kZXhGcm9tT3ZlcmZsb3dpbmcoaW5kZXgpOworCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbm5lY3Rpb25zLkxlbmd0aDsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIF9jb25uZWN0aW9ucy5BZGQoY29ubmVjdGlvbik7CisgICAgICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uc1soaW5kZXggKyBpKSAlIGNvbm5lY3Rpb25zLkxlbmd0aF07CisgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24uTnJSZXF1ZXN0c0luRmxpZ2h0ID49IF9tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb24uSXNPcGVuKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlQ29ubmVjdGlvbkZyb21Qb29sKGNvbm5lY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb247CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9ucy5MZW5ndGggPiAwKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29ubmVjdGlvblBvb2xCdXN5RXhjZXB0aW9uKF9wb29sU2l6ZSwgX21heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZXJ2ZXJVbmF2YWlsYWJsZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIFByb3RlY3RJbmRleEZyb21PdmVyZmxvd2luZyhpbnQgY3VycmVudEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID4gQ29ubmVjdGlvbkluZGV4T3ZlcmZsb3dMaW1pdCkKKyAgICAgICAgICAgICAgICBJbnRlcmxvY2tlZC5FeGNoYW5nZShyZWYgX2Nvbm5lY3Rpb25JbmRleCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgUmVtb3ZlQ29ubmVjdGlvbkZyb21Qb29sKENvbm5lY3Rpb24gY29ubmVjdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKF9jb25uZWN0aW9ucy5UcnlSZW1vdmUoY29ubmVjdGlvbikpCisgICAgICAgICAgICAgICAgRGVmaW5pdGVseURlc3Ryb3lDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcml2YXRlIElDb25uZWN0aW9uIFByb3hpZWRDb25uZWN0aW9uKENvbm5lY3Rpb24gY29ubmVjdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm94eUNvbm5lY3Rpb24oY29ubmVjdGlvbiwgUmV0dXJuQ29ubmVjdGlvbklmT3Blbik7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgUmV0dXJuQ29ubmVjdGlvbklmT3BlbihDb25uZWN0aW9uIGNvbm5lY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uLklzT3BlbikgcmV0dXJuOworICAgICAgICAgICAgQ29uc2lkZXJVbmF2YWlsYWJsZSgpOwogICAgICAgICB9CiAKICAgICAgICAgcHJpdmF0ZSB2b2lkIENvbnNpZGVyVW5hdmFpbGFibGUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBDbG9zZUFuZFJlbW92ZUFsbENvbm5lY3Rpb25zKCk7CisgICAgICAgICAgICBDbG9zZUFuZFJlbW92ZUFsbENvbm5lY3Rpb25zQXN5bmMoKS5XYWl0VW53cmFwKCk7CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIHZvaWQgQ2xvc2VBbmRSZW1vdmVBbGxDb25uZWN0aW9ucygpCisgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBDbG9zZUFuZFJlbW92ZUFsbENvbm5lY3Rpb25zQXN5bmMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBsb2NrIChfY29ubmVjdGlvbnNMb2NrKQorICAgICAgICAgICAgZm9yZWFjaCAodmFyIGNvbm5lY3Rpb24gaW4gX2Nvbm5lY3Rpb25zLlJlbW92ZUFuZEdldEFsbCgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRlYXJkb3duQXN5bmMoKS5XYWl0VW53cmFwKCk7Ci0gICAgICAgICAgICAgICAgUmVtb3ZlQWxsQ29ubmVjdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLkNsb3NlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICAgICAgRGVmaW5pdGVseURlc3Ryb3lDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSB2b2lkIFJlbW92ZUFsbENvbm5lY3Rpb25zKCkKKyAgICAgICAgcHJpdmF0ZSB2b2lkIERlZmluaXRlbHlEZXN0cm95Q29ubmVjdGlvbihDb25uZWN0aW9uIGNvbm5lY3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlIChfY29ubmVjdGlvbnMuVHJ5VGFrZShvdXQgdmFyIGNvbm5lY3Rpb24pKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uRGlzcG9zZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIFRlYXJkb3duQXN5bmMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBhd2FpdCBUYXNrLldoZW5BbGwoX2Nvbm5lY3Rpb25zLlNlbGVjdChjID0+IGMuQ2xvc2VBc3luYygpKSkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgY29ubmVjdGlvbi5EaXNwb3NlKCk7CiAgICAgICAgIH0KIAogICAgICAgICAjcmVnaW9uIElEaXNwb3NhYmxlIFN1cHBvcnQKQEAgLTEzNSwxMCArMTk5LDExIEBACiAgICAgICAgICAgICBpZiAoIV9kaXNwb3NlZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoZGlzcG9zaW5nKQotICAgICAgICAgICAgICAgICAgICBDbG9zZUFuZFJlbW92ZUFsbENvbm5lY3Rpb25zKCk7CisgICAgICAgICAgICAgICAgICAgIENsb3NlQW5kUmVtb3ZlQWxsQ29ubmVjdGlvbnNBc3luYygpLldhaXRVbndyYXAoKTsKICAgICAgICAgICAgICAgICBfZGlzcG9zZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgI2VuZHJlZ2lvbgogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sU2V0dGluZ3MuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sU2V0dGluZ3MuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNkZWUwYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29ubmVjdGlvblBvb2xTZXR0aW5ncy5jcwpAQCAtMCwwICsxLDc1IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5FeGNlcHRpb25zOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuRHJpdmVyCit7CisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgSG9sZHMgc2V0dGluZ3MgZm9yIHRoZSA8c2VlIGNyZWY9IkNvbm5lY3Rpb25Qb29sIi8+LgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGNsYXNzIENvbm5lY3Rpb25Qb29sU2V0dGluZ3MKKyAgICB7CisgICAgICAgIHByaXZhdGUgaW50IF9wb29sU2l6ZSA9IERlZmF1bHRQb29sU2l6ZTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgX21heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gPSBEZWZhdWx0TWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbjsKKyAgICAgICAgcHJpdmF0ZSBjb25zdCBpbnQgRGVmYXVsdFBvb2xTaXplID0gNDsKKyAgICAgICAgcHJpdmF0ZSBjb25zdCBpbnQgRGVmYXVsdE1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gPSAzMjsKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgR2V0cyBvciBzZXRzIHRoZSBzaXplIG9mIHRoZSBjb25uZWN0aW9uIHBvb2wuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIC8vLyA8cmVtYXJrcz4KKyAgICAgICAgLy8vICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA0LgorICAgICAgICAvLy8gPC9yZW1hcmtzPgorICAgICAgICBwdWJsaWMgaW50IFBvb2xTaXplCisgICAgICAgIHsKKyAgICAgICAgICAgIGdldCA9PiBfcG9vbFNpemU7CisgICAgICAgICAgICBzZXQKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbihuYW1lb2YoUG9vbFNpemUpLCAiUG9vbFNpemUgbXVzdCBiZSA+IDAhIik7CisgICAgICAgICAgICAgICAgX3Bvb2xTaXplID0gdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgR2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW4tZmxpZ2h0IHJlcXVlc3RzIHRoYXQgY2FuIG9jY3VyIG9uIGEgY29ubmVjdGlvbi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgLy8vIDxyZW1hcmtzPgorICAgICAgICAvLy8gICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDMyLiBBIDxzZWUgY3JlZj0iTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uIiAvPiBpcyB0aHJvd24gaWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIG9uCisgICAgICAgIC8vLyAgICAgYWxsIGNvbm5lY3Rpb25zIHdoZW4gYSBuZXcgcmVxdWVzdCBjb21lcyBpbi4KKyAgICAgICAgLy8vIDwvcmVtYXJrcz4KKyAgICAgICAgcHVibGljIGludCBNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uCisgICAgICAgIHsKKyAgICAgICAgICAgIGdldCA9PiBfbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNldAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8PSAwKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRPdXRPZlJhbmdlRXhjZXB0aW9uKG5hbWVvZihNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uIG11c3QgYmUgPiAwISIpOworICAgICAgICAgICAgICAgIF9tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uID0gdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db3B5T25Xcml0ZUNvbGxlY3Rpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0NvcHlPbldyaXRlQ29sbGVjdGlvbi5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDA5MjdlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db3B5T25Xcml0ZUNvbGxlY3Rpb24uY3MKQEAgLTAsMCArMSw4NSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Ecml2ZXIKK3sKKyAgICBpbnRlcm5hbCBjbGFzcyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248VD4KKyAgICB7CisgICAgICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRbXSBFbXB0eUFycmF5ID0gbmV3IFRbMF07CisgICAgICAgIAorICAgICAgICBwcml2YXRlIHZvbGF0aWxlIFRbXSBfYXJyYXkgPSBFbXB0eUFycmF5OworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9iamVjdCBfd3JpdGVMb2NrID0gbmV3IG9iamVjdCgpOworCisgICAgICAgIHB1YmxpYyBpbnQgQ291bnQgPT4gX2FycmF5Lkxlbmd0aDsKKworICAgICAgICBwdWJsaWMgdm9pZCBBZGRSYW5nZShUW10gaXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpdGVtcyA9PSBudWxsIHx8IGl0ZW1zLkxlbmd0aCA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGxvY2sgKF93cml0ZUxvY2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG5ld0FycmF5ID0gbmV3IFRbX2FycmF5Lkxlbmd0aCArIGl0ZW1zLkxlbmd0aF07CisgICAgICAgICAgICAgICAgX2FycmF5LkNvcHlUbyhuZXdBcnJheSwgMCk7CisgICAgICAgICAgICAgICAgQXJyYXkuQ29weShpdGVtcywgMCwgbmV3QXJyYXksIF9hcnJheS5MZW5ndGgsIGl0ZW1zLkxlbmd0aCk7CisgICAgICAgICAgICAgICAgX2FycmF5ID0gbmV3QXJyYXk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbCBUcnlSZW1vdmUoVCBpdGVtKQorICAgICAgICB7CisgICAgICAgICAgICBsb2NrIChfd3JpdGVMb2NrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IEFycmF5LkluZGV4T2YoX2FycmF5LCBpdGVtKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKF9hcnJheS5MZW5ndGggPT0gMSAmJiBpbmRleCA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgX2FycmF5ID0gRW1wdHlBcnJheTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIG5ld0FycmF5ID0gbmV3IFRbX2FycmF5Lkxlbmd0aCAtIDFdOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgQXJyYXkuQ29weShfYXJyYXksIDAsIG5ld0FycmF5LCAwLCBpbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgX2FycmF5Lkxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgIEFycmF5LkNvcHkoX2FycmF5LCBpbmRleCArIDEsIG5ld0FycmF5LCBpbmRleCwgX2FycmF5Lkxlbmd0aCAtIGluZGV4IC0gMSk7CisgICAgICAgICAgICAgICAgX2FycmF5ID0gbmV3QXJyYXk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVFtdIFJlbW92ZUFuZEdldEFsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvY2sgKF93cml0ZUxvY2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG9sZCA9IF9hcnJheTsKKyAgICAgICAgICAgICAgICBfYXJyYXkgPSBFbXB0eUFycmF5OworICAgICAgICAgICAgICAgIHJldHVybiBvbGQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVFtdIFNuYXBzaG90ID0+IF9hcnJheTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9FeGNlcHRpb25zL0Nvbm5lY3Rpb25Qb29sQnVzeUV4Y2VwdGlvbi5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9Db25uZWN0aW9uUG9vbEJ1c3lFeGNlcHRpb24uY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNkNDBmZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9Db25uZWN0aW9uUG9vbEJ1c3lFeGNlcHRpb24uY3MKQEAgLTAsMCArMSw2MCBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuRHJpdmVyLkV4Y2VwdGlvbnMKK3sKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vICAgICBUaGUgZXhjZXB0aW9uIHRoYXQgaXMgdGhyb3duIHdoZW4gYWxsIGNvbm5lY3Rpb25zIGluIHRoZSBwb29sIGhhdmUgcmVhY2hlZCB0aGVpciBtYXhpbXVtIG51bWJlciBvZiBpbi1mbGlnaHQKKyAgICAvLy8gICAgIHJlcXVlc3RzLgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGNsYXNzIENvbm5lY3Rpb25Qb29sQnVzeUV4Y2VwdGlvbiA6IE5vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEdldHMgdGhlIHNpemUgb2YgdGhlIGNvbm5lY3Rpb24gcG9vbC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIGludCBQb29sU2l6ZSB7IGdldDsgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBHZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbi1mbGlnaHQgcmVxdWVzdHMgdGhhdCBjYW4gb2NjdXIgb24gYSBjb25uZWN0aW9uLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgaW50IE1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24geyBnZXQ7IH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQ29ubmVjdGlvblBvb2xCdXN5RXhjZXB0aW9uIiAvPiBjbGFzcy4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIENvbm5lY3Rpb25Qb29sQnVzeUV4Y2VwdGlvbihpbnQgcG9vbFNpemUsIGludCBtYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKQorICAgICAgICAgICAgOiBiYXNlKENyZWF0ZU1lc3NhZ2UocG9vbFNpemUsIG1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24pKQorICAgICAgICB7CisgICAgICAgICAgICBQb29sU2l6ZSA9IHBvb2xTaXplOworICAgICAgICAgICAgTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiA9IG1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb247CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgQ3JlYXRlTWVzc2FnZShpbnQgcG9vbFNpemUsIGludCBtYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gJCJBbGwge3Bvb2xTaXplfSBjb25uZWN0aW9ucyBoYXZlIHJlYWNoZWQgdGhlaXIgIiArCisgICAgICAgICAgICAgICAgICAgJCJ7bmFtZW9mKENvbm5lY3Rpb25Qb29sU2V0dGluZ3MuTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbil9IGxpbWl0IG9mIHttYXhJblByb2Nlc3NQZXJDb25uZWN0aW9ufS4iICsKKyAgICAgICAgICAgICAgICAgICAkIiBDb25zaWRlciBpbmNyZWFzaW5nIGVpdGhlciB0aGUge25hbWVvZihDb25uZWN0aW9uUG9vbFNldHRpbmdzLlBvb2xTaXplKX0gb3IgdGhlICIgKworICAgICAgICAgICAgICAgICAgICQie25hbWVvZihDb25uZWN0aW9uUG9vbFNldHRpbmdzLk1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24pfSBsaW1pdC4iOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9Ob0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MjQzNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uLmNzCkBAIC0wLDAgKzEsNTYgQEAKK++7vyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuRHJpdmVyLkV4Y2VwdGlvbnMKK3sKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vICAgICBUaGUgZXhjZXB0aW9uIHRoYXQgaXMgdGhyb3duIHdoZW4gbm8gY29ubmVjdGlvbiBpcyBhdmFpbGFibGUgdG8gc2VydmljZSBhIHJlcXVlc3QuCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBwdWJsaWMgY2xhc3MgTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uIDogRXhjZXB0aW9uCisgICAgeworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uIiAvPiBjbGFzcy4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIE5vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb24iIC8+IGNsYXNzLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uKHN0cmluZyBtZXNzYWdlKQorICAgICAgICAgICAgOiBiYXNlKG1lc3NhZ2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb24iIC8+IGNsYXNzLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uKHN0cmluZyBtZXNzYWdlLCBFeGNlcHRpb24gaW5uZXIpCisgICAgICAgICAgICA6IGJhc2UobWVzc2FnZSwgaW5uZXIpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvUmVzcG9uc2VFeGNlcHRpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvUmVzcG9uc2VFeGNlcHRpb24uY3MKaW5kZXggOGQyNjEwNi4uNTlhYzFhYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9FeGNlcHRpb25zL1Jlc3BvbnNlRXhjZXB0aW9uLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9SZXNwb25zZUV4Y2VwdGlvbi5jcwpAQCAtMjIsNiArMjIsOCBAQAogI2VuZHJlZ2lvbgogCiB1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5NZXNzYWdlczsKIAogbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlci5FeGNlcHRpb25zCiB7CkBAIC0zMyw5ICszNSwyNSBAQAogICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVzcG9uc2VFeGNlcHRpb24iIC8+IGNsYXNzLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1c0NvZGUiPlRoZSBzdGF0dXMgY29kZSByZXR1cm5lZCBieSB0aGUgc2VydmVyLjwvcGFyYW0+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhdHVzQXR0cmlidXRlcyI+VGhlIHN0YXR1cyBhdHRyaWJ1dGVzIGZyb20gdGhlIGdyZW1saW4gcmVzcG9uc2UuPC9wYXJhbT4KICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj5UaGUgZXJyb3IgbWVzc2FnZSBzdHJpbmcuPC9wYXJhbT4KLSAgICAgICAgcHVibGljIFJlc3BvbnNlRXhjZXB0aW9uKHN0cmluZyBtZXNzYWdlKSA6IGJhc2UobWVzc2FnZSkKKyAgICAgICAgcHVibGljIFJlc3BvbnNlRXhjZXB0aW9uKFJlc3BvbnNlU3RhdHVzQ29kZSBzdGF0dXNDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVJlYWRPbmx5RGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gc3RhdHVzQXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBtZXNzYWdlKSA6IGJhc2UobWVzc2FnZSkKICAgICAgICAgeworICAgICAgICAgICAgU3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7CisgICAgICAgICAgICBTdGF0dXNBdHRyaWJ1dGVzID0gc3RhdHVzQXR0cmlidXRlczsKICAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBHZXRzIHRoZSBzdGF0dXMgY29kZSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBSZXNwb25zZVN0YXR1c0NvZGUgU3RhdHVzQ29kZSB7IGdldDsgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBHZXRzIHRoZSBzdGF0dXMgYXR0cmlidXRlcyBmcm9tIHRoZSBncmVtbGluIHJlc3BvbnNlCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBJUmVhZE9ubHlEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBTdGF0dXNBdHRyaWJ1dGVzIHsgZ2V0OyB9CiAgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9TZXJ2ZXJVbmF2YWlsYWJsZUV4Y2VwdGlvbi5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9TZXJ2ZXJVbmF2YWlsYWJsZUV4Y2VwdGlvbi5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGI0NjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9FeGNlcHRpb25zL1NlcnZlclVuYXZhaWxhYmxlRXhjZXB0aW9uLmNzCkBAIC0wLDAgKzEsNDUgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlci5FeGNlcHRpb25zCit7CisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgVGhlIGV4Y2VwdGlvbiB0aGF0IGlzIHRocm93biB3aGVuIG5vIGNvbm5lY3Rpb24gaXMgYXZhaWxhYmxlIHRvIHRoZSA8c2VlIGNyZWY9IkdyZW1saW5TZXJ2ZXIiLz4uCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBwdWJsaWMgY2xhc3MgU2VydmVyVW5hdmFpbGFibGVFeGNlcHRpb24gOiBOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTZXJ2ZXJVbmF2YWlsYWJsZUV4Y2VwdGlvbiIgLz4gY2xhc3MuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBTZXJ2ZXJVbmF2YWlsYWJsZUV4Y2VwdGlvbigpCisgICAgICAgICAgICA6IGJhc2UoQ3JlYXRlTWVzc2FnZSgpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgQ3JlYXRlTWVzc2FnZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICJObyBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgYXZhaWxhYmxlIHdoaWNoIG1vc3QgbGlrZWx5IG1lYW5zIHRoYXQgdGhlIHNlcnZlciBpcyBjb21wbGV0ZWx5IHVuYXZhaWxhYmxlLiI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9HcmVtbGluQ2xpZW50LmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9HcmVtbGluQ2xpZW50LmNzCmluZGV4IGM3ZTkzNjUuLjI2MmI0ODkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvR3JlbWxpbkNsaWVudC5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0dyZW1saW5DbGllbnQuY3MKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJncmFwaFNPTlJlYWRlciI+QSA8c2VlIGNyZWY9IkdyYXBoU09OUmVhZGVyIiAvPiBpbnN0YW5jZSB0byByZWFkIHJlY2VpdmVkIEdyYXBoU09OIGRhdGEuPC9wYXJhbT4KICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJncmFwaFNPTldyaXRlciI+YSA8c2VlIGNyZWY9IkdyYXBoU09OV3JpdGVyIiAvPiBpbnN0YW5jZSB0byB3cml0ZSBHcmFwaFNPTiBkYXRhLjwvcGFyYW0+CiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibWltZVR5cGUiPlRoZSBHcmFwaFNPTiB2ZXJzaW9uIG1pbWUgdHlwZSwgZGVmYXVsdHMgdG8gbGF0ZXN0IHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLjwvcGFyYW0+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY29ubmVjdGlvblBvb2xTZXR0aW5ncyI+VGhlIDxzZWUgY3JlZj0iQ29ubmVjdGlvblBvb2xTZXR0aW5ncyIvPiBmb3IgdGhlIGNvbm5lY3Rpb24gcG9vbC48L3BhcmFtPgogICAgICAgICAvLy8gPHBhcmFtIG5hbWU9IndlYlNvY2tldENvbmZpZ3VyYXRpb24iPgogICAgICAgICAvLy8gICAgIEEgZGVsZWdhdGUgdGhhdCB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgPHNlZSBjcmVmPSJDbGllbnRXZWJTb2NrZXRPcHRpb25zIiAvPgogICAgICAgICAvLy8gICAgIG9iamVjdCB1c2VkIHRvIGNvbmZpZ3VyZSBXZWJTb2NrZXQgY29ubmVjdGlvbnMuCkBAIC02MSwxMyArNjIsMzAgQEAKICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzZXNzaW9uSWQiPlRoZSBzZXNzaW9uIElkIGlmIEdyZW1saW4gQ2xpZW50IGluIHNlc3Npb24gbW9kZSwgZGVmYXVsdHMgdG8gbnVsbCBhcyBzZXNzaW9uLWxlc3MgQ2xpZW50LjwvcGFyYW0+CiAgICAgICAgIHB1YmxpYyBHcmVtbGluQ2xpZW50KEdyZW1saW5TZXJ2ZXIgZ3JlbWxpblNlcnZlciwgR3JhcGhTT05SZWFkZXIgZ3JhcGhTT05SZWFkZXIgPSBudWxsLAogICAgICAgICAgICAgR3JhcGhTT05Xcml0ZXIgZ3JhcGhTT05Xcml0ZXIgPSBudWxsLCBzdHJpbmcgbWltZVR5cGUgPSBudWxsLAorICAgICAgICAgICAgQ29ubmVjdGlvblBvb2xTZXR0aW5ncyBjb25uZWN0aW9uUG9vbFNldHRpbmdzID0gbnVsbCwKICAgICAgICAgICAgIEFjdGlvbjxDbGllbnRXZWJTb2NrZXRPcHRpb25zPiB3ZWJTb2NrZXRDb25maWd1cmF0aW9uID0gbnVsbCwgc3RyaW5nIHNlc3Npb25JZCA9IG51bGwpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciByZWFkZXIgPSBncmFwaFNPTlJlYWRlciA/PyBuZXcgR3JhcGhTT04zUmVhZGVyKCk7CiAgICAgICAgICAgICB2YXIgd3JpdGVyID0gZ3JhcGhTT05Xcml0ZXIgPz8gbmV3IEdyYXBoU09OM1dyaXRlcigpOwogICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb25GYWN0b3J5ID0gbmV3IENvbm5lY3Rpb25GYWN0b3J5KGdyZW1saW5TZXJ2ZXIsIHJlYWRlciwgd3JpdGVyLCBtaW1lVHlwZSA/PyBEZWZhdWx0TWltZVR5cGUsCiAgICAgICAgICAgICAgICAgd2ViU29ja2V0Q29uZmlndXJhdGlvbiwgc2Vzc2lvbklkKTsKLSAgICAgICAgICAgIF9jb25uZWN0aW9uUG9vbCA9IG5ldyBDb25uZWN0aW9uUG9vbChjb25uZWN0aW9uRmFjdG9yeSk7CisKKyAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBvbmUgY29ubmVjdGlvbiBpbiBwb29sIGFzIHNlc3Npb24gbW9kZQorICAgICAgICAgICAgaWYgKCFTdHJpbmcuSXNOdWxsT3JFbXB0eShzZXNzaW9uSWQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uUG9vbFNldHRpbmdzICE9IG51bGwpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblBvb2xTZXR0aW5ncy5Qb29sU2l6ZSAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbihuYW1lb2YoY29ubmVjdGlvblBvb2xTZXR0aW5ncyksICJQb29sU2l6ZSBtdXN0IGJlIDEgaW4gc2Vzc2lvbiBtb2RlISIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uUG9vbFNldHRpbmdzID0gbmV3IENvbm5lY3Rpb25Qb29sU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvblBvb2xTZXR0aW5ncy5Qb29sU2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgX2Nvbm5lY3Rpb25Qb29sID0KKyAgICAgICAgICAgICAgICBuZXcgQ29ubmVjdGlvblBvb2woY29ubmVjdGlvbkZhY3RvcnksIGNvbm5lY3Rpb25Qb29sU2V0dGluZ3MgPz8gbmV3IENvbm5lY3Rpb25Qb29sU2V0dGluZ3MoKSk7ICAgICAgICAgICAgCiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CkBAIC03Niw3ICs5NCw3IEBACiAgICAgICAgIHB1YmxpYyBpbnQgTnJDb25uZWN0aW9ucyA9PiBfY29ubmVjdGlvblBvb2wuTnJDb25uZWN0aW9uczsKIAogICAgICAgICAvLy8gPGluaGVyaXRkb2MgLz4KLSAgICAgICAgcHVibGljIGFzeW5jIFRhc2s8SVJlYWRPbmx5Q29sbGVjdGlvbjxUPj4gU3VibWl0QXN5bmM8VD4oUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UpCisgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPFJlc3VsdFNldDxUPj4gU3VibWl0QXN5bmM8VD4oUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVzaW5nICh2YXIgY29ubmVjdGlvbiA9IGF3YWl0IF9jb25uZWN0aW9uUG9vbC5HZXRBdmFpbGFibGVDb25uZWN0aW9uQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSkpCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0dyZW1saW5DbGllbnRFeHRlbnNpb25zLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9HcmVtbGluQ2xpZW50RXh0ZW5zaW9ucy5jcwppbmRleCA0YWFkNzNlLi4xYjE4MjQxIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0dyZW1saW5DbGllbnRFeHRlbnNpb25zLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvR3JlbWxpbkNsaWVudEV4dGVuc2lvbnMuY3MKQEAgLTEyMSwxMiArMTIxLDEyIEBACiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZ3JlbWxpbkNsaWVudCI+VGhlIDxzZWUgY3JlZj0iSUdyZW1saW5DbGllbnQiIC8+IHRoYXQgc3VibWl0cyB0aGUgcmVxdWVzdC48L3BhcmFtPgogICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJlcXVlc3RTY3JpcHQiPlRoZSBHcmVtbGluIHJlcXVlc3Qgc2NyaXB0IHRvIHNlbmQuPC9wYXJhbT4KICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJiaW5kaW5ncyI+QmluZGluZ3MgZm9yIHBhcmFtZXRlcnMgdXNlZCBpbiB0aGUgcmVxdWVzdFNjcmlwdC48L3BhcmFtPgotICAgICAgICAvLy8gPHJldHVybnM+QSBjb2xsZWN0aW9uIG9mIHRoZSBkYXRhIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci48L3JldHVybnM+CisgICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iUmVzdWx0U2V0e1R9Ii8+IGNvbnRhaW5pbmcgdGhlIGRhdGEgYW5kIHN0YXR1cyBhdHRyaWJ1dGVzIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci48L3JldHVybnM+CiAgICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkV4Y2VwdGlvbnMuUmVzcG9uc2VFeGNlcHRpb24iPgogICAgICAgICAvLy8gICAgIFRocm93biB3aGVuIGEgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgZnJvbSBHcmVtbGluIFNlcnZlciB0aGF0IGluZGljYXRlcwogICAgICAgICAvLy8gICAgIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KLSAgICAgICAgcHVibGljIHN0YXRpYyBhc3luYyBUYXNrPElSZWFkT25seUNvbGxlY3Rpb248VD4+IFN1Ym1pdEFzeW5jPFQ+KHRoaXMgSUdyZW1saW5DbGllbnQgZ3JlbWxpbkNsaWVudCwKKyAgICAgICAgcHVibGljIHN0YXRpYyBhc3luYyBUYXNrPFJlc3VsdFNldDxUPj4gU3VibWl0QXN5bmM8VD4odGhpcyBJR3JlbWxpbkNsaWVudCBncmVtbGluQ2xpZW50LAogICAgICAgICAgICAgc3RyaW5nIHJlcXVlc3RTY3JpcHQsCiAgICAgICAgICAgICBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBiaW5kaW5ncyA9IG51bGwpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvSUNvbm5lY3Rpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0lDb25uZWN0aW9uLmNzCmluZGV4IGUxNjUxYTYuLmI1ZWY1MmMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvSUNvbm5lY3Rpb24uY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9JQ29ubmVjdGlvbi5jcwpAQCAtMzAsNiArMzAsNiBAQAogewogICAgIGludGVybmFsIGludGVyZmFjZSBJQ29ubmVjdGlvbiA6IElEaXNwb3NhYmxlCiAgICAgewotICAgICAgICBUYXNrPElSZWFkT25seUNvbGxlY3Rpb248VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKTsKKyAgICAgICAgVGFzazxSZXN1bHRTZXQ8VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKTsKICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9JR3JlbWxpbkNsaWVudC5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvSUdyZW1saW5DbGllbnQuY3MKaW5kZXggN2E3MDQ4YS4uOWJlZjRiZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9JR3JlbWxpbkNsaWVudC5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0lHcmVtbGluQ2xpZW50LmNzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgLy8vIDx0eXBlcGFyYW0gbmFtZT0iVCI+VGhlIHR5cGUgb2YgdGhlIGV4cGVjdGVkIHJlc3VsdHMuPC90eXBlcGFyYW0+CiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVxdWVzdE1lc3NhZ2UiPlRoZSA8c2VlIGNyZWY9IlJlcXVlc3RNZXNzYWdlIiAvPiB0byBzZW5kLjwvcGFyYW0+Ci0gICAgICAgIC8vLyA8cmV0dXJucz5BIGNvbGxlY3Rpb24gb2YgdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyLjwvcmV0dXJucz4KKyAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJSZXN1bHRTZXR7VH0iLz4gY29udGFpbmluZyB0aGUgZGF0YSBhbmQgc3RhdHVzIGF0dHJpYnV0ZXMgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyLjwvcmV0dXJucz4KICAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iRXhjZXB0aW9ucy5SZXNwb25zZUV4Y2VwdGlvbiI+CiAgICAgICAgIC8vLyAgICAgVGhyb3duIHdoZW4gYSByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIEdyZW1saW4gU2VydmVyIHRoYXQgaW5kaWNhdGVzCiAgICAgICAgIC8vLyAgICAgdGhhdCBhbiBlcnJvciBvY2N1cnJlZC4KICAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgotICAgICAgICBUYXNrPElSZWFkT25seUNvbGxlY3Rpb248VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKTsKKyAgICAgICAgVGFzazxSZXN1bHRTZXQ8VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKTsKICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9NZXNzYWdlcy9SZXNwb25zZVN0YXR1cy5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvTWVzc2FnZXMvUmVzcG9uc2VTdGF0dXMuY3MKaW5kZXggZTNjMTc5Ny4uYWEwYjFiNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9NZXNzYWdlcy9SZXNwb25zZVN0YXR1cy5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL01lc3NhZ2VzL1Jlc3BvbnNlU3RhdHVzLmNzCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBUaHJvd0lmU3RhdHVzSW5kaWNhdGVzRXJyb3IodGhpcyBSZXNwb25zZVN0YXR1cyBzdGF0dXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdGF0dXMuQ29kZS5JbmRpY2F0ZXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXNwb25zZUV4Y2VwdGlvbigkIntzdGF0dXMuQ29kZX06IHtzdGF0dXMuTWVzc2FnZX0iKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVzcG9uc2VFeGNlcHRpb24oc3RhdHVzLkNvZGUsIHN0YXR1cy5BdHRyaWJ1dGVzLCAkIntzdGF0dXMuQ29kZX06IHtzdGF0dXMuTWVzc2FnZX0iKTsKICAgICAgICAgfQogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL01lc3NhZ2VzL1Jlc3BvbnNlU3RhdHVzQ29kZS5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvTWVzc2FnZXMvUmVzcG9uc2VTdGF0dXNDb2RlLmNzCmluZGV4IDU1OGU0ZjYuLjc4Zjg3NTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvTWVzc2FnZXMvUmVzcG9uc2VTdGF0dXNDb2RlLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvTWVzc2FnZXMvUmVzcG9uc2VTdGF0dXNDb2RlLmNzCkBAIC0yNSwxOCArMjUsNzQgQEAKIAogbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlci5NZXNzYWdlcwogewotICAgIGludGVybmFsIGVudW0gUmVzcG9uc2VTdGF0dXNDb2RlCisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgUmVwcmVzZW50cyB0aGUgdmFyaW91cyBzdGF0dXMgY29kZXMgdGhhdCBHcmVtbGluIFNlcnZlciByZXR1cm5zLgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGVudW0gUmVzcG9uc2VTdGF0dXNDb2RlCiAgICAgeworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgVGhlIHNlcnZlciBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIGEgcmVxdWVzdCB0byBjb21wbGV0aW9uIC0gdGhlcmUgYXJlIG5vIG1lc3NhZ2VzIHJlbWFpbmluZyBpbiB0aGlzCisgICAgICAgIC8vLyAgICAgc3RyZWFtLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBTdWNjZXNzID0gMjAwLAorICAgICAgICAKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSBzZXJ2ZXIgcHJvY2Vzc2VkIHRoZSByZXF1ZXN0IGJ1dCB0aGVyZSBpcyBubyByZXN1bHQgdG8gcmV0dXJuIChlLmcuIGFuIEl0ZXJhdG9yIHdpdGggbm8gZWxlbWVudHMpCisgICAgICAgIC8vLyAgICAgLSB0aGVyZSBhcmUgbm8gbWVzc2FnZXMgcmVtYWluaW5nIGluIHRoaXMgc3RyZWFtLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBOb0NvbnRlbnQgPSAyMDQsCisgICAgICAgIAorICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgVGhlIHNlcnZlciBzdWNjZXNzZnVsbHkgcmV0dXJuZWQgc29tZSBjb250ZW50LCBidXQgdGhlcmUgaXMgbW9yZSBpbiB0aGUgc3RyZWFtIHRvIGFycml2ZSAtIHdhaXQgZm9yIGEKKyAgICAgICAgLy8vICAgICBTVUNDRVNTIHRvIHNpZ25pZnkgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBQYXJ0aWFsQ29udGVudCA9IDIwNiwKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgVGhlIHJlcXVlc3QgYXR0ZW1wdGVkIHRvIGFjY2VzcyByZXNvdXJjZXMgdGhhdCB0aGUgcmVxdWVzdGluZyB1c2VyIGRpZCBub3QgaGF2ZSBhY2Nlc3MgdG8uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIFVuYXV0aG9yaXplZCA9IDQwMSwKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQSBjaGFsbGVuZ2UgZnJvbSB0aGUgc2VydmVyIGZvciB0aGUgY2xpZW50IHRvIGF1dGhlbnRpY2F0ZSBpdHMgcmVxdWVzdC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgQXV0aGVudGljYXRlID0gNDA3LAorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBUaGUgcmVxdWVzdCBtZXNzYWdlIHdhcyBub3QgcHJvcGVybHkgZm9ybWF0dGVkIHdoaWNoIG1lYW5zIGl0IGNvdWxkIG5vdCBiZSBwYXJzZWQgYXQgYWxsIG9yIHRoZSAib3AiIGNvZGUKKyAgICAgICAgLy8vICAgICB3YXMgbm90IHJlY29nbml6ZWQgc3VjaCB0aGF0IEdyZW1saW4gU2VydmVyIGNvdWxkIHByb3Blcmx5IHJvdXRlIGl0IGZvciBwcm9jZXNzaW5nLiBDaGVjayB0aGUgbWVzc2FnZSBmb3JtYXQKKyAgICAgICAgLy8vICAgICBhbmQgcmV0cnkgdGhlIHJlcXVlc3QuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIE1hbGZvcm1lZFJlcXVlc3QgPSA0OTgsCisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSByZXF1ZXN0IG1lc3NhZ2Ugd2FzIHBhcnNlYWJsZSwgYnV0IHRoZSBhcmd1bWVudHMgc3VwcGxpZWQgaW4gdGhlIG1lc3NhZ2Ugd2VyZSBpbiBjb25mbGljdCBvciBpbmNvbXBsZXRlLgorICAgICAgICAvLy8gICAgIENoZWNrIHRoZSBtZXNzYWdlIGZvcm1hdCBhbmQgcmV0cnkgdGhlIHJlcXVlc3QuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIEludmFsaWRSZXF1ZXN0QXJndW1lbnRzID0gNDk5LAorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBBIGdlbmVyYWwgc2VydmVyIGVycm9yIG9jY3VycmVkIHRoYXQgcHJldmVudGVkIHRoZSByZXF1ZXN0IGZyb20gYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBTZXJ2ZXJFcnJvciA9IDUwMCwKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgVGhlIHNjcmlwdCBzdWJtaXR0ZWQgZm9yIHByb2Nlc3NpbmcgZXZhbHVhdGVkIGluIHRoZSBTY3JpcHRFbmdpbmUgd2l0aCBlcnJvcnMgYW5kIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisgICAgICAgIC8vLyAgICAgQ2hlY2sgdGhlIHNjcmlwdCBzdWJtaXR0ZWQgZm9yIHN5bnRheCBlcnJvcnMgb3Igb3RoZXIgcHJvYmxlbXMgYW5kIHRoZW4gcmVzdWJtaXQuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIFNjcmlwdEV2YWx1YXRpb25FcnJvciA9IDU5NywKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgVGhlIHNlcnZlciBleGNlZWRlZCBvbmUgb2YgdGhlIHRpbWVvdXQgc2V0dGluZ3MgZm9yIHRoZSByZXF1ZXN0IGFuZCBjb3VsZCB0aGVyZWZvcmUgb25seSBwYXJ0aWFsbHkgcmVzcG9uZGVkCisgICAgICAgIC8vLyAgICAgb3IgZGlkIG5vdCByZXNwb25kIGF0IGFsbC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgU2VydmVyVGltZW91dCA9IDU5OCwKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgVGhlIHNlcnZlciB3YXMgbm90IGNhcGFibGUgb2Ygc2VyaWFsaXppbmcgYW4gb2JqZWN0IHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIHNjcmlwdCBzdXBwbGllZCBvbiB0aGUgcmVxdWVzdC4KKyAgICAgICAgLy8vICAgICBFaXRoZXIgdHJhbnNmb3JtIHRoZSBvYmplY3QgaW50byBzb21ldGhpbmcgR3JlbWxpbiBTZXJ2ZXIgY2FuIHByb2Nlc3Mgd2l0aGluIHRoZSBzY3JpcHQgb3IgaW5zdGFsbCBtYXBwZXIKKyAgICAgICAgLy8vICAgICBzZXJpYWxpemF0aW9uIGNsYXNzZXMgdG8gR3JlbWxpbiBTZXJ2ZXIuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIFNlcnZlclNlcmlhbGl6YXRpb25FcnJvciA9IDU5OQogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Qcm94eUNvbm5lY3Rpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Byb3h5Q29ubmVjdGlvbi5jcwppbmRleCBjYmUxNWVjLi5mZWY2ZWRlIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Byb3h5Q29ubmVjdGlvbi5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Byb3h5Q29ubmVjdGlvbi5jcwpAQCAtMzksNyArMzksNyBAQAogICAgICAgICAgICAgX3JlbGVhc2VBY3Rpb24gPSByZWxlYXNlQWN0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIGFzeW5jIFRhc2s8SVJlYWRPbmx5Q29sbGVjdGlvbjxUPj4gU3VibWl0QXN5bmM8VD4oUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UpCisgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPFJlc3VsdFNldDxUPj4gU3VibWl0QXN5bmM8VD4oUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhd2FpdCBfcmVhbENvbm5lY3Rpb24uU3VibWl0QXN5bmM8VD4ocmVxdWVzdE1lc3NhZ2UpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9SZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvUmVtb3RlL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24uY3MKaW5kZXggOGNiZDQzZC4uYTUyY2I4NyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9SZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1JlbW90ZS9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uLmNzCkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nIF90cmF2ZXJzYWxTb3VyY2U7CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgotICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IDxzZWUgY3JlZj0iSVJlbW90ZUNvbm5lY3Rpb24iIC8+LgorICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IDxzZWUgY3JlZj0iSVJlbW90ZUNvbm5lY3Rpb24iIC8+IHVzaW5nICJnIiBhcyB0aGUgZGVmYXVsdCByZW1vdGUgVHJhdmVyc2FsU291cmNlIG5hbWUuCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY2xpZW50Ij5UaGUgPHNlZSBjcmVmPSJJR3JlbWxpbkNsaWVudCIgLz4gdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBjb25uZWN0aW9uLjwvcGFyYW0+CiAgICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gY2xpZW50IGlzIG51bGwuPC9leGNlcHRpb24+CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Jlc3VsdFNldC5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvUmVzdWx0U2V0LmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTg2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Jlc3VsdFNldC5jcwpAQCAtMCwwICsxLDY5IEBACivvu78jcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuRHJpdmVyCit7CisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgQSBSZXN1bHRTZXQgaXMgcmV0dXJuZWQgZnJvbSB0aGUgc3VibWlzc2lvbiBvZiBhIEdyZW1saW4gc2NyaXB0IHRvIHRoZSBzZXJ2ZXIgYW5kIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMKKyAgICAvLy8gICAgIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIuIFJlc3VsdFNldCBpbmNsdWRlcyBlbnVtZXJhYmxlIGRhdGEgYW5kIHN0YXR1cyBhdHRyaWJ1dGVzLgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgLy8vIDx0eXBlcGFyYW0gbmFtZT0iVCI+VHlwZSBvZiB0aGUgcmVzdWx0IGVsZW1lbnRzPC90eXBlcGFyYW0+CisgICAgcHVibGljIHNlYWxlZCBjbGFzcyBSZXN1bHRTZXQ8VD4gOiBJUmVhZE9ubHlDb2xsZWN0aW9uPFQ+CisgICAgeworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IElSZWFkT25seUNvbGxlY3Rpb248VD4gX2RhdGE7CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEdldHMgb3Igc2V0cyB0aGUgc3RhdHVzIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZ3JlbWxpbiByZXNwb25zZQorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgSVJlYWRPbmx5RGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gU3RhdHVzQXR0cmlidXRlcyB7IGdldDsgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgUmVzdWx0U2V0IGNsYXNzIGZvciB0aGUgc3BlY2lmaWVkIGRhdGEgYW5kIHN0YXR1cyBhdHRyaWJ1dGVzLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImRhdGEiPjwvcGFyYW0+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYXR0cmlidXRlcyI+PC9wYXJhbT4KKyAgICAgICAgcHVibGljIFJlc3VsdFNldChJUmVhZE9ubHlDb2xsZWN0aW9uPFQ+IGRhdGEsIElSZWFkT25seURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IGF0dHJpYnV0ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9kYXRhID0gZGF0YTsKKyAgICAgICAgICAgIHRoaXMuU3RhdHVzQXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPGluaGVyaXRkb2MgLz4KKyAgICAgICAgcHVibGljIElFbnVtZXJhdG9yPFQ+IEdldEVudW1lcmF0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2RhdGEuR2V0RW51bWVyYXRvcigpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxpbmhlcml0ZG9jIC8+CisgICAgICAgIElFbnVtZXJhdG9yIElFbnVtZXJhYmxlLkdldEVudW1lcmF0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2RhdGEuR2V0RW51bWVyYXRvcigpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxpbmhlcml0ZG9jIC8+CisgICAgICAgIHB1YmxpYyBpbnQgQ291bnQgPT4gX2RhdGEuQ291bnQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9TaW5nbGVNZXNzYWdlUmVzdWx0UmVjZWl2ZXIuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1NpbmdsZU1lc3NhZ2VSZXN1bHRSZWNlaXZlci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjY2ZTYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9TaW5nbGVNZXNzYWdlUmVzdWx0UmVjZWl2ZXIuY3MKQEAgLTAsMCArMSw5MCBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXIuTWVzc2FnZXM7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXIuUmVzdWx0c0FnZ3JlZ2F0aW9uOwordXNpbmcgR3JlbWxpbi5OZXQuU3RydWN0dXJlLklPLkdyYXBoU09OOwordXNpbmcgTmV3dG9uc29mdC5Kc29uLkxpbnE7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Ecml2ZXIKK3sKKyAgICBpbnRlcm5hbCBjbGFzcyBSZXNwb25zZUhhbmRsZXJGb3JTaW5nbGVSZXF1ZXN0TWVzc2FnZTxUPiA6IElSZXNwb25zZUhhbmRsZXJGb3JTaW5nbGVSZXF1ZXN0TWVzc2FnZQorICAgIHsKKyAgICAgICAgcHVibGljIFRhc2s8UmVzdWx0U2V0PFQ+PiBSZXN1bHQgPT4gX3Rjcy5UYXNrOworCisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgVGFza0NvbXBsZXRpb25Tb3VyY2U8UmVzdWx0U2V0PFQ+PiBfdGNzID0KKyAgICAgICAgICAgIG5ldyBUYXNrQ29tcGxldGlvblNvdXJjZTxSZXN1bHRTZXQ8VD4+KFRhc2tDcmVhdGlvbk9wdGlvbnMuUnVuQ29udGludWF0aW9uc0FzeW5jaHJvbm91c2x5KTsKKworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IEdyYXBoU09OUmVhZGVyIF9ncmFwaFNPTlJlYWRlcjsKKyAgICAgICAgcHJpdmF0ZSBib29sIF9pc0FnZ3JlZ2F0aW5nU2lkZUVmZmVjdHM7CisgICAgICAgIHByaXZhdGUgSUFnZ3JlZ2F0b3IgX2FnZ3JlZ2F0b3I7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgTGlzdDxUPiBfcmVzdWx0ID0gbmV3IExpc3Q8VD4oKTsKKworICAgICAgICBwdWJsaWMgUmVzcG9uc2VIYW5kbGVyRm9yU2luZ2xlUmVxdWVzdE1lc3NhZ2UoR3JhcGhTT05SZWFkZXIgZ3JhcGhTb25SZWFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9ncmFwaFNPTlJlYWRlciA9IGdyYXBoU29uUmVhZGVyOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgSGFuZGxlUmVjZWl2ZWQoUmVzcG9uc2VNZXNzYWdlPEpUb2tlbj4gcmVjZWl2ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZWNlaXZlZERhdGEgPSB0eXBlb2YoVCkgPT0gdHlwZW9mKEpUb2tlbikKKyAgICAgICAgICAgICAgICA/IG5ld1tdIHtyZWNlaXZlZC5SZXN1bHQuRGF0YX0KKyAgICAgICAgICAgICAgICA6IF9ncmFwaFNPTlJlYWRlci5Ub09iamVjdChyZWNlaXZlZC5SZXN1bHQuRGF0YSk7CisgICAgICAgICAgICAjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSA2MTIsNjE4CisgICAgICAgICAgICBmb3JlYWNoICh2YXIgZCBpbiByZWNlaXZlZERhdGEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHJlY2VpdmVkLlJlc3VsdC5NZXRhLkNvbnRhaW5zS2V5KFRva2Vucy5BcmdzU2lkZUVmZmVjdEtleSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoX2FnZ3JlZ2F0b3IgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIF9hZ2dyZWdhdG9yID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQWdncmVnYXRvckZhY3RvcnkoKS5HZXRBZ2dyZWdhdG9yRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nKSByZWNlaXZlZC5SZXN1bHQuTWV0YVtUb2tlbnMuQXJnc0FnZ3JlZ2F0ZVRvXSk7CisgICAgICAgICAgICAgICAgICAgIF9hZ2dyZWdhdG9yLkFkZChkKTsKKyAgICAgICAgICAgICAgICAgICAgX2lzQWdncmVnYXRpbmdTaWRlRWZmZWN0cyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIF9yZXN1bHQuQWRkKGQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDYxMiw2MTgKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIEZpbmFsaXplKERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPQorICAgICAgICAgICAgICAgIG5ldyBSZXN1bHRTZXQ8VD4oCisgICAgICAgICAgICAgICAgICAgIF9pc0FnZ3JlZ2F0aW5nU2lkZUVmZmVjdHMgPyBuZXcgTGlzdDxUPiB7KFQpIF9hZ2dyZWdhdG9yLkdldEFnZ3JlZ2F0ZWRSZXN1bHQoKX0gOiBfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIF90Y3MuVHJ5U2V0UmVzdWx0KHJlc3VsdFNldCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBIYW5kbGVGYWlsdXJlKEV4Y2VwdGlvbiBvYmpFeGNlcHRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIF90Y3MuVHJ5U2V0RXhjZXB0aW9uKG9iakV4Y2VwdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Ub2tlbnMuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Rva2Vucy5jcwppbmRleCA0ZmNlODcyLi5hN2Y4MDRhIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Rva2Vucy5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Rva2Vucy5jcwpAQCAtOTYsNyArOTYsNyBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBBcmdzR3JlbWxpbiA9ICJncmVtbGluIjsKIAogICAgICAgICAvLy8gPHN1bW1hcnk+Ci0gICAgICAgIC8vLyAgICAgQXJndW1lbnQgbmFtZSB0aGF0IGFsbG93cyB0byBkZWZpbmVzIHRoZSBpZCBvZiBzZXNzaW9uLgorICAgICAgICAvLy8gICAgIEFyZ3VtZW50IG5hbWUgdGhhdCBhbGxvd3MgdG8gZGVmaW5lIHRoZSBpZCBvZiBzZXNzaW9uLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBBcmdzU2Vzc2lvbiA9ICJzZXNzaW9uIjsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0dyZW1saW4uTmV0LmNzcHJvaiBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9HcmVtbGluLk5ldC5jc3Byb2oKaW5kZXggNmMxZTE4ZS4uMzM5MmNhOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0dyZW1saW4uTmV0LmNzcHJvagorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvR3JlbWxpbi5OZXQuY3Nwcm9qCkBAIC0yNSw5ICsyNSw5IEBACiAgIDwvUHJvcGVydHlHcm91cD4KIAogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iUGFja2FnZSI+Ci0gICAgPFZlcnNpb24+My4zLjExLVNOQVBTSE9UPC9WZXJzaW9uPgotICAgIDxGaWxlVmVyc2lvbj4zLjMuMTEuMDwvRmlsZVZlcnNpb24+Ci0gICAgPEFzc2VtYmx5VmVyc2lvbj4zLjMuMC4wPC9Bc3NlbWJseVZlcnNpb24+CisgICAgPFZlcnNpb24+My40LjctU05BUFNIT1Q8L1ZlcnNpb24+CisgICAgPEZpbGVWZXJzaW9uPjMuNC43LjA8L0ZpbGVWZXJzaW9uPgorICAgIDxBc3NlbWJseVZlcnNpb24+My40LjAuMDwvQXNzZW1ibHlWZXJzaW9uPgogICAgIDxUaXRsZT5HcmVtbGluLk5ldDwvVGl0bGU+CiAgICAgPEF1dGhvcnM+QXBhY2hlIFRpbmtlclBvcDwvQXV0aG9ycz4KICAgICA8RGVzY3JpcHRpb24+R3JlbWxpbi5OZXQgZm9yIEFwYWNoZSBUaW5rZXJQb3DihKIgaXMgYSBsYW5ndWFnZSB2YXJpYW50IGFuZCBkcml2ZXIgZm9yIC5ORVQuCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvQ29ubmVjdGVkQ29tcG9uZW50LmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0Nvbm5lY3RlZENvbXBvbmVudC5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTFmNTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0Nvbm5lY3RlZENvbXBvbmVudC5jcwpAQCAtMCwwICsxLDQ3IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsCit7CisjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAxNTkxCisKKyAgICBwdWJsaWMgY2xhc3MgQ29ubmVjdGVkQ29tcG9uZW50CisgICAgeworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgY29tcG9uZW50ID0gImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5jb21wb25lbnQiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgZWRnZXMgPSAifnRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQuZWRnZXMiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgcHJvcGVydHlOYW1lID0gIn50aW5rZXJwb3AuY29ubmVjdGVkQ29tcG9uZW50LnByb3BlcnR5TmFtZSI7CisgICAgICAgIAorICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9HcmFwaFRyYXZlcnNhbC5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9HcmFwaFRyYXZlcnNhbC5jcwppbmRleCAxMjQwZWUwLi43Mzk0ZmU4IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvR3JhcGhUcmF2ZXJzYWwuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0dyYXBoVHJhdmVyc2FsLmNzCkBAIC0xMjIsNiArMTIyLDE1IEBACiAgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBBZGRzIHRoZSBhZ2dyZWdhdGUgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFPiBBZ2dyZWdhdGUgKFNjb3BlIHNjb3BlLCBzdHJpbmcgc2lkZUVmZmVjdEtleSkKKyAgICAgICAgeworICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgiYWdncmVnYXRlIiwgc2NvcGUsIHNpZGVFZmZlY3RLZXkpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRT4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgYWdncmVnYXRlIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gQWdncmVnYXRlIChzdHJpbmcgc2lkZUVmZmVjdEtleSkKICAgICAgICAgewogICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgiYWdncmVnYXRlIiwgc2lkZUVmZmVjdEtleSk7CkBAIC00MDIsNiArNDExLDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgY29ubmVjdGVkQ29tcG9uZW50IHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gQ29ubmVjdGVkQ29tcG9uZW50ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoImNvbm5lY3RlZENvbXBvbmVudCIpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRT4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgY29uc3RhbnQgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gQ29uc3RhbnQ8RTI+IChFMiBlKQpAQCAtNDY5LDYgKzQ4NywxNyBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGVsZW1lbnRNYXAgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBJRGljdGlvbmFyeTxvYmplY3QsIEUyPj4gRWxlbWVudE1hcDxFMj4gKHBhcmFtcyBzdHJpbmdbXSBwcm9wZXJ0eUtleXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBhcmdzID0gbmV3IExpc3Q8b2JqZWN0PigwICsgcHJvcGVydHlLZXlzLkxlbmd0aCkge307CisgICAgICAgICAgICBhcmdzLkFkZFJhbmdlKHByb3BlcnR5S2V5cyk7CisgICAgICAgICAgICBCeXRlY29kZS5BZGRTdGVwKCJlbGVtZW50TWFwIiwgYXJncy5Ub0FycmF5KCkpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgSURpY3Rpb25hcnk8b2JqZWN0LCBFMj4+KHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGVtaXQgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFPiBFbWl0ICgpCkBAIC04MzIsNiArODYxLDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgaW5kZXggc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gSW5kZXg8RTI+ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoImluZGV4Iik7CisgICAgICAgICAgICByZXR1cm4gV3JhcDxTLCBFMj4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgaW5qZWN0IHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gSW5qZWN0IChwYXJhbXMgRVtdIGluamVjdGlvbnMpCkBAIC05MTUsNiArOTUzLDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgbG9vcHMgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBpbnQ+IExvb3BzIChzdHJpbmcgbG9vcE5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoImxvb3BzIiwgbG9vcE5hbWUpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgaW50Pih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBBZGRzIHRoZSBtYXAgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gTWFwPEUyPiAoSUZ1bmN0aW9uIGZ1bmN0aW9uKQpAQCAtMTI0OCw2ICsxMjk1LDI0IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgcmVhZCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IFJlYWQgKCkKKyAgICAgICAgeworICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgicmVhZCIpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRT4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgcmVwZWF0IHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gUmVwZWF0IChzdHJpbmcgbG9vcE5hbWUsIElUcmF2ZXJzYWwgcmVwZWF0VHJhdmVyc2FsKQorICAgICAgICB7CisgICAgICAgICAgICBCeXRlY29kZS5BZGRTdGVwKCJyZXBlYXQiLCBsb29wTmFtZSwgcmVwZWF0VHJhdmVyc2FsKTsKKyAgICAgICAgICAgIHJldHVybiBXcmFwPFMsIEU+KHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIEFkZHMgdGhlIHJlcGVhdCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IFJlcGVhdCAoSVRyYXZlcnNhbCByZXBlYXRUcmF2ZXJzYWwpCkBAIC0xMzYwLDYgKzE0MjUsMTUgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBBZGRzIHRoZSBzaG9ydGVzdFBhdGggc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBQYXRoPiBTaG9ydGVzdFBhdGggKCkKKyAgICAgICAgeworICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgic2hvcnRlc3RQYXRoIik7CisgICAgICAgICAgICByZXR1cm4gV3JhcDxTLCBQYXRoPih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBBZGRzIHRoZSBzaWRlRWZmZWN0IHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gU2lkZUVmZmVjdCAoSUNvbnN1bWVyIGNvbnN1bWVyKQpAQCAtMTY3Nyw2ICsxNzUxLDMzIEBACiAgICAgICAgICAgICByZXR1cm4gV3JhcDxTLCBFPih0aGlzKTsKICAgICAgICAgfQogCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBBZGRzIHRoZSB3aXRoIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gV2l0aCAoc3RyaW5nIGtleSkKKyAgICAgICAgeworICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgid2l0aCIsIGtleSk7CisgICAgICAgICAgICByZXR1cm4gV3JhcDxTLCBFPih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBBZGRzIHRoZSB3aXRoIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gV2l0aCAoc3RyaW5nIGtleSwgb2JqZWN0IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBCeXRlY29kZS5BZGRTdGVwKCJ3aXRoIiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gV3JhcDxTLCBFPih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBBZGRzIHRoZSB3cml0ZSBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IFdyaXRlICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoIndyaXRlIik7CisgICAgICAgICAgICByZXR1cm4gV3JhcDxTLCBFPih0aGlzKTsKKyAgICAgICAgfQorCiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gTWFrZSBhIGNvcHkgb2YgYSB0cmF2ZXJzYWwgdGhhdCBpcyByZXNldCBmb3IgaXRlcmF0aW9uLgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0dyYXBoVHJhdmVyc2FsU291cmNlLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0dyYXBoVHJhdmVyc2FsU291cmNlLmNzCmluZGV4IDM5OTdjMDIuLmI1MmI4OTggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvR3JhcGhUcmF2ZXJzYWxTb3VyY2UuY3MKQEAgLTczLDYgKzczLDIyIEBACiAgICAgICAgIH0KIAogCisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbFNvdXJjZSBXaXRoKHN0cmluZyBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzb3VyY2UgPSBuZXcgR3JhcGhUcmF2ZXJzYWxTb3VyY2UobmV3IExpc3Q8SVRyYXZlcnNhbFN0cmF0ZWd5PihUcmF2ZXJzYWxTdHJhdGVnaWVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJ5dGVjb2RlKEJ5dGVjb2RlKSk7CisgICAgICAgICAgICBzb3VyY2UuQnl0ZWNvZGUuQWRkU291cmNlKCJ3aXRoIiwga2V5KTsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgV2l0aChzdHJpbmcga2V5LCBvYmplY3QgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzb3VyY2UgPSBuZXcgR3JhcGhUcmF2ZXJzYWxTb3VyY2UobmV3IExpc3Q8SVRyYXZlcnNhbFN0cmF0ZWd5PihUcmF2ZXJzYWxTdHJhdGVnaWVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJ5dGVjb2RlKEJ5dGVjb2RlKSk7CisgICAgICAgICAgICBzb3VyY2UuQnl0ZWNvZGUuQWRkU291cmNlKCJ3aXRoIiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gc291cmNlOworICAgICAgICB9CisKICAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsU291cmNlIFdpdGhCdWxrKGJvb2wgdXNlQnVsaykKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHNvdXJjZSA9IG5ldyBHcmFwaFRyYXZlcnNhbFNvdXJjZShuZXcgTGlzdDxJVHJhdmVyc2FsU3RyYXRlZ3k+KFRyYXZlcnNhbFN0cmF0ZWdpZXMpLApAQCAtMzM0LDYgKzM1MCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKICAgICAgICAgfQogCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IG9mZiB0aGlzIGdyYXBoIHRyYXZlcnNhbCBzb3VyY2UgYW5kIGFkZHMgdGhlIGlvIHN0ZXAgdG8gdGhhdAorICAgICAgICAvLy8gICAgIHRyYXZlcnNhbC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIFM+IElvPFM+KHN0cmluZyBmaWxlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgdHJhdmVyc2FsID0gbmV3IEdyYXBoVHJhdmVyc2FsPFMsIFM+KFRyYXZlcnNhbFN0cmF0ZWdpZXMsIG5ldyBCeXRlY29kZShCeXRlY29kZSkpOworICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5CeXRlY29kZS5BZGRTdGVwKCJpbyIsIGZpbGUpOworICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKKyAgICAgICAgfQorCiAgICAgfQogICAgIAogI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0lPLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0lPLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNTdkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvSU8uY3MKQEAgLTAsMCArMSw1MyBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgcHVibGljIGNsYXNzIElPCisgICAgeworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgZ3JhcGhtbCA9ICJncmFwaG1sIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGdyYXBoc29uID0gImdyYXBoc29uIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGdyeW8gPSAiZ3J5byI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyByZWFkZXIgPSAifnRpbmtlcnBvcC5pby5yZWFkZXIiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgcmVnaXN0cnkgPSAifnRpbmtlcnBvcC5pby5yZWdpc3RyeSI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyB3cml0ZXIgPSAifnRpbmtlcnBvcC5pby53cml0ZXIiOworICAgICAgICAKKyAgICB9CisKKyNwcmFnbWEgd2FybmluZyByZXN0b3JlIDE1OTEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvUGFnZVJhbmsuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvUGFnZVJhbmsuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNkMjQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9QYWdlUmFuay5jcwpAQCAtMCwwICsxLDQ3IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsCit7CisjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAxNTkxCisKKyAgICBwdWJsaWMgY2xhc3MgUGFnZVJhbmsKKyAgICB7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyBlZGdlcyA9ICJ+dGlua2VycG9wLnBhZ2VSYW5rLmVkZ2VzIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIHByb3BlcnR5TmFtZSA9ICJ+dGlua2VycG9wLnBhZ2VSYW5rLnByb3BlcnR5TmFtZSI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyB0aW1lcyA9ICJ+dGlua2VycG9wLnBhZ2VSYW5rLnRpbWVzIjsKKyAgICAgICAgCisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1BlZXJQcmVzc3VyZS5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9QZWVyUHJlc3N1cmUuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1ODc5ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9QZWVyUHJlc3N1cmUuY3MKQEAgLTAsMCArMSw0NyBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgcHVibGljIGNsYXNzIFBlZXJQcmVzc3VyZQorICAgIHsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGVkZ2VzID0gIn50aW5rZXJwb3AucGVlclByZXNzdXJlLmVkZ2VzIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIHByb3BlcnR5TmFtZSA9ICJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS5wcm9wZXJ0eU5hbWUiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgdGltZXMgPSAifnRpbmtlcnBvcC5wZWVyUHJlc3N1cmUudGltZXMiOworICAgICAgICAKKyAgICB9CisKKyNwcmFnbWEgd2FybmluZyByZXN0b3JlIDE1OTEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvU2hvcnRlc3RQYXRoLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1Nob3J0ZXN0UGF0aC5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTI1ZTQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1Nob3J0ZXN0UGF0aC5jcwpAQCAtMCwwICsxLDUxIEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsCit7CisjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAxNTkxCisKKyAgICBwdWJsaWMgY2xhc3MgU2hvcnRlc3RQYXRoCisgICAgeworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgZGlzdGFuY2UgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZGlzdGFuY2UiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgZWRnZXMgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZWRnZXMiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgaW5jbHVkZUVkZ2VzID0gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmluY2x1ZGVFZGdlcyI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyBtYXhEaXN0YW5jZSA9ICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5tYXhEaXN0YW5jZSI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyB0YXJnZXQgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IjsKKyAgICAgICAgCisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1N0cmF0ZWd5L0RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5LmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1N0cmF0ZWd5L0RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5LmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZDcwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvU3RyYXRlZ3kvRGVjb3JhdGlvbi9PcHRpb25zU3RyYXRlZ3kuY3MKQEAgLTAsMCArMSw1MyBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlN0cmF0ZWd5LkRlY29yYXRpb24KK3sKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vICAgICBPcHRpb25zU3RyYXRlZ3kgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUgdHJhdmVyc2FsIGl0c2VsZiAtIGl0IGp1c3QgY2FycmllcyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCisgICAgLy8vICAgICBhdCB0aGUgdHJhdmVyc2FsIGxldmVsLgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGNsYXNzIE9wdGlvbnNTdHJhdGVneSA6IEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3kKKyAgICB7CisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJPcHRpb25zU3RyYXRlZ3kiIC8+IGNsYXNzLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgT3B0aW9uc1N0cmF0ZWd5KCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ik9wdGlvbnNTdHJhdGVneSIgLz4gY2xhc3MuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3B0aW9ucyI+U3BlY2lmaWVzIHRoZSBvcHRpb25zIGZvciB0aGUgdHJhdmVyc2FsLjwvcGFyYW0+CisgICAgICAgIHB1YmxpYyBPcHRpb25zU3RyYXRlZ3koSURpY3Rpb25hcnk8c3RyaW5nLG9iamVjdD4gb3B0aW9ucykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yZWFjaCh2YXIgaXRlbSBpbiBvcHRpb25zKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25baXRlbS5LZXldID0gaXRlbS5WYWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvU3RyYXRlZ3kvRGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5LmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1N0cmF0ZWd5L0RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneS5jcwppbmRleCAxYmE4N2QwLi5hZTZhNDZlIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvU3RyYXRlZ3kvRGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5LmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9TdHJhdGVneS9EZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3kuY3MKQEAgLTM4LDE4ICszOCwxOCBAQAogICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU3ViZ3JhcGhTdHJhdGVneSIgLz4gY2xhc3MuCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+Ci0gICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idmVydGV4Q3JpdGVyaW9uIj5Db25zdHJhaW5zIHZlcnRpY2VzIGZvciB0aGUgPHNlZSBjcmVmPSJJVHJhdmVyc2FsIiAvPi48L3BhcmFtPgotICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImVkZ2VDcml0ZXJpb24iPkNvbnN0cmFpbnMgZWRnZXMgZm9yIHRoZSA8c2VlIGNyZWY9IklUcmF2ZXJzYWwiIC8+LjwvcGFyYW0+Ci0gICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idmVydGV4UHJvcGVydHlDcml0ZXJpb24iPkNvbnN0cmFpbnMgdmVydGV4IHByb3BlcnRpZXMgZm9yIHRoZSA8c2VlIGNyZWY9IklUcmF2ZXJzYWwiIC8+LjwvcGFyYW0+Ci0gICAgICAgIHB1YmxpYyBTdWJncmFwaFN0cmF0ZWd5KElUcmF2ZXJzYWwgdmVydGV4Q3JpdGVyaW9uID0gbnVsbCwgSVRyYXZlcnNhbCBlZGdlQ3JpdGVyaW9uID0gbnVsbCwKLSAgICAgICAgICAgIElUcmF2ZXJzYWwgdmVydGV4UHJvcGVydHlDcml0ZXJpb24gPSBudWxsKQorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZlcnRpY2VzIj5Db25zdHJhaW5zIHZlcnRpY2VzIGZvciB0aGUgPHNlZSBjcmVmPSJJVHJhdmVyc2FsIiAvPi48L3BhcmFtPgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImVkZ2VzIj5Db25zdHJhaW5zIGVkZ2VzIGZvciB0aGUgPHNlZSBjcmVmPSJJVHJhdmVyc2FsIiAvPi48L3BhcmFtPgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZlcnRleFByb3BlcnRpZXMiPkNvbnN0cmFpbnMgdmVydGV4IHByb3BlcnRpZXMgZm9yIHRoZSA8c2VlIGNyZWY9IklUcmF2ZXJzYWwiIC8+LjwvcGFyYW0+CisgICAgICAgIHB1YmxpYyBTdWJncmFwaFN0cmF0ZWd5KElUcmF2ZXJzYWwgdmVydGljZXMgPSBudWxsLCBJVHJhdmVyc2FsIGVkZ2VzID0gbnVsbCwKKyAgICAgICAgICAgIElUcmF2ZXJzYWwgdmVydGV4UHJvcGVydGllcyA9IG51bGwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2ZXJ0ZXhDcml0ZXJpb24gIT0gbnVsbCkKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uWyJ2ZXJ0aWNlcyJdID0gdmVydGV4Q3JpdGVyaW9uOwotICAgICAgICAgICAgaWYgKGVkZ2VDcml0ZXJpb24gIT0gbnVsbCkKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uWyJlZGdlcyJdID0gZWRnZUNyaXRlcmlvbjsKLSAgICAgICAgICAgIGlmICh2ZXJ0ZXhQcm9wZXJ0eUNyaXRlcmlvbiAhPSBudWxsKQotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25bInZlcnRleFByb3BlcnRpZXMiXSA9IHZlcnRleFByb3BlcnR5Q3JpdGVyaW9uOworICAgICAgICAgICAgaWYgKHZlcnRpY2VzICE9IG51bGwpCisgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvblsidmVydGljZXMiXSA9IHZlcnRpY2VzOworICAgICAgICAgICAgaWYgKGVkZ2VzICE9IG51bGwpCisgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvblsiZWRnZXMiXSA9IGVkZ2VzOworICAgICAgICAgICAgaWYgKHZlcnRleFByb3BlcnRpZXMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uWyJ2ZXJ0ZXhQcm9wZXJ0aWVzIl0gPSB2ZXJ0ZXhQcm9wZXJ0aWVzOwogICAgICAgICB9CiAgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9UZXh0UC5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9UZXh0UC5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDQ3Zjc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1RleHRQLmNzCkBAIC0wLDAgKzEsOTYgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKworLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIE1PRElGWSBUSElTIEZJTEUgRElSRUNUTFkgLSBzZWUgcG9tLnhtbAordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uTGlucTsKK3VzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwKK3sKKyNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDE1OTEKKworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gICAgIEEgPHNlZSBjcmVmPSJUZXh0UCIgLz4gaXMgYSBwcmVkaWNhdGUgb2YgdGhlIGZvcm0gRnVuYyZsdDtzdHJpbmcsIGJvb2wmZ3Q7LgorICAgIC8vLyAgICAgVGhhdCBpcywgZ2l2ZW4gc29tZSBzdHJpbmcsIHJldHVybiB0cnVlIG9yIGZhbHNlLgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGNsYXNzIFRleHRQIDogUAorICAgIHsKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlRleHRQIiAvPiBjbGFzcy4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvcGVyYXRvck5hbWUiPlRoZSBuYW1lIG9mIHRoZSBwcmVkaWNhdGUuPC9wYXJhbT4KKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ2YWx1ZSI+VGhlIHZhbHVlIG9mIHRoZSBwcmVkaWNhdGUuPC9wYXJhbT4KKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+QW4gb3B0aW9uYWwgb3RoZXIgcHJlZGljYXRlIHRoYXQgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCBmb3IgdGhpcyBwcmVkaWNhdGUuPC9wYXJhbT4KKyAgICAgICAgcHVibGljIFRleHRQKHN0cmluZyBvcGVyYXRvck5hbWUsIHN0cmluZyB2YWx1ZSwgUCBvdGhlciA9IG51bGwpIDogYmFzZShvcGVyYXRvck5hbWUsIHZhbHVlLCBvdGhlcikKKyAgICAgICAgeworICAgICAgICB9CisKKworICAgICAgICBwdWJsaWMgc3RhdGljIFRleHRQIENvbnRhaW5pbmcoc3RyaW5nIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRQKCJjb250YWluaW5nIiwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXh0UCBFbmRpbmdXaXRoKHN0cmluZyB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0UCgiZW5kaW5nV2l0aCIsIHZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgVGV4dFAgTm90Q29udGFpbmluZyhzdHJpbmcgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dFAoIm5vdENvbnRhaW5pbmciLCB2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIFRleHRQIE5vdEVuZGluZ1dpdGgoc3RyaW5nIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRQKCJub3RFbmRpbmdXaXRoIiwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXh0UCBOb3RTdGFydGluZ1dpdGgoc3RyaW5nIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRQKCJub3RTdGFydGluZ1dpdGgiLCB2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIFRleHRQIFN0YXJ0aW5nV2l0aChzdHJpbmcgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dFAoInN0YXJ0aW5nV2l0aCIsIHZhbHVlKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgVFtdIFRvR2VuZXJpY0FycmF5PFQ+KElDb2xsZWN0aW9uPFQ+IGNvbGxlY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uPy5Ub0FycmF5KCkgPz8gbmV3IFRbMF07CisgICAgICAgIH0KKworICAgICAgICAvLy8gPGluaGVyaXRkb2MgLz4KKyAgICAgICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBPdGhlciA9PSBudWxsID8gJCJ7T3BlcmF0b3JOYW1lfSh7VmFsdWV9KSIgOiAkIntPcGVyYXRvck5hbWV9KHtWYWx1ZX0se090aGVyfSkiOworICAgICAgICB9CisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvV2l0aE9wdGlvbnMuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvV2l0aE9wdGlvbnMuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIwYzU5YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9XaXRoT3B0aW9ucy5jcwpAQCAtMCwwICsxLDc0IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlN0ZXAuVXRpbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUgPGM+V2l0aCgpPC9jPiBtb2R1bGF0b3IuCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBwdWJsaWMgY2xhc3MgV2l0aE9wdGlvbnMKKyAgICB7CisKKworICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHN0cmluZyBUb2tlbnMgPSAifnRpbmtlcnBvcC52YWx1ZU1hcC50b2tlbnMiOworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBpbnQgTm9uZSA9IDA7CisKKworICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGludCBJZHMgPSAxOworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBpbnQgTGFiZWxzID0gMjsKKworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50IEtleXMgPSA0OworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBpbnQgVmFsdWVzID0gODsKKworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50IEFsbCA9IDE1OworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBzdHJpbmcgSW5kZXhlciA9ICJ+dGlua2VycG9wLmluZGV4LmluZGV4ZXIiOworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBpbnQgTGlzdCA9IDA7CisKKworICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGludCBNYXAgPSAxOworCisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvX18uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvX18uY3MKaW5kZXggMjdhMDAwNC4uOWJkMGIxNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL19fLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9fXy5jcwpAQCAtOTMsNiArOTMsMTQgQEAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gYW5kIGFkZHMgdGhlIGFnZ3JlZ2F0ZSBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgb2JqZWN0PiBBZ2dyZWdhdGUoU2NvcGUgc2NvcGUsIHN0cmluZyBzaWRlRWZmZWN0S2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgb2JqZWN0PigpLkFnZ3JlZ2F0ZShzY29wZSwgc2lkZUVmZmVjdEtleSk7ICAgICAgICAgICAgCisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBhbmQgYWRkcyB0aGUgYWdncmVnYXRlIHN0ZXAgdG8gdGhhdCB0cmF2ZXJzYWwuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBvYmplY3Q+IEFnZ3JlZ2F0ZShzdHJpbmcgc2lkZUVmZmVjdEtleSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIG9iamVjdD4oKS5BZ2dyZWdhdGUoc2lkZUVmZmVjdEtleSk7ICAgICAgICAgICAgCkBAIC0zMjMsNiArMzMxLDE2IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBhbmQgYWRkcyB0aGUgZWxlbWVudE1hcCBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgSURpY3Rpb25hcnk8b2JqZWN0LCBFMj4+IEVsZW1lbnRNYXA8RTI+KHBhcmFtcyBzdHJpbmdbXSBwcm9wZXJ0eUtleXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUtleXMuTGVuZ3RoID09IDAKKyAgICAgICAgICAgICAgICA/IG5ldyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIElEaWN0aW9uYXJ5PG9iamVjdCwgRTI+PigpLkVsZW1lbnRNYXA8RTI+KCkKKyAgICAgICAgICAgICAgICA6IG5ldyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIElEaWN0aW9uYXJ5PG9iamVjdCwgRTI+PigpLkVsZW1lbnRNYXA8RTI+KHByb3BlcnR5S2V5cyk7ICAgICAgICAgICAgCisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBhbmQgYWRkcyB0aGUgZW1pdCBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgb2JqZWN0PiBFbWl0KCkKQEAgLTYyMyw2ICs2NDEsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IGFuZCBhZGRzIHRoZSBpbmRleCBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgRTI+IEluZGV4PEUyPigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBFMj4oKS5JbmRleDxFMj4oKTsgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IGFuZCBhZGRzIHRoZSBpbmplY3Qgc3RlcCB0byB0aGF0IHRyYXZlcnNhbC4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIG9iamVjdD4gSW5qZWN0KHBhcmFtcyBvYmplY3RbXSBpbmplY3Rpb25zKQpAQCAtNjk3LDYgKzcyMywxNCBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gYW5kIGFkZHMgdGhlIGxvb3BzIHN0ZXAgdG8gdGhhdCB0cmF2ZXJzYWwuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBpbnQ+IExvb3BzKHN0cmluZyBsb29wTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIGludD4oKS5Mb29wcyhsb29wTmFtZSk7ICAgICAgICAgICAgCisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBhbmQgYWRkcyB0aGUgbWFwIHN0ZXAgdG8gdGhhdCB0cmF2ZXJzYWwuCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBFMj4gTWFwPEUyPihJRnVuY3Rpb24gZnVuY3Rpb24pCkBAIC05MzMsNiArOTY3LDE0IEBACiAgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IGFuZCBhZGRzIHRoZSByZXBlYXQgc3RlcCB0byB0aGF0IHRyYXZlcnNhbC4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIG9iamVjdD4gUmVwZWF0KHN0cmluZyBsb29wTmFtZSwgSVRyYXZlcnNhbCB0cmF2ZXJzYWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBvYmplY3Q+KCkuUmVwZWF0KGxvb3BOYW1lLCB0cmF2ZXJzYWwpOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gYW5kIGFkZHMgdGhlIHJlcGVhdCBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgb2JqZWN0PiBSZXBlYXQoSVRyYXZlcnNhbCB0cmF2ZXJzYWwpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBvYmplY3Q+KCkuUmVwZWF0KHRyYXZlcnNhbCk7ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9VdGlscy5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1V0aWxzLmNzCmluZGV4IGUxNzgxYWIuLjI3ZDVkZTEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1V0aWxzLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1V0aWxzLmNzCkBAIC01MSw1ICs1MSwxNyBAQAogICAgICAgICAgICAgICAgIHRocm93OwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyBEZXNpZ25lZCBmb3IgVGFza3MgdGhhdCB3ZXJlIHN0YXJ0ZWQgYnV0IHRoZSByZXN1bHQgc2hvdWxkIG5vdCBiZSBhd2FpdGVkIHVwb24gKGZpcmUgYW5kIGZvcmdldCkuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGb3JnZXQodGhpcyBUYXNrIHRhc2spCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEF2b2lkIGNvbXBpbGVyIHdhcm5pbmcgQ1M0MDE0IGFuZCBVbm9ic2VydmVkIGV4Y2VwdGlvbnMKKyAgICAgICAgICAgIHRhc2s/LkNvbnRpbnVlV2l0aCh0ID0+CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdC5FeGNlcHRpb24/LkhhbmRsZShfID0+IHRydWUpOworICAgICAgICAgICAgfSwgVGFza0NvbnRpbnVhdGlvbk9wdGlvbnMuRXhlY3V0ZVN5bmNocm9ub3VzbHkpOworICAgICAgICB9CiAgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9wZXJ0aWVzL0Fzc2VtYmx5SW5mby5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9wZXJ0aWVzL0Fzc2VtYmx5SW5mby5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjkwZTVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb3BlcnRpZXMvQXNzZW1ibHlJbmZvLmNzCkBAIC0wLDAgKzEsMjYgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlczsKKworW2Fzc2VtYmx5OiBJbnRlcm5hbHNWaXNpYmxlVG8oIkdyZW1saW4uTmV0LlVuaXRUZXN0LCBQdWJsaWNLZXk9MDAyNDAwMDAwNDgwMDAwMDk0MDAwMDAwMDYwMjAwMDAwMDI0MDAwMDUyNTM0MTMxMDAwNDAwMDAwMTAwMDEwMDliYmY3YTViOTk2NmQ5MjA3ZDhhYmI5ZDNkM2U5OGY1ZTM4N2IyOTI3NDJjZmI3OTFkYzY1NzM1NzIyMWMzYWM5YjM4YWI2ZGFiODk2MzBkYzhlZGIzY2RlODRhMTA3ZjQ5M2QxOTIxMTZhOTM0YWZhNDYzMzU1ZWVmZDU4YjgyZmQwOGRjMjYxNmVlNjA3NGE3NGJmNTg0NTY1Mjg2NDc0NmUyODViZDA0ZTJlMWE4NzkyMWU4ZTJjMzgzZDFiMzAyZTdiZWUxZmQ3Y2RhYjVmZTJiYmVkOGM2Njc3NjI0ZDYzNDMzNTQ4ZDQzYTg3M2FiNTY1MGVkOTZmYjA2ODciKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0J1bGtTZXRTZXJpYWxpemVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9CdWxrU2V0U2VyaWFsaXplci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGQ0YzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9CdWxrU2V0U2VyaWFsaXplci5jcwpAQCAtMCwwICsxLDUwIEBACivvu78jcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzOwordXNpbmcgTmV3dG9uc29mdC5Kc29uLkxpbnE7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5TdHJ1Y3R1cmUuSU8uR3JhcGhTT04KK3sKKyAgICBpbnRlcm5hbCBjbGFzcyBCdWxrU2V0U2VyaWFsaXplciA6IElHcmFwaFNPTkRlc2VyaWFsaXplcgorICAgIHsKKyAgICAgICAgcHVibGljIGR5bmFtaWMgT2JqZWN0aWZ5KEpUb2tlbiBncmFwaHNvbk9iamVjdCwgR3JhcGhTT05SZWFkZXIgcmVhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgakFycmF5ID0gZ3JhcGhzb25PYmplY3QgYXMgSkFycmF5OworICAgICAgICAgICAgaWYgKGpBcnJheSA9PSBudWxsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTGlzdDxvYmplY3Q+KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBjb2VyY2UgdGhlIEJ1bGtTZXQgdG8gTGlzdC4gaWYgdGhlIGJ1bGsgZXhjZWVkcyB0aGUgaW50IHNwYWNlIHRoZW4gd2UgY2FuJ3QgY29lcmNlIHRvIExpc3QgYW55d2F5LCAKKyAgICAgICAgICAgIC8vIHNvIHRoaXMgcXVlcnkgd2lsbCBiZSB0cm91YmxlLiB3ZSdkIG5lZWQgYSBsZWdpdCBCdWxrU2V0IGltcGxlbWVudGF0aW9uIGhlcmUgaW4gQyMuIHRoaXMgY3VycmVudCAKKyAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9uIGlzIGhlcmUgdG8gcmVwbGljYXRlIHRoZSBwcmV2aW91cyBmdW5jdGlvbmFsaXR5IHRoYXQgZXhpc3RlZCBvbiB0aGUgc2VydmVyIHNpZGUgaW4gCisgICAgICAgICAgICAvLyBwcmV2aW91cyB2ZXJzaW9ucy4KKyAgICAgICAgICAgIHJldHVybiBFbnVtZXJhYmxlLlJhbmdlKDAsIGpBcnJheS5Db3VudCAvIDIpLlNlbGVjdE1hbnk8aW50LG9iamVjdD4oaSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bWVyYWJsZS5SZXBlYXQ8b2JqZWN0PihyZWFkZXIuVG9PYmplY3QoakFycmF5W2kgKiAyXSksIChpbnQpIHJlYWRlci5Ub09iamVjdChqQXJyYXlbaSAqIDIgKyAxXSkpKS4KKyAgICAgICAgICAgICAgICAgICAgICAgVG9MaXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9EaXJlY3Rpb25EZXNlcmlhbGl6ZXIuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0RpcmVjdGlvbkRlc2VyaWFsaXplci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDI3MTcxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9EaXJlY3Rpb25EZXNlcmlhbGl6ZXIuY3MKQEAgLTAsMCArMSwzNiBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKK3VzaW5nIE5ld3RvbnNvZnQuSnNvbi5MaW5xOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuU3RydWN0dXJlLklPLkdyYXBoU09OCit7CisgICAgaW50ZXJuYWwgY2xhc3MgRGlyZWN0aW9uRGVzZXJpYWxpemVyIDogSUdyYXBoU09ORGVzZXJpYWxpemVyCisgICAgeworICAgICAgICBwdWJsaWMgZHluYW1pYyBPYmplY3RpZnkoSlRva2VuIGdyYXBoc29uT2JqZWN0LCBHcmFwaFNPTlJlYWRlciByZWFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBEaXJlY3Rpb24uR2V0QnlWYWx1ZShncmFwaHNvbk9iamVjdC5Ub1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OM1JlYWRlci5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT04zUmVhZGVyLmNzCmluZGV4IGNjNzRmZTMuLjdjYzE3YmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT04zUmVhZGVyLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT04zUmVhZGVyLmNzCkBAIC0zNiw2ICszNiw3IEBACiAgICAgICAgICAgICAgICAgeyAiZzpMaXN0IiwgbmV3IExpc3RTZXJpYWxpemVyKCkgfSwKICAgICAgICAgICAgICAgICB7ICJnOlNldCIsIG5ldyBTZXRTZXJpYWxpemVyKCkgfSwKICAgICAgICAgICAgICAgICB7ICJnOk1hcCIsIG5ldyBNYXBTZXJpYWxpemVyKCkgfSwKKyAgICAgICAgICAgICAgICB7ICJnOkJ1bGtTZXQiLCBuZXcgQnVsa1NldFNlcmlhbGl6ZXIoKSB9LAogICAgICAgICAgICAgICAgIHsgImc6UGF0aCIsIG5ldyBQYXRoM0Rlc2VyaWFsaXplcigpIH0KICAgICAgICAgICAgIH07CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTlJlYWRlci5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05SZWFkZXIuY3MKaW5kZXggNWNlZDk5YS4uNjM2NDFmMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTlJlYWRlci5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OUmVhZGVyLmNzCkBAIC00NCw2ICs0NCw3IEBACiAgICAgICAgICAgICAgICAgeyJnOkludDY0IiwgbmV3IEludDY0Q29udmVydGVyKCl9LAogICAgICAgICAgICAgICAgIHsiZzpGbG9hdCIsIG5ldyBGbG9hdENvbnZlcnRlcigpfSwKICAgICAgICAgICAgICAgICB7Imc6RG91YmxlIiwgbmV3IERvdWJsZUNvbnZlcnRlcigpfSwKKyAgICAgICAgICAgICAgICB7Imc6RGlyZWN0aW9uIiwgbmV3IERpcmVjdGlvbkRlc2VyaWFsaXplcigpfSwKICAgICAgICAgICAgICAgICB7Imc6VVVJRCIsIG5ldyBVdWlkRGVzZXJpYWxpemVyKCl9LAogICAgICAgICAgICAgICAgIHsiZzpEYXRlIiwgbmV3IERhdGVEZXNlcmlhbGl6ZXIoKX0sCiAgICAgICAgICAgICAgICAgeyJnOlRpbWVzdGFtcCIsIG5ldyBEYXRlRGVzZXJpYWxpemVyKCl9LApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTldyaXRlci5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05Xcml0ZXIuY3MKaW5kZXggOTM0OWU1Ny4uZGJhNmU2MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTldyaXRlci5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OV3JpdGVyLmNzCkBAIC01OCw2ICs1OCw3IEBACiAgICAgICAgICAgICAgICAge3R5cGVvZihUeXBlKSwgbmV3IENsYXNzU2VyaWFsaXplcigpfSwKICAgICAgICAgICAgICAgICB7dHlwZW9mKEVudW1XcmFwcGVyKSwgbmV3IEVudW1TZXJpYWxpemVyKCl9LAogICAgICAgICAgICAgICAgIHt0eXBlb2YoUCksIG5ldyBQU2VyaWFsaXplcigpfSwKKyAgICAgICAgICAgICAgICB7dHlwZW9mKFRleHRQKSwgbmV3IFRleHRQU2VyaWFsaXplcigpfSwKICAgICAgICAgICAgICAgICB7dHlwZW9mKFZlcnRleCksIG5ldyBWZXJ0ZXhTZXJpYWxpemVyKCl9LAogICAgICAgICAgICAgICAgIHt0eXBlb2YoRWRnZSksIG5ldyBFZGdlU2VyaWFsaXplcigpfSwKICAgICAgICAgICAgICAgICB7dHlwZW9mKFByb3BlcnR5KSwgbmV3IFByb3BlcnR5U2VyaWFsaXplcigpfSwKQEAgLTExMyw3ICsxMTQsMTAgQEAKICAgICAgICAgcHVibGljIGR5bmFtaWMgVG9EaWN0KGR5bmFtaWMgb2JqZWN0RGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHR5cGUgPSBvYmplY3REYXRhLkdldFR5cGUoKTsKLSAgICAgICAgICAgIGlmIChUcnlHZXRTZXJpYWxpemVyRm9yKG91dCBJR3JhcGhTT05TZXJpYWxpemVyIHNlcmlhbGl6ZXIsIHR5cGUpKQorCisgICAgICAgICAgICBJR3JhcGhTT05TZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBUcnlHZXRTZXJpYWxpemVyRm9yKHR5cGUpOworCisgICAgICAgICAgICBpZiAoc2VyaWFsaXplciAhPSBudWxsKQogICAgICAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVyLkRpY3RpZnkob2JqZWN0RGF0YSwgdGhpcyk7CiAgICAgICAgICAgICBpZiAoSXNEaWN0aW9uYXJ5VHlwZSh0eXBlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRGljdFRvR3JhcGhTT05EaWN0KG9iamVjdERhdGEpOwpAQCAtMTIyLDIxICsxMjYsMTggQEAKICAgICAgICAgICAgIHJldHVybiBvYmplY3REYXRhOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSBib29sIFRyeUdldFNlcmlhbGl6ZXJGb3Iob3V0IElHcmFwaFNPTlNlcmlhbGl6ZXIgc2VyaWFsaXplciwgVHlwZSB0eXBlKQorICAgICAgICBwcml2YXRlIElHcmFwaFNPTlNlcmlhbGl6ZXIgVHJ5R2V0U2VyaWFsaXplckZvcihUeXBlIHR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChTZXJpYWxpemVycy5Db250YWluc0tleSh0eXBlKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzZXJpYWxpemVyID0gU2VyaWFsaXplcnNbdHlwZV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZXJzW3R5cGVdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yZWFjaCAodmFyIHN1cHBvcnRlZFR5cGUgaW4gU2VyaWFsaXplcnMuS2V5cykKICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkVHlwZS5Jc0Fzc2lnbmFibGVGcm9tKHR5cGUpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplciA9IFNlcmlhbGl6ZXJzW3N1cHBvcnRlZFR5cGVdOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZXJzW3N1cHBvcnRlZFR5cGVdOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlcmlhbGl6ZXIgPSBudWxsOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KIAogICAgICAgICBwcml2YXRlIGJvb2wgSXNEaWN0aW9uYXJ5VHlwZShUeXBlIHR5cGUpCkBAIC0xNjMsNCArMTY0LDQgQEAKICAgICAgICAgICAgICAgICB5aWVsZCByZXR1cm4gVG9EaWN0KGUpOwogICAgICAgICB9CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vVGV4dFBTZXJpYWxpemVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9UZXh0UFNlcmlhbGl6ZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2YmUyZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vVGV4dFBTZXJpYWxpemVyLmNzCkBAIC0wLDAgKzEsNDUgQEAKK++7vyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlN0cnVjdHVyZS5JTy5HcmFwaFNPTgoreworICAgIGludGVybmFsIGNsYXNzIFRleHRQU2VyaWFsaXplciA6IElHcmFwaFNPTlNlcmlhbGl6ZXIKKyAgICB7CisgICAgICAgIHB1YmxpYyBEaWN0aW9uYXJ5PHN0cmluZywgZHluYW1pYz4gRGljdGlmeShkeW5hbWljIHByZWRpY2F0ZSwgR3JhcGhTT05Xcml0ZXIgd3JpdGVyKQorICAgICAgICB7CisgICAgICAgICAgICBUZXh0UCBwID0gcHJlZGljYXRlOworICAgICAgICAgICAgdmFyIHZhbHVlID0gcC5PdGhlciA9PSBudWxsCisgICAgICAgICAgICAgICAgPyB3cml0ZXIuVG9EaWN0KHAuVmFsdWUpCisgICAgICAgICAgICAgICAgOiBuZXcgTGlzdDxkeW5hbWljPiB7d3JpdGVyLlRvRGljdChwLlZhbHVlKSwgd3JpdGVyLlRvRGljdChwLk90aGVyKX07CisgICAgICAgICAgICB2YXIgZGljdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgZHluYW1pYz4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB7InByZWRpY2F0ZSIsIHAuT3BlcmF0b3JOYW1lfSwKKyAgICAgICAgICAgICAgICB7InZhbHVlIiwgdmFsdWV9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgcmV0dXJuIEdyYXBoU09OVXRpbC5Ub1R5cGVkVmFsdWUoIlRleHRQIiwgZGljdCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL1BhdGguY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL1BhdGguY3MKaW5kZXggYTlmMjY5OC4uZDIwNWE4OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9QYXRoLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvUGF0aC5jcwpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgICAgIC8vLyA8aW5oZXJpdGRvYyAvPgogICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIFRvU3RyaW5nKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICQiW3tzdHJpbmcuSm9pbigiLCAiLCBPYmplY3RzKX1dIjsKKyAgICAgICAgICAgIHJldHVybiAkInBhdGhbe3N0cmluZy5Kb2luKCIsICIsIE9iamVjdHMpfV0iOwogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL3BvbS54bWwgYi9ncmVtbGluLWRvdG5ldC9zcmMvcG9tLnhtbAppbmRleCAwNTk4MTliLi40M2ZhNWViIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvcG9tLnhtbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWRvdG5ldDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWRvdG5ldC1zb3VyY2U8L2FydGlmYWN0SWQ+CiAgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBHcmVtbGluLk5ldCAtIFNvdXJjZTwvbmFtZT4KQEAgLTI4MSw2ICsyODEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuZ3Jvb3Z5PC9ncm91cElkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncm9vdnktYWxsPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4ke2dyb292eS52ZXJzaW9ufTwvdmVyc2lvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+cnVudGltZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5PgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9EZXYvUHJvdmlkZXIvSW5kZXhUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvRGV2L1Byb3ZpZGVyL0luZGV4VGVzdHMuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4Y2RhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvRGV2L1Byb3ZpZGVyL0luZGV4VGVzdHMuY3MKQEAgLTAsMCArMSw5MSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlcjsKK3VzaW5nIEdyZW1saW4uTmV0LlN0cnVjdHVyZS5JTy5HcmFwaFNPTjsKK3VzaW5nIE5ld3RvbnNvZnQuSnNvbi5MaW5xOwordXNpbmcgWHVuaXQ7Cit1c2luZyBYdW5pdC5TZGs7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QuRG9jcy5EZXYuUHJvdmlkZXIKK3sKKy8vIHRhZzo6bXlUeXBlU2VyaWFsaXphdGlvbltdCitpbnRlcm5hbCBjbGFzcyBNeVR5cGUKK3sKKyAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHcmFwaHNvblByZWZpeCA9ICJwcm92aWRlcngiOworICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIEdyYXBoc29uQmFzZVR5cGUgPSAiTXlUeXBlIjsKKyAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHcmFwaHNvblR5cGUgPSBHcmFwaFNPTlV0aWwuRm9ybWF0VHlwZU5hbWUoR3JhcGhzb25QcmVmaXgsIEdyYXBoc29uQmFzZVR5cGUpOworCisgICAgcHVibGljIE15VHlwZShpbnQgeCwgaW50IHkpCisgICAgeworICAgICAgICBYID0geDsKKyAgICAgICAgWSA9IHk7CisgICAgfQorCisgICAgcHVibGljIGludCBYIHsgZ2V0OyB9CisgICAgcHVibGljIGludCBZIHsgZ2V0OyB9Cit9CisKK2ludGVybmFsIGNsYXNzIE15Q2xhc3NXcml0ZXIgOiBJR3JhcGhTT05TZXJpYWxpemVyCit7CisgICAgcHVibGljIERpY3Rpb25hcnk8c3RyaW5nLCBkeW5hbWljPiBEaWN0aWZ5KGR5bmFtaWMgb2JqZWN0RGF0YSwgR3JhcGhTT05Xcml0ZXIgd3JpdGVyKQorICAgIHsKKyAgICAgICAgTXlUeXBlIG15VHlwZSA9IG9iamVjdERhdGE7CisgICAgICAgIHZhciB2YWx1ZURpY3QgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KKyAgICAgICAgeworICAgICAgICAgICAgeyJ4IiwgbXlUeXBlLlh9LAorICAgICAgICAgICAgeyJ5IiwgbXlUeXBlLll9CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBHcmFwaFNPTlV0aWwuVG9UeXBlZFZhbHVlKG5hbWVvZihUZXN0Q2xhc3MpLCB2YWx1ZURpY3QsIE15VHlwZS5HcmFwaHNvblByZWZpeCk7CisgICAgfQorfQorCitpbnRlcm5hbCBjbGFzcyBNeVR5cGVSZWFkZXIgOiBJR3JhcGhTT05EZXNlcmlhbGl6ZXIKK3sKKyAgICBwdWJsaWMgZHluYW1pYyBPYmplY3RpZnkoSlRva2VuIGdyYXBoc29uT2JqZWN0LCBHcmFwaFNPTlJlYWRlciByZWFkZXIpCisgICAgeworICAgICAgICB2YXIgeCA9IHJlYWRlci5Ub09iamVjdChncmFwaHNvbk9iamVjdFsieCJdKTsKKyAgICAgICAgdmFyIHkgPSByZWFkZXIuVG9PYmplY3QoZ3JhcGhzb25PYmplY3RbInkiXSk7CisgICAgICAgIHJldHVybiBuZXcgTXlUeXBlKHgsIHkpOworICAgIH0KK30KKy8vIGVuZDo6bXlUeXBlU2VyaWFsaXphdGlvbltdCisgICAgCisgICAgcHVibGljIGNsYXNzIEluZGV4VGVzdHMKKyAgICB7CisgICAgICAgIFtGYWN0KFNraXA9Ik5vIFNlcnZlciB1bmRlciBsb2NhbGhvc3QiKV0KKyAgICAgICAgcHVibGljIHZvaWQgU3VwcG9ydGluZ0dyZW1saW5OZXRJT1Rlc3RzKCkKKyAgICAgICAgeworLy8gdGFnOjpzdXBwb3J0aW5nR3JlbWxpbk5ldElPW10KK3ZhciBncmFwaHNvblJlYWRlciA9IG5ldyBHcmFwaFNPTjNSZWFkZXIoCisgICAgbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBJR3JhcGhTT05EZXNlcmlhbGl6ZXI+IHt7TXlUeXBlLkdyYXBoc29uVHlwZSwgbmV3IE15VHlwZVJlYWRlcigpfX0pOwordmFyIGdyYXBoc29uV3JpdGVyID0gbmV3IEdyYXBoU09OM1dyaXRlcigKKyAgICBuZXcgRGljdGlvbmFyeTxUeXBlLCBJR3JhcGhTT05TZXJpYWxpemVyPiB7e3R5cGVvZihNeVR5cGUpLCBuZXcgTXlDbGFzc1dyaXRlcigpfX0pOworCit2YXIgZ3JlbWxpbkNsaWVudCA9IG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSwgZ3JhcGhzb25SZWFkZXIsIGdyYXBoc29uV3JpdGVyKTsKKy8vIGVuZDo6c3VwcG9ydGluZ0dyZW1saW5OZXRJT1tdCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpbkFwcGxpY2F0aW9uc1Rlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpbkFwcGxpY2F0aW9uc1Rlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NzE2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluQXBwbGljYXRpb25zVGVzdHMuY3MKQEAgLTAsMCArMSw2MiBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXI7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXIuUmVtb3RlOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKK3VzaW5nIFh1bml0OworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LkRvY3MuUmVmZXJlbmNlCit7CisgICAgcHVibGljIGNsYXNzIEdyZW1saW5BcHBsaWNhdGlvbnNUZXN0cworICAgIHsKKyAgICAgICAgW0ZhY3QoU2tpcD0iTm8gU2VydmVyIHVuZGVyIGxvY2FsaG9zdCIpXQorICAgICAgICBwdWJsaWMgYXN5bmMgVGFzayBDb25uZWN0aW5nVmlhRHJpdmVyc1Rlc3QoKQorICAgICAgICB7CisvLyB0YWc6OmNvbm5lY3RpbmdWaWFEcml2ZXJzW10KKy8vIHNjcmlwdAordmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4Mik7Cit1c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChncmVtbGluU2VydmVyKSkKK3sKKyAgICB2YXIgYmluZGluZ3MgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KKyAgICB7CisgICAgICAgIHsibmFtZSIsICJtYXJrbyJ9CisgICAgfTsKKworICAgIHZhciByZXNwb25zZSA9CisgICAgICAgIGF3YWl0IGdyZW1saW5DbGllbnQuU3VibWl0V2l0aFNpbmdsZVJlc3VsdEFzeW5jPG9iamVjdD4oImcuVigpLmhhcygncGVyc29uJywnbmFtZScsbmFtZSkub3V0KCdrbm93cycpIiwKKyAgICAgICAgICAgIGJpbmRpbmdzKTsKK30KKworLy8gYnl0ZWNvZGUKK3VzaW5nICh2YXIgZ3JlbWxpbkNsaWVudCA9IG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSkpCit7CisgICAgdmFyIGcgPSBUcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGdyZW1saW5DbGllbnQpKTsKKyAgICB2YXIgbGlzdCA9IGcuVigpLkhhcygicGVyc29uIiwgIm5hbWUiLCAibWFya28iKS5PdXQoImtub3dzIikuVG9MaXN0KCk7Cit9CisvLyBlbmQ6OmNvbm5lY3RpbmdWaWFEcml2ZXJzW10KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNEc2wuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNEc2wuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JlYjQ3OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c0RzbC5jcwpAQCAtMCwwICsxLDgxIEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsOwordXNpbmcgR3JlbWxpbi5OZXQuU3RydWN0dXJlOworCisvLyB0YWc6OmRzbFtdCituYW1lc3BhY2UgRHNsIAoreworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU29jaWFsVHJhdmVyc2FsRXh0ZW5zaW9ucworICAgIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiBLbm93cyh0aGlzIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQsIHN0cmluZyBwZXJzb25OYW1lKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHQuT3V0KCJrbm93cyIpLkhhc0xhYmVsKCJwZXJzb24iKS5IYXMoIm5hbWUiLCBwZXJzb25OYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBpbnQ+IFlvdW5nZXN0RnJpZW5kc0FnZSh0aGlzIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQpIAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdC5PdXQoImtub3dzIikuSGFzTGFiZWwoInBlcnNvbiIpLlZhbHVlczxpbnQ+KCJhZ2UiKS5NaW48aW50PigpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsbG9uZz4gQ3JlYXRlZEF0TGVhc3QodGhpcyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0LCBsb25nIG51bWJlcikgCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0Lk91dEUoImNyZWF0ZWQiKS5Db3VudCgpLklzKFAuR3RlKG51bWJlcikpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBfX1NvY2lhbCAKKyAgICB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LFZlcnRleD4gS25vd3Moc3RyaW5nIHBlcnNvbk5hbWUpCisgICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX18uT3V0KCJrbm93cyIpLkhhc0xhYmVsKCJwZXJzb24iKS5IYXMoIm5hbWUiLCBwZXJzb25OYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBpbnQ+IFlvdW5nZXN0RnJpZW5kc0FnZSgpIAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX18uT3V0KCJrbm93cyIpLkhhc0xhYmVsKCJwZXJzb24iKS5WYWx1ZXM8aW50PigiYWdlIikuTWluPGludD4oKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LGxvbmc+IENyZWF0ZWRBdExlYXN0KGxvbmcgbnVtYmVyKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9fLk91dEUoImNyZWF0ZWQiKS5Db3VudCgpLklzKFAuR3RlKG51bWJlcikpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VFeHRlbnNpb25zCisgICAgeworICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IFBlcnNvbnModGhpcyBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnLCBwYXJhbXMgc3RyaW5nW10gcGVyc29uTmFtZXMpIAorICAgICAgICB7CisgICAgICAgICAgICBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0ID0gZy5WKCkuSGFzTGFiZWwoInBlcnNvbiIpOworCisgICAgICAgICAgICBpZiAocGVyc29uTmFtZXMuTGVuZ3RoID4gMCkgCisgICAgICAgICAgICB7ICAgIAorICAgICAgICAgICAgICAgIHQgPSB0LkhhcygibmFtZSIsIFAuV2l0aGluKHBlcnNvbk5hbWVzKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0OworICAgICAgICB9CisgICAgfQorfQorLy8gZW5kOjpkc2xbXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c0RzbFRlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzRHNsVGVzdHMuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjMGM0YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c0RzbFRlc3RzLmNzCkBAIC0wLDAgKzEsNjcgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLlJlbW90ZTsKKy8vIHRhZzo6ZHNsVXNpbmdbXQordXNpbmcgRHNsOwordXNpbmcgc3RhdGljIERzbC5fX1NvY2lhbDsKKy8vIGVuZDo6ZHNsVXNpbmdbXQordXNpbmcgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LlByb2Nlc3MuVHJhdmVyc2FsLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2U7Cit1c2luZyBYdW5pdDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Eb2NzLlJlZmVyZW5jZQoreworICAgIHB1YmxpYyBjbGFzcyBHcmVtbGluQXBwbGljYXRpb25zRHNsVGVzdHMKKyAgICB7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkgX2Nvbm5lY3Rpb25GYWN0b3J5ID0gbmV3IFJlbW90ZUNvbm5lY3Rpb25GYWN0b3J5KCk7CisKKyAgICAgICAgW0ZhY3QoU2tpcCA9ICJObyBTZXJ2ZXIgdW5kZXIgbG9jYWxob3N0IildCisgICAgICAgIHB1YmxpYyB2b2lkIERzbFRlc3QoKQorICAgICAgICB7CisvLyB0YWc6OmRzbEV4YW1wbGVzW10KK3ZhciBjb25uZWN0aW9uID0gbmV3IERyaXZlclJlbW90ZUNvbm5lY3Rpb24obmV3IEdyZW1saW5DbGllbnQobmV3IEdyZW1saW5TZXJ2ZXIoImxvY2FsaG9zdCIsIDgxODIpKSk7Cit2YXIgc29jaWFsID0gVHJhdmVyc2FsKCkuV2l0aFJlbW90ZShjb25uZWN0aW9uKTsKKworc29jaWFsLlBlcnNvbnMoIm1hcmtvIikuS25vd3MoImpvc2giKTsKK3NvY2lhbC5QZXJzb25zKCJtYXJrbyIpLllvdW5nZXN0RnJpZW5kc0FnZSgpOworc29jaWFsLlBlcnNvbnMoKS5GaWx0ZXIoQ3JlYXRlZEF0TGVhc3QoMikpLkNvdW50KCk7CisvLyBlbmQ6OmRzbEV4YW1wbGVzW10KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZFVzZURzbCgpIAorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCk7CisgICAgICAgICAgICB2YXIgc29jaWFsID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLlRyYXZlcnNhbCgpLldpdGhSZW1vdGUoY29ubmVjdGlvbik7CisKKyAgICAgICAgICAgIEFzc2VydC5Ob3ROdWxsKHNvY2lhbC5QZXJzb25zKCJtYXJrbyIpLktub3dzKCJqb3NoIikuTmV4dCgpKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCgyNywgc29jaWFsLlBlcnNvbnMoIm1hcmtvIikuWW91bmdlc3RGcmllbmRzQWdlKCkuTmV4dCgpKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCg0LCBzb2NpYWwuUGVyc29ucygpLkNvdW50KCkuTmV4dCgpKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCgyLCBzb2NpYWwuUGVyc29ucygibWFya28iLCAiam9zaCIpLkNvdW50KCkuTmV4dCgpKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCgxLCBzb2NpYWwuUGVyc29ucygpLkZpbHRlcihfX1NvY2lhbC5DcmVhdGVkQXRMZWFzdCgyKSkuQ291bnQoKS5OZXh0KCkpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c1Rlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzVGVzdHMuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzYWZhNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c1Rlc3RzLmNzCkBAIC0wLDAgKzEsMTE5IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXI7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXIuUmVtb3RlOwordXNpbmcgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LlByb2Nlc3MuVHJhdmVyc2FsLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlN0ZXAuVXRpbDsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlN0cmF0ZWd5LkRlY29yYXRpb247Cit1c2luZyBHcmVtbGluLk5ldC5TdHJ1Y3R1cmUuSU8uR3JhcGhTT047Cit1c2luZyBYdW5pdDsKKy8vIHRhZzo6Y29tbW9uSW1wb3J0c1tdCit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLl9fOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlA7Cit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuT3JkZXI7Cit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuT3BlcmF0b3I7Cit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuUG9wOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlNjb3BlOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlRleHRQOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLkNvbHVtbjsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5EaXJlY3Rpb247Cit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuVDsKKy8vIGVuZDo6Y29tbW9uSW1wb3J0c1tdCisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QuRG9jcy5SZWZlcmVuY2UKK3sKKyAgICBwdWJsaWMgY2xhc3MgR3JlbWxpblZhcmlhbnRzVGVzdHMKKyAgICB7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IFRyYXZlcnNhbCgpCisgICAgICAgICAgICAuV2l0aFJlbW90ZShuZXcgUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCkpOworICAgICAgICAKKyAgICAgICAgW0ZhY3QoU2tpcD0iTm8gU2VydmVyIHVuZGVyIGxvY2FsaG9zdCIpXQorICAgICAgICBwdWJsaWMgdm9pZCBDb25uZWN0aW5nVGVzdCgpCisgICAgICAgIHsKKy8vIHRhZzo6Y29ubmVjdGluZ1tdCit2YXIgcmVtb3RlQ29ubmVjdGlvbiA9IG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSksICJnIik7Cit2YXIgZyA9IFRyYXZlcnNhbCgpLldpdGhSZW1vdGUocmVtb3RlQ29ubmVjdGlvbik7CisvLyBlbmQ6OmNvbm5lY3RpbmdbXQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdChTa2lwPSJObyBTZXJ2ZXIgdW5kZXIgbG9jYWxob3N0IildCisgICAgICAgIHB1YmxpYyB2b2lkIFNlcmlhbGl6YXRpb25UZXN0KCkKKyAgICAgICAgeworLy8gdGFnOjpzZXJpYWxpemF0aW9uW10KK3ZhciBjbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MiksIG5ldyBHcmFwaFNPTjJSZWFkZXIoKSwKKyAgICBuZXcgR3JhcGhTT04yV3JpdGVyKCksIEdyZW1saW5DbGllbnQuR3JhcGhTT04yTWltZVR5cGUpOworLy8gZW5kOjpzZXJpYWxpemF0aW9uW10KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3QoU2tpcD0iV2UgY2FuJ3QgYXBwbHkgc3RyYXRlZ2llcyIpXQorICAgICAgICBwdWJsaWMgdm9pZCBUcmF2ZXJzYWxTdHJhdGVnaWVzVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBnID0gdGhpcy5nOworLy8gdGFnOjp0cmF2ZXJzYWxTdHJhdGVnaWVzW10KK2cgPSBnLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzOiBIYXNMYWJlbCgicGVyc29uIiksCisgICAgZWRnZXM6IEhhcygid2VpZ2h0IiwgR3QoMC41KSkpKTsKK3ZhciBuYW1lcyA9IGcuVigpLlZhbHVlczxzdHJpbmc+KCJuYW1lIikuVG9MaXN0KCk7ICAvLyBuYW1lczogW21hcmtvLCB2YWRhcywgam9zaCwgcGV0ZXJdCisKK2cgPSBnLldpdGhvdXRTdHJhdGVnaWVzKHR5cGVvZihTdWJncmFwaFN0cmF0ZWd5KSk7CituYW1lcyA9IGcuVigpLlZhbHVlczxzdHJpbmc+KCJuYW1lIikuVG9MaXN0KCk7IC8vIG5hbWVzOiBbbWFya28sIHZhZGFzLCBsb3AsIGpvc2gsIHJpcHBsZSwgcGV0ZXJdCisKK3ZhciBlZGdlVmFsdWVNYXBzID0gZy5WKCkuT3V0RSgpLlZhbHVlTWFwPG9iamVjdCwgb2JqZWN0PigpLldpdGgoV2l0aE9wdGlvbnMuVG9rZW5zKS5Ub0xpc3QoKTsKKy8vIGVkZ2VWYWx1ZU1hcHM6IFtbbGFiZWw6Y3JlYXRlZCwgaWQ6OSwgd2VpZ2h0OjAuNF0sIFtsYWJlbDprbm93cywgaWQ6Nywgd2VpZ2h0OjAuNV0sIFtsYWJlbDprbm93cywgaWQ6OCwgd2VpZ2h0OjEuMF0sCisvLyAgICAgW2xhYmVsOmNyZWF0ZWQsIGlkOjEwLCB3ZWlnaHQ6MS4wXSwgW2xhYmVsOmNyZWF0ZWQsIGlkOjExLCB3ZWlnaHQ6MC40XSwgW2xhYmVsOmNyZWF0ZWQsIGlkOjEyLCB3ZWlnaHQ6MC4yXV0KKworZyA9IGcuV2l0aENvbXB1dGVyKHdvcmtlcnM6IDIsIHZlcnRpY2VzOiBIYXMoIm5hbWUiLCAibWFya28iKSk7CituYW1lcyA9IGcuVigpLlZhbHVlczxzdHJpbmc+KCJuYW1lIikuVG9MaXN0KCk7ICAvLyBuYW1lczogW21hcmtvXQorCitlZGdlVmFsdWVNYXBzID0gZy5WKCkuT3V0RSgpLlZhbHVlTWFwPG9iamVjdCwgb2JqZWN0PigpLldpdGgoV2l0aE9wdGlvbnMuVG9rZW5zKS5Ub0xpc3QoKTsKKy8vIGVkZ2VWYWx1ZU1hcHM6IFtbbGFiZWw6Y3JlYXRlZCwgaWQ6OSwgd2VpZ2h0OjAuNF0sIFtsYWJlbDprbm93cywgaWQ6Nywgd2VpZ2h0OjAuNV0sIFtsYWJlbDprbm93cywgaWQ6OCwgd2VpZ2h0OjEuMF1dCisvLyBlbmQ6OnRyYXZlcnNhbFN0cmF0ZWdpZXNbXQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdChTa2lwPSJObyBTZXJ2ZXIgdW5kZXIgbG9jYWxob3N0IildCisgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrIFN1Ym1pdHRpbmdTY3JpcHRzVGVzdCgpCisgICAgICAgIHsKKy8vIHRhZzo6c3VibWl0dGluZ1NjcmlwdHNbXQordmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4Mik7Cit1c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChncmVtbGluU2VydmVyKSkKK3sKKyAgICB2YXIgcmVzcG9uc2UgPQorICAgICAgICBhd2FpdCBncmVtbGluQ2xpZW50LlN1Ym1pdFdpdGhTaW5nbGVSZXN1bHRBc3luYzxzdHJpbmc+KCJnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpIik7Cit9CisvLyBlbmQ6OnN1Ym1pdHRpbmdTY3JpcHRzW10KKyAgICAgICAgfQorCisgICAgICAgIFtGYWN0KFNraXAgPSAiTm8gU2VydmVyIHVuZGVyIGxvY2FsaG9zdCIpXQorICAgICAgICBwdWJsaWMgdm9pZCBTdWJtaXR0aW5nU2NyaXB0c1dpdGhBdXRoZW50aWNhdGlvblRlc3QoKQorICAgICAgICB7CisvLyB0YWc6OnN1Ym1pdHRpbmdTY3JpcHRzV2l0aEF1dGhlbnRpY2F0aW9uW10KK3ZhciB1c2VybmFtZSA9ICJ1c2VybmFtZSI7Cit2YXIgcGFzc3dvcmQgPSAicGFzc3dvcmQiOwordmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MiwgdHJ1ZSwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKKy8vIGVuZDo6c3VibWl0dGluZ1NjcmlwdHNXaXRoQXV0aGVudGljYXRpb25bXQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0ludHJvVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYmM1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzCkBAIC0wLDAgKzEsNzEgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLlJlbW90ZTsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsOworLy8gdGFnOjp0cmF2ZXJzYWxTb3VyY2VVc2luZ1tdCit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlOworLy8gZW5kOjp0cmF2ZXJzYWxTb3VyY2VVc2luZ1tdCit1c2luZyBYdW5pdDsKK3VzaW5nIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Qcm9jZXNzLlRyYXZlcnNhbC5Ecml2ZXJSZW1vdGVDb25uZWN0aW9uOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LkRvY3MuUmVmZXJlbmNlCit7CisgICAgcHVibGljIGNsYXNzIEludHJvVGVzdHMKKyAgICB7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IFRyYXZlcnNhbCgpCisgICAgICAgICAgICAuV2l0aFJlbW90ZShuZXcgUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCkpOworCisgICAgICAgIFtGYWN0KFNraXA9Ik5vIFNlcnZlciB1bmRlciBsb2NhbGhvc3QiKV0KKyAgICAgICAgcHVibGljIHZvaWQgVHJhdmVyc2FsU291cmNlQ3JlYXRpb25UZXN0KCkKKyAgICAgICAgeworLy8gdGFnOjp0cmF2ZXJzYWxTb3VyY2VDcmVhdGlvbltdCit2YXIgZyA9IFRyYXZlcnNhbCgpLldpdGhSZW1vdGUoCisgICAgbmV3IERyaXZlclJlbW90ZUNvbm5lY3Rpb24obmV3IEdyZW1saW5DbGllbnQobmV3IEdyZW1saW5TZXJ2ZXIoImxvY2FsaG9zdCIsIDgxODIpKSkpOworLy8gZW5kOjp0cmF2ZXJzYWxTb3VyY2VDcmVhdGlvbltdCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtGYWN0KFNraXA9IkdyYXBoIG1hbmlwdWxhdGlvbiB3b3VsZCBicmVhayBvdGhlciB0ZXN0cyIpXQorICAgICAgICBwdWJsaWMgdm9pZCBCYXNpY0dyZW1saW5BZGRzVGVzdCgpCisgICAgICAgIHsKKy8vIHRhZzo6YmFzaWNHcmVtbGluQWRkc1tdCit2YXIgdjEgPSBnLkFkZFYoInBlcnNvbiIpLlByb3BlcnR5KCJuYW1lIiwgIm1hcmtvIikuTmV4dCgpOwordmFyIHYyID0gZy5BZGRWKCJwZXJzb24iKS5Qcm9wZXJ0eSgibmFtZSIsICJzdGVwaGVuIikuTmV4dCgpOworZy5WKHYxKS5BZGRFKCJrbm93cyIpLlRvKHYyKS5Qcm9wZXJ0eSgid2VpZ2h0IiwgMC43NSkuSXRlcmF0ZSgpOworLy8gZW5kOjpiYXNpY0dyZW1saW5BZGRzW10KKyAgICAgICAgfQorCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBCYXNpY0dyZW1saW5NYXJrb0tub3dzVGVzdCgpCisgICAgICAgIHsKKy8vIHRhZzo6YmFzaWNHcmVtbGluTWFya29Lbm93c1tdCit2YXIgbWFya28gPSBnLlYoKS5IYXMoInBlcnNvbiIsICJuYW1lIiwgIm1hcmtvIikuTmV4dCgpOwordmFyIHBlb3BsZU1hcmtvS25vd3MgPSBnLlYoKS5IYXMoInBlcnNvbiIsICJuYW1lIiwgIm1hcmtvIikuT3V0KCJrbm93cyIpLlRvTGlzdCgpOworLy8gZW5kOjpiYXNpY0dyZW1saW5NYXJrb0tub3dzW10KKworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCJwZXJzb24iLCBtYXJrby5MYWJlbCk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMiwgcGVvcGxlTWFya29Lbm93cy5Db3VudCk7CisgICAgICAgIH0KKyAgICB9Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Ecml2ZXIvQ29ubmVjdGlvblBvb2xUZXN0cy5jcwppbmRleCAyMWEyNjI3Li5jNGY1ZjdjIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Ecml2ZXIvQ29ubmVjdGlvblBvb2xUZXN0cy5jcworKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Ecml2ZXIvQ29ubmVjdGlvblBvb2xUZXN0cy5jcwpAQCAtMjUsNiArMjUsNyBAQAogdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CiB1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwogdXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLkV4Y2VwdGlvbnM7CiB1c2luZyBHcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QuVXRpbDsKIHVzaW5nIFh1bml0OwogCkBAIC0zOSw1MiArNDAsNTIgQEAKICAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIEV4ZWN1dGVNdWx0aXBsZUxvbmdSdW5uaW5nUmVxdWVzdHNJblBhcmFsbGVsKElHcmVtbGluQ2xpZW50IGdyZW1saW5DbGllbnQsIGludCBuclJlcXVlc3RzLAogICAgICAgICAgICAgaW50IHJlcXVlc3RSdW5uaW5nVGltZUluTXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBsb25nUnVubmluZ1JlcXVlc3RNc2cgPSBfcmVxdWVzdE1lc3NhZ2VQcm92aWRlci5HZXRTbGVlcE1lc3NhZ2UocmVxdWVzdFJ1bm5pbmdUaW1lSW5Ncyk7CiAgICAgICAgICAgICB2YXIgdGFza3MgPSBuZXcgTGlzdDxUYXNrPihuclJlcXVlc3RzKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnJSZXF1ZXN0czsgaSsrKQotICAgICAgICAgICAgICAgIHRhc2tzLkFkZChncmVtbGluQ2xpZW50LlN1Ym1pdEFzeW5jKGxvbmdSdW5uaW5nUmVxdWVzdE1zZykpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRhc2tzLkFkZChncmVtbGluQ2xpZW50LlN1Ym1pdEFzeW5jKF9yZXF1ZXN0TWVzc2FnZVByb3ZpZGVyLkdldFNsZWVwTWVzc2FnZShyZXF1ZXN0UnVubmluZ1RpbWVJbk1zKSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgYXdhaXQgVGFzay5XaGVuQWxsKHRhc2tzKTsKICAgICAgICAgfQogCi0gICAgICAgIFtGYWN0XQotICAgICAgICBwdWJsaWMgYXN5bmMgVGFzayBTaG91bGRSZXVzZUNvbm5lY3Rpb25Gb3JTZXF1ZW50aWFsUmVxdWVzdHMoKQorICAgICAgICBbVGhlb3J5XQorICAgICAgICBbSW5saW5lRGF0YSgxKV0KKyAgICAgICAgW0lubGluZURhdGEoMildCisgICAgICAgIFtJbmxpbmVEYXRhKDgpXQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRDcmVhdGVDb25maWd1cmVkTnJDb25uZWN0aW9ucyhpbnQgY29ubmVjdGlvblBvb2xTaXplKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZ3JlbWxpblNlcnZlciA9IG5ldyBHcmVtbGluU2VydmVyKFRlc3RIb3N0LCBUZXN0UG9ydCk7Ci0gICAgICAgICAgICB1c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChncmVtbGluU2VydmVyKSkKKyAgICAgICAgICAgIHVzaW5nICh2YXIgZ3JlbWxpbkNsaWVudCA9IENyZWF0ZUdyZW1saW5DbGllbnQoY29ubmVjdGlvblBvb2xTaXplKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhd2FpdCBncmVtbGluQ2xpZW50LlN1Ym1pdEFzeW5jKCIiKTsKLSAgICAgICAgICAgICAgICBhd2FpdCBncmVtbGluQ2xpZW50LlN1Ym1pdEFzeW5jKCIiKTsKLQogICAgICAgICAgICAgICAgIHZhciBuckNvbm5lY3Rpb25zID0gZ3JlbWxpbkNsaWVudC5OckNvbm5lY3Rpb25zOwotICAgICAgICAgICAgICAgIEFzc2VydC5FcXVhbCgxLCBuckNvbm5lY3Rpb25zKTsKKyAgICAgICAgICAgICAgICBBc3NlcnQuRXF1YWwoY29ubmVjdGlvblBvb2xTaXplLCBuckNvbm5lY3Rpb25zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIFtGYWN0XQotICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRPbmx5Q3JlYXRlQ29ubmVjdGlvbldoZW5OZWNlc3NhcnkoKQorICAgICAgICBwdWJsaWMgYXN5bmMgVGFzayBTaG91bGRUaHJvd0Nvbm5lY3Rpb25Qb29sQnVzeUV4Y2VwdGlvbldoZW5Qb29sSXNCdXN5KCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcihUZXN0SG9zdCwgVGVzdFBvcnQpOwotICAgICAgICAgICAgdXNpbmcgKHZhciBncmVtbGluQ2xpZW50ID0gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlcikpCisgICAgICAgICAgICBjb25zdCBpbnQgbnJQYXJhbGxlbFJlcXVlc3RzID0gMjsKKyAgICAgICAgICAgIHVzaW5nICh2YXIgZ3JlbWxpbkNsaWVudCA9IENyZWF0ZUdyZW1saW5DbGllbnQoY29ubmVjdGlvblBvb2xTaXplOiAxLCBtYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uOiAxKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgbnJDb25uZWN0aW9ucyA9IGdyZW1saW5DbGllbnQuTnJDb25uZWN0aW9uczsKLSAgICAgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMCwgbnJDb25uZWN0aW9ucyk7CisgICAgICAgICAgICAgICAgY29uc3QgaW50IHNsZWVwVGltZSA9IDEwMDsKKworICAgICAgICAgICAgICAgIHZhciB0aHJvd25FeGNlcHRpb24gPSBhd2FpdCBBc3NlcnQuVGhyb3dzQXN5bmM8Q29ubmVjdGlvblBvb2xCdXN5RXhjZXB0aW9uPigoKSA9PgorICAgICAgICAgICAgICAgICAgICBFeGVjdXRlTXVsdGlwbGVMb25nUnVubmluZ1JlcXVlc3RzSW5QYXJhbGxlbChncmVtbGluQ2xpZW50LCBuclBhcmFsbGVsUmVxdWVzdHMsIHNsZWVwVGltZSkpOworICAgICAgICAgICAgICAgIEFzc2VydC5Db250YWlucyhuYW1lb2YoQ29ubmVjdGlvblBvb2xTZXR0aW5ncy5NYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKSwgdGhyb3duRXhjZXB0aW9uLk1lc3NhZ2UpOworICAgICAgICAgICAgICAgIEFzc2VydC5Db250YWlucyhuYW1lb2YoQ29ubmVjdGlvblBvb2xTZXR0aW5ncy5Qb29sU2l6ZSksIHRocm93bkV4Y2VwdGlvbi5NZXNzYWdlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFtGYWN0XQotICAgICAgICBwdWJsaWMgYXN5bmMgVGFzayBTaG91bGRFeGVjdXRlUGFyYWxsZWxSZXF1ZXN0c09uRGlmZmVyZW50Q29ubmVjdGlvbnMoKQorICAgICAgICBwcml2YXRlIHN0YXRpYyBHcmVtbGluQ2xpZW50IENyZWF0ZUdyZW1saW5DbGllbnQoaW50IGNvbm5lY3Rpb25Qb29sU2l6ZSA9IDIsIGludCBtYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uID0gNCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcihUZXN0SG9zdCwgVGVzdFBvcnQpOwotICAgICAgICAgICAgdXNpbmcgKHZhciBncmVtbGluQ2xpZW50ID0gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlcikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHNsZWVwVGltZSA9IDUwOwotICAgICAgICAgICAgICAgIHZhciBuclBhcmFsbGVsUmVxdWVzdHMgPSA1OwotCi0gICAgICAgICAgICAgICAgYXdhaXQgRXhlY3V0ZU11bHRpcGxlTG9uZ1J1bm5pbmdSZXF1ZXN0c0luUGFyYWxsZWwoZ3JlbWxpbkNsaWVudCwgbnJQYXJhbGxlbFJlcXVlc3RzLCBzbGVlcFRpbWUpOwotCi0gICAgICAgICAgICAgICAgdmFyIG5yQ29ubmVjdGlvbnMgPSBncmVtbGluQ2xpZW50Lk5yQ29ubmVjdGlvbnM7Ci0gICAgICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5yUGFyYWxsZWxSZXF1ZXN0cywgbnJDb25uZWN0aW9ucyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlciwKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uUG9vbFNldHRpbmdzOiBuZXcgQ29ubmVjdGlvblBvb2xTZXR0aW5ncworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgUG9vbFNpemUgPSBjb25uZWN0aW9uUG9vbFNpemUsCisgICAgICAgICAgICAgICAgICAgIE1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gPSBtYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uCisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRHJpdmVyL0dyZW1saW5DbGllbnRUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RyaXZlci9HcmVtbGluQ2xpZW50VGVzdHMuY3MKaW5kZXggMzIxZGQ4ZS4uZTJjNmVmNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRHJpdmVyL0dyZW1saW5DbGllbnRUZXN0cy5jcworKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Ecml2ZXIvR3JlbWxpbkNsaWVudFRlc3RzLmNzCkBAIC0xOTgsNiArMTk4LDIyIEBACiAgICAgICAgIH0KIAogICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgU2hvdWxkUmV0dXJuUmVzcG9uc2VBdHRyaWJ1dGVzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcihUZXN0SG9zdCwgVGVzdFBvcnQpOworICAgICAgICAgICAgdXNpbmcgKHZhciBncmVtbGluQ2xpZW50ID0gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlcikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJlcXVlc3RNc2cgPSBfcmVxdWVzdE1lc3NhZ2VQcm92aWRlci5HZXREdW1teU1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0U2V0ID0gYXdhaXQgZ3JlbWxpbkNsaWVudC5TdWJtaXRBc3luYzxpbnQ+KHJlcXVlc3RNc2cpOworCisgICAgICAgICAgICAgICAgQXNzZXJ0Lk5vdE51bGwocmVzdWx0U2V0LlN0YXR1c0F0dHJpYnV0ZXMpOworCisgICAgICAgICAgICAgICAgdmFyIHZhbHVlcz0gcmVzdWx0U2V0LlN0YXR1c0F0dHJpYnV0ZXNbIkB2YWx1ZSJdIGFzIEpBcnJheTsKKyAgICAgICAgICAgICAgICBBc3NlcnQuVHJ1ZSh2YWx1ZXMuRmlyc3QuVG9TdHJpbmcoKS5FcXVhbHMoImhvc3QiKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBbRmFjdF0KICAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgU2hvdWxkVGhyb3dPbkV4ZWN1dGlvbk9mU2ltcGxlSW52YWxpZFNjcmlwdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoVGVzdEhvc3QsIFRlc3RQb3J0KTsKQEAgLTI5Miw0ICszMDgsNCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vQ29tbW9uU3RlcHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL0NvbW1vblN0ZXBzLmNzCmluZGV4IDk2ODUxZDIuLmQ0YjJhYWIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vQ29tbW9uU3RlcHMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9Db21tb25TdGVwcy5jcwpAQCAtNTEsNiArNTEsNyBAQAogICAgICAgICAgICAgbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBGdW5jPHN0cmluZywgc3RyaW5nLCBvYmplY3Q+PgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHtAImRcWyhbXGQuXSspXF1cLihbaWxmZG1dKSIsIFRvTnVtYmVyfSwKKyAgICAgICAgICAgICAgICB7QCJEXFsoLispXF0iLCBUb0RpcmVjdGlvbn0sCiAgICAgICAgICAgICAgICAge0AidlxbKC4rKVxdIiwgVG9WZXJ0ZXh9LAogICAgICAgICAgICAgICAgIHtAInZcWyguKylcXVwuaWQiLCAoeCwgZ3JhcGhOYW1lKSA9PiBUb1ZlcnRleCh4LCBncmFwaE5hbWUpLklkfSwKICAgICAgICAgICAgICAgICB7QCJ2XFsoLispXF1cLnNpZCIsICh4LCBncmFwaE5hbWUpID0+IFRvVmVydGV4KHgsIGdyYXBoTmFtZSkuSWQuVG9TdHJpbmcoKX0sCkBAIC05MCw3ICs5MSw3IEBACiAgICAgICAgIFtHaXZlbigidXNpbmcgdGhlIHBhcmFtZXRlciAoXFx3KykgZGVmaW5lZCBhcyBcIiguKilcIiIpXQogICAgICAgICBwdWJsaWMgdm9pZCBVc2luZ1BhcmFtZXRlcihzdHJpbmcgbmFtZSwgc3RyaW5nIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgcGFyc2VkVmFsdWUgPSBQYXJzZVZhbHVlKHZhbHVlLCBfZ3JhcGhOYW1lKTsKKyAgICAgICAgICAgIHZhciBwYXJzZWRWYWx1ZSA9IFBhcnNlVmFsdWUodmFsdWUuUmVwbGFjZSgiXFxcIiIsICJcIiIpLCBfZ3JhcGhOYW1lKTsKICAgICAgICAgICAgIF9wYXJhbWV0ZXJzLkFkZChuYW1lLCBwYXJzZWRWYWx1ZSk7CiAgICAgICAgIH0KIApAQCAtMjQ0LDYgKzI0NSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIFQuR2V0QnlWYWx1ZShlbnVtTmFtZSk7CiAgICAgICAgIH0KIAorICAgICAgICBwcml2YXRlIHN0YXRpYyBvYmplY3QgVG9EaXJlY3Rpb24oc3RyaW5nIGVudW1OYW1lLCBzdHJpbmcgZ3JhcGhOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uLkdldEJ5VmFsdWUoZW51bU5hbWUpOworICAgICAgICB9CisKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgb2JqZWN0IFRvTnVtYmVyKHN0cmluZyBzdHJpbmdOdW1iZXIsIHN0cmluZyBncmFwaE5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBOdW1lcmljUGFyc2Vyc1tzdHJpbmdOdW1iZXJbc3RyaW5nTnVtYmVyLkxlbmd0aCAtIDFdXSgKQEAgLTMwNiw4ICszMTIsNiBAQAogCiAgICAgICAgIHByaXZhdGUgc3RhdGljIG9iamVjdCBQYXJzZVZhbHVlKHN0cmluZyBzdHJpbmdWYWx1ZSwgc3RyaW5nIGdyYXBoTmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgLy8gUGFyc2VyIGlzc3VlOiBxdW90ZXMgYXJlIG5vdCBub3JtYWxpemVkCi0gICAgICAgICAgICBzdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlLlJlcGxhY2UoIlxcXCIiLCAiXCIiKTsKICAgICAgICAgICAgIEZ1bmM8c3RyaW5nLCBzdHJpbmcsIG9iamVjdD4gcGFyc2VyID0gbnVsbDsKICAgICAgICAgICAgIHN0cmluZyBleHRyYWN0ZWRWYWx1ZSA9IG51bGw7CiAgICAgICAgICAgICBmb3JlYWNoICh2YXIga3YgaW4gUGFyc2VycykKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vR2hlcmtpblRlc3RSdW5uZXIuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL0doZXJraW5UZXN0UnVubmVyLmNzCmluZGV4IDIwNTJhM2YuLjU5ZmQxMWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vR2hlcmtpblRlc3RSdW5uZXIuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9HaGVya2luVGVzdFJ1bm5lci5jcwpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICAgICAgbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBJZ25vcmVSZWFzb24+CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gQWRkIGhlcmUgdGhlIG5hbWUgb2Ygc2NlbmFyaW9zIHRvIGlnbm9yZSBhbmQgdGhlIHJlYXNvbiwgZS5nLjoKLSAgICAgICAgICAgICAgICAvLyB7ICJnX1ZfcGVlclByZXNzdXJlX2J5WGNsdXN0ZXJYX2J5WG91dEVYa25vd3NYWF9wYWdlUmFua1gxWF9ieVhyYW5rWF9ieVhvdXRFWGtub3dzWFhfdGltZXNYMlhfZ3JvdXBfYnlYY2x1c3RlclhfYnlYcmFua19zdW1YX2xpbWl0WDEwMFgiLCBJZ25vcmVSZWFzb24uTm9SZWFzb24gfSwKKyAgICAgICAgICAgICAgICAvL3sgImdfVl9wcm9wZXJ0aWVzX3Byb3BlcnRpZXNYc3RhcnRUaW1lWF9kcm9wIiwgSWdub3JlUmVhc29uLk5vUmVhc29uIH0sCiAgICAgICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgS2V5d29yZHMKQEAgLTM4Miw0ICszODIsNCBAQAogICAgICAgICAgICAgcmV0dXJuIHJvb3REaXIuRnVsbE5hbWU7CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL0lPUGFyYW1ldGVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL0lPUGFyYW1ldGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxM2U1ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vSU9QYXJhbWV0ZXIuY3MKQEAgLTAsMCArMSw4MiBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5EeW5hbWljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LkdoZXJraW4uVHJhdmVyc2FsRXZhbHVhdGlvbgoreworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gUmVwcmVzZW50cyBhIHBhcmFtZXRlciBmb3IgdGhlIGlvKCkgc3RlcCAtIChlLmcuIElPLmdyYXBobWwpCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBpbnRlcm5hbCBjbGFzcyBJT1BhcmFtZXRlciA6IElUb2tlblBhcmFtZXRlciwgSUVxdWF0YWJsZTxJT1BhcmFtZXRlcj4KKyAgICB7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nIF90ZXh0OworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyBfdmFsdWU7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgSU9QYXJhbWV0ZXIoc3RyaW5nIHRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIF90ZXh0ID0gdGV4dDsKKyAgICAgICAgICAgIHZhciBzZXBhcmF0b3JJbmRleCA9IHRleHQuSW5kZXhPZignLicpOworICAgICAgICAgICAgX3ZhbHVlID0gdGV4dC5TdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhJT1BhcmFtZXRlciBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF90ZXh0ID09IG90aGVyLl90ZXh0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG92ZXJyaWRlIGJvb2wgRXF1YWxzKG9iamVjdCBvYmopCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobnVsbCwgb2JqKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyh0aGlzLCBvYmopKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChvYmouR2V0VHlwZSgpICE9IEdldFR5cGUoKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIEVxdWFscygoSU9QYXJhbWV0ZXIpIG9iaik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgaW50IEdldEhhc2hDb2RlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF90ZXh0LkdldEhhc2hDb2RlKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgb2JqZWN0IEdldFZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGZpZWxkID0gdHlwZW9mKElPKS5HZXRGaWVsZChfdmFsdWUsIEJpbmRpbmdGbGFncy5TdGF0aWMgfCBCaW5kaW5nRmxhZ3MuUHVibGljKTsKKyAgICAgICAgICAgIHJldHVybiBmaWVsZC5HZXRWYWx1ZShudWxsKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIFNldENvbnRleHRQYXJhbWV0ZXJWYWx1ZXMoSURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHBhcmFtZXRlclZhbHVlcykKKyAgICAgICAgeworCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVHlwZSBHZXRQYXJhbWV0ZXJUeXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHR5cGVvZihTdHJpbmcpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9Nb2Rlcm5HcmFwaFR5cGVJbmZvcm1hdGlvbi5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9Nb2Rlcm5HcmFwaFR5cGVJbmZvcm1hdGlvbi5jcwppbmRleCA3N2VkNGViLi5kNzdlYzVlIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vTW9kZXJuR3JhcGhUeXBlSW5mb3JtYXRpb24uY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL01vZGVybkdyYXBoVHlwZUluZm9ybWF0aW9uLmNzCkBAIC02MSw2ICs2MSw3IEBACiAgICAgICAgICAgICBzd2l0Y2ggKG1ldGhvZC5OYW1lKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNhc2UgbmFtZW9mKEdyYXBoVHJhdmVyc2FsPG9iamVjdCxvYmplY3Q+LlByb3BlcnRpZXMpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgY2FzZSBuYW1lb2YoR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LG9iamVjdD4uVmFsdWVzKSB3aGVuIHBhcmFtZXRlclZhbHVlcy5MZW5ndGggPT0gMToKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmFtZXRlciBjb250YWlucyB0aGUgZWxlbWVudCBwcm9wZXJ0eSBuYW1lcwogICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9ICgoSUVudW1lcmFibGUpIHBhcmFtZXRlclZhbHVlc1twYXJhbWV0ZXJWYWx1ZXMuTGVuZ3RoIC0gMV0pLkNhc3Q8c3RyaW5nPigpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RleHRQUGFyYW1ldGVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RleHRQUGFyYW1ldGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OGNkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vVGV4dFBQYXJhbWV0ZXIuY3MKQEAgLTAsMCArMSw5NyBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5EeW5hbWljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LkdoZXJraW4uVHJhdmVyc2FsRXZhbHVhdGlvbgoreworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gUmVwcmVzZW50cyBhIHBhcmFtZXRlciBmb3IgYSB0cmF2ZXJzYWwgcHJlZGljYXRlIChpZTogVGV4dFAuY29udGFpbmluZygpKQorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgaW50ZXJuYWwgY2xhc3MgVGV4dFBQYXJhbWV0ZXIgOiBJVG9rZW5QYXJhbWV0ZXIsIElFcXVhdGFibGU8VGV4dFBQYXJhbWV0ZXI+CisgICAgeworICAgICAgICBwcml2YXRlIElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBfY29udGV4dFBhcmFtZXRlclZhbHVlczsKKyAgICAgICAgcHVibGljIElMaXN0PFRva2VuPiBUb2tlbnMgeyBnZXQ7IH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBUZXh0UFBhcmFtZXRlcihJTGlzdDxUb2tlbj4gdG9rZW5zKQorICAgICAgICB7CisgICAgICAgICAgICBUb2tlbnMgPSB0b2tlbnM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoVGV4dFBQYXJhbWV0ZXIgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBUb2tlbnMuU2VxdWVuY2VFcXVhbChvdGhlci5Ub2tlbnMpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG92ZXJyaWRlIGJvb2wgRXF1YWxzKG9iamVjdCBvYmopCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobnVsbCwgb2JqKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyh0aGlzLCBvYmopKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChvYmouR2V0VHlwZSgpICE9IEdldFR5cGUoKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIEVxdWFscygoVGV4dFBQYXJhbWV0ZXIpIG9iaik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgaW50IEdldEhhc2hDb2RlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFRva2VucyAhPSBudWxsID8gVG9rZW5zLkdldEhhc2hDb2RlKCkgOiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG9iamVjdCBHZXRWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB0eXBlID0gdHlwZW9mKFRleHRQKTsKKyAgICAgICAgICAgIG9iamVjdCBpbnN0YW5jZSA9IG51bGw7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IFRva2Vucy5Db3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IFRva2Vuc1tpXTsKKyAgICAgICAgICAgICAgICB0b2tlbi5TZXRDb250ZXh0UGFyYW1ldGVyVmFsdWVzKF9jb250ZXh0UGFyYW1ldGVyVmFsdWVzKTsKKyAgICAgICAgICAgICAgICB2YXIgbWV0aG9kID0gdHlwZS5HZXRNZXRob2QoVHJhdmVyc2FsUGFyc2VyLkdldENzaGFycE5hbWUodG9rZW4uTmFtZSksCisgICAgICAgICAgICAgICAgICAgIEJpbmRpbmdGbGFncy5TdGF0aWMgfCBCaW5kaW5nRmxhZ3MuSW5zdGFuY2UgfCBCaW5kaW5nRmxhZ3MuUHVibGljKTsKKyAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09IG51bGwpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigkIlByZWRpY2F0ZSAoVGV4dFApIG1ldGhvZCAne3Rva2VufScgbm90IGZvdW5kIGZvciB0ZXN0aW5nIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciBwYXJhbWV0ZXJzID0gbWV0aG9kLklzU3RhdGljCisgICAgICAgICAgICAgICAgICAgID8gbmV3IG9iamVjdFtdIHt0b2tlbi5QYXJhbWV0ZXJzLlNlbGVjdChwID0+IHAuR2V0VmFsdWUoKS5Ub1N0cmluZygpKS5GaXJzdCgpfQorICAgICAgICAgICAgICAgICAgICA6IHRva2VuLlBhcmFtZXRlcnMuU2VsZWN0KHAgPT4gcC5HZXRWYWx1ZSgpKS5Ub0FycmF5KCk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXRob2QuSW52b2tlKGluc3RhbmNlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUeXBlIEdldFBhcmFtZXRlclR5cGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHlwZW9mKFRleHRQKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIFNldENvbnRleHRQYXJhbWV0ZXJWYWx1ZXMoSURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHBhcmFtZXRlclZhbHVlcykKKyAgICAgICAgeworICAgICAgICAgICAgX2NvbnRleHRQYXJhbWV0ZXJWYWx1ZXMgPSBwYXJhbWV0ZXJWYWx1ZXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RyYXZlcnNhbEV2YWx1YXRpb25UZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UcmF2ZXJzYWxFdmFsdWF0aW9uVGVzdHMuY3MKaW5kZXggY2IxYmUwYi4uOGU3MjVlNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RyYXZlcnNhbEV2YWx1YXRpb25UZXN0cy5jcworKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vVHJhdmVyc2FsRXZhbHVhdGlvblRlc3RzLmNzCkBAIC04OCw3ICs4OCw3IEBACiAvLyAgICAgICAgICAgICAgICBUdXBsZS5DcmVhdGUoImcuVigpLmNvbnN0YW50KDEyM0wpIiwgMiksIC8vIENhbiBiZSBwYXJzZWQgdXNpbmcgdGhlIG5ldyB0eXBlLXNhZmUgQVBJCiAgICAgICAgICAgICAgICAgVHVwbGUuQ3JlYXRlKCJnLlYoKS5oYXMoXCJub1wiKS5jb3VudCgpIiwgMyksCiAgICAgICAgICAgICAgICAgVHVwbGUuQ3JlYXRlKCJnLlYoKS52YWx1ZXMoXCJhZ2VcIikiLCAyKSwKLSAgICAgICAgICAgICAgICBUdXBsZS5DcmVhdGUoImcuVigpLnZhbHVlTWFwKHRydWUsIFwibmFtZVwiLCBcImFnZVwiKSIsIDIpLAorICAgICAgICAgICAgICAgIFR1cGxlLkNyZWF0ZSgiZy5WKCkudmFsdWVNYXAoXCJuYW1lXCIsIFwiYWdlXCIpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKSIsIDMpLAogICAgICAgICAgICAgICAgIFR1cGxlLkNyZWF0ZSgiZy5WKCkud2hlcmUoX18uaW4oXCJjcmVhdGVkXCIpLmNvdW50KCkuaXMoMSkpLnZhbHVlcyhcIm5hbWVcIikiLCAzKSwKICAgICAgICAgICAgICAgICBUdXBsZS5DcmVhdGUoImcuVigpLmNvdW50KFNjb3BlLmxvY2FsKSIsIDIpLAogICAgICAgICAgICAgICAgIFR1cGxlLkNyZWF0ZSgiZy5WKCkudmFsdWVzKFwiYWdlXCIpLmlzKFAubHRlKDMwKSkiLCAzKSwKQEAgLTExMiw0ICsxMTIsNCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UcmF2ZXJzYWxQYXJzZXIuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vVHJhdmVyc2FsUGFyc2VyLmNzCmluZGV4IDQxOWNlOGQuLjEwNTkzMmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UcmF2ZXJzYWxQYXJzZXIuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RyYXZlcnNhbFBhcnNlci5jcwpAQCAtNDQsNiArNDQsMTAgQEAKIAogICAgICAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBSZWdleCBSZWdleEVudW0gPSBuZXcgUmVnZXgoQCJcdytcLlx3KyIsIFJlZ2V4T3B0aW9ucy5Db21waWxlZCk7CiAKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUmVnZXggUmVnZXhJTyA9IG5ldyBSZWdleChAIklPLlx3KyIsIFJlZ2V4T3B0aW9ucy5Db21waWxlZCk7CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUmVnZXggUmVnZXhXaXRoT3B0aW9ucyA9IG5ldyBSZWdleChAIldpdGhPcHRpb25zLlx3KyIsIFJlZ2V4T3B0aW9ucy5Db21waWxlZCk7CisKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUmVnZXggUmVnZXhQYXJhbSA9IG5ldyBSZWdleChAIlx3KyIsIFJlZ2V4T3B0aW9ucy5Db21waWxlZCk7CiAgICAgICAgIAogICAgICAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBIYXNoU2V0PFR5cGU+IE51bWVyaWNUeXBlcyA9IG5ldyBIYXNoU2V0PFR5cGU+CkBAIC0xMjQsNyArMTI4LDYgQEAKICAgICAgICAgICAgIHZhciBjb21wYXRpYmxlTWV0aG9kcyA9IG5ldyBEaWN0aW9uYXJ5PGludCwgTWV0aG9kSW5mbz4oKTsKICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBtZXRob2QgaW4gb3JkZXJlZCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsYXN0TWV0aG9kID0gbWV0aG9kOwogICAgICAgICAgICAgICAgIHZhciBtZXRob2RQYXJhbWV0ZXJzID0gbWV0aG9kLkdldFBhcmFtZXRlcnMoKTsKICAgICAgICAgICAgICAgICB2YXIgcmVxdWlyZWRQYXJhbWV0ZXJzID0gbWV0aG9kUGFyYW1ldGVycy5MZW5ndGg7CiAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkUGFyYW1ldGVycyA+IDAgJiYgSXNQYXJhbXNBcnJheShtZXRob2RQYXJhbWV0ZXJzLkxhc3QoKSkpCkBAIC0xMzYsNiArMTM5LDcgQEAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsYXN0TWV0aG9kID0gbWV0aG9kOwogICAgICAgICAgICAgICAgIHZhciBtYXRjaGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB2YXIgZXhhY3RNYXRjaGVzID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2VuUGFyYW1ldGVycy5Db3VudDsgaSsrKQpAQCAtNDIxLDYgKzQyNSwxMCBAQAogICAgICAgICAgICAgICAgIHZhciB0b2tlbnMgPSBQYXJzZVRva2Vucyh0ZXh0LCByZWYgaSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGF0aWNUcmF2ZXJzYWxQYXJhbWV0ZXIodG9rZW5zLCB0ZXh0LlN1YnN0cmluZyhzdGFydEluZGV4LCBpIC0gc3RhcnRJbmRleCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRleHQuTGVuZ3RoID49IGkgKyA2ICYmIHRleHQuU3Vic3RyaW5nKGksIDYpID09ICJUZXh0UC4iKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dFBQYXJhbWV0ZXIoUGFyc2VUb2tlbnModGV4dCwgcmVmIGkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0ZXh0LlN1YnN0cmluZyhpLCAyKS5TdGFydHNXaXRoKCJQLiIpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUFBhcmFtZXRlcihQYXJzZVRva2Vucyh0ZXh0LCByZWYgaSkpOwpAQCAtNDQxLDYgKzQ0OSwxNiBAQAogICAgICAgICAgICAgICAgIGkgKz0gcGFyYW1ldGVyVGV4dC5MZW5ndGggLSAxOwogICAgICAgICAgICAgICAgIHJldHVybiBMaXRlcmFsUGFyYW1ldGVyLkNyZWF0ZShDb252ZXJ0LlRvQm9vbGVhbihwYXJhbWV0ZXJUZXh0KSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoUmVnZXhJTy5Jc01hdGNoKHBhcmFtZXRlclRleHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGkgKz0gcGFyYW1ldGVyVGV4dC5MZW5ndGggLSAxOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSU9QYXJhbWV0ZXIocGFyYW1ldGVyVGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoUmVnZXhXaXRoT3B0aW9ucy5Jc01hdGNoKHBhcmFtZXRlclRleHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGkgKz0gcGFyYW1ldGVyVGV4dC5MZW5ndGggLSAxOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2l0aE9wdGlvbnNQYXJhbWV0ZXIocGFyYW1ldGVyVGV4dCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoUmVnZXhFbnVtLklzTWF0Y2gocGFyYW1ldGVyVGV4dCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaSArPSBwYXJhbWV0ZXJUZXh0Lkxlbmd0aCAtIDE7CkBAIC00ODgsNCArNTA2LDQgQEAKICAgICAgICAgICAgIEVuZFBhcmFtZXRlcnMKICAgICAgICAgfQogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vV2l0aE9wdGlvbnNQYXJhbWV0ZXIuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vV2l0aE9wdGlvbnNQYXJhbWV0ZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIwNTVlYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9XaXRoT3B0aW9uc1BhcmFtZXRlci5jcwpAQCAtMCwwICsxLDgzIEBACivvu78jcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkR5bmFtaWM7Cit1c2luZyBTeXN0ZW0uTGlucTsKK3VzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOwordXNpbmcgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuU3RlcC5VdGlsOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LkdoZXJraW4uVHJhdmVyc2FsRXZhbHVhdGlvbgoreworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gUmVwcmVzZW50cyBhIHBhcmFtZXRlciBmb3IgdGhlIHdpdGgoKSBzdGVwCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBpbnRlcm5hbCBjbGFzcyBXaXRoT3B0aW9uc1BhcmFtZXRlciA6IElUb2tlblBhcmFtZXRlciwgSUVxdWF0YWJsZTxXaXRoT3B0aW9uc1BhcmFtZXRlcj4KKyAgICB7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nIF90ZXh0OworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyBfdmFsdWU7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgV2l0aE9wdGlvbnNQYXJhbWV0ZXIoc3RyaW5nIHRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIF90ZXh0ID0gdGV4dDsKKyAgICAgICAgICAgIHZhciBzZXBhcmF0b3JJbmRleCA9IHRleHQuSW5kZXhPZignLicpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gdGV4dC5TdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKTsKKyAgICAgICAgICAgIF92YWx1ZSA9IHZhbHVlLlN1YnN0cmluZygwLCAxKS5Ub1VwcGVyKCkgKyB2YWx1ZS5TdWJzdHJpbmcoMSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoV2l0aE9wdGlvbnNQYXJhbWV0ZXIgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfdGV4dCA9PSBvdGhlci5fdGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBvdmVycmlkZSBib29sIEVxdWFscyhvYmplY3Qgb2JqKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG51bGwsIG9iaikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHModGhpcywgb2JqKSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpZiAob2JqLkdldFR5cGUoKSAhPSBHZXRUeXBlKCkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBFcXVhbHMoKFdpdGhPcHRpb25zUGFyYW1ldGVyKSBvYmopOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG92ZXJyaWRlIGludCBHZXRIYXNoQ29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfdGV4dC5HZXRIYXNoQ29kZSgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG9iamVjdCBHZXRWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBmaWVsZCA9IHR5cGVvZihXaXRoT3B0aW9ucykuR2V0RmllbGQoX3ZhbHVlLCBCaW5kaW5nRmxhZ3MuU3RhdGljIHwgQmluZGluZ0ZsYWdzLlB1YmxpYyk7CisgICAgICAgICAgICByZXR1cm4gZmllbGQuR2V0VmFsdWUobnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBTZXRDb250ZXh0UGFyYW1ldGVyVmFsdWVzKElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBwYXJhbWV0ZXJWYWx1ZXMpCisgICAgICAgIHsKKworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFR5cGUgR2V0UGFyYW1ldGVyVHlwZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlb2Yob2JqZWN0KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vR3JhcGhUcmF2ZXJzYWxUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vR3JhcGhUcmF2ZXJzYWxUZXN0cy5jcwppbmRleCAxMWZiYTg0Li4wZjZiZWE2IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL0dyYXBoVHJhdmVyc2FsVGVzdHMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi9HcmFwaFRyYXZlcnNhbFRlc3RzLmNzCkBAIC0yNyw2ICsyNyw3IEBACiB1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKIHVzaW5nIEdyZW1saW4uTmV0LlN0cnVjdHVyZTsKIHVzaW5nIFh1bml0OwordXNpbmcgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuU3RyYXRlZ3kuRGVjb3JhdGlvbjsKIAogbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Qcm9jZXNzLlRyYXZlcnNhbC5Ecml2ZXJSZW1vdGVDb25uZWN0aW9uCiB7CkBAIC0xOTUsNiArMTk2LDI3IEBACiAgICAgICAgICAgICB2YXIgY291bnQgPSBnLlYoKS5IYXMoYi5PZigicHJvcGVydHlLZXkiLCAibmFtZSIpLCBiLk9mKCJwcm9wZXJ0eVZhbHVlIiwgIm1hcmtvIikpLk91dEUoKS5Db3VudCgpLk5leHQoKTsKIAogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDMsIGNvdW50KTsKKyAgICAgICAgfSAgCisKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZFVzZU9wdGlvbnNJblRyYXZlcnNhbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHNtb2tlIHRlc3QgdG8gdmFsaWRhdGUgc2VyaWFsaXphdGlvbiBvZiBPcHRpb25zU3RyYXRlZ3kuIG5vIHdheSB0byByZWFsbHkgdmFsaWRhdGUgdGhpcyBmcm9tIGFuIGludGVncmF0aW9uCisgICAgICAgICAgICAvLyB0ZXN0IHBlcnNwZWN0aXZlIGJlY2F1c2UgdGhlcmUncyBubyB3YXkgdG8gYWNjZXNzIHRoZSBpbnRlcm5hbHMgb2YgdGhlIHN0cmF0ZWd5IHZpYSBieXRlY29kZQorICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOworICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsb2JqZWN0PgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHsieCIsICJ0ZXN0In0sCisgICAgICAgICAgICAgICAgeyJ5IiwgdHJ1ZX0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICB2YXIgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pOworCisgICAgICAgICAgICB2YXIgYiA9IG5ldyBCaW5kaW5ncygpOworICAgICAgICAgICAgdmFyIGNvdW50V2l0aFN0cmF0ZWd5ID0gZy5XaXRoU3RyYXRlZ2llcyhuZXcgT3B0aW9uc1N0cmF0ZWd5KG9wdGlvbnMpKS5WKCkuQ291bnQoKS5OZXh0KCk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoNiwgY291bnRXaXRoU3RyYXRlZ3kpOworCisgICAgICAgICAgICB2YXIgY291bnRXaXRoID0gZy5XaXRoKCJ4IiwgInRlc3QiKS5XaXRoKCJ5IiwgdHJ1ZSkuVigpLkNvdW50KCkuTmV4dCgpOworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDYsIGNvdW50V2l0aCk7CiAgICAgICAgIH0KIAogICAgICAgICBbRmFjdF0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL1JlbW90ZUNvbm5lY3Rpb25GYWN0b3J5LmNzCmluZGV4IDM5YjdmZWEuLmE5OTcxNjcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi9SZW1vdGVDb25uZWN0aW9uRmFjdG9yeS5jcwpAQCAtNDQsNyArNDQsOSBAQAogCiAgICAgICAgIHB1YmxpYyBJUmVtb3RlQ29ubmVjdGlvbiBDcmVhdGVSZW1vdGVDb25uZWN0aW9uKHN0cmluZyB0cmF2ZXJzYWxTb3VyY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBjID0gbmV3IERyaXZlclJlbW90ZUNvbm5lY3Rpb25JbXBsKG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKFRlc3RIb3N0LCBUZXN0UG9ydCkpLAorICAgICAgICAgICAgdmFyIGMgPSBuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbkltcGwoCisgICAgICAgICAgICAgICAgbmV3IEdyZW1saW5DbGllbnQobmV3IEdyZW1saW5TZXJ2ZXIoVGVzdEhvc3QsIFRlc3RQb3J0KSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvblBvb2xTZXR0aW5nczogbmV3IENvbm5lY3Rpb25Qb29sU2V0dGluZ3Mge1Bvb2xTaXplID0gMn0pLAogICAgICAgICAgICAgICAgIHRyYXZlcnNhbFNvdXJjZSk7CiAgICAgICAgICAgICBfY29ubmVjdGlvbnMuQWRkKGMpOwogICAgICAgICAgICAgcmV0dXJuIGM7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL1N0cmF0ZWdpZXNUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vU3RyYXRlZ2llc1Rlc3RzLmNzCmluZGV4IDAzYjI0YWMuLjE0YzU5ZjkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vU3RyYXRlZ2llc1Rlc3RzLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vU3RyYXRlZ2llc1Rlc3RzLmNzCkBAIC00MSw3ICs0MSw3IEBACiAgICAgICAgICAgICB2YXIgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICB2YXIgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aFJlbW90ZShjb25uZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGV4Q3JpdGVyaW9uOiBfXy5IYXNMYWJlbCgicGVyc29uIikpKTsKKyAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzOiBfXy5IYXNMYWJlbCgicGVyc29uIikpKTsKIAogICAgICAgICAgICAgdmFyIGNvdW50ID0gZy5WKCkuQ291bnQoKS5OZXh0KCk7CiAKQEAgLTU0LDggKzU0LDggQEAKICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKICAgICAgICAgICAgIHZhciBnID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLlRyYXZlcnNhbCgpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0ZXhDcml0ZXJpb246IF9fLkhhc0xhYmVsKCJwZXJzb24iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VDcml0ZXJpb246IF9fLkhhc0xhYmVsKCJjcmVhdGVkIikpKTsKKyAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzOiBfXy5IYXNMYWJlbCgicGVyc29uIiksCisgICAgICAgICAgICAgICAgICAgICAgICBlZGdlczogX18uSGFzTGFiZWwoImNyZWF0ZWQiKSkpOwogCiAgICAgICAgICAgICB2YXIgY291bnQgPSBnLkUoKS5Db3VudCgpLk5leHQoKTsKIApAQCAtNjgsNyArNjgsNyBAQAogICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOwogICAgICAgICAgICAgdmFyIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhSZW1vdGUoY29ubmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRleENyaXRlcmlvbjogX18uSGFzTGFiZWwoInBlcnNvbiIpKSk7CisgICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlczogX18uSGFzTGFiZWwoInBlcnNvbiIpKSk7CiAKICAgICAgICAgICAgIHZhciBjb3VudCA9IGcuVigpLkxhYmVsKCkuRGVkdXAoKS5Db3VudCgpLk5leHQoKTsKIApAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOwogICAgICAgICAgICAgdmFyIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhSZW1vdGUoY29ubmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRleENyaXRlcmlvbjogX18uSGFzTGFiZWwoInBlcnNvbiIpKSk7CisgICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlczogX18uSGFzTGFiZWwoInBlcnNvbiIpKSk7CiAKICAgICAgICAgICAgIHZhciBsYWJlbCA9IGcuVigpLkxhYmVsKCkuRGVkdXAoKS5OZXh0KCk7CiAKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKICAgICAgICAgICAgIHZhciBnID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLlRyYXZlcnNhbCgpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0ZXhDcml0ZXJpb246IF9fLkhhcygibmFtZSIsICJtYXJrbyIpKSk7CisgICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlczogX18uSGFzKCJuYW1lIiwgIm1hcmtvIikpKTsKIAogICAgICAgICAgICAgdmFyIGNvdW50ID0gZy5WKCkuQ291bnQoKS5OZXh0KCk7CiAKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOwogICAgICAgICAgICAgdmFyIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhSZW1vdGUoY29ubmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KGVkZ2VDcml0ZXJpb246IF9fLkxpbWl0PG9iamVjdD4oMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KGVkZ2VzOiBfXy5MaW1pdDxvYmplY3Q+KDApKSk7CiAKICAgICAgICAgICAgIHZhciBjb3VudCA9IGcuRSgpLkNvdW50KCkuTmV4dCgpOwogCkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKICAgICAgICAgICAgIHZhciBnID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLlRyYXZlcnNhbCgpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0ZXhDcml0ZXJpb246IF9fLkhhcygibmFtZSIsICJtYXJrbyIpKSk7CisgICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlczogX18uSGFzKCJuYW1lIiwgIm1hcmtvIikpKTsKIAogICAgICAgICAgICAgdmFyIGxhYmVsID0gZy5WKCkuTGFiZWwoKS5EZWR1cCgpLk5leHQoKTsKIApAQCAtMTMzLDcgKzEzMyw3IEBACiAgICAgICAgICAgICB2YXIgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICB2YXIgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aFJlbW90ZShjb25uZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGV4Q3JpdGVyaW9uOiBfXy5IYXMoIm5hbWUiLCAibWFya28iKSkpOworICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGljZXM6IF9fLkhhcygibmFtZSIsICJtYXJrbyIpKSk7CiAKICAgICAgICAgICAgIHZhciBuYW1lID0gZy5WKCkuVmFsdWVzPHN0cmluZz4oIm5hbWUiKS5OZXh0KCk7CiAKQEAgLTE3Niw3ICsxNzYsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICB2YXIgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRleENyaXRlcmlvbjogX18uSGFzTGFiZWwoInBlcnNvbiIpKSkKKyAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGljZXM6IF9fLkhhc0xhYmVsKCJwZXJzb24iKSkpCiAgICAgICAgICAgICAgICAgLldpdGhvdXRTdHJhdGVnaWVzKHR5cGVvZihTdWJncmFwaFN0cmF0ZWd5KSk7CiAKICAgICAgICAgICAgIHZhciBjb3VudCA9IGcuVigpLkNvdW50KCkuTmV4dCgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHNsL0RzbFRlc3QuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ec2wvRHNsVGVzdC5jcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjliM2YzNC4uMDAwMDAwMAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ec2wvRHNsVGVzdC5jcworKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0jcmVnaW9uIExpY2Vuc2UKLQotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jZW5kcmVnaW9uCi0KLXVzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsOwotdXNpbmcgR3JlbWxpbi5OZXQuU3RydWN0dXJlOwotdXNpbmcgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LlByb2Nlc3MuVHJhdmVyc2FsLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247Ci11c2luZyBYdW5pdDsKLQotbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Qcm9jZXNzLlRyYXZlcnNhbC5Ec2wgCi17Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNvY2lhbFRyYXZlcnNhbEV4dGVuc2lvbnMKLSAgICB7Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gS25vd3ModGhpcyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0LCBzdHJpbmcgcGVyc29uTmFtZSkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0Lk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuSGFzKCJuYW1lIiwgcGVyc29uTmFtZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgaW50PiBZb3VuZ2VzdEZyaWVuZHNBZ2UodGhpcyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0KSAKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHQuT3V0KCJrbm93cyIpLkhhc0xhYmVsKCJwZXJzb24iKS5WYWx1ZXM8aW50PigiYWdlIikuTWluPGludD4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LGxvbmc+IENyZWF0ZWRBdExlYXN0KHRoaXMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gdCwgbG9uZyBudW1iZXIpIAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdC5PdXRFKCJjcmVhdGVkIikuQ291bnQoKS5JcyhQLkd0ZShudW1iZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgX19Tb2NpYWwgCi0gICAgewotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCxWZXJ0ZXg+IEtub3dzKHN0cmluZyBwZXJzb25OYW1lKQotICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9fLk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuSGFzKCJuYW1lIiwgcGVyc29uTmFtZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgaW50PiBZb3VuZ2VzdEZyaWVuZHNBZ2UoKSAKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9fLk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuVmFsdWVzPGludD4oImFnZSIpLk1pbjxpbnQ+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCxsb25nPiBDcmVhdGVkQXRMZWFzdChsb25nIG51bWJlcikgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfXy5PdXRFKCJjcmVhdGVkIikuQ291bnQoKS5JcyhQLkd0ZShudW1iZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlRXh0ZW5zaW9ucwotICAgIHsKLSAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiBQZXJzb25zKHRoaXMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZywgcGFyYW1zIHN0cmluZ1tdIHBlcnNvbk5hbWVzKSAKLSAgICAgICAgewotICAgICAgICAgICAgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gdCA9IGcuVigpLkhhc0xhYmVsKCJwZXJzb24iKTsKLQotICAgICAgICAgICAgaWYgKHBlcnNvbk5hbWVzLkxlbmd0aCA+IDApIAotICAgICAgICAgICAgeyAgICAKLSAgICAgICAgICAgICAgICB0ID0gdC5IYXMoIm5hbWUiLCBQLldpdGhpbihwZXJzb25OYW1lcykpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBjbGFzcyBEc2xUZXN0IAotICAgIHsKLSAgICAgICAgcHJpdmF0ZSByZWFkb25seSBSZW1vdGVDb25uZWN0aW9uRmFjdG9yeSBfY29ubmVjdGlvbkZhY3RvcnkgPSBuZXcgUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkoKTsKLSAgICAgICAgCi0gICAgICAgIFtGYWN0XQotICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRVc2VEc2woKSAKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOwotICAgICAgICAgICAgdmFyIHNvY2lhbCA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pOwotCi0gICAgICAgICAgICBBc3NlcnQuTm90TnVsbChzb2NpYWwuUGVyc29ucygibWFya28iKS5Lbm93cygiam9zaCIpLk5leHQoKSk7Ci0gICAgICAgICAgICBBc3NlcnQuRXF1YWwoMjcsIHNvY2lhbC5QZXJzb25zKCJtYXJrbyIpLllvdW5nZXN0RnJpZW5kc0FnZSgpLk5leHQoKSk7Ci0gICAgICAgICAgICBBc3NlcnQuRXF1YWwoNCwgc29jaWFsLlBlcnNvbnMoKS5Db3VudCgpLk5leHQoKSk7Ci0gICAgICAgICAgICBBc3NlcnQuRXF1YWwoMiwgc29jaWFsLlBlcnNvbnMoIm1hcmtvIiwgImpvc2giKS5Db3VudCgpLk5leHQoKSk7Ci0gICAgICAgICAgICBBc3NlcnQuRXF1YWwoMSwgc29jaWFsLlBlcnNvbnMoKS5GaWx0ZXIoX19Tb2NpYWwuQ3JlYXRlZEF0TGVhc3QoMikpLkNvdW50KCkuTmV4dCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L0RyaXZlci9Db25uZWN0aW9uUG9vbFNldHRpbmdzVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L0RyaXZlci9Db25uZWN0aW9uUG9vbFNldHRpbmdzVGVzdHMuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgwMjg4NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sU2V0dGluZ3NUZXN0cy5jcwpAQCAtMCwwICsxLDUxIEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlcjsKK3VzaW5nIFh1bml0OworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuVW5pdFRlc3QuRHJpdmVyCit7CisgICAgcHVibGljIGNsYXNzIENvbm5lY3Rpb25Qb29sU2V0dGluZ3NUZXN0cworICAgIHsKKyAgICAgICAgW1RoZW9yeV0KKyAgICAgICAgW0lubGluZURhdGEoMCldCisgICAgICAgIFtJbmxpbmVEYXRhKC0xKV0KKyAgICAgICAgW0lubGluZURhdGEoLTEwMCldCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZFRocm93Rm9ySW52YWxpZFBvb2xTaXplKGludCBpbnZhbGlkUG9vbFNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFzc2VydC5UaHJvd3M8QXJndW1lbnRPdXRPZlJhbmdlRXhjZXB0aW9uPigoKSA9PiBuZXcgQ29ubmVjdGlvblBvb2xTZXR0aW5ncyB7UG9vbFNpemUgPSBpbnZhbGlkUG9vbFNpemV9KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW1RoZW9yeV0KKyAgICAgICAgW0lubGluZURhdGEoMCldCisgICAgICAgIFtJbmxpbmVEYXRhKC0xKV0KKyAgICAgICAgW0lubGluZURhdGEoLTEwMCldCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZFRocm93Rm9ySW52YWxpZE1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24oaW50IGludmFsaWRNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBBc3NlcnQuVGhyb3dzPEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbj4oKCkgPT4gbmV3IENvbm5lY3Rpb25Qb29sU2V0dGluZ3MKKyAgICAgICAgICAgICAgICB7TWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiA9IGludmFsaWRNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9ufSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvQ29weU9uV3JpdGVDb2xsZWN0aW9uVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L0RyaXZlci9Db3B5T25Xcml0ZUNvbGxlY3Rpb25UZXN0cy5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGJkNjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvQ29weU9uV3JpdGVDb2xsZWN0aW9uVGVzdHMuY3MKQEAgLTAsMCArMSwyMzUgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uTGlucTsKK3VzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXI7Cit1c2luZyBYdW5pdDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlVuaXRUZXN0LkRyaXZlcgoreworICAgIHB1YmxpYyBjbGFzcyBDb3B5T25Xcml0ZUNvbGxlY3Rpb25UZXN0cworICAgIHsKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZFN0YXJ0RW1wdHkoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwobmV3IGludFswXSwgY29sbGVjdGlvbi5TbmFwc2hvdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtUaGVvcnldCisgICAgICAgIFtJbmxpbmVEYXRhKDApXQorICAgICAgICBbSW5saW5lRGF0YSgxKV0KKyAgICAgICAgW0lubGluZURhdGEoMildCisgICAgICAgIFtJbmxpbmVEYXRhKDgpXQorICAgICAgICBwdWJsaWMgdm9pZCBBZGRSYW5nZVNob3VsZFJlc3VsdEluRXhwZWN0ZWRDb3VudChpbnQgZXhwZWN0ZWRDb3VudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCBleHBlY3RlZENvdW50KS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKGl0ZW1zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKGV4cGVjdGVkQ291bnQsIGNvbGxlY3Rpb24uQ291bnQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgQWRkUmFuZ2VTaG91bGRBZGROZXdJdGVtc0FmdGVyT2xkSXRlbXMoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgb2xkSXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIDUpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBuZXdJdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgMykuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uQWRkUmFuZ2Uob2xkSXRlbXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKG5ld0l0ZW1zKTsKKworICAgICAgICAgICAgdmFyIGV4cGVjdGVkSXRlbXMgPSBuZXcgaW50W29sZEl0ZW1zLkxlbmd0aCArIG5ld0l0ZW1zLkxlbmd0aF07CisgICAgICAgICAgICBvbGRJdGVtcy5Db3B5VG8oZXhwZWN0ZWRJdGVtcywgMCk7CisgICAgICAgICAgICBuZXdJdGVtcy5Db3B5VG8oZXhwZWN0ZWRJdGVtcywgb2xkSXRlbXMuTGVuZ3RoKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChleHBlY3RlZEl0ZW1zLCBjb2xsZWN0aW9uLlNuYXBzaG90KTsKKyAgICAgICAgfQorCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBUcnlSZW1vdmVTaG91bGRSZXR1cm5GYWxzZUZvclVua25vd25JdGVtKCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IHVua25vd25JdGVtID0gLTE7CisgICAgICAgICAgICB2YXIga25vd25JdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgNSkuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uQWRkUmFuZ2Uoa25vd25JdGVtcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5GYWxzZShjb2xsZWN0aW9uLlRyeVJlbW92ZSh1bmtub3duSXRlbSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgVHJ5UmVtb3ZlU2hvdWxkTm90Q2hhbmdlQ291bnRGb3JVbmtub3duSXRlbSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCB1bmtub3duSXRlbSA9IC0xOworICAgICAgICAgICAgdmFyIGtub3duSXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIDUpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKGtub3duSXRlbXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb2xsZWN0aW9uLlRyeVJlbW92ZSh1bmtub3duSXRlbSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChrbm93bkl0ZW1zLkxlbmd0aCwgY29sbGVjdGlvbi5Db3VudCk7CisgICAgICAgIH0KKworICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgVHJ5UmVtb3ZlU2hvdWxkUmV0dXJuVHJ1ZUZvcktub3duSXRlbSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBrbm93bkl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCA1KS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShrbm93bkl0ZW1zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZXJ0LlRydWUoY29sbGVjdGlvbi5UcnlSZW1vdmUoa25vd25JdGVtc1syXSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgVHJ5UmVtb3ZlU2hvdWxkUmVtb3ZlS25vd25JdGVtKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGtub3duSXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIDUpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKGtub3duSXRlbXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb2xsZWN0aW9uLlRyeVJlbW92ZShrbm93bkl0ZW1zWzJdKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZXJ0LkRvZXNOb3RDb250YWluKGtub3duSXRlbXNbMl0sIGNvbGxlY3Rpb24uU25hcHNob3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgVHJ5UmVtb3ZlU2hvdWxkRGVjcmVtZW50Q291bnRGb3JLbm93bkl0ZW0oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIga25vd25JdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgNSkuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uQWRkUmFuZ2Uoa25vd25JdGVtcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uVHJ5UmVtb3ZlKGtub3duSXRlbXNbMl0pOworCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoa25vd25JdGVtcy5MZW5ndGggLSAxLCBjb2xsZWN0aW9uLkNvdW50KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFRyeVJlbW92ZU9mTGFzdEl0ZW1TaG91bGRFbXB0eVRoZUFycmF5KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbnN0IGludCBsYXN0SXRlbSA9IDM7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKG5ld1tdIHtsYXN0SXRlbX0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb2xsZWN0aW9uLlRyeVJlbW92ZShsYXN0SXRlbSk7CisKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChuZXcgaW50WzBdLCBjb2xsZWN0aW9uLlNuYXBzaG90KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW1RoZW9yeV0KKyAgICAgICAgW0lubGluZURhdGEoMCldCisgICAgICAgIFtJbmxpbmVEYXRhKDEpXQorICAgICAgICBbSW5saW5lRGF0YSgyKV0KKyAgICAgICAgW0lubGluZURhdGEoOCldCisgICAgICAgIHB1YmxpYyB2b2lkIFNuYXBzaG90U2hvdWxkUmV0dXJuQWRkZWRJdGVtcyhpbnQgbnJJdGVtcykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCBuckl0ZW1zKS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShpdGVtcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChpdGVtcywgY29sbGVjdGlvbi5TbmFwc2hvdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtUaGVvcnldCisgICAgICAgIFtJbmxpbmVEYXRhKDApXQorICAgICAgICBbSW5saW5lRGF0YSgxKV0KKyAgICAgICAgW0lubGluZURhdGEoMildCisgICAgICAgIFtJbmxpbmVEYXRhKDgpXQorICAgICAgICBwdWJsaWMgdm9pZCBSZW1vdmVBbmRHZXRBbGxTaG91bGRSZXR1cm5BbGxJdGVtcyhpbnQgbnJJdGVtcykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCBuckl0ZW1zKS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShpdGVtcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChpdGVtcywgY29sbGVjdGlvbi5SZW1vdmVBbmRHZXRBbGwoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtUaGVvcnldCisgICAgICAgIFtJbmxpbmVEYXRhKDApXQorICAgICAgICBbSW5saW5lRGF0YSgxKV0KKyAgICAgICAgW0lubGluZURhdGEoMildCisgICAgICAgIFtJbmxpbmVEYXRhKDgpXQorICAgICAgICBwdWJsaWMgdm9pZCBSZW1vdmVBbmRHZXRBbGxTaG91bGRFbXB0eVRoZUFycmF5KGludCBuckl0ZW1zKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIG5ySXRlbXMpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKGl0ZW1zKTsKKworICAgICAgICAgICAgY29sbGVjdGlvbi5SZW1vdmVBbmRHZXRBbGwoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5ldyBpbnRbMF0sIGNvbGxlY3Rpb24uU25hcHNob3QpOworICAgICAgICB9CisKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEFkZFJhbmdlU2hvdWxkQWxsb3dQYXJhbGxlbENhbGxzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbnN0IGludCBuck9mUGFyYWxsZWxPcGVyYXRpb25zID0gMTAwOworICAgICAgICAgICAgdmFyIGFkZFJhbmdlQWN0aW9ucyA9IG5ldyBBY3Rpb25bbnJPZlBhcmFsbGVsT3BlcmF0aW9uc107CisgICAgICAgICAgICB2YXIgYWRkZWRJdGVtcyA9IG5ldyBMaXN0PGludD4obnJPZlBhcmFsbGVsT3BlcmF0aW9ucyAqIDMpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuck9mUGFyYWxsZWxPcGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW1zVG9BZGQgPSBuZXdbXSB7aSwgaSArIDEsIGkgKyAyfTsKKyAgICAgICAgICAgICAgICBhZGRlZEl0ZW1zLkFkZFJhbmdlKGl0ZW1zVG9BZGQpOworICAgICAgICAgICAgICAgIGFkZFJhbmdlQWN0aW9uc1tpXSA9ICgpID0+IGNvbGxlY3Rpb24uQWRkUmFuZ2UoaXRlbXNUb0FkZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFBhcmFsbGVsLkludm9rZShhZGRSYW5nZUFjdGlvbnMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBc3NlcnRDb2xsZWN0aW9uQ29udGFpbnNFeGFjdGx5VW5vcmRlcmVkKGNvbGxlY3Rpb24sIGFkZGVkSXRlbXMpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBBc3NlcnRDb2xsZWN0aW9uQ29udGFpbnNFeGFjdGx5VW5vcmRlcmVkKENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+IGNvbGxlY3Rpb24sIElFbnVtZXJhYmxlPGludD4gZXhwZWN0ZWRJdGVtcykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yZWFjaCAodmFyIGl0ZW0gaW4gZXhwZWN0ZWRJdGVtcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBc3NlcnQuVHJ1ZShjb2xsZWN0aW9uLlRyeVJlbW92ZShpdGVtKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMCwgY29sbGVjdGlvbi5Db3VudCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBUcnlSZW1vdmVTaG91bGRBbGxvd1BhcmFsbGVsQ2FsbHMoKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQgbnJPZlBhcmFsbGVsT3BlcmF0aW9ucyA9IDEwMDsKKyAgICAgICAgICAgIHZhciBpdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgbnJPZlBhcmFsbGVsT3BlcmF0aW9ucykuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uQWRkUmFuZ2UoaXRlbXMpOworICAgICAgICAgICAgdmFyIHRyeVJlbW92ZUFjdGlvbnMgPSBuZXcgQWN0aW9uW25yT2ZQYXJhbGxlbE9wZXJhdGlvbnNdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuck9mUGFyYWxsZWxPcGVyYXRpb25zOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBpOworICAgICAgICAgICAgICAgIHRyeVJlbW92ZUFjdGlvbnNbaV0gPSAoKSA9PiBjb2xsZWN0aW9uLlRyeVJlbW92ZShpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUGFyYWxsZWwuSW52b2tlKHRyeVJlbW92ZUFjdGlvbnMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMCwgY29sbGVjdGlvbi5Db3VudCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvR3JlbWxpbkNsaWVudFRlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvR3JlbWxpbkNsaWVudFRlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NmRjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L0RyaXZlci9HcmVtbGluQ2xpZW50VGVzdHMuY3MKQEAgLTAsMCArMSw0NSBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXI7Cit1c2luZyBYdW5pdDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlVuaXRUZXN0LkRyaXZlcgoreworICAgIHB1YmxpYyBjbGFzcyBHcmVtbGluQ2xpZW50VGVzdHMKKyAgICB7CisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRUaHJvd09uRXhlY3V0aW9uT2ZNdWx0aUNvbm5lY3Rpb25JblBvb2woKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaG9zdCA9ICJsb2NhbGhvc3QiOworICAgICAgICAgICAgdmFyIHBvcnQgPSA4MTgyOworICAgICAgICAgICAgdmFyIHNlc3Npb25JZCA9IEd1aWQuTmV3R3VpZCgpLlRvU3RyaW5nKCk7CisgICAgICAgICAgICAvLyBzZXQgcG9vbCBzaXplIG1vcmUgdGhhbiAxCisgICAgICAgICAgICB2YXIgcG9vbFNldHRpbmdzID0gbmV3IENvbm5lY3Rpb25Qb29sU2V0dGluZ3Mge1Bvb2xTaXplID0gMn07CisKKyAgICAgICAgICAgIHZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoaG9zdCwgcG9ydCk7CisgICAgICAgICAgICBBc3NlcnQuVGhyb3dzPEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbj4oKCkgPT4gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlciwgY29ubmVjdGlvblBvb2xTZXR0aW5nczogcG9vbFNldHRpbmdzLCBzZXNzaW9uSWQ6IHNlc3Npb25JZCkpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0pzb25NZXNzYWdlU2VyaWFsaXplclRlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvSnNvbk1lc3NhZ2VTZXJpYWxpemVyVGVzdHMuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc3NjZhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0pzb25NZXNzYWdlU2VyaWFsaXplclRlc3RzLmNzCkBAIC0wLDAgKzEsNzEgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLk1lc3NhZ2VzOwordXNpbmcgTmV3dG9uc29mdC5Kc29uOwordXNpbmcgTmV3dG9uc29mdC5Kc29uLkxpbnE7Cit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uVGV4dDsKK3VzaW5nIFh1bml0OworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuVW5pdFRlc3QuRHJpdmVyCit7CisgICAgLy8gV2lsbCBiZSB1c2VkIGluIGZ1dHVyZSB0byBzd2l0Y2ggdG8gbmV3IC5ORVQgQ29yZSBKc29uIGRlc2VyaWFsaXplcgorICAgIHB1YmxpYyBjbGFzcyBKc29uTWVzc2FnZVNlcmlhbGl6ZXJUZXN0cworICAgIHsKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIERlc2VyaWFsaXppbmdOdWxsVGhyb3dzKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHN1dCA9IG5ldyBKc29uTWVzc2FnZVNlcmlhbGl6ZXIoR3JlbWxpbkNsaWVudC5EZWZhdWx0TWltZVR5cGUpOworCisgICAgICAgICAgICBBc3NlcnQuVGhyb3dzPEFyZ3VtZW50TnVsbEV4Y2VwdGlvbj4oKCk9PiBzdXQuRGVzZXJpYWxpemVNZXNzYWdlPFJlc3BvbnNlTWVzc2FnZTxKVG9rZW4+PihudWxsKSk7CisgICAgICAgIH0KKworICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgRW1wdHlBcnJheURlc2VyaWFsaXplZEludG9OdWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHN1dCA9IG5ldyBKc29uTWVzc2FnZVNlcmlhbGl6ZXIoR3JlbWxpbkNsaWVudC5EZWZhdWx0TWltZVR5cGUpOworCisgICAgICAgICAgICBBc3NlcnQuTnVsbChzdXQuRGVzZXJpYWxpemVNZXNzYWdlPFJlc3BvbnNlTWVzc2FnZTxKVG9rZW4+PihuZXcgYnl0ZVswXSkpOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEVtcHR5U3RyaW5nRGVzZXJpYWxpemVkSW50b051bGwoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc3V0ID0gbmV3IEpzb25NZXNzYWdlU2VyaWFsaXplcihHcmVtbGluQ2xpZW50LkRlZmF1bHRNaW1lVHlwZSk7CisgICAgICAgICAgICB2YXIgb2ZFbXB0eSA9IEVuY29kaW5nLlVURjguR2V0Qnl0ZXMoIiIpOworCisgICAgICAgICAgICBBc3NlcnQuTnVsbChzdXQuRGVzZXJpYWxpemVNZXNzYWdlPFJlc3BvbnNlTWVzc2FnZTxKVG9rZW4+PihvZkVtcHR5KSk7CisgICAgICAgIH0KKworICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgSnNvbk51bGxEZXNlcmlhbGl6ZWRJbnRvTnVsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzdXQgPSBuZXcgSnNvbk1lc3NhZ2VTZXJpYWxpemVyKEdyZW1saW5DbGllbnQuRGVmYXVsdE1pbWVUeXBlKTsKKyAgICAgICAgICAgIHZhciBvZk51bGwgPSBFbmNvZGluZy5VVEY4LkdldEJ5dGVzKCJudWxsIik7CisKKyAgICAgICAgICAgIEFzc2VydC5OdWxsKHN1dC5EZXNlcmlhbGl6ZU1lc3NhZ2U8UmVzcG9uc2VNZXNzYWdlPEpUb2tlbj4+KG9mTnVsbCkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05SZWFkZXJUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OUmVhZGVyVGVzdHMuY3MKaW5kZXggYWY0OGYwMi4uM2E0OTE0MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05SZWFkZXJUZXN0cy5jcworKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTlJlYWRlclRlc3RzLmNzCkBAIC0yODAsNiArMjgwLDE4IEBACiAgICAgICAgICAgICBBc3NlcnQuRXF1YWwoVC5MYWJlbCwgcmVhZFQpOwogICAgICAgICB9CiAKKyAgICAgICAgW1RoZW9yeSwgTWVtYmVyRGF0YShuYW1lb2YoVmVyc2lvbnMpKV0KKyAgICAgICAgcHVibGljIHZvaWQgU2hvdWxkRGVzZXJpYWxpemVEaXJlY3Rpb24oaW50IHZlcnNpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzZXJpYWxpemVkVmFsdWUgPSAie1wiQHR5cGVcIjpcImc6RGlyZWN0aW9uXCIsXCJAdmFsdWVcIjpcIk9VVFwifSI7CisgICAgICAgICAgICB2YXIgcmVhZGVyID0gQ3JlYXRlU3RhbmRhcmRHcmFwaFNPTlJlYWRlcih2ZXJzaW9uKTsKKworICAgICAgICAgICAgdmFyIGpPYmplY3QgPSBKT2JqZWN0LlBhcnNlKHNlcmlhbGl6ZWRWYWx1ZSk7CisgICAgICAgICAgICB2YXIgZGVzZXJpYWxpemVkVmFsdWUgPSByZWFkZXIuVG9PYmplY3Qoak9iamVjdCk7CisKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChEaXJlY3Rpb24uT3V0LCBkZXNlcmlhbGl6ZWRWYWx1ZSk7CisgICAgICAgIH0KKwogICAgICAgICBbRmFjdF0KICAgICAgICAgcHVibGljIHZvaWQgU2hvdWxkRGVzZXJpYWxpemVQYXRoRnJvbUdyYXBoU09OMigpCiAgICAgICAgIHsKQEAgLTI4OSw3ICszMDEsNyBAQAogCiAgICAgICAgICAgICBQYXRoIHJlYWRQYXRoID0gcmVhZGVyLlRvT2JqZWN0KEpPYmplY3QuUGFyc2UoZ3JhcGhTb24pKTsKIAotICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCJbdlsxXSwgdlszXSwgbG9wXSIsIHJlYWRQYXRoLlRvU3RyaW5nKCkpOworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCJwYXRoW3ZbMV0sIHZbM10sIGxvcF0iLCByZWFkUGF0aC5Ub1N0cmluZygpKTsKICAgICAgICAgICAgIEFzc2VydC5FcXVhbChuZXcgVmVydGV4KDEpLCByZWFkUGF0aFswXSk7CiAgICAgICAgICAgICBBc3NlcnQuRXF1YWwobmV3IFZlcnRleCgxKSwgcmVhZFBhdGhbImEiXSk7CiAgICAgICAgICAgICBBc3NlcnQuRXF1YWwoImxvcCIsIHJlYWRQYXRoWzJdKTsKQEAgLTMwNiw3ICszMTgsNyBAQAogCiAgICAgICAgICAgICBQYXRoIHJlYWRQYXRoID0gcmVhZGVyLlRvT2JqZWN0KEpPYmplY3QuUGFyc2UoZ3JhcGhTb24pKTsKIAotICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCJbdls1XV0iLCByZWFkUGF0aC5Ub1N0cmluZygpKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCgicGF0aFt2WzVdXSIsIHJlYWRQYXRoLlRvU3RyaW5nKCkpOwogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5ldyBWZXJ0ZXgoNUwpLCByZWFkUGF0aFswXSk7CiAgICAgICAgICAgICBBc3NlcnQuRXF1YWwobmV3IFZlcnRleCg1TCksIHJlYWRQYXRoWyJ6Il0pOwogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDEsIHJlYWRQYXRoLkNvdW50KTsKQEAgLTQ1NiwxMCArNDY4LDMyIEBACiAgICAgICAgICAgICBBc3NlcnQuRXF1YWwobmV3IERpY3Rpb25hcnk8b2JqZWN0LCBvYmplY3Q+eyB7ICJhIiwgMSB9LCB7ICJiIiwgMiB9fSwgZGVzZXJpYWxpemVkVmFsdWUpOwogICAgICAgICB9CiAKKyAgICAgICAgW1RoZW9yeSwgTWVtYmVyRGF0YShuYW1lb2YoVmVyc2lvbnNTdXBwb3J0aW5nQ29sbGVjdGlvbnMpKV0KKyAgICAgICAgcHVibGljIHZvaWQgU2hvdWxkRGVzZXJpYWxpemVCdWxrU2V0KGludCB2ZXJzaW9uKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBzdHJpbmcganNvbiA9ICJ7XCJAdHlwZVwiOiBcImc6QnVsa1NldFwiLCBcIkB2YWx1ZVwiOiBbIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIm1hcmtvXCIsIHtcIkB0eXBlXCI6IFwiZzpJbnQ2NFwiLCBcIkB2YWx1ZVwiOiAxfSwgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcImpvc2hcIiwge1wiQHR5cGVcIjogXCJnOkludDY0XCIsIFwiQHZhbHVlXCI6IDN9XX0iOworICAgICAgICAgICAgdmFyIHJlYWRlciA9IENyZWF0ZVN0YW5kYXJkR3JhcGhTT05SZWFkZXIodmVyc2lvbik7CisKKyAgICAgICAgICAgIHZhciBkZXNlcmlhbGl6ZWRWYWx1ZSA9IHJlYWRlci5Ub09iamVjdChKT2JqZWN0LlBhcnNlKGpzb24pKTsKKworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5ldyBMaXN0PG9iamVjdD57ICJtYXJrbyIsICJqb3NoIiwgImpvc2giLCAiam9zaCIgfSwgZGVzZXJpYWxpemVkVmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZERlc2VyaWFsaXplQnVsa1NldFdpdGhHcmFwaFNPTjMoKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBzdHJpbmcganNvbiA9CisgICAgICAgICAgICAgICAgIntcIkB0eXBlXCI6XCJnOkxpc3RcIixcIkB2YWx1ZVwiOlt7XCJAdHlwZVwiOlwiZzpUcmF2ZXJzZXJcIixcIkB2YWx1ZVwiOntcImJ1bGtcIjp7XCJAdHlwZVwiOlwiZzpJbnQ2NFwiLFwiQHZhbHVlXCI6MX0sXCJ2YWx1ZVwiOntcIkB0eXBlXCI6XCJnOkJ1bGtTZXRcIixcIkB2YWx1ZVwiOlt7XCJAdHlwZVwiOlwiZzpJbnQ2NFwiLFwiQHZhbHVlXCI6MX0se1wiQHR5cGVcIjpcImc6SW50NjRcIixcIkB2YWx1ZVwiOjJ9LHtcIkB0eXBlXCI6XCJnOkludDY0XCIsXCJAdmFsdWVcIjowfSx7XCJAdHlwZVwiOlwiZzpJbnQ2NFwiLFwiQHZhbHVlXCI6M30se1wiQHR5cGVcIjpcImc6SW50NjRcIixcIkB2YWx1ZVwiOjJ9LHtcIkB0eXBlXCI6XCJnOkludDY0XCIsXCJAdmFsdWVcIjoxfSx7XCJAdHlwZVwiOlwiZzpEb3VibGVcIixcIkB2YWx1ZVwiOjEuMH0se1wiQHR5cGVcIjpcImc6SW50NjRcIixcIkB2YWx1ZVwiOjJ9XX19fV19IjsKKyAgICAgICAgICAgIHZhciByZWFkZXIgPSBDcmVhdGVTdGFuZGFyZEdyYXBoU09OUmVhZGVyKDMpOworICAgICAgICAgICAgdmFyIGRlc2VyaWFsaXplZFZhbHVlID0gcmVhZGVyLlRvT2JqZWN0KEpPYmplY3QuUGFyc2UoanNvbikpOworICAgICAgICB9CisKICAgICAgICAgW0ZhY3RdCiAgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZERlc2VyaWFsaXplVHJhdmVyc2VyKCkKICAgICAgICAgewotICAgICAgICAgICAgZHluYW1pYyBkID0gSk9iamVjdC5QYXJzZSgie1wiQHR5cGVcIjpcImc6VHJhdmVyc2VyXCIsXCJAdmFsdWVcIjoxfSIpOworICAgICAgICAgICAgZHluYW1pYyBkID0gSk9iamVjdC5QYXJzZSgie1wiQHR5cGVcIjpcImc6VHJhdmVyc2VyXCIsXCJAdmFsdWVcIjoxLFwiYnVsa1wiOiB7XCJ0eXBlXCI6XCJnOkludDY0XCIsXCJ2YWx1ZVwiOjEwfX0iKTsKIAogICAgICAgICAgICAgQXNzZXJ0Lk5vdE51bGwoZCk7CiAgICAgICAgICAgICBBc3NlcnQuRXF1YWwoImc6VHJhdmVyc2VyIiwgKHN0cmluZylkWyJAdHlwZSJdKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvU3RydWN0dXJlL1BhdGhUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvU3RydWN0dXJlL1BhdGhUZXN0cy5jcwppbmRleCBjYmMzZjhkLi42ZGY5MmJhIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L1N0cnVjdHVyZS9QYXRoVGVzdHMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9TdHJ1Y3R1cmUvUGF0aFRlc3RzLmNzCkBAIC0zNjQsNyArMzY0LDcgQEAKIAogICAgICAgICAgICAgdmFyIHBhdGhTdHIgPSBwYXRoLlRvU3RyaW5nKCk7CiAKLSAgICAgICAgICAgIEFzc2VydC5FcXVhbCgiWzEsIHZbMV0sIGhlbGxvXSIsIHBhdGhTdHIpOworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCJwYXRoWzEsIHZbMV0sIGhlbGxvXSIsIHBhdGhTdHIpOwogICAgICAgICB9CiAKICAgICAgICAgW0ZhY3RdCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L3BvbS54bWwgYi9ncmVtbGluLWRvdG5ldC90ZXN0L3BvbS54bWwKaW5kZXggYzYzNWQzZS4uOWU3OTIzOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9wb20ueG1sCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWRvdG5ldDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWRvdG5ldC10ZXN0czwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4uTmV0IC0gVGVzdHM8L25hbWU+CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9wb20ueG1sIGIvZ3JlbWxpbi1kcml2ZXIvcG9tLnhtbAppbmRleCBiZTM3ZTg3Li5kNmYyNjkzIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9wb20ueG1sCisrKyBiL2dyZW1saW4tZHJpdmVyL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tZHJpdmVyPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbiBEcml2ZXI8L25hbWU+CkBAIC01NiwxOSArNTYsNiBAQAogICAgICAgICAgICAgPC9leGNsdXNpb25zPgogICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLmdyb292eTwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyb292eS1zcWw8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8dmVyc2lvbj4ke2dyb292eS52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgIDxjbGFzc2lmaWVyPmluZHk8L2NsYXNzaWZpZXI+Ci0gICAgICAgICAgICA8ZXhjbHVzaW9ucz4KLSAgICAgICAgICAgICAgICA8IS0tIGV4Y2x1ZGUgbm9uLWluZHkgdHlwZSAtLT4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuZ3Jvb3Z5PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncm9vdnk8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICA8L2V4Y2x1c2lvbnM+Ci0gICAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICAgICAgPGRlcGVuZGVuY3k+CiAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmNvbW1vbnM8L2dyb3VwSWQ+CiAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWxhbmczPC9hcnRpZmFjdElkPgogICAgICAgICA8L2RlcGVuZGVuY3k+CkBAIC04MiwxNiArNjksMjMgQEAKICAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZzRqPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgPG9wdGlvbmFsPnRydWU8L29wdGlvbmFsPgogICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDwhLS0gVEVTVCAtLT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmp1bml0PC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPgotICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDwhLS0gVGlua2VyR3JhcGggaXMgYW4gb3B0aW9uYWwgZGVwZW5kZW5jeSB0aGF0IGlzIG9ubHkgcmVxdWlyZWQgaWYgZG9pbmcgZGVzZXJpYWxpemF0aW9uIG9mIEdyYXBoIGluc3RhbmNlcyAtLT4KICAgICAgICAgPGRlcGVuZGVuY3k+CiAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcmdyYXBoLWdyZW1saW48L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICA8b3B0aW9uYWw+dHJ1ZTwvb3B0aW9uYWw+CisgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgPCEtLSBURVNUIC0tPgorICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi10ZXN0PC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICA8ZGVwZW5kZW5jeT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2hhbm5lbGl6ZXIuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2hhbm5lbGl6ZXIuamF2YQppbmRleCAyMTNkNWYxLi5jNGJkM2UxIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0NoYW5uZWxpemVyLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9DaGFubmVsaXplci5qYXZhCkBAIC0xOSw2ICsxOSw3IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyOwogCiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5DaGFubmVsOworaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5FbXB0eUh0dHBIZWFkZXJzOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC53ZWJzb2NrZXR4LkNsb3NlV2ViU29ja2V0RnJhbWU7CiBpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLndlYnNvY2tldHguUGluZ1dlYlNvY2tldEZyYW1lOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLmV4Y2VwdGlvbi5Db25uZWN0aW9uRXhjZXB0aW9uOwpAQCAtMzIsNyArMzMsNiBAQAogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuQ2hhbm5lbFBpcGVsaW5lOwogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuc29ja2V0LlNvY2tldENoYW5uZWw7CiBpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBDbGllbnRDb2RlYzsKLWltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnM7CiBpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBPYmplY3RBZ2dyZWdhdG9yOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC53ZWJzb2NrZXR4LldlYlNvY2tldENsaWVudEhhbmRzaGFrZXJGYWN0b3J5OwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC53ZWJzb2NrZXR4LldlYlNvY2tldFZlcnNpb247CkBAIC0yMDEsNyArMjAxLDcgQEAKICAgICAgICAgICAgIGZpbmFsIGludCBtYXhDb250ZW50TGVuZ3RoID0gY2x1c3Rlci5jb25uZWN0aW9uUG9vbFNldHRpbmdzKCkubWF4Q29udGVudExlbmd0aDsKICAgICAgICAgICAgIGhhbmRsZXIgPSBuZXcgV2ViU29ja2V0Q2xpZW50SGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgV2ViU29ja2V0Q2xpZW50SGFuZHNoYWtlckZhY3RvcnkubmV3SGFuZHNoYWtlcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmdldFVyaSgpLCBXZWJTb2NrZXRWZXJzaW9uLlYxMywgbnVsbCwgZmFsc2UsIEh0dHBIZWFkZXJzLkVNUFRZX0hFQURFUlMsIG1heENvbnRlbnRMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmdldFVyaSgpLCBXZWJTb2NrZXRWZXJzaW9uLlYxMywgbnVsbCwgZmFsc2UsIEVtcHR5SHR0cEhlYWRlcnMuSU5TVEFOQ0UsIG1heENvbnRlbnRMZW5ndGgpKTsKIAogICAgICAgICAgICAgcGlwZWxpbmUuYWRkTGFzdCgiaHR0cC1jb2RlYyIsIG5ldyBIdHRwQ2xpZW50Q29kZWMoKSk7CiAgICAgICAgICAgICBwaXBlbGluZS5hZGRMYXN0KCJhZ2dyZWdhdG9yIiwgbmV3IEh0dHBPYmplY3RBZ2dyZWdhdG9yKG1heENvbnRlbnRMZW5ndGgpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2xpZW50LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0NsaWVudC5qYXZhCmluZGV4IDQxZDE3NTUuLjljYmMzMzcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2xpZW50LmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9DbGllbnQuamF2YQpAQCAtNjcsNyArNjcsNyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIE1ha2VzIGFueSBmaW5hbCBjaGFuZ2VzIHRvIHRoZSBidWlsZGVyIGFuZCByZXR1cm5zIHRoZSBjb25zdHJ1Y3RlZCB7QGxpbmsgUmVxdWVzdE1lc3NhZ2V9LiAgSW1wbGVtZW50ZXJzCisgICAgICogTWFrZXMgYW55IGluaXRpYWwgY2hhbmdlcyB0byB0aGUgYnVpbGRlciBhbmQgcmV0dXJucyB0aGUgY29uc3RydWN0ZWQge0BsaW5rIFJlcXVlc3RNZXNzYWdlfS4gIEltcGxlbWVudGVycwogICAgICAqIG1heSBjaG9vc2UgdG8gb3ZlcnJpZGUgdGhpcyBtZXNzYWdlIHRvIGFwcGVuZCBkYXRhIHRvIHRoZSByZXF1ZXN0IGJlZm9yZSBzZW5kaW5nLiAgQnkgZGVmYXVsdCwgdGhpcyBtZXRob2QKICAgICAgKiB3aWxsIHNpbXBseSByZXR1cm4gdGhlIHtAY29kZSBidWlsZGVyfSBwYXNzZWQgaW4gYnkgdGhlIGNhbGxlci4KICAgICAgKi8KQEAgLTk1LDE4ICs5NSw2IEBACiAgICAgICogc2VydmVyIHRvIGEgdmFyaWFibGUgY2FsbGVkICJnIiBmb3IgdGhlIGNvbnRleHQgb2YgdGhlIHJlcXVlc3RzIG1hZGUgdGhyb3VnaCB0aGF0IHtAY29kZSBDbGllbnR9LgogICAgICAqCiAgICAgICogQHBhcmFtIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UgcmViaW5kcyB0aGUgc3BlY2lmaWVkIGdsb2JhbCBHcmVtbGluIFNlcnZlciB2YXJpYWJsZSB0byAiZyIKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMS4wLCByZXBsYWNlZCBieSB7QGxpbmsgI2FsaWFzKFN0cmluZyl9Ci0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgQ2xpZW50IHJlYmluZChmaW5hbCBTdHJpbmcgZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSkgewotICAgICAgICByZXR1cm4gYWxpYXMoZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIGEgbmV3IHtAY29kZSBDbGllbnR9IHRoYXQgYWxpYXNlcyB0aGUgc3BlY2lmaWVkIHtAbGluayBHcmFwaH0gb3Ige0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gbmFtZSBvbiB0aGUKLSAgICAgKiBzZXJ2ZXIgdG8gYSB2YXJpYWJsZSBjYWxsZWQgImciIGZvciB0aGUgY29udGV4dCBvZiB0aGUgcmVxdWVzdHMgbWFkZSB0aHJvdWdoIHRoYXQge0Bjb2RlIENsaWVudH0uCi0gICAgICoKLSAgICAgKiBAcGFyYW0gZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSByZWJpbmRzIHRoZSBzcGVjaWZpZWQgZ2xvYmFsIEdyZW1saW4gU2VydmVyIHZhcmlhYmxlIHRvICJnIgogICAgICAqLwogICAgIHB1YmxpYyBDbGllbnQgYWxpYXMoZmluYWwgU3RyaW5nIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpIHsKICAgICAgICAgcmV0dXJuIGFsaWFzKG1ha2VEZWZhdWx0QWxpYXNNYXAoZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSkpOwpAQCAtMTE3LDE2ICsxMDUsNiBAQAogICAgICAqIG9uZSBvciBtb3JlIGdsb2JhbGx5IGRlZmluZWQge0BsaW5rIEdyYXBofSBvciB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBzZXJ2ZXIgYmluZGluZ3MgZm9yIHRoZSBjb250ZXh0IG9mCiAgICAgICogdGhlIGNyZWF0ZWQge0Bjb2RlIENsaWVudH0uCiAgICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgQ2xpZW50IHJlYmluZChmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gcmViaW5kaW5ncykgewotICAgICAgICByZXR1cm4gYWxpYXMocmViaW5kaW5ncyk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlcyBhIHtAY29kZSBDbGllbnR9IHRoYXQgc3VwcGxpZXMgdGhlIHNwZWNpZmllZCBzZXQgb2YgYWxpYXNlcywgdGh1cyBhbGxvd2luZyB0aGUgdXNlciB0byByZS1uYW1lCi0gICAgICogb25lIG9yIG1vcmUgZ2xvYmFsbHkgZGVmaW5lZCB7QGxpbmsgR3JhcGh9IG9yIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IHNlcnZlciBiaW5kaW5ncyBmb3IgdGhlIGNvbnRleHQgb2YKLSAgICAgKiB0aGUgY3JlYXRlZCB7QGNvZGUgQ2xpZW50fS4KLSAgICAgKi8KICAgICBwdWJsaWMgQ2xpZW50IGFsaWFzKGZpbmFsIE1hcDxTdHJpbmcsU3RyaW5nPiBhbGlhc2VzKSB7CiAgICAgICAgIHJldHVybiBuZXcgQWxpYXNDbHVzdGVyZWRDbGllbnQodGhpcywgYWxpYXNlcywgc2V0dGluZ3MpOwogICAgIH0KQEAgLTE3Myw2ICsxNTEsMjQgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBBIHZlcnNpb24gb2Yge0BsaW5rICNzdWJtaXQoQnl0ZWNvZGUpfSB3aGljaCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBzZXQgcGVyLXJlcXVlc3Qgb3B0aW9ucy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBieXRlY29kZSByZXF1ZXN0IGluIHRoZSBmb3JtIG9mIGdyZW1saW4ge0BsaW5rIEJ5dGVjb2RlfQorICAgICAqIEBwYXJhbSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdAorICAgICAqCisgICAgICogQHNlZSAjc3VibWl0KEJ5dGVjb2RlKQorICAgICAqLworICAgIHB1YmxpYyBSZXN1bHRTZXQgc3VibWl0KGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlLCBmaW5hbCBSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnl0ZWNvZGUsIG9wdGlvbnMpLmdldCgpOworICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB1b2UpIHsKKyAgICAgICAgICAgIHRocm93IHVvZTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBBbiBhc3luY2hyb25vdXMgdmVyc2lvbiBvZiB7QGxpbmsgI3N1Ym1pdChUcmF2ZXJzYWwpfS4gUmVzdWx0cyBhcmUgcmV0dXJuZWQgYXMge0BsaW5rIFRyYXZlcnNlcn0gaW5zdGFuY2VzIGFuZAogICAgICAqIGFyZSB0aGVyZWZvcmUgYnVsa2VkLCBtZWFuaW5nIHRoYXQgdG8gcHJvcGVybHkgaXRlcmF0ZSB0aGUgY29udGVudHMgb2YgdGhlIHJlc3VsdCBlYWNoIHtAbGluayBUcmF2ZXJzZXIjYnVsaygpfQogICAgICAqIG11c3QgYmUgZXhhbWluZWQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBvYmplY3Qgc2hvdWxkIGJlIHByZXNlbnRlZCBpbiBpdGVyYXRpb24uCkBAIC0xODIsNiArMTc4LDE4IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQSB2ZXJzaW9uIG9mIHtAbGluayAjc3VibWl0KEJ5dGVjb2RlKX0gd2hpY2ggcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gc2V0IHBlci1yZXF1ZXN0IG9wdGlvbnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYnl0ZWNvZGUgcmVxdWVzdCBpbiB0aGUgZm9ybSBvZiBncmVtbGluIHtAbGluayBCeXRlY29kZX0KKyAgICAgKiBAcGFyYW0gb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QKKyAgICAgKgorICAgICAqIEBzZWUgI3N1Ym1pdEFzeW5jKEJ5dGVjb2RlKQorICAgICAqLworICAgIHB1YmxpYyBDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IHN1Ym1pdEFzeW5jKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlLCBmaW5hbCBSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IFRyYXZlcnNhbCBzdWJtaXNzaW9uIC0gdXNlIGEgc2Vzc2lvbmxlc3MgQ2xpZW50IGNyZWF0ZWQgd2l0aCBmcm9tIHRoZSBhbGlhcygpIG1ldGhvZCIpOworICAgIH0KKworICAgIC8qKgogICAgICAqIEluaXRpYWxpemVzIHRoZSBjbGllbnQgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIHRoYXQgYSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIHRvIHRoZSBzZXJ2ZXIuICBEZXBlbmRpbmcgb24gdGhlCiAgICAgICogaW1wbGVtZW50YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gdGhpcyBibG9ja2luZyBjYWxsIG1heSB0YWtlIHNvbWUgdGltZS4gIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkCiAgICAgICogYXV0b21hdGljYWxseSBpZiBpdCBpcyBub3QgY2FsbGVkIGRpcmVjdGx5IGFuZCBtdWx0aXBsZSBjYWxscyB3aWxsIG5vdCBoYXZlIGVmZmVjdC4KQEAgLTIwNiw3ICsyMTQsNyBAQAogICAgICAqIEBwYXJhbSBncmVtbGluIHRoZSBncmVtbGluIHNjcmlwdCB0byBleGVjdXRlCiAgICAgICovCiAgICAgcHVibGljIFJlc3VsdFNldCBzdWJtaXQoZmluYWwgU3RyaW5nIGdyZW1saW4pIHsKLSAgICAgICAgcmV0dXJuIHN1Ym1pdChncmVtbGluLCBudWxsKTsKKyAgICAgICAgcmV0dXJuIHN1Ym1pdChncmVtbGluLCBSZXF1ZXN0T3B0aW9ucy5FTVBUWSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC0yMjcsMTMgKzIzNSwyOCBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIFN1Ym1pdHMgYSBHcmVtbGluIHNjcmlwdCB0byB0aGUgc2VydmVyIGFuZCByZXR1cm5zIGEge0BsaW5rIFJlc3VsdFNldH0gb25jZSB0aGUgd3JpdGUgb2YgdGhlIHJlcXVlc3QgaXMKKyAgICAgKiBjb21wbGV0ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBncmVtbGluIHRoZSBncmVtbGluIHNjcmlwdCB0byBleGVjdXRlCisgICAgICogQHBhcmFtIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0CisgICAgICovCisgICAgcHVibGljIFJlc3VsdFNldCBzdWJtaXQoZmluYWwgU3RyaW5nIGdyZW1saW4sIGZpbmFsIFJlcXVlc3RPcHRpb25zIG9wdGlvbnMpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBzdWJtaXRBc3luYyhncmVtbGluLCBvcHRpb25zKS5nZXQoKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBUaGUgYXN5bmNocm9ub3VzIHZlcnNpb24gb2Yge0BsaW5rICNzdWJtaXQoU3RyaW5nKX0gd2hlcmUgdGhlIHJldHVybmVkIGZ1dHVyZSB3aWxsIGNvbXBsZXRlIHdoZW4gdGhlCiAgICAgICogd3JpdGUgb2YgdGhlIHJlcXVlc3QgY29tcGxldGVzLgogICAgICAqCiAgICAgICogQHBhcmFtIGdyZW1saW4gdGhlIGdyZW1saW4gc2NyaXB0IHRvIGV4ZWN1dGUKICAgICAgKi8KICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBTdHJpbmcgZ3JlbWxpbikgewotICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoZ3JlbWxpbiwgbnVsbCk7CisgICAgICAgIHJldHVybiBzdWJtaXRBc3luYyhncmVtbGluLCBSZXF1ZXN0T3B0aW9ucy5idWlsZCgpLmNyZWF0ZSgpKTsKICAgICB9CiAKICAgICAvKioKQEAgLTI0NCwxMyArMjY3LDEyIEBACiAgICAgICogQHBhcmFtIHBhcmFtZXRlcnMgYSBtYXAgb2YgcGFyYW1ldGVycyB0aGF0IHdpbGwgYmUgYm91bmQgdG8gdGhlIHNjcmlwdCBvbiBleGVjdXRpb24KICAgICAgKi8KICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBTdHJpbmcgZ3JlbWxpbiwgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBwYXJhbWV0ZXJzKSB7Ci0gICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKFRva2Vucy5PUFNfRVZBTCkKLSAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0dSRU1MSU4sIGdyZW1saW4pCi0gICAgICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19CQVRDSF9TSVpFLCBjbHVzdGVyLmNvbm5lY3Rpb25Qb29sU2V0dGluZ3MoKS5yZXN1bHRJdGVyYXRpb25CYXRjaFNpemUpOworICAgICAgICBmaW5hbCBSZXF1ZXN0T3B0aW9ucy5CdWlsZGVyIG9wdGlvbnMgPSBSZXF1ZXN0T3B0aW9ucy5idWlsZCgpOworICAgICAgICBpZiAocGFyYW1ldGVycyAhPSBudWxsICYmICFwYXJhbWV0ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcGFyYW1ldGVycy5mb3JFYWNoKG9wdGlvbnM6OmFkZFBhcmFtZXRlcik7CisgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbC5vZk51bGxhYmxlKHBhcmFtZXRlcnMpLmlmUHJlc2VudChwYXJhbXMgLT4gcmVxdWVzdC5hZGRBcmcoVG9rZW5zLkFSR1NfQklORElOR1MsIHBhcmFtZXRlcnMpKTsKLQotICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnVpbGRNZXNzYWdlKHJlcXVlc3QpLmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGdyZW1saW4sIG9wdGlvbnMuY3JlYXRlKCkpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMjYwLDE5ICsyODIsMTcgQEAKICAgICAgKiBAcGFyYW0gZ3JlbWxpbiB0aGUgZ3JlbWxpbiBzY3JpcHQgdG8gZXhlY3V0ZQogICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIGEgbWFwIG9mIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBzY3JpcHQgb24gZXhlY3V0aW9uCiAgICAgICogQHBhcmFtIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UgcmViaW5kcyB0aGUgc3BlY2lmaWVkIGdsb2JhbCBHcmVtbGluIFNlcnZlciB2YXJpYWJsZSB0byAiZyIKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgI3N1Ym1pdEFzeW5jKFN0cmluZywgUmVxdWVzdE9wdGlvbnMpfS4KICAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IHN1Ym1pdEFzeW5jKGZpbmFsIFN0cmluZyBncmVtbGluLCBmaW5hbCBTdHJpbmcgZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IHBhcmFtZXRlcnMpIHsKLSAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UuQnVpbGRlciByZXF1ZXN0ID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoVG9rZW5zLk9QU19FVkFMKQotICAgICAgICAgICAgICAgIC5hZGQoVG9rZW5zLkFSR1NfR1JFTUxJTiwgZ3JlbWxpbikKLSAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0JBVENIX1NJWkUsIGNsdXN0ZXIuY29ubmVjdGlvblBvb2xTZXR0aW5ncygpLnJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZSk7CisgICAgICAgIE1hcDxTdHJpbmcsU3RyaW5nPiBhbGlhc2VzID0gbnVsbDsKKyAgICAgICAgaWYgKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UgIT0gbnVsbCAmJiAhZ3JhcGhPclRyYXZlcnNhbFNvdXJjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGFsaWFzZXMgPSBtYWtlRGVmYXVsdEFsaWFzTWFwKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpOworICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWwub2ZOdWxsYWJsZShwYXJhbWV0ZXJzKS5pZlByZXNlbnQocGFyYW1zIC0+IHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0JJTkRJTkdTLCBwYXJhbWV0ZXJzKSk7Ci0KLSAgICAgICAgaWYgKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UgIT0gbnVsbCAmJiAhZ3JhcGhPclRyYXZlcnNhbFNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19BTElBU0VTLCBtYWtlRGVmYXVsdEFsaWFzTWFwKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpKTsKLQotICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnVpbGRNZXNzYWdlKHJlcXVlc3QpLmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGdyZW1saW4sIGFsaWFzZXMsIHBhcmFtZXRlcnMpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMjg0LDE5ICszMDQsNDkgQEAKICAgICAgKiBAcGFyYW0gYWxpYXNlcyBhbGlhc2VzIHRoZSBzcGVjaWZpZWQgZ2xvYmFsIEdyZW1saW4gU2VydmVyIHZhcmlhYmxlIHNvbWUgb3RoZXIgbmFtZSB0aGF0IHRoZW4gYmUgdXNlZCBpbiB0aGUKICAgICAgKiAgICAgICAgICAgICAgICBzY3JpcHQgd2hlcmUgdGhlIGtleSBpcyB0aGUgYWxpYXMgbmFtZSBhbmQgdGhlIHZhbHVlIHJlcHJlc2VudHMgdGhlIGdsb2JhbCB2YXJpYWJsZSBvbiB0aGUKICAgICAgKiAgICAgICAgICAgICAgICBzZXJ2ZXIKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgI3N1Ym1pdEFzeW5jKFN0cmluZywgUmVxdWVzdE9wdGlvbnMpfS4KICAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IHN1Ym1pdEFzeW5jKGZpbmFsIFN0cmluZyBncmVtbGluLCBmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gYWxpYXNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IHBhcmFtZXRlcnMpIHsKLSAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UuQnVpbGRlciByZXF1ZXN0ID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoVG9rZW5zLk9QU19FVkFMKQorICAgICAgICBmaW5hbCBSZXF1ZXN0T3B0aW9ucy5CdWlsZGVyIG9wdGlvbnMgPSBSZXF1ZXN0T3B0aW9ucy5idWlsZCgpOworICAgICAgICBpZiAoYWxpYXNlcyAhPSBudWxsICYmICFhbGlhc2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYWxpYXNlcy5mb3JFYWNoKG9wdGlvbnM6OmFkZEFsaWFzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJhbWV0ZXJzICE9IG51bGwgJiYgIXBhcmFtZXRlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmZvckVhY2gob3B0aW9uczo6YWRkUGFyYW1ldGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIG9wdGlvbnMuYmF0Y2hTaXplKGNsdXN0ZXIuY29ubmVjdGlvblBvb2xTZXR0aW5ncygpLnJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZSk7CisKKyAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGdyZW1saW4sIG9wdGlvbnMuY3JlYXRlKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBhc3luY2hyb25vdXMgdmVyc2lvbiBvZiB7QGxpbmsgI3N1Ym1pdChTdHJpbmcsIFJlcXVlc3RPcHRpb25zKX19IHdoZXJlIHRoZSByZXR1cm5lZCBmdXR1cmUgd2lsbCBjb21wbGV0ZSB3aGVuIHRoZQorICAgICAqIHdyaXRlIG9mIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBncmVtbGluIHRoZSBncmVtbGluIHNjcmlwdCB0byBleGVjdXRlCisgICAgICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgdG8gc3VwcGx5IGZvciB0aGlzIHJlcXVlc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBTdHJpbmcgZ3JlbWxpbiwgZmluYWwgUmVxdWVzdE9wdGlvbnMgb3B0aW9ucykgeworICAgICAgICBmaW5hbCBpbnQgYmF0Y2hTaXplID0gb3B0aW9ucy5nZXRCYXRjaFNpemUoKS5vckVsc2UoY2x1c3Rlci5jb25uZWN0aW9uUG9vbFNldHRpbmdzKCkucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplKTsKKworICAgICAgICAvLyBuZWVkIHRvIGNhbGwgYnVpbGRNZXNzYWdlKCkgcmlnaHQgYXdheSB0byBnZXQgY2xpZW50IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCB0aGF0IHdheSByZXF1ZXN0IHNwZWNpZmljCisgICAgICAgIC8vIG9uZXMgY2FuIG92ZXJyaWRlIGFzIG5lZWRlZAorICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZS5CdWlsZGVyIHJlcXVlc3QgPSBidWlsZE1lc3NhZ2UoUmVxdWVzdE1lc3NhZ2UuYnVpbGQoVG9rZW5zLk9QU19FVkFMKSkKICAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0dSRU1MSU4sIGdyZW1saW4pCi0gICAgICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19CQVRDSF9TSVpFLCBjbHVzdGVyLmNvbm5lY3Rpb25Qb29sU2V0dGluZ3MoKS5yZXN1bHRJdGVyYXRpb25CYXRjaFNpemUpOworICAgICAgICAgICAgICAgIC5hZGQoVG9rZW5zLkFSR1NfQkFUQ0hfU0laRSwgYmF0Y2hTaXplKTsKIAotICAgICAgICBPcHRpb25hbC5vZk51bGxhYmxlKHBhcmFtZXRlcnMpLmlmUHJlc2VudChwYXJhbXMgLT4gcmVxdWVzdC5hZGRBcmcoVG9rZW5zLkFSR1NfQklORElOR1MsIHBhcmFtZXRlcnMpKTsKKyAgICAgICAgLy8gYXBwbHkgc2V0dGluZ3MgaWYgdGhleSB3ZXJlIG1hZGUgYXZhaWxhYmxlCisgICAgICAgIG9wdGlvbnMuZ2V0VGltZW91dCgpLmlmUHJlc2VudCh0aW1lb3V0IC0+IHJlcXVlc3QuYWRkKFRva2Vucy5BUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQsIHRpbWVvdXQpKTsKKyAgICAgICAgb3B0aW9ucy5nZXRQYXJhbWV0ZXJzKCkuaWZQcmVzZW50KHBhcmFtcyAtPiByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19CSU5ESU5HUywgcGFyYW1zKSk7CisgICAgICAgIG9wdGlvbnMuZ2V0QWxpYXNlcygpLmlmUHJlc2VudChhbGlhc2VzIC0+IHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0FMSUFTRVMsIGFsaWFzZXMpKTsKKyAgICAgICAgb3B0aW9ucy5nZXRPdmVycmlkZVJlcXVlc3RJZCgpLmlmUHJlc2VudChyZXF1ZXN0OjpvdmVycmlkZVJlcXVlc3RJZCk7CisgICAgICAgIG9wdGlvbnMuZ2V0VXNlckFnZW50KCkuaWZQcmVzZW50KHVzZXJBZ2VudCAtPiByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19VU0VSX0FHRU5ULCB1c2VyQWdlbnQpKTsKIAotICAgICAgICBpZiAoYWxpYXNlcyAhPSBudWxsICYmICFhbGlhc2VzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0FMSUFTRVMsIGFsaWFzZXMpOwotCi0gICAgICAgIHJldHVybiBzdWJtaXRBc3luYyhidWlsZE1lc3NhZ2UocmVxdWVzdCkuY3JlYXRlKCkpOworICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMocmVxdWVzdC5jcmVhdGUoKSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC00MDYsNjEgKzQ1Niw2IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKioKLSAgICAgICAgICogVGhlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIHtAbGluayAjc3VibWl0KFN0cmluZywgTWFwKX19IHdoZXJlIHRoZSByZXR1cm5lZCBmdXR1cmUgd2lsbCBjb21wbGV0ZSB3aGVuIHRoZQotICAgICAgICAgKiB3cml0ZSBvZiB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuCi0gICAgICAgICAqCi0gICAgICAgICAqIEBwYXJhbSBncmVtbGluIHRoZSBncmVtbGluIHNjcmlwdCB0byBleGVjdXRlCi0gICAgICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIGEgbWFwIG9mIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBzY3JpcHQgb24gZXhlY3V0aW9uCi0gICAgICAgICAqIEBwYXJhbSBncmFwaE9yVHJhdmVyc2FsU291cmNlIHJlYmluZHMgdGhlIHNwZWNpZmllZCBnbG9iYWwgR3JlbWxpbiBTZXJ2ZXIgdmFyaWFibGUgdG8gImciCi0gICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBTdHJpbmcgZ3JlbWxpbiwgZmluYWwgU3RyaW5nIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gcGFyYW1ldGVycykgewotICAgICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UuQnVpbGRlciByZXF1ZXN0ID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoVG9rZW5zLk9QU19FVkFMKQotICAgICAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0dSRU1MSU4sIGdyZW1saW4pCi0gICAgICAgICAgICAgICAgICAgIC5hZGQoVG9rZW5zLkFSR1NfQkFUQ0hfU0laRSwgY2x1c3Rlci5jb25uZWN0aW9uUG9vbFNldHRpbmdzKCkucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplKTsKLQotICAgICAgICAgICAgT3B0aW9uYWwub2ZOdWxsYWJsZShwYXJhbWV0ZXJzKS5pZlByZXNlbnQocGFyYW1zIC0+IHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0JJTkRJTkdTLCBwYXJhbWV0ZXJzKSk7Ci0KLSAgICAgICAgICAgIGlmIChncmFwaE9yVHJhdmVyc2FsU291cmNlICE9IG51bGwgJiYgIWdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0FMSUFTRVMsIG1ha2VEZWZhdWx0QWxpYXNNYXAoZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSkpOwotCi0gICAgICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnVpbGRNZXNzYWdlKHJlcXVlc3QpLmNyZWF0ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBUaGUgYXN5bmNocm9ub3VzIHZlcnNpb24gb2Yge0BsaW5rICNzdWJtaXQoU3RyaW5nLCBNYXApfX0gd2hlcmUgdGhlIHJldHVybmVkIGZ1dHVyZSB3aWxsIGNvbXBsZXRlIHdoZW4gdGhlCi0gICAgICAgICAqIHdyaXRlIG9mIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy4KLSAgICAgICAgICoKLSAgICAgICAgICogQHBhcmFtIGdyZW1saW4gdGhlIGdyZW1saW4gc2NyaXB0IHRvIGV4ZWN1dGUKLSAgICAgICAgICogQHBhcmFtIHBhcmFtZXRlcnMgYSBtYXAgb2YgcGFyYW1ldGVycyB0aGF0IHdpbGwgYmUgYm91bmQgdG8gdGhlIHNjcmlwdCBvbiBleGVjdXRpb24KLSAgICAgICAgICogQHBhcmFtIGFsaWFzZXMgYWxpYXNlcyB0aGUgc3BlY2lmaWVkIGdsb2JhbCBHcmVtbGluIFNlcnZlciB2YXJpYWJsZSBzb21lIG90aGVyIG5hbWUgdGhhdCB0aGVuIGJlIHVzZWQgaW4gdGhlCi0gICAgICAgICAqICAgICAgICAgICAgICAgIHNjcmlwdCB3aGVyZSB0aGUga2V5IGlzIHRoZSBhbGlhcyBuYW1lIGFuZCB0aGUgdmFsdWUgcmVwcmVzZW50cyB0aGUgZ2xvYmFsIHZhcmlhYmxlIG9uIHRoZQotICAgICAgICAgKiAgICAgICAgICAgICAgICBzZXJ2ZXIKLSAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IHN1Ym1pdEFzeW5jKGZpbmFsIFN0cmluZyBncmVtbGluLCBmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gYWxpYXNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBwYXJhbWV0ZXJzKSB7Ci0gICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZS5CdWlsZGVyIHJlcXVlc3QgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZChUb2tlbnMuT1BTX0VWQUwpCi0gICAgICAgICAgICAgICAgICAgIC5hZGQoVG9rZW5zLkFSR1NfR1JFTUxJTiwgZ3JlbWxpbikKLSAgICAgICAgICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19CQVRDSF9TSVpFLCBjbHVzdGVyLmNvbm5lY3Rpb25Qb29sU2V0dGluZ3MoKS5yZXN1bHRJdGVyYXRpb25CYXRjaFNpemUpOwotCi0gICAgICAgICAgICBPcHRpb25hbC5vZk51bGxhYmxlKHBhcmFtZXRlcnMpLmlmUHJlc2VudChwYXJhbXMgLT4gcmVxdWVzdC5hZGRBcmcoVG9rZW5zLkFSR1NfQklORElOR1MsIHBhcmFtZXRlcnMpKTsKLQotICAgICAgICAgICAgaWYgKGFsaWFzZXMgIT0gbnVsbCAmJiAhYWxpYXNlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRBcmcoVG9rZW5zLkFSR1NfQUxJQVNFUywgYWxpYXNlcyk7Ci0KLSAgICAgICAgICAgIHJldHVybiBzdWJtaXRBc3luYyhidWlsZE1lc3NhZ2UocmVxdWVzdCkuY3JlYXRlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIHtAaW5oZXJpdERvY30KLSAgICAgICAgICovCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgQ2xpZW50IHJlYmluZChmaW5hbCBTdHJpbmcgZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSkgewotICAgICAgICAgICAgcmV0dXJuIGFsaWFzKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCiAgICAgICAgICAqIHtAaW5oZXJpdERvY30KICAgICAgICAgICovCiAgICAgICAgIEBPdmVycmlkZQpAQCAtNDcxLDE2ICs0NjYsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIENyZWF0ZXMgYSB7QGNvZGUgQ2xpZW50fSB0aGF0IHN1cHBsaWVzIHRoZSBzcGVjaWZpZWQgc2V0IG9mIGFsaWFzZXMsIHRodXMgYWxsb3dpbmcgdGhlIHVzZXIgdG8gcmUtbmFtZQotICAgICAgICAgKiBvbmUgb3IgbW9yZSBnbG9iYWxseSBkZWZpbmVkIHtAbGluayBHcmFwaH0gb3Ige0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gc2VydmVyIGJpbmRpbmdzIGZvciB0aGUgY29udGV4dCBvZgotICAgICAgICAgKiB0aGUgY3JlYXRlZCB7QGNvZGUgQ2xpZW50fS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBDbGllbnQgcmViaW5kKGZpbmFsIE1hcDxTdHJpbmcsU3RyaW5nPiByZWJpbmRpbmdzKSB7Ci0gICAgICAgICAgICByZXR1cm4gYWxpYXMocmViaW5kaW5ncyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKICAgICAgICAgICoge0Bpbmhlcml0RG9jfQogICAgICAgICAgKi8KICAgICAgICAgQE92ZXJyaWRlCkBAIC01NTIsMzcgKzUzNywzOCBAQAogICAgICAqIFVzZXMgYSB7QGxpbmsgQ2xpZW50LkNsdXN0ZXJlZENsaWVudH0gdGhhdCByZWJpbmRzIHJlcXVlc3RzIHRvIGEgc3BlY2lmaWVkIHtAbGluayBHcmFwaH0gb3IKICAgICAgKiB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBpbnN0YW5jZXMgb24gdGhlIHNlcnZlci1zaWRlLgogICAgICAqLwotICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgY2xhc3MgQWxpYXNDbHVzdGVyZWRDbGllbnQgZXh0ZW5kcyBSZWJvdW5kQ2x1c3RlcmVkQ2xpZW50IHsKLSAgICAgICAgcHVibGljIEFsaWFzQ2x1c3RlcmVkQ2xpZW50KGZpbmFsIENsaWVudCBjbGllbnQsIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gcmViaW5kaW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIENsaWVudC5TZXR0aW5ncyBzZXR0aW5ncykgewotICAgICAgICAgICAgc3VwZXIoY2xpZW50LCByZWJpbmRpbmdzLCBzZXR0aW5ncyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBVc2VzIGEge0BsaW5rIENsaWVudC5DbHVzdGVyZWRDbGllbnR9IHRoYXQgcmViaW5kcyByZXF1ZXN0cyB0byBhIHNwZWNpZmllZCB7QGxpbmsgR3JhcGh9IG9yCi0gICAgICoge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gaW5zdGFuY2VzIG9uIHRoZSBzZXJ2ZXItc2lkZS4KLSAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4xLjEtaW5jdWJhdGluZywgcmVwbGFjZWQgYnkge0BsaW5rIEFsaWFzQ2x1c3RlcmVkQ2xpZW50fS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgUmVib3VuZENsdXN0ZXJlZENsaWVudCBleHRlbmRzIENsaWVudCB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBBbGlhc0NsdXN0ZXJlZENsaWVudCBleHRlbmRzIENsaWVudCB7CiAgICAgICAgIHByaXZhdGUgZmluYWwgQ2xpZW50IGNsaWVudDsKICAgICAgICAgcHJpdmF0ZSBmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gYWxpYXNlcyA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICAgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8Vm9pZD4gY2xvc2UgPSBuZXcgQ29tcGxldGFibGVGdXR1cmU8PigpOwogCi0gICAgICAgIFJlYm91bmRDbHVzdGVyZWRDbGllbnQoZmluYWwgQ2xpZW50IGNsaWVudCwgZmluYWwgTWFwPFN0cmluZyxTdHJpbmc+IHJlYmluZGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQ2xpZW50LlNldHRpbmdzIHNldHRpbmdzKSB7CisgICAgICAgIEFsaWFzQ2x1c3RlcmVkQ2xpZW50KGZpbmFsIENsaWVudCBjbGllbnQsIGZpbmFsIE1hcDxTdHJpbmcsU3RyaW5nPiBhbGlhc2VzLCBmaW5hbCBDbGllbnQuU2V0dGluZ3Mgc2V0dGluZ3MpIHsKICAgICAgICAgICAgIHN1cGVyKGNsaWVudC5jbHVzdGVyLCBzZXR0aW5ncyk7CiAgICAgICAgICAgICB0aGlzLmNsaWVudCA9IGNsaWVudDsKLSAgICAgICAgICAgIHRoaXMuYWxpYXNlcy5wdXRBbGwocmViaW5kaW5ncyk7CisgICAgICAgICAgICB0aGlzLmFsaWFzZXMucHV0QWxsKGFsaWFzZXMpOwogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IHN1Ym1pdEFzeW5jKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB7CisgICAgICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnl0ZWNvZGUsIFJlcXVlc3RPcHRpb25zLkVNUFRZKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBCeXRlY29kZSBieXRlY29kZSwgZmluYWwgUmVxdWVzdE9wdGlvbnMgb3B0aW9ucykgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnVpbGRNZXNzYWdlKFJlcXVlc3RNZXNzYWdlLmJ1aWxkKFRva2Vucy5PUFNfQllURUNPREUpCi0gICAgICAgICAgICAgICAgICAgICAgICAucHJvY2Vzc29yKCJ0cmF2ZXJzYWwiKS5hZGRBcmcoVG9rZW5zLkFSR1NfR1JFTUxJTiwgYnl0ZWNvZGUpKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBjYWxsIGJ1aWxkTWVzc2FnZSgpIHJpZ2h0IGF3YXkgdG8gZ2V0IGNsaWVudCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucywgdGhhdCB3YXkgcmVxdWVzdCBzcGVjaWZpYworICAgICAgICAgICAgICAgIC8vIG9uZXMgY2FuIG92ZXJyaWRlIGFzIG5lZWRlZAorICAgICAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgcmVxdWVzdCA9IGJ1aWxkTWVzc2FnZShSZXF1ZXN0TWVzc2FnZS5idWlsZChUb2tlbnMuT1BTX0JZVEVDT0RFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9jZXNzb3IoInRyYXZlcnNhbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZEFyZyhUb2tlbnMuQVJHU19HUkVNTElOLCBieXRlY29kZSkpOworCisgICAgICAgICAgICAgICAgLy8gYXBwbHkgc2V0dGluZ3MgaWYgdGhleSB3ZXJlIG1hZGUgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgb3B0aW9ucy5nZXRCYXRjaFNpemUoKS5pZlByZXNlbnQoYmF0Y2hTaXplIC0+IHJlcXVlc3QuYWRkKFRva2Vucy5BUkdTX0JBVENIX1NJWkUsIGJhdGNoU2l6ZSkpOworICAgICAgICAgICAgICAgIG9wdGlvbnMuZ2V0VGltZW91dCgpLmlmUHJlc2VudCh0aW1lb3V0IC0+IHJlcXVlc3QuYWRkKFRva2Vucy5BUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQsIHRpbWVvdXQpKTsKKyAgICAgICAgICAgICAgICBvcHRpb25zLmdldE92ZXJyaWRlUmVxdWVzdElkKCkuaWZQcmVzZW50KHJlcXVlc3Q6Om92ZXJyaWRlUmVxdWVzdElkKTsKKyAgICAgICAgICAgICAgICBvcHRpb25zLmdldFVzZXJBZ2VudCgpLmlmUHJlc2VudCh1c2VyQWdlbnQgLT4gcmVxdWVzdC5hZGQoVG9rZW5zLkFSR1NfVVNFUl9BR0VOVCwgdXNlckFnZW50KSk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMocmVxdWVzdC5jcmVhdGUoKSk7CiAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CiAgICAgICAgICAgICB9CkBAIC01OTEsOCArNTc3LDE2IEBACiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2cpIHsKICAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgYnVpbGRlciA9IFJlcXVlc3RNZXNzYWdlLmZyb20obXNnKTsKLSAgICAgICAgICAgIGlmICghYWxpYXNlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hZGRBcmcoVG9rZW5zLkFSR1NfQUxJQVNFUywgYWxpYXNlcyk7CisKKyAgICAgICAgICAgIC8vIG9ubHkgYWRkIGFsaWFzZXMgd2hpY2ggYXJlbid0IGFscmVhZHkgcHJlc2VudC4gaWYgdGhleSBhcmUgcHJlc2VudCB0aGVuIHRoZXkgcmVwcmVzZW50IHJlcXVlc3QgbGV2ZWwKKyAgICAgICAgICAgIC8vIG92ZXJyaWRlcyB3aGljaCBzaG91bGQgYmUgbXVja2VkIHdpdGgKKyAgICAgICAgICAgIGlmICghYWxpYXNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBNYXAgb3JpZ2luYWwgPSAoTWFwKSBtc2cuZ2V0QXJncygpLmdldE9yRGVmYXVsdChUb2tlbnMuQVJHU19BTElBU0VTLCBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKTsKKyAgICAgICAgICAgICAgICBhbGlhc2VzLmZvckVhY2goKGssdikgLT4geworICAgICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsLmNvbnRhaW5zS2V5KGspKQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hZGRBcmcoVG9rZW5zLkFSR1NfQUxJQVNFUywgYWxpYXNlcyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBzdXBlci5zdWJtaXRBc3luYyhidWlsZGVyLmNyZWF0ZSgpKTsKICAgICAgICAgfQpAQCAtNjU1LDE1ICs2NDksNiBAQAogICAgICAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgICAgICAqLwogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIENsaWVudCByZWJpbmQoZmluYWwgU3RyaW5nIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpIHsKLSAgICAgICAgICAgIHJldHVybiBhbGlhcyhncmFwaE9yVHJhdmVyc2FsU291cmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiB7QGluaGVyaXREb2N9Ci0gICAgICAgICAqLwotICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIENsaWVudCBhbGlhcyhmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzZXMpIHsKICAgICAgICAgICAgIGlmIChjbG9zZS5pc0RvbmUoKSkgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQ2xpZW50IGlzIGNsb3NlZCIpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBBbGlhc0NsdXN0ZXJlZENsaWVudChjbGllbnQsIGFsaWFzZXMsIHNldHRpbmdzKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ29ubmVjdGlvbi5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9Db25uZWN0aW9uLmphdmEKaW5kZXggMzYyMGZiZC4uNTA3MzhkOSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9Db25uZWN0aW9uLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9Db25uZWN0aW9uLmphdmEKQEAgLTYxLDcgKzYxLDcgQEAKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9JTl9QUk9DRVNTID0gNDsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSU5fSU5fUFJPQ0VTUyA9IDE7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1dBSVRfRk9SX0NPTk5FQ1RJT04gPSAzMDAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9XQUlUX0ZPUl9DT05ORUNUSU9OID0gMTYwMDA7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1dBSVRfRk9SX1NFU1NJT05fQ0xPU0UgPSAzMDAwOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9XQUlUX0ZPUl9DTE9TRSA9IDMwMDA7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0NPTlRFTlRfTEVOR1RIID0gNjU1MzY7CkBAIC0yODQsMTcgKzI4NCw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKgotICAgICAqIEluIHRoZSBldmVudCBvZiBhbiBJT0V4Y2VwdGlvbiAodHlwaWNhbGx5IG1lYW5zIHRoYXQgdGhlIENvbm5lY3Rpb24gbWlnaHQgaGF2ZSBiZWVuIGNsb3NlZCBmcm9tIHRoZSBzZXJ2ZXIgc2lkZQotICAgICAqIC0gdGhpcyBpcyB0eXBpY2FsIGluIHNpdHVhdGlvbnMgbGlrZSB3aGVuIGEgcmVxdWVzdCBpcyBzZW50IHRoYXQgZXhjZWVkcyBtYXhDb250ZW50TGVuZ3RoIGFuZCB0aGUgc2VydmVyIGNsb3NlcwotICAgICAqIHRoZSBjaGFubmVsIG9uIGl0cyBzaWRlKSBvciBvdGhlciBleGNlcHRpb25zIHRoYXQgaW5kaWNhdGUgYSBub24tcmVjb3ZlcmFibGUgc3RhdGUgZm9yIHRoZSBDb25uZWN0aW9uIG9iamVjdAotICAgICAqIChhIG5ldHR5IENvcnJ1cHRlZEZyYW1lRXhjZXB0aW9uIGlzIGEgZ29vZCBleGFtcGxlIG9mIHRoYXQpLCB0aGUgQ29ubmVjdGlvbiBjYW5ub3Qgc2ltcGx5IGJlIHJldHVybmVkIHRvIHRoZQotICAgICAqIHBvb2wgYXMgZnV0dXJlIHVzZXMgd2lsbCBlbmQgd2l0aCByZWZ1c2FsIGZyb20gdGhlIHNlcnZlciBhbmQgbWFrZSBpdCBhcHBlYXIgYXMgYSBkZWFkIGhvc3QgYXMgdGhlIHdyaXRlIHdpbGwKLSAgICAgKiBub3Qgc3VjY2VlZC4gSW5zdGVhZCwgdGhlIENvbm5lY3Rpb24gbmVlZHMgdG8gYmUgcmVwbGFjZWQgaW4gdGhlc2Ugc2NlbmFyaW9zIHdoaWNoIGRlc3Ryb3lzIHRoZSBkZWFkIGNoYW5uZWwKLSAgICAgKiBvbiB0aGUgY2xpZW50IGFuZCBhbGxvd3MgYSBuZXcgb25lIHRvIGJlIHJlY29uc3RydWN0ZWQuCi0gICAgICovCiAgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUNvbm5lY3Rpb25DbGVhbnVwT25FcnJvcihmaW5hbCBDb25uZWN0aW9uIHRoaXNDb25uZWN0aW9uLCBmaW5hbCBUaHJvd2FibGUgdCkgewotICAgICAgICBpZiAodGhpc0Nvbm5lY3Rpb24uaXNEZWFkKCkgfHwgdCBpbnN0YW5jZW9mIElPRXhjZXB0aW9uIHx8IHQgaW5zdGFuY2VvZiBDb2RlY0V4Y2VwdGlvbikgeworICAgICAgICBpZiAodGhpc0Nvbm5lY3Rpb24uaXNEZWFkKCkpIHsKICAgICAgICAgICAgIGlmIChwb29sICE9IG51bGwpIHBvb2wucmVwbGFjZUNvbm5lY3Rpb24odGhpc0Nvbm5lY3Rpb24pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpc0Nvbm5lY3Rpb24ucmV0dXJuVG9Qb29sKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0hhbmRsZXIuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvSGFuZGxlci5qYXZhCmluZGV4IDdiMTI4OTAuLjc0Y2Y3NjEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvSGFuZGxlci5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvSGFuZGxlci5qYXZhCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXI7CiAKK2ltcG9ydCBpby5uZXR0eS51dGlsLkF0dHJpYnV0ZU1hcDsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuZXhjZXB0aW9uLkV4Y2VwdGlvblV0aWxzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLmV4Y2VwdGlvbi5SZXNwb25zZUV4Y2VwdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwpAQCAtODUsOCArODYsOCBAQAogICAgICAgICAgICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBBVVRIRU5USUNBVEUgcmVzcG9uc2VzIGhlcmUuIEV2ZXJ5dGhpbmcgZWxzZSBjYW4KICAgICAgICAgICAgIC8vIGdldCBwYXNzZWQgZG93biB0aGUgcGlwZWxpbmUKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5nZXRTdGF0dXMoKS5nZXRDb2RlKCkgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLkFVVEhFTlRJQ0FURSkgewotICAgICAgICAgICAgICAgIGZpbmFsIEF0dHJpYnV0ZTxTYXNsQ2xpZW50PiBzYXNsQ2xpZW50ID0gY2hhbm5lbEhhbmRsZXJDb250ZXh0LmF0dHIoc2FzbENsaWVudEtleSk7Ci0gICAgICAgICAgICAgICAgZmluYWwgQXR0cmlidXRlPFN1YmplY3Q+IHN1YmplY3QgPSBjaGFubmVsSGFuZGxlckNvbnRleHQuYXR0cihzdWJqZWN0S2V5KTsKKyAgICAgICAgICAgICAgICBmaW5hbCBBdHRyaWJ1dGU8U2FzbENsaWVudD4gc2FzbENsaWVudCA9ICgoQXR0cmlidXRlTWFwKSBjaGFubmVsSGFuZGxlckNvbnRleHQpLmF0dHIoc2FzbENsaWVudEtleSk7CisgICAgICAgICAgICAgICAgZmluYWwgQXR0cmlidXRlPFN1YmplY3Q+IHN1YmplY3QgPSAoKEF0dHJpYnV0ZU1hcCkgY2hhbm5lbEhhbmRsZXJDb250ZXh0KS5hdHRyKHN1YmplY3RLZXkpOwogICAgICAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgbWVzc2FnZUJ1aWxkZXIgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZChUb2tlbnMuT1BTX0FVVEhFTlRJQ0FUSU9OKTsKICAgICAgICAgICAgICAgICAvLyBGaXJzdCB0aW1lIHRocm91Z2ggd2UgZG9uJ3QgaGF2ZSBhIHNhc2wgY2xpZW50CiAgICAgICAgICAgICAgICAgaWYgKHNhc2xDbGllbnQuZ2V0KCkgPT0gbnVsbCkgewpAQCAtMjU1LDEzICsyNTYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBleGNlcHRpb25zID0gYXR0cmlidXRlcy5jb250YWluc0tleShUb2tlbnMuU1RBVFVTX0FUVFJJQlVURV9FWENFUFRJT05TKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0PFN0cmluZz4pIGF0dHJpYnV0ZXMuZ2V0KFRva2Vucy5TVEFUVVNfQVRUUklCVVRFX0VYQ0VQVElPTlMpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlLm1hcmtFcnJvcihuZXcgUmVzcG9uc2VFeGNlcHRpb24ocmVzcG9uc2UuZ2V0U3RhdHVzKCkuZ2V0Q29kZSgpLCByZXNwb25zZS5nZXRTdGF0dXMoKS5nZXRNZXNzYWdlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMsIHN0YWNrVHJhY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucywgc3RhY2tUcmFjZSwgY2xlYW5TdGF0dXNBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAvLyBhcyB0aGlzIGlzIGEgbm9uLVBBUlRJQUxfQ09OVEVOVCBjb2RlIC0gdGhlIHN0cmVhbSBpcyBkb25lCi0gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmdldFN0YXR1cygpLmdldENvZGUoKSAhPSBSZXNwb25zZVN0YXR1c0NvZGUuUEFSVElBTF9DT05URU5UKQotICAgICAgICAgICAgICAgICAgICBwZW5kaW5nLnJlbW92ZShyZXNwb25zZS5nZXRSZXF1ZXN0SWQoKSkubWFya0NvbXBsZXRlKCk7CisgICAgICAgICAgICAgICAgLy8gYXMgdGhpcyBpcyBhIG5vbi1QQVJUSUFMX0NPTlRFTlQgY29kZSAtIHRoZSBzdHJlYW0gaXMgZG9uZS4KKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzQ29kZSAhPSBSZXNwb25zZVN0YXR1c0NvZGUuUEFSVElBTF9DT05URU5UKSB7CisgICAgICAgICAgICAgICAgICAgIHBlbmRpbmcucmVtb3ZlKHJlc3BvbnNlLmdldFJlcXVlc3RJZCgpKS5tYXJrQ29tcGxldGUocmVzcG9uc2UuZ2V0U3RhdHVzKCkuZ2V0QXR0cmlidXRlcygpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgIC8vIGluIHRoZSBldmVudCBvZiBhbiBleGNlcHRpb24gYWJvdmUgdGhlIGV4Y2VwdGlvbiBpcyB0b3NzZWQgYW5kIGhhbmRsZWQgYnkgd2hhdGV2ZXIgY2hhbm5lbHBpcGVsaW5lCiAgICAgICAgICAgICAgICAgLy8gZXJyb3IgaGFuZGxpbmcgaXMgYXQgcGxheS4KQEAgLTI4NCw2ICsyODYsMTUgQEAKICAgICAgICAgICAgIGlmICghSXRlcmF0b3JVdGlscy5hbnlNYXRjaChFeGNlcHRpb25VdGlscy5nZXRUaHJvd2FibGVMaXN0KGNhdXNlKS5pdGVyYXRvcigpLCB0IC0+IHQgaW5zdGFuY2VvZiBTZXJpYWxpemF0aW9uRXhjZXB0aW9uKSkKICAgICAgICAgICAgICAgICBpZiAoY3R4LmNoYW5uZWwoKS5pc0FjdGl2ZSgpKSBjdHguY2xvc2UoKTsKICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgTWFwPFN0cmluZyxPYmplY3Q+IGNsZWFuU3RhdHVzQXR0cmlidXRlcyhmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gc3RhdHVzQXR0cmlidXRlcykgeworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IG0gPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgICAgICBzdGF0dXNBdHRyaWJ1dGVzLmZvckVhY2goKGssdikgLT4geworICAgICAgICAgICAgICAgIGlmICghay5lcXVhbHMoVG9rZW5zLlNUQVRVU19BVFRSSUJVVEVfRVhDRVBUSU9OUykgJiYgIWsuZXF1YWxzKFRva2Vucy5TVEFUVVNfQVRUUklCVVRFX1NUQUNLX1RSQUNFKSkKKyAgICAgICAgICAgICAgICAgICAgbS5wdXQoayx2KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIG07CisgICAgICAgIH0KICAgICB9CiAKIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVxdWVzdE9wdGlvbnMuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVxdWVzdE9wdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmJjZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXF1ZXN0T3B0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKKy8qKgorICogT3B0aW9ucyB0aGF0IGNhbiBiZSBzdXBwbGllZCBvbiBhIHBlciByZXF1ZXN0IGJhc2lzLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFJlcXVlc3RPcHRpb25zIHsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUmVxdWVzdE9wdGlvbnMgRU1QVFkgPSBSZXF1ZXN0T3B0aW9ucy5idWlsZCgpLmNyZWF0ZSgpOworCisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gYWxpYXNlczsKKyAgICBwcml2YXRlIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gcGFyYW1ldGVyczsKKyAgICBwcml2YXRlIGZpbmFsIEludGVnZXIgYmF0Y2hTaXplOworICAgIHByaXZhdGUgZmluYWwgTG9uZyB0aW1lb3V0OworICAgIHByaXZhdGUgZmluYWwgVVVJRCBvdmVycmlkZVJlcXVlc3RJZDsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyB1c2VyQWdlbnQ7CisKKyAgICBwcml2YXRlIFJlcXVlc3RPcHRpb25zKGZpbmFsIEJ1aWxkZXIgYnVpbGRlcikgeworICAgICAgICB0aGlzLmFsaWFzZXMgPSBidWlsZGVyLmFsaWFzZXM7CisgICAgICAgIHRoaXMucGFyYW1ldGVycyA9IGJ1aWxkZXIucGFyYW1ldGVyczsKKyAgICAgICAgdGhpcy5iYXRjaFNpemUgPSBidWlsZGVyLmJhdGNoU2l6ZTsKKyAgICAgICAgdGhpcy50aW1lb3V0ID0gYnVpbGRlci50aW1lb3V0OworICAgICAgICB0aGlzLm92ZXJyaWRlUmVxdWVzdElkID0gYnVpbGRlci5vdmVycmlkZVJlcXVlc3RJZDsKKyAgICAgICAgdGhpcy51c2VyQWdlbnQgPSBidWlsZGVyLnVzZXJBZ2VudDsKKyAgICB9CisKKyAgICBwdWJsaWMgT3B0aW9uYWw8VVVJRD4gZ2V0T3ZlcnJpZGVSZXF1ZXN0SWQoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKG92ZXJyaWRlUmVxdWVzdElkKTsKKyAgICB9CisKKyAgICBwdWJsaWMgT3B0aW9uYWw8TWFwPFN0cmluZywgU3RyaW5nPj4gZ2V0QWxpYXNlcygpIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsLm9mTnVsbGFibGUoYWxpYXNlcyk7CisgICAgfQorCisgICAgcHVibGljIE9wdGlvbmFsPE1hcDxTdHJpbmcsIE9iamVjdD4+IGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIHB1YmxpYyBPcHRpb25hbDxJbnRlZ2VyPiBnZXRCYXRjaFNpemUoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKGJhdGNoU2l6ZSk7CisgICAgfQorCisgICAgcHVibGljIE9wdGlvbmFsPExvbmc+IGdldFRpbWVvdXQoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKHRpbWVvdXQpOworICAgIH0KKworICAgIHB1YmxpYyBPcHRpb25hbDxTdHJpbmc+IGdldFVzZXJBZ2VudCgpIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsLm9mTnVsbGFibGUodXNlckFnZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoKSB7CisgICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgQnVpbGRlciB7CisgICAgICAgIHByaXZhdGUgTWFwPFN0cmluZyxTdHJpbmc+IGFsaWFzZXMgPSBudWxsOworICAgICAgICBwcml2YXRlIE1hcDxTdHJpbmcsIE9iamVjdD4gcGFyYW1ldGVycyA9IG51bGw7CisgICAgICAgIHByaXZhdGUgSW50ZWdlciBiYXRjaFNpemUgPSBudWxsOworICAgICAgICBwcml2YXRlIExvbmcgdGltZW91dCA9IG51bGw7CisgICAgICAgIHByaXZhdGUgVVVJRCBvdmVycmlkZVJlcXVlc3RJZCA9IG51bGw7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHVzZXJBZ2VudCA9IG51bGw7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBhbGlhc2VzIHRvIHNldCBvbiB0aGUgcmVxdWVzdC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIGFkZEFsaWFzKGZpbmFsIFN0cmluZyBhbGlhc05hbWUsIGZpbmFsIFN0cmluZyBhY3R1YWxOYW1lKSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBhbGlhc2VzKQorICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBuZXcgSGFzaE1hcDw+KCk7CisKKyAgICAgICAgICAgIGFsaWFzZXMucHV0KGFsaWFzTmFtZSwgYWN0dWFsTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgcGFyYW1ldGVycyB0byBwYXNzIG9uIHRoZSByZXF1ZXN0LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEJ1aWxkZXIgYWRkUGFyYW1ldGVyKGZpbmFsIFN0cmluZyBuYW1lLCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChudWxsID09IHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IG5ldyBIYXNoTWFwPD4oKTsKKworICAgICAgICAgICAgcGFyYW1ldGVycy5wdXQobmFtZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogT3ZlcnJpZGVzIHRoZSBpZGVudGlmaWVyIHRvIGJlIHNlbnQgb24gdGhlIHJlcXVlc3QuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciBvdmVycmlkZVJlcXVlc3RJZChmaW5hbCBVVUlEIG92ZXJyaWRlUmVxdWVzdElkKSB7CisgICAgICAgICAgICB0aGlzLm92ZXJyaWRlUmVxdWVzdElkID0gb3ZlcnJpZGVSZXF1ZXN0SWQ7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgcGVyIGNsaWVudCByZXF1ZXN0IG92ZXJyaWRlIGZvciB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgY29uZmlndXJlZCB7QGNvZGUgcmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplfS4gSWYKKyAgICAgICAgICogdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGVuIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUge0BsaW5rIENsdXN0ZXJ9IGlzIHVzZWQgdW5sZXNzIHRoZQorICAgICAgICAgKiB7QGxpbmsgUmVxdWVzdE1lc3NhZ2V9IGlzIGNvbmZpZ3VyZWQgY29tcGxldGVseSBieSB0aGUgdXNlci4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIGJhdGNoU2l6ZShmaW5hbCBpbnQgYmF0Y2hTaXplKSB7CisgICAgICAgICAgICB0aGlzLmJhdGNoU2l6ZSA9IGJhdGNoU2l6ZTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBwZXIgY2xpZW50IHJlcXVlc3Qgb3ZlcnJpZGUgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgc2VydmVyIGNvbmZpZ3VyZWQge0Bjb2RlIHNjcmlwdEV2YWx1YXRpb25UaW1lb3V0fS4KKyAgICAgICAgICogSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGVuIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2VydmVyIGlzIHVzZWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciB0aW1lb3V0KGZpbmFsIGxvbmcgdGltZW91dCkgeworICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZW91dDsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNldHMgdGhlIHVzZXJBZ2VudCBpZGVudGlmaWVyIHRvIGJlIHNlbnQgb24gdGhlIHJlcXVlc3QuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciB1c2VyQWdlbnQoZmluYWwgU3RyaW5nIHVzZXJBZ2VudCkgeworICAgICAgICAgICAgdGhpcy51c2VyQWdlbnQgPSB1c2VyQWdlbnQ7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBSZXF1ZXN0T3B0aW9ucyBjcmVhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFJlcXVlc3RPcHRpb25zKHRoaXMpOworICAgICAgICB9CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFF1ZXVlLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFF1ZXVlLmphdmEKaW5kZXggNTQwNmM3Yi4uMjlhNjQ1MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRRdWV1ZS5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVzdWx0UXVldWUuamF2YQpAQCAtMjYsNiArMjYsNyBAQAogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CkBAIC01Niw2ICs1Nyw4IEBACiAKICAgICBwcml2YXRlIGZpbmFsIFF1ZXVlPFBhaXI8Q29tcGxldGFibGVGdXR1cmU8TGlzdDxSZXN1bHQ+PixJbnRlZ2VyPj4gd2FpdGluZyA9IG5ldyBDb25jdXJyZW50TGlua2VkUXVldWU8PigpOwogCisgICAgcHJpdmF0ZSBNYXA8U3RyaW5nLE9iamVjdD4gc3RhdHVzQXR0cmlidXRlcyA9IG51bGw7CisKICAgICBwdWJsaWMgUmVzdWx0UXVldWUoZmluYWwgTGlua2VkQmxvY2tpbmdRdWV1ZTxSZXN1bHQ+IHJlc3VsdExpbmtlZEJsb2NraW5nUXVldWUsIGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPFZvaWQ+IHJlYWRDb21wbGV0ZSkgewogICAgICAgICB0aGlzLnJlc3VsdExpbmtlZEJsb2NraW5nUXVldWUgPSByZXN1bHRMaW5rZWRCbG9ja2luZ1F1ZXVlOwogICAgICAgICB0aGlzLnJlYWRDb21wbGV0ZSA9IHJlYWRDb21wbGV0ZTsKQEAgLTE2NiwxMiArMTY5LDE0IEBACiAgICAgICAgIHJlc3VsdExpbmtlZEJsb2NraW5nUXVldWUuZHJhaW5Ubyhjb2xsZWN0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIG1hcmtDb21wbGV0ZSgpIHsKKyAgICB2b2lkIG1hcmtDb21wbGV0ZShmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gc3RhdHVzQXR0cmlidXRlcykgewogICAgICAgICAvLyBpZiB0aGVyZSB3YXMgc29tZSBhZ2dyZWdhdGlvbiBwZXJmb3JtZWQgaW4gdGhlIHF1ZXVlIHRoZW4gdGhlIGZ1bGwgb2JqZWN0IGlzIGhhbmdpbmcgb3V0IHdhaXRpbmcgdG8gYmUKICAgICAgICAgLy8gYWRkZWQgdG8gdGhlIFJlc3VsdFNldAogICAgICAgICBpZiAoYWdncmVnYXRlZFJlc3VsdCAhPSBudWxsKQogICAgICAgICAgICAgYWRkKG5ldyBSZXN1bHQoYWdncmVnYXRlZFJlc3VsdCkpOwogCisgICAgICAgIHRoaXMuc3RhdHVzQXR0cmlidXRlcyA9IG51bGwgPT0gc3RhdHVzQXR0cmlidXRlcyA/IENvbGxlY3Rpb25zLmVtcHR5TWFwKCkgOiBzdGF0dXNBdHRyaWJ1dGVzOworCiAgICAgICAgIHRoaXMucmVhZENvbXBsZXRlLmNvbXBsZXRlKG51bGwpOwogCiAgICAgICAgIHRoaXMuZHJhaW5BbGxXYWl0aW5nKCk7CkBAIC0xODMsNiArMTg4LDEwIEBACiAgICAgICAgIHRoaXMuZHJhaW5BbGxXYWl0aW5nKCk7CiAgICAgfQogCisgICAgTWFwPFN0cmluZyxPYmplY3Q+IGdldFN0YXR1c0F0dHJpYnV0ZXMoKSB7CisgICAgICAgIHJldHVybiBzdGF0dXNBdHRyaWJ1dGVzOworICAgIH0KKwogICAgIC8qKgogICAgICAqIENvbXBsZXRlcyB0aGUgbmV4dCB3YWl0aW5nIGZ1dHVyZSBpZiB0aGVyZSBpcyBvbmUuCiAgICAgICovCmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFNldC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRTZXQuamF2YQppbmRleCBmODI4NzZjLi44NWM3NGYzIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFNldC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVzdWx0U2V0LmphdmEKQEAgLTIxLDggKzIxLDEwIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5TcGxpdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuU3BsaXRlcmF0b3JzOwpAQCAtNzQsNiArNzYsMTYgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgZnV0dXJlIHRoYXQgd2lsbCBjb21wbGV0ZSB3aGVuIHtAbGluayAjYWxsSXRlbXNBdmFpbGFibGUoKX0gaXMge0Bjb2RlIHRydWV9IGFuZCB3aWxsIGNvbnRhaW4gdGhlCisgICAgICogYXR0cmlidXRlcyBmcm9tIHRoZSByZXNwb25zZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8TWFwPFN0cmluZyxPYmplY3Q+PiBzdGF0dXNBdHRyaWJ1dGVzKCkgeworICAgICAgICBmaW5hbCBDb21wbGV0YWJsZUZ1dHVyZTxNYXA8U3RyaW5nLE9iamVjdD4+IGF0dHJzID0gbmV3IENvbXBsZXRhYmxlRnV0dXJlPD4oKTsKKyAgICAgICAgcmVhZENvbXBsZXRlZC50aGVuUnVuKCgpIC0+IGF0dHJzLmNvbXBsZXRlKG51bGwgPT0gcmVzdWx0UXVldWUuZ2V0U3RhdHVzQXR0cmlidXRlcygpID8gQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSA6IHJlc3VsdFF1ZXVlLmdldFN0YXR1c0F0dHJpYnV0ZXMoKSkpOworICAgICAgICByZXR1cm4gYXR0cnM7CisgICAgfQorCisgICAgLyoqCiAgICAgICogRGV0ZXJtaW5lcyBpZiBhbGwgaXRlbXMgaGF2ZSBiZWVuIHJldHVybmVkIHRvIHRoZSBjbGllbnQuCiAgICAgICovCiAgICAgcHVibGljIGJvb2xlYW4gYWxsSXRlbXNBdmFpbGFibGUoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Rva2Vucy5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9Ub2tlbnMuamF2YQppbmRleCBiMmI4MDM1Li5kN2E0MjE1IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Rva2Vucy5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvVG9rZW5zLmphdmEKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9QU19LRVlTID0gImtleXMiOwogCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVRVUVTVF9JRCA9ICJyZXF1ZXN0SWQiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR1NfQkFUQ0hfU0laRSA9ICJiYXRjaFNpemUiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR1NfQklORElOR1MgPSAiYmluZGluZ3MiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR1NfQUxJQVNFUyA9ICJhbGlhc2VzIjsKQEAgLTg1LDEyICs4Niw3IEBACiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX1NJREVfRUZGRUNUX0tFWSA9ICJzaWRlRWZmZWN0S2V5IjsKLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4xLjAtaW5jdWJhdGluZywgcmVwbGFjZWQgYnkge0BsaW5rICNBUkdTX0FMSUFTRVN9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJHU19SRUJJTkRJTkdTID0gInJlYmluZGluZ3MiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR1NfVVNFUl9BR0VOVCA9ICJ1c2VyQWdlbnQiOwogCiAgICAgLyoqCiAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjMuOCwgbm90IGRpcmVjdGx5IHJlcGxhY2VkIGluIHRoZSBwcm90b2NvbCBhcyBzaWRlLWVmZmVjdCByZXRyaWV2YWwgYWZ0ZXIKQEAgLTEzMSw0ICsxMjcsMTkgQEAKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVRVU19BVFRSSUJVVEVfRVhDRVBUSU9OUyA9ICJleGNlcHRpb25zIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFUVVNfQVRUUklCVVRFX1NUQUNLX1RSQUNFID0gInN0YWNrVHJhY2UiOworICAgIC8qKgorICAgICAqIEEge0BsaW5rIFJlc3VsdFNldCNzdGF0dXNBdHRyaWJ1dGVzKCl9IGtleSBmb3IgdXNlci1mYWNpbmcgd2FybmluZ3MuCisgICAgICogPHA+CisgICAgICogSW1wbGVtZW50YXRpb25zIHRoYXQgc2V0IHRoaXMga2V5IHNob3VsZCBjb25zaWRlciB1c2luZyBvbmUgb2YKKyAgICAgKiB0aGVzZSB0d28gcmVjb21tZW5kZWQgdmFsdWUgdHlwZXM6CisgICAgICogPHVsPgorICAgICAqICAgICA8bGk+QSB7QGxpbmsgamF2YS51dGlsLkxpc3R9IGltcGxlbWVudGF0aW9uIGNvbnRhaW5pbmcKKyAgICAgKiAgICAgcmVmZXJlbmNlcyBmb3Igd2hpY2gge0BsaW5rIFN0cmluZyN2YWx1ZU9mKE9iamVjdCl9IHByb2R1Y2VzCisgICAgICogICAgIGEgbWVhbmluZ2Z1bCByZXR1cm4gdmFsdWUuICBGb3IgZXhhbXBsZSwgYSBsaXN0IG9mIHN0cmluZ3MuPC9saT4KKyAgICAgKiAgICAgPGxpPk90aGVyd2lzZSwgYW55IHNpbmdsZSBub24tbGlzdCBvYmplY3QgZm9yIHdoaWNoCisgICAgICogICAgIHtAbGluayBTdHJpbmcjdmFsdWVPZihPYmplY3QpfSBwcm9kdWNlcyBhIG1lYW5pbmdmdWwgcmV0dXJuIHZhbHVlLgorICAgICAqICAgICBGb3IgZXhhbXBsZSwgYSBzdHJpbmcuPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVRVU19BVFRSSUJVVEVfV0FSTklOR1MgPSAid2FybmluZ3MiOwogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9leGNlcHRpb24vUmVzcG9uc2VFeGNlcHRpb24uamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvZXhjZXB0aW9uL1Jlc3BvbnNlRXhjZXB0aW9uLmphdmEKaW5kZXggNTFlNzQ4YS4uYTk2MGQ0NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9leGNlcHRpb24vUmVzcG9uc2VFeGNlcHRpb24uamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL2V4Y2VwdGlvbi9SZXNwb25zZUV4Y2VwdGlvbi5qYXZhCkBAIC0yMCwyNyArMjAsMzcgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXNDb2RlOwogCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CiBpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwogCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGNsYXNzIFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKLSAgICBwcml2YXRlIFJlc3BvbnNlU3RhdHVzQ29kZSByZXNwb25zZVN0YXR1c0NvZGU7Ci0gICAgcHJpdmF0ZSBTdHJpbmcgcmVtb3RlU3RhY2tUcmFjZSA9IG51bGw7Ci0gICAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gcmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5ID0gbnVsbDsKKyAgICBwcml2YXRlIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSByZXNwb25zZVN0YXR1c0NvZGU7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgcmVtb3RlU3RhY2tUcmFjZTsKKyAgICBwcml2YXRlIGZpbmFsIExpc3Q8U3RyaW5nPiByZW1vdGVFeGNlcHRpb25IaWVyYXJjaHk7CisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gYXR0cmlidXRlczsKIAogICAgIHB1YmxpYyBSZXNwb25zZUV4Y2VwdGlvbihmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgcmVzcG9uc2VTdGF0dXNDb2RlLCBmaW5hbCBTdHJpbmcgc2VydmVyTWVzc2FnZSkgewotICAgICAgICBzdXBlcihzZXJ2ZXJNZXNzYWdlKTsKLSAgICAgICAgdGhpcy5yZXNwb25zZVN0YXR1c0NvZGUgPSByZXNwb25zZVN0YXR1c0NvZGU7CisgICAgICAgIHRoaXMocmVzcG9uc2VTdGF0dXNDb2RlLCBzZXJ2ZXJNZXNzYWdlLCBudWxsLCBudWxsKTsKICAgICB9CiAKICAgICBwdWJsaWMgUmVzcG9uc2VFeGNlcHRpb24oZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIHJlc3BvbnNlU3RhdHVzQ29kZSwgZmluYWwgU3RyaW5nIHNlcnZlck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiByZW1vdGVFeGNlcHRpb25IaWVyYXJjaHksIGZpbmFsIFN0cmluZyByZW1vdGVTdGFja1RyYWNlKSB7Ci0gICAgICAgIHRoaXMocmVzcG9uc2VTdGF0dXNDb2RlLCBzZXJ2ZXJNZXNzYWdlKTsKLSAgICAgICAgdGhpcy5yZW1vdGVFeGNlcHRpb25IaWVyYXJjaHkgPSByZW1vdGVFeGNlcHRpb25IaWVyYXJjaHk7CisgICAgICAgIHRoaXMocmVzcG9uc2VTdGF0dXNDb2RlLCBzZXJ2ZXJNZXNzYWdlLCByZW1vdGVFeGNlcHRpb25IaWVyYXJjaHksIHJlbW90ZVN0YWNrVHJhY2UsIG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyBSZXNwb25zZUV4Y2VwdGlvbihmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgcmVzcG9uc2VTdGF0dXNDb2RlLCBmaW5hbCBTdHJpbmcgc2VydmVyTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IHJlbW90ZUV4Y2VwdGlvbkhpZXJhcmNoeSwgZmluYWwgU3RyaW5nIHJlbW90ZVN0YWNrVHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzKSB7CisgICAgICAgIHN1cGVyKHNlcnZlck1lc3NhZ2UpOworICAgICAgICB0aGlzLnJlc3BvbnNlU3RhdHVzQ29kZSA9IHJlc3BvbnNlU3RhdHVzQ29kZTsKKyAgICAgICAgdGhpcy5yZW1vdGVFeGNlcHRpb25IaWVyYXJjaHkgPSByZW1vdGVFeGNlcHRpb25IaWVyYXJjaHkgIT0gbnVsbCA/IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3QocmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5KSA6IG51bGw7CiAgICAgICAgIHRoaXMucmVtb3RlU3RhY2tUcmFjZSA9IHJlbW90ZVN0YWNrVHJhY2U7CisgICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IHN0YXR1c0F0dHJpYnV0ZXMgIT0gbnVsbCA/IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZU1hcChzdGF0dXNBdHRyaWJ1dGVzKSA6IG51bGw7CiAgICAgfQogCiAgICAgcHVibGljIFJlc3BvbnNlU3RhdHVzQ29kZSBnZXRSZXNwb25zZVN0YXR1c0NvZGUoKSB7CkBAIC02MSw0ICs3MSwxMSBAQAogICAgIHB1YmxpYyBPcHRpb25hbDxMaXN0PFN0cmluZz4+IGdldFJlbW90ZUV4Y2VwdGlvbkhpZXJhcmNoeSgpIHsKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsLm9mTnVsbGFibGUocmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5KTsKICAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGFueSBzdGF0dXMgYXR0cmlidXRlcyBmcm9tIHRoZSByZXNwb25zZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgT3B0aW9uYWw8TWFwPFN0cmluZywgT2JqZWN0Pj4gZ2V0U3RhdHVzQXR0cmlidXRlcygpIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsLm9mTnVsbGFibGUoYXR0cmlidXRlcyk7CisgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvaGFuZGxlci9XZWJTb2NrZXRDbGllbnRIYW5kbGVyLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL2hhbmRsZXIvV2ViU29ja2V0Q2xpZW50SGFuZGxlci5qYXZhCmluZGV4IDdiNTg1OGIuLjRmNDNhZmUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvaGFuZGxlci9XZWJTb2NrZXRDbGllbnRIYW5kbGVyLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9oYW5kbGVyL1dlYlNvY2tldENsaWVudEhhbmRsZXIuamF2YQpAQCAtNzMsNyArNzMsNyBAQAogCiAgICAgICAgIGlmIChtc2cgaW5zdGFuY2VvZiBGdWxsSHR0cFJlc3BvbnNlKSB7CiAgICAgICAgICAgICBmaW5hbCBGdWxsSHR0cFJlc3BvbnNlIHJlc3BvbnNlID0gKEZ1bGxIdHRwUmVzcG9uc2UpIG1zZzsKLSAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIlVuZXhwZWN0ZWQgRnVsbEh0dHBSZXNwb25zZSAoZ2V0U3RhdHVzPSIgKyByZXNwb25zZS5nZXRTdGF0dXMoKSArICIsIGNvbnRlbnQ9IgorICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiVW5leHBlY3RlZCBGdWxsSHR0cFJlc3BvbnNlIChnZXRTdGF0dXM9IiArIHJlc3BvbnNlLnN0YXR1cygpICsgIiwgY29udGVudD0iCiAgICAgICAgICAgICAgICAgICAgICsgcmVzcG9uc2UuY29udGVudCgpLnRvU3RyaW5nKENoYXJzZXRVdGlsLlVURl84KSArICcpJyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9oYW5kbGVyL1dlYlNvY2tldEdyZW1saW5SZXF1ZXN0RW5jb2Rlci5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9oYW5kbGVyL1dlYlNvY2tldEdyZW1saW5SZXF1ZXN0RW5jb2Rlci5qYXZhCmluZGV4IDYyNmIxZWUuLjlmZmJjNjAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvaGFuZGxlci9XZWJTb2NrZXRHcmVtbGluUmVxdWVzdEVuY29kZXIuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL2hhbmRsZXIvV2ViU29ja2V0R3JlbWxpblJlcXVlc3RFbmNvZGVyLmphdmEKQEAgLTI5LDggKzI5LDYgQEAKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLk1lc3NhZ2VUb01lc3NhZ2VFbmNvZGVyOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC53ZWJzb2NrZXR4LkJpbmFyeVdlYlNvY2tldEZyYW1lOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC53ZWJzb2NrZXR4LlRleHRXZWJTb2NrZXRGcmFtZTsKLWltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOwotaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OwogCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiAKQEAgLTM5LDcgKzM3LDYgQEAKICAqLwogQENoYW5uZWxIYW5kbGVyLlNoYXJhYmxlCiBwdWJsaWMgZmluYWwgY2xhc3MgV2ViU29ja2V0R3JlbWxpblJlcXVlc3RFbmNvZGVyIGV4dGVuZHMgTWVzc2FnZVRvTWVzc2FnZUVuY29kZXI8UmVxdWVzdE1lc3NhZ2U+IHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoV2ViU29ja2V0R3JlbWxpblJlcXVlc3RFbmNvZGVyLmNsYXNzKTsKICAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gYmluYXJ5RW5jb2Rpbmc7CiAKICAgICBwcml2YXRlIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXI7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uLmphdmEKaW5kZXggZjU5ZTU5MS4uMTE0YzU5NiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24uamF2YQpAQCAtMjEsMjQgKzIxLDI3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXN1bHRTZXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlZlcnRleFByb2dyYW1TdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXF1ZXN0T3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuUmVtb3RlVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5HcmFwaEZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLk9wdGlvbnNTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuQnl0ZWNvZGVVdGlsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogCiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5NYXA7CiBpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOworaW1wb3J0IGphdmEudXRpbC5VVUlEOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRhYmxlRnV0dXJlOwotaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5TdXBwbGllcjsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnMuQVJHU19CQVRDSF9TSVpFOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnMuQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VUOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnMuQVJHU19FVkFMX1RJTUVPVVQ7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2Vucy5BUkdTX1VTRVJfQUdFTlQ7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2Vucy5SRVFVRVNUX0lEOwogCiAvKioKICAqIEEge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IGltcGxlbWVudGF0aW9uIGZvciBHcmVtbGluIFNlcnZlci4gRWFjaCB7QGNvZGUgRHJpdmVyU2VydmVyQ29ubmVjdGlvbn0gaXMgYm91bmQgdG8gb25lCkBAIC0xOTMsOCArMTk2LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBDcmVhdGVzIGEge0BsaW5rIERyaXZlclJlbW90ZUNvbm5lY3Rpb259IHVzaW5nIGFuIEFwYWNoZSB7QGNvZGUgQ29uZmlndXJhdGlvbn0gb2JqZWN0LiBUaGlzIG1ldGhvZCBvZiBjcmVhdGlvbgotICAgICAqIGlzIHR5cGljYWxseSB1c2VkIGJ5IHtAbGluayBSZW1vdGVHcmFwaH0gd2hlbiBiZWluZyBjb25zdHJ1Y3RlZCB2aWEge0BsaW5rIEdyYXBoRmFjdG9yeX0uIFRoZQorICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbn0gdXNpbmcgYW4gQXBhY2hlIHtAY29kZSBDb25maWd1cmF0aW9ufSBvYmplY3QuIFRoZQogICAgICAqIHtAY29kZSBDb25maWd1cmF0aW9ufSBvYmplY3Qgc2hvdWxkIGNvbnRhaW4gb25lIG9mIHR3byByZXF1aXJlZCBrZXlzLCBlaXRoZXI6IHtAY29kZSBjbHVzdGVyQ29uZmlndXJhdGlvbkZpbGV9CiAgICAgICogb3Ige0Bjb2RlIGNsdXN0ZXJDb25maWd1cmF0aW9ufS4gVGhlIHtAY29kZSBjbHVzdGVyQ29uZmlndXJhdGlvbkZpbGV9IGtleSBpcyBhIHBvaW50ZXIgdG8gYSBmaWxlIGxvY2F0aW9uCiAgICAgICogY29udGFpbmluZyBhIGNvbmZpZ3VyYXRpb24gZm9yIGEge0BsaW5rIENsdXN0ZXJ9LiBUaGUge0Bjb2RlIGNsdXN0ZXJDb25maWd1cmF0aW9ufSBzaG91bGQgY29udGFpbiB0aGUgYWN0dWFsCkBAIC0yMTcsNDggKzIxOSwzNSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMiwgcmVwbGFjZWQgYnkge0BsaW5rICNzdWJtaXRBc3luYyhCeXRlY29kZSl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIDxFPiBJdGVyYXRvcjxUcmF2ZXJzZXIuQWRtaW48RT4+IHN1Ym1pdChmaW5hbCBUcmF2ZXJzYWw8PywgRT4gdCkgdGhyb3dzIFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKGNvbmYuaXNQcmVzZW50KCkgJiYgY29uZi5nZXQoKS5jb250YWluc0tleShHUkVNTElOX1JFTU9URSArICJhdHRhY2htZW50IikKLSAgICAgICAgICAgICAgICAgICAgJiYgIXQuYXNBZG1pbigpLmdldFN0cmF0ZWdpZXMoKS5nZXRTdHJhdGVneShWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MpLmlzUHJlc2VudCgpKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSAoKFN1cHBsaWVyPEdyYXBoPikgY29uZi5nZXQoKS5nZXRQcm9wZXJ0eShHUkVNTElOX1JFTU9URSArICJhdHRhY2htZW50IikpLmdldCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRHJpdmVyUmVtb3RlVHJhdmVyc2FsLkF0dGFjaGluZ1RyYXZlcnNlckl0ZXJhdG9yPD4oY2xpZW50LnN1Ym1pdCh0LmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpKS5pdGVyYXRvcigpLCBncmFwaCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRHJpdmVyUmVtb3RlVHJhdmVyc2FsLlRyYXZlcnNlckl0ZXJhdG9yPD4oY2xpZW50LnN1Ym1pdCh0LmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpKS5pdGVyYXRvcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbihleCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi40LCByZXBsYWNlZCBieSB7QGxpbmsgI3N1Ym1pdEFzeW5jKEJ5dGVjb2RlKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPEU+IFJlbW90ZVRyYXZlcnNhbDw/LEU+IHN1Ym1pdChmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgdGhyb3dzIFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJzID0gY2xpZW50LnN1Ym1pdChieXRlY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IERyaXZlclJlbW90ZVRyYXZlcnNhbDw+KHJzLCBjbGllbnQsIGF0dGFjaEVsZW1lbnRzLCBjb25mKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbihleCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgPEU+IENvbXBsZXRhYmxlRnV0dXJlPFJlbW90ZVRyYXZlcnNhbDw/LCBFPj4gc3VibWl0QXN5bmMoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUpIHRocm93cyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBjbGllbnQuc3VibWl0QXN5bmMoYnl0ZWNvZGUpLnRoZW5BcHBseShycyAtPiBuZXcgRHJpdmVyUmVtb3RlVHJhdmVyc2FsPD4ocnMsIGNsaWVudCwgYXR0YWNoRWxlbWVudHMsIGNvbmYpKTsKKyAgICAgICAgICAgIHJldHVybiBjbGllbnQuc3VibWl0QXN5bmMoYnl0ZWNvZGUsIGdldFJlcXVlc3RPcHRpb25zKGJ5dGVjb2RlKSkudGhlbkFwcGx5KHJzIC0+IG5ldyBEcml2ZXJSZW1vdGVUcmF2ZXJzYWw8PihycywgY2xpZW50LCBhdHRhY2hFbGVtZW50cywgY29uZikpOwogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uKGV4KTsKICAgICAgICAgfQogICAgIH0KIAorICAgIHByb3RlY3RlZCBzdGF0aWMgUmVxdWVzdE9wdGlvbnMgZ2V0UmVxdWVzdE9wdGlvbnMoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUpIHsKKyAgICAgICAgZmluYWwgSXRlcmF0b3I8T3B0aW9uc1N0cmF0ZWd5PiBpdHR5ID0gQnl0ZWNvZGVVdGlsLmZpbmRTdHJhdGVnaWVzKGJ5dGVjb2RlLCBPcHRpb25zU3RyYXRlZ3kuY2xhc3MpOworICAgICAgICBmaW5hbCBSZXF1ZXN0T3B0aW9ucy5CdWlsZGVyIGJ1aWxkZXIgPSBSZXF1ZXN0T3B0aW9ucy5idWlsZCgpOworICAgICAgICB3aGlsZSAoaXR0eS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIE9wdGlvbnNTdHJhdGVneSBvcHRpb25zU3RyYXRlZ3kgPSBpdHR5Lm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBvcHRpb25zID0gb3B0aW9uc1N0cmF0ZWd5LmdldE9wdGlvbnMoKTsKKyAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5zS2V5KEFSR1NfRVZBTF9USU1FT1VUKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLnRpbWVvdXQoKGxvbmcpIG9wdGlvbnMuZ2V0KEFSR1NfRVZBTF9USU1FT1VUKSk7CisgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250YWluc0tleShBUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIudGltZW91dCgobG9uZykgb3B0aW9ucy5nZXQoQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VUKSk7CisgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250YWluc0tleShSRVFVRVNUX0lEKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLm92ZXJyaWRlUmVxdWVzdElkKChVVUlEKSBvcHRpb25zLmdldChSRVFVRVNUX0lEKSk7CisgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250YWluc0tleShBUkdTX0JBVENIX1NJWkUpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYmF0Y2hTaXplKChpbnQpIG9wdGlvbnMuZ2V0KEFSR1NfQkFUQ0hfU0laRSkpOworICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbnNLZXkoQVJHU19VU0VSX0FHRU5UKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLnVzZXJBZ2VudCgoU3RyaW5nKSBvcHRpb25zLmdldChBUkdTX1VTRVJfQUdFTlQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci5jcmVhdGUoKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlVHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVUcmF2ZXJzYWwuamF2YQppbmRleCAyOGVjNjlkLi5lNDdiMDdiIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVUcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVUcmF2ZXJzYWwuamF2YQpAQCAtNjcsOSArNjcsNyBAQAogICAgICAgICAgICAgdGhpcy50cmF2ZXJzZXJzID0gbmV3IFRyYXZlcnNlckl0ZXJhdG9yPD4ocnMuaXRlcmF0b3IoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLnNpZGVFZmZlY3RzID0gbmV3IERyaXZlclJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzKGNsaWVudCwKLSAgICAgICAgICAgICAgICBycy5nZXRPcmlnaW5hbFJlcXVlc3RNZXNzYWdlKCkuZ2V0UmVxdWVzdElkKCksCi0gICAgICAgICAgICAgICAgcnMuZ2V0SG9zdCgpLCBycy5hbGxJdGVtc0F2YWlsYWJsZUFzeW5jKCkpOworICAgICAgICB0aGlzLnNpZGVFZmZlY3RzID0gbmV3IERyaXZlclJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzKGNsaWVudCxycyk7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cy5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMuamF2YQppbmRleCA0ZTJkODA4Li5iYWY1NGYzIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cy5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0RyaXZlclJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzLmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuSG9zdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0U2V0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLkFic3RyYWN0UmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHM7CkBAIC01NiwxMyArNTcsMzcgQEAKICAgICBwcml2YXRlIGJvb2xlYW4gY2xvc2VkID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBib29sZWFuIHJldHJpZXZlZEFsbEtleXMgPSBmYWxzZTsKICAgICBwcml2YXRlIGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPFZvaWQ+IHJlYWR5OworICAgIHByaXZhdGUgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8TWFwPFN0cmluZyxPYmplY3Q+PiBzdGF0dXNBdHRyaWJ1dGVzOwogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNEcml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cyhDbGllbnQsIFJlc3VsdFNldCl9CisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMoZmluYWwgQ2xpZW50IGNsaWVudCwgZmluYWwgVVVJRCBzZXJ2ZXJTaWRlRWZmZWN0LCBmaW5hbCBIb3N0IGhvc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPFZvaWQ+IHJlYWR5KSB7CiAgICAgICAgIHRoaXMuY2xpZW50ID0gY2xpZW50OwogICAgICAgICB0aGlzLnNlcnZlclNpZGVFZmZlY3QgPSBzZXJ2ZXJTaWRlRWZmZWN0OwogICAgICAgICB0aGlzLmhvc3QgPSBob3N0OwogICAgICAgICB0aGlzLnJlYWR5ID0gcmVhZHk7CisgICAgICAgIHRoaXMuc3RhdHVzQXR0cmlidXRlcyA9IENvbXBsZXRhYmxlRnV0dXJlLmNvbXBsZXRlZEZ1dHVyZShDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMoZmluYWwgQ2xpZW50IGNsaWVudCwgZmluYWwgUmVzdWx0U2V0IHJzKSB7CisgICAgICAgIHRoaXMuY2xpZW50ID0gY2xpZW50OworICAgICAgICB0aGlzLnNlcnZlclNpZGVFZmZlY3QgPSBycy5nZXRPcmlnaW5hbFJlcXVlc3RNZXNzYWdlKCkuZ2V0UmVxdWVzdElkKCk7CisgICAgICAgIHRoaXMuaG9zdCA9IHJzLmdldEhvc3QoKTsKKyAgICAgICAgdGhpcy5yZWFkeSA9IHJzLmFsbEl0ZW1zQXZhaWxhYmxlQXN5bmMoKTsKKyAgICAgICAgdGhpcy5zdGF0dXNBdHRyaWJ1dGVzID0gcnMuc3RhdHVzQXR0cmlidXRlcygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHN0YXR1cyBhdHRyaWJ1dGVzIGZyb20gdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4gVGhpcyBtZXRob2Qgd2lsbCBibG9jayB1bnRpbCBhbGwgcmVzdWx0cyBoYXZlCisgICAgICogYmVlbiByZXRyaWV2ZWQuCisgICAgICovCisgICAgcHVibGljIE1hcDxTdHJpbmcsT2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzKCkgeworICAgICAgICAvLyB3YWl0IGZvciB0aGUgcmVhZCB0byBjb21wbGV0ZSAoaS5lLiBpdGVyYXRpb24gb24gdGhlIHNlcnZlcikgYmVmb3JlIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gZ2V0IHRoZQorICAgICAgICAvLyBhdHRyaWJ1dGUuIHNpbXBseSBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gZnJvbSBvdGhlciBtZXRob2RzIGhlcmUgZm9yIG5vdy4KKyAgICAgICAgcmV0dXJuIHN0YXR1c0F0dHJpYnV0ZXMuam9pbigpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5qYXZhCmluZGV4IDdhZTE3YTMuLmZjZDM4OWEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmphdmEKQEAgLTU0LDE4ICs1NCwyMCBAQAogCiAgICAgcHJvdGVjdGVkIE9iamVjdE1hcHBlciBtYXBwZXI7CiAKLSAgICBwcm90ZWN0ZWQgZmluYWwgVHlwZVJlZmVyZW5jZTxNYXA8U3RyaW5nLCBPYmplY3Q+PiBtYXBUeXBlUmVmZXJlbmNlID0gbmV3IFR5cGVSZWZlcmVuY2U8TWFwPFN0cmluZywgT2JqZWN0Pj4oKSB7Ci0gICAgfTsKLQogICAgIHB1YmxpYyBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKCkgewogICAgICAgICBmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIgPSBjb25maWd1cmVCdWlsZGVyKGluaXRCdWlsZGVyKG51bGwpKTsKICAgICAgICAgbWFwcGVyID0gYnVpbGRlci5jcmVhdGUoKS5jcmVhdGVNYXBwZXIoKTsKICAgICB9CiAKKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKGZpbmFsIEdyYXBoU09OTWFwcGVyIG1hcHBlcikgewogICAgICAgICB0aGlzLm1hcHBlciA9IG1hcHBlci5jcmVhdGVNYXBwZXIoKTsKICAgICB9CiAKKyAgICBwdWJsaWMgQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMChmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIG1hcHBlckJ1aWxkZXIpIHsKKyAgICAgICAgdGhpcy5tYXBwZXIgPSBjb25maWd1cmVCdWlsZGVyKG1hcHBlckJ1aWxkZXIpLmNyZWF0ZSgpLmNyZWF0ZU1hcHBlcigpOworICAgIH0KKwogICAgIGFic3RyYWN0IGJ5dGVbXSBvYnRhaW5IZWFkZXIoKTsKIAogICAgIGFic3RyYWN0IEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgY29uZmlndXJlQnVpbGRlcihmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIpOwpAQCAtMTQwLDggKzE0Miw3IEBACiAKICAgICBwcml2YXRlIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgaW5pdEJ1aWxkZXIoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyKSB7CiAgICAgICAgIGZpbmFsIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgYiA9IG51bGwgPT0gYnVpbGRlciA/IEdyYXBoU09OTWFwcGVyLmJ1aWxkKCkgOiBidWlsZGVyOwotICAgICAgICByZXR1cm4gYi5hZGRDdXN0b21Nb2R1bGUobmV3IEFic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuR3JlbWxpblNlcnZlck1vZHVsZSgpKQotICAgICAgICAgICAgICAgIC5hZGRDdXN0b21Nb2R1bGUoR3JhcGhTT05YTW9kdWxlVjJkMC5idWlsZCgpLmNyZWF0ZShmYWxzZSkpCisgICAgICAgIHJldHVybiBiLmFkZEN1c3RvbU1vZHVsZShHcmFwaFNPTlhNb2R1bGVWMmQwLmJ1aWxkKCkuY3JlYXRlKGZhbHNlKSkKICAgICAgICAgICAgICAgICAudmVyc2lvbihHcmFwaFNPTlZlcnNpb24uVjJfMCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5qYXZhCmluZGV4IDJiYjMzODMuLjc5OWIzZDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5qYXZhCkBAIC00Nyw3ICs0Nyw5IEBACiAKIC8qKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMX0uCiAgKi8KK0BEZXByZWNhdGVkCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwIGV4dGVuZHMgQWJzdHJhY3RNZXNzYWdlU2VyaWFsaXplciB7CiAgICAgcHJpdmF0ZSBHcnlvTWFwcGVyIGdyeW9NYXBwZXI7CiAgICAgcHJpdmF0ZSBUaHJlYWRMb2NhbDxLcnlvPiBrcnlvVGhyZWFkTG9jYWwgPSBuZXcgVGhyZWFkTG9jYWw8S3J5bz4oKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhCmluZGV4IDljNjkwYzkuLjJlZmI0YTMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhCkBAIC00NCw3ICs0NCw5IEBACiAKIC8qKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMX0uCiAgKi8KK0BEZXByZWNhdGVkCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwIGV4dGVuZHMgQWJzdHJhY3RNZXNzYWdlU2VyaWFsaXplciB7CiAgICAgcHJpdmF0ZSBHcnlvTWFwcGVyIGdyeW9NYXBwZXI7CiAgICAgcHJpdmF0ZSBUaHJlYWRMb2NhbDxLcnlvPiBrcnlvVGhyZWFkTG9jYWwgPSBuZXcgVGhyZWFkTG9jYWw8S3J5bz4oKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdE1lc3NhZ2VTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdE1lc3NhZ2VTZXJpYWxpemVyLmphdmEKaW5kZXggNGFiYWIyNC4uNTlkMGFhZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RNZXNzYWdlU2VyaWFsaXplci5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0TWVzc2FnZVNlcmlhbGl6ZXIuamF2YQpAQCAtNDksNyArNDksNyBAQAogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBmaW5hbCBDbGFzczw/PiBjbGF6eiA9IENsYXNzLmZvck5hbWUoY2xhc3NOYW1lKTsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAvLyB0cnkgaW5zdGFuY2UoKSBmaXJzdCBhbmQgdGhlbiBpbnN0YW5jZSgpIHdoaWNoIHdhcyBkZXByZWNhdGVkIGluIDMuMi40CisgICAgICAgICAgICAgICAgICAgIC8vIHRyeSBpbnN0YW5jZSgpIGZpcnN0IGFuZCB0aGVuIGdldEluc3RhbmNlKCkgd2hpY2ggd2FzIGRlcHJlY2F0ZWQgaW4gMy4yLjQKICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWV0aG9kIGluc3RhbmNlTWV0aG9kID0gdHJ5SW5zdGFuY2VNZXRob2QoY2xhenopOwogICAgICAgICAgICAgICAgICAgICBpZiAoSW9SZWdpc3RyeS5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGluc3RhbmNlTWV0aG9kLmdldFJldHVyblR5cGUoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFkZFJlZ2lzdHJ5KChJb1JlZ2lzdHJ5KSBpbnN0YW5jZU1ldGhvZC5pbnZva2UobnVsbCkpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjRlNzZmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLmphdmEKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXI7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeUlvOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS5SZXF1ZXN0TWVzc2FnZVNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS5SZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5UeXBlU2VyaWFsaXplclJlZ2lzdHJ5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlcy5DdXN0b21UeXBlU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1JlZ2lzdHJ5OworaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlBhaXI7CisKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CisKK2ltcG9ydCBzdGF0aWMgamF2YS5uaW8uY2hhcnNldC5TdGFuZGFyZENoYXJzZXRzLlVURl84OworCitwdWJsaWMgY2xhc3MgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIGV4dGVuZHMgQWJzdHJhY3RNZXNzYWdlU2VyaWFsaXplciB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUT0tFTl9DVVNUT00gPSAiY3VzdG9tIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUT0tFTl9CVUlMREVSID0gImJ1aWxkZXIiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRPS0VOX1NFUklBTElaRV9SRVNVTFRfVE9fU1RSSU5HID0gInNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX1RZUEUgPSBTZXJUb2tlbnMuTUlNRV9HUkFQSEJJTkFSWV9WMUQwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX1RZUEVfU1RSSU5HRCA9IFNlclRva2Vucy5NSU1FX0dSQVBIQklOQVJZX1YxRDAgKyAiLXN0cmluZ2QiOworCisgICAgcHJpdmF0ZSBieXRlW10gaGVhZGVyID0gTUlNRV9UWVBFLmdldEJ5dGVzKFVURl84KTsKKyAgICBwcml2YXRlIGJvb2xlYW4gc2VyaWFsaXplVG9TdHJpbmcgPSBmYWxzZTsKKyAgICBwcml2YXRlIEdyYXBoQmluYXJ5UmVhZGVyIHJlYWRlcjsKKyAgICBwcml2YXRlIEdyYXBoQmluYXJ5V3JpdGVyIHdyaXRlcjsKKyAgICBwcml2YXRlIFJlcXVlc3RNZXNzYWdlU2VyaWFsaXplciByZXF1ZXN0U2VyaWFsaXplcjsKKyAgICBwcml2YXRlIFJlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXIgcmVzcG9uc2VTZXJpYWxpemVyOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgbWVzc2FnZSBzZXJpYWxpemVyIHVzaW5nIHRoZSBkZWZhdWx0IHR5cGUgc2VyaWFsaXplcnMuCisgICAgICovCisgICAgcHVibGljIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpIHsKKyAgICAgICAgdGhpcyhUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LklOU1RBTkNFKTsKKyAgICB9CisKKyAgICBwdWJsaWMgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnkpIHsKKyAgICAgICAgcmVhZGVyID0gbmV3IEdyYXBoQmluYXJ5UmVhZGVyKHJlZ2lzdHJ5KTsKKyAgICAgICAgd3JpdGVyID0gbmV3IEdyYXBoQmluYXJ5V3JpdGVyKHJlZ2lzdHJ5KTsKKworICAgICAgICByZXF1ZXN0U2VyaWFsaXplciA9IG5ldyBSZXF1ZXN0TWVzc2FnZVNlcmlhbGl6ZXIoKTsKKyAgICAgICAgcmVzcG9uc2VTZXJpYWxpemVyID0gbmV3IFJlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuQnVpbGRlciBidWlsZGVyKSB7CisgICAgICAgIHRoaXMoYnVpbGRlci5jcmVhdGUoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gY29uZmlnLCBmaW5hbCBNYXA8U3RyaW5nLCBHcmFwaD4gZ3JhcGhzKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBidWlsZGVyQ2xhc3NOYW1lID0gKFN0cmluZykgY29uZmlnLmdldChUT0tFTl9CVUlMREVSKTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5CdWlsZGVyIGJ1aWxkZXI7CisKKyAgICAgICAgaWYgKGJ1aWxkZXJDbGFzc05hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBDbGFzczw/PiBjbGF6eiA9IENsYXNzLmZvck5hbWUoYnVpbGRlckNsYXNzTmFtZSk7CisgICAgICAgICAgICAgICAgQ29uc3RydWN0b3I8Pz4gY3RvciA9IGNsYXp6LmdldENvbnN0cnVjdG9yKCk7CisgICAgICAgICAgICAgICAgYnVpbGRlciA9IChUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LkJ1aWxkZXIpIGN0b3IubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWlsZGVyID0gVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5idWlsZCgpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGNsYXNzTmFtZUxpc3QgPSBnZXRMaXN0U3RyaW5nRnJvbUNvbmZpZyhUT0tFTl9JT19SRUdJU1RSSUVTLCBjb25maWcpOworICAgICAgICBjbGFzc05hbWVMaXN0LmZvckVhY2goY2xhc3NOYW1lIC0+IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8Pz4gY2xhenogPSBDbGFzcy5mb3JOYW1lKGNsYXNzTmFtZSk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTWV0aG9kIGluc3RhbmNlTWV0aG9kID0gdHJ5SW5zdGFuY2VNZXRob2QoY2xhenopOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBJb1JlZ2lzdHJ5IGlvcmVnID0gKElvUmVnaXN0cnkpIGluc3RhbmNlTWV0aG9kLmludm9rZShudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxQYWlyPENsYXNzLCBDdXN0b21UeXBlU2VyaWFsaXplcj4+IGNsYXNzU2VyaWFsaXplcnMgPSBpb3JlZy5maW5kKEdyYXBoQmluYXJ5SW8uY2xhc3MsIEN1c3RvbVR5cGVTZXJpYWxpemVyLmNsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChQYWlyPENsYXNzLEN1c3RvbVR5cGVTZXJpYWxpemVyPiBjcyA6IGNsYXNzU2VyaWFsaXplcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYWRkQ3VzdG9tVHlwZShjcy5nZXRWYWx1ZTAoKSwgY3MuZ2V0VmFsdWUxKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIG1ldGhvZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiQ291bGQgbm90IGluc3RhbnRpYXRlIElvUmVnaXN0cnkgZnJvbSBhbiBpbnN0YW5jZSgpIG1ldGhvZCBvbiAlcyIsIGNsYXNzTmFtZSksIG1ldGhvZGV4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgYWRkQ3VzdG9tQ2xhc3Nlcyhjb25maWcsIGJ1aWxkZXIpOworCisgICAgICAgIHRoaXMuc2VyaWFsaXplVG9TdHJpbmcgPSBCb29sZWFuLnBhcnNlQm9vbGVhbihjb25maWcuZ2V0T3JEZWZhdWx0KFRPS0VOX1NFUklBTElaRV9SRVNVTFRfVE9fU1RSSU5HLCAiZmFsc2UiKS50b1N0cmluZygpKTsKKyAgICAgICAgdGhpcy5oZWFkZXIgPSB0aGlzLnNlcmlhbGl6ZVRvU3RyaW5nID8gTUlNRV9UWVBFX1NUUklOR0QuZ2V0Qnl0ZXMoVVRGXzgpIDogTUlNRV9UWVBFLmdldEJ5dGVzKFVURl84KTsKKworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gYnVpbGRlci5jcmVhdGUoKTsKKyAgICAgICAgcmVhZGVyID0gbmV3IEdyYXBoQmluYXJ5UmVhZGVyKHJlZ2lzdHJ5KTsKKyAgICAgICAgd3JpdGVyID0gbmV3IEdyYXBoQmluYXJ5V3JpdGVyKHJlZ2lzdHJ5KTsKKworICAgICAgICByZXF1ZXN0U2VyaWFsaXplciA9IG5ldyBSZXF1ZXN0TWVzc2FnZVNlcmlhbGl6ZXIoKTsKKyAgICAgICAgcmVzcG9uc2VTZXJpYWxpemVyID0gbmV3IFJlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXIoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnl0ZUJ1ZiBzZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KGZpbmFsIFJlc3BvbnNlTWVzc2FnZSByZXNwb25zZU1lc3NhZ2UsIGZpbmFsIEJ5dGVCdWZBbGxvY2F0b3IgYWxsb2NhdG9yKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gYWxsb2NhdG9yLmJ1ZmZlcigpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgbXNnVG9Xcml0ZSA9ICFzZXJpYWxpemVUb1N0cmluZyA/IHJlc3BvbnNlTWVzc2FnZSA6CisgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5idWlsZChyZXNwb25zZU1lc3NhZ2UuZ2V0UmVxdWVzdElkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvZGUocmVzcG9uc2VNZXNzYWdlLmdldFN0YXR1cygpLmdldENvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlcyhyZXNwb25zZU1lc3NhZ2UuZ2V0U3RhdHVzKCkuZ2V0QXR0cmlidXRlcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXNwb25zZU1ldGFEYXRhKHJlc3BvbnNlTWVzc2FnZS5nZXRSZXN1bHQoKS5nZXRNZXRhKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdChzZXJpYWxpemVSZXN1bHRUb1N0cmluZyhyZXNwb25zZU1lc3NhZ2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdGF0dXNNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZS5nZXRTdGF0dXMoKS5nZXRNZXNzYWdlKCkpLmNyZWF0ZSgpOworCisgICAgICAgICAgICByZXNwb25zZVNlcmlhbGl6ZXIud3JpdGVWYWx1ZShtc2dUb1dyaXRlLCBidWZmZXIsIHdyaXRlcik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgYnVmZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnl0ZUJ1ZiBzZXJpYWxpemVSZXF1ZXN0QXNCaW5hcnkoZmluYWwgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UsIGZpbmFsIEJ5dGVCdWZBbGxvY2F0b3IgYWxsb2NhdG9yKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gYWxsb2NhdG9yLmJ1ZmZlcigpLndyaXRlQnl0ZShoZWFkZXIubGVuZ3RoKS53cml0ZUJ5dGVzKGhlYWRlcik7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlcXVlc3RTZXJpYWxpemVyLndyaXRlVmFsdWUocmVxdWVzdE1lc3NhZ2UsIGJ1ZmZlciwgd3JpdGVyKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBidWZmZXIucmVsZWFzZSgpOworICAgICAgICAgICAgdGhyb3cgZXg7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYnVmZmVyOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBSZXF1ZXN0TWVzc2FnZSBkZXNlcmlhbGl6ZVJlcXVlc3QoZmluYWwgQnl0ZUJ1ZiBtc2cpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHJlcXVlc3RTZXJpYWxpemVyLnJlYWRWYWx1ZShtc2csIHJlYWRlcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFJlc3BvbnNlTWVzc2FnZSBkZXNlcmlhbGl6ZVJlc3BvbnNlKGZpbmFsIEJ5dGVCdWYgbXNnKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiByZXNwb25zZVNlcmlhbGl6ZXIucmVhZFZhbHVlKG1zZywgcmVhZGVyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nW10gbWltZVR5cGVzU3VwcG9ydGVkKCkgeworICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1tde3NlcmlhbGl6ZVRvU3RyaW5nID8gTUlNRV9UWVBFX1NUUklOR0QgOiBNSU1FX1RZUEV9OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhZGRDdXN0b21DbGFzc2VzKGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gY29uZmlnLCBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LkJ1aWxkZXIgYnVpbGRlcikgeworICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gY2xhc3NOYW1lTGlzdCA9IGdldExpc3RTdHJpbmdGcm9tQ29uZmlnKFRPS0VOX0NVU1RPTSwgY29uZmlnKTsKKworICAgICAgICBjbGFzc05hbWVMaXN0LmZvckVhY2goc2VyaWFsaXplckRlZmluaXRpb24gLT4geworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGNsYXNzTmFtZTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBzZXJpYWxpemVyTmFtZTsKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVyRGVmaW5pdGlvbi5jb250YWlucygiOyIpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nW10gc3BsaXQgPSBzZXJpYWxpemVyRGVmaW5pdGlvbi5zcGxpdCgiOyIpOworICAgICAgICAgICAgICAgIGlmIChzcGxpdC5sZW5ndGggIT0gMikKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJJbnZhbGlkIGZvcm1hdCBmb3Igc2VyaWFsaXplciBkZWZpbml0aW9uIFslc10gLSBleHBlY3RlZCA8Y2xhc3M+OzxzZXJpYWxpemVyLWNsYXNzPiIsIHNlcmlhbGl6ZXJEZWZpbml0aW9uKSk7CisKKyAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSBzcGxpdFswXTsKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVyTmFtZSA9IHNwbGl0WzFdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkludmFsaWQgZm9ybWF0IGZvciBzZXJpYWxpemVyIGRlZmluaXRpb24gWyVzXSAtIGV4cGVjdGVkIDxjbGFzcz47PHNlcmlhbGl6ZXItY2xhc3M+Iiwgc2VyaWFsaXplckRlZmluaXRpb24pKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBmaW5hbCBDbGFzcyBjbGF6eiA9IENsYXNzLmZvck5hbWUoY2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBDbGFzcyBzZXJpYWxpemVyQ2xhenogPSBDbGFzcy5mb3JOYW1lKHNlcmlhbGl6ZXJOYW1lKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBDdXN0b21UeXBlU2VyaWFsaXplciBzZXJpYWxpemVyID0gKEN1c3RvbVR5cGVTZXJpYWxpemVyKSBzZXJpYWxpemVyQ2xhenoubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFkZEN1c3RvbVR5cGUoY2xhenosIHNlcmlhbGl6ZXIpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQ3VzdG9tVHlwZVNlcmlhbGl6ZXIgY291bGQgbm90IGJlIGluc3RhbnRpYXRlZCIsIGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBPYmplY3Qgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmcoZmluYWwgUmVzcG9uc2VNZXNzYWdlIG1zZykgeworICAgICAgICBpZiAobXNnLmdldFJlc3VsdCgpID09IG51bGwpIHJldHVybiAibnVsbCI7CisgICAgICAgIGlmIChtc2cuZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpID09IG51bGwpIHJldHVybiAibnVsbCI7CisKKyAgICAgICAgLy8gdGhlIEl0ZXJhdG9ySGFuZGxlciBzaG91bGQgcmV0dXJuIGEgY29sbGVjdGlvbiBzbyBrZWVwIGl0IGFzIHN1Y2gKKyAgICAgICAgZmluYWwgT2JqZWN0IG8gPSBtc2cuZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpOworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIENvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHJldHVybiAoKENvbGxlY3Rpb24pIG8pLnN0cmVhbSgpLm1hcChkIC0+IG51bGwgPT0gZCA/ICJudWxsIiA6IGQudG9TdHJpbmcoKSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBvLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMC5qYXZhCmluZGV4IDlhZTQ3OTguLjkyMzBlNmMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMC5qYXZhCkBAIC0xOSw2ICsxOSw3IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlcjsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OTWFwcGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OWE1vZHVsZVYyZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uVHlwZUluZm87CiAKIGltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOwpAQCAtMjcsNyArMjgsOSBAQAogICogU2VyaWFsaXplIHJlc3VsdHMgdG8gSlNPTiB3aXRoIHZlcnNpb24gMi4wLnggc2NoZW1hIGFuZCB0aGUgZXh0ZW5kZWQgbW9kdWxlLgogICoKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqIEBkZXByZWNhdGVkIEFzIGZvciByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDB9LgogICovCitARGVwcmVjYXRlZAogcHVibGljIGZpbmFsIGNsYXNzIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMCBleHRlbmRzIEFic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAgewogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfVFlQRSA9IFNlclRva2Vucy5NSU1FX0dSQVBIU09OX1YyRDA7CkBAIC00MSwxNyArNDQsNDEgQEAKICAgICAgICAgaGVhZGVyID0gYnVmZmVyLmFycmF5KCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIGRlZmF1bHQgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW4uCisgICAgICogPHA+CisgICAgICogQnkgZGVmYXVsdCB0aGlzIHdpbGwgaW50ZXJuYWxseSBpbnN0YW50aWF0ZSBhIHtAbGluayBHcmFwaFNPTk1hcHBlcn0gYW5kIHJlZ2lzdGVyCisgICAgICogYSB7QGxpbmsgR3JlbWxpblNlcnZlck1vZHVsZX0gYW5kIHtAbGluayBHcmFwaFNPTlhNb2R1bGVWMmQwfSB0byB0aGUgbWFwcGVyLgorICAgICAqCisgICAgICogQHNlZSAjR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwKEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIpCisgICAgICovCiAgICAgcHVibGljIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMCgpIHsKICAgICAgICAgc3VwZXIoKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyIGZyb20gYSB7QGxpbmsgR3JhcGhTT05NYXBwZXJ9LiBEZXByZWNhdGVkLCB1c2UKKyAgICAgKiB7QGxpbmsgI0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMChHcmFwaFNPTk1hcHBlci5CdWlsZGVyKX0gaW5zdGVhZC4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAoZmluYWwgR3JhcGhTT05NYXBwZXIgbWFwcGVyKSB7CiAgICAgICAgIHN1cGVyKG1hcHBlcik7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW4gd2l0aCBhIHByb3ZpZGVkIHtAbGluayBHcmFwaFNPTk1hcHBlci5CdWlsZGVyfS4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgdG8gbWFrZSB0aGlzIG1hcHBlciB1c2FibGUgaW4gdGhlIGNvbnRleHQgb2YgcmVxdWVzdCBtZXNzYWdlcyBhbmQgcmVzcG9uc2VzLAorICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgYXV0b21hdGljYWxseSByZWdpc3RlciBhIHtAbGluayBHcmVtbGluU2VydmVyTW9kdWxlfSB0byB0aGUgcHJvdmlkZWQKKyAgICAgKiBtYXBwZXIuCisgICAgICovCisgICAgcHVibGljIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMChmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIG1hcHBlckJ1aWxkZXIpIHsKKyAgICAgICAgc3VwZXIobWFwcGVyQnVpbGRlcik7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFN0cmluZ1tdIG1pbWVUeXBlc1N1cHBvcnRlZCgpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXXtNSU1FX1RZUEV9OworICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1tde1NlclRva2Vucy5NSU1FX0dSQVBIU09OX1YyRDAsIFNlclRva2Vucy5NSU1FX0pTT059OwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtNjIsNiArODksNiBAQAogICAgIEBPdmVycmlkZQogICAgIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgY29uZmlndXJlQnVpbGRlcihmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIpIHsKICAgICAgICAgLy8gYWxyZWFkeSBzZXQgdG8gMi4wIGluIEFic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIudHlwZUluZm8oVHlwZUluZm8uUEFSVElBTF9UWVBFUyk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnR5cGVJbmZvKFR5cGVJbmZvLlBBUlRJQUxfVFlQRVMpLmFkZEN1c3RvbU1vZHVsZShuZXcgR3JlbWxpblNlcnZlck1vZHVsZSgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuamF2YQppbmRleCAyNTFiNWMxLi5lODYwZGVlIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmphdmEKQEAgLTM5LDcgKzM5LDcgQEAKICAqLwogcHVibGljIGZpbmFsIGNsYXNzIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIGV4dGVuZHMgQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCBpbXBsZW1lbnRzIE1lc3NhZ2VUZXh0U2VyaWFsaXplciB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmNsYXNzKTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9UWVBFID0gU2VyVG9rZW5zLk1JTUVfSlNPTjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9UWVBFID0gU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjJEMDsKIAogICAgIHByaXZhdGUgc3RhdGljIGJ5dGVbXSBoZWFkZXI7CiAKQEAgLTUwLDIzICs1MCw0NyBAQAogICAgICAgICBoZWFkZXIgPSBidWZmZXIuYXJyYXkoKTsKICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENyZWF0ZXMgYSBkZWZhdWx0IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXIuCisgICAgICAgICAqCisgICAgICAgICAqIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIGludGVybmFsbHkgaW5zdGFudGlhdGUgYSB7QGxpbmsgR3JhcGhTT05NYXBwZXJ9IGFuZCByZWdpc3RlcgorICAgICAgICAgKiBhIHtAbGluayBHcmVtbGluU2VydmVyTW9kdWxlfSBhbmQge0BsaW5rIEdyYXBoU09OWE1vZHVsZVYyZDB9IHRvIHRoZSBtYXBwZXIuCisgICAgICAgICAqCisgICAgICAgICAqIEBzZWUgI0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIpCisgICAgICAgICAqLwogICAgIHB1YmxpYyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCgpIHsKICAgICAgICAgc3VwZXIoKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyIGZyb20gYSB7QGxpbmsgR3JhcGhTT05NYXBwZXJ9LiBEZXByZWNhdGVkLCB1c2UKKyAgICAgKiB7QGxpbmsgI0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIpfSBpbnN0ZWFkLgorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKGZpbmFsIEdyYXBoU09OTWFwcGVyIG1hcHBlcikgewogICAgICAgICBzdXBlcihtYXBwZXIpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXIgd2l0aCBhIHByb3ZpZGVkIHtAbGluayBHcmFwaFNPTk1hcHBlci5CdWlsZGVyfS4KKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB0byBtYWtlIHRoaXMgbWFwcGVyIHVzYWJsZSBpbiB0aGUgY29udGV4dCBvZiByZXF1ZXN0IG1lc3NhZ2VzIGFuZCByZXNwb25zZXMsCisgICAgICogdGhpcyBtZXRob2Qgd2lsbCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIGEge0BsaW5rIEdyZW1saW5TZXJ2ZXJNb2R1bGV9IHRvIHRoZSBwcm92aWRlZAorICAgICAqIG1hcHBlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBtYXBwZXJCdWlsZGVyKSB7CisgICAgICAgIHN1cGVyKG1hcHBlckJ1aWxkZXIpOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTdHJpbmdbXSBtaW1lVHlwZXNTdXBwb3J0ZWQoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgU3RyaW5nW117TUlNRV9UWVBFfTsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXXtNSU1FX1RZUEUsIFNlclRva2Vucy5NSU1FX0pTT059OwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgY29uZmlndXJlQnVpbGRlcihmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIpIHsKICAgICAgICAgLy8gYWxyZWFkeSBzZXQgdG8gMi4wIGluIEFic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIudHlwZUluZm8oVHlwZUluZm8uUEFSVElBTF9UWVBFUyk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnR5cGVJbmZvKFR5cGVJbmZvLlBBUlRJQUxfVFlQRVMpLmFkZEN1c3RvbU1vZHVsZShuZXcgR3JlbWxpblNlcnZlck1vZHVsZSgpKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhCmluZGV4IDUwMmEyZmYuLjk1NDdiM2QgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YQpAQCAtMjAsMTYgKzIwLDEzIEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXNDb2RlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OTWFwcGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OVmVyc2lvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5UeXBlSW5mbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlhNb2R1bGVWM2QwOwogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CiBpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CiAKIGltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlVVSUQ7CiAKIC8qKgogICogU2VyaWFsaXplIHJlc3VsdHMgdG8gSlNPTiB3aXRoIHZlcnNpb24gMy4wLnggc2NoZW1hIGFuZCB0aGUgZXh0ZW5kZWQgbW9kdWxlLgpAQCAtNDksMjMgKzQ2LDQ3IEBACiAgICAgICAgIGhlYWRlciA9IGJ1ZmZlci5hcnJheSgpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBkZWZhdWx0IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXIuCisgICAgICogPHA+CisgICAgICogQnkgZGVmYXVsdCB0aGlzIHdpbGwgaW50ZXJuYWxseSBpbnN0YW50aWF0ZSBhIHtAbGluayBHcmFwaFNPTk1hcHBlcn0gYW5kIHJlZ2lzdGVyCisgICAgICogYSB7QGxpbmsgR3JlbWxpblNlcnZlck1vZHVsZX0gYW5kIHtAbGluayBHcmFwaFNPTlhNb2R1bGVWM2QwfSB0byB0aGUgbWFwcGVyLgorICAgICAqCisgICAgICogQHNlZSAjR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAoR3JhcGhTT05NYXBwZXIuQnVpbGRlcikKKyAgICAgKi8KICAgICBwdWJsaWMgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAoKSB7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplciBmcm9tIGEge0BsaW5rIEdyYXBoU09OTWFwcGVyfS4gRGVwcmVjYXRlZCwgdXNlCisgICAgICoge0BsaW5rICNHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMChHcmFwaFNPTk1hcHBlci5CdWlsZGVyKX0gaW5zdGVhZC4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMChmaW5hbCBHcmFwaFNPTk1hcHBlciBtYXBwZXIpIHsKICAgICAgICAgc3VwZXIobWFwcGVyKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyIHdpdGggYSBwcm92aWRlZCB7QGxpbmsgR3JhcGhTT05NYXBwZXIuQnVpbGRlcn0uCisgICAgICoKKyAgICAgKiBOb3RlIHRoYXQgdG8gbWFrZSB0aGlzIG1hcHBlciB1c2FibGUgaW4gdGhlIGNvbnRleHQgb2YgcmVxdWVzdCBtZXNzYWdlcyBhbmQgcmVzcG9uc2VzLAorICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgYXV0b21hdGljYWxseSByZWdpc3RlciBhIHtAbGluayBHcmVtbGluU2VydmVyTW9kdWxlfSB0byB0aGUgcHJvdmlkZWQKKyAgICAgKiBtYXBwZXIuCisgICAgICovCisgICAgcHVibGljIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKGZpbmFsIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgbWFwcGVyQnVpbGRlcikgeworICAgICAgICBzdXBlcihtYXBwZXJCdWlsZGVyKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nW10gbWltZVR5cGVzU3VwcG9ydGVkKCkgewotICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1tde01JTUVfVFlQRSwgImFwcGxpY2F0aW9uL2pzb24ifTsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXXtNSU1FX1RZUEUsIFNlclRva2Vucy5NSU1FX0pTT059OwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgY29uZmlndXJlQnVpbGRlcihmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIpIHsKICAgICAgICAgLy8gb3ZlcnJpZGUgdGhlIDIuMCBpbiBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwCi0gICAgICAgIHJldHVybiBidWlsZGVyLnZlcnNpb24oR3JhcGhTT05WZXJzaW9uLlYzXzApOworICAgICAgICByZXR1cm4gYnVpbGRlci52ZXJzaW9uKEdyYXBoU09OVmVyc2lvbi5WM18wKS5hZGRDdXN0b21Nb2R1bGUobmV3IEdyZW1saW5TZXJ2ZXJNb2R1bGUoKSk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLmphdmEKaW5kZXggZDI2ZjAyNi4uZjk3NzEwZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuamF2YQpAQCAtMjgsNyArMjgsOSBAQAogICogbmV0d29yayBzZXJpYWxpemF0aW9uIHB1cnBvc2VzLgogICoKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjF9LgogICovCitARGVwcmVjYXRlZAogcHVibGljIGZpbmFsIGNsYXNzIEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAgZXh0ZW5kcyBBYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAgewogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfVFlQRSA9IFNlclRva2Vucy5NSU1FX0dSWU9fVjFEMDsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YQppbmRleCA4NWI3OWE5Li4xZjFjY2I4IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhCkBAIC0yOCw3ICsyOCw5IEBACiAgKiBuZXR3b3JrIHNlcmlhbGl6YXRpb24gcHVycG9zZXMuCiAgKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMX0uCiAgKi8KK0BEZXByZWNhdGVkCiBwdWJsaWMgZmluYWwgY2xhc3MgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBleHRlbmRzIEFic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCB7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9UWVBFID0gU2VyVG9rZW5zLk1JTUVfR1JZT19WM0QwOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvTmV0dHlCdWZmZXIuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL05ldHR5QnVmZmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFlY2FjMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL05ldHR5QnVmZmVyLmphdmEKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXI7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CisKKy8qKgorICogUmVwcmVzZW50cyBhIHtAbGluayBCdWZmZXJ9IGJhY2tlZCBieSBOZXR0eSdzIHtAbGluayBCeXRlQnVmfS4KKyAqLworZmluYWwgY2xhc3MgTmV0dHlCdWZmZXIgaW1wbGVtZW50cyBCdWZmZXIgeworICAgIHByaXZhdGUgZmluYWwgQnl0ZUJ1ZiBidWZmZXI7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlLgorICAgICAqIEBwYXJhbSBidWZmZXIgVGhlIGJ1ZmZlciB0byB3cmFwLgorICAgICAqLworICAgIE5ldHR5QnVmZmVyKEJ5dGVCdWYgYnVmZmVyKSB7CisgICAgICAgIGlmIChidWZmZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYnVmZmVyIGNhbid0IGJlIG51bGwiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgcmVhZGFibGVCeXRlcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRhYmxlQnl0ZXMoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IHJlYWRlckluZGV4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZGVySW5kZXgoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHJlYWRlckluZGV4KGZpbmFsIGludCByZWFkZXJJbmRleCkgeworICAgICAgICB0aGlzLmJ1ZmZlci5yZWFkZXJJbmRleChyZWFkZXJJbmRleCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgd3JpdGVySW5kZXgoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci53cml0ZXJJbmRleCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVySW5kZXgoZmluYWwgaW50IHdyaXRlckluZGV4KSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlckluZGV4KHdyaXRlckluZGV4KTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciBtYXJrV3JpdGVySW5kZXgoKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLm1hcmtXcml0ZXJJbmRleCgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHJlc2V0V3JpdGVySW5kZXgoKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLnJlc2V0V3JpdGVySW5kZXgoKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBjYXBhY2l0eSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLmNhcGFjaXR5KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gaXNEaXJlY3QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5pc0RpcmVjdCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIHJlYWRCb29sZWFuKCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZEJvb2xlYW4oKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYnl0ZSByZWFkQnl0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRCeXRlKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHNob3J0IHJlYWRTaG9ydCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRTaG9ydCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgcmVhZEludCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRJbnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgbG9uZyByZWFkTG9uZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRMb25nKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGZsb2F0IHJlYWRGbG9hdCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRGbG9hdCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBkb3VibGUgcmVhZERvdWJsZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWREb3VibGUoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHJlYWRCeXRlcyhmaW5hbCBieXRlW10gZGVzdGluYXRpb24pIHsKKyAgICAgICAgdGhpcy5idWZmZXIucmVhZEJ5dGVzKGRlc3RpbmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciByZWFkQnl0ZXMoZmluYWwgYnl0ZVtdIGRlc3RpbmF0aW9uLCBmaW5hbCBpbnQgZHN0SW5kZXgsIGZpbmFsIGludCBsZW5ndGgpIHsKKyAgICAgICAgdGhpcy5idWZmZXIucmVhZEJ5dGVzKGRlc3RpbmF0aW9uLCBkc3RJbmRleCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciByZWFkQnl0ZXMoZmluYWwgQnl0ZUJ1ZmZlciBkc3QpIHsKKyAgICAgICAgdGhpcy5idWZmZXIucmVhZEJ5dGVzKGRzdCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgcmVhZEJ5dGVzKGZpbmFsIE91dHB1dFN0cmVhbSBvdXQsIGZpbmFsIGludCBsZW5ndGgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMuYnVmZmVyLnJlYWRCeXRlcyhvdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVCb29sZWFuKGZpbmFsIGJvb2xlYW4gdmFsdWUpIHsKKyAgICAgICAgdGhpcy5idWZmZXIud3JpdGVCb29sZWFuKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJ5dGUoZmluYWwgaW50IHZhbHVlKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlQnl0ZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVTaG9ydChmaW5hbCBpbnQgdmFsdWUpIHsKKyAgICAgICAgdGhpcy5idWZmZXIud3JpdGVTaG9ydCh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVJbnQoZmluYWwgaW50IHZhbHVlKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlSW50KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciB3cml0ZUxvbmcoZmluYWwgbG9uZyB2YWx1ZSkgeworICAgICAgICB0aGlzLmJ1ZmZlci53cml0ZUxvbmcodmFsdWUpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlRmxvYXQoZmluYWwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgdGhpcy5idWZmZXIud3JpdGVGbG9hdCh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVEb3VibGUoZmluYWwgZG91YmxlIHZhbHVlKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlRG91YmxlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJ5dGVzKGZpbmFsIGJ5dGVbXSBzcmMpIHsKKyAgICAgICAgdGhpcy5idWZmZXIud3JpdGVCeXRlcyhzcmMpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlQnl0ZXMoZmluYWwgQnl0ZUJ1ZmZlciBzcmMpIHsKKyAgICAgICAgdGhpcy5idWZmZXIud3JpdGVCeXRlcyhzcmMpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlQnl0ZXMoYnl0ZVtdIHNyYywgZmluYWwgaW50IHNyY0luZGV4LCBmaW5hbCBpbnQgbGVuZ3RoKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlQnl0ZXMoc3JjLCBzcmNJbmRleCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gcmVsZWFzZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHJldGFpbigpIHsKKyAgICAgICAgdGhpcy5idWZmZXIucmV0YWluKCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgcmVmZXJlbmNlQ291bnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWZDbnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnl0ZUJ1ZmZlcltdIG5pb0J1ZmZlcnMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5uaW9CdWZmZXJzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ5dGVCdWZmZXIgbmlvQnVmZmVyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIubmlvQnVmZmVyKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ5dGVCdWZmZXIgbmlvQnVmZmVyKGZpbmFsIGludCBpbmRleCwgZmluYWwgaW50IGxlbmd0aCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIubmlvQnVmZmVyKGluZGV4LCBsZW5ndGgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCeXRlQnVmZmVyW10gbmlvQnVmZmVycyhmaW5hbCBpbnQgaW5kZXgsIGZpbmFsIGludCBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLm5pb0J1ZmZlcnMoaW5kZXgsIGxlbmd0aCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBuaW9CdWZmZXJDb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLm5pb0J1ZmZlckNvdW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciBnZXRCeXRlcyhmaW5hbCBpbnQgaW5kZXgsIGZpbmFsIGJ5dGVbXSBkc3QpIHsKKyAgICAgICAgdGhpcy5idWZmZXIuZ2V0Qnl0ZXMoaW5kZXgsIGRzdCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHVuZGVybHlpbmcgYnVmZmVyLgorICAgICAqLworICAgIHB1YmxpYyBCeXRlQnVmIGdldFVuZGVybHlpbmdCdWZmZXIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9OZXR0eUJ1ZmZlckZhY3RvcnkuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL05ldHR5QnVmZmVyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZWYzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9OZXR0eUJ1ZmZlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlcjsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmOworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5VbnBvb2xlZDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyRmFjdG9yeTsKKworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkNvbnN1bWVyOworCisvKioKKyAqIFJlcHJlc2VudHMgYSBmYWN0b3J5IHRvIGNyZWF0ZSB7QGxpbmsgQnVmZmVyfSBpbnN0YW5jZXMgZnJvbSB3cmFwcGVkIHtAbGluayBCeXRlQnVmfSBpbnN0YW5jZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBOZXR0eUJ1ZmZlckZhY3RvcnkgaW1wbGVtZW50cyBCdWZmZXJGYWN0b3J5PEJ5dGVCdWY+IHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIGNyZWF0ZShmaW5hbCBCeXRlQnVmIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgTmV0dHlCdWZmZXIodmFsdWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JhcChmaW5hbCBCeXRlQnVmZmVyIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBjcmVhdGUoVW5wb29sZWQud3JhcHBlZEJ1ZmZlcih2YWx1ZSkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEJ5dGVCdWYgZ2V0RnJvbUluZGV4KGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIGludCBpbmRleCkgeworICAgICAgICBpZiAoYnVmZmVyLm5pb0J1ZmZlckNvdW50KCkgPT0gMSkgeworICAgICAgICAgICAgLy8gSGVhcCBhbmQgZGlyZWN0IGJ1ZmZlcnMgdXN1YWxseSB0YWtlIGEgc2luZ2xlIGJ1ZmZlcgorICAgICAgICAgICAgLy8gSXQgd2lsbCBjcmVhdGUgYSBuZXcgQnl0ZUJ1ZiB1c2luZyB0aGUgc2FtZSBiYWNraW5nIGJ5dGUgYXJyYXkKKyAgICAgICAgICAgIHJldHVybiBVbnBvb2xlZC53cmFwcGVkQnVmZmVyKGJ1ZmZlci5uaW9CdWZmZXIoaW5kZXgsIGJ1ZmZlci5jYXBhY2l0eSgpIC0gaW5kZXgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVzZSBhIHdyYXBwZXIgb3IgY29tcG9zaXRlIGJ1ZmZlcgorICAgICAgICByZXR1cm4gVW5wb29sZWQud3JhcHBlZEJ1ZmZlcihidWZmZXIubmlvQnVmZmVycyhpbmRleCwgYnVmZmVyLmNhcGFjaXR5KCkgLSBpbmRleCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFV0aWxpdHkgbWV0aG9kIHRvIGFsbG93IHJlYWRpbmcgZnJvbSB0aGUgdW5kZXJseWluZyBieXRlcyB1c2luZyBhIE5ldHR5IHtAbGluayBCeXRlQnVmfSBpbnN0YW5jZSBmb3IKKyAgICAgKiBpbnRlcm9wZXJhYmlsaXR5LCBhZHZhbmNpbmcgdGhlIHJlYWRlciBpbmRleCBvZiB0aGUge0BsaW5rIEJ1ZmZlcn0gYWZ0ZXIgdGhlIGNvbnN1bWVyIGlzIGNhbGxlZC4KKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB0aGUge0BsaW5rIEJ5dGVCdWZ9IHVzZWQgYnkgdGhlIGNvbnN1bWVyIHNob3VsZCBub3QgYmUgcmVsZWFzZWQgYnkgdGhlIGNhbGxlci4KKyAgICAgKiBJbiBjYXNlIHRoZSBwcm92aWRlZCB7QGxpbmsgQnVmZmVyfSBpbnN0YW5jZSBpcyBub3QgYSB7QGxpbmsgTmV0dHlCdWZmZXJ9LCBpdCB3aWxsIGNyZWF0ZSBhIHtAbGluayBCeXRlQnVmfQorICAgICAqIHdyYXBwZXIgZm9yIHRoZSBjb25zdW1lciB0byB1c2UsIHJlbGVhc2luZyBpdCBhZnRlciB1c2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlYWRSYXcoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgQ29uc3VtZXI8Qnl0ZUJ1Zj4gY29uc3VtZXIpIHsKKyAgICAgICAgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIE5ldHR5QnVmZmVyKSB7CisgICAgICAgICAgICBjb25zdW1lci5hY2NlcHQoKChOZXR0eUJ1ZmZlcilidWZmZXIpLmdldFVuZGVybHlpbmdCdWZmZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYSBuZXcgQnl0ZUJ1ZiBhcyBhIHdyYXBwZXIKKyAgICAgICAgZmluYWwgaW50IGluaXRpYWxJbmRleCA9IGJ1ZmZlci5yZWFkZXJJbmRleCgpOworICAgICAgICBmaW5hbCBCeXRlQnVmIG5ld0J1ZmZlciA9IGdldEZyb21JbmRleChidWZmZXIsIGluaXRpYWxJbmRleCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIEludm9rZSB0aGUgY29uc3VtZXIgdG8gcmVhZCBmcm9tIHRoZSBCeXRlQnVmCisgICAgICAgICAgICBjb25zdW1lci5hY2NlcHQobmV3QnVmZmVyKTsKKworICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgcmVhZGVyIGluZGV4IG9mIHRoZSBCdWZmZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgIGJ1ZmZlci5yZWFkZXJJbmRleChpbml0aWFsSW5kZXggKyBuZXdCdWZmZXIucmVhZGVySW5kZXgoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBuZXdCdWZmZXIucmVsZWFzZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb3dzIHdyaXRpbmcgZnJvbSB0aGUgdW5kZXJseWluZyBieXRlcyB1c2luZyBhIE5ldHR5IHtAbGluayBCeXRlQnVmfSBpbnN0YW5jZSBmb3IgaW50ZXJvcGVyYWJpbGl0eSwKKyAgICAgKiBhZHZhbmNpbmcgdGhlIHdyaXRlciBpbmRleCBvZiB0aGUge0BsaW5rIEJ1ZmZlcn0gYWZ0ZXIgdGhlIGNvbnN1bWVyIGlzIGNhbGxlZC4KKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB0aGUge0BsaW5rIEJ5dGVCdWZ9IHVzZWQgYnkgdGhlIGNvbnN1bWVyIHNob3VsZCBub3QgYmUgcmVsZWFzZWQgYnkgdGhlIGNhbGxlci4KKyAgICAgKiBJbiBjYXNlIHRoZSBwcm92aWRlZCB7QGxpbmsgQnVmZmVyfSBpbnN0YW5jZSBpcyBub3QgYSB7QGxpbmsgTmV0dHlCdWZmZXJ9LCBpdCB3aWxsIGNyZWF0ZSBhIHtAbGluayBCeXRlQnVmfQorICAgICAqIHdyYXBwZXIgZm9yIHRoZSBjb25zdW1lciB0byB1c2UsIHJlbGVhc2luZyBpdCBhZnRlciB1c2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHdyaXRlUmF3KGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIENvbnN1bWVyPEJ5dGVCdWY+IGNvbnN1bWVyKSB7CisgICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBOZXR0eUJ1ZmZlcikgeworICAgICAgICAgICAgY29uc3VtZXIuYWNjZXB0KCgoTmV0dHlCdWZmZXIpYnVmZmVyKS5nZXRVbmRlcmx5aW5nQnVmZmVyKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEJ5dGVCdWYgYXMgYSB3cmFwcGVyCisgICAgICAgIGZpbmFsIGludCBpbml0aWFsSW5kZXggPSBidWZmZXIud3JpdGVySW5kZXgoKTsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBuZXdCdWZmZXIgPSBnZXRGcm9tSW5kZXgoYnVmZmVyLCBpbml0aWFsSW5kZXgpOworCisgICAgICAgIC8vIFNldCB3cml0ZXIgaW5kZXggdG8gMAorICAgICAgICBuZXdCdWZmZXIud3JpdGVySW5kZXgoMCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIEludm9rZSB0aGUgY29uc3VtZXIgdG8gcmVhZCBmcm9tIHRoZSBCeXRlQnVmCisgICAgICAgICAgICBjb25zdW1lci5hY2NlcHQobmV3QnVmZmVyKTsKKworICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgcmVhZGVyIGluZGV4IG9mIHRoZSBCdWZmZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgIGJ1ZmZlci53cml0ZXJJbmRleChpbml0aWFsSW5kZXggKyBuZXdCdWZmZXIud3JpdGVySW5kZXgoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBuZXdCdWZmZXIucmVsZWFzZSgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvU2VyVG9rZW5zLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9TZXJUb2tlbnMuamF2YQppbmRleCBmMGFiMWU4Li41Y2NiOGRkIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9TZXJUb2tlbnMuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9TZXJUb2tlbnMuamF2YQpAQCAtMTgsMTAgKzE4LDEyIEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyOwogCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkhhbHRlZFRyYXZlcnNlclN0cmF0ZWd5OworCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwotcHVibGljIGZpbmFsICBjbGFzcyBTZXJUb2tlbnMgeworcHVibGljIGZpbmFsIGNsYXNzIFNlclRva2VucyB7CiAgICAgcHJpdmF0ZSBTZXJUb2tlbnMoKSB7fQogCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE9LRU5fQVRUUklCVVRFUyA9ICJhdHRyaWJ1dGVzIjsKQEAgLTQwLDcgKzQyLDIzIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9HUkFQSFNPTl9WMUQwID0gImFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYxLjAranNvbiI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9HUkFQSFNPTl9WMkQwID0gImFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYyLjAranNvbiI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9HUkFQSFNPTl9WM0QwID0gImFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbiI7CisKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4zLCByZXBsYWNlZCBieSB7QGxpbmsgI01JTUVfR1JBUEhCSU5BUllfVjFEMH0uCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX0dSWU9fVjFEMCA9ICJhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12MS4wK2dyeW8iOworCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rICNNSU1FX0dSQVBIQklOQVJZX1YxRDB9LgorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9HUllPX1YzRDAgPSAiYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvIjsKKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjYsIG5vdCBkaXJlY3RseSByZXBsYWNlZCAtIHN1cHBvcnRlZCB0aHJvdWdoIHtAbGluayBIYWx0ZWRUcmF2ZXJzZXJTdHJhdGVneX0uCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX0dSWU9fTElURV9WMUQwID0gImFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYxLjArZ3J5by1saXRlIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX0dSQVBIQklOQVJZX1YxRDAgPSAiYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAiOwogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvU2VyaWFsaXplcnMuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL1NlcmlhbGl6ZXJzLmphdmEKaW5kZXggNGM1OGRlMi4uNDdhZjY0NyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvU2VyaWFsaXplcnMuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9TZXJpYWxpemVycy5qYXZhCkBAIC0xOSw2ICsxOSw3IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlcjsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLk1lc3NhZ2VTZXJpYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5IYWx0ZWRUcmF2ZXJzZXJTdHJhdGVneTsKIAogLyoqCiAgKiBBbiBlbnVtIG9mIHRoZSBkZWZhdWx0IHNlcmlhbGl6ZXJzLgpAQCAtMzMsOCArMzQsMjQgQEAKICAgICBHUkFQSFNPTl9WMUQwKFNlclRva2Vucy5NSU1FX0dSQVBIU09OX1YxRDApLAogICAgIEdSQVBIU09OX1YyRDAoU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjJEMCksCiAgICAgR1JBUEhTT05fVjNEMChTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WM0QwKSwKKyAgICBHUkFQSEJJTkFSWV9WMUQwKFNlclRva2Vucy5NSU1FX0dSQVBIQklOQVJZX1YxRDApLAorCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rICNHUkFQSEJJTkFSWV9WMUQwfS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEdSWU9fVjFEMChTZXJUb2tlbnMuTUlNRV9HUllPX1YxRDApLAorCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rICNHUkFQSEJJTkFSWV9WMUQwfS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEdSWU9fVjNEMChTZXJUb2tlbnMuTUlNRV9HUllPX1YzRDApLAorCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuNiwgbm90IGRpcmVjdGx5IHJlcGxhY2VkIC0gc3VwcG9ydGVkIHRocm91Z2gge0BsaW5rIEhhbHRlZFRyYXZlcnNlclN0cmF0ZWd5fS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEdSWU9fTElURV9WMUQwKFNlclRva2Vucy5NSU1FX0dSWU9fTElURV9WMUQwKTsKIAogICAgIHByaXZhdGUgU3RyaW5nIHZhbHVlOwpAQCAtNzIsNyArODksNyBAQAogICAgICAgICAgICAgY2FzZSBTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WMUQwOgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMWQwKCk7CiAgICAgICAgICAgICBjYXNlIFNlclRva2Vucy5NSU1FX0dSQVBIU09OX1YyRDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKCk7CiAgICAgICAgICAgICBjYXNlIFNlclRva2Vucy5NSU1FX0dSQVBIU09OX1YzRDA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCgpOwogICAgICAgICAgICAgY2FzZSBTZXJUb2tlbnMuTUlNRV9HUllPX1YxRDA6CkBAIC04MSw2ICs5OCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKCk7CiAgICAgICAgICAgICBjYXNlIFNlclRva2Vucy5NSU1FX0dSWU9fTElURV9WMUQwOgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR3J5b0xpdGVNZXNzYWdlU2VyaWFsaXplclYxZDAoKTsKKyAgICAgICAgICAgIGNhc2UgU2VyVG9rZW5zLk1JTUVfR1JBUEhCSU5BUllfVjFEMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGNyZWF0ZSBhIHNpbXBsZSBNZXNzYWdlU2VyaWFsaXplciBpbnN0YW5jZSBvZiAiICsgdmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvUmVxdWVzdE1lc3NhZ2VTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvUmVxdWVzdE1lc3NhZ2VTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA0YmZlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9SZXF1ZXN0TWVzc2FnZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDgzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeTsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5OZXR0eUJ1ZmZlckZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyaWFsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworcHVibGljIGNsYXNzIFJlcXVlc3RNZXNzYWdlU2VyaWFsaXplciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBwdWJsaWMgUmVxdWVzdE1lc3NhZ2UgcmVhZFZhbHVlKGZpbmFsIEJ5dGVCdWYgYnl0ZUJ1ZiwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICAvLyBXcmFwIG5ldHR5J3MgYnVmZmVyCisgICAgICAgIGZpbmFsIEJ1ZmZlciBidWZmZXIgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShieXRlQnVmKTsKKworICAgICAgICBmaW5hbCBpbnQgdmVyc2lvbiA9IGJ1ZmZlci5yZWFkQnl0ZSgpICYgMHhmZjsKKworICAgICAgICBpZiAodmVyc2lvbiA+Pj4gNyAhPSAxKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGluZGljYXRpb24gdGhhdCB0aGUgcmVxdWVzdCBidWZmZXIgd2FzIGluY29ycmVjdGx5IGJ1aWx0CisgICAgICAgICAgICAvLyBPciB0aGUgYnVmZmVyIG9mZnNldHMgYXJlIHdyb25nCisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbigiVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHNob3VsZCBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBVVUlEIGlkID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBVVUlELmNsYXNzLCBmYWxzZSk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgb3AgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByb2Nlc3NvciA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgYnVpbGRlciA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKG9wKS5vdmVycmlkZVJlcXVlc3RJZChpZCkucHJvY2Vzc29yKHByb2Nlc3Nvcik7CisKKyAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gYXJncyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTWFwLmNsYXNzLCBmYWxzZSk7CisgICAgICAgICAgICBhcmdzLmZvckVhY2goYnVpbGRlcjo6YWRkQXJnKTsKKworICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuY3JlYXRlKCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFJlcXVlc3RNZXNzYWdlIHZhbHVlLCBmaW5hbCBCeXRlQnVmIGJ5dGVCdWYsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gV3JhcCBuZXR0eSdzIGJ1ZmZlcgorICAgICAgICBmaW5hbCBCdWZmZXIgYnVmZmVyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYnl0ZUJ1Zik7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIFZlcnNpb24KKyAgICAgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGUoR3JhcGhCaW5hcnlXcml0ZXIuVkVSU0lPTl9CWVRFKTsKKyAgICAgICAgICAgIC8vIFJlcXVlc3RJZAorICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldFJlcXVlc3RJZCgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIE9wCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0T3AoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgICAgICAvLyBQcm9jZXNzb3IKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRQcm9jZXNzb3IoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgICAgICAvLyBBcmdzCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0QXJncygpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9SZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvUmVzcG9uc2VNZXNzYWdlU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMDdjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvUmVzcG9uc2VNZXNzYWdlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5OworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWY7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLk5ldHR5QnVmZmVyRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZVN0YXR1c0NvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKK3B1YmxpYyBjbGFzcyBSZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBOZXR0eUJ1ZmZlckZhY3RvcnkgYnVmZmVyRmFjdG9yeSA9IG5ldyBOZXR0eUJ1ZmZlckZhY3RvcnkoKTsKKworICAgIHB1YmxpYyBSZXNwb25zZU1lc3NhZ2UgcmVhZFZhbHVlKGZpbmFsIEJ5dGVCdWYgYnl0ZUJ1ZiwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICAvLyBXcmFwIG5ldHR5J3MgYnVmZmVyCisgICAgICAgIGZpbmFsIEJ1ZmZlciBidWZmZXIgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShieXRlQnVmKTsKKyAgICAgICAgZmluYWwgaW50IHZlcnNpb24gPSBidWZmZXIucmVhZEJ5dGUoKSAmIDB4ZmY7CisKKyAgICAgICAgaWYgKHZlcnNpb24gPj4+IDcgIT0gMSkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHJlc3BvbnNlIGJ1ZmZlciB3YXMgaW5jb3JyZWN0bHkgYnVpbHQKKyAgICAgICAgICAgIC8vIE9yIHRoZSBidWZmZXIgb2Zmc2V0cyBhcmUgd3JvbmcKKyAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uKCJUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgc2hvdWxkIGJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCIpOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBSZXNwb25zZU1lc3NhZ2UuYnVpbGQoY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBVVUlELmNsYXNzLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLmdldEZyb21WYWx1ZShjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEludGVnZXIuY2xhc3MsIGZhbHNlKSkpCisgICAgICAgICAgICAgICAgICAgIC5zdGF0dXNNZXNzYWdlKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZXMoY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBNYXAuY2xhc3MsIGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgLnJlc3BvbnNlTWV0YURhdGEoY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBNYXAuY2xhc3MsIGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgLnJlc3VsdChjb250ZXh0LnJlYWQoYnVmZmVyKSkKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBSZXNwb25zZU1lc3NhZ2UgdmFsdWUsIGZpbmFsIEJ5dGVCdWYgYnl0ZUJ1ZiwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICAvLyBXcmFwIG5ldHR5J3MgYnVmZmVyCisgICAgICAgIGZpbmFsIEJ1ZmZlciBidWZmZXIgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShieXRlQnVmKTsKKworICAgICAgICBmaW5hbCBSZXNwb25zZVJlc3VsdCByZXN1bHQgPSB2YWx1ZS5nZXRSZXN1bHQoKTsKKyAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXMgc3RhdHVzID0gdmFsdWUuZ2V0U3RhdHVzKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIFZlcnNpb24KKyAgICAgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGUoR3JhcGhCaW5hcnlXcml0ZXIuVkVSU0lPTl9CWVRFKTsKKyAgICAgICAgICAgIC8vIE51bGxhYmxlIHJlcXVlc3QgaWQKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRSZXF1ZXN0SWQoKSwgYnVmZmVyLCB0cnVlKTsKKyAgICAgICAgICAgIC8vIFN0YXR1cyBjb2RlCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUoc3RhdHVzLmdldENvZGUoKS5nZXRWYWx1ZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIE51bGxhYmxlIHN0YXR1cyBtZXNzYWdlCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUoc3RhdHVzLmdldE1lc3NhZ2UoKSwgYnVmZmVyLCB0cnVlKTsKKyAgICAgICAgICAgIC8vIFN0YXR1cyBhdHRyaWJ1dGVzCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUoc3RhdHVzLmdldEF0dHJpYnV0ZXMoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgICAgICAvLyBSZXN1bHQgbWV0YQorICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHJlc3VsdC5nZXRNZXRhKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICAgICAgLy8gRnVsbHktcXVhbGlmaWVkIHZhbHVlCisgICAgICAgICAgICBjb250ZXh0LndyaXRlKHJlc3VsdC5nZXREYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3NpbXBsZS9XZWJTb2NrZXRDbGllbnQuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2ltcGxlL1dlYlNvY2tldENsaWVudC5qYXZhCmluZGV4IGNjN2RkOGYuLjM5NTAzMzkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2ltcGxlL1dlYlNvY2tldENsaWVudC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2ltcGxlL1dlYlNvY2tldENsaWVudC5qYXZhCkBAIC0yMCw2ICsyMCw3IEBACiAKIGltcG9ydCBpby5uZXR0eS5idWZmZXIuUG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcjsKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLkNoYW5uZWxPcHRpb247CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkVtcHR5SHR0cEhlYWRlcnM7CiBpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLk1lc3NhZ2VTZXJpYWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLmhhbmRsZXIuV2ViU29ja2V0Q2xpZW50SGFuZGxlcjsKQEAgLTY3LDcgKzY4LDcgQEAKICAgICAgICAgICAgIGZpbmFsIFdlYlNvY2tldENsaWVudEhhbmRsZXIgd3NIYW5kbGVyID0KICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYlNvY2tldENsaWVudEhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViU29ja2V0Q2xpZW50SGFuZHNoYWtlckZhY3RvcnkubmV3SGFuZHNoYWtlcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwgV2ViU29ja2V0VmVyc2lvbi5WMTMsIG51bGwsIGZhbHNlLCBIdHRwSGVhZGVycy5FTVBUWV9IRUFERVJTLCA2NTUzNikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLCBXZWJTb2NrZXRWZXJzaW9uLlYxMywgbnVsbCwgZmFsc2UsIEVtcHR5SHR0cEhlYWRlcnMuSU5TVEFOQ0UsIDY1NTM2KSk7CiAgICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoKTsKICAgICAgICAgICAgIGIuY2hhbm5lbChOaW9Tb2NrZXRDaGFubmVsLmNsYXNzKQogICAgICAgICAgICAgICAgICAgICAuaGFuZGxlcihuZXcgQ2hhbm5lbEluaXRpYWxpemVyPFNvY2tldENoYW5uZWw+KCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9BYnN0cmFjdFJlc3VsdFF1ZXVlVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9BYnN0cmFjdFJlc3VsdFF1ZXVlVGVzdC5qYXZhCmluZGV4IDNjODRjYTYuLjMwMmZkYTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQWJzdHJhY3RSZXN1bHRRdWV1ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0Fic3RyYWN0UmVzdWx0UXVldWVUZXN0LmphdmEKQEAgLTIwLDYgKzIwLDcgQEAKIAogaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CiAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmU7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ291bnREb3duTGF0Y2g7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlOwpAQCAtODQsNyArODUsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1hcmtEb25lKSByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgICAgIGlmIChtYXJrRG9uZSkgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpOwogCiAgICAgICAgIH0sICJSZXN1bHRRdWV1ZVRlc3Qtam9iLXN1Ym1pdHRlciIpOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFF1ZXVlVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRRdWV1ZVRlc3QuamF2YQppbmRleCBiYWI2OGRkLi43NWFmYjc0IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFF1ZXVlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVzdWx0UXVldWVUZXN0LmphdmEKQEAgLTQ1LDYgKzQ1LDEwIEBACiAgKi8KIHB1YmxpYyBjbGFzcyBSZXN1bHRRdWV1ZVRlc3QgZXh0ZW5kcyBBYnN0cmFjdFJlc3VsdFF1ZXVlVGVzdCB7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gQVRUUklCVVRFUyA9IG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCkge3sKKyAgICAgICAgcHV0KCJ0aGlzIiwgInRoYXQiKTsKKyAgICB9fTsKKwogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkR2V0U2l6ZVVudGlsRXJyb3IoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgVGhyZWFkIHQgPSBhZGRUb1F1ZXVlKDEwMCwgMTAsIHRydWUsIGZhbHNlLCAxKTsKQEAgLTEzNSw3ICsxMzksNyBAQAogICAgICAgICByZXN1bHRRdWV1ZS5hZGQobmV3IFJlc3VsdCgidGVzdDMiKSk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChmdXR1cmUuaXNEb25lKCksIGlzKGZhbHNlKSk7Ci0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAgICAgICAgIGFzc2VydFRoYXQoZnV0dXJlLmlzRG9uZSgpLCBpcyh0cnVlKSk7CiAKICAgICAgICAgZmluYWwgTGlzdDxSZXN1bHQ+IHJlc3VsdHMgPSBmdXR1cmUuZ2V0KCk7CkBAIC0xNDUsNiArMTQ5LDcgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHJlc3VsdHMuc2l6ZSgpKTsKIAogICAgICAgICBhc3NlcnRUaGF0KHJlc3VsdFF1ZXVlLmlzRW1wdHkoKSwgaXModHJ1ZSkpOworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0yNDIsNyArMjQ3LDcgQEAKICAgICAgICAgcmVzdWx0UXVldWUuYWRkKG5ldyBSZXN1bHQoInRlc3QyIikpOwogICAgICAgICByZXN1bHRRdWV1ZS5hZGQobmV3IFJlc3VsdCgidGVzdDMiKSk7CiAKLSAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKCk7CisgICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZShBVFRSSUJVVEVTKTsKIAogICAgICAgICAvLyB5b3UgbWlnaHQgd2FudCAzMCBidXQgdGhlcmUgYXJlIG9ubHkgdGhyZWUKICAgICAgICAgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8TGlzdDxSZXN1bHQ+PiBmdXR1cmUgPSByZXN1bHRRdWV1ZS5hd2FpdCgzMCk7CkBAIC0yNTUsNiArMjYwLDcgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHJlc3VsdHMuc2l6ZSgpKTsKIAogICAgICAgICBhc3NlcnRUaGF0KHJlc3VsdFF1ZXVlLmlzRW1wdHkoKSwgaXModHJ1ZSkpOworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0zMDcsMTIgKzMxMywxNCBAQAogICAgICAgICByZXN1bHRRdWV1ZS5hZGRTaWRlRWZmZWN0KFRva2Vucy5WQUxfQUdHUkVHQVRFX1RPX0JVTEtTRVQsIG5ldyBEZWZhdWx0UmVtb3RlVHJhdmVyc2VyPD4oImJlbGluZGEiLCA2KSk7CiAgICAgICAgIGFzc2VydFRoYXQoby5pc0RvbmUoKSwgaXMoZmFsc2UpKTsKIAotICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKEFUVFJJQlVURVMpOwogCiAgICAgICAgIGFzc2VydFRoYXQoby5pc0RvbmUoKSwgaXModHJ1ZSkpOwogICAgICAgICBmaW5hbCBCdWxrU2V0PFN0cmluZz4gYnVsa1NldCA9IG8uZ2V0KCkuZ2V0KDApLmdldChCdWxrU2V0LmNsYXNzKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIGJ1bGtTZXQuZ2V0KCJicmlhbiIpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIGJ1bGtTZXQuZ2V0KCJiZWxpbmRhIikpOworCisgICAgICAgIGFzc2VydEVxdWFscygidGhhdCIsIHJlc3VsdFF1ZXVlLmdldFN0YXR1c0F0dHJpYnV0ZXMoKS5nZXQoInRoaXMiKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTMyOSwxMyArMzM3LDE1IEBACiAgICAgICAgIHJlc3VsdFF1ZXVlLmFkZFNpZGVFZmZlY3QoVG9rZW5zLlZBTF9BR0dSRUdBVEVfVE9fTElTVCwgImRhdmUiKTsKICAgICAgICAgYXNzZXJ0VGhhdChvLmlzRG9uZSgpLCBpcyhmYWxzZSkpOwogCi0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChvLmlzRG9uZSgpLCBpcyh0cnVlKSk7CiAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBsaXN0ID0gby5nZXQoKS5nZXQoMCkuZ2V0KEFycmF5TGlzdC5jbGFzcyk7CiAgICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIGxpc3QuZ2V0KDApKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJkYW5pZWwiLCBsaXN0LmdldCgxKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygiZGF2ZSIsIGxpc3QuZ2V0KDIpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0zNTIsMTMgKzM2MiwxNSBAQAogICAgICAgICByZXN1bHRRdWV1ZS5hZGRTaWRlRWZmZWN0KFRva2Vucy5WQUxfQUdHUkVHQVRFX1RPX1NFVCwgImRhdmUiKTsKICAgICAgICAgYXNzZXJ0VGhhdChvLmlzRG9uZSgpLCBpcyhmYWxzZSkpOwogCi0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChvLmlzRG9uZSgpLCBpcyh0cnVlKSk7CiAgICAgICAgIGZpbmFsIFNldDxTdHJpbmc+IHNldCA9IG8uZ2V0KCkuZ2V0KDApLmdldChIYXNoU2V0LmNsYXNzKTsKICAgICAgICAgYXNzZXJ0VGhhdChzZXQuY29udGFpbnMoInN0ZXBoZW4iKSwgaXModHJ1ZSkpOwogICAgICAgICBhc3NlcnRUaGF0KHNldC5jb250YWlucygiZGFuaWVsIiksIGlzKHRydWUpKTsKICAgICAgICAgYXNzZXJ0VGhhdChzZXQuY29udGFpbnMoImRhdmUiKSwgaXModHJ1ZSkpOworCisgICAgICAgIGFzc2VydEVxdWFscygidGhhdCIsIHJlc3VsdFF1ZXVlLmdldFN0YXR1c0F0dHJpYnV0ZXMoKS5nZXQoInRoaXMiKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTM3NiwxMyArMzg4LDE1IEBACiAgICAgICAgICAgICBhc3NlcnRUaGF0KG8uaXNEb25lKCksIGlzKGZhbHNlKSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChvLmlzRG9uZSgpLCBpcyh0cnVlKSk7CiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gbGlzdCA9IG8uZ2V0KCkuZ2V0KDApLmdldChIYXNoTWFwLmNsYXNzKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgbGlzdC5nZXQoInMiKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygiZGFuaWVsIiwgbGlzdC5nZXQoImQiKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFya28iLCBsaXN0LmdldCgibSIpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogCkBAIC0zOTgsMTIgKzQxMiwxNCBAQAogCiAgICAgICAgIHJlc3VsdFF1ZXVlLmFkZFNpZGVFZmZlY3QoVG9rZW5zLlZBTF9BR0dSRUdBVEVfVE9fTk9ORSwgbSk7CiAKLSAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKCk7CisgICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZShBVFRSSUJVVEVTKTsKIAogICAgICAgICBhc3NlcnRUaGF0KG8uaXNEb25lKCksIGlzKHRydWUpKTsKICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBsaXN0ID0gby5nZXQoKS5nZXQoMCkuZ2V0KEhhc2hNYXAuY2xhc3MpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCBsaXN0LmdldCgicyIpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJkYW5pZWwiLCBsaXN0LmdldCgiZCIpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIGxpc3QuZ2V0KCJtIikpOworCisgICAgICAgIGFzc2VydEVxdWFscygidGhhdCIsIHJlc3VsdFF1ZXVlLmdldFN0YXR1c0F0dHJpYnV0ZXMoKS5nZXQoInRoaXMiKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRTZXRUZXN0LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFNldFRlc3QuamF2YQppbmRleCAwY2Y0ZmI1Li40NGYxM2U0IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFNldFRlc3QuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFNldFRlc3QuamF2YQpAQCAtMjIsOCArMjIsMTAgQEAKIGltcG9ydCBvcmcuanVuaXQuQmVmb3JlOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CiBpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmU7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQ7CkBAIC00MSw2ICs0MywxMCBAQAogICovCiBwdWJsaWMgY2xhc3MgUmVzdWx0U2V0VGVzdCBleHRlbmRzIEFic3RyYWN0UmVzdWx0UXVldWVUZXN0IHsKIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBBVFRSSUJVVEVTID0gbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKSB7eworICAgICAgICBwdXQoInRoaXMiLCAidGhhdCIpOworICAgIH19OworCiAgICAgcHJpdmF0ZSBSZXN1bHRTZXQgcmVzdWx0U2V0OwogCiAgICAgQEJlZm9yZQpAQCAtNDksNiArNTUsMTMgQEAKICAgICB9CiAKICAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFJldHVybkVtcHR5TWFwRm9yTm9SZXNwb25zZUF0dHJpYnV0ZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8TWFwPFN0cmluZyxPYmplY3Q+PiBhdHRycyA9IHJlc3VsdFNldC5zdGF0dXNBdHRyaWJ1dGVzKCk7CisgICAgICAgIHJlYWRDb21wbGV0ZWQuY29tcGxldGUobnVsbCk7CisgICAgICAgIGFzc2VydFRoYXQoYXR0cnMuZ2V0KCkuaXNFbXB0eSgpLCBpcyh0cnVlKSk7CisgICAgfQorCisgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIYXZlQWxsSXRlbXNBdmFpbGFibGVBc3luY2hyb25vdXNseU9uUmVhZENvbXBsZXRlKCkgewogICAgICAgICBmaW5hbCBDb21wbGV0YWJsZUZ1dHVyZTxWb2lkPiBhbGwgPSByZXN1bHRTZXQuYWxsSXRlbXNBdmFpbGFibGVBc3luYygpOwogICAgICAgICBhc3NlcnRUaGF0KGFsbC5pc0RvbmUoKSwgaXMoZmFsc2UpKTsKQEAgLTEwNyw3ICsxMjAsNyBAQAogICAgICAgICByZXN1bHRRdWV1ZS5hZGQobmV3IFJlc3VsdCgidGVzdDMiKSk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChmdXR1cmUuaXNEb25lKCksIGlzKGZhbHNlKSk7Ci0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAgICAgICAgIGFzc2VydFRoYXQoZnV0dXJlLmlzRG9uZSgpLCBpcyh0cnVlKSk7CiAKICAgICAgICAgZmluYWwgTGlzdDxSZXN1bHQ+IHJlc3VsdHMgPSBmdXR1cmUuZ2V0KCk7CkBAIC0xMTgsNiArMTMxLDggQEAKIAogICAgICAgICBhc3NlcnRUaGF0KHJlc3VsdFNldC5hbGxJdGVtc0F2YWlsYWJsZSgpLCBpcyh0cnVlKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygwLCByZXN1bHRTZXQuZ2V0QXZhaWxhYmxlSXRlbUNvdW50KCkpOworCisgICAgICAgIGFzc2VydEVxdWFscygidGhhdCIsIHJlc3VsdFF1ZXVlLmdldFN0YXR1c0F0dHJpYnV0ZXMoKS5nZXQoInRoaXMiKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTEyOCw3ICsxNDMsNyBAQAogICAgICAgICByZXN1bHRRdWV1ZS5hZGQobmV3IFJlc3VsdCgidGVzdDMiKSk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChmdXR1cmUuaXNEb25lKCksIGlzKGZhbHNlKSk7Ci0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAKICAgICAgICAgZmluYWwgTGlzdDxSZXN1bHQ+IHJlc3VsdHMgPSBmdXR1cmUuZ2V0KCk7CiAgICAgICAgIGFzc2VydEVxdWFscygidGVzdDEiLCByZXN1bHRzLmdldCgwKS5nZXRTdHJpbmcoKSk7CkBAIC0xMzksNiArMTU0LDggQEAKICAgICAgICAgYXNzZXJ0VGhhdChmdXR1cmUuaXNEb25lKCksIGlzKHRydWUpKTsKICAgICAgICAgYXNzZXJ0VGhhdChyZXN1bHRTZXQuYWxsSXRlbXNBdmFpbGFibGUoKSwgaXModHJ1ZSkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMCwgcmVzdWx0U2V0LmdldEF2YWlsYWJsZUl0ZW1Db3VudCgpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvblRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjBhMGQzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvblRlc3QuamF2YQpAQCAtMCwwICsxLDUzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVxdWVzdE9wdGlvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5VVUlEOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIERyaXZlclJlbW90ZUNvbm5lY3Rpb25UZXN0IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gRW1wdHlHcmFwaC5pbnN0YW5jZSgpLnRyYXZlcnNhbCgpOworCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRCdWlsZFJlcXVlc3RPcHRpb25zKCkgeworICAgICAgICBmaW5hbCBVVUlEIHJlcXVlc3RJZCA9IFVVSUQuZnJvbVN0cmluZygiMzRhOWY0NWYtODg1NC00ZDMzLThiNDAtOTJhODE3MWVlNDk1Iik7CisgICAgICAgIGZpbmFsIFJlcXVlc3RPcHRpb25zIG9wdGlvbnMgPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uLmdldFJlcXVlc3RPcHRpb25zKAorICAgICAgICAgICAgICAgIGcud2l0aCgieCIpLgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCgieSIsIDEwMCkuCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoKFRva2Vucy5BUkdTX0JBVENIX1NJWkUsIDEwMDApLgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aChUb2tlbnMuUkVRVUVTVF9JRCwgcmVxdWVzdElkKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgoVG9rZW5zLkFSR1NfU0NSSVBUX0VWQUxfVElNRU9VVCwgMTAwMDAwTCkuCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoKFRva2Vucy5BUkdTX1VTRVJfQUdFTlQsICJ0ZXN0IikuCisgICAgICAgICAgICAgICAgICAgICAgICBWKCkuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMocmVxdWVzdElkLCBvcHRpb25zLmdldE92ZXJyaWRlUmVxdWVzdElkKCkuZ2V0KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMTAwMCwgb3B0aW9ucy5nZXRCYXRjaFNpemUoKS5nZXQoKS5pbnRWYWx1ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEwMDAwMEwsIG9wdGlvbnMuZ2V0VGltZW91dCgpLmdldCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0Iiwgb3B0aW9ucy5nZXRVc2VyQWdlbnQoKS5nZXQoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBUZXN0LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMFRlc3QuamF2YQppbmRleCAwYmRjMDhkLi5kYzIzMTc5IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMFRlc3QuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMFRlc3QuamF2YQpAQCAtMTgsNiArMTgsMTEgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXI7CiAKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTGV2ZWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuTWVzc2FnZVNlcmlhbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlU3RhdHVzQ29kZTsKQEAgLTM1LDExICs0MCwxMyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OVG9rZW5zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OVmVyc2lvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTldyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlhNb2R1bGVWMmQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckZhY3Rvcnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdGlvbkV4Y2VwdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5jb3JlLkpzb25HZW5lcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuSnNvbk1hcHBpbmdFeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuSnNvbk5vZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuT2JqZWN0TWFwcGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLlNlcmlhbGl6ZXJQcm92aWRlcjsKQEAgLTY0LDYgKzcxLDcgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXMuaXM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdE51bGw7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOwogCiAvKioKQEAgLTcyLDYgKzgwLDcgQEAKICAqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KK0BTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQogcHVibGljIGNsYXNzIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwVGVzdCB7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIFNFUklBTElaRVIgPSBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAoKTsKQEAgLTc5LDYgKzg4LDEwIEBACiAgICAgICAgICAgICAub3ZlcnJpZGVSZXF1ZXN0SWQoVVVJRC5mcm9tU3RyaW5nKCIyRDYyMTYxQi05NTQ0LTRGMzktQUY0NC02MkVDNDlGOUE1OTUiKSkuY3JlYXRlKCk7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT2JqZWN0TWFwcGVyIG1hcHBlciA9IG5ldyBPYmplY3RNYXBwZXIoKTsKIAorICAgIHByaXZhdGUgZmluYWwgVVVJRCByZXF1ZXN0SWQgPSBVVUlELmZyb21TdHJpbmcoIjY0NTcyNzJBLTQwMTgtNDUzOC1COUFFLTA4REQ1RERDMEFBMSIpOworICAgIHByaXZhdGUgZmluYWwgUmVzcG9uc2VNZXNzYWdlLkJ1aWxkZXIgcmVzcG9uc2VNZXNzYWdlQnVpbGRlciA9IFJlc3BvbnNlTWVzc2FnZS5idWlsZChyZXF1ZXN0SWQpOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIEJ5dGVCdWZBbGxvY2F0b3IgYWxsb2NhdG9yID0gVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yLkRFRkFVTFQ7CisKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbmZpZ3VyZUlvUmVnaXN0cnkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYxZDAgc2VyaWFsaXplciA9IG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjFkMCgpOwpAQCAtMzYzLDcgKzM3Niw2IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZERlc2VyaWFsaXplUmVxdWVzdE5pY2VseVdpdGhBcmdzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIHNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAoKTsKICAgICAgICAgZmluYWwgVVVJRCByZXF1ZXN0ID0gVVVJRC5mcm9tU3RyaW5nKCIwMTFDRkVFOS1GNjQwLTQ4NDQtQUM5My0wMzQ0NDhBQzBFODAiKTsKICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbSA9IFNFUklBTElaRVIuZGVzZXJpYWxpemVSZXF1ZXN0KFN0cmluZy5mb3JtYXQoIntcInJlcXVlc3RJZFwiOlwiJXNcIixcIm9wXCI6XCJldmFsXCIsXCJhcmdzXCI6e1wieFwiOlwieVwifX0iLCByZXF1ZXN0KSk7CiAgICAgICAgIGFzc2VydEVxdWFscyhyZXF1ZXN0LCBtLmdldFJlcXVlc3RJZCgpKTsKQEAgLTU0MCw2ICs1NTIsNDcgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKHJlc3BvbnNlTWVzc2FnZS5nZXRTdGF0dXMoKS5nZXRNZXNzYWdlKCksIHJlc3BvbnNlTWVzc2FnZVJlYWQuZ2V0U3RhdHVzKCkuZ2V0TWVzc2FnZSgpKTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlZ2lzdGVyR3JlbWxpblNlcnZlck1vZHVsZUF1dG9tYXRpY2FsbHlXaXRoTWFwcGVyKCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIgPSBHcmFwaFNPTk1hcHBlci5idWlsZCgpLmFkZEN1c3RvbU1vZHVsZShHcmFwaFNPTlhNb2R1bGVWMmQwLmJ1aWxkKCkuY3JlYXRlKGZhbHNlKSk7CisgICAgICAgIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIGdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwID0gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKGJ1aWxkZXIpOworCisgICAgICAgIFJlc3BvbnNlTWVzc2FnZSBybSA9IGNvbnZlcnQoImhlbGxvIiwgZ3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDApOworICAgICAgICBhc3NlcnRFcXVhbHMocm0uZ2V0UmVxdWVzdElkKCksIHJlcXVlc3RJZCk7CisgICAgICAgIGFzc2VydEVxdWFscyhybS5nZXRSZXN1bHQoKS5nZXREYXRhKCksICJoZWxsbyIpOworICAgIH0KKworCisgICAgQFRlc3QKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiZGVwcmVjYXRpb24iKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZhaWxPbk1lc3NhZ2VTZXJpYWxpemVyV2l0aE1hcHBlcklmTm9HcmVtbGluU2VydmVyTW9kdWxlKCkgeworICAgICAgICBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlciBsb2dnZXIgPSBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlci5nZXRMb2dnZXIoQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5jbGFzcyk7CisgICAgICAgIExldmVsIHByZXZpb3VzTGV2ZWwgPSBsb2dnZXIuZ2V0TGV2ZWwoKTsKKworICAgICAgICAvLyBEaXNhYmxlIHRlbXBvcmFyaWx5IGxvZ2dpbmcgZm9yIHRoaXMgdGVzdAorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwoTGV2ZWwuT0ZGKTsKKworICAgICAgICBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIgPSBHcmFwaFNPTk1hcHBlci5idWlsZCgpLmFkZEN1c3RvbU1vZHVsZShHcmFwaFNPTlhNb2R1bGVWMmQwLmJ1aWxkKCkuY3JlYXRlKGZhbHNlKSk7CisgICAgICAgIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIGdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwID0gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKGJ1aWxkZXIuY3JlYXRlKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb252ZXJ0KCJoZWxsbyIsIGdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKTsKKyAgICAgICAgICAgIGZhaWwoIlNlcmlhbGl6YXRpb24gc2hvdWxkIGhhdmUgZmFpbGVkIHNpbmNlIG5vIEdyZW1saW5TZXJ2ZXJNb2R1bGUgcmVnaXN0ZXJlZC4iKTsKKyAgICAgICAgfSBjYXRjaCAoU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGUuZ2V0TWVzc2FnZSgpLmNvbnRhaW5zKCJDb3VsZCBub3QgZmluZCBhIHR5cGUgaWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIikpOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShlLmdldENhdXNlKCkgaW5zdGFuY2VvZiBKc29uTWFwcGluZ0V4Y2VwdGlvbik7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGUuZ2V0Q2F1c2UoKS5nZXRDYXVzZSgpIGluc3RhbmNlb2YgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1dCBsb2dnZXIgbGV2ZWwgYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKHByZXZpb3VzTGV2ZWwpOworICAgIH0KKworICAgIHByaXZhdGUgUmVzcG9uc2VNZXNzYWdlIGNvbnZlcnQoZmluYWwgT2JqZWN0IHRvU2VyaWFsaXplLCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYmIgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkocmVzcG9uc2VNZXNzYWdlQnVpbGRlci5yZXN1bHQodG9TZXJpYWxpemUpLmNyZWF0ZSgpLCBhbGxvY2F0b3IpOworICAgICAgICByZXR1cm4gc2VyaWFsaXplci5kZXNlcmlhbGl6ZVJlc3BvbnNlKGJiKTsKKyAgICB9CisKICAgICBwcml2YXRlIGNsYXNzIEZ1bk9iamVjdCB7CiAgICAgICAgIHByaXZhdGUgU3RyaW5nIHZhbDsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDBUZXN0LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMFRlc3QuamF2YQppbmRleCA4OGRmY2YwLi4wMGM1YjJlIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMFRlc3QuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMFRlc3QuamF2YQpAQCAtMjEsNiArMjEsOCBAQAogaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmOwogaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmQWxsb2NhdG9yOwogaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5VbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5MZXZlbDsKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5NZXNzYWdlU2VyaWFsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlOwpAQCAtMzIsOSArMzQsMTIgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05NYXBwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05YTW9kdWxlVjNkMDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJGYWN0b3J5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLkpzb25NYXBwaW5nRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKQEAgLTQ4LDYgKzUzLDcgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0Tm90TnVsbDsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROdWxsOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKIAogLyoqCkBAIC01NSw2ICs2MSw3IEBACiAgKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCitAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKIHB1YmxpYyBjbGFzcyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMFRlc3QgewogCiAgICAgcHJpdmF0ZSBmaW5hbCBVVUlEIHJlcXVlc3RJZCA9IFVVSUQuZnJvbVN0cmluZygiNjQ1NzI3MkEtNDAxOC00NTM4LUI5QUUtMDhERDVEREMwQUExIik7CkBAIC0zMzcsMTQgKzM0NCw1MiBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoImJ5dGVjb2RlIiwgbS5nZXRPcCgpKTsKICAgICAgICAgYXNzZXJ0Tm90TnVsbChtLmdldEFyZ3MoKSk7CiAgICAgfQotICAgIAorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZWdpc3RlckdyZW1saW5TZXJ2ZXJNb2R1bGVBdXRvbWF0aWNhbGx5V2l0aE1hcHBlcigpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gR3JhcGhTT05NYXBwZXIuYnVpbGQoKS5hZGRDdXN0b21Nb2R1bGUoR3JhcGhTT05YTW9kdWxlVjNkMC5idWlsZCgpLmNyZWF0ZShmYWxzZSkpOworICAgICAgICBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCBncmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCA9IG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMChidWlsZGVyKTsKKworICAgICAgICBSZXNwb25zZU1lc3NhZ2Ugcm0gPSBjb252ZXJ0KCJoZWxsbyIsIGdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHJtLmdldFJlcXVlc3RJZCgpLCByZXF1ZXN0SWQpOworICAgICAgICBhc3NlcnRFcXVhbHMocm0uZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpLCAiaGVsbG8iKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZhaWxPbk1lc3NhZ2VTZXJpYWxpemVyV2l0aE1hcHBlcklmTm9HcmVtbGluU2VydmVyTW9kdWxlKCkgeworICAgICAgICBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyLmdldExvZ2dlcihBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmNsYXNzKTsKKyAgICAgICAgTGV2ZWwgcHJldmlvdXNMZXZlbCA9IGxvZ2dlci5nZXRMZXZlbCgpOworCisgICAgICAgIC8vIERpc2FibGUgdGVtcG9yYXJpbHkgbG9nZ2luZyBmb3IgdGhpcyB0ZXN0CisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChMZXZlbC5PRkYpOworCisgICAgICAgIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgYnVpbGRlciA9IEdyYXBoU09OTWFwcGVyLmJ1aWxkKCkuYWRkQ3VzdG9tTW9kdWxlKEdyYXBoU09OWE1vZHVsZVYzZDAuYnVpbGQoKS5jcmVhdGUoZmFsc2UpKTsKKyAgICAgICAgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAgZ3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAgPSBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAoYnVpbGRlci5jcmVhdGUoKSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnZlcnQoImhlbGxvIiwgZ3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDApOworICAgICAgICAgICAgZmFpbCgiU2VyaWFsaXphdGlvbiBzaG91bGQgaGF2ZSBmYWlsZWQgc2luY2Ugbm8gR3JlbWxpblNlcnZlck1vZHVsZSByZWdpc3RlcmVkLiIpOworICAgICAgICB9IGNhdGNoIChTZXJpYWxpemF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGFzc2VydFRydWUoZS5nZXRNZXNzYWdlKCkuY29udGFpbnMoIkNvdWxkIG5vdCBmaW5kIGEgdHlwZSBpZGVudGlmaWVyIGZvciB0aGUgY2xhc3MiKSk7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGUuZ2V0Q2F1c2UoKSBpbnN0YW5jZW9mIEpzb25NYXBwaW5nRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGFzc2VydFRydWUoZS5nZXRDYXVzZSgpLmdldENhdXNlKCkgaW5zdGFuY2VvZiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24pOworICAgICAgICB9CisKKyAgICAgICAgLy8gUHV0IGxvZ2dlciBsZXZlbCBiYWNrIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZQorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwocHJldmlvdXNMZXZlbCk7CisgICAgfQorCiAgICAgcHJpdmF0ZSB2b2lkIGFzc2VydENvbW1vbihmaW5hbCBSZXNwb25zZU1lc3NhZ2UgcmVzcG9uc2UpIHsKICAgICAgICAgYXNzZXJ0RXF1YWxzKHJlcXVlc3RJZCwgcmVzcG9uc2UuZ2V0UmVxdWVzdElkKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoUmVzcG9uc2VTdGF0dXNDb2RlLlNVQ0NFU1MsIHJlc3BvbnNlLmdldFN0YXR1cygpLmdldENvZGUoKSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBSZXNwb25zZU1lc3NhZ2UgY29udmVydChmaW5hbCBPYmplY3QgdG9TZXJpYWxpemUpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICBwcml2YXRlIFJlc3BvbnNlTWVzc2FnZSBjb252ZXJ0KGZpbmFsIE9iamVjdCB0b1NlcmlhbGl6ZSwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplcikgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24gewogICAgICAgICBmaW5hbCBCeXRlQnVmIGJiID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KHJlc3BvbnNlTWVzc2FnZUJ1aWxkZXIucmVzdWx0KHRvU2VyaWFsaXplKS5jcmVhdGUoKSwgYWxsb2NhdG9yKTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXNwb25zZShiYik7CiAgICAgfQorCisgICAgcHJpdmF0ZSBSZXNwb25zZU1lc3NhZ2UgY29udmVydChmaW5hbCBPYmplY3QgdG9TZXJpYWxpemUpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnQodG9TZXJpYWxpemUsIHRoaXMuc2VyaWFsaXplcik7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvTmV0dHlCdWZmZXJGYWN0b3J5VGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvTmV0dHlCdWZmZXJGYWN0b3J5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyM2IyODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9OZXR0eUJ1ZmZlckZhY3RvcnlUZXN0LmphdmEKQEAgLTAsMCArMSwzODUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlcjsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmOworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5VbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgaW8ubmV0dHkudXRpbC5SZWZlcmVuY2VDb3VudGVkOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuanVuaXQuQWZ0ZXJDbGFzczsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdFNhbWU7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0U2FtZTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCitwdWJsaWMgY2xhc3MgTmV0dHlCdWZmZXJGYWN0b3J5VGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBOZXR0eUJ1ZmZlckZhY3RvcnkgZmFjdG9yeSA9IG5ldyBOZXR0eUJ1ZmZlckZhY3RvcnkoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IG5ldyBVbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3IoZmFsc2UpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExpc3Q8Qnl0ZUJ1Zj4gcmF3SW5zdGFuY2VzID0gbmV3IEFycmF5TGlzdDw+KCk7CisKKyAgICBAQWZ0ZXJDbGFzcworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZWFyRG93bigpIHsKKyAgICAgICAgcmF3SW5zdGFuY2VzLmZvckVhY2goUmVmZXJlbmNlQ291bnRlZDo6cmVsZWFzZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgQnl0ZUJ1ZiBnZXRSYXcoKSB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgcmF3ID0gYWxsb2NhdG9yLmJ1ZmZlcigyNTYpOworICAgICAgICByYXdJbnN0YW5jZXMuYWRkKHJhdyk7CisgICAgICAgIHJldHVybiByYXc7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXR1cm5BV3JhcHBlcigpIHsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiByYXcgPSBnZXRSYXcoKTsKKyAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGZhY3RvcnkuY3JlYXRlKHJhdyk7CisgICAgICAgIGFzc2VydEVxdWFscyhyYXcucmVmQ250KCksIGJ1ZmZlci5yZWZlcmVuY2VDb3VudCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEFkdmFuY2VXcml0ZXJBbmRSZWFkZXJJbmRleCgpIHsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiByYXcgPSBnZXRSYXcoKTsKKyAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGZhY3RvcnkuY3JlYXRlKHJhdyk7CisKKyAgICAgICAgZmluYWwgaW50IGludFZhbHVlID0gMTAwOworICAgICAgICBmaW5hbCBsb25nIGxvbmdWYWx1ZSA9IDIwMTlMOworICAgICAgICBmaW5hbCBmbG9hdCBmbG9hdFZhbHVlID0gMTAuOUY7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGJ1ZmZlci53cml0ZXJJbmRleCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGJ1ZmZlci5yZWFkZXJJbmRleCgpKTsKKworICAgICAgICBidWZmZXIud3JpdGVCb29sZWFuKHRydWUpOworICAgICAgICBidWZmZXIud3JpdGVJbnQoaW50VmFsdWUpOworICAgICAgICBidWZmZXIud3JpdGVMb25nKGxvbmdWYWx1ZSk7CisgICAgICAgIGJ1ZmZlci53cml0ZUZsb2F0KGZsb2F0VmFsdWUpOworCisgICAgICAgIGFzc2VydEVxdWFscygxNywgYnVmZmVyLndyaXRlckluZGV4KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgYnVmZmVyLnJlYWRlckluZGV4KCkpOworCisgICAgICAgIGFzc2VydFRydWUoYnVmZmVyLnJlYWRCb29sZWFuKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoaW50VmFsdWUsIGJ1ZmZlci5yZWFkSW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMobG9uZ1ZhbHVlLCBidWZmZXIucmVhZExvbmcoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhmbG9hdFZhbHVlLCBidWZmZXIucmVhZEZsb2F0KCksIDBmKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMTcsIGJ1ZmZlci53cml0ZXJJbmRleCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDE3LCBidWZmZXIucmVhZGVySW5kZXgoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCByZWFkUmF3U2hvdWxkQWR2YW5jZVJlYWRlckluZGV4QW5kUmVsZWFzZUl0KCkgeworICAgICAgICBmaW5hbCBpbnQgaW50VmFsdWUgPSA1OworICAgICAgICBmaW5hbCBGYWtlQnVmZmVyIGZha2VCdWZmZXIgPSBuZXcgRmFrZUJ1ZmZlcigpOworICAgICAgICBmYWtlQnVmZmVyLndyaXRlSW50KGludFZhbHVlKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIGZha2VCdWZmZXIud3JpdGVySW5kZXgoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBmYWtlQnVmZmVyLnJlYWRlckluZGV4KCkpOworICAgICAgICBmaW5hbCBCeXRlQnVmW10gY2FwdHVyZWQgPSBuZXcgQnl0ZUJ1ZlsxXTsKKworICAgICAgICBOZXR0eUJ1ZmZlckZhY3RvcnkucmVhZFJhdyhmYWtlQnVmZmVyLCBieXRlQnVmIC0+IHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhpbnRWYWx1ZSwgYnl0ZUJ1Zi5yZWFkSW50KCkpOworICAgICAgICAgICAgYXNzZXJ0Tm90U2FtZShieXRlQnVmLCBmYWtlQnVmZmVyLmdldFVuZGVybHlpbmdSYXcoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgYnl0ZUJ1Zi5yZWZDbnQoKSk7CisgICAgICAgICAgICBjYXB0dXJlZFswXSA9IGJ5dGVCdWY7CisgICAgICAgIH0pOworCisgICAgICAgIGFzc2VydEVxdWFscyg0LCBmYWtlQnVmZmVyLndyaXRlckluZGV4KCkpOworCisgICAgICAgIC8vIFRoZSByZWFkZXIgaW5kZXggYWR2YW5jZWQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIGZha2VCdWZmZXIucmVhZGVySW5kZXgoKSk7CisKKyAgICAgICAgLy8gU2hvdWxkIGJlIHJlbGVhc2VkIGFmdGVyd2FyZHMKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGNhcHR1cmVkWzBdLnJlZkNudCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHdyaXRlUmF3U2hvdWxkQWR2YW5jZVdyaXRlckluZGV4QW5kUmVsZWFzZUl0KCkgeworICAgICAgICBmaW5hbCBpbnQgaW50VmFsdWUxID0gMzE0OworICAgICAgICBmaW5hbCBpbnQgaW50VmFsdWUyID0gMzE0OworICAgICAgICBmaW5hbCBGYWtlQnVmZmVyIGZha2VCdWZmZXIgPSBuZXcgRmFrZUJ1ZmZlcigpOworCisgICAgICAgIGZha2VCdWZmZXIud3JpdGVJbnQoaW50VmFsdWUxKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIGZha2VCdWZmZXIud3JpdGVySW5kZXgoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBmYWtlQnVmZmVyLnJlYWRlckluZGV4KCkpOworICAgICAgICBmaW5hbCBCeXRlQnVmW10gY2FwdHVyZWQgPSBuZXcgQnl0ZUJ1ZlsxXTsKKworICAgICAgICBOZXR0eUJ1ZmZlckZhY3Rvcnkud3JpdGVSYXcoZmFrZUJ1ZmZlciwgYnl0ZUJ1ZiAtPiB7CisgICAgICAgICAgICBieXRlQnVmLndyaXRlSW50KGludFZhbHVlMik7CisgICAgICAgICAgICBhc3NlcnROb3RTYW1lKGJ5dGVCdWYsIGZha2VCdWZmZXIuZ2V0VW5kZXJseWluZ1JhdygpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBieXRlQnVmLnJlZkNudCgpKTsKKyAgICAgICAgICAgIGNhcHR1cmVkWzBdID0gYnl0ZUJ1ZjsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gVGhlIHdyaXRlciBpbmRleCBhZHZhbmNlZAorICAgICAgICBhc3NlcnRFcXVhbHMoOCwgZmFrZUJ1ZmZlci53cml0ZXJJbmRleCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGZha2VCdWZmZXIucmVhZGVySW5kZXgoKSk7CisKKyAgICAgICAgLy8gU2hvdWxkIGhhdmUgcGFpbnRlZCB0aGUgdW5kZXJseWluZyBieXRlcworICAgICAgICBhc3NlcnRFcXVhbHMoaW50VmFsdWUxLCBmYWtlQnVmZmVyLnJlYWRJbnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhpbnRWYWx1ZTIsIGZha2VCdWZmZXIucmVhZEludCgpKTsKKworICAgICAgICAvLyBTaG91bGQgYmUgcmVsZWFzZWQgYWZ0ZXJ3YXJkcworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgY2FwdHVyZWRbMF0ucmVmQ250KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgcmVhZFJhd1Nob3VsZFVzZVRoZVNhbWVCdWZmZXJXaGVuTmV0dHlCdWZmZXIoKSB7CisgICAgICAgIGZpbmFsIE5ldHR5QnVmZmVyIHdyYXBwZXJCdWZmZXIgPSBuZXcgTmV0dHlCdWZmZXIoYWxsb2NhdG9yLmJ1ZmZlcigpKTsKKworICAgICAgICBOZXR0eUJ1ZmZlckZhY3RvcnkucmVhZFJhdyh3cmFwcGVyQnVmZmVyLCBieXRlQnVmIC0+IHsKKyAgICAgICAgICAgIGFzc2VydFNhbWUoYnl0ZUJ1Ziwgd3JhcHBlckJ1ZmZlci5nZXRVbmRlcmx5aW5nQnVmZmVyKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGJ5dGVCdWYucmVmQ250KCkpOworICAgICAgICB9KTsKKworICAgICAgICAvLyBJdCBzaG91bGRuJ3QgaGF2ZSByZWxlYXNlZCBpdAorICAgICAgICBhc3NlcnRFcXVhbHMoMSwgd3JhcHBlckJ1ZmZlci5yZWZlcmVuY2VDb3VudCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHdyaXRlUmF3U2hvdWxkVXNlVGhlU2FtZUJ1ZmZlcldoZW5OZXR0eUJ1ZmZlcigpIHsKKyAgICAgICAgZmluYWwgTmV0dHlCdWZmZXIgd3JhcHBlckJ1ZmZlciA9IG5ldyBOZXR0eUJ1ZmZlcihhbGxvY2F0b3IuYnVmZmVyKCkpOworCisgICAgICAgIE5ldHR5QnVmZmVyRmFjdG9yeS53cml0ZVJhdyh3cmFwcGVyQnVmZmVyLCBieXRlQnVmIC0+IHsKKyAgICAgICAgICAgIGFzc2VydFNhbWUoYnl0ZUJ1Ziwgd3JhcHBlckJ1ZmZlci5nZXRVbmRlcmx5aW5nQnVmZmVyKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGJ5dGVCdWYucmVmQ250KCkpOworICAgICAgICB9KTsKKworICAgICAgICAvLyBJdCBzaG91bGRuJ3QgaGF2ZSByZWxlYXNlZCBpdAorICAgICAgICBhc3NlcnRFcXVhbHMoMSwgd3JhcHBlckJ1ZmZlci5yZWZlcmVuY2VDb3VudCgpKTsKKyAgICB9CisKKyAgICAvKiogQW4gaW5jb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsbG93cyB0ZXN0aW5nICovCisgICAgY2xhc3MgRmFrZUJ1ZmZlciBpbXBsZW1lbnRzIEJ1ZmZlciB7CisgICAgICAgIHByaXZhdGUgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBnZXRSYXcoKTsKKworICAgICAgICBGYWtlQnVmZmVyKCkgeworCisgICAgICAgIH0KKworICAgICAgICBCeXRlQnVmIGdldFVuZGVybHlpbmdSYXcoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgcmVhZGFibGVCeXRlcygpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVhZGFibGVCeXRlcygpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgcmVhZGVySW5kZXgoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlYWRlckluZGV4KCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciByZWFkZXJJbmRleChpbnQgcmVhZGVySW5kZXgpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFkZXJJbmRleChyZWFkZXJJbmRleCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgaW50IHdyaXRlckluZGV4KCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci53cml0ZXJJbmRleCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVySW5kZXgoaW50IHdyaXRlckluZGV4KSB7CisgICAgICAgICAgICBidWZmZXIud3JpdGVySW5kZXgod3JpdGVySW5kZXgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciBtYXJrV3JpdGVySW5kZXgoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHJlc2V0V3JpdGVySW5kZXgoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgaW50IGNhcGFjaXR5KCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jYXBhY2l0eSgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzRGlyZWN0KCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHJlYWRCb29sZWFuKCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBieXRlIHJlYWRCeXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHNob3J0IHJlYWRTaG9ydCgpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgcmVhZEludCgpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVhZEludCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBsb25nIHJlYWRMb25nKCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGZsb2F0IHJlYWRGbG9hdCgpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBkb3VibGUgcmVhZERvdWJsZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgcmVhZEJ5dGVzKGJ5dGVbXSBkZXN0aW5hdGlvbikgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciByZWFkQnl0ZXMoYnl0ZVtdIGRlc3RpbmF0aW9uLCBpbnQgZHN0SW5kZXgsIGludCBsZW5ndGgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgcmVhZEJ5dGVzKEJ5dGVCdWZmZXIgZHN0KSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHJlYWRCeXRlcyhPdXRwdXRTdHJlYW0gb3V0LCBpbnQgbGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHdyaXRlQm9vbGVhbihib29sZWFuIHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHdyaXRlQnl0ZShpbnQgdmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVTaG9ydChpbnQgdmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVJbnQoaW50IHZhbHVlKSB7CisgICAgICAgICAgICBidWZmZXIud3JpdGVJbnQodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciB3cml0ZUxvbmcobG9uZyB2YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciB3cml0ZUZsb2F0KGZsb2F0IHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHdyaXRlRG91YmxlKGRvdWJsZSB2YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJ5dGVzKGJ5dGVbXSBzcmMpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVCeXRlcyhCeXRlQnVmZmVyIHNyYykgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJ5dGVzKGJ5dGVbXSBzcmMsIGludCBzcmNJbmRleCwgaW50IGxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcmVsZWFzZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgcmV0YWluKCkgeworICAgICAgICAgICAgYnVmZmVyLnJldGFpbigpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCByZWZlcmVuY2VDb3VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVmQ250KCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBuaW9CdWZmZXJDb3VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIubmlvQnVmZmVyQ291bnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnl0ZUJ1ZmZlcltdIG5pb0J1ZmZlcnMoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLm5pb0J1ZmZlcnMoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnl0ZUJ1ZmZlcltdIG5pb0J1ZmZlcnMoaW50IGluZGV4LCBpbnQgbGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLm5pb0J1ZmZlcnMoaW5kZXgsIGxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ5dGVCdWZmZXIgbmlvQnVmZmVyKCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5uaW9CdWZmZXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnl0ZUJ1ZmZlciBuaW9CdWZmZXIoaW50IGluZGV4LCBpbnQgbGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLm5pb0J1ZmZlcihpbmRleCwgbGVuZ3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIGdldEJ5dGVzKGludCBpbmRleCwgYnl0ZVtdIGRzdCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L0dyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDA0MmZmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L0dyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMVRlc3QuamF2YQpAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnk7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXNDb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjE7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LlR5cGVTZXJpYWxpemVyUmVnaXN0cnk7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLm1vY2tpdG8uaW50ZXJuYWwubWF0Y2hlcnMuYXBhY2hlY29tbW9ucy5SZWZsZWN0aW9uRXF1YWxzOworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXI7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VGhhdDsKKworcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMVRlc3QgeworICAgIHByaXZhdGUgZmluYWwgQnl0ZUJ1ZkFsbG9jYXRvciBhbGxvY2F0b3IgPSBCeXRlQnVmQWxsb2NhdG9yLkRFRkFVTFQ7CisgICAgcHJpdmF0ZSBmaW5hbCBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgc2VyaWFsaXplciA9IG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VyaWFsaXplQW5kRGVzZXJpYWxpemVSZXF1ZXN0KCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0ID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoIm9wMSIpCisgICAgICAgICAgICAgICAgLnByb2Nlc3NvcigicHJvYzEiKQorICAgICAgICAgICAgICAgIC5vdmVycmlkZVJlcXVlc3RJZChVVUlELnJhbmRvbVVVSUQoKSkKKyAgICAgICAgICAgICAgICAuYWRkQXJnKCJhcmcxIiwgInZhbHVlMSIpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworCisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXF1ZXN0QXNCaW5hcnkocmVxdWVzdCwgYWxsb2NhdG9yKTsKKyAgICAgICAgZmluYWwgaW50IG1pbWVMZW4gPSBidWZmZXIucmVhZEJ5dGUoKTsKKyAgICAgICAgYnVmZmVyLnJlYWRCeXRlcyhuZXcgYnl0ZVttaW1lTGVuXSk7CisgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIGRlc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXF1ZXN0KGJ1ZmZlcik7CisgICAgICAgIGFzc2VydFRoYXQocmVxdWVzdCwgbmV3IFJlZmxlY3Rpb25FcXVhbHMoZGVzZXJpYWxpemVkKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZXJpYWxpemVBbmREZXNlcmlhbGl6ZVJlcXVlc3RXaXRob3V0QXJncygpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKCJvcDEiKQorICAgICAgICAgICAgICAgIC5wcm9jZXNzb3IoInByb2MxIikKKyAgICAgICAgICAgICAgICAub3ZlcnJpZGVSZXF1ZXN0SWQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworCisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXF1ZXN0QXNCaW5hcnkocmVxdWVzdCwgYWxsb2NhdG9yKTsKKyAgICAgICAgZmluYWwgaW50IG1pbWVMZW4gPSBidWZmZXIucmVhZEJ5dGUoKTsKKyAgICAgICAgYnVmZmVyLnJlYWRCeXRlcyhuZXcgYnl0ZVttaW1lTGVuXSk7CisgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIGRlc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXF1ZXN0KGJ1ZmZlcik7CisgICAgICAgIGFzc2VydFRoYXQocmVxdWVzdCwgbmV3IFJlZmxlY3Rpb25FcXVhbHMoZGVzZXJpYWxpemVkKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZXJpYWxpemVBbmREZXNlcmlhbGl6ZVJlcXVlc3RXaXRoVW5zZXRQcm9jZXNzb3IoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3QgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZCgib3AxIikKKyAgICAgICAgICAgICAgICAub3ZlcnJpZGVSZXF1ZXN0SWQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAgICAgLmFkZEFyZygiayIsIDEpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworCisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXF1ZXN0QXNCaW5hcnkocmVxdWVzdCwgYWxsb2NhdG9yKTsKKyAgICAgICAgZmluYWwgaW50IG1pbWVMZW4gPSBidWZmZXIucmVhZEJ5dGUoKTsKKyAgICAgICAgYnVmZmVyLnJlYWRCeXRlcyhuZXcgYnl0ZVttaW1lTGVuXSk7CisgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIGRlc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXF1ZXN0KGJ1ZmZlcik7CisgICAgICAgIGFzc2VydFRoYXQocmVxdWVzdCwgbmV3IFJlZmxlY3Rpb25FcXVhbHMoZGVzZXJpYWxpemVkKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZXJpYWxpemVBbmREZXNlcmlhbGl6ZVJlc3BvbnNlKCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgcmVzcG9uc2UgPSBSZXNwb25zZU1lc3NhZ2UuYnVpbGQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlNVQ0NFU1MpCisgICAgICAgICAgICAgICAgLnN0YXR1c01lc3NhZ2UoIkZvdW5kIikKKyAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlKCJrMSIsIDEpCisgICAgICAgICAgICAgICAgLnJlc3VsdCgiVGhpcyBpcyBhIGZpbmUgbWVzc2FnZSB3aXRoIGEgc3RyaW5nIikKKyAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CisKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkocmVzcG9uc2UsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVzcG9uc2UoYnVmZmVyKTsKKyAgICAgICAgYXNzZXJ0UmVzcG9uc2VFcXVhbHMocmVzcG9uc2UsIGRlc2VyaWFsaXplZCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZXJpYWxpemVBbmREZXNlcmlhbGl6ZVJlc3BvbnNlV2l0aG91dFN0YXR1c01lc3NhZ2UoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSByZXNwb25zZSA9IFJlc3BvbnNlTWVzc2FnZS5idWlsZChVVUlELnJhbmRvbVVVSUQoKSkKKyAgICAgICAgICAgICAgICAuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuU1VDQ0VTUykKKyAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlKCJrMSIsIDEpCisgICAgICAgICAgICAgICAgLnJlc3VsdCgxMjMuMykKKyAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CisKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkocmVzcG9uc2UsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVzcG9uc2UoYnVmZmVyKTsKKyAgICAgICAgYXNzZXJ0UmVzcG9uc2VFcXVhbHMocmVzcG9uc2UsIGRlc2VyaWFsaXplZCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZXJpYWxpemVBbmREZXNlcmlhbGl6ZVJlc3BvbnNlV2l0aG91dFN0YXR1c0F0dHJpYnV0ZXMoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSByZXNwb25zZSA9IFJlc3BvbnNlTWVzc2FnZS5idWlsZChVVUlELnJhbmRvbVVVSUQoKSkKKyAgICAgICAgICAgICAgICAuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuU1VDQ0VTUykKKyAgICAgICAgICAgICAgICAucmVzdWx0KDEyMy4zKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeShyZXNwb25zZSwgYWxsb2NhdG9yKTsKKyAgICAgICAgZmluYWwgUmVzcG9uc2VNZXNzYWdlIGRlc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXNwb25zZShidWZmZXIpOworICAgICAgICBhc3NlcnRSZXNwb25zZUVxdWFscyhyZXNwb25zZSwgZGVzZXJpYWxpemVkKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFNlcmlhbGl6ZUFuZERlc2VyaWFsaXplUmVzcG9uc2VXaXRob3V0UmVzdWx0KCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgcmVzcG9uc2UgPSBSZXNwb25zZU1lc3NhZ2UuYnVpbGQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUikKKyAgICAgICAgICAgICAgICAuc3RhdHVzTWVzc2FnZSgiU29tZXRoaW5nIGhhcHBlbmVkIG9uIHRoZSBzZXJ2ZXIiKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeShyZXNwb25zZSwgYWxsb2NhdG9yKTsKKyAgICAgICAgZmluYWwgUmVzcG9uc2VNZXNzYWdlIGRlc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXNwb25zZShidWZmZXIpOworICAgICAgICBhc3NlcnRSZXNwb25zZUVxdWFscyhyZXNwb25zZSwgZGVzZXJpYWxpemVkKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFN1cHBvcnRDb25maWd1cmF0aW9uT2ZSZWdpc3RyeUJ1aWxkZXIoKSB7CisgICAgICAgIGZpbmFsIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSBzZXJpYWxpemVyID0gbmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGNvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgaW50IGNvdW50ZXIgPSBTYW1wbGVUeXBlU2VyaWFsaXplclJlZ2lzdHJ5QnVpbGRlci5jcmVhdGVDb3VudGVyLmdldCgpOworCisgICAgICAgIGNvbmZpZy5wdXQoR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLlRPS0VOX0JVSUxERVIsICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5LkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMVRlc3QkU2FtcGxlVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeUJ1aWxkZXIiKTsKKyAgICAgICAgc2VyaWFsaXplci5jb25maWd1cmUoY29uZmlnLCBudWxsKTsKKworICAgICAgICBjb3VudGVyID0gU2FtcGxlVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeUJ1aWxkZXIuY3JlYXRlQ291bnRlci5nZXQoKSAtIGNvdW50ZXI7CisgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSBhIGNhbGwgdG8gYGNyZWF0ZSgpYAorICAgICAgICBhc3NlcnRFcXVhbHMoMSwgY291bnRlcik7CisgICAgfQorCisgICAgQFRlc3QoZXhwZWN0ZWQgPSBJbGxlZ2FsU3RhdGVFeGNlcHRpb24uY2xhc3MpCisgICAgcHVibGljIHZvaWQgc2hvdWxkVGhyb3dXaGVuQ29uZmlndXJhdGlvbk9mUmVnaXN0cnlCdWlsZGVyRmFpbHMoKSB7CisgICAgICAgIGZpbmFsIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSBzZXJpYWxpemVyID0gbmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGNvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgY29uZmlnLnB1dChHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEuVE9LRU5fQlVJTERFUiwgIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkuTm9uRXhpc3RlbnRDbGFzcyIpOworCisgICAgICAgIHNlcmlhbGl6ZXIuY29uZmlndXJlKGNvbmZpZywgbnVsbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRUb1N0cmluZ1NlcmlhbGl6ZSgpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIHNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKCk7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBjb25mID0gbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKSB7eworICAgICAgICAgICAgcHV0KEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMS5UT0tFTl9TRVJJQUxJWkVfUkVTVUxUX1RPX1NUUklORywgdHJ1ZSk7CisgICAgICAgIH19OworICAgICAgICBzZXJpYWxpemVyLmNvbmZpZ3VyZShjb25mLCBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKTsKKworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgbWVzc2FnZVdpdGhVbmV4cGVjdGVkVHlwZSA9IFJlc3BvbnNlTWVzc2FnZS5idWlsZChVVUlELnJhbmRvbVVVSUQoKSkuCisgICAgICAgICAgICAgICAgcmVzdWx0KGphdmEuYXd0LkNvbG9yLlJFRCkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KG1lc3NhZ2VXaXRoVW5leHBlY3RlZFR5cGUsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVzcG9uc2UoYnVmZmVyKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoamF2YS5hd3QuQ29sb3IuUkVELnRvU3RyaW5nKCksIGRlc2VyaWFsaXplZC5nZXRSZXN1bHQoKS5nZXREYXRhKCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYXNzZXJ0UmVzcG9uc2VFcXVhbHMoUmVzcG9uc2VNZXNzYWdlIGV4cGVjdGVkLCBSZXNwb25zZU1lc3NhZ2UgYWN0dWFsKSB7CisgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5nZXRSZXF1ZXN0SWQoKSwgYWN0dWFsLmdldFJlcXVlc3RJZCgpKTsKKyAgICAgICAgLy8gU3RhdHVzCisgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5nZXRTdGF0dXMoKS5nZXRDb2RlKCksIGFjdHVhbC5nZXRTdGF0dXMoKS5nZXRDb2RlKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQuZ2V0U3RhdHVzKCkuZ2V0TWVzc2FnZSgpLCBhY3R1YWwuZ2V0U3RhdHVzKCkuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmdldFN0YXR1cygpLmdldEF0dHJpYnV0ZXMoKSwgYWN0dWFsLmdldFN0YXR1cygpLmdldEF0dHJpYnV0ZXMoKSk7CisgICAgICAgIC8vIFJlc3VsdAorICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQuZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpLCBhY3R1YWwuZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmdldFJlc3VsdCgpLmdldE1ldGEoKSwgYWN0dWFsLmdldFJlc3VsdCgpLmdldE1ldGEoKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTYW1wbGVUeXBlU2VyaWFsaXplclJlZ2lzdHJ5QnVpbGRlciBleHRlbmRzIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuQnVpbGRlciB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgQXRvbWljSW50ZWdlciBjcmVhdGVDb3VudGVyID0gbmV3IEF0b21pY0ludGVnZXIoKTsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgY3JlYXRlKCkgeworICAgICAgICAgICAgY3JlYXRlQ291bnRlci5pbmNyZW1lbnRBbmRHZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5jcmVhdGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9HcmFwaEJpbmFyeVJlYWRlcldyaXRlclJvdW5kVHJpcFRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9HcmFwaEJpbmFyeVJlYWRlcldyaXRlclJvdW5kVHJpcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTcyNTRkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L0dyYXBoQmluYXJ5UmVhZGVyV3JpdGVyUm91bmRUcmlwVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzEzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeTsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5OZXR0eUJ1ZmZlckZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuRGVmYXVsdFJlbW90ZVRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3BlcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcmRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Qb3A7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TYWNrRnVuY3Rpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsT3B0aW9uUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkJ1bGtTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuVHJlZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LlRyYXZlcnNhbFN0cmF0ZWd5UHJveHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWxNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5NZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5NdXRhYmxlTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Db2x1bW47CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VFZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5mdW5jdGlvbi5MYW1iZGE7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLlBhcmFtZXRlcml6ZWQ7CitpbXBvcnQgb3JnLm1vY2tpdG8uaW50ZXJuYWwubWF0Y2hlcnMuYXBhY2hlY29tbW9ucy5SZWZsZWN0aW9uRXF1YWxzOworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS5uZXQuSW5ldEFkZHJlc3M7CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLnNxbC5UaW1lc3RhbXA7CitpbXBvcnQgamF2YS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgamF2YS50aW1lLkR1cmF0aW9uOworaW1wb3J0IGphdmEudGltZS5JbnN0YW50OworaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGU7CitpbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLkxvY2FsVGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuTW9udGhEYXk7CitpbXBvcnQgamF2YS50aW1lLk9mZnNldERhdGVUaW1lOworaW1wb3J0IGphdmEudGltZS5PZmZzZXRUaW1lOworaW1wb3J0IGphdmEudGltZS5QZXJpb2Q7CitpbXBvcnQgamF2YS50aW1lLlllYXI7CitpbXBvcnQgamF2YS50aW1lLlllYXJNb250aDsKK2ltcG9ydCBqYXZhLnRpbWUuWm9uZU9mZnNldDsKK2ltcG9ydCBqYXZhLnRpbWUuWm9uZWREYXRlVGltZTsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uQ29uc3VtZXI7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uaGFzTGFiZWw7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CisKK0BSdW5XaXRoKFBhcmFtZXRlcml6ZWQuY2xhc3MpCitwdWJsaWMgY2xhc3MgR3JhcGhCaW5hcnlSZWFkZXJXcml0ZXJSb3VuZFRyaXBUZXN0IHsKKyAgICBwcml2YXRlIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIHdyaXRlciA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcigpOworICAgIHByaXZhdGUgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgcmVhZGVyID0gbmV3IEdyYXBoQmluYXJ5UmVhZGVyKCk7CisgICAgcHJpdmF0ZSBmaW5hbCBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IEJ5dGVCdWZBbGxvY2F0b3IuREVGQVVMVDsKKyAgICBwcml2YXRlIHN0YXRpYyBOZXR0eUJ1ZmZlckZhY3RvcnkgYnVmZmVyRmFjdG9yeSA9IG5ldyBOZXR0eUJ1ZmZlckZhY3RvcnkoKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpLnRyYXZlcnNhbCgpOworCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVycyhuYW1lID0gIlR5cGV7MH0iKQorICAgIHB1YmxpYyBzdGF0aWMgQ29sbGVjdGlvbiBpbnB1dCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlY29kZSBieXRlY29kZSA9IG5ldyBCeXRlY29kZSgpOworICAgICAgICBieXRlY29kZS5hZGRTdGVwKCJWIik7CisgICAgICAgIGJ5dGVjb2RlLmFkZFN0ZXAoInRhaWwiLCAzKTsKKyAgICAgICAgYnl0ZWNvZGUuYWRkU291cmNlKFRyYXZlcnNhbFNvdXJjZS5TeW1ib2xzLndpdGhDb21wdXRlciwgIm15Q29tcHV0ZXIiKTsKKworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBJbnRlZ2VyPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIG1hcC5wdXQoIm9uZSIsIDEpOworICAgICAgICBtYXAucHV0KCJ0d28iLCAyKTsKKworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBNYXA8U3RyaW5nLCBJbnRlZ2VyPj4gbmVzdGVkTWFwID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBuZXN0ZWRNYXAucHV0KCJmaXJzdCIsIG1hcCk7CisKKyAgICAgICAgZmluYWwgTGlzdDxPYmplY3Q+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgbGlzdC5hZGQoInN0cmluZyAxIik7CisgICAgICAgIGxpc3QuYWRkKCJzdHJpbmcgMSIpOworICAgICAgICBsaXN0LmFkZCgyMDApOworICAgICAgICBsaXN0LmFkZCgic3RyaW5nIDIiKTsKKworICAgICAgICBmaW5hbCBMaXN0PExpc3Q8T2JqZWN0Pj4gbmVzdGVkTGlzdCA9IG5ldyBBcnJheUxpc3Q8PigpOworICAgICAgICBuZXN0ZWRMaXN0LmFkZChsaXN0KTsKKworICAgICAgICBmaW5hbCBTZXQ8T2JqZWN0PiBzZXQgPSBuZXcgSGFzaFNldDw+KCk7CisgICAgICAgIHNldC5hZGQoIm9uZSIpOworICAgICAgICBzZXQuYWRkKDIpOworCisgICAgICAgIGZpbmFsIFNldDxTZXQ8T2JqZWN0Pj4gbmVzdGVkU2V0ID0gbmV3IEhhc2hTZXQ8PigpOworICAgICAgICBuZXN0ZWRTZXQuYWRkKHNldCk7CisKKyAgICAgICAgZmluYWwgQnVsa1NldDxTdHJpbmc+IGJ1bGtTZXQgPSBuZXcgQnVsa1NldDw+KCk7CisgICAgICAgIGJ1bGtTZXQuYWRkKCJtYXJrbyIsIDEpOworICAgICAgICBidWxrU2V0LmFkZCgiam9zaCIsIDMpOworCisgICAgICAgIGZpbmFsIFRyZWU8VmVydGV4PiB0cmVlID0gbmV3IFRyZWU8PigpOworICAgICAgICBmaW5hbCBUcmVlPFZlcnRleD4gc3ViVHJlZSA9IG5ldyBUcmVlPD4oKTsKKyAgICAgICAgZmluYWwgVHJlZTxWZXJ0ZXg+IHN1YlN1YlRyZWUgPSBuZXcgVHJlZTw+KCk7CisgICAgICAgIHN1YlN1YlRyZWUucHV0KG5ldyBSZWZlcmVuY2VWZXJ0ZXgoMSwgImFuaW1hbCIpLCBuZXcgVHJlZTw+KCkpOworICAgICAgICBzdWJTdWJUcmVlLnB1dChuZXcgUmVmZXJlbmNlVmVydGV4KDIsICJhbmltYWwiKSwgbmV3IFRyZWU8PigpKTsKKyAgICAgICAgc3ViVHJlZS5wdXQobmV3IFJlZmVyZW5jZVZlcnRleCgxMDAsICJhbmltYWwiKSwgc3ViU3ViVHJlZSk7CisgICAgICAgIHRyZWUucHV0KG5ldyBSZWZlcmVuY2VWZXJ0ZXgoMTAwMCwgImFuaW1hbCIpLCBzdWJUcmVlKTsKKworICAgICAgICBmaW5hbCBNdXRhYmxlTWV0cmljcyBtZXRyaWNzID0gbmV3IE11dGFibGVNZXRyaWNzKCJpZDEiLCAibmFtZTEiKTsKKyAgICAgICAgbWV0cmljcy5zZXREdXJhdGlvbigxMjMsIFRpbWVVbml0Lk1JQ1JPU0VDT05EUyk7CisgICAgICAgIG1ldHJpY3Muc2V0Q291bnQoImMxIiwgMjApOworICAgICAgICBtZXRyaWNzLnNldEFubm90YXRpb24oImEiLCAiYiIpOworICAgICAgICBtZXRyaWNzLmFkZE5lc3RlZChuZXcgTXV0YWJsZU1ldHJpY3MoImlkTmVzdGVkIiwgIm5hbWVOZXN0ZWQiKSk7CisKKyAgICAgICAgLy8gY2FuJ3QgdXNlIHRoZSBleGlzdGluZyAnbWV0cmljcycgYmVjYXVzZSB0cmF2ZXJzYWwgbWV0cmljcyBtb2RpZmllcyBpdHMgbmVzdGVkIG1ldHJpY3MKKyAgICAgICAgZmluYWwgTXV0YWJsZU1ldHJpY3MgbWV0cmljczEgPSBtZXRyaWNzLmNsb25lKCk7CisKKyAgICAgICAgZmluYWwgTXV0YWJsZU1ldHJpY3MgbWV0cmljczIgPSBuZXcgTXV0YWJsZU1ldHJpY3MoImlkMiIsICJuYW1lMiIpOworICAgICAgICBtZXRyaWNzMi5zZXREdXJhdGlvbig0NTYsIFRpbWVVbml0Lk1JQ1JPU0VDT05EUyk7CisgICAgICAgIG1ldHJpY3MyLnNldENvdW50KCJjMiIsIDQwKTsKKyAgICAgICAgbWV0cmljczIuc2V0QW5ub3RhdGlvbigiYyIsICJkIik7CisgICAgICAgIG1ldHJpY3MyLmFkZE5lc3RlZChuZXcgTXV0YWJsZU1ldHJpY3MoImlkTmVzdGVkMiIsICJuYW1lTmVzdGVkMiIpKTsKKworICAgICAgICBMaXN0PE11dGFibGVNZXRyaWNzPiBuZXN0ZWRNZXRyaWNzID0gQXJyYXlzLmFzTGlzdChtZXRyaWNzMSwgbWV0cmljczIpOworICAgICAgICBmaW5hbCBEZWZhdWx0VHJhdmVyc2FsTWV0cmljcyB0cmF2ZXJzYWxNZXRyaWNzID0gbmV3IERlZmF1bHRUcmF2ZXJzYWxNZXRyaWNzKDY2NiwgbmVzdGVkTWV0cmljcyk7CisgICAgICAgIGZpbmFsIERlZmF1bHRUcmF2ZXJzYWxNZXRyaWNzIGVtcHR5VHJhdmVyc2FsTWV0cmljcyA9IG5ldyBEZWZhdWx0VHJhdmVyc2FsTWV0cmljcyg0NDQsIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpKTsKKworICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJTdHJpbmciLCAiQUJDIiwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQ2hhciIsICfCoycsIG51bGx9LAorCisgICAgICAgICAgICAgICAgLy8gbnVtZXJpY3MKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCeXRlIiwgMSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiSW50ZWdlciIsIDEsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkZsb2F0IiwgMmYsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkRvdWJsZSIsIDMuMWQsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkRvdWJsZSIsIERvdWJsZS5OYU4sIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkRvdWJsZSIsIERvdWJsZS5QT1NJVElWRV9JTkZJTklUWSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiRG91YmxlIiwgRG91YmxlLk5FR0FUSVZFX0lORklOSVRZLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJMb25nIiwgMTAxMjJMLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJJbnRlZ2VyWmVybyIsIDAsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkZsb2F0WmVybyIsIDBmLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJJbnRlZ2VyTWluIiwgSW50ZWdlci5NSU5fVkFMVUUsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkludGVnZXJNYXgiLCBJbnRlZ2VyLk1BWF9WQUxVRSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTG9uZ01heCIsIExvbmcuTUFYX1ZBTFVFLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCaWdJbnRlZ2VyUG9zIiwgbmV3IEJpZ0ludGVnZXIoIjEyMzQ1Njc4OTA5ODc2NTQzMjEiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQmlnSW50ZWdlck5lZyIsIG5ldyBCaWdJbnRlZ2VyKCItMTIzNDU2Nzg5MDk4NzY1NDMyMSIpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCaWdEZWNpbWFsUG9zIiwgbmV3IEJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTA5ODc2NTQzMjEuMTIzMjEzMiIpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCaWdEZWNpbWFsTmVnIiwgbmV3IEJpZ0RlY2ltYWwoIi0xMjM0NTY3ODkwOTg3NjU0MzIxLjEyMzIxMzIiKSwgbnVsbH0sCisKKyAgICAgICAgICAgICAgICAvLyBkYXRlK3RpbWUKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJEYXRlIiwgRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5NRURJVU0sIExvY2FsZS5VUykucGFyc2UoIkphbiAxMiwgMTk1MiIpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJUaW1lc3RhbXAiLCBUaW1lc3RhbXAudmFsdWVPZigiMjAxNi0wMS0xNSAxMjowMTowMiIpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJEdXJhdGlvbiIsIER1cmF0aW9uLm9mU2Vjb25kcygyMTMxMjMyMTMsIDQwMCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7Ikluc3RhbnQiLCBJbnN0YW50Lm9mRXBvY2hTZWNvbmQoMjEzMTIzMjEzLCA0MDApLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJMb2NhbERhdGUiLCBMb2NhbERhdGUub2YoMjAxNiwgMTAsIDIxKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTG9jYWxUaW1lIiwgTG9jYWxUaW1lLm9mKDEyLCAyMCwgMzAsIDMwMCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkxvY2FsRGF0ZVRpbWUiLCBMb2NhbERhdGVUaW1lLm9mKDIwMTYsIDEwLCAyMSwgMTIsIDIwLCAzMCwgMzAwKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTW9udGhEYXkiLCBNb250aERheS5vZigxMiwgMjgpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJPZmZzZXREYXRlVGltZSIsIE9mZnNldERhdGVUaW1lLm9mKDIwMTcsIDExLCAxNSwgMTIsIDMwLCA0NSwgMzAwLCBab25lT2Zmc2V0Lm9mVG90YWxTZWNvbmRzKDQwMCkpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJPZmZzZXRUaW1lIiwgT2Zmc2V0VGltZS5vZigxMiwgMzAsIDQ1LCAzMDAsIFpvbmVPZmZzZXQub2ZUb3RhbFNlY29uZHMoNDAwKSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBlcmlvZCIsIFBlcmlvZC5vZigxLCA2LCAxNSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlllYXIiLCBZZWFyLm9mKDE5OTYpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJZZWFyTW9udGgiLCBZZWFyTW9udGgub2YoMjAxNiwgMTEpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJab25lZERhdGVUaW1lIiwgWm9uZWREYXRlVGltZS5vZigyMDE2LCAxMSwgMTUsIDEyLCAzMCwgNDUsIDMwMCwgWm9uZU9mZnNldC5vZlRvdGFsU2Vjb25kcygyMDApKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiWm9uZU9mZnNldCIsIFpvbmVPZmZzZXQub2ZUb3RhbFNlY29uZHMoMTAwKSwgbnVsbH0sCisKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJVVUlEIiwgVVVJRC5yYW5kb21VVUlEKCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkJ5dGVjb2RlIiwgYnl0ZWNvZGUsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkJpbmRpbmciLCBuZXcgQnl0ZWNvZGUuQmluZGluZzw+KCJ4IiwgMTIzKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVHJhdmVyc2VyIiwgbmV3IERlZmF1bHRSZW1vdGVUcmF2ZXJzZXI8PigibWFya28iLCAxMDApLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJDbGFzcyIsIEJ5dGVjb2RlLmNsYXNzLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCeXRlQnVmZmVyIiwgQnl0ZUJ1ZmZlci53cmFwKG5ldyBieXRlW117IDEsIDIsIDMgfSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkluZXRBZGRyZXNzVjQiLCBJbmV0QWRkcmVzcy5nZXRCeU5hbWUoImxvY2FsaG9zdCIpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJJbmV0QWRkcmVzc1Y2IiwgSW5ldEFkZHJlc3MuZ2V0QnlOYW1lKCI6OjEiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTGFtYmRhMCIsIExhbWJkYS5zdXBwbGllcigicmV0dXJuIDEiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTGFtYmRhMSIsIExhbWJkYS5jb25zdW1lcigiaXQiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTGFtYmRhMiIsIExhbWJkYS5iaUZ1bmN0aW9uKCJ4LHkgLT4geCArIHkiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTGFtYmRhTiIsIG5ldyBMYW1iZGEuVW5rbm93bkFyZ0xhbWJkYSgieCx5LHogLT4geCArIHkgKyB6IiwgImdyZW1saW4tZ3Jvb3Z5IiwgMyksIG51bGx9LAorCisgICAgICAgICAgICAgICAgLy8gZW51bXMKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCYXJyaWVyIiwgU2Fja0Z1bmN0aW9ucy5CYXJyaWVyLm5vcm1TYWNrLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJDYXJkaW5hbGl0eSIsIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5Lmxpc3QsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkNvbHVtbnMiLCBDb2x1bW4udmFsdWVzLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJEaXJlY3Rpb24iLCBEaXJlY3Rpb24uQk9USCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiT3BlcmF0b3IiLCBPcGVyYXRvci5zdW0sIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7Ik9wZXJhdG9yIiwgT3BlcmF0b3IuZGl2LCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJPcmRlciIsIE9yZGVyLmRlc2MsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBpY2siLCBUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljay5hbnksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBvcCIsIFBvcC5taXhlZCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiU2NvcGUiLCBTY29wZS5nbG9iYWwsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlQiLCBULmxhYmVsLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQZ3QiLCBQLmd0KDApLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQZ3RlIiwgUC5ndGUoMCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBiZXR3ZWVuIiwgUC5iZXR3ZWVuKDAsMSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBhbmQiLCBQLmd0KDEpLmFuZChQLmx0KDIpKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUG9yIiwgUC5ndCgxKS5vcihQLmx0KDIpKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUG5vdCIsIFAubm90KFAubHRlKDEpKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUHdpdGhvdXQiLCBQLndpdGhvdXQoMSwyLDMsNCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBpbnNpZGUiLCBQLmluc2lkZSgwLjBkLCAwLjZkKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVGV4dFAiLCBUZXh0UC5zdGFydGluZ1dpdGgoIm1hcmsiKSwgbnVsbH0sCisKKyAgICAgICAgICAgICAgICAvLyBncmFwaAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlJlZmVyZW5jZUVkZ2UiLCBuZXcgUmVmZXJlbmNlRWRnZSgxMjMsICJwZXJzb24iLCBuZXcgUmVmZXJlbmNlVmVydGV4KDEyMywgInBlcnNvbiIpLCBuZXcgUmVmZXJlbmNlVmVydGV4KDMyMSwgInBlcnNvbiIpKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVGlua2VyRWRnZSIsIGcuRSgpLmhhc0xhYmVsKCJrbm93cyIpLm5leHQoKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUmVmZXJlbmNlUHJvcGVydHkiLCBuZXcgUmVmZXJlbmNlUHJvcGVydHk8PigibmFtZSIsICJqb2huIiksIChDb25zdW1lcjxSZWZlcmVuY2VQcm9wZXJ0eT4pIHJlZmVyZW5jZVByb3BlcnR5IC0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuYW1lIiwgcmVmZXJlbmNlUHJvcGVydHkua2V5KCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImpvaG4iLCByZWZlcmVuY2VQcm9wZXJ0eS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJSZWZlcmVuY2VWZXJ0ZXgiLCBuZXcgUmVmZXJlbmNlVmVydGV4KDEyMywgInBlcnNvbiIpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJUaW5rZXJWZXJ0ZXgiLCBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikubmV4dCgpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJSZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eSIsIG5ldyBSZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eTw+KDEyMywgIm5hbWUiLCAiam9obiIpLCAoQ29uc3VtZXI8UmVmZXJlbmNlVmVydGV4UHJvcGVydHk+KSByZWZlcmVuY2VQcm9wZXJ0eSAtPiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmFtZSIsIHJlZmVyZW5jZVByb3BlcnR5LmtleSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqb2huIiwgcmVmZXJlbmNlUHJvcGVydHkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxMjMsIHJlZmVyZW5jZVByb3BlcnR5LmlkKCkpOworICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBhdGhMYWJlbGxlZCIsIGcuVigpLmFzKCJhIiwgImIiKS5vdXQoKS5hcygiYyIpLnBhdGgoKS5uZXh0KCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBhdGhOb3RMYWJlbGxlZCIsIGcuVigpLm91dCgpLmluRSgpLnZhbHVlcygpLnBhdGgoKS5uZXh0KCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkdyYXBoIiwgZy5FKCkuc3ViZ3JhcGgoImsiKS5jYXAoImsiKS5uZXh0KCksIChDb25zdW1lcjxHcmFwaD4pIGdyYXBoIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW9UZXN0LmFzc2VydE1vZGVybkdyYXBoKGdyYXBoLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVHJhdmVyc2FsU3RyYXRlZ3lWZXJ0ZXhQcm9ncmFtIiwgbmV3IFZlcnRleFByb2dyYW1TdHJhdGVneShDb21wdXRlci5jb21wdXRlKCkpLCAoQ29uc3VtZXI8VHJhdmVyc2FsU3RyYXRlZ3lQcm94eT4pIHN0cmF0ZWd5IC0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFZlcnRleFByb2dyYW1TdHJhdGVneS5jbGFzcywgc3RyYXRlZ3kuZ2V0U3RyYXRlZ3lDbGFzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlciIsIHN0cmF0ZWd5LmdldENvbmZpZ3VyYXRpb24oKS5nZXRQcm9wZXJ0eShWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuR1JBUEhfQ09NUFVURVIpKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJUcmF2ZXJzYWxTdHJhdGVneVN1YmdyYXBoIiwgU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLnZlcnRpY2VzKGhhc0xhYmVsKCJwZXJzb24iKSkuY3JlYXRlKCksIChDb25zdW1lcjxUcmF2ZXJzYWxTdHJhdGVneVByb3h5Pikgc3RyYXRlZ3kgLT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoU3ViZ3JhcGhTdHJhdGVneS5jbGFzcywgc3RyYXRlZ3kuZ2V0U3RyYXRlZ3lDbGFzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGhhc0xhYmVsKCJwZXJzb24iKS5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSwgc3RyYXRlZ3kuZ2V0Q29uZmlndXJhdGlvbigpLmdldFByb3BlcnR5KFN1YmdyYXBoU3RyYXRlZ3kuVkVSVElDRVMpKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCdWxrU2V0IiwgYnVsa1NldCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVHJlZSIsIHRyZWUsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkVtcHR5TWV0cmljcyIsIG5ldyBNdXRhYmxlTWV0cmljcygiaWRFbXB0eSIsICJuYW1lRW1wdHkiKSwgKENvbnN1bWVyPE1ldHJpY3M+KSBtIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChtLCBuZXcgUmVmbGVjdGlvbkVxdWFscyhuZXcgTXV0YWJsZU1ldHJpY3MoImlkRW1wdHkiLCAibmFtZUVtcHR5IikpKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJNZXRyaWNzIiwgbWV0cmljcywgKENvbnN1bWVyPE1ldHJpY3M+KSBtIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChtLCBuZXcgUmVmbGVjdGlvbkVxdWFscyhtZXRyaWNzLCAibmVzdGVkIiwgImNvdW50cyIpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG5ldyBBcnJheUxpc3QobWV0cmljcy5nZXRDb3VudHMoKS52YWx1ZXMoKSksIG5ldyBBcnJheUxpc3QobS5nZXRDb3VudHMoKS52YWx1ZXMoKSkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG0uZ2V0TmVzdGVkKCksIG5ldyBSZWZsZWN0aW9uRXF1YWxzKG1ldHJpY3MuZ2V0TmVzdGVkKCkpKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJFbXB0eVRyYXZlcnNhbE1ldHJpY3MiLCBlbXB0eVRyYXZlcnNhbE1ldHJpY3MsIChDb25zdW1lcjxUcmF2ZXJzYWxNZXRyaWNzPikgbSAtPiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydFRoYXQobSwgbmV3IFJlZmxlY3Rpb25FcXVhbHMoZW1wdHlUcmF2ZXJzYWxNZXRyaWNzKSk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVHJhdmVyc2FsTWV0cmljcyIsIHRyYXZlcnNhbE1ldHJpY3MsIChDb25zdW1lcjxUcmF2ZXJzYWxNZXRyaWNzPikgbSAtPiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhtLnRvU3RyaW5nKCksIHRyYXZlcnNhbE1ldHJpY3MudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydFRoYXQobSwgbmV3IFJlZmxlY3Rpb25FcXVhbHModHJhdmVyc2FsTWV0cmljcywgInN0ZXBJbmRleGVkTWV0cmljcyIsICJwb3NpdGlvbkluZGV4ZWRNZXRyaWNzIikpOworICAgICAgICAgICAgICAgIH19LAorCisgICAgICAgICAgICAgICAgLy8gY29sbGVjdGlvbnMKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJMaXN0U2luZ2xlIiwgbGlzdCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTGlzdE5lc3RlZCIsIG5lc3RlZExpc3QsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7Ik1hcCIsIG1hcCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTWFwIiwgbmVzdGVkTWFwLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJTZXQiLCBzZXQsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlNldE5lc3RlZCIsIG5lc3RlZFNldCwgbnVsbH0pOworICAgIH0KKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDApCisgICAgcHVibGljIFN0cmluZyBuYW1lOworCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVyKHZhbHVlID0gMSkKKyAgICBwdWJsaWMgT2JqZWN0IHZhbHVlOworCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVyKHZhbHVlID0gMikKKyAgICBwdWJsaWMgQ29uc3VtZXI8Pz4gYXNzZXJ0aW9uOworCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRXcml0ZUFuZFJlYWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gVGVzdCBpdCBtdWx0aXBsZSB0aW1lcyBhcyB0aGUgdHlwZSByZWdpc3RyeSBtaWdodCBjaGFuZ2UgaXRzIGludGVybmFsIHN0YXRlCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICAgICAgICBmaW5hbCBCdWZmZXIgYnVmZmVyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigpKTsKKyAgICAgICAgICAgIHdyaXRlci53cml0ZSh2YWx1ZSwgYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFkZXJJbmRleCgwKTsKKyAgICAgICAgICAgIGZpbmFsIE9iamVjdCByZXN1bHQgPSByZWFkZXIucmVhZChidWZmZXIpOworCisgICAgICAgICAgICBPcHRpb25hbC5vZk51bGxhYmxlKGFzc2VydGlvbikub3JFbHNlKChDb25zdW1lcikgciAtPiBhc3NlcnRFcXVhbHModmFsdWUsIHIpKS5hY2NlcHQocmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9UeXBlU2VyaWFsaXplckZhaWx1cmVUZXN0cy5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L1R5cGVTZXJpYWxpemVyRmFpbHVyZVRlc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI2OGJmMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9UeXBlU2VyaWFsaXplckZhaWx1cmVUZXN0cy5qYXZhCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5OworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLlVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuTmV0dHlCdWZmZXJGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLkRlZmF1bHRSZW1vdGVUcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5CdWxrU2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkVtcHR5UGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5UcmVlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuTXV0YWJsZU1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlRWRnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VQYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuZnVuY3Rpb24uTGFtYmRhOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5QYXJhbWV0ZXJpemVkOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOworCitAUnVuV2l0aChQYXJhbWV0ZXJpemVkLmNsYXNzKQorcHVibGljIGNsYXNzIFR5cGVTZXJpYWxpemVyRmFpbHVyZVRlc3RzIHsKKworICAgIHByaXZhdGUgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgd3JpdGVyID0gbmV3IEdyYXBoQmluYXJ5V3JpdGVyKCk7CisgICAgcHJpdmF0ZSBmaW5hbCBVbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3IgYWxsb2NhdG9yID0gbmV3IFVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcihmYWxzZSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXJzKG5hbWUgPSAiVmFsdWU9ezB9IikKKyAgICBwdWJsaWMgc3RhdGljIENvbGxlY3Rpb24gaW5wdXQoKSB7CisgICAgICAgIGZpbmFsIEJ5dGVjb2RlLkJpbmRpbmcgYiA9IG5ldyBCeXRlY29kZS5CaW5kaW5nKG51bGwsICJiIik7CisKKyAgICAgICAgZmluYWwgUmVmZXJlbmNlVmVydGV4IHZlcnRleCA9IG5ldyBSZWZlcmVuY2VWZXJ0ZXgoImEgdmVydGV4IiwgbnVsbCk7CisKKyAgICAgICAgZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUgPSBuZXcgQnl0ZWNvZGUoKTsKKyAgICAgICAgYnl0ZWNvZGUuYWRkU3RlcChudWxsKTsKKworICAgICAgICBmaW5hbCBCdWxrU2V0PE9iamVjdD4gYnVsa1NldCA9IG5ldyBCdWxrU2V0PD4oKTsKKyAgICAgICAgYnVsa1NldC5hZGQodmVydGV4LCAxTCk7CisKKyAgICAgICAgZmluYWwgTXV0YWJsZU1ldHJpY3MgbWV0cmljcyA9IG5ldyBNdXRhYmxlTWV0cmljcygiYSBtZXRyaWMiLCBudWxsKTsKKworICAgICAgICBmaW5hbCBUcmVlPFZlcnRleD4gdHJlZSA9IG5ldyBUcmVlPD4oKTsKKyAgICAgICAgdHJlZS5wdXQodmVydGV4LCBudWxsKTsKKworICAgICAgICAvLyBQcm92aWRlIGluc3RhbmNlcyB0aGF0IGFyZSBtYWxmb3JtZWQgZm9yIHNlcmlhbGl6YXRpb24gdG8gZmFpbAorICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBiLAorICAgICAgICAgICAgICAgIHZlcnRleCwKKyAgICAgICAgICAgICAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25NYXAoIm9uZSIsIGIpLAorICAgICAgICAgICAgICAgIGJ1bGtTZXQsCisgICAgICAgICAgICAgICAgYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCh2ZXJ0ZXgpLAorICAgICAgICAgICAgICAgIG5ldyBSZWZlcmVuY2VFZGdlKCJhbiBlZGdlIiwgbnVsbCwgdmVydGV4LCB2ZXJ0ZXgpLAorICAgICAgICAgICAgICAgIExhbWJkYS5zdXBwbGllcihudWxsKSwKKyAgICAgICAgICAgICAgICBtZXRyaWNzLAorICAgICAgICAgICAgICAgIG5ldyBEZWZhdWx0VHJhdmVyc2FsTWV0cmljcygxTCwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChtZXRyaWNzKSksCisgICAgICAgICAgICAgICAgbmV3IERlZmF1bHRSZW1vdGVUcmF2ZXJzZXI8PihuZXcgT2JqZWN0KCksIDFMKSwKKyAgICAgICAgICAgICAgICB0cmVlLAorICAgICAgICAgICAgICAgIG5ldyBSZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eTw+KCJhIHByb3AiLCBudWxsLCAidmFsdWUiKSwKKyAgICAgICAgICAgICAgICBuZXcgSW52YWxpZFBhdGgoKQorICAgICAgICApOworICAgIH0KKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDApCisgICAgcHVibGljIE9iamVjdCB2YWx1ZTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmVsZWFzZU1lbW9yeVdoZW5GYWlscygpIHsKKyAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoKSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3cml0ZXIud3JpdGUodmFsdWUsIGJ1ZmZlcik7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIik7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIHwgUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgdGhlIG93bmVyIG9mIHRoZSBidWZmZXIsIHdlIHNob3VsZCByZWxlYXNlIGl0CisgICAgICAgICAgICBidWZmZXIucmVsZWFzZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCBhbGxvY2F0aW9ucyB3aGVyZSByZWxlYXNlZAorICAgICAgICBhc3NlcnRFcXVhbHMoMCwgYWxsb2NhdG9yLm1ldHJpYygpLnVzZWRIZWFwTWVtb3J5KCkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSW52YWxpZFBhdGggZXh0ZW5kcyBSZWZlcmVuY2VQYXRoIHsKKyAgICAgICAgcHVibGljIEludmFsaWRQYXRoKCkgeworICAgICAgICAgICAgc3VwZXIoRW1wdHlQYXRoLmluc3RhbmNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBMaXN0PE9iamVjdD4gb2JqZWN0cygpIHsKKyAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KG5ldyBPYmplY3QoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeVRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9UeXBlU2VyaWFsaXplclJlZ2lzdHJ5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MDI4NWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeVRlc3QuamF2YQpAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5LnR5cGVzLnNhbXBsZS5TYW1wbGVQZXJzb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS50eXBlcy5zYW1wbGUuU2FtcGxlUGVyc29uU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuVHlwZVNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LlR5cGVTZXJpYWxpemVyUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworaW1wb3J0IHN0YXRpYyBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UuYXNzZXJ0U2FtZTsKKworcHVibGljIGNsYXNzIFR5cGVTZXJpYWxpemVyUmVnaXN0cnlUZXN0IHsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmVzb2x2ZVRvVXNlclByb3ZpZGVkRm9ySW50ZXJmYWNlc18xKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXI8VmVydGV4UHJvcGVydHk+IGV4cGVjdGVkID0gbmV3IFRlc3RWZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIoKTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeSA9IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKQorICAgICAgICAgICAgICAgIC5hZGQoVmVydGV4UHJvcGVydHkuY2xhc3MsIGV4cGVjdGVkKS5jcmVhdGUoKTsKKworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkLCByZWdpc3RyeS5nZXRTZXJpYWxpemVyKFZlcnRleFByb3BlcnR5LmNsYXNzKSk7CisgICAgICAgIGFzc2VydFNhbWUoZXhwZWN0ZWQsIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoRGF0YVR5cGUuVkVSVEVYUFJPUEVSVFkpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlc29sdmVUb1VzZXJQcm92aWRlZEZvckludGVyZmFjZXNfMigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyPFByb3BlcnR5PiBleHBlY3RlZCA9IG5ldyBUZXN0UHJvcGVydHlTZXJpYWxpemVyKCk7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnkgPSBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAuYWRkKFByb3BlcnR5LmNsYXNzLCBleHBlY3RlZCkuY3JlYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0U2FtZShleHBlY3RlZCwgcmVnaXN0cnkuZ2V0U2VyaWFsaXplcihQcm9wZXJ0eS5jbGFzcykpOworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkLCByZWdpc3RyeS5nZXRTZXJpYWxpemVyKERhdGFUeXBlLlBST1BFUlRZKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXNvbHZlVG9Vc2VyUHJvdmlkZWRGb3JDbGFzc2VzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyPFVVSUQ+IGV4cGVjdGVkID0gbmV3IFRlc3RVVUlEU2VyaWFsaXplcigpOworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5idWlsZCgpCisgICAgICAgICAgICAgICAgLmFkZChVVUlELmNsYXNzLCBleHBlY3RlZCkuY3JlYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0U2FtZShleHBlY3RlZCwgcmVnaXN0cnkuZ2V0U2VyaWFsaXplcihVVUlELmNsYXNzKSk7CisgICAgICAgIGFzc2VydFNhbWUoZXhwZWN0ZWQsIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoRGF0YVR5cGUuVVVJRCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmVzb2x2ZVRvVGhlRmlyc3RTZXJpYWxpemVyRm9ySW50ZXJmYWNlcygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyPFZlcnRleFByb3BlcnR5PiBleHBlY3RlZEZvclZlcnRleFByb3BlcnR5ID0gbmV3IFRlc3RWZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIoKTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXI8UHJvcGVydHk+IGV4cGVjdGVkRm9yUHJvcGVydHkgPSBuZXcgVGVzdFByb3BlcnR5U2VyaWFsaXplcigpOworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5idWlsZCgpCisgICAgICAgICAgICAgICAgLmFkZChWZXJ0ZXhQcm9wZXJ0eS5jbGFzcywgZXhwZWN0ZWRGb3JWZXJ0ZXhQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAuYWRkKFByb3BlcnR5LmNsYXNzLCBleHBlY3RlZEZvclByb3BlcnR5KS5jcmVhdGUoKTsKKworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkRm9yVmVydGV4UHJvcGVydHksIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoVmVydGV4UHJvcGVydHkuY2xhc3MpKTsKKyAgICAgICAgYXNzZXJ0U2FtZShleHBlY3RlZEZvclByb3BlcnR5LCByZWdpc3RyeS5nZXRTZXJpYWxpemVyKFByb3BlcnR5LmNsYXNzKSk7CisgICAgICAgIGFzc2VydFNhbWUoZXhwZWN0ZWRGb3JWZXJ0ZXhQcm9wZXJ0eSwgcmVnaXN0cnkuZ2V0U2VyaWFsaXplcihEYXRhVHlwZS5WRVJURVhQUk9QRVJUWSkpOworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkRm9yUHJvcGVydHksIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoRGF0YVR5cGUuUFJPUEVSVFkpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFVzZUZhbGxiYWNrUmVzb2x2ZXJXaGVuVGhlcmVJc05vTWF0Y2goKSB7CisgICAgICAgIGZpbmFsIGludFtdIGNhbGxlZCA9IHswfTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeSA9IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKQorICAgICAgICAgICAgICAgIC53aXRoRmFsbGJhY2tSZXNvbHZlcih0IC0+IHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGVkWzBdKys7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIH0pLmNyZWF0ZSgpOworCisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoU2FtcGxlUGVyc29uLmNsYXNzKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBleC5nZXRNZXNzYWdlKCk7CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnRFcXVhbHMoIlNlcmlhbGl6ZXIgZm9yIHR5cGUgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS50eXBlcy5zYW1wbGUuU2FtcGxlUGVyc29uIG5vdCBmb3VuZCIsIG1lc3NhZ2UpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgY2FsbGVkWzBdKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFVzZUZhbGxiYWNrUmVzb2x2ZXJSZXR1cm5WYWx1ZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFR5cGVTZXJpYWxpemVyIGV4cGVjdGVkID0gbmV3IFNhbXBsZVBlcnNvblNlcmlhbGl6ZXIoKTsKKyAgICAgICAgZmluYWwgaW50W10gY2FsbGVkID0gezB9OworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5idWlsZCgpCisgICAgICAgICAgICAgICAgLndpdGhGYWxsYmFja1Jlc29sdmVyKHQgLT4geworICAgICAgICAgICAgICAgICAgICBjYWxsZWRbMF0rKzsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkOworICAgICAgICAgICAgICAgIH0pLmNyZWF0ZSgpOworCisgICAgICAgIFR5cGVTZXJpYWxpemVyPFNhbXBsZVBlcnNvbj4gc2VyaWFsaXplciA9IHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoU2FtcGxlUGVyc29uLmNsYXNzKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGNhbGxlZFswXSk7CisgICAgICAgIGFzc2VydFNhbWUoZXhwZWN0ZWQsIHNlcmlhbGl6ZXIpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFRlc3RWZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIgZXh0ZW5kcyBUZXN0QmFzZVR5cGVTZXJpYWxpemVyPFZlcnRleFByb3BlcnR5PiB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBEYXRhVHlwZSBnZXREYXRhVHlwZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZS5WRVJURVhQUk9QRVJUWTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFRlc3RQcm9wZXJ0eVNlcmlhbGl6ZXIgZXh0ZW5kcyBUZXN0QmFzZVR5cGVTZXJpYWxpemVyPFByb3BlcnR5PiB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBEYXRhVHlwZSBnZXREYXRhVHlwZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZS5QUk9QRVJUWTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFRlc3RVVUlEU2VyaWFsaXplciBleHRlbmRzIFRlc3RCYXNlVHlwZVNlcmlhbGl6ZXI8VVVJRD4geworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgRGF0YVR5cGUgZ2V0RGF0YVR5cGUoKSB7CisgICAgICAgICAgICByZXR1cm4gRGF0YVR5cGUuVVVJRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGFic3RyYWN0IGNsYXNzIFRlc3RCYXNlVHlwZVNlcmlhbGl6ZXI8VD4gaW1wbGVtZW50cyBUeXBlU2VyaWFsaXplcjxUPiB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVCByZWFkKEJ1ZmZlciBidWZmZXIsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUIHJlYWRWYWx1ZShCdWZmZXIgYnVmZmVyLCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0LCBib29sZWFuIG51bGxhYmxlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZShUIHZhbHVlLCBCdWZmZXIgYnVmZmVyLCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB7CisKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZVZhbHVlKFQgdmFsdWUsIEJ1ZmZlciBidWZmZXIsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQsIGJvb2xlYW4gbnVsbGFibGUpIHsKKworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL0NoYXJTZXJpYWxpemVyVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL0NoYXJTZXJpYWxpemVyVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzhjOTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvdHlwZXMvQ2hhclNlcmlhbGl6ZXJUZXN0LmphdmEKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWQ7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLlVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuTmV0dHlCdWZmZXJGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5QYXJhbWV0ZXJpemVkOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKK0BSdW5XaXRoKFBhcmFtZXRlcml6ZWQuY2xhc3MpCitwdWJsaWMgY2xhc3MgQ2hhclNlcmlhbGl6ZXJUZXN0IHsKKyAgICBwcml2YXRlIGZpbmFsIEJ5dGVCdWZBbGxvY2F0b3IgYWxsb2NhdG9yID0gbmV3IFVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcihmYWxzZSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciByZWFkZXIgPSBuZXcgR3JhcGhCaW5hcnlSZWFkZXIoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciB3cml0ZXIgPSBuZXcgR3JhcGhCaW5hcnlXcml0ZXIoKTsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcnMobmFtZSA9ICJDaGFyYWN0ZXI9ezB9IikKKyAgICBwdWJsaWMgc3RhdGljIENvbGxlY3Rpb24gaW5wdXQoKSB7CisgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7J2EnLCBuZXcgYnl0ZVtdeyAweDYxIH19LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7J2InLCBuZXcgYnl0ZVtdeyAweDYyIH19LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7JyQnLCBuZXcgYnl0ZVtdeyAweDI0IH19LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7J8KiJywgbmV3IGJ5dGVbXXsgKGJ5dGUpMHhjMiwgKGJ5dGUpMHhhMiB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyfigqwnLCBuZXcgYnl0ZVtdeyAoYnl0ZSkweGUyLCAoYnl0ZSkweDgyLCAoYnl0ZSkweGFjIH19LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7J+CkuScsIG5ldyBieXRlW117IChieXRlKTB4ZTAsIChieXRlKTB4YTQsIChieXRlKTB4YjkgfX0pOworICAgIH0KKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDApCisgICAgcHVibGljIGNoYXIgY2hhclZhbHVlOworCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVyKHZhbHVlID0gMSkKKyAgICBwdWJsaWMgYnl0ZVtdIGJ5dGVBcnJheTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgcmVhZFZhbHVlVGVzdCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENoYXJhY3RlciBhY3R1YWwgPSByZWFkZXIucmVhZFZhbHVlKAorICAgICAgICAgICAgICAgIGJ1ZmZlckZhY3RvcnkuY3JlYXRlKFVucG9vbGVkLndyYXBwZWRCdWZmZXIoYnl0ZUFycmF5KSksQ2hhcmFjdGVyLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGFzc2VydEVxdWFscyhjaGFyVmFsdWUsIGFjdHVhbC5jaGFyVmFsdWUoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB3cml0ZVZhbHVlVGVzdCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ1ZmZlciBhY3R1YWwgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShhbGxvY2F0b3IuYnVmZmVyKCkpOworICAgICAgICB3cml0ZXIud3JpdGVWYWx1ZShjaGFyVmFsdWUsIGFjdHVhbCwgZmFsc2UpOworICAgICAgICBmaW5hbCBieXRlW10gYWN0dWFsQnl0ZXMgPSBuZXcgYnl0ZVtieXRlQXJyYXkubGVuZ3RoXTsKKyAgICAgICAgYWN0dWFsLnJlYWRCeXRlcyhhY3R1YWxCeXRlcyk7CisgICAgICAgIGFzc2VydFRydWUoQXJyYXlzLmRlZXBFcXVhbHMobmV3IGJ5dGVbXVtde2J5dGVBcnJheX0sIG5ldyBieXRlW11bXXthY3R1YWxCeXRlc30pKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvdHlwZXMvc2FtcGxlL1NhbXBsZVBlcnNvbi5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL3NhbXBsZS9TYW1wbGVQZXJzb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDRkMDVhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL3NhbXBsZS9TYW1wbGVQZXJzb24uamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS50eXBlcy5zYW1wbGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKKworLyoqCisgKiBBIHNhbXBsZSBjdXN0b20gZGF0YSB0eXBlIGNvbnRhaW5pbmcgZmV3IHByb3BlcnRpZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBTYW1wbGVQZXJzb24geworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG5hbWU7CisgICAgcHJpdmF0ZSBmaW5hbCBEYXRlIGJpcnRoRGF0ZTsKKworICAgIFNhbXBsZVBlcnNvbihmaW5hbCBTdHJpbmcgbmFtZSwgZmluYWwgRGF0ZSBiaXJ0aERhdGUpIHsKKyAgICAgICAgT2JqZWN0cy5yZXF1aXJlTm9uTnVsbChuYW1lKTsKKyAgICAgICAgT2JqZWN0cy5yZXF1aXJlTm9uTnVsbChiaXJ0aERhdGUpOworCisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMuYmlydGhEYXRlID0gYmlydGhEYXRlOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgcHVibGljIERhdGUgZ2V0QmlydGhEYXRlKCkgeworICAgICAgICByZXR1cm4gYmlydGhEYXRlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9zYW1wbGUvU2FtcGxlUGVyc29uU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL3NhbXBsZS9TYW1wbGVQZXJzb25TZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5ZTVkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9zYW1wbGUvU2FtcGxlUGVyc29uU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS50eXBlcy5zYW1wbGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyaWFsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzLkN1c3RvbVR5cGVTZXJpYWxpemVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LlN0YW5kYXJkQ2hhcnNldHM7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKy8qKgorICogQSBzYW1wbGUgY3VzdG9tIHR5cGUgc2VyaWFsaXplci4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFNhbXBsZVBlcnNvblNlcmlhbGl6ZXIgaW1wbGVtZW50cyBDdXN0b21UeXBlU2VyaWFsaXplcjxTYW1wbGVQZXJzb24+IHsKKyAgICBwcml2YXRlIGZpbmFsIGJ5dGVbXSB0eXBlSW5mb0J1ZmZlciA9IG5ldyBieXRlW10geyAwLCAwLCAwLCAwIH07CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGVOYW1lKCkgeworICAgICAgICByZXR1cm4gInNhbXBsZVByb3ZpZGVyLlNhbXBsZVBlcnNvbiI7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIERhdGFUeXBlIGdldERhdGFUeXBlKCkgeworICAgICAgICByZXR1cm4gRGF0YVR5cGUuQ1VTVE9NOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTYW1wbGVQZXJzb24gcmVhZChmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAvLyB7Y3VzdG9tIHR5cGUgaW5mb30sIHt2YWx1ZV9mbGFnfSBhbmQge3ZhbHVlfQorICAgICAgICAvLyBObyBjdXN0b21fdHlwZV9pbmZvCisgICAgICAgIGlmIChidWZmZXIucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uKCJ7Y3VzdG9tX3R5cGVfaW5mb30gc2hvdWxkIG5vdCBiZSBwcm92aWRlZCBmb3IgdGhpcyBjdXN0b20gdHlwZSIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlYWRWYWx1ZShidWZmZXIsIGNvbnRleHQsIHRydWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTYW1wbGVQZXJzb24gcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChudWxsYWJsZSkgeworICAgICAgICAgICAgZmluYWwgYnl0ZSB2YWx1ZUZsYWcgPSBidWZmZXIucmVhZEJ5dGUoKTsKKyAgICAgICAgICAgIGlmICgodmFsdWVGbGFnICYgMSkgPT0gMSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVhZCB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHZhbHVlIGJ5dGVzCisgICAgICAgIGZpbmFsIGludCB2YWx1ZUxlbmd0aCA9IGJ1ZmZlci5yZWFkSW50KCk7CisKKyAgICAgICAgaWYgKHZhbHVlTGVuZ3RoIDw9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlVuZXhwZWN0ZWQgdmFsdWUgbGVuZ3RoOiAlZCIsIHZhbHVlTGVuZ3RoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWVMZW5ndGggPiBidWZmZXIucmVhZGFibGVCeXRlcygpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJOb3QgZW5vdWdoIHJlYWRhYmxlIGJ5dGVzOiAlZCAoZXhwZWN0ZWQgJWQpIiwgdmFsdWVMZW5ndGgsIGJ1ZmZlci5yZWFkYWJsZUJ5dGVzKCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgRGF0ZSBiaXJ0aERhdGUgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIERhdGUuY2xhc3MsIGZhbHNlKTsKKworICAgICAgICByZXR1cm4gbmV3IFNhbXBsZVBlcnNvbihuYW1lLCBiaXJ0aERhdGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHdyaXRlKGZpbmFsIFNhbXBsZVBlcnNvbiB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gV3JpdGUge2N1c3RvbSB0eXBlIGluZm99LCB7dmFsdWVfZmxhZ30gYW5kIHt2YWx1ZX0KKyAgICAgICAgYnVmZmVyLndyaXRlQnl0ZXModHlwZUluZm9CdWZmZXIpOworCisgICAgICAgIHdyaXRlVmFsdWUodmFsdWUsIGJ1ZmZlciwgY29udGV4dCwgdHJ1ZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBTYW1wbGVQZXJzb24gdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIW51bGxhYmxlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FeGNlcHRpb24oIlVuZXhwZWN0ZWQgbnVsbCB2YWx1ZSB3aGVuIG51bGxhYmxlIGlzIGZhbHNlIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZUZsYWdOdWxsKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVsbGFibGUpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZUZsYWdOb25lKGJ1ZmZlcik7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IHZhbHVlLmdldE5hbWUoKTsKKworICAgICAgICAvLyB2YWx1ZV9sZW5ndGggPSBuYW1lX2J5dGVfbGVuZ3RoICsgbmFtZV9ieXRlcyArIGxvbmcKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KDQgKyBuYW1lLmdldEJ5dGVzKFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpLmxlbmd0aCArIDgpOworCisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShuYW1lLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldEJpcnRoRGF0ZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvdHlwZXMvc2FtcGxlL1NhbXBsZVBlcnNvblNlcmlhbGl6ZXJUZXN0LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvdHlwZXMvc2FtcGxlL1NhbXBsZVBlcnNvblNlcmlhbGl6ZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q2YmVmMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9zYW1wbGUvU2FtcGxlUGVyc29uU2VyaWFsaXplclRlc3QuamF2YQpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkudHlwZXMuc2FtcGxlOworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWY7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLk5ldHR5QnVmZmVyRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkFic3RyYWN0SW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5SW87CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcubW9ja2l0by5pbnRlcm5hbC5tYXRjaGVycy5hcGFjaGVjb21tb25zLlJlZmxlY3Rpb25FcXVhbHM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVUaW1lOworaW1wb3J0IGphdmEudGltZS5ab25lT2Zmc2V0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5VVUlEOworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5BYnN0cmFjdE1lc3NhZ2VTZXJpYWxpemVyLlRPS0VOX0lPX1JFR0lTVFJJRVM7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEuVE9LRU5fQ1VTVE9NOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CisKK3B1YmxpYyBjbGFzcyBTYW1wbGVQZXJzb25TZXJpYWxpemVyVGVzdCB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IEJ5dGVCdWZBbGxvY2F0b3IuREVGQVVMVDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBOZXR0eUJ1ZmZlckZhY3RvcnkgYnVmZmVyRmFjdG9yeSA9IG5ldyBOZXR0eUJ1ZmZlckZhY3RvcnkoKTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkQ3VzdG9tU2VyaWFsaXphdGlvbldpdGhQZXJzb24oKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgc2VyaWFsaXplciA9IG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoCisgICAgICAgICAgICAgICAgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5idWlsZCgpLmFkZEN1c3RvbVR5cGUoU2FtcGxlUGVyc29uLmNsYXNzLCBuZXcgU2FtcGxlUGVyc29uU2VyaWFsaXplcigpKS5jcmVhdGUoKSk7CisgICAgICAgIGFzc2VydFBlcnNvbihzZXJpYWxpemVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFNlcmlhbGl6ZVBlcnNvblZpYUlvUmVnaXN0cnkoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgc2VyaWFsaXplciA9IG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGNvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgY29uZmlnLnB1dChUT0tFTl9JT19SRUdJU1RSSUVTLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KEN1c3RvbUlvUmVnaXN0cnkuY2xhc3MuZ2V0TmFtZSgpKSk7CisgICAgICAgIHNlcmlhbGl6ZXIuY29uZmlndXJlKGNvbmZpZywgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSk7CisKKyAgICAgICAgYXNzZXJ0UGVyc29uKHNlcmlhbGl6ZXIpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VyaWFsaXplUGVyc29uVmlhQ3VzdG9tKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIHNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKCk7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBjb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIGNvbmZpZy5wdXQoVE9LRU5fQ1VTVE9NLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KFN0cmluZy5mb3JtYXQoIiVzOyVzIiwKKyAgICAgICAgICAgICAgICBTYW1wbGVQZXJzb24uY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpLCBTYW1wbGVQZXJzb25TZXJpYWxpemVyLmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSkpKTsKKyAgICAgICAgc2VyaWFsaXplci5jb25maWd1cmUoY29uZmlnLCBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKTsKKworICAgICAgICBhc3NlcnRQZXJzb24oc2VyaWFsaXplcik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCByZWFkVmFsdWVBbmRXcml0ZVZhbHVlU2hvdWxkQmVTeW1tZXRyaWMoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5idWlsZCgpCisgICAgICAgICAgICAgICAgLmFkZEN1c3RvbVR5cGUoU2FtcGxlUGVyc29uLmNsYXNzLCBuZXcgU2FtcGxlUGVyc29uU2VyaWFsaXplcigpKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgcmVhZGVyID0gbmV3IEdyYXBoQmluYXJ5UmVhZGVyKHJlZ2lzdHJ5KTsKKyAgICAgICAgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgd3JpdGVyID0gbmV3IEdyYXBoQmluYXJ5V3JpdGVyKHJlZ2lzdHJ5KTsKKworICAgICAgICBmaW5hbCBTYW1wbGVQZXJzb24gcGVyc29uID0gbmV3IFNhbXBsZVBlcnNvbigiTWF0aWFzIiwKKyAgICAgICAgICAgICAgICBEYXRlLmZyb20oTG9jYWxEYXRlVGltZS5vZigyMDA1LCA4LCA1LCAxLCAwKS50b0luc3RhbnQoWm9uZU9mZnNldC5VVEMpKSk7CisKKyAgICAgICAgZm9yIChib29sZWFuIG51bGxhYmxlOiBuZXcgYm9vbGVhbltdIHsgdHJ1ZSwgZmFsc2UgfSkgeworICAgICAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoKSk7CisgICAgICAgICAgICB3cml0ZXIud3JpdGVWYWx1ZShwZXJzb24sIGJ1ZmZlciwgbnVsbGFibGUpOworICAgICAgICAgICAgZmluYWwgU2FtcGxlUGVyc29uIGFjdHVhbCA9IHJlYWRlci5yZWFkVmFsdWUoYnVmZmVyLCBTYW1wbGVQZXJzb24uY2xhc3MsIG51bGxhYmxlKTsKKworICAgICAgICAgICAgYXNzZXJ0VGhhdChhY3R1YWwsIG5ldyBSZWZsZWN0aW9uRXF1YWxzKHBlcnNvbikpOworICAgICAgICAgICAgYnVmZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRQZXJzb24oZmluYWwgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIHNlcmlhbGl6ZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIERhdGUgYmlydGhEYXRlID0gRGF0ZS5mcm9tKExvY2FsRGF0ZVRpbWUub2YoMjAxMCwgNCwgMjksIDUsIDMwKS50b0luc3RhbnQoWm9uZU9mZnNldC5VVEMpKTsKKyAgICAgICAgZmluYWwgU2FtcGxlUGVyc29uIHBlcnNvbiA9IG5ldyBTYW1wbGVQZXJzb24oIk9saXZpYSIsIGJpcnRoRGF0ZSk7CisKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBzZXJpYWxpemVkID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KAorICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5idWlsZChVVUlELnJhbmRvbVVVSUQoKSkucmVzdWx0KHBlcnNvbikuY3JlYXRlKCksIGFsbG9jYXRvcik7CisKKyAgICAgICAgZmluYWwgUmVzcG9uc2VNZXNzYWdlIGRlc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXNwb25zZShzZXJpYWxpemVkKTsKKworICAgICAgICBmaW5hbCBTYW1wbGVQZXJzb24gYWN0dWFsID0gKFNhbXBsZVBlcnNvbikgZGVzZXJpYWxpemVkLmdldFJlc3VsdCgpLmdldERhdGEoKTsKKyAgICAgICAgYXNzZXJ0VGhhdChhY3R1YWwsIG5ldyBSZWZsZWN0aW9uRXF1YWxzKHBlcnNvbikpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ3VzdG9tSW9SZWdpc3RyeSBleHRlbmRzIEFic3RyYWN0SW9SZWdpc3RyeSB7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEN1c3RvbUlvUmVnaXN0cnkgaW9yZWcgPSBuZXcgQ3VzdG9tSW9SZWdpc3RyeSgpOworCisgICAgICAgIHByaXZhdGUgQ3VzdG9tSW9SZWdpc3RyeSgpIHsKKyAgICAgICAgICAgIHJlZ2lzdGVyKEdyYXBoQmluYXJ5SW8uY2xhc3MsIFNhbXBsZVBlcnNvbi5jbGFzcywgbmV3IFNhbXBsZVBlcnNvblNlcmlhbGl6ZXIoKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIEN1c3RvbUlvUmVnaXN0cnkgaW5zdGFuY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gaW9yZWc7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9wb20ueG1sIGIvZ3JlbWxpbi1ncm9vdnkvcG9tLnhtbAppbmRleCA2ODY2ODU0Li42OTk5N2QzIDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9wb20ueG1sCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tZ3Jvb3Z5PC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbiBHcm9vdnk8L25hbWU+CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lLmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lLmphdmEKaW5kZXggMThkMTBmZi4uNmU2ODU3ZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZS5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUuamF2YQpAQCAtOTAsOCArOTAsNyBAQAogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICogQHNlZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5lbmdpbmUuR3JlbWxpbkV4ZWN1dG9yCiAgKi8KLXB1YmxpYyBjbGFzcyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGV4dGVuZHMgR3Jvb3Z5U2NyaXB0RW5naW5lSW1wbAotICAgICAgICBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUsIEdyZW1saW5TY3JpcHRFbmdpbmUgeworcHVibGljIGNsYXNzIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZXh0ZW5kcyBHcm9vdnlTY3JpcHRFbmdpbmVJbXBsIGltcGxlbWVudHMgR3JlbWxpblNjcmlwdEVuZ2luZSB7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZS5jbGFzcyk7CiAgICAgLyoqCkBAIC0yNTksNyArMjU4LDcgQEAKICAgICAgICAgICAgICAgICBmaWx0ZXIocCAtPiBwIGluc3RhbmNlb2YgVHJhbnNsYXRvckN1c3RvbWl6ZXIpLgogICAgICAgICAgICAgICAgIG1hcChwIC0+IChUcmFuc2xhdG9yQ3VzdG9taXplcikgcCkuZmluZEZpcnN0KCk7CiAgICAgICAgIHR5cGVUcmFuc2xhdG9yID0gdHJhbnNsYXRvckN1c3RvbWl6ZXIubWFwKFRyYW5zbGF0b3JDdXN0b21pemVyOjpjcmVhdGVUeXBlVHJhbnNsYXRvcikuCi0gICAgICAgICAgICAgICAgb3JFbHNlKFRyYW5zbGF0b3IuU2NyaXB0VHJhbnNsYXRvci5UeXBlVHJhbnNsYXRvci5pZGVudGl0eSgpKTsKKyAgICAgICAgICAgICAgICBvckVsc2VHZXQoR3Jvb3Z5VHJhbnNsYXRvci5EZWZhdWx0VHlwZVRyYW5zbGF0b3I6Om5ldyk7CiAKICAgICAgICAgY3JlYXRlQ2xhc3NMb2FkZXIoKTsKICAgICB9CkBAIC0yOTgsMTUgKzI5Nyw2IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuNCwgbm90IHJlcGxhY2VkIGFzIHRoaXMgY2xhc3Mgd2lsbCBub3QgaW1wbGVtZW50IHtAY29kZSBBdXRvQ2xvc2VhYmxlfSBpbiB0aGUKLSAgICAgKiBmdXR1cmUuCi0gICAgICovCi0gICAgQE92ZXJyaWRlCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIH0KLQotICAgIC8qKgogICAgICAqIFJlc2V0cyB0aGUgZW50aXJlIHtAY29kZSBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lfSBieSBjbGVhcmluZyBzY3JpcHQgY2FjaGVzLCByZWNyZWF0aW5nIHRoZSBjbGFzc2xvYWRlciwKICAgICAgKiBjbGVhcmluZyBiaW5kaW5ncy4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3IuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3IuamF2YQppbmRleCBiYTE0OTk2Li41MDVmODhhIDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yLmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5VHJhbnNsYXRvci5qYXZhCkBAIC0yNCw2ICsyNCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TYWNrRnVuY3Rpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmFuc2xhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU291cmNlOwpAQCAtNjksMTggKzcwLDE5IEBACiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBHcm9vdnlUcmFuc2xhdG9yIG9mKGZpbmFsIFN0cmluZyB0cmF2ZXJzYWxTb3VyY2UpIHsKLSAgICAgICAgcmV0dXJuIG9mKHRyYXZlcnNhbFNvdXJjZSwgVHlwZVRyYW5zbGF0b3IuaWRlbnRpdHkoKSk7CisgICAgICAgIHJldHVybiBvZih0cmF2ZXJzYWxTb3VyY2UsIG51bGwpOwogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgR3Jvb3Z5VHJhbnNsYXRvciBvZihmaW5hbCBTdHJpbmcgdHJhdmVyc2FsU291cmNlLCBmaW5hbCBUeXBlVHJhbnNsYXRvciB0eXBlVHJhbnNsYXRvcikgewotICAgICAgICByZXR1cm4gbmV3IEdyb292eVRyYW5zbGF0b3IodHJhdmVyc2FsU291cmNlLCBPcHRpb25hbC5vZk51bGxhYmxlKHR5cGVUcmFuc2xhdG9yKS5vckVsc2UoVHlwZVRyYW5zbGF0b3IuaWRlbnRpdHkoKSkpOworICAgICAgICByZXR1cm4gbmV3IEdyb292eVRyYW5zbGF0b3IodHJhdmVyc2FsU291cmNlLAorICAgICAgICAgICAgICAgIE9wdGlvbmFsLm9mTnVsbGFibGUodHlwZVRyYW5zbGF0b3IpLm9yRWxzZUdldChEZWZhdWx0VHlwZVRyYW5zbGF0b3I6Om5ldykpOwogICAgIH0KIAogICAgIC8vLy8vLy8KIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTdHJpbmcgdHJhbnNsYXRlKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsVHJhbnNsYXRlKHRoaXMudHJhdmVyc2FsU291cmNlLCBieXRlY29kZSk7CisgICAgICAgIHJldHVybiB0eXBlVHJhbnNsYXRvci5hcHBseSh0cmF2ZXJzYWxTb3VyY2UsIGJ5dGVjb2RlKS50b1N0cmluZygpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtOTgsMTcwICsxMDAsMTgxIEBACiAgICAgICAgIHJldHVybiB0aGlzLnRyYXZlcnNhbFNvdXJjZTsKICAgICB9CiAKLSAgICAvLy8vLy8vCisgICAgLyoqCisgICAgICogUGVyZm9ybXMgc3RhbmRhcmQgdHlwZSB0cmFuc2xhdGlvbiBmb3IgdGhlIFRpbmtlclBvcCB0eXBlcyB0byBHcm9vdnkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBEZWZhdWx0VHlwZVRyYW5zbGF0b3IgaW1wbGVtZW50cyBUeXBlVHJhbnNsYXRvciB7CiAKLSAgICBwcml2YXRlIFN0cmluZyBpbnRlcm5hbFRyYW5zbGF0ZShmaW5hbCBTdHJpbmcgc3RhcnQsIGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB7Ci0gICAgICAgIGZpbmFsIFN0cmluZ0J1aWxkZXIgdHJhdmVyc2FsU2NyaXB0ID0gbmV3IFN0cmluZ0J1aWxkZXIoc3RhcnQpOwotICAgICAgICBmb3IgKGZpbmFsIEJ5dGVjb2RlLkluc3RydWN0aW9uIGluc3RydWN0aW9uIDogYnl0ZWNvZGUuZ2V0SW5zdHJ1Y3Rpb25zKCkpIHsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtZXRob2ROYW1lID0gaW5zdHJ1Y3Rpb24uZ2V0T3BlcmF0b3IoKTsKLSAgICAgICAgICAgIGlmICgwID09IGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpLmxlbmd0aCkKLSAgICAgICAgICAgICAgICB0cmF2ZXJzYWxTY3JpcHQuYXBwZW5kKCIuIikuYXBwZW5kKG1ldGhvZE5hbWUpLmFwcGVuZCgiKCkiKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRyYXZlcnNhbFNjcmlwdC5hcHBlbmQoIi4iKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgdGVtcCA9IG1ldGhvZE5hbWUgKyAiKCI7Ci0KLSAgICAgICAgICAgICAgICAvLyBoYXZlIHRvIHNwZWNpYWwgY2FzZSB3aXRoU2FjaygpIGZvciBHcm9vdnkgYmVjYXVzZSBVbmFyeU9wZXJhdG9yIGFuZCBCaW5hcnlPcGVyYXRvciBzaWduYXR1cmVzCi0gICAgICAgICAgICAgICAgLy8gbWFrZSBpdCBpbXBvc3NpYmxlIGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbiB0byBjYWxsLiBzcGVjaWZpY2FsbHkgd2UgbmVlZAotICAgICAgICAgICAgICAgIC8vIHRvIGRpc2Nlcm4gYmV0d2VlbjoKLSAgICAgICAgICAgICAgICAvLyAgICAgd2l0aFNhY2soQSBpbml0aWFsVmFsdWUsIFVuYXJ5T3BlcmF0b3I8QT4gc3BsaXRPcGVyYXRvcikKLSAgICAgICAgICAgICAgICAvLyAgICAgd2l0aFNhY2soQSBpbml0aWFsVmFsdWUsIEJpbmFyeU9wZXJhdG9yPEE+IHNwbGl0T3BlcmF0b3IpCi0gICAgICAgICAgICAgICAgLy8gYW5kOgotICAgICAgICAgICAgICAgIC8vICAgICB3aXRoU2FjayhTdXBwbGllcjxBPiBpbml0aWFsVmFsdWUsIFVuYXJ5T3BlcmF0b3I8QT4gbWVyZ2VPcGVyYXRvcikKLSAgICAgICAgICAgICAgICAvLyAgICAgd2l0aFNhY2soU3VwcGxpZXI8QT4gaW5pdGlhbFZhbHVlLCBCaW5hcnlPcGVyYXRvcjxBPiBtZXJnZU9wZXJhdG9yKQotICAgICAgICAgICAgICAgIGlmIChtZXRob2ROYW1lLmVxdWFscyhUcmF2ZXJzYWxTb3VyY2UuU3ltYm9scy53aXRoU2FjaykgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpLmxlbmd0aCA9PSAyICYmIGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzFdIGluc3RhbmNlb2YgTGFtYmRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjYXN0Rmlyc3RBcmdUbyA9IGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzBdIGluc3RhbmNlb2YgTGFtYmRhID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwbGllci5jbGFzcy5nZXROYW1lKCkgOiAiIjsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgTGFtYmRhIHNlY29uZEFyZyA9IChMYW1iZGEpIGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzFdOwotICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2FzdFNlY29uZEFyZ1RvID0gc2Vjb25kQXJnLmdldExhbWJkYUFyZ3VtZW50cygpID09IDEgPyBVbmFyeU9wZXJhdG9yLmNsYXNzLmdldE5hbWUoKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5T3BlcmF0b3IuY2xhc3MuZ2V0TmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNhc3RGaXJzdEFyZ1RvLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wICsgU3RyaW5nLmZvcm1hdCgiKCVzKSAiLCBjYXN0Rmlyc3RBcmdUbyk7Ci0gICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wICsgU3RyaW5nLmZvcm1hdCgiJXMsICglcykgJXMsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKClbMF0pLCBjYXN0U2Vjb25kQXJnVG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKClbMV0pKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIE9iamVjdCBvYmplY3QgOiBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAgKyBjb252ZXJ0VG9TdHJpbmcob2JqZWN0KSArICIsIjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0cmF2ZXJzYWxTY3JpcHQuYXBwZW5kKHRlbXAuc3Vic3RyaW5nKDAsIHRlbXAubGVuZ3RoKCkgLSAxKSkuYXBwZW5kKCIpIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRyYXZlcnNhbFNjcmlwdC50b1N0cmluZygpOwotICAgIH0KLQotICAgIHByaXZhdGUgU3RyaW5nIGNvbnZlcnRUb1N0cmluZyhmaW5hbCBPYmplY3QgbykgewotICAgICAgICAvLyBhIFR5cGVUcmFuc2xhdG9yIHRoYXQgcmV0dXJucyBIYW5kbGVkIG1lYW5zIHRoYXQgdGhlIHR5cGV0cmFuc2xhdG9yIGZpZ3VyZSBvdXQgaG93IHRvIGNvbnZlcnQgdGhlCi0gICAgICAgIC8vIG9iamVjdCB0byBhIHN0cmluZyBhbmQgaXQgc2hvdWxkIGJlIHVzZWQgYXMtaXMsIG90aGVyd2lzZSBpdCBnZXRzIHBhc3NlZCBkb3duIHRoZSBsaW5lIHRocm91Z2ggdGhlIG5vcm1hbAotICAgICAgICAvLyBwcm9jZXNzCi0gICAgICAgIGZpbmFsIE9iamVjdCBvYmplY3QgPSB0eXBlVHJhbnNsYXRvci5hcHBseShvKTsKLQotICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgSGFuZGxlZCkKLSAgICAgICAgICAgIHJldHVybiAoKEhhbmRsZWQpIG9iamVjdCkuZ2V0VHJhbnNsYXRpb24oKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgQnl0ZWNvZGUuQmluZGluZykKLSAgICAgICAgICAgIHJldHVybiAoKEJ5dGVjb2RlLkJpbmRpbmcpIG9iamVjdCkudmFyaWFibGUoKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgQnl0ZWNvZGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFRyYW5zbGF0ZSgiX18iLCAoQnl0ZWNvZGUpIG9iamVjdCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRyYXZlcnNhbCkKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9TdHJpbmcoKChUcmF2ZXJzYWwpIG9iamVjdCkuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkpOwotICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiAoKChTdHJpbmcpIG9iamVjdCkuY29udGFpbnMoIlwiIikgPyAiXCJcIlwiIiArIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZUphdmEoKFN0cmluZykgb2JqZWN0KSArICJcIlwiXCIiIDogIlwiIiArIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZUphdmEoKFN0cmluZykgb2JqZWN0KSArICJcIiIpCi0gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCIkIiwgIlxcJCIpOwotICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFNldCkgewotICAgICAgICAgICAgZmluYWwgU2V0PFN0cmluZz4gc2V0ID0gbmV3IEhhc2hTZXQ8PigoKFNldCkgb2JqZWN0KS5zaXplKCkpOwotICAgICAgICAgICAgZm9yIChmaW5hbCBPYmplY3QgaXRlbSA6IChTZXQpIG9iamVjdCkgewotICAgICAgICAgICAgICAgIHNldC5hZGQoY29udmVydFRvU3RyaW5nKGl0ZW0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzZXQudG9TdHJpbmcoKSArICIgYXMgU2V0IjsKLSAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBMaXN0KSB7Ci0gICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8PigoKExpc3QpIG9iamVjdCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAoZmluYWwgT2JqZWN0IGl0ZW0gOiAoTGlzdCkgb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgbGlzdC5hZGQoY29udmVydFRvU3RyaW5nKGl0ZW0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsaXN0LnRvU3RyaW5nKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgTWFwKSB7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmdCdWlsZGVyIG1hcCA9IG5ldyBTdHJpbmdCdWlsZGVyKCJbIik7Ci0gICAgICAgICAgICBmb3IgKGZpbmFsIE1hcC5FbnRyeTw/LCA/PiBlbnRyeSA6ICgoTWFwPD8sID8+KSBvYmplY3QpLmVudHJ5U2V0KCkpIHsKLSAgICAgICAgICAgICAgICBtYXAuYXBwZW5kKCIoIikuCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoY29udmVydFRvU3RyaW5nKGVudHJ5LmdldEtleSgpKSkuCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoIik6KCIpLgotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGNvbnZlcnRUb1N0cmluZyhlbnRyeS5nZXRWYWx1ZSgpKSkuCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoIiksIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIG9ubHkgbmVlZCB0byByZW1vdmUgdGhpcyBsYXN0IGJpdCBpZiBlbnRyaWVzIHdlcmUgYWRkZWQKLSAgICAgICAgICAgIGlmICghKChNYXA8PywgPz4pIG9iamVjdCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG1hcC5kZWxldGVDaGFyQXQobWFwLmxlbmd0aCgpIC0gMSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBtYXAuYXBwZW5kKCJdIikudG9TdHJpbmcoKTsKLSAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBMb25nKQotICAgICAgICAgICAgcmV0dXJuIG9iamVjdCArICJMIjsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRG91YmxlKQotICAgICAgICAgICAgcmV0dXJuIG9iamVjdCArICJkIjsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRmxvYXQpCi0gICAgICAgICAgICByZXR1cm4gb2JqZWN0ICsgImYiOwotICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBJbnRlZ2VyKQotICAgICAgICAgICAgcmV0dXJuICIoaW50KSAiICsgb2JqZWN0OwotICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBDbGFzcykKLSAgICAgICAgICAgIHJldHVybiAoKENsYXNzKSBvYmplY3QpLmdldENhbm9uaWNhbE5hbWUoKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVGltZXN0YW1wKQotICAgICAgICAgICAgcmV0dXJuICJuZXcgamF2YS5zcWwuVGltZXN0YW1wKCIgKyAoKFRpbWVzdGFtcCkgb2JqZWN0KS5nZXRUaW1lKCkgKyAiKSI7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIERhdGUpCi0gICAgICAgICAgICByZXR1cm4gIm5ldyBqYXZhLnV0aWwuRGF0ZSgiICsgKChEYXRlKSBvYmplY3QpLmdldFRpbWUoKSArICIpIjsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVVVJRCkKLSAgICAgICAgICAgIHJldHVybiAiamF2YS51dGlsLlVVSUQuZnJvbVN0cmluZygnIiArIG9iamVjdC50b1N0cmluZygpICsgIicpIjsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgUCkKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0UFRvU3RyaW5nKChQKSBvYmplY3QsIG5ldyBTdHJpbmdCdWlsZGVyKCkpLnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFNhY2tGdW5jdGlvbnMuQmFycmllcikKLSAgICAgICAgICAgIHJldHVybiAiU2Fja0Z1bmN0aW9ucy5CYXJyaWVyLiIgKyBvYmplY3QudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gIlZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LiIgKyBvYmplY3QudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2spCi0gICAgICAgICAgICByZXR1cm4gIlRyYXZlcnNhbE9wdGlvblBhcmVudC5QaWNrLiIgKyBvYmplY3QudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRW51bSkKLSAgICAgICAgICAgIHJldHVybiAoKEVudW0pIG9iamVjdCkuZ2V0RGVjbGFyaW5nQ2xhc3MoKS5nZXRTaW1wbGVOYW1lKCkgKyAiLiIgKyBvYmplY3QudG9TdHJpbmcoKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRWxlbWVudCkgewotICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFZlcnRleCkgewotICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ZXJ0ZXggPSAoVmVydGV4KSBvYmplY3Q7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJuZXcgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFZlcnRleCgiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyh2ZXJ0ZXguaWQoKSkgKyAiLCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleC5sYWJlbCgpKSArICIsIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpIjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRWRnZSkgewotICAgICAgICAgICAgICAgIGZpbmFsIEVkZ2UgZWRnZSA9IChFZGdlKSBvYmplY3Q7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJuZXcgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZEVkZ2UoIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5pZCgpKSArICIsIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5sYWJlbCgpKSArICIsIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLm91dFZlcnRleCgpLmlkKCkpICsgIiwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLm91dFZlcnRleCgpLmxhYmVsKCkpICsgIiwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLmluVmVydGV4KCkuaWQoKSkgKyAiLCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2UuaW5WZXJ0ZXgoKS5sYWJlbCgpKSArICIpIjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ly8gVmVydGV4UHJvcGVydHkKLSAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSB2ZXJ0ZXhQcm9wZXJ0eSA9IChWZXJ0ZXhQcm9wZXJ0eSkgb2JqZWN0OwotICAgICAgICAgICAgICAgIHJldHVybiAibmV3IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eSgiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyh2ZXJ0ZXhQcm9wZXJ0eS5pZCgpKSArICIsIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4UHJvcGVydHkubGFiZWwoKSkgKyAiLCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleFByb3BlcnR5LnZhbHVlKCkpICsgIiwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICJDb2xsZWN0aW9ucy5lbXB0eU1hcCgpLCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleFByb3BlcnR5LmVsZW1lbnQoKSkgKyAiKSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgTGFtYmRhKSB7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgbGFtYmRhU3RyaW5nID0gKChMYW1iZGEpIG9iamVjdCkuZ2V0TGFtYmRhU2NyaXB0KCkudHJpbSgpOwotICAgICAgICAgICAgcmV0dXJuIGxhbWJkYVN0cmluZy5zdGFydHNXaXRoKCJ7IikgPyBsYW1iZGFTdHJpbmcgOiAieyIgKyBsYW1iZGFTdHJpbmcgKyAifSI7Ci0gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVHJhdmVyc2FsU3RyYXRlZ3lQcm94eSkgewotICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsU3RyYXRlZ3lQcm94eSBwcm94eSA9IChUcmF2ZXJzYWxTdHJhdGVneVByb3h5KSBvYmplY3Q7Ci0gICAgICAgICAgICBpZiAocHJveHkuZ2V0Q29uZmlndXJhdGlvbigpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJveHkuZ2V0U3RyYXRlZ3lDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSArICIuaW5zdGFuY2UoKSI7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgT2JqZWN0IGFwcGx5KGZpbmFsIFN0cmluZyB0cmF2ZXJzYWxTb3VyY2UsIGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgICAgICBpZiAobyBpbnN0YW5jZW9mIEJ5dGVjb2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbFRyYW5zbGF0ZSh0cmF2ZXJzYWxTb3VyY2UsIChCeXRlY29kZSkgbyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5LmdldFN0cmF0ZWd5Q2xhc3MoKS5nZXRDYW5vbmljYWxOYW1lKCkgKyAiLmNyZWF0ZShuZXcgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uTWFwQ29uZmlndXJhdGlvbigiICsgY29udmVydFRvU3RyaW5nKENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIuZ2V0TWFwKHByb3h5LmdldENvbmZpZ3VyYXRpb24oKSkpICsgIikpIjsKLSAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUcmF2ZXJzYWxTdHJhdGVneSkgewotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1N0cmluZyhuZXcgVHJhdmVyc2FsU3RyYXRlZ3lQcm94eSgoKFRyYXZlcnNhbFN0cmF0ZWd5KSBvYmplY3QpKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gb2JqZWN0ID8gIm51bGwiIDogb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9TdHJpbmcobyk7CisgICAgICAgIH0KIAotICAgIHByaXZhdGUgU3RyaW5nQnVpbGRlciBjb252ZXJ0UFRvU3RyaW5nKGZpbmFsIFAgcCwgZmluYWwgU3RyaW5nQnVpbGRlciBjdXJyZW50KSB7Ci0gICAgICAgIGlmIChwIGluc3RhbmNlb2YgQ29ubmVjdGl2ZVApIHsKLSAgICAgICAgICAgIGZpbmFsIExpc3Q8UDw/Pj4gbGlzdCA9ICgoQ29ubmVjdGl2ZVApIHApLmdldFByZWRpY2F0ZXMoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgIGNvbnZlcnRQVG9TdHJpbmcobGlzdC5nZXQoaSksIGN1cnJlbnQpOwotICAgICAgICAgICAgICAgIGlmIChpIDwgbGlzdC5zaXplKCkgLSAxKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmFwcGVuZChwIGluc3RhbmNlb2YgT3JQID8gIi5vcigiIDogIi5hbmQoIik7CisgICAgICAgIHByb3RlY3RlZCBTdHJpbmcgY29udmVydFRvU3RyaW5nKGZpbmFsIE9iamVjdCBvYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBCeXRlY29kZS5CaW5kaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiAoKEJ5dGVjb2RlLkJpbmRpbmcpIG9iamVjdCkudmFyaWFibGUoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEJ5dGVjb2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbFRyYW5zbGF0ZSgiX18iLCAoQnl0ZWNvZGUpIG9iamVjdCk7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUcmF2ZXJzYWwpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1N0cmluZygoKFRyYXZlcnNhbCkgb2JqZWN0KS5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKCgoU3RyaW5nKSBvYmplY3QpLmNvbnRhaW5zKCJcIiIpID8gIlwiXCJcIiIgKyBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVKYXZhKChTdHJpbmcpIG9iamVjdCkgKyAiXCJcIlwiIiA6ICJcIiIgKyBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVKYXZhKChTdHJpbmcpIG9iamVjdCkgKyAiXCIiKQorICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoIiQiLCAiXFwkIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFNldCkgeworICAgICAgICAgICAgICAgIGZpbmFsIFNldDxTdHJpbmc+IHNldCA9IG5ldyBIYXNoU2V0PD4oKChTZXQpIG9iamVjdCkuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIE9iamVjdCBpdGVtIDogKFNldCkgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIHNldC5hZGQoY29udmVydFRvU3RyaW5nKGl0ZW0pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHNldC50b1N0cmluZygpICsgIiBhcyBTZXQiOworICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBMaXN0KSB7CisgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKChMaXN0KSBvYmplY3QpLnNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBPYmplY3QgaXRlbSA6IChMaXN0KSBvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC5hZGQoY29udmVydFRvU3RyaW5nKGl0ZW0pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3QudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgTWFwKSB7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nQnVpbGRlciBtYXAgPSBuZXcgU3RyaW5nQnVpbGRlcigiWyIpOworICAgICAgICAgICAgICAgIGZvciAoZmluYWwgTWFwLkVudHJ5PD8sID8+IGVudHJ5IDogKChNYXA8PywgPz4pIG9iamVjdCkuZW50cnlTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBtYXAuYXBwZW5kKCIoIikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGNvbnZlcnRUb1N0cmluZyhlbnRyeS5nZXRLZXkoKSkpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgiKTooIikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGNvbnZlcnRUb1N0cmluZyhlbnRyeS5nZXRWYWx1ZSgpKSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCIpLCIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIG9ubHkgbmVlZCB0byByZW1vdmUgdGhpcyBsYXN0IGJpdCBpZiBlbnRyaWVzIHdlcmUgYWRkZWQKKyAgICAgICAgICAgICAgICBpZiAoISgoTWFwPD8sID8+KSBvYmplY3QpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbWFwLmRlbGV0ZUNoYXJBdChtYXAubGVuZ3RoKCkgLSAxKTsKKworICAgICAgICAgICAgICAgIHJldHVybiBtYXAuYXBwZW5kKCJdIikudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgTG9uZykKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0ICsgIkwiOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRG91YmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QgKyAiZCI7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBGbG9hdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0ICsgImYiOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgSW50ZWdlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gIihpbnQpICIgKyBvYmplY3Q7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBDbGFzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gKChDbGFzcykgb2JqZWN0KS5nZXRDYW5vbmljYWxOYW1lKCk7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUaW1lc3RhbXApCisgICAgICAgICAgICAgICAgcmV0dXJuICJuZXcgamF2YS5zcWwuVGltZXN0YW1wKCIgKyAoKFRpbWVzdGFtcCkgb2JqZWN0KS5nZXRUaW1lKCkgKyAiKSI7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBEYXRlKQorICAgICAgICAgICAgICAgIHJldHVybiAibmV3IGphdmEudXRpbC5EYXRlKCIgKyAoKERhdGUpIG9iamVjdCkuZ2V0VGltZSgpICsgIikiOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVVVJRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gImphdmEudXRpbC5VVUlELmZyb21TdHJpbmcoJyIgKyBvYmplY3QudG9TdHJpbmcoKSArICInKSI7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBQKQorICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0UFRvU3RyaW5nKChQKSBvYmplY3QsIG5ldyBTdHJpbmdCdWlsZGVyKCkpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTYWNrRnVuY3Rpb25zLkJhcnJpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuICJTYWNrRnVuY3Rpb25zLkJhcnJpZXIuIiArIG9iamVjdC50b1N0cmluZygpOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkpCisgICAgICAgICAgICAgICAgcmV0dXJuICJWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS4iICsgb2JqZWN0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljaykKKyAgICAgICAgICAgICAgICByZXR1cm4gIlRyYXZlcnNhbE9wdGlvblBhcmVudC5QaWNrLiIgKyBvYmplY3QudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVudW0pCisgICAgICAgICAgICAgICAgcmV0dXJuICgoRW51bSkgb2JqZWN0KS5nZXREZWNsYXJpbmdDbGFzcygpLmdldFNpbXBsZU5hbWUoKSArICIuIiArIG9iamVjdC50b1N0cmluZygpOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRWxlbWVudCkgeworICAgICAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBWZXJ0ZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgVmVydGV4IHZlcnRleCA9IChWZXJ0ZXgpIG9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJuZXcgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFZlcnRleCgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4LmlkKCkpICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4LmxhYmVsKCkpICsgIiwgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSkiOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRWRnZSkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBFZGdlIGVkZ2UgPSAoRWRnZSkgb2JqZWN0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm5ldyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkRWRnZSgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5pZCgpKSArICIsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2UubGFiZWwoKSkgKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb2xsZWN0aW9ucy5lbXB0eU1hcCgpLCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLm91dFZlcnRleCgpLmlkKCkpICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5vdXRWZXJ0ZXgoKS5sYWJlbCgpKSArICIsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2UuaW5WZXJ0ZXgoKS5pZCgpKSArICIsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2UuaW5WZXJ0ZXgoKS5sYWJlbCgpKSArICIpIjsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugey8vIFZlcnRleFByb3BlcnR5CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5IHZlcnRleFByb3BlcnR5ID0gKFZlcnRleFByb3BlcnR5KSBvYmplY3Q7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAibmV3IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eSgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4UHJvcGVydHkuaWQoKSkgKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyh2ZXJ0ZXhQcm9wZXJ0eS5sYWJlbCgpKSArICIsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleFByb3BlcnR5LnZhbHVlKCkpICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4UHJvcGVydHkuZWxlbWVudCgpKSArICIpIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIExhbWJkYSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBsYW1iZGFTdHJpbmcgPSAoKExhbWJkYSkgb2JqZWN0KS5nZXRMYW1iZGFTY3JpcHQoKS50cmltKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhbWJkYVN0cmluZy5zdGFydHNXaXRoKCJ7IikgPyBsYW1iZGFTdHJpbmcgOiAieyIgKyBsYW1iZGFTdHJpbmcgKyAifSI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRyYXZlcnNhbFN0cmF0ZWd5UHJveHkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWxTdHJhdGVneVByb3h5IHByb3h5ID0gKFRyYXZlcnNhbFN0cmF0ZWd5UHJveHkpIG9iamVjdDsKKyAgICAgICAgICAgICAgICBpZiAocHJveHkuZ2V0Q29uZmlndXJhdGlvbigpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5LmdldFN0cmF0ZWd5Q2xhc3MoKS5nZXRDYW5vbmljYWxOYW1lKCkgKyAiLmluc3RhbmNlKCkiOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5LmdldFN0cmF0ZWd5Q2xhc3MoKS5nZXRDYW5vbmljYWxOYW1lKCkgKyAiLmNyZWF0ZShuZXcgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uTWFwQ29uZmlndXJhdGlvbigiICsgY29udmVydFRvU3RyaW5nKENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIuZ2V0TWFwKHByb3h5LmdldENvbmZpZ3VyYXRpb24oKSkpICsgIikpIjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVHJhdmVyc2FsU3RyYXRlZ3kpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydFRvU3RyaW5nKG5ldyBUcmF2ZXJzYWxTdHJhdGVneVByb3h5KCgoVHJhdmVyc2FsU3RyYXRlZ3kpIG9iamVjdCkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IG9iamVjdCA/ICJudWxsIiA6IG9iamVjdC50b1N0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBpbnRlcm5hbFRyYW5zbGF0ZShmaW5hbCBTdHJpbmcgc3RhcnQsIGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmdCdWlsZGVyIHRyYXZlcnNhbFNjcmlwdCA9IG5ldyBTdHJpbmdCdWlsZGVyKHN0YXJ0KTsKKyAgICAgICAgICAgIGZvciAoZmluYWwgQnl0ZWNvZGUuSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gOiBieXRlY29kZS5nZXRJbnN0cnVjdGlvbnMoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtZXRob2ROYW1lID0gaW5zdHJ1Y3Rpb24uZ2V0T3BlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICBpZiAoMCA9PSBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKS5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbFNjcmlwdC5hcHBlbmQoIi4iKS5hcHBlbmQobWV0aG9kTmFtZSkuYXBwZW5kKCIoKSIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxTY3JpcHQuYXBwZW5kKCIuIik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0ZW1wID0gbWV0aG9kTmFtZSArICIoIjsKKworICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIHRvIHNwZWNpYWwgY2FzZSB3aXRoU2FjaygpIGZvciBHcm9vdnkgYmVjYXVzZSBVbmFyeU9wZXJhdG9yIGFuZCBCaW5hcnlPcGVyYXRvciBzaWduYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIC8vIG1ha2UgaXQgaW1wb3NzaWJsZSBmb3IgdGhlIGludGVycHJldGVyIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb24gdG8gY2FsbC4gc3BlY2lmaWNhbGx5IHdlIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGlzY2VybiBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAvLyAgICAgd2l0aFNhY2soQSBpbml0aWFsVmFsdWUsIFVuYXJ5T3BlcmF0b3I8QT4gc3BsaXRPcGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgIHdpdGhTYWNrKEEgaW5pdGlhbFZhbHVlLCBCaW5hcnlPcGVyYXRvcjxBPiBzcGxpdE9wZXJhdG9yKQorICAgICAgICAgICAgICAgICAgICAvLyBhbmQ6CisgICAgICAgICAgICAgICAgICAgIC8vICAgICB3aXRoU2FjayhTdXBwbGllcjxBPiBpbml0aWFsVmFsdWUsIFVuYXJ5T3BlcmF0b3I8QT4gbWVyZ2VPcGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgIHdpdGhTYWNrKFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSwgQmluYXJ5T3BlcmF0b3I8QT4gbWVyZ2VPcGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGhvZE5hbWUuZXF1YWxzKFRyYXZlcnNhbFNvdXJjZS5TeW1ib2xzLndpdGhTYWNrKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpLmxlbmd0aCA9PSAyICYmIGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzFdIGluc3RhbmNlb2YgTGFtYmRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2FzdEZpcnN0QXJnVG8gPSBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKVswXSBpbnN0YW5jZW9mIExhbWJkYSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBsaWVyLmNsYXNzLmdldE5hbWUoKSA6ICIiOworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTGFtYmRhIHNlY29uZEFyZyA9IChMYW1iZGEpIGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzFdOworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGNhc3RTZWNvbmRBcmdUbyA9IHNlY29uZEFyZy5nZXRMYW1iZGFBcmd1bWVudHMoKSA9PSAxID8gVW5hcnlPcGVyYXRvci5jbGFzcy5nZXROYW1lKCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvci5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhc3RGaXJzdEFyZ1RvLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcCArIFN0cmluZy5mb3JtYXQoIiglcykgIiwgY2FzdEZpcnN0QXJnVG8pOworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAgKyBTdHJpbmcuZm9ybWF0KCIlcywgKCVzKSAlcywiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKClbMF0pLCBjYXN0U2Vjb25kQXJnVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKVsxXSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBPYmplY3Qgb2JqZWN0IDogaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcCArIGNvbnZlcnRUb1N0cmluZyhvYmplY3QpICsgIiwiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbFNjcmlwdC5hcHBlbmQodGVtcC5zdWJzdHJpbmcoMCwgdGVtcC5sZW5ndGgoKSAtIDEpKS5hcHBlbmQoIikiKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdXJyZW50LmFwcGVuZCgiKSIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGN1cnJlbnQuYXBwZW5kKCJQLiIpLmFwcGVuZChwLmdldEJpUHJlZGljYXRlKCkudG9TdHJpbmcoKSkuYXBwZW5kKCIoIikuYXBwZW5kKGNvbnZlcnRUb1N0cmluZyhwLmdldFZhbHVlKCkpKS5hcHBlbmQoIikiKTsKLSAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CisgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2FsU2NyaXB0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBwcm90ZWN0ZWQgU3RyaW5nQnVpbGRlciBjb252ZXJ0UFRvU3RyaW5nKGZpbmFsIFAgcCwgZmluYWwgU3RyaW5nQnVpbGRlciBjdXJyZW50KSB7CisgICAgICAgICAgICBpZiAocCBpbnN0YW5jZW9mIFRleHRQKSByZXR1cm4gY29udmVydFRleHRQVG9TdHJpbmcoKFRleHRQKSBwLCBjdXJyZW50KTsKKyAgICAgICAgICAgIGlmIChwIGluc3RhbmNlb2YgQ29ubmVjdGl2ZVApIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFA8Pz4+IGxpc3QgPSAoKENvbm5lY3RpdmVQKSBwKS5nZXRQcmVkaWNhdGVzKCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRQVG9TdHJpbmcobGlzdC5nZXQoaSksIGN1cnJlbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGxpc3Quc2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuYXBwZW5kKHAgaW5zdGFuY2VvZiBPclAgPyAiLm9yKCIgOiAiLmFuZCgiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VycmVudC5hcHBlbmQoIikiKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGN1cnJlbnQuYXBwZW5kKCJQLiIpLmFwcGVuZChwLmdldEJpUHJlZGljYXRlKCkudG9TdHJpbmcoKSkuYXBwZW5kKCIoIikuYXBwZW5kKGNvbnZlcnRUb1N0cmluZyhwLmdldFZhbHVlKCkpKS5hcHBlbmQoIikiKTsKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50OworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZ0J1aWxkZXIgY29udmVydFRleHRQVG9TdHJpbmcoZmluYWwgVGV4dFAgcCwgZmluYWwgU3RyaW5nQnVpbGRlciBjdXJyZW50KSB7CisgICAgICAgICAgICBjdXJyZW50LmFwcGVuZCgiVGV4dFAuIikuYXBwZW5kKHAuZ2V0QmlQcmVkaWNhdGUoKS50b1N0cmluZygpKS5hcHBlbmQoIigiKS5hcHBlbmQoY29udmVydFRvU3RyaW5nKHAuZ2V0VmFsdWUoKSkpLmFwcGVuZCgiKSIpOworICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9JbXBvcnRHcm9vdnlDdXN0b21pemVyLmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9JbXBvcnRHcm9vdnlDdXN0b21pemVyLmphdmEKaW5kZXggNzkyNDNhMC4uOTRkM2I2MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvSW1wb3J0R3Jvb3Z5Q3VzdG9taXplci5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0ltcG9ydEdyb292eUN1c3RvbWl6ZXIuamF2YQpAQCAtNTksNiArNTksNyBAQAogICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG0gLT4gIW0uZ2V0RGVjbGFyaW5nQ2xhc3MoKS5lcXVhbHMoX18uY2xhc3MpKQogICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChtIC0+IGljLmFkZFN0YXRpY0ltcG9ydChtLmdldERlY2xhcmluZ0NsYXNzKCkuZ2V0Q2Fub25pY2FsTmFtZSgpLCBtLmdldE5hbWUoKSkpOwogICAgICAgICAgICAgY3VzdG9taXplci5nZXRFbnVtSW1wb3J0cygpLmZvckVhY2gobSAtPiBpYy5hZGRTdGF0aWNJbXBvcnQobS5nZXREZWNsYXJpbmdDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSwgbS5uYW1lKCkpKTsKKyAgICAgICAgICAgIGN1c3RvbWl6ZXIuZ2V0RmllbGRJbXBvcnRzKCkuZm9yRWFjaChmIC0+IGljLmFkZFN0YXRpY0ltcG9ydChmLmdldERlY2xhcmluZ0NsYXNzKCkuZ2V0Q2Fub25pY2FsTmFtZSgpLCBmLmdldE5hbWUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGljOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbEdyYXBoLmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGguamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlOGUwMC4uMDAwMDAwMAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGguamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLmRzbC5jcmVkZW50aWFsOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLm1pbmRyb3QuamJjcnlwdC5CQ3J5cHQ7Ci0KLWltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uZHJvcDsKLQotLyoqCi0gKiBBIERTTCBmb3IgbWFuYWdpbmcgYSAiY3JlZGVudGlhbHMgZ3JhcGgiIHVzZWQgYnkgR3JlbWxpbiBTZXJ2ZXIgZm9yIHNpbXBsZSBhdXRoZW50aWNhdGlvbiBmdW5jdGlvbnMuICBJZiB0aGUKLSAqIHtAbGluayBHcmFwaH0gaXMgdHJhbnNhY3Rpb25hbCwgbmV3IHRyYW5zYWN0aW9ucyB3aWxsIGJlIHN0YXJ0ZWQgZm9yIGVhY2ggbWV0aG9kIGNhbGwuCi0gKgotICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQotICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjMuMywgcmVwbGFjZWQgYnkge0BsaW5rICBDcmVkZW50aWFsVHJhdmVyc2FsRHNsfS4KLSAqLwotQERlcHJlY2F0ZWQKLXB1YmxpYyBjbGFzcyBDcmVkZW50aWFsR3JhcGggewotCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgQkNSWVBUX1JPVU5EUyA9IDQ7Ci0gICAgcHJpdmF0ZSBmaW5hbCBHcmFwaCBncmFwaDsKLSAgICBwcml2YXRlIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGc7Ci0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHN1cHBvcnRzVHJhbnNhY3Rpb25zOwotCi0gICAgcHVibGljIENyZWRlbnRpYWxHcmFwaChmaW5hbCBHcmFwaCBncmFwaCkgewotICAgICAgICB0aGlzLmdyYXBoID0gZ3JhcGg7Ci0gICAgICAgIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKLSAgICAgICAgc3VwcG9ydHNUcmFuc2FjdGlvbnMgPSBncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBGaW5kcyBhIHVzZXIgYnkgdXNlcm5hbWUgYW5kIHJldHVybiB7QGNvZGUgbnVsbH0gaWYgb25lIGNvdWxkIG5vdCBiZSBmb3VuZC4KLSAgICAgKgotICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgdXNlciB3aXRoIGEgcGFydGljdWxhciB1c2VybmFtZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgVmVydGV4IGZpbmRVc2VyKGZpbmFsIFN0cmluZyB1c2VybmFtZSkgewotICAgICAgICBpZiAoc3VwcG9ydHNUcmFuc2FjdGlvbnMpIGcudHgoKS5yb2xsYmFjaygpOwotICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0ID0gZy5WKCkuaGFzKENyZWRlbnRpYWxHcmFwaFRva2Vucy5QUk9QRVJUWV9VU0VSTkFNRSwgdXNlcm5hbWUpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IHQuaGFzTmV4dCgpID8gdC5uZXh0KCkgOiBudWxsOwotICAgICAgICBpZiAodC5oYXNOZXh0KCkpIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiTXVsdGlwbGUgdXNlcnMgd2l0aCB1c2VybmFtZSAlcyIsIHVzZXJuYW1lKSk7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLQotICAgIC8qKgotICAgICAqIENyZWF0ZXMgYSBuZXcgdXNlci4KLSAgICAgKgotICAgICAqIEByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgdXNlciB2ZXJ0ZXgKLSAgICAgKi8KLSAgICBwdWJsaWMgVmVydGV4IGNyZWF0ZVVzZXIoZmluYWwgU3RyaW5nIHVzZXJuYW1lLCBmaW5hbCBTdHJpbmcgcGFzc3dvcmQpIHsKLSAgICAgICAgaWYgKGZpbmRVc2VyKHVzZXJuYW1lKSAhPSBudWxsKSB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVc2VyIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgIGlmIChzdXBwb3J0c1RyYW5zYWN0aW9ucykgZ3JhcGgudHgoKS5yb2xsYmFjaygpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9ICBncmFwaC5hZGRWZXJ0ZXgoVC5sYWJlbCwgQ3JlZGVudGlhbEdyYXBoVG9rZW5zLlZFUlRFWF9MQUJFTF9VU0VSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxHcmFwaFRva2Vucy5QUk9QRVJUWV9VU0VSTkFNRSwgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbEdyYXBoVG9rZW5zLlBST1BFUlRZX1BBU1NXT1JELCBCQ3J5cHQuaGFzaHB3KHBhc3N3b3JkLCBCQ3J5cHQuZ2Vuc2FsdChCQ1JZUFRfUk9VTkRTKSkpOwotICAgICAgICAgICAgaWYgKHN1cHBvcnRzVHJhbnNhY3Rpb25zKSBncmFwaC50eCgpLmNvbW1pdCgpOwotICAgICAgICAgICAgcmV0dXJuIHY7Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgaWYgKHN1cHBvcnRzVHJhbnNhY3Rpb25zKSBncmFwaC50eCgpLnJvbGxiYWNrKCk7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZW1vdmVzIGEgdXNlciBieSBuYW1lLgotICAgICAqCi0gICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIHVzZXJzIHJlbW92ZWQgKHdoaWNoIHNob3VsZCBiZSBvbmUgb3IgemVybykKLSAgICAgKi8KLSAgICBwdWJsaWMgbG9uZyByZW1vdmVVc2VyKGZpbmFsIFN0cmluZyB1c2VybmFtZSkgewotICAgICAgICBpZiAoc3VwcG9ydHNUcmFuc2FjdGlvbnMpIGdyYXBoLnR4KCkucm9sbGJhY2soKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZpbmFsIGxvbmcgY291bnQgPSBnLlYoKS5oYXMoQ3JlZGVudGlhbEdyYXBoVG9rZW5zLlBST1BFUlRZX1VTRVJOQU1FLCB1c2VybmFtZSkuc2lkZUVmZmVjdChkcm9wKCkpLmNvdW50KCkubmV4dCgpOwotICAgICAgICAgICAgaWYgKHN1cHBvcnRzVHJhbnNhY3Rpb25zKSBncmFwaC50eCgpLmNvbW1pdCgpOwotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgIGlmIChzdXBwb3J0c1RyYW5zYWN0aW9ucykgZ3JhcGgudHgoKS5yb2xsYmFjaygpOwotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogR2V0IGEgY291bnQgb2YgdGhlIG51bWJlciBvZiB1c2VycyBpbiB0aGUgZGF0YWJhc2UuCi0gICAgICovCi0gICAgcHVibGljIGxvbmcgY291bnRVc2VycygpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzVHJhbnNhY3Rpb25zKSBncmFwaC50eCgpLnJvbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbChDcmVkZW50aWFsR3JhcGhUb2tlbnMuVkVSVEVYX0xBQkVMX1VTRVIpLmNvdW50KCkubmV4dCgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiAiQ3JlZGVudGlhbEdyYXBoeyIgKwotICAgICAgICAgICAgICAgICJncmFwaD0iICsgZ3JhcGggKwotICAgICAgICAgICAgICAgICd9JzsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBXcmFwIHVwIGFueSB7QGxpbmsgR3JhcGh9IGluc3RhbmNlIGluIHRoZSB7QGNvZGUgQ3JlZGVudGlhbEdyYXBofSBEU0wuCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBDcmVkZW50aWFsR3JhcGggY3JlZGVudGlhbHMoZmluYWwgR3JhcGggZ3JhcGgpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDcmVkZW50aWFsR3JhcGgoZ3JhcGgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxHcmFwaEdyZW1saW5QbHVnaW4uamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxHcmFwaEdyZW1saW5QbHVnaW4uamF2YQppbmRleCBlMzZkZmY5Li4xYmFmYmVlIDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGhHcmVtbGluUGx1Z2luLmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbEdyYXBoR3JlbWxpblBsdWdpbi5qYXZhCkBAIC0zOCwxMSArMzgsOSBAQAogICAgIHN0YXRpYyB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBpbXBvcnRzID0gRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXIuYnVpbGQoKQotICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3NJbXBvcnRzKENyZWRlbnRpYWxHcmFwaC5jbGFzcykKICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzSW1wb3J0cyhDcmVkZW50aWFsVHJhdmVyc2FsRHNsLmNsYXNzKQogICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3NJbXBvcnRzKENyZWRlbnRpYWxUcmF2ZXJzYWwuY2xhc3MpCiAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzc0ltcG9ydHMoQ3JlZGVudGlhbFRyYXZlcnNhbFNvdXJjZS5jbGFzcykKLSAgICAgICAgICAgICAgICAgICAgLmFkZE1ldGhvZEltcG9ydHMoQ3JlZGVudGlhbEdyYXBoLmNsYXNzLmdldE1ldGhvZCgiY3JlZGVudGlhbHMiLCBHcmFwaC5jbGFzcykpCiAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKaW5kZXggNjhiMjRiMi4uZjAzMDQ5NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbFRyYXZlcnNhbFNvdXJjZURzbC5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxUcmF2ZXJzYWxTb3VyY2VEc2wuamF2YQpAQCAtMTgsNiArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5kc2wuY3JlZGVudGlhbDsKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVnaWVzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOwpAQCAtNDQsNiArNDUsMTAgQEAKICAgICAgICAgc3VwZXIoZ3JhcGgpOwogICAgIH0KIAorICAgIHB1YmxpYyBDcmVkZW50aWFsVHJhdmVyc2FsU291cmNlRHNsKFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBzdXBlcihjb25uZWN0aW9uKTsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBGaW5kcyBhbGwgdXNlcnMuCiAgICAgICovCmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9CYXNlU2NyaXB0Rm9yVGVzdGluZy5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvQmFzZVNjcmlwdEZvclRlc3RpbmcuamF2YQppbmRleCA5OGM4ZThjLi4wZWJjMzJlIDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9CYXNlU2NyaXB0Rm9yVGVzdGluZy5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0Jhc2VTY3JpcHRGb3JUZXN0aW5nLmphdmEKQEAgLTIwLDYgKzIwLDggQEAKIAogaW1wb3J0IGdyb292eS5sYW5nLlNjcmlwdDsKIAoraW1wb3J0IGphdmEudXRpbC5NYXA7CisKIC8qKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCkBAIC0yNyw0ICsyOSw4IEBACiAgICAgcHVibGljIFN0cmluZyBoZWxsbyhmaW5hbCBTdHJpbmcgbmFtZSkgewogICAgICAgICByZXR1cm4gImhlbGxvLCAiICsgbmFtZTsKICAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHR5cGVPZihmaW5hbCBTdHJpbmcgbmFtZSkgeworICAgICAgICByZXR1cm4gKChNYXA8U3RyaW5nLE9iamVjdD4pIGdldEJpbmRpbmcoKS5nZXRWYXJpYWJsZSgicmVnaXN0cnkiKSkuZ2V0KG5hbWUpLmdldENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVDb21waWxlU3RhdGljVGVzdC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUNvbXBpbGVTdGF0aWNUZXN0LmphdmEKaW5kZXggNzMwN2M4Mi4uYmNlZWZkOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUNvbXBpbGVTdGF0aWNUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUNvbXBpbGVTdGF0aWNUZXN0LmphdmEKQEAgLTM3LDEyICszNywxMiBAQAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQ29tcGlsZVN0YXRpYygpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICAvLyB3aXRoIG5vIHR5cGUgY2hlY2tpbmcgdGhpcyBzaG91bGQgcGFzcwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoIigoT2JqZWN0KSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSkpLmdldFJlZCgpIikpOwotICAgICAgICB9CisgICAgICAgIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoIigoT2JqZWN0KSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSkpLmdldFJlZCgpIikpOwogCiAgICAgICAgIGZpbmFsIENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyIHByb3ZpZGVyID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKCk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcikpIHsKKyAgICAgICAgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXIpOworICAgICAgICB0cnkgewogICAgICAgICAgICAgc2NyaXB0RW5naW5lLmV2YWwoIigoT2JqZWN0KSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSkpLmdldFJlZCgpIik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBmYWlsZWQgdHlwZSBjaGVja2luZyIpOwogICAgICAgICB9IGNhdGNoIChTY3JpcHRFeGNlcHRpb24gc2UpIHsKQEAgLTU2LDEzICs1NiwxMyBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbXBpbGVTdGF0aWNXaXRoRXh0ZW5zaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIC8vIHdpdGggbm8gdHlwZSBjaGVja2luZyBleHRlbnNpb24gdGhpcyBzaG91bGQgcGFzcwogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlck5vRXh0ZW5zaW9uID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKCk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlck5vRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpOyBjLnJlZCIpKTsKLSAgICAgICAgfQorICAgICAgICBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyTm9FeHRlbnNpb24pOworICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIikpOwogCiAgICAgICAgIGZpbmFsIENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyIHByb3ZpZGVyV2l0aEV4dGVuc2lvbiA9IG5ldyBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplcigKICAgICAgICAgICAgICAgICBQcmVjb21waWxlZEV4dGVuc2lvbnMuUHJldmVudENvbG9yVXNhZ2VFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbikpIHsKKyAgICAgICAgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJXaXRoRXh0ZW5zaW9uKTsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KTsgYy5yZWQiKTsKICAgICAgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIGZhaWxlZCB0eXBlIGNoZWNraW5nIik7CiAgICAgICAgIH0gY2F0Y2ggKFNjcmlwdEV4Y2VwdGlvbiBzZSkgewpAQCAtNzUsMTUgKzc1LDE1IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkQ29tcGlsZVN0YXRpY1dpdGhNdWx0aXBsZUV4dGVuc2lvbigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICAvLyB3aXRoIG5vIHR5cGUgY2hlY2tpbmcgZXh0ZW5zaW9uIHRoaXMgc2hvdWxkIHBhc3MKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgcHJvdmlkZXJOb0V4dGVuc2lvbiA9IG5ldyBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplcigpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJOb0V4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyNTUsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KTsgYy5yZWQiKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMWwsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaCgxKTsgYy5jb3VudCIpKTsKLSAgICAgICAgfQorICAgICAgICBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyTm9FeHRlbnNpb24pOworICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoMWwsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaCgxKTsgYy5jb3VudCIpKTsKIAogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlcldpdGhFeHRlbnNpb24gPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoCiAgICAgICAgICAgICAgICAgUHJlY29tcGlsZWRFeHRlbnNpb25zLlByZXZlbnRDb2xvclVzYWdlRXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCIgKyBQcmVjb21waWxlZEV4dGVuc2lvbnMuUHJldmVudENvdW50RG93bkxhdGNoVXNhZ2VFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbikpIHsKKyAgICAgICAgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJXaXRoRXh0ZW5zaW9uKTsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KTsgYy5yZWQiKTsKICAgICAgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIGZhaWxlZCB0eXBlIGNoZWNraW5nIik7CiAgICAgICAgIH0gY2F0Y2ggKFNjcmlwdEV4Y2VwdGlvbiBzZSkgewpAQCAtOTEsNyArOTEsOCBAQAogICAgICAgICAgICAgYXNzZXJ0VGhhdChzZS5nZXRNZXNzYWdlKCksIGNvbnRhaW5zU3RyaW5nKCJNZXRob2QgY2FsbCBpcyBub3QgYWxsb3dlZCEiKSk7CiAgICAgICAgIH0KIAotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJXaXRoRXh0ZW5zaW9uKSkgeworICAgICAgICBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pOworICAgICAgICB0cnkgewogICAgICAgICAgICAgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoKDEpOyBjLmNvdW50Iik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBmYWlsZWQgdHlwZSBjaGVja2luZyIpOwogICAgICAgICB9IGNhdGNoIChTY3JpcHRFeGNlcHRpb24gc2UpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVDb25maWdUZXN0LmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lQ29uZmlnVGVzdC5qYXZhCmluZGV4IDg0MTQyNzQuLjExZDBkMWYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVDb25maWdUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUNvbmZpZ1Rlc3QuamF2YQpAQCAtMjAsNyArMjAsMTEgQEAKIAogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCitpbXBvcnQgamF2YXguc2NyaXB0LkJpbmRpbmdzOwogaW1wb3J0IGphdmF4LnNjcmlwdC5TY3JpcHRFbmdpbmU7CitpbXBvcnQgamF2YXguc2NyaXB0LlNpbXBsZUJpbmRpbmdzOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CiAKQEAgLTM1LDUgKzM5LDEzIEBACiAgICAgICAgICAgICAgICAgbmV3IENvbmZpZ3VyYXRpb25Hcm9vdnlDdXN0b21pemVyKCJTY3JpcHRCYXNlQ2xhc3MiLCBCYXNlU2NyaXB0Rm9yVGVzdGluZy5jbGFzcy5nZXROYW1lKCkpKTsKIAogICAgICAgICBhc3NlcnRFcXVhbHMoImhlbGxvLCBzdGVwaGVuIiwgZW5naW5lLmV2YWwoImhlbGxvKCdzdGVwaGVuJykiKSk7CisKKyAgICAgICAgZmluYWwgQmluZGluZ3MgYiA9IG5ldyBTaW1wbGVCaW5kaW5ncygpOworICAgICAgICBiLnB1dCgicmVnaXN0cnkiLCBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgIHB1dCgieHh4IiwgU3RyaW5nLmNsYXNzLmdldFNpbXBsZU5hbWUoKSk7CisgICAgICAgIH19KTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoU3RyaW5nLmNsYXNzLmdldFNpbXBsZU5hbWUoKSwgZW5naW5lLmV2YWwoInR5cGVPZigneHh4JykiLCBiKSk7CiAgICAgfQorCiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lRmlsZVNhbmRib3hUZXN0LmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lRmlsZVNhbmRib3hUZXN0LmphdmEKaW5kZXggMmE0MGZlZS4uMmEwOTRlMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUZpbGVTYW5kYm94VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVGaWxlU2FuZGJveFRlc3QuamF2YQpAQCAtNzEsMzUgKzcxLDMzIEBACiAgICAgICAgIGZpbmFsIEZpbGUgZiA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShncmFwaC5nZXRDbGFzcygpLCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lRmlsZVNhbmRib3hUZXN0LmNsYXNzLCAic2FuZGJveC1lbXB0eS1zdGF0aWMtdmFyaWFibGUtdHlwZXMueWFtbCIsICIueWFtbCIpOwogICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoRmlsZVNhbmRib3hFeHRlbnNpb24uR1JFTUxJTl9TRVJWRVJfU0FOREJPWCwgU3RvcmFnZS50b1BhdGgoZikpOwogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoRmlsZVNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxMjMsIGVuZ2luZS5ldmFsKCJqYXZhLmxhbmcuTWF0aC5hYnMoLTEyMykiKSk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KGVuZ2luZS5ldmFsKCJuZXcgQm9vbGVhbih0cnVlKSIpLCBpcyh0cnVlKSk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KGVuZ2luZS5ldmFsKCJuZXcgQm9vbGVhbih0cnVlKS50b1N0cmluZygpIiksIGlzKCJ0cnVlIikpOwotICAgICAgICB9CisgICAgICAgIGZpbmFsIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEyMywgZW5naW5lLmV2YWwoImphdmEubGFuZy5NYXRoLmFicygtMTIzKSIpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkiKSwgaXModHJ1ZSkpOworICAgICAgICBhc3NlcnRUaGF0KGVuZ2luZS5ldmFsKCJuZXcgQm9vbGVhbih0cnVlKS50b1N0cmluZygpIiksIGlzKCJ0cnVlIikpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkRXZhbEFzVGhlTWV0aG9kSXNXaGl0ZUxpc3RlZCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoRmlsZVNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxMjMsIGVuZ2luZS5ldmFsKCJqYXZhLmxhbmcuTWF0aC5hYnMoLTEyMykiKSk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KGVuZ2luZS5ldmFsKCJuZXcgQm9vbGVhbih0cnVlKSIpLCBpcyh0cnVlKSk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KGVuZ2luZS5ldmFsKCJuZXcgQm9vbGVhbih0cnVlKS50b1N0cmluZygpIiksIGlzKCJ0cnVlIikpOwotICAgICAgICB9CisgICAgICAgIGZpbmFsIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEyMywgZW5naW5lLmV2YWwoImphdmEubGFuZy5NYXRoLmFicygtMTIzKSIpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkiKSwgaXModHJ1ZSkpOworICAgICAgICBhc3NlcnRUaGF0KGVuZ2luZS5ldmFsKCJuZXcgQm9vbGVhbih0cnVlKS50b1N0cmluZygpIiksIGlzKCJ0cnVlIikpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkRXZhbEFzR3Jvb3Z5UHJvcGVydGllc1doZW5XaGl0ZUxpc3RlZCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoRmlsZVNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKLSAgICAgICAgICAgIGFzc2VydFRoYXQoQXJyYXlzLmVxdWFscygidGVzdCIuZ2V0Qnl0ZXMoKSwgKGJ5dGVbXSkgZW5naW5lLmV2YWwoIid0ZXN0Jy5ieXRlcyIpKSwgaXModHJ1ZSkpOwotICAgICAgICB9CisgICAgICAgIGZpbmFsIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KTsKKyAgICAgICAgYXNzZXJ0VGhhdChBcnJheXMuZXF1YWxzKCJ0ZXN0Ii5nZXRCeXRlcygpLCAoYnl0ZVtdKSBlbmdpbmUuZXZhbCgiJ3Rlc3QnLmJ5dGVzIikpLCBpcyh0cnVlKSk7CiAgICAgfQogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRQcmV2ZW50TWFsaWNpb3VzU3R1ZmZXaXRoU3lzdGVtQnV0QWxsb3dTb21lTWV0aG9kc09uU3lzdGVtKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyIHN0YW5kYXJkU2FuZGJveCA9IG5ldyBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplcihGaWxlU2FuZGJveEV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KSkgeworICAgICAgICBmaW5hbCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCk7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBhc3NlcnRUaGF0KChsb25nKSBlbmdpbmUuZXZhbCgiU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkiKSwgZ3JlYXRlclRoYW4oMEwpKTsKICAgICAgICAgICAgIGFzc2VydFRoYXQoKGxvbmcpIGVuZ2luZS5ldmFsKCJTeXN0ZW0ubmFub1RpbWUoKSIpLCBncmVhdGVyVGhhbigwTCkpOwogCkBAIC0xMTQsNyArMTEyLDggQEAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFByZXZlbnRNYWxpY2lvdXNTdHVmZldpdGhGaWxlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyIHN0YW5kYXJkU2FuZGJveCA9IG5ldyBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplcihGaWxlU2FuZGJveEV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KSkgeworICAgICAgICBmaW5hbCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCk7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBlbmdpbmUuZXZhbCgiamF2YS5uaW8uZmlsZS5GaWxlU3lzdGVtcy5nZXREZWZhdWx0KCkiKTsKICAgICAgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIGEgY29tcGlsZSBlcnJvciBiZWNhdXNlIGNsYXNzL21ldGhvZCBpcyBub3Qgd2hpdGUgbGlzdGVkIik7CiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewpAQCAtMTI3LDEzICsxMjYsMTMgQEAKICAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCiAgICAgcHVibGljIHZvaWQgc2hvdWxkRXZhbE9uR0FzVGhlTWV0aG9kSXNXaGl0ZUxpc3RlZCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoRmlsZVNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoImciLCBnKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5vdXQoImNyZWF0ZWQiKS5jb3VudCgpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykub3V0KFwiY3JlYXRlZFwiKS5jb3VudCgpLm5leHQoKSIsIGJpbmRpbmdzKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZmluYWwgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpOworCisgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgiZyIsIGcpOworICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm91dCgiY3JlYXRlZCIpLmNvdW50KCkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5vdXQoXCJjcmVhdGVkXCIpLmNvdW50KCkubmV4dCgpIiwgYmluZGluZ3MpKTsKICAgICB9CiAKICAgICBwcml2YXRlIE9iamVjdCBjb252ZXJ0VG9WZXJ0ZXhJZChmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgU3RyaW5nIHZlcnRleE5hbWUpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVTYW5kYm94ZWRTdGFuZGFyZFRlc3QuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVTYW5kYm94ZWRTdGFuZGFyZFRlc3QuamF2YQppbmRleCBjM2JhYzc0Li5iMjAzYmE4IDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lU2FuZGJveGVkU3RhbmRhcmRUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVNhbmRib3hlZFN0YW5kYXJkVGVzdC5qYXZhCkBAIC02MSwxNSArNjEsMTUgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRFdmFsR3JhcGhUcmF2ZXJzYWxTb3VyY2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gZ3JhcGgudHJhdmVyc2FsKCk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSgpKSB7Ci0gICAgICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJnIiwgZyk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm5leHQoKSIsIGJpbmRpbmdzKSk7Ci0gICAgICAgIH0KKyAgICAgICAgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSgpOworICAgICAgICBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOworICAgICAgICBiaW5kaW5ncy5wdXQoImciLCBnKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm5leHQoKSIsIGJpbmRpbmdzKSk7CiAKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKG5vdFNhbmRib3hlZCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CisgICAgICAgIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKG5vdFNhbmRib3hlZCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOwogICAgICAgICAgICAgYmluZGluZ3MucHV0KCJnIiwgZyk7CiAgICAgICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKICAgICAgICAgICAgIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm5leHQoKSIsIGJpbmRpbmdzKTsKQEAgLTc5LDI4ICs3OSwyNyBAQAogICAgICAgICAgICAgYXNzZXJ0VGhhdChleC5nZXRNZXNzYWdlKCksIGNvbnRhaW5zU3RyaW5nKCJUaGUgdmFyaWFibGUgW2ddIGlzIHVuZGVjbGFyZWQuIikpOwogICAgICAgICB9CiAKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHNhbmRib3hlZCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoImciLCBnKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5vdXQoImNyZWF0ZWQiKS5jb3VudCgpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykub3V0KFwiY3JlYXRlZFwiKS5jb3VudCgpLm5leHQoKSIsIGJpbmRpbmdzKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc2FuZGJveGVkKTsKKyAgICAgICAgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJnIiwgZyk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOworICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkub3V0KCJjcmVhdGVkIikuY291bnQoKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm91dChcImNyZWF0ZWRcIikuY291bnQoKS5uZXh0KCkiLCBiaW5kaW5ncykpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkRXZhbEdyYXBoKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IGdyYXBoLnRyYXZlcnNhbCgpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKSkgewotICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZ3JhcGgiLCBncmFwaCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhncmFwaC52ZXJ0aWNlcyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImdyYXBoLnZlcnRpY2VzKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOwotICAgICAgICB9CisgICAgICAgIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKTsKKyAgICAgICAgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJncmFwaCIsIGdyYXBoKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhncmFwaC52ZXJ0aWNlcyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImdyYXBoLnZlcnRpY2VzKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOwogCi0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShub3RTYW5kYm94ZWQpKSB7Ci0gICAgICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOworICAgICAgICBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShub3RTYW5kYm94ZWQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKICAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZ3JhcGgiLCBncmFwaCk7CiAgICAgICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhncmFwaC52ZXJ0aWNlcyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImdyYXBoLnZlcnRpY2VzKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOwpAQCAtMTEwLDggKzEwOSw5IEBACiAgICAgICAgICAgICBhc3NlcnRUaGF0KGV4LmdldE1lc3NhZ2UoKSwgY29udGFpbnNTdHJpbmcoIlRoZSB2YXJpYWJsZSBbZ3JhcGhdIGlzIHVuZGVjbGFyZWQuIikpOwogICAgICAgICB9CiAKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKG5vdFNhbmRib3hlZCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CisgICAgICAgIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKG5vdFNhbmRib3hlZCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOwogICAgICAgICAgICAgYmluZGluZ3MucHV0KCJncmFwaCIsIGdyYXBoKTsKICAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgieCIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoZ3JhcGgudmVydGljZXMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJncmFwaC52ZXJ0aWNlcyh4KS5uZXh0KCkiLCBiaW5kaW5ncykpOwpAQCAtMTIxLDE5ICsxMjEsMTcgQEAKICAgICAgICAgICAgIGFzc2VydFRoYXQoZXguZ2V0TWVzc2FnZSgpLCBjb250YWluc1N0cmluZygiVGhlIHZhcmlhYmxlIFtncmFwaF0gaXMgdW5kZWNsYXJlZC4iKSk7CiAgICAgICAgIH0KIAotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc2FuZGJveGVkKSkgewotICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZ3JhcGgiLCBncmFwaCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhncmFwaC52ZXJ0aWNlcyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImdyYXBoLnZlcnRpY2VzKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOwotICAgICAgICB9CisgICAgICAgIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHNhbmRib3hlZCk7CisgICAgICAgIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgiZ3JhcGgiLCBncmFwaCk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoZ3JhcGgudmVydGljZXMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJncmFwaC52ZXJ0aWNlcyhtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKIAotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc2FuZGJveGVkKSkgewotICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZ3JhcGgiLCBncmFwaCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoIngiLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGdyYXBoLnZlcnRpY2VzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZ3JhcGgudmVydGljZXMoeCkubmV4dCgpIiwgYmluZGluZ3MpKTsKLSAgICAgICAgfQorICAgICAgICBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzYW5kYm94ZWQpOworICAgICAgICBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOworICAgICAgICBiaW5kaW5ncy5wdXQoImdyYXBoIiwgZ3JhcGgpOworICAgICAgICBiaW5kaW5ncy5wdXQoIngiLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoZ3JhcGgudmVydGljZXMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJncmFwaC52ZXJ0aWNlcyh4KS5uZXh0KCkiLCBiaW5kaW5ncykpOwogICAgIH0KIAogICAgIHByaXZhdGUgT2JqZWN0IGNvbnZlcnRUb1ZlcnRleElkKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBTdHJpbmcgdmVydGV4TmFtZSkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVRpbmtlclBvcFNhbmRib3hUZXN0LmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lVGlua2VyUG9wU2FuZGJveFRlc3QuamF2YQppbmRleCBjMmQ1NTVmLi5mZDM2ZWFhIDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lVGlua2VyUG9wU2FuZGJveFRlc3QuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lVGlua2VyUG9wU2FuZGJveFRlc3QuamF2YQpAQCAtNDAsNyArNDAsOCBAQAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkTm90RXZhbEFzVGhlTWV0aG9kSXNOb3RXaGl0ZUxpc3RlZCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoVGlua2VyUG9wU2FuZGJveEV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KSkgeworICAgICAgICBmaW5hbCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCk7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBlbmdpbmUuZXZhbCgiamF2YS5sYW5nLk1hdGguYWJzKDEyMykiKTsKICAgICAgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIGEgY29tcGlsZSBlcnJvciBiZWNhdXNlIGNsYXNzL21ldGhvZCBpcyBub3Qgd2hpdGUgbGlzdGVkIik7CiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewpAQCAtNTQsMTMgKzU1LDEzIEBACiAgICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IGdyYXBoLnRyYXZlcnNhbCgpOwogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoVGlua2VyUG9wU2FuZGJveEV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KSkgewotICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZyIsIGcpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm91dCgiY3JlYXRlZCIpLmNvdW50KCkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5vdXQoXCJjcmVhdGVkXCIpLmNvdW50KCkubmV4dCgpIiwgYmluZGluZ3MpKTsKLSAgICAgICAgfQorICAgICAgICBmaW5hbCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCk7CisKKyAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJnIiwgZyk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOworICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkub3V0KCJjcmVhdGVkIikuY291bnQoKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm91dChcImNyZWF0ZWRcIikuY291bnQoKS5uZXh0KCkiLCBiaW5kaW5ncykpOwogICAgIH0KIAogICAgIHByaXZhdGUgT2JqZWN0IGNvbnZlcnRUb1ZlcnRleElkKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBTdHJpbmcgdmVydGV4TmFtZSkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVR5cGVDaGVja2VkVGVzdC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVR5cGVDaGVja2VkVGVzdC5qYXZhCmluZGV4IGIzZmY3YzguLmQ0MWYwN2QgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVUeXBlQ2hlY2tlZFRlc3QuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lVHlwZUNoZWNrZWRUZXN0LmphdmEKQEAgLTM3LDEyICszNywxMiBAQAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkVHlwZUNoZWNrKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIC8vIHdpdGggbm8gdHlwZSBjaGVja2luZyB0aGlzIHNob3VsZCBwYXNzCi0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSgpKSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiKChPYmplY3QpIG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KSkuZ2V0UmVkKCkiKSk7Ci0gICAgICAgIH0KKyAgICAgICAgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiKChPYmplY3QpIG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KSkuZ2V0UmVkKCkiKSk7CiAKICAgICAgICAgZmluYWwgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyIHByb3ZpZGVyID0gbmV3IFR5cGVDaGVja2VkR3Jvb3Z5Q3VzdG9taXplcigpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXIpKSB7CisgICAgICAgIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyKTsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHNjcmlwdEVuZ2luZS5ldmFsKCIoKE9iamVjdCkgbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpKS5nZXRSZWQoKSIpOwogICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgZmFpbGVkIHR5cGUgY2hlY2tpbmciKTsKICAgICAgICAgfSBjYXRjaCAoU2NyaXB0RXhjZXB0aW9uIHNlKSB7CkBAIC01NiwxMyArNTYsMTMgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRUeXBlQ2hlY2tXaXRoRXh0ZW5zaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIC8vIHdpdGggbm8gdHlwZSBjaGVja2luZyBleHRlbnNpb24gdGhpcyBzaG91bGQgcGFzcwogICAgICAgICBmaW5hbCBUeXBlQ2hlY2tlZEdyb292eUN1c3RvbWl6ZXIgcHJvdmlkZXJOb0V4dGVuc2lvbiA9IG5ldyBUeXBlQ2hlY2tlZEdyb292eUN1c3RvbWl6ZXIoKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyTm9FeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIikpOwotICAgICAgICB9CisgICAgICAgIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJOb0V4dGVuc2lvbik7CisgICAgICAgIGFzc2VydEVxdWFscygyNTUsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KTsgYy5yZWQiKSk7CiAKICAgICAgICAgZmluYWwgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyIHByb3ZpZGVyV2l0aEV4dGVuc2lvbiA9IG5ldyBUeXBlQ2hlY2tlZEdyb292eUN1c3RvbWl6ZXIoCiAgICAgICAgICAgICAgICAgUHJlY29tcGlsZWRFeHRlbnNpb25zLlByZXZlbnRDb2xvclVzYWdlRXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pKSB7CisgICAgICAgIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbik7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBmYWlsZWQgdHlwZSBjaGVja2luZyIpOwogICAgICAgICB9IGNhdGNoIChTY3JpcHRFeGNlcHRpb24gc2UpIHsKQEAgLTc1LDE1ICs3NSwxNSBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFR5cGVDaGVja1dpdGhNdWx0aXBsZUV4dGVuc2lvbigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICAvLyB3aXRoIG5vIHR5cGUgY2hlY2tpbmcgZXh0ZW5zaW9uIHRoaXMgc2hvdWxkIHBhc3MKICAgICAgICAgZmluYWwgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyIHByb3ZpZGVyTm9FeHRlbnNpb24gPSBuZXcgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyKCk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlck5vRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpOyBjLnJlZCIpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxbCwgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoKDEpOyBjLmNvdW50IikpOwotICAgICAgICB9CisgICAgICAgIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJOb0V4dGVuc2lvbik7CisgICAgICAgIGFzc2VydEVxdWFscygyNTUsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KTsgYy5yZWQiKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxbCwgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoKDEpOyBjLmNvdW50IikpOwogCiAgICAgICAgIGZpbmFsIFR5cGVDaGVja2VkR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlcldpdGhFeHRlbnNpb24gPSBuZXcgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyKAogICAgICAgICAgICAgICAgIFByZWNvbXBpbGVkRXh0ZW5zaW9ucy5QcmV2ZW50Q29sb3JVc2FnZUV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwiICsgUHJlY29tcGlsZWRFeHRlbnNpb25zLlByZXZlbnRDb3VudERvd25MYXRjaFVzYWdlRXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pKSB7CisgICAgICAgIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbik7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBmYWlsZWQgdHlwZSBjaGVja2luZyIpOwogICAgICAgICB9IGNhdGNoIChTY3JpcHRFeGNlcHRpb24gc2UpIHsKQEAgLTkxLDcgKzkxLDggQEAKICAgICAgICAgICAgIGFzc2VydFRoYXQoc2UuZ2V0TWVzc2FnZSgpLCBjb250YWluc1N0cmluZygiTWV0aG9kIGNhbGwgaXMgbm90IGFsbG93ZWQhIikpOwogICAgICAgICB9CiAKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbikpIHsKKyAgICAgICAgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJXaXRoRXh0ZW5zaW9uKTsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaCgxKTsgYy5jb3VudCIpOwogICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgZmFpbGVkIHR5cGUgY2hlY2tpbmciKTsKICAgICAgICAgfSBjYXRjaCAoU2NyaXB0RXhjZXB0aW9uIHNlKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlTY3JpcHRFbmdpbmVTZXR1cC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5U2NyaXB0RW5naW5lU2V0dXAuamF2YQppbmRleCBhOWVmNjhlLi44MTQyYTA2IDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlTY3JpcHRFbmdpbmVTZXR1cC5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVNjcmlwdEVuZ2luZVNldHVwLmphdmEKQEAgLTI0LDYgKzI0LDcgQEAKIAogaW1wb3J0IGphdmF4LnNjcmlwdC5TY3JpcHRFbmdpbmU7CiBpbXBvcnQgamF2YXguc2NyaXB0LlNjcmlwdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKQEAgLTU3LDYgKzU4LDEwIEBACiAgICAgICAgICAgICAgICAgc3RhdGljSW1wb3J0cy5hZGQobS5nZXREZWNsYXJpbmdDbGFzcygpKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgZm9yIChGaWVsZCBmIDogQ29yZUltcG9ydHMuZ2V0RmllbGRJbXBvcnRzKCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0aWNJbXBvcnRzLmFkZChmLmdldERlY2xhcmluZ0NsYXNzKCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmb3IgKENsYXNzPD8+IGMgOiBzdGF0aWNJbXBvcnRzKSB7CiAgICAgICAgICAgICAgICAgZ3Jvb3Z5U2NyaXB0RW5naW5lLmV2YWwoImltcG9ydCBzdGF0aWMgIiArIGMuZ2V0TmFtZSgpICsgIi4qIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yUHJvdmlkZXIuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3JQcm92aWRlci5qYXZhCmluZGV4IDM1MmQwYzIuLjVmNTU2YjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3JQcm92aWRlci5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3JQcm92aWRlci5qYXZhCkBAIC0yMTAsNiArMjEwLDE0IEBACiAgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Db3JlVHJhdmVyc2FsVGVzdCIsCiAgICAgICAgIG1ldGhvZCA9ICJzaG91bGROZXZlclByb3BhZ2F0ZUFOdWxsVmFsdWVkVHJhdmVyc2VyIiwKICAgICAgICAgcmVhc29uID0gIlJlYXNvbiByZXF1aXJlcyBpbnZlc3RpZ2F0aW9uIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gInJlYWQgYW5kIHdyaXRlIHRlc3RzIGRvbid0IHRyYW5zbGF0ZSBsb2NhbGx5IHdlbGwgYmVjYXVzZSBvZiBjYWxsaW5nIGl0ZXJhdGUoKSBpbnNpZGUgcmVhZCgpL3dyaXRlKCkgYWRkIGEgbm9uZSgpIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJyZWFkIGFuZCB3cml0ZSB0ZXN0cyBkb24ndCB0cmFuc2xhdGUgbG9jYWxseSB3ZWxsIGJlY2F1c2Ugb2YgY2FsbGluZyBpdGVyYXRlKCkgaW5zaWRlIHJlYWQoKS93cml0ZSgpIGFkZCBhIG5vbmUoKSIpCiBwdWJsaWMgY2xhc3MgR3Jvb3Z5VHJhbnNsYXRvclByb3ZpZGVyIGV4dGVuZHMgVGlua2VyR3JhcGhQcm92aWRlciB7CiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsU291cmNlIHRyYXZlcnNhbChmaW5hbCBHcmFwaCBncmFwaCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5VHJhbnNsYXRvclRlc3QuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3JUZXN0LmphdmEKaW5kZXggMzA1NzE3Yy4uNzFmNzllYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5VHJhbnNsYXRvclRlc3QuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yVGVzdC5qYXZhCkBAIC0yNTEsMTcgKzI1MSw2IEBACiAgICAgfQogCiAgICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRPdmVycmlkZURlZmF1bHRUeXBlVHJhbnNsYXRpb25XaXRoU29tZXRoaW5nQm9ua2VycygpIHsKLSAgICAgICAgZmluYWwgVGlua2VyR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7Ci0gICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKLSAgICAgICAgZmluYWwgU3RyaW5nIHRoaW5nVG9TdWZmaXhBbGxTdHJpbmdzV2l0aCA9ICItd2h5LXdvdWxkLWFueW9uZS1kby10aGlzIjsKLSAgICAgICAgZmluYWwgU3RyaW5nIHNjcmlwdCA9IEdyb292eVRyYW5zbGF0b3Iub2YoImciLCB4IC0+IHggaW5zdGFuY2VvZiBTdHJpbmcgPyB4ICsgdGhpbmdUb1N1ZmZpeEFsbFN0cmluZ3NXaXRoIDogeCkuCi0gICAgICAgICAgICAgICAgdHJhbnNsYXRlKGcuaW5qZWN0KCJ5eXkiLCAieHh4IikuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoU3RyaW5nLmZvcm1hdCgiZy5pbmplY3QoXCJ5eXklc1wiLFwieHh4JXNcIikiLCB0aGluZ1RvU3VmZml4QWxsU3RyaW5nc1dpdGgsIHRoaW5nVG9TdWZmaXhBbGxTdHJpbmdzV2l0aCksIHNjcmlwdCk7Ci0gICAgICAgIGFzc2VydFRoYXRTY3JpcHRPayhzY3JpcHQsICJnIiwgZyk7Ci0gICAgfQotCi0gICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRJbmNsdWRlQ3VzdG9tVHlwZVRyYW5zbGF0aW9uRm9yU29tZXRoaW5nU2lsbHkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgVGlua2VyR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CiAgICAgICAgIGZpbmFsIFNpbGx5Q2xhc3Mgbm90U2lsbHlFbm91Z2ggPSBTaWxseUNsYXNzLmZyb20oIm5vdCBzaWxseSBlbm91Z2giLCAxMDApOwpAQCAtMjczLDEwICsyNjIsNyBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoU3RyaW5nLmZvcm1hdCgiZy5pbmplY3QoJXMpIiwgIm5vdCBzaWxseSBlbm91Z2g6MTAwIiksIHNjcmlwdEJhZCk7CiAKICAgICAgICAgLy8gd2l0aCB0eXBlIHRyYW5zbGF0aW9uIHdlIGdldCB2YWxpZCBncmVtbGluCi0gICAgICAgIGZpbmFsIFN0cmluZyBzY3JpcHRHb29kID0gR3Jvb3Z5VHJhbnNsYXRvci5vZigiZyIsCi0gICAgICAgICAgICAgICAgeCAtPiB4IGluc3RhbmNlb2YgU2lsbHlDbGFzcyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVHJhbnNsYXRvci5TY3JpcHRUcmFuc2xhdG9yLkhhbmRsZWQoU3RyaW5nLmZvcm1hdCgib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLkdyb292eVRyYW5zbGF0b3JUZXN0LlNpbGx5Q2xhc3MuZnJvbSgnJXMnLCAoaW50KSAlcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgKChTaWxseUNsYXNzKSB4KS5nZXRYKCksICgoU2lsbHlDbGFzcykgeCkuZ2V0WSgpKSkgOiB4KS4KKyAgICAgICAgZmluYWwgU3RyaW5nIHNjcmlwdEdvb2QgPSBHcm9vdnlUcmFuc2xhdG9yLm9mKCJnIiwgbmV3IFNpbGx5Q2xhc3NUcmFuc2xhdG9yKCkpLgogICAgICAgICAgICAgICAgIHRyYW5zbGF0ZShnLmluamVjdChub3RTaWxseUVub3VnaCkuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoU3RyaW5nLmZvcm1hdCgiZy5pbmplY3Qob3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLkdyb292eVRyYW5zbGF0b3JUZXN0LlNpbGx5Q2xhc3MuZnJvbSgnJXMnLCAoaW50KSAlcykpIiwgbm90U2lsbHlFbm91Z2guZ2V0WCgpLCBub3RTaWxseUVub3VnaC5nZXRZKCkpLCBzY3JpcHRHb29kKTsKICAgICAgICAgYXNzZXJ0VGhhdFNjcmlwdE9rKHNjcmlwdEdvb2QsICJnIiwgZyk7CkBAIC00MTUsMTMgKzQwMSwyMyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTaWxseUNsYXNzVHJhbnNsYXRvciBleHRlbmRzIEdyb292eVRyYW5zbGF0b3IuRGVmYXVsdFR5cGVUcmFuc2xhdG9yIHsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBjb252ZXJ0VG9TdHJpbmcoZmluYWwgT2JqZWN0IG9iamVjdCkgeworICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFNpbGx5Q2xhc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mb3JtYXQoIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlUcmFuc2xhdG9yVGVzdC5TaWxseUNsYXNzLmZyb20oJyVzJywgKGludCkgJXMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoU2lsbHlDbGFzcykgb2JqZWN0KS5nZXRYKCksICgoU2lsbHlDbGFzcykgb2JqZWN0KS5nZXRZKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5jb252ZXJ0VG9TdHJpbmcob2JqZWN0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2lsbHlDbGFzc1RyYW5zbGF0b3JDdXN0b21pemVyIGltcGxlbWVudHMgVHJhbnNsYXRvckN1c3RvbWl6ZXIgewogCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgVHJhbnNsYXRvci5TY3JpcHRUcmFuc2xhdG9yLlR5cGVUcmFuc2xhdG9yIGNyZWF0ZVR5cGVUcmFuc2xhdG9yKCkgewotICAgICAgICAgICAgcmV0dXJuIHggLT4geCBpbnN0YW5jZW9mIFNpbGx5Q2xhc3MgPwotICAgICAgICAgICAgICAgICAgICBuZXcgVHJhbnNsYXRvci5TY3JpcHRUcmFuc2xhdG9yLkhhbmRsZWQoU3RyaW5nLmZvcm1hdCgib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLkdyb292eVRyYW5zbGF0b3JUZXN0LlNpbGx5Q2xhc3MuZnJvbSgnJXMnLCAoaW50KSAlcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU2lsbHlDbGFzcykgeCkuZ2V0WCgpLCAoKFNpbGx5Q2xhc3MpIHgpLmdldFkoKSkpIDogeDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU2lsbHlDbGFzc1RyYW5zbGF0b3IoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxHcmFwaFRlc3QuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxHcmFwaFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UwNTRjZS4uMDAwMDAwMAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGhUZXN0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5kc2wuY3JlZGVudGlhbDsKLQotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJHcmFwaDsKLWltcG9ydCBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydDsKLWltcG9ydCBvcmcuanVuaXQuVGVzdDsKLQotaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuZHNsLmNyZWRlbnRpYWwuQ3JlZGVudGlhbEdyYXBoLmNyZWRlbnRpYWxzOwotaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLmlzOwotaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OwotaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlcnMuZ3JlYXRlclRoYW47Ci1pbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwotaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdEVxdWFsczsKLWltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROdWxsOwotCi0vKioKLSAqIFRoZXNlIHRlc3RzIGNvdmVyIG9sZCBmdW5jdGlvbmFsaXR5IHByaW9yIHRvIHRoZSBuZXcgbWV0aG9kIGZvciBEU0wgaW1wbGVtZW50YXRpb24uCi0gKgotICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQotICogQGRlcHJlY2F0ZWQgQXMgZm9yIHJlbGVhc2UgMy4zLjMsIHJlcGxhY2VkIGJ5IHtAbGluayBDcmVkZW50aWFsVHJhdmVyc2FsRHNsVGVzdH0uCi0gKi8KLUBEZXByZWNhdGVkCi1wdWJsaWMgY2xhc3MgQ3JlZGVudGlhbEdyYXBoVGVzdCB7Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZENyZWF0ZVVzZXIoKSB7Ci0gICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJzdGVwaGVuIiwgInNlY3JldCIpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCB2LnZhbHVlKCJ1c2VybmFtZSIpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJ1c2VyIiwgdi5sYWJlbCgpKTsKLSAgICAgICAgYXNzZXJ0Tm90RXF1YWxzKCJzZWNyZXQiLCB2LnZhbHVlKCJwYXNzd29yZCIpKTsgIC8vIGhhc2hlZCB0byBzb21ldGhpbmcKLSAgICAgICAgYXNzZXJ0VGhhdCh2LnZhbHVlKCJwYXNzd29yZCIpLnRvU3RyaW5nKCkubGVuZ3RoKCksIGdyZWF0ZXJUaGFuKDApKTsKLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlbW92ZVVzZXIoKSB7Ci0gICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKGZhbHNlKSk7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJzdGVwaGVuIiwgInNlY3JldCIpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKHRydWUpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgY3JlZGVudGlhbHMoZ3JhcGgpLnJlbW92ZVVzZXIoInN0ZXBoZW4iKSk7Ci0gICAgICAgIE1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdChncmFwaC52ZXJ0aWNlcygpLmhhc05leHQoKSwgaXMoZmFsc2UpKTsKLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZE5vdFJlbW92ZVVzZXIoKSB7Ci0gICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKGZhbHNlKSk7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJzdGVwaGVuIiwgInNlY3JldCIpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKHRydWUpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgY3JlZGVudGlhbHMoZ3JhcGgpLnJlbW92ZVVzZXIoInN0ZXBoYW5pZSIpKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyh0cnVlKSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kVXNlcigpIHsKLSAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7Ci0gICAgICAgIE1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdChncmFwaC52ZXJ0aWNlcygpLmhhc05leHQoKSwgaXMoZmFsc2UpKTsKLSAgICAgICAgY3JlZGVudGlhbHMoZ3JhcGgpLmNyZWF0ZVVzZXIoIm1hcmtvIiwgInNlY3JldCIpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggc3RlcGhlbiA9IGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJzdGVwaGVuIiwgInNlY3JldCIpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigiZGFuaWVsIiwgInNlY3JldCIpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKHRydWUpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoc3RlcGhlbiwgY3JlZGVudGlhbHMoZ3JhcGgpLmZpbmRVc2VyKCJzdGVwaGVuIikpOwotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkTm90RmluZFVzZXIoKSB7Ci0gICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKGZhbHNlKSk7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJtYXJrbyIsICJzZWNyZXQiKTsKLSAgICAgICAgY3JlZGVudGlhbHMoZ3JhcGgpLmNyZWF0ZVVzZXIoInN0ZXBoZW4iLCAic2VjcmV0Iik7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJkYW5pZWwiLCAic2VjcmV0Iik7Ci0gICAgICAgIE1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdChncmFwaC52ZXJ0aWNlcygpLmhhc05leHQoKSwgaXModHJ1ZSkpOwotCi0gICAgICAgIGFzc2VydE51bGwoY3JlZGVudGlhbHMoZ3JhcGgpLmZpbmRVc2VyKCJzdGVwaGFuaWUiKSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRDb3VudFVzZXJzKCkgewotICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigibWFya28iLCAic2VjcmV0Iik7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJzdGVwaGVuIiwgInNlY3JldCIpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigiZGFuaWVsIiwgInNlY3JldCIpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKHRydWUpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMywgY3JlZGVudGlhbHMoZ3JhcGgpLmNvdW50VXNlcnMoKSk7Ci0gICAgfQotCi0gICAgQFRlc3QoZXhwZWN0ZWQgPSBJbGxlZ2FsU3RhdGVFeGNlcHRpb24uY2xhc3MpCi0gICAgcHVibGljIHZvaWQgc2hvdWxkVGhyb3dJZkZpbmRpbmdNdWx0aXBsZVVzZXJzKCkgewotICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigic3RlcGhlbiIsICJzZWNyZXQiKTsKLSAgICAgICAgY3JlZGVudGlhbHMoZ3JhcGgpLmNyZWF0ZVVzZXIoInN0ZXBoZW4iLCAic2VjcmV0Iik7Ci0gICAgICAgIE1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdChncmFwaC52ZXJ0aWNlcygpLmhhc05leHQoKSwgaXModHJ1ZSkpOwotCi0gICAgICAgIGFzc2VydE51bGwoY3JlZGVudGlhbHMoZ3JhcGgpLmZpbmRVc2VyKCJzdGVwaGVuIikpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9nbHYvVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L2dsdi9UcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUKaW5kZXggNzcyYjVhMS4uMWNhZTEyMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L2dsdi9UcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L2dsdi9UcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUKQEAgLTEzMiw2ICsxMzIsMTUgQEAKICAgfTsKIH0KIAorPCUgdG9rZW5zLmVhY2ggeyBrLHYgLT4gJT4KK2NsYXNzIDwlPSBrICU+IHsKKzwlIHYuZWFjaCB7YSxiIC0+ICU+Cisgc3RhdGljIGdldCA8JT0gYSAlPigpIHsKKyAgIHJldHVybiAiPCU9IGIgJT4iCisgfQorPCUgfSAlPn0KKzwlIH0gJT4KKwogY2xhc3MgUCB7CiAgIC8qKgogICAgKiBSZXByZXNlbnRzIGFuIG9wZXJhdGlvbi4KQEAgLTE5MSw2ICsyMDAsNDggQEAKICAgcmV0dXJuIG5ldyAoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoUCwgYXJncykpOwogfQogCitjbGFzcyBUZXh0UCB7CisgIC8qKgorICAgKiBSZXByZXNlbnRzIGFuIG9wZXJhdGlvbi4KKyAgICogQGNvbnN0cnVjdG9yCisgICAqLworICBjb25zdHJ1Y3RvcihvcGVyYXRvciwgdmFsdWUsIG90aGVyKSB7CisgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yOworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB0aGlzLm90aGVyID0gb3RoZXI7CisgIH0KKworICAvKioKKyAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnN0YW5jZS4KKyAgICogQHJldHVybnMge3N0cmluZ30KKyAgICovCisgIHRvU3RyaW5nKCkgeworICAgIGlmICh0aGlzLm90aGVyID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yICsgJygnICsgdGhpcy52YWx1ZSArICcpJzsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMub3BlcmF0b3IgKyAnKCcgKyB0aGlzLnZhbHVlICsgJywgJyArIHRoaXMub3RoZXIgKyAnKSc7CisgIH0KKworICBhbmQoYXJnKSB7CisgICAgcmV0dXJuIG5ldyBQKCdhbmQnLCB0aGlzLCBhcmcpOworICB9CisKKyAgb3IoYXJnKSB7CisgICAgcmV0dXJuIG5ldyBQKCdvcicsIHRoaXMsIGFyZyk7CisgIH0KKzwlIHRwbWV0aG9kcy5lYWNoeyBtZXRob2QgLT4gJT4KKyAgLyoqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzICovCisgIHN0YXRpYyA8JT0gdG9Kcy5jYWxsKG1ldGhvZCkgJT4oLi4uYXJncykgeworICAgIHJldHVybiBjcmVhdGVUZXh0UCgnPCU9IG1ldGhvZCAlPicsIGFyZ3MpOworICB9Cis8JSB9ICU+Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVRleHRQKG9wZXJhdG9yLCBhcmdzKSB7CisgIGFyZ3MudW5zaGlmdChudWxsLCBvcGVyYXRvcik7CisgIHJldHVybiBuZXcgKEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KFRleHRQLCBhcmdzKSk7Cit9CisKIGNsYXNzIFRyYXZlcnNlciB7CiAgIGNvbnN0cnVjdG9yKG9iamVjdCwgYnVsaykgewogICAgIHRoaXMub2JqZWN0ID0gb2JqZWN0OwpAQCAtMjAyLDYgKzI1MywxMCBAQAogCiB9CiAKK2NvbnN0IHdpdGhPcHRpb25zID0geworICA8JT0gd2l0aE9wdGlvbnMuY29sbGVjdCB7IGl0Lm5hbWUgKyAiOiAiICsgaXQudmFsdWUgfS5qb2luKCIsXG4gICIpJT4KK307CisKIGZ1bmN0aW9uIHRvRW51bSh0eXBlTmFtZSwga2V5cykgewogICBjb25zdCByZXN1bHQgPSB7fTsKICAga2V5cy5zcGxpdCgnICcpLmZvckVhY2goayA9PiB7CkBAIC0yMjgsNiArMjgzLDkgQEAKIG1vZHVsZS5leHBvcnRzID0gewogICBFbnVtVmFsdWUsCiAgIFAsCisgIFRleHRQLAorICB3aXRoT3B0aW9ucywKKyAgSU8sCiAgIFRyYXZlcnNhbCwKICAgVHJhdmVyc2FsU2lkZUVmZmVjdHMsCiAgIFRyYXZlcnNlcjwlCkBAIC0yMzYsNCArMjk0LDQgQEAKICAgICAgICAgZW51bUNsYXNzLmdldEVudW1Db25zdGFudHMoKS5zb3J0IHsgYSwgYiAtPiBhLm5hbWUoKSA8PT4gYi5uYW1lKCkgfS5jb2xsZWN0IHsgdG9Kcy5jYWxsKGl0Lm5hbWUoKSkgfS5qb2luKCcgJykgKyAiJykiCiB9CiAlPgotfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9OwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L2dsdi9nZW5lcmF0ZS5ncm9vdnkgYi9ncmVtbGluLWphdmFzY3JpcHQvZ2x2L2dlbmVyYXRlLmdyb292eQppbmRleCA4ZmQyMmUzLi5jZDNlODk5IDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvZ2x2L2dlbmVyYXRlLmdyb292eQorKysgYi9ncmVtbGluLWphdmFzY3JpcHQvZ2x2L2dlbmVyYXRlLmdyb292eQpAQCAtMjAsMTggKzIwLDMwIEBACiAKIGltcG9ydCBncm9vdnkudGV4dC5HU3RyaW5nVGVtcGxhdGVFbmdpbmUKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5Db3JlSW1wb3J0cworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuQ29ubmVjdGVkQ29tcG9uZW50CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QYWdlUmFuaworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGVlclByZXNzdXJlCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5TaG9ydGVzdFBhdGgKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZQogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2UKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnMKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Nb2RpZmllcgogCiBkZWYgdG9Kc01hcCA9IFsiaW4iOiAiaW5fIiwKLSAgICAgICAgICAgICAgICJmcm9tIjogImZyb21fIl0KKyAgICAgICAgICAgICAgICJmcm9tIjogImZyb21fIiwKKyAgICAgICAgICAgICAgICJ3aXRoIjogIndpdGhfIl0KIAogZGVmIHRvSnMgPSB7IHN5bWJvbCAtPiB0b0pzTWFwLmdldE9yRGVmYXVsdChzeW1ib2wsIHN5bWJvbCkgfQogCitkZWYgdG9KU1ZhbHVlID0geyB0eXBlLCB2YWx1ZSAtPgorICB0eXBlID09IFN0cmluZy5jbGFzcyAmJiB2YWx1ZSAhPSBudWxsID8gKCciJyArIHZhbHVlICsgJyInKSA6IHZhbHVlCit9CisKIGRlZiBkZWNhcGl0YWxpemUgPSB7CiAgICAgU3RyaW5nIHN0cmluZyA9IGl0OwogICAgIGlmIChzdHJpbmcgPT0gbnVsbCB8fCBzdHJpbmcubGVuZ3RoKCkgPT0gMCkgewpAQCAtNDgsNiArNjAsMTIgQEAKICAgICByZXR1cm4gbWF2ZW5WZXJzaW9uLnJlcGxhY2UoIi1TTkFQU0hPVCIsICItYWxwaGExIikKIH0KIAorZGVmIGdhdGhlclRva2Vuc0Zyb20gPSB7IHRva2VuQ2xhc3NlcyAtPgorICAgIGRlZiBtID0gWzpdCisgICAgdG9rZW5DbGFzc2VzLmVhY2ggeyB0YyAtPiBtIDw8IFsodGMuc2ltcGxlTmFtZSkgOiB0Yy5nZXRGaWVsZHMoKS5zb3J0eyBhLCBiIC0+IGEubmFtZSA8PT4gYi5uYW1lIH0uY29sbGVjdEVudHJpZXN7IGYgLT4gWyhmLm5hbWUpIDogZi5nZXQobnVsbCldfV19CisgICAgcmV0dXJuIG0KK30KKwogZGVmIGJpbmRpbmcgPSBbImVudW1zIjogQ29yZUltcG9ydHMuZ2V0Q2xhc3NJbXBvcnRzKCkKICAgICAgICAgLmZpbmRBbGwgeyBFbnVtLmNsYXNzLmlzQXNzaWduYWJsZUZyb20oaXQpIH0KICAgICAgICAgLnNvcnQgeyBhLCBiIC0+IGEuZ2V0U2ltcGxlTmFtZSgpIDw9PiBiLmdldFNpbXBsZU5hbWUoKSB9LApAQCAtNTcsNiArNzUsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7IGl0Lm5hbWUgfS4KICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKCkuCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEgPD0+IGIgfSwKKyAgICAgICAgICAgICAgICJ0cG1ldGhvZHMiOiBUZXh0UC5jbGFzcy5nZXRNZXRob2RzKCkuCisgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBNb2RpZmllci5pc1N0YXRpYyhpdC5nZXRNb2RpZmllcnMoKSkgfS4KKyAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7IFRleHRQLmNsYXNzLmlzQXNzaWduYWJsZUZyb20oaXQucmV0dXJuVHlwZSkgfS4KKyAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7IGl0Lm5hbWUgfS4KKyAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKCkuCisgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEgPD0+IGIgfSwKICAgICAgICAgICAgICAgICJzb3VyY2VTdGVwTWV0aG9kcyI6IEdyYXBoVHJhdmVyc2FsU291cmNlLmdldE1ldGhvZHMoKS4gLy8gU09VUkNFIFNURVBTCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBHcmFwaFRyYXZlcnNhbFNvdXJjZS5jbGFzcy5lcXVhbHMoaXQucmV0dXJuVHlwZSkgfS4KICAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7CkBAIC04Nyw5ICsxMTEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7IGl0Lm5hbWUgfS4KICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKCkuCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEgPD0+IGIgfSwKKyAgICAgICAgICAgICAgICJ0b2tlbnMiOiBnYXRoZXJUb2tlbnNGcm9tKFtJTywgQ29ubmVjdGVkQ29tcG9uZW50LCBTaG9ydGVzdFBhdGgsIFBhZ2VSYW5rLCBQZWVyUHJlc3N1cmVdKSwKICAgICAgICAgICAgICAgICJ0b0pzIjogdG9KcywKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogZGV0ZXJtaW5lVmVyc2lvbigpLAotICAgICAgICAgICAgICAgImRlY2FwaXRhbGl6ZSI6IGRlY2FwaXRhbGl6ZV0KKyAgICAgICAgICAgICAgICJkZWNhcGl0YWxpemUiOiBkZWNhcGl0YWxpemUsCisgICAgICAgICAgICAgICAid2l0aE9wdGlvbnMiOiBXaXRoT3B0aW9ucy5nZXREZWNsYXJlZEZpZWxkcygpLgorICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7WyJuYW1lIjogaXQubmFtZSwgInZhbHVlIjogdG9KU1ZhbHVlKGl0LnR5cGUsIGl0LmdldChudWxsKSldfV0KIAogZGVmIGVuZ2luZSA9IG5ldyBHU3RyaW5nVGVtcGxhdGVFbmdpbmUoKQogZGVmIGdyYXBoVHJhdmVyc2FsVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdC5iYXNlZGlyfS9nbHYvR3JhcGhUcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUiKSkKQEAgLTEwNCw0ICsxMzEsNCBAQAogCiBkZWYgcGFja2FnZUpzb25UZW1wbGF0ZSA9IGVuZ2luZS5jcmVhdGVUZW1wbGF0ZShuZXcgRmlsZSgiJHtwcm9qZWN0LmJhc2VkaXJ9L2dsdi9QYWNrYWdlSnNvbi50ZW1wbGF0ZSIpKS5tYWtlKGJpbmRpbmcpCiBkZWYgcGFja2FnZUpzb25GaWxlID0gbmV3IEZpbGUoIiR7cHJvamVjdC5iYXNlZGlyfS9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9wYWNrYWdlLmpzb24iKQotcGFja2FnZUpzb25GaWxlLm5ld1dyaXRlcigpLndpdGhXcml0ZXJ7IGl0IDw8IHBhY2thZ2VKc29uVGVtcGxhdGUgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3BhY2thZ2VKc29uRmlsZS5uZXdXcml0ZXIoKS53aXRoV3JpdGVyeyBpdCA8PCBwYWNrYWdlSnNvblRlbXBsYXRlIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9wb20ueG1sIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3BvbS54bWwKaW5kZXggMGM5NjgxMS4uYjNiZTIxOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3BvbS54bWwKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tamF2YXNjcmlwdDwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gSmF2YXNjcmlwdDwvbmFtZT4KQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5ncm9vdnk8L2dyb3VwSWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncm9vdnktYWxsPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+JHtncm9vdnkudmVyc2lvbn08L3ZlcnNpb24+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Y2xhc3NpZmllcj5pbmR5PC9jbGFzc2lmaWVyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPnJ1bnRpbWU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgICAgICAgICAgPC9kZXBlbmRlbmNpZXM+CmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvaW5kZXguanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvaW5kZXguanMKaW5kZXggNWVmMGVjYS4uODdmOTg0MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2luZGV4LmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9pbmRleC5qcwpAQCAtNTcsNiArNTcsNyBAQAogICAgIEJ5dGVjb2RlLAogICAgIEVudW1WYWx1ZTogdC5FbnVtVmFsdWUsCiAgICAgUDogdC5QLAorICAgIFRleHRQOiB0LlRleHRQLAogICAgIFRyYXZlcnNhbDogdC5UcmF2ZXJzYWwsCiAgICAgVHJhdmVyc2FsU2lkZUVmZmVjdHM6IHQuVHJhdmVyc2FsU2lkZUVmZmVjdHMsCiAgICAgVHJhdmVyc2FsU3RyYXRlZ2llczogc3RyYXRlZ2llc01vZHVsZS5UcmF2ZXJzYWxTdHJhdGVnaWVzLApAQCAtNzcsNyArNzgsOCBAQAogICAgIHN0YXRpY3M6IGd0LnN0YXRpY3MsCiAgICAgVHJhbnNsYXRvciwKICAgICB0cmF2ZXJzYWw6IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWwsCi0gICAgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlCisgICAgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLAorICAgIHdpdGhPcHRpb25zOiB0LndpdGhPcHRpb25zCiAgIH0sCiAgIHN0cnVjdHVyZTogewogICAgIGlvOiBncywKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvZHJpdmVyL2Nvbm5lY3Rpb24uanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL2RyaXZlci9jb25uZWN0aW9uLmpzCmluZGV4IDI5YmU1ZGMuLjY3ZGNlM2EgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvZHJpdmVyL2Nvbm5lY3Rpb24uanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9kcml2ZXIvY29ubmVjdGlvbi5qcwpAQCAtMjg0LDcgKzI4NCw3IEBACiAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMuY29kZSkgewogICAgICAgY2FzZSByZXNwb25zZVN0YXR1c0NvZGUubm9Db250ZW50OgogICAgICAgICB0aGlzLl9jbGVhckhhbmRsZXIocmVzcG9uc2UucmVxdWVzdElkKTsKLSAgICAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbGJhY2sobnVsbCwgbmV3IFJlc3VsdFNldCh1dGlscy5lbXB0eUFycmF5KSk7CisgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGxiYWNrKG51bGwsIG5ldyBSZXN1bHRTZXQodXRpbHMuZW1wdHlBcnJheSwgcmVzcG9uc2Uuc3RhdHVzLmF0dHJpYnV0ZXMpKTsKICAgICAgIGNhc2UgcmVzcG9uc2VTdGF0dXNDb2RlLnBhcnRpYWxDb250ZW50OgogICAgICAgICBoYW5kbGVyLnJlc3VsdCA9IGhhbmRsZXIucmVzdWx0IHx8IFtdOwogICAgICAgICBoYW5kbGVyLnJlc3VsdC5wdXNoLmFwcGx5KGhhbmRsZXIucmVzdWx0LCByZXNwb25zZS5yZXN1bHQuZGF0YSk7CkBAIC0yOTcsNyArMjk3LDcgQEAKICAgICAgICAgICBoYW5kbGVyLnJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdC5kYXRhOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX2NsZWFySGFuZGxlcihyZXNwb25zZS5yZXF1ZXN0SWQpOwotICAgICAgICByZXR1cm4gaGFuZGxlci5jYWxsYmFjayhudWxsLCBuZXcgUmVzdWx0U2V0KGhhbmRsZXIucmVzdWx0KSk7CisgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGxiYWNrKG51bGwsIG5ldyBSZXN1bHRTZXQoaGFuZGxlci5yZXN1bHQsIHJlc3BvbnNlLnN0YXR1cy5hdHRyaWJ1dGVzKSk7CiAgICAgfQogICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvZHJpdmVyL3Jlc3VsdC1zZXQuanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL2RyaXZlci9yZXN1bHQtc2V0LmpzCmluZGV4IDE4NjBhZWEuLjM2MjdkOWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvZHJpdmVyL3Jlc3VsdC1zZXQuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9kcml2ZXIvcmVzdWx0LXNldC5qcwpAQCAtMjQsNiArMjQsOCBAQAogCiBjb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpOwogY29uc3QgaW5zcGVjdCA9IHV0aWwuaW5zcGVjdC5jdXN0b20gfHwgJ2luc3BlY3QnOworY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpOworY29uc3QgZW1wdHlNYXAgPSBPYmplY3QuZnJlZXplKG5ldyB1dGlscy5JbW11dGFibGVNYXAoKSk7CiAKIC8qKgogICogUmVwcmVzZW50cyB0aGUgcmVzcG9uc2UgcmV0dXJuZWQgZnJvbSB0aGUgZXhlY3V0aW9uIG9mIGEgR3JlbWxpbiB0cmF2ZXJzYWwgb3Igc2NyaXB0LgpAQCAtMzMsOCArMzUsOSBAQAogICAvKioKICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB7QGxpbmsgUmVzdWx0U2V0fS4KICAgICogQHBhcmFtIHtBcnJheX0gaXRlbXMKKyAgICogQHBhcmFtIHtNYXB9IFthdHRyaWJ1dGVzXQogICAgKi8KLSAgY29uc3RydWN0b3IoaXRlbXMpIHsKKyAgY29uc3RydWN0b3IoaXRlbXMsIGF0dHJpYnV0ZXMpIHsKICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7CiAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpdGVtcyBtdXN0IGJlIGFuIEFycmF5IGluc3RhbmNlJyk7CiAgICAgfQpAQCAtNDIsMTggKzQ1LDE2IEBACiAgICAgdGhpcy5faXRlbXMgPSBpdGVtczsKIAogICAgIC8qKgorICAgICAqIEdldHMgYSBNYXAgcmVwcmVzZW50aW5nIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSByZXNwb25zZS4KKyAgICAgKiBAdHlwZSB7TWFwfQorICAgICAqLworICAgIHRoaXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwgZW1wdHlNYXA7CisKKyAgICAvKioKICAgICAgKiBHZXRzIHRoZSBhbW91bnQgb2YgaXRlbXMgaW4gdGhlIHJlc3VsdC4KICAgICAgKiBAdHlwZSB7TnVtYmVyfQogICAgICAqLwogICAgIHRoaXMubGVuZ3RoID0gaXRlbXMubGVuZ3RoOwotCi0gICAgLyoqCi0gICAgICogQWNjZXNzIHRoZSByYXcgcmVzdWx0IGl0ZW1zIHZpYSBhIHByb3BlcnR5LgotICAgICAqIEBkZXByZWNhdGVkIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBBcGFjaGUgVGlua2VyUG9wIHZlcnNpb24gMy40LgotICAgICAqIFVzZSA8Y29kZT50b0FycmF5KCk8L2NvZGU+IG9yIGl0ZXJhdGUgZGlyZWN0bHkgZnJvbSB0aGUgPGNvZGU+UmVzdWx0U2V0PC9jb2RlPi4KLSAgICAgKiBAdHlwZSB7QXJyYXl9Ci0gICAgICovCi0gICAgdGhpcy50cmF2ZXJzZXJzID0gaXRlbXM7CiAgIH0KIAogICAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvcHJvY2Vzcy9ncmFwaC10cmF2ZXJzYWwuanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3Byb2Nlc3MvZ3JhcGgtdHJhdmVyc2FsLmpzCmluZGV4IDFiNzY2NjcuLmVmYTA5N2IgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvcHJvY2Vzcy9ncmFwaC10cmF2ZXJzYWwuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9wcm9jZXNzL2dyYXBoLXRyYXZlcnNhbC5qcwpAQCAtODMsNiArODMsMTYgQEAKICAgfQogICAKICAgLyoqCisgICAqIEdyYXBoIFRyYXZlcnNhbCBTb3VyY2Ugd2l0aCBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbFNvdXJjZX0KKyAgICovCisgIHdpdGhfKC4uLmFyZ3MpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ5dGVjb2RlKHRoaXMuYnl0ZWNvZGUpLmFkZFNvdXJjZSgnd2l0aCcsIGFyZ3MpOworICAgIHJldHVybiBuZXcgdGhpcy5ncmFwaFRyYXZlcnNhbFNvdXJjZUNsYXNzKHRoaXMuZ3JhcGgsIG5ldyBUcmF2ZXJzYWxTdHJhdGVnaWVzKHRoaXMudHJhdmVyc2FsU3RyYXRlZ2llcyksIGIsIHRoaXMuZ3JhcGhUcmF2ZXJzYWxTb3VyY2VDbGFzcywgdGhpcy5ncmFwaFRyYXZlcnNhbENsYXNzKTsKKyAgfQorICAKKyAgLyoqCiAgICAqIEdyYXBoIFRyYXZlcnNhbCBTb3VyY2Ugd2l0aEJ1bGsgbWV0aG9kLgogICAgKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncwogICAgKiBAcmV0dXJucyB7R3JhcGhUcmF2ZXJzYWxTb3VyY2V9CkBAIC0xOTIsNiArMjAyLDE2IEBACiAgICAgcmV0dXJuIG5ldyB0aGlzLmdyYXBoVHJhdmVyc2FsQ2xhc3ModGhpcy5ncmFwaCwgbmV3IFRyYXZlcnNhbFN0cmF0ZWdpZXModGhpcy50cmF2ZXJzYWxTdHJhdGVnaWVzKSwgYik7CiAgIH0KICAgCisgIC8qKgorICAgKiBpbyBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzdGVwIG1ldGhvZC4KKyAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKKyAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQorICAgKi8KKyAgaW8oLi4uYXJncykgeworICAgIGNvbnN0IGIgPSBuZXcgQnl0ZWNvZGUodGhpcy5ieXRlY29kZSkuYWRkU3RlcCgnaW8nLCBhcmdzKTsKKyAgICByZXR1cm4gbmV3IHRoaXMuZ3JhcGhUcmF2ZXJzYWxDbGFzcyh0aGlzLmdyYXBoLCBuZXcgVHJhdmVyc2FsU3RyYXRlZ2llcyh0aGlzLnRyYXZlcnNhbFN0cmF0ZWdpZXMpLCBiKTsKKyAgfQorICAKIH0KIAogLyoqCkBAIC0zNzEsNiArMzkxLDE2IEBACiAgIH0KICAgCiAgIC8qKgorICAgKiBHcmFwaCB0cmF2ZXJzYWwgY29ubmVjdGVkQ29tcG9uZW50IG1ldGhvZC4KKyAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKKyAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQorICAgKi8KKyAgY29ubmVjdGVkQ29tcG9uZW50KC4uLmFyZ3MpIHsKKyAgICB0aGlzLmJ5dGVjb2RlLmFkZFN0ZXAoJ2Nvbm5lY3RlZENvbXBvbmVudCcsIGFyZ3MpOworICAgIHJldHVybiB0aGlzOworICB9CisgIAorICAvKioKICAgICogR3JhcGggdHJhdmVyc2FsIGNvbnN0YW50IG1ldGhvZC4KICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKICAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQpAQCAtNDIxLDYgKzQ1MSwxNiBAQAogICB9CiAgIAogICAvKioKKyAgICogR3JhcGggdHJhdmVyc2FsIGVsZW1lbnRNYXAgbWV0aG9kLgorICAgKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncworICAgKiBAcmV0dXJucyB7R3JhcGhUcmF2ZXJzYWx9CisgICAqLworICBlbGVtZW50TWFwKC4uLmFyZ3MpIHsKKyAgICB0aGlzLmJ5dGVjb2RlLmFkZFN0ZXAoJ2VsZW1lbnRNYXAnLCBhcmdzKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorICAKKyAgLyoqCiAgICAqIEdyYXBoIHRyYXZlcnNhbCBlbWl0IG1ldGhvZC4KICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKICAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQpAQCAtNjAxLDYgKzY0MSwxNiBAQAogICB9CiAgIAogICAvKioKKyAgICogR3JhcGggdHJhdmVyc2FsIGluZGV4IG1ldGhvZC4KKyAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKKyAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQorICAgKi8KKyAgaW5kZXgoLi4uYXJncykgeworICAgIHRoaXMuYnl0ZWNvZGUuYWRkU3RlcCgnaW5kZXgnLCBhcmdzKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorICAKKyAgLyoqCiAgICAqIEdyYXBoIHRyYXZlcnNhbCBpbmplY3QgbWV0aG9kLgogICAgKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncwogICAgKiBAcmV0dXJucyB7R3JhcGhUcmF2ZXJzYWx9CkBAIC05MjEsNiArOTcxLDE2IEBACiAgIH0KICAgCiAgIC8qKgorICAgKiBHcmFwaCB0cmF2ZXJzYWwgcmVhZCBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KKyAgICovCisgIHJlYWQoLi4uYXJncykgeworICAgIHRoaXMuYnl0ZWNvZGUuYWRkU3RlcCgncmVhZCcsIGFyZ3MpOworICAgIHJldHVybiB0aGlzOworICB9CisgIAorICAvKioKICAgICogR3JhcGggdHJhdmVyc2FsIHJlcGVhdCBtZXRob2QuCiAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCiAgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KQEAgLTk2MSw2ICsxMDIxLDE2IEBACiAgIH0KICAgCiAgIC8qKgorICAgKiBHcmFwaCB0cmF2ZXJzYWwgc2hvcnRlc3RQYXRoIG1ldGhvZC4KKyAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKKyAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQorICAgKi8KKyAgc2hvcnRlc3RQYXRoKC4uLmFyZ3MpIHsKKyAgICB0aGlzLmJ5dGVjb2RlLmFkZFN0ZXAoJ3Nob3J0ZXN0UGF0aCcsIGFyZ3MpOworICAgIHJldHVybiB0aGlzOworICB9CisgIAorICAvKioKICAgICogR3JhcGggdHJhdmVyc2FsIHNpZGVFZmZlY3QgbWV0aG9kLgogICAgKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncwogICAgKiBAcmV0dXJucyB7R3JhcGhUcmF2ZXJzYWx9CkBAIC0xMTYwLDYgKzEyMzAsMjYgQEAKICAgICByZXR1cm4gdGhpczsKICAgfQogICAKKyAgLyoqCisgICAqIEdyYXBoIHRyYXZlcnNhbCB3aXRoIG1ldGhvZC4KKyAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKKyAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQorICAgKi8KKyAgd2l0aF8oLi4uYXJncykgeworICAgIHRoaXMuYnl0ZWNvZGUuYWRkU3RlcCgnd2l0aCcsIGFyZ3MpOworICAgIHJldHVybiB0aGlzOworICB9CisgIAorICAvKioKKyAgICogR3JhcGggdHJhdmVyc2FsIHdyaXRlIG1ldGhvZC4KKyAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKKyAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQorICAgKi8KKyAgd3JpdGUoLi4uYXJncykgeworICAgIHRoaXMuYnl0ZWNvZGUuYWRkU3RlcCgnd3JpdGUnLCBhcmdzKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorICAKIH0KIAogZnVuY3Rpb24gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoZm5OYW1lLCBhcmdzKSB7CkBAIC0xMTkyLDYgKzEyODIsNyBAQAogICBjeWNsaWNQYXRoOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2N5Y2xpY1BhdGgnLCBhcmdzKSwKICAgZGVkdXA6ICguLi5hcmdzKSA9PiBjYWxsT25FbXB0eVRyYXZlcnNhbCgnZGVkdXAnLCBhcmdzKSwKICAgZHJvcDogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdkcm9wJywgYXJncyksCisgIGVsZW1lbnRNYXA6ICguLi5hcmdzKSA9PiBjYWxsT25FbXB0eVRyYXZlcnNhbCgnZWxlbWVudE1hcCcsIGFyZ3MpLAogICBlbWl0OiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2VtaXQnLCBhcmdzKSwKICAgZmlsdGVyOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2ZpbHRlcicsIGFyZ3MpLAogICBmbGF0TWFwOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2ZsYXRNYXAnLCBhcmdzKSwKQEAgLTEyMDksNiArMTMwMCw3IEBACiAgIGluXzogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdpbl8nLCBhcmdzKSwKICAgaW5FOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2luRScsIGFyZ3MpLAogICBpblY6ICguLi5hcmdzKSA9PiBjYWxsT25FbXB0eVRyYXZlcnNhbCgnaW5WJywgYXJncyksCisgIGluZGV4OiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2luZGV4JywgYXJncyksCiAgIGluamVjdDogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdpbmplY3QnLCBhcmdzKSwKICAgaXM6ICguLi5hcmdzKSA9PiBjYWxsT25FbXB0eVRyYXZlcnNhbCgnaXMnLCBhcmdzKSwKICAga2V5OiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2tleScsIGFyZ3MpLApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9wcm9jZXNzL3RyYXZlcnNhbC5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvcHJvY2Vzcy90cmF2ZXJzYWwuanMKaW5kZXggYTUxNzJlMy4uOTA2MjQzMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9wcm9jZXNzL3RyYXZlcnNhbC5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3Byb2Nlc3MvdHJhdmVyc2FsLmpzCkBAIC0xMzIsNiArMTMyLDEwMyBAQAogICB9OwogfQogCisKK2NsYXNzIElPIHsKKworIHN0YXRpYyBnZXQgZ3JhcGhtbCgpIHsKKyAgIHJldHVybiAiZ3JhcGhtbCIKKyB9CisKKyBzdGF0aWMgZ2V0IGdyYXBoc29uKCkgeworICAgcmV0dXJuICJncmFwaHNvbiIKKyB9CisKKyBzdGF0aWMgZ2V0IGdyeW8oKSB7CisgICByZXR1cm4gImdyeW8iCisgfQorCisgc3RhdGljIGdldCByZWFkZXIoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AuaW8ucmVhZGVyIgorIH0KKworIHN0YXRpYyBnZXQgcmVnaXN0cnkoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AuaW8ucmVnaXN0cnkiCisgfQorCisgc3RhdGljIGdldCB3cml0ZXIoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AuaW8ud3JpdGVyIgorIH0KK30KKworY2xhc3MgQ29ubmVjdGVkQ29tcG9uZW50IHsKKworIHN0YXRpYyBnZXQgY29tcG9uZW50KCkgeworICAgcmV0dXJuICJncmVtbGluLmNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uY29tcG9uZW50IgorIH0KKworIHN0YXRpYyBnZXQgZWRnZXMoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AuY29ubmVjdGVkQ29tcG9uZW50LmVkZ2VzIgorIH0KKworIHN0YXRpYyBnZXQgcHJvcGVydHlOYW1lKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLmNvbm5lY3RlZENvbXBvbmVudC5wcm9wZXJ0eU5hbWUiCisgfQorfQorCitjbGFzcyBTaG9ydGVzdFBhdGggeworCisgc3RhdGljIGdldCBkaXN0YW5jZSgpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZGlzdGFuY2UiCisgfQorCisgc3RhdGljIGdldCBlZGdlcygpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZWRnZXMiCisgfQorCisgc3RhdGljIGdldCBpbmNsdWRlRWRnZXMoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmluY2x1ZGVFZGdlcyIKKyB9CisKKyBzdGF0aWMgZ2V0IG1heERpc3RhbmNlKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5tYXhEaXN0YW5jZSIKKyB9CisKKyBzdGF0aWMgZ2V0IHRhcmdldCgpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IgorIH0KK30KKworY2xhc3MgUGFnZVJhbmsgeworCisgc3RhdGljIGdldCBlZGdlcygpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5wYWdlUmFuay5lZGdlcyIKKyB9CisKKyBzdGF0aWMgZ2V0IHByb3BlcnR5TmFtZSgpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5wYWdlUmFuay5wcm9wZXJ0eU5hbWUiCisgfQorCisgc3RhdGljIGdldCB0aW1lcygpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5wYWdlUmFuay50aW1lcyIKKyB9Cit9CisKK2NsYXNzIFBlZXJQcmVzc3VyZSB7CisKKyBzdGF0aWMgZ2V0IGVkZ2VzKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS5lZGdlcyIKKyB9CisKKyBzdGF0aWMgZ2V0IHByb3BlcnR5TmFtZSgpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5wZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lIgorIH0KKworIHN0YXRpYyBnZXQgdGltZXMoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AucGVlclByZXNzdXJlLnRpbWVzIgorIH0KK30KKworCiBjbGFzcyBQIHsKICAgLyoqCiAgICAqIFJlcHJlc2VudHMgYW4gb3BlcmF0aW9uLgpAQCAtMjQxLDYgKzMzOCw3MyBAQAogICByZXR1cm4gbmV3IChGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5hcHBseShQLCBhcmdzKSk7CiB9CiAKK2NsYXNzIFRleHRQIHsKKyAgLyoqCisgICAqIFJlcHJlc2VudHMgYW4gb3BlcmF0aW9uLgorICAgKiBAY29uc3RydWN0b3IKKyAgICovCisgIGNvbnN0cnVjdG9yKG9wZXJhdG9yLCB2YWx1ZSwgb3RoZXIpIHsKKyAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7CisgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIHRoaXMub3RoZXIgPSBvdGhlcjsKKyAgfQorCisgIC8qKgorICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGluc3RhbmNlLgorICAgKiBAcmV0dXJucyB7c3RyaW5nfQorICAgKi8KKyAgdG9TdHJpbmcoKSB7CisgICAgaWYgKHRoaXMub3RoZXIgPT09IHVuZGVmaW5lZCkgeworICAgICAgcmV0dXJuIHRoaXMub3BlcmF0b3IgKyAnKCcgKyB0aGlzLnZhbHVlICsgJyknOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5vcGVyYXRvciArICcoJyArIHRoaXMudmFsdWUgKyAnLCAnICsgdGhpcy5vdGhlciArICcpJzsKKyAgfQorCisgIGFuZChhcmcpIHsKKyAgICByZXR1cm4gbmV3IFAoJ2FuZCcsIHRoaXMsIGFyZyk7CisgIH0KKworICBvcihhcmcpIHsKKyAgICByZXR1cm4gbmV3IFAoJ29yJywgdGhpcywgYXJnKTsKKyAgfQorCisgIC8qKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncyAqLworICBzdGF0aWMgY29udGFpbmluZyguLi5hcmdzKSB7CisgICAgcmV0dXJuIGNyZWF0ZVRleHRQKCdjb250YWluaW5nJywgYXJncyk7CisgIH0KKworICAvKiogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgKi8KKyAgc3RhdGljIGVuZGluZ1dpdGgoLi4uYXJncykgeworICAgIHJldHVybiBjcmVhdGVUZXh0UCgnZW5kaW5nV2l0aCcsIGFyZ3MpOworICB9CisKKyAgLyoqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzICovCisgIHN0YXRpYyBub3RDb250YWluaW5nKC4uLmFyZ3MpIHsKKyAgICByZXR1cm4gY3JlYXRlVGV4dFAoJ25vdENvbnRhaW5pbmcnLCBhcmdzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncyAqLworICBzdGF0aWMgbm90RW5kaW5nV2l0aCguLi5hcmdzKSB7CisgICAgcmV0dXJuIGNyZWF0ZVRleHRQKCdub3RFbmRpbmdXaXRoJywgYXJncyk7CisgIH0KKworICAvKiogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgKi8KKyAgc3RhdGljIG5vdFN0YXJ0aW5nV2l0aCguLi5hcmdzKSB7CisgICAgcmV0dXJuIGNyZWF0ZVRleHRQKCdub3RTdGFydGluZ1dpdGgnLCBhcmdzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncyAqLworICBzdGF0aWMgc3RhcnRpbmdXaXRoKC4uLmFyZ3MpIHsKKyAgICByZXR1cm4gY3JlYXRlVGV4dFAoJ3N0YXJ0aW5nV2l0aCcsIGFyZ3MpOworICB9CisKK30KKworZnVuY3Rpb24gY3JlYXRlVGV4dFAob3BlcmF0b3IsIGFyZ3MpIHsKKyAgYXJncy51bnNoaWZ0KG51bGwsIG9wZXJhdG9yKTsKKyAgcmV0dXJuIG5ldyAoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoVGV4dFAsIGFyZ3MpKTsKK30KKwogY2xhc3MgVHJhdmVyc2VyIHsKICAgY29uc3RydWN0b3Iob2JqZWN0LCBidWxrKSB7CiAgICAgdGhpcy5vYmplY3QgPSBvYmplY3Q7CkBAIC0yNTIsNiArNDE2LDE5IEBACiAKIH0KIAorY29uc3Qgd2l0aE9wdGlvbnMgPSB7CisgIHRva2VuczogIn50aW5rZXJwb3AudmFsdWVNYXAudG9rZW5zIiwKKyAgbm9uZTogMCwKKyAgaWRzOiAxLAorICBsYWJlbHM6IDIsCisgIGtleXM6IDQsCisgIHZhbHVlczogOCwKKyAgYWxsOiAxNSwKKyAgaW5kZXhlcjogIn50aW5rZXJwb3AuaW5kZXguaW5kZXhlciIsCisgIGxpc3Q6IDAsCisgIG1hcDogMQorfTsKKwogZnVuY3Rpb24gdG9FbnVtKHR5cGVOYW1lLCBrZXlzKSB7CiAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICBrZXlzLnNwbGl0KCcgJykuZm9yRWFjaChrID0+IHsKQEAgLTI3OCw2ICs0NTUsOSBAQAogbW9kdWxlLmV4cG9ydHMgPSB7CiAgIEVudW1WYWx1ZSwKICAgUCwKKyAgVGV4dFAsCisgIHdpdGhPcHRpb25zLAorICBJTywKICAgVHJhdmVyc2FsLAogICBUcmF2ZXJzYWxTaWRlRWZmZWN0cywKICAgVHJhdmVyc2VyLApAQCAtMjkzLDQgKzQ3Myw0IEBACiAgIHBvcDogdG9FbnVtKCdQb3AnLCAnYWxsIGZpcnN0IGxhc3QgbWl4ZWQnKSwKICAgc2NvcGU6IHRvRW51bSgnU2NvcGUnLCAnZ2xvYmFsIGxvY2FsJyksCiAgIHQ6IHRvRW51bSgnVCcsICdpZCBrZXkgbGFiZWwgdmFsdWUnKQotfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9OwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvZ3JhcGguanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9ncmFwaC5qcwppbmRleCA1MDE5YTljLi4zNTllMmY4IDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9ncmFwaC5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9ncmFwaC5qcwpAQCAtMzgsNyArMzgsNyBAQAogICB9CiAKICAgdG9TdHJpbmcoKSB7Ci0gICAgcmV0dXJuICdncmFwaFtlbXB0eV0nOworICAgIHJldHVybiAnZ3JhcGhbXSc7CiAgIH0KIH0KIApAQCAtMTg0LDQgKzE4NCw0IEBACiAgIFByb3BlcnR5LAogICBWZXJ0ZXgsCiAgIFZlcnRleFByb3BlcnR5Ci19OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK307CmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9pby9ncmFwaC1zZXJpYWxpemVyLmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvaW8vZ3JhcGgtc2VyaWFsaXplci5qcwppbmRleCBmYjQ2MWQ5Li4xMjJmMzE1IDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9pby9ncmFwaC1zZXJpYWxpemVyLmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvc3RydWN0dXJlL2lvL2dyYXBoLXNlcmlhbGl6ZXIuanMKQEAgLTIwNiwxMiArMjA2LDE1IEBACiAgICdnOkZsb2F0JzogIHR5cGVTZXJpYWxpemVycy5OdW1iZXJTZXJpYWxpemVyLAogICAnZzpEb3VibGUnOiB0eXBlU2VyaWFsaXplcnMuTnVtYmVyU2VyaWFsaXplciwKICAgJ2c6RGF0ZSc6IHR5cGVTZXJpYWxpemVycy5EYXRlU2VyaWFsaXplciwKKyAgJ2c6RGlyZWN0aW9uJzogdHlwZVNlcmlhbGl6ZXJzLkRpcmVjdGlvblNlcmlhbGl6ZXIsCiAgICdnOlZlcnRleCc6IHR5cGVTZXJpYWxpemVycy5WZXJ0ZXhTZXJpYWxpemVyLAogICAnZzpFZGdlJzogdHlwZVNlcmlhbGl6ZXJzLkVkZ2VTZXJpYWxpemVyLAogICAnZzpWZXJ0ZXhQcm9wZXJ0eSc6IHR5cGVTZXJpYWxpemVycy5WZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIsCiAgICdnOlByb3BlcnR5JzogdHlwZVNlcmlhbGl6ZXJzLlByb3BlcnR5U2VyaWFsaXplciwKICAgJ2c6UGF0aCc6IHR5cGVTZXJpYWxpemVycy5QYXRoM1NlcmlhbGl6ZXIsCi0gICdnOlQnOiB0eXBlU2VyaWFsaXplcnMuVFNlcmlhbGl6ZXIKKyAgJ2c6VGV4dFAnOiB0eXBlU2VyaWFsaXplcnMuVGV4dFBTZXJpYWxpemVyLAorICAnZzpUJzogdHlwZVNlcmlhbGl6ZXJzLlRTZXJpYWxpemVyLAorICAnZzpCdWxrU2V0JzogdHlwZVNlcmlhbGl6ZXJzLkJ1bGtTZXRTZXJpYWxpemVyCiB9OwogCiBjb25zdCBncmFwaFNPTjNEZXNlcmlhbGl6ZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgZ3JhcGhTT04yRGVzZXJpYWxpemVycywgewpAQCAtMjI3LDYgKzIzMCw3IEBACiAgIHR5cGVTZXJpYWxpemVycy5UcmF2ZXJzZXJTZXJpYWxpemVyLAogICB0eXBlU2VyaWFsaXplcnMuVHJhdmVyc2FsU3RyYXRlZ3lTZXJpYWxpemVyLAogICB0eXBlU2VyaWFsaXplcnMuUFNlcmlhbGl6ZXIsCisgIHR5cGVTZXJpYWxpemVycy5UZXh0UFNlcmlhbGl6ZXIsCiAgIHR5cGVTZXJpYWxpemVycy5MYW1iZGFTZXJpYWxpemVyLAogICB0eXBlU2VyaWFsaXplcnMuRW51bVNlcmlhbGl6ZXIsCiAgIHR5cGVTZXJpYWxpemVycy5WZXJ0ZXhTZXJpYWxpemVyLApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvaW8vdHlwZS1zZXJpYWxpemVycy5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvc3RydWN0dXJlL2lvL3R5cGUtc2VyaWFsaXplcnMuanMKaW5kZXggNDIxODNiOS4uYjE3Mjc0OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvaW8vdHlwZS1zZXJpYWxpemVycy5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9pby90eXBlLXNlcmlhbGl6ZXJzLmpzCkBAIC0xNzcsNiArMTc3LDI4IEBACiAgIH0KIH0KIAorY2xhc3MgVGV4dFBTZXJpYWxpemVyIGV4dGVuZHMgVHlwZVNlcmlhbGl6ZXIgeworICAvKiogQHBhcmFtIHtUZXh0UH0gaXRlbSAqLworICBzZXJpYWxpemUoaXRlbSkgeworICAgIGNvbnN0IHJlc3VsdCA9IHt9OworICAgIHJlc3VsdFt0eXBlS2V5XSA9ICdnOlRleHRQJzsKKyAgICBjb25zdCByZXN1bHRWYWx1ZSA9IHJlc3VsdFt2YWx1ZUtleV0gPSB7CisgICAgICAncHJlZGljYXRlJzogaXRlbS5vcGVyYXRvcgorICAgIH07CisgICAgaWYgKGl0ZW0ub3RoZXIgPT09IHVuZGVmaW5lZCB8fCBpdGVtLm90aGVyID09PSBudWxsKSB7CisgICAgICByZXN1bHRWYWx1ZVsndmFsdWUnXSA9IHRoaXMud3JpdGVyLmFkYXB0T2JqZWN0KGl0ZW0udmFsdWUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJlc3VsdFZhbHVlWyd2YWx1ZSddID0gWyB0aGlzLndyaXRlci5hZGFwdE9iamVjdChpdGVtLnZhbHVlKSwgdGhpcy53cml0ZXIuYWRhcHRPYmplY3QoaXRlbS5vdGhlcikgXTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIGNhbkJlVXNlZEZvcih2YWx1ZSkgeworICAgIHJldHVybiAodmFsdWUgaW5zdGFuY2VvZiB0LlRleHRQKTsKKyAgfQorfQorCiBjbGFzcyBMYW1iZGFTZXJpYWxpemVyIGV4dGVuZHMgVHlwZVNlcmlhbGl6ZXIgewogICAvKiogQHBhcmFtIHtGdW5jdGlvbn0gaXRlbSAqLwogICBzZXJpYWxpemUoaXRlbSkgewpAQCAtMzQxLDYgKzM2MywxMiBAQAogICB9CiB9CiAKK2NsYXNzIERpcmVjdGlvblNlcmlhbGl6ZXIgZXh0ZW5kcyBUeXBlU2VyaWFsaXplciB7CisgICAgZGVzZXJpYWxpemUob2JqKSB7CisgICAgICAgIHJldHVybiB0LmRpcmVjdGlvbltvYmpbdmFsdWVLZXldLnRvTG93ZXJDYXNlKCldOworICAgIH0KK30KKwogY2xhc3MgQXJyYXlTZXJpYWxpemVyIGV4dGVuZHMgVHlwZVNlcmlhbGl6ZXIgewogICBjb25zdHJ1Y3Rvcih0eXBlS2V5KSB7CiAgICAgc3VwZXIoKTsKQEAgLTM2OCw2ICszOTYsMjcgQEAKICAgfQogfQogCitjbGFzcyBCdWxrU2V0U2VyaWFsaXplciBleHRlbmRzIFR5cGVTZXJpYWxpemVyIHsKKyAgZGVzZXJpYWxpemUob2JqKSB7CisgICAgICBjb25zdCB2YWx1ZSA9IG9ialt2YWx1ZUtleV07CisgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7CisgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBBcnJheSwgb2J0YWluZWQ6ICcgKyB2YWx1ZSk7CisgICAgICB9CisKKyAgICAgIC8vIGNvZXJjZSB0aGUgQnVsa1NldCB0byBMaXN0LiBpZiB0aGUgYnVsayBleGNlZWRzIHRoZSBpbnQgc3BhY2UgdGhlbiB3ZSBjYW4ndCBjb2VyY2UgdG8gTGlzdCBhbnl3YXksCisgICAgICAvLyBzbyB0aGlzIHF1ZXJ5IHdpbGwgYmUgdHJvdWJsZS4gd2UnZCBuZWVkIGEgbGVnaXQgQnVsa1NldCBpbXBsZW1lbnRhdGlvbiBoZXJlIGluIGpzLiB0aGlzIGN1cnJlbnQKKyAgICAgIC8vIGltcGxlbWVudGF0aW9uIGlzIGhlcmUgdG8gcmVwbGljYXRlIHRoZSBwcmV2aW91cyBmdW5jdGlvbmFsaXR5IHRoYXQgZXhpc3RlZCBvbiB0aGUgc2VydmVyIHNpZGUgaW4KKyAgICAgIC8vIHByZXZpb3VzIHZlcnNpb25zLgorICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgZm9yIChsZXQgaXggPSAwLCBpeSA9IHZhbHVlLmxlbmd0aDsgaXggPCBpeTsgaXggKz0gMikgeworICAgICAgICBjb25zdCBwYWlyID0gdmFsdWUuc2xpY2UoaXgsIGl4ICsgMik7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoQXJyYXkodGhpcy5yZWFkZXIucmVhZChwYWlyWzFdKSkuZmlsbCh0aGlzLnJlYWRlci5yZWFkKHBhaXJbMF0pKSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiByZXN1bHQ7CisgIH0KK30KKwogY2xhc3MgTWFwU2VyaWFsaXplciBleHRlbmRzIFR5cGVTZXJpYWxpemVyIHsKICAgZGVzZXJpYWxpemUob2JqKSB7CiAgICAgY29uc3QgdmFsdWUgPSBvYmpbdmFsdWVLZXldOwpAQCAtNDEyLDggKzQ2MSwxMCBAQAogfQogCiBtb2R1bGUuZXhwb3J0cyA9IHsKKyAgQnVsa1NldFNlcmlhbGl6ZXIsCiAgIEJ5dGVjb2RlU2VyaWFsaXplciwKICAgRGF0ZVNlcmlhbGl6ZXIsCisgIERpcmVjdGlvblNlcmlhbGl6ZXIsCiAgIEVkZ2VTZXJpYWxpemVyLAogICBFbnVtU2VyaWFsaXplciwKICAgTGFtYmRhU2VyaWFsaXplciwKQEAgLTQyNSw2ICs0NzYsNyBAQAogICBQYXRoU2VyaWFsaXplciwKICAgUHJvcGVydHlTZXJpYWxpemVyLAogICBQU2VyaWFsaXplciwKKyAgVGV4dFBTZXJpYWxpemVyLAogICBTZXRTZXJpYWxpemVyLAogICBUU2VyaWFsaXplciwKICAgVHJhdmVyc2VyU2VyaWFsaXplciwKQEAgLTQzMyw0ICs0ODUsNCBAQAogICB2YWx1ZUtleSwKICAgVmVydGV4UHJvcGVydHlTZXJpYWxpemVyLAogICBWZXJ0ZXhTZXJpYWxpemVyCi19OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK307CmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3V0aWxzLmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi91dGlscy5qcwppbmRleCBjNmIwOTFmLi5mOTk2ZGJhIDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3V0aWxzLmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvdXRpbHMuanMKQEAgLTU1LDQgKzU1LDIyIEBACiAgICAgaGV4LnN1YnN0cigyMCwgMTIpKTsKIH07CiAKLWV4cG9ydHMuZW1wdHlBcnJheSA9IE9iamVjdC5mcmVlemUoW10pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2V4cG9ydHMuZW1wdHlBcnJheSA9IE9iamVjdC5mcmVlemUoW10pOworCitjbGFzcyBJbW11dGFibGVNYXAgZXh0ZW5kcyBNYXAgeworICBjb25zdHJ1Y3RvcihpdGVyYWJsZSkgeworICAgIHN1cGVyKGl0ZXJhYmxlKTsKKyAgfQorCisgIHNldCgpeworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgWydkZWxldGUnXSgpeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGNsZWFyKCkgeyB9Cit9CisKK2V4cG9ydHMuSW1tdXRhYmxlTWFwID0gSW1tdXRhYmxlTWFwOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3BhY2thZ2UuanNvbiBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9wYWNrYWdlLmpzb24KaW5kZXggMGI2MzUyZi4uNzhjM2RmNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3BhY2thZ2UuanNvbgorKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvcGFja2FnZS5qc29uCkBAIC0xLDYgKzEsNiBAQAogewogICAibmFtZSI6ICJncmVtbGluIiwKLSAgInZlcnNpb24iOiAiMy4zLjExLWFscGhhMSIsCisgICJ2ZXJzaW9uIjogIjMuNC43LWFscGhhMSIsCiAgICJkZXNjcmlwdGlvbiI6ICJKYXZhU2NyaXB0IEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudCIsCiAgICJhdXRob3IiOiAiQXBhY2hlIFRpbmtlclBvcCB0ZWFtIiwKICAgImtleXdvcmRzIjogWwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvY3VjdW1iZXIvZmVhdHVyZS1zdGVwcy5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L2N1Y3VtYmVyL2ZlYXR1cmUtc3RlcHMuanMKaW5kZXggMmFkMDg1Zi4uNGMwNDE0YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvY3VjdW1iZXIvZmVhdHVyZS1zdGVwcy5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC9jdWN1bWJlci9mZWF0dXJlLXN0ZXBzLmpzCkBAIC0zNCw2ICszNCw3IEBACiBjb25zdCBQYXRoID0gZ3JhcGhNb2R1bGUuUGF0aDsKIGNvbnN0IF9fID0gZ3JhcGhUcmF2ZXJzYWxNb2R1bGUuc3RhdGljczsKIGNvbnN0IHQgPSB0cmF2ZXJzYWxNb2R1bGUudDsKK2NvbnN0IGRpcmVjdGlvbiA9IHRyYXZlcnNhbE1vZHVsZS5kaXJlY3Rpb247CiAKIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgZmVhdHVyZSBtYXBzIChtW10pLCBhcmUgZGVzZXJpYWxpemVkIGFzIG9iamVjdHMgKHRydWUpIG9yIG1hcHMgKGZhbHNlKS4KIC8vIFVzZSBmYWxzZSBmb3IgR3JhcGhTT04zLgpAQCAtNTIsNyArNTMsOCBAQAogICBbICdzXFxbKC4qKVxcXScsIHRvQXJyYXkgXSwKICAgWyAnbVxcWyguKylcXF0nLCB0b01hcCBdLAogICBbICdjXFxbKC4rKVxcXScsIHRvTGFtYmRhIF0sCi0gIFsgJ3RcXFsoLispXFxdJywgdG9UIF0KKyAgWyAndFxcWyguKylcXF0nLCB0b1QgXSwKKyAgWyAnRFxcWyguKylcXF0nLCB0b0RpcmVjdGlvbiBdCiBdLm1hcCh4ID0+IFsgbmV3IFJlZ0V4cCgnXicgKyB4WzBdICsgJyQnKSwgeFsxXSBdKTsKIAogY29uc3QgaWdub3JlUmVhc29uID0gewpAQCAtNjMsNiArNjUsOSBAQAogY29uc3QgaWdub3JlZFNjZW5hcmlvcyA9IHsKICAgLy8gQW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyB0aGUgc2NlbmFyaW8gbmFtZSBhcyBrZXksIGZvciBleGFtcGxlOgogICAnZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfc3RvcmVYYVhfY2FwWGFYJzogbmV3IElnbm9yZUVycm9yKGlnbm9yZVJlYXNvbi5zZXROb3RTdXBwb3J0ZWQpLAorICAnZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfYWdncmVnYXRlWGxvY2FsX2FYX2NhcFhhWCc6IG5ldyBJZ25vcmVFcnJvcihpZ25vcmVSZWFzb24uc2V0Tm90U3VwcG9ydGVkKSwKKyAgJ2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZCc6IG5ldyBJZ25vcmVFcnJvcihpZ25vcmVSZWFzb24ubmVlZHNGdXJ0aGVySW52ZXN0aWdhdGlvbiksCisgICdnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWRfZWRnZXNYb3V0RVgnOiBuZXcgSWdub3JlRXJyb3IoaWdub3JlUmVhc29uLm5lZWRzRnVydGhlckludmVzdGlnYXRpb24pCiB9OwogCiBkZWZpbmVTdXBwb3J0Q29kZShmdW5jdGlvbihtZXRob2RzKSB7CkBAIC0xODYsMTIgKzE5MSwxNSBAQAogICAgIH0sCiAgICAgT3JkZXI6IHRyYXZlcnNhbE1vZHVsZS5vcmRlciwKICAgICBQOiB0cmF2ZXJzYWxNb2R1bGUuUCwKKyAgICBUZXh0UDogdHJhdmVyc2FsTW9kdWxlLlRleHRQLAorICAgIElPOiB0cmF2ZXJzYWxNb2R1bGUuSU8sCiAgICAgUGljazogdHJhdmVyc2FsTW9kdWxlLnBpY2ssCiAgICAgUG9wOiB0cmF2ZXJzYWxNb2R1bGUucG9wLAogICAgIFNjb3BlOiB0cmF2ZXJzYWxNb2R1bGUuc2NvcGUsCiAgICAgT3BlcmF0b3I6IHRyYXZlcnNhbE1vZHVsZS5vcGVyYXRvciwKICAgICBUOiB0cmF2ZXJzYWxNb2R1bGUudCwKLSAgICB0b0xvbmc6IHV0aWxzLnRvTG9uZworICAgIHRvTG9uZzogdXRpbHMudG9Mb25nLAorICAgIFdpdGhPcHRpb25zOiB0cmF2ZXJzYWxNb2R1bGUud2l0aE9wdGlvbnMKICAgfTsKICAgLy8gUGFzcyB0aGUgcGFyYW1ldGVyIHRvIHRoZSBzYW5kYm94CiAgIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLmZvckVhY2gocGFyYW1OYW1lID0+IHNhbmRib3hbcGFyYW1OYW1lXSA9IHBhcmFtZXRlcnNbcGFyYW1OYW1lXSk7CkBAIC0xOTksNiArMjA3LDggQEAKIH0KIAogZnVuY3Rpb24gdHJhbnNsYXRlKHRyYXZlcnNhbFRleHQpIHsKKyAgLy8gY2xlYW4gdXAgdHJhaWxpbmcgcGVyaW9kL3NwYWNlcyBzbyB0aGF0IGl0J3MgZWFzaWVyIHRvIG1hdGNoIG5ld2xpbmUgd2l0aCgpIHRvIGNvbnZlcnQgdG8gd2l0aF8oKSBiZWxvdworICB0cmF2ZXJzYWxUZXh0ID0gdHJhdmVyc2FsVGV4dC5yZXBsYWNlKC9cKVwuXHMqL2csICcpLicpOwogICAvLyBSZW1vdmUgZXNjYXBlZCBjaGFycwogICB0cmF2ZXJzYWxUZXh0ID0gdHJhdmVyc2FsVGV4dC5yZXBsYWNlKC9cXCIvZywgJyInKTsKICAgLy8gUmVwbGFjZSBsb25nIHN1ZmZpeCB3aXRoIExvbmcgaW5zdGFuY2UKQEAgLTIwNiw2ICsyMTYsNyBAQAogICAvLyBDaGFuZ2UgYWNjb3JkaW5nIHRvIG5hbWluZyBjb252ZW50aW9uCiAgIHRyYXZlcnNhbFRleHQgPSB0cmF2ZXJzYWxUZXh0LnJlcGxhY2UoL1wuaW5cKC9nLCAnLmluXygnKTsKICAgdHJhdmVyc2FsVGV4dCA9IHRyYXZlcnNhbFRleHQucmVwbGFjZSgvXC5mcm9tXCgvZywgJy5mcm9tXygnKTsKKyAgdHJhdmVyc2FsVGV4dCA9IHRyYXZlcnNhbFRleHQucmVwbGFjZSgvXC53aXRoXCgvZywgJy53aXRoXygnKTsKICAgcmV0dXJuIHRyYXZlcnNhbFRleHQ7CiB9CiAKQEAgLTI2OSw2ICsyODAsMTAgQEAKICAgcmV0dXJuIHRbdmFsdWVdOwogfQogCitmdW5jdGlvbiB0b0RpcmVjdGlvbih2YWx1ZSkgeworICAgIHJldHVybiBkaXJlY3Rpb25bdmFsdWUudG9Mb3dlckNhc2UoKV07Cit9CisKIGZ1bmN0aW9uIHRvQXJyYXkoc3RyaW5nTGlzdCkgewogICBpZiAoc3RyaW5nTGlzdCA9PT0gJycpIHsKICAgICByZXR1cm4gbmV3IEFycmF5KDApOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvaW50ZWdyYXRpb24vY2xpZW50LXRlc3RzLmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvaW50ZWdyYXRpb24vY2xpZW50LXRlc3RzLmpzCmluZGV4IDkyZTcwOWMuLjU2YzdjNTggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L2ludGVncmF0aW9uL2NsaWVudC10ZXN0cy5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC9pbnRlZ3JhdGlvbi9jbGllbnQtdGVzdHMuanMKQEAgLTY2LDUgKzY2LDEzIEBACiAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5maXJzdCgpLCAnQ2FyZGluYWxpdHk6c2V0Jyk7CiAgICAgICAgIH0pOwogICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXRyaWV2ZSB0aGUgYXR0cmlidXRlcycsICgpID0+IHsKKyAgICAgIHJldHVybiBjbGllbnQuc3VibWl0KG5ldyBCeXRlY29kZSgpLmFkZFN0ZXAoJ1YnLCBbXSkuYWRkU3RlcCgndGFpbCcsIFtdKSkKKyAgICAgICAgLnRoZW4ocnMgPT4geworICAgICAgICAgIGFzc2VydC5vayhycy5hdHRyaWJ1dGVzIGluc3RhbmNlb2YgTWFwKTsKKyAgICAgICAgICBhc3NlcnQub2socnMuYXR0cmlidXRlcy5nZXQoJ2hvc3QnKSk7CisgICAgICAgIH0pOworICAgIH0pOwogICB9KTsKIH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvZ3JhcGhzb24tdGVzdC5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvZ3JhcGhzb24tdGVzdC5qcwppbmRleCBlNWI1MDlkLi5mMzU1ZmI1IDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC91bml0L2dyYXBoc29uLXRlc3QuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC9ncmFwaHNvbi10ZXN0LmpzCkBAIC03MSw2ICs3MSwxMyBAQAogICAgICAgICAgICAgICB9KTsKICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7CiAgIH0pOworICBpdCgnc2hvdWxkIHBhcnNlIEJ1bGtTZXQnLCBmdW5jdGlvbigpIHsKKyAgICAgIGNvbnN0IG9iaiA9IHsiQHR5cGUiOiAiZzpCdWxrU2V0IiwgIkB2YWx1ZSI6IFsibWFya28iLCB7IkB0eXBlIjogImc6SW50NjQiLCAiQHZhbHVlIjogMX0sICJqb3NoIiwgeyJAdHlwZSI6ICJnOkludDY0IiwgIkB2YWx1ZSI6IDN9XX07CisgICAgICBjb25zdCByZWFkZXIgPSBuZXcgR3JhcGhTT05SZWFkZXIoKTsKKyAgICAgIGNvbnN0IHJlc3VsdCA9IHJlYWRlci5yZWFkKG9iaik7CisgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0Lmxlbmd0aCwgNCk7CisgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJlc3VsdCwgWyJtYXJrbyIsICJqb3NoIiwgImpvc2giLCAiam9zaCJdKTsKKyAgfSk7CiAgIGl0KCdzaG91bGQgcGFyc2UgRGF0ZScsIGZ1bmN0aW9uKCkgewogICAgIGNvbnN0IG9iaiA9IHsgIkB0eXBlIiA6ICJnOkRhdGUiLCAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUgfTsKICAgICBjb25zdCByZWFkZXIgPSBuZXcgR3JhcGhTT05SZWFkZXIoKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvcmVzdWx0LXNldC10ZXN0LmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC9yZXN1bHQtc2V0LXRlc3QuanMKaW5kZXggOWViOTlhZi4uZGYxNjFmMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC9yZXN1bHQtc2V0LXRlc3QuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC9yZXN1bHQtc2V0LXRlc3QuanMKQEAgLTc2LDExICs3NiwxOCBAQAogICAgIH0pOwogICB9KTsKIAotICBkZXNjcmliZSgnI3RyYXZlcnNlcnMnLCAoKSA9PiB7Ci0gICAgaXQoJ3Nob3VsZCBleHBvc2UgZGVwcmVjYXRlZCBwcm9wZXJ0eScsICgpID0+IHsKLSAgICAgIGNvbnN0IGl0ZW1zID0gWyAnYScsICdiJyBdOwotICAgICAgLy8gVHJhdmVyc2VycyBwcm9wZXJ0eSBpcyBnb2luZyB0byBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zCi0gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobmV3IFJlc3VsdFNldChpdGVtcykudHJhdmVyc2VycywgaXRlbXMpOworICBkZXNjcmliZSgnI2F0dHJpYnV0ZXMnLCAoKSA9PiB7CisgICAgaXQoJ3Nob3VsZCBkZWZhdWx0IHRvIGFuIGVtcHR5IE1hcCB3aGVuIG5vdCBkZWZpbmVkJywgKCkgPT4geworICAgICAgY29uc3QgcnMgPSBuZXcgUmVzdWx0U2V0KFtdKTsKKyAgICAgIGFzc2VydC5vayhycy5hdHRyaWJ1dGVzIGluc3RhbmNlb2YgTWFwKTsKKyAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChycy5hdHRyaWJ1dGVzLnNpemUsIDApOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGF0dHJpYnV0ZXMgd2hlbiBkZWZpbmVkJywgKCkgPT4geworICAgICAgY29uc3QgYXR0cmlidXRlcyA9IG5ldyBNYXAoW1snYScsIDFdLCBbJ2InLCAxXV0pOworICAgICAgY29uc3QgcnMgPSBuZXcgUmVzdWx0U2V0KFtdLCBhdHRyaWJ1dGVzKTsKKyAgICAgIGFzc2VydC5vayhycy5hdHRyaWJ1dGVzIGluc3RhbmNlb2YgTWFwKTsKKyAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChycy5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTsKICAgICB9KTsKICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC91bml0L3RyYXZlcnNhbC10ZXN0LmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC90cmF2ZXJzYWwtdGVzdC5qcwppbmRleCA5ZTgyZjlhLi5hY2RjZGQ0IDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC91bml0L3RyYXZlcnNhbC10ZXN0LmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvdHJhdmVyc2FsLXRlc3QuanMKQEAgLTU5LDQxICs1OSw0MSBAQAogICAgIH0pOwogICB9KTsKIAotICBkZXNjcmliZSgnI2hhc05leHQoKScsIGZ1bmN0aW9uKCkgewotICAgIGl0KCdzaG91bGQgYXBwbHkgc3RyYXRlZ2llcyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGFueXRoaW5nIGxlZnQgdG8gaXRlcmF0ZSBpbiB0aGUgdHJhdmVyc2FsJykKLSAgICBjb25zdCBzdHJhdGVneU1vY2sgPSB7Ci0gICAgICBhcHBseTogZnVuY3Rpb24gKHRyYXZlcnNhbCkgewotICAgICAgICB0cmF2ZXJzYWwudHJhdmVyc2VycyA9IFsgbmV3IHQuVHJhdmVyc2VyKDEsIDEpLCBuZXcgdC5UcmF2ZXJzZXIoMiwgMSkgXTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgfQotICAgIH07Ci0gICAgY29uc3Qgc3RyYXRlZ2llcyA9IG5ldyBUcmF2ZXJzYWxTdHJhdGVnaWVzKCk7Ci0gICAgc3RyYXRlZ2llcy5hZGRTdHJhdGVneShzdHJhdGVneU1vY2spOwotICAgIGNvbnN0IHRyYXZlcnNhbCA9IG5ldyB0LlRyYXZlcnNhbChudWxsLCBzdHJhdGVnaWVzLCBudWxsKTsKLSAgICByZXR1cm4gdHJhdmVyc2FsLmhhc05leHQoKQotICAgICAgICAudGhlbihmdW5jdGlvbiAobW9yZSkgewotICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChtb3JlLCB0cnVlKTsKLSAgICAgICAgICByZXR1cm4gdHJhdmVyc2FsLm5leHQoKTsKLSAgICAgICAgfSkKLSAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS52YWx1ZSwgMSk7Ci0gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0uZG9uZSwgZmFsc2UpOwotICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWwubmV4dCgpOwotICAgICAgICB9KQotICAgICAgICAudGhlbihmdW5jdGlvbiAoaXRlbSkgewotICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLnZhbHVlLCAyKTsKLSAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS5kb25lLCBmYWxzZSk7Ci0gICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbC5uZXh0KCk7Ci0gICAgICAgIH0pCi0gICAgICAgIC50aGVuKGZ1bmN0aW9uIChpdGVtKSB7Ci0gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0udmFsdWUsIG51bGwpOwotICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLmRvbmUsIHRydWUpOwotICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWwuaGFzTmV4dCgpOwotICAgICAgICB9KQotICAgICAgICAudGhlbihmdW5jdGlvbiAobW9yZSkgewotICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChtb3JlLCBmYWxzZSk7Ci0gICAgICAgIH0pOwotICB9KTsKKyAgLy8gZGVzY3JpYmUoJyNoYXNOZXh0KCknLCBmdW5jdGlvbigpIHsKKyAgLy8gICBpdCgnc2hvdWxkIGFwcGx5IHN0cmF0ZWdpZXMgYW5kIGRldGVybWluZSBpZiB0aGVyZSBpcyBhbnl0aGluZyBsZWZ0IHRvIGl0ZXJhdGUgaW4gdGhlIHRyYXZlcnNhbCcpCisgIC8vICAgY29uc3Qgc3RyYXRlZ3lNb2NrID0geworICAvLyAgICAgYXBwbHk6IGZ1bmN0aW9uICh0cmF2ZXJzYWwpIHsKKyAgLy8gICAgICAgdHJhdmVyc2FsLnRyYXZlcnNlcnMgPSBbIG5ldyB0LlRyYXZlcnNlcigxLCAxKSwgbmV3IHQuVHJhdmVyc2VyKDIsIDEpIF07CisgIC8vICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgLy8gICAgIH0KKyAgLy8gICB9OworICAvLyAgIGNvbnN0IHN0cmF0ZWdpZXMgPSBuZXcgVHJhdmVyc2FsU3RyYXRlZ2llcygpOworICAvLyAgIHN0cmF0ZWdpZXMuYWRkU3RyYXRlZ3koc3RyYXRlZ3lNb2NrKTsKKyAgLy8gICBjb25zdCB0cmF2ZXJzYWwgPSBuZXcgdC5UcmF2ZXJzYWwobnVsbCwgc3RyYXRlZ2llcywgbnVsbCk7CisgIC8vICAgcmV0dXJuIHRyYXZlcnNhbC5oYXNOZXh0KCkKKyAgLy8gICAgICAgLnRoZW4oZnVuY3Rpb24gKG1vcmUpIHsKKyAgLy8gICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobW9yZSwgdHJ1ZSk7CisgIC8vICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbC5uZXh0KCk7CisgIC8vICAgICAgIH0pCisgIC8vICAgICAgIC50aGVuKGZ1bmN0aW9uIChpdGVtKSB7CisgIC8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0udmFsdWUsIDEpOworICAvLyAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLmRvbmUsIGZhbHNlKTsKKyAgLy8gICAgICAgICByZXR1cm4gdHJhdmVyc2FsLm5leHQoKTsKKyAgLy8gICAgICAgfSkKKyAgLy8gICAgICAgLnRoZW4oZnVuY3Rpb24gKGl0ZW0pIHsKKyAgLy8gICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS52YWx1ZSwgMik7CisgIC8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0uZG9uZSwgZmFsc2UpOworICAvLyAgICAgICAgIHJldHVybiB0cmF2ZXJzYWwubmV4dCgpOworICAvLyAgICAgICB9KQorICAvLyAgICAgICAudGhlbihmdW5jdGlvbiAoaXRlbSkgeworICAvLyAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLnZhbHVlLCBudWxsKTsKKyAgLy8gICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS5kb25lLCB0cnVlKTsKKyAgLy8gICAgICAgICByZXR1cm4gdHJhdmVyc2FsLmhhc05leHQoKTsKKyAgLy8gICAgICAgfSkKKyAgLy8gICAgICAgLnRoZW4oZnVuY3Rpb24gKG1vcmUpIHsKKyAgLy8gICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobW9yZSwgZmFsc2UpOworICAvLyAgICAgICB9KTsKKyAgLy8gfSk7CiAKICAgZGVzY3JpYmUoJyNuZXh0KCknLCBmdW5jdGlvbiAoKSB7CiAgICAgaXQoJ3Nob3VsZCBhcHBseSB0aGUgc3RyYXRlZ2llcyBhbmQgcmV0dXJuIGEgUHJvbWlzZSB3aXRoIHRoZSBpdGVyYXRvciBpdGVtJywgZnVuY3Rpb24gKCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vZ2x2L1RyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZSBiL2dyZW1saW4tcHl0aG9uL2dsdi9UcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUKaW5kZXggZDYxNzMwOC4uM2I3ZWU3MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vZ2x2L1RyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZQorKysgYi9ncmVtbGluLXB5dGhvbi9nbHYvVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlCkBAIC0xOTQsOSArMTk0LDQzIEBACiAgICAgcmV0dXJuIFAuPCU9IG1ldGhvZCAlPigqYXJncykKIAogPCUgfSAlPgotPCUgcG1ldGhvZHMuZmluZEFsbHshaXQuZXF1YWxzKCJjbG9uZSIpfS5lYWNoIHsgbWV0aG9kIC0+ICU+c3RhdGljcy5hZGRfc3RhdGljKCc8JT0gbWV0aG9kICU+Jyw8JT0gbWV0aG9kICU+KQorPCUgcG1ldGhvZHMuZmluZEFsbHshaXQuZXF1YWxzKCJjbG9uZSIpfS5lYWNoIHsgbWV0aG9kIC0+ICU+c3RhdGljcy5hZGRfc3RhdGljKCc8JT0gbWV0aG9kICU+JywgPCU9IG1ldGhvZCAlPikKIAogPCUgfSAlPgorY2xhc3MgVGV4dFAoUCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wZXJhdG9yLCB2YWx1ZSwgb3RoZXI9Tm9uZSk6CisgICAgICAgIFAuX19pbml0X18oc2VsZiwgb3BlcmF0b3IsIHZhbHVlLCBvdGhlcikKKzwlIHRwbWV0aG9kcy5lYWNoIHsgbWV0aG9kIC0+ICU+CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiA8JT0gbWV0aG9kICU+KCphcmdzKToKKyAgICAgICAgcmV0dXJuIFRleHRQKCI8JT0gdG9KYXZhLmNhbGwobWV0aG9kKSAlPiIsICphcmdzKQorPCUgfSAlPgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pIGFuZCBzZWxmLm9wZXJhdG9yID09IG90aGVyLm9wZXJhdG9yIGFuZCBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlIGFuZCBzZWxmLm90aGVyID09IG90aGVyLm90aGVyCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm9wZXJhdG9yICsgIigiICsgc3RyKHNlbGYudmFsdWUpICsgIikiIGlmIHNlbGYub3RoZXIgaXMgTm9uZSBlbHNlIHNlbGYub3BlcmF0b3IgKyAiKCIgKyBzdHIoc2VsZi52YWx1ZSkgKyAiLCIgKyBzdHIoc2VsZi5vdGhlcikgKyAiKSIKKworPCUgdHBtZXRob2RzLmZpbmRBbGx7IWl0LmVxdWFscygiY2xvbmUiKX0uZWFjaCB7IG1ldGhvZCAtPiAlPgorZGVmIDwlPSBtZXRob2QgJT4oKmFyZ3MpOgorICAgIHJldHVybiBUZXh0UC48JT0gbWV0aG9kICU+KCphcmdzKQorCis8JSB9ICU+Cis8JSB0cG1ldGhvZHMuZmluZEFsbHshaXQuZXF1YWxzKCJjbG9uZSIpfS5lYWNoIHsgbWV0aG9kIC0+ICU+c3RhdGljcy5hZGRfc3RhdGljKCc8JT0gbWV0aG9kICU+JywgPCU9IG1ldGhvZCAlPikKKworPCUgfSAlPgorPCUgdG9rZW5zLmVhY2ggeyBrLHYgLT4gJT4KKworJycnCis8JT0gayAlPgorJycnCisKKworY2xhc3MgPCU9IGsgJT4ob2JqZWN0KToKKzwlIHYuZWFjaCB7YSxiIC0+ICU+CisgICAgPCU9IGEgJT4gPSAiPCU9IGIgJT4iCis8JSB9fSAlPgorCiAnJycKIFRSQVZFUlNFUgogJycnCkBAIC0yNjMsNyArMjk3LDggQEAKIAogCiBjbGFzcyBUcmF2ZXJzYWxTdHJhdGVneShvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJhdGVneV9uYW1lPU5vbmUsIGNvbmZpZ3VyYXRpb249Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmF0ZWd5X25hbWU9Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lLCBmcWNuPU5vbmUpOgorICAgICAgICBzZWxmLmZxY24gPSBmcWNuCiAgICAgICAgIHNlbGYuc3RyYXRlZ3lfbmFtZSA9IHR5cGUoc2VsZikuX19uYW1lX18gaWYgc3RyYXRlZ3lfbmFtZSBpcyBOb25lIGVsc2Ugc3RyYXRlZ3lfbmFtZQogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSB7fSBpZiBjb25maWd1cmF0aW9uIGlzIE5vbmUgZWxzZSBjb25maWd1cmF0aW9uCiAKQEAgLTM0OCw5ICszODMsOSBAQAogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gYXJnOgogICAgICAgICAgICAgICAgIG5ld1NldC5hZGQoc2VsZi5fX2NvbnZlcnRBcmd1bWVudChpdGVtKSkKICAgICAgICAgICAgIHJldHVybiBuZXdTZXQKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGFyZywgdHVwbGUpIGFuZCAyID09IGxlbihhcmcpIGFuZCBpc2luc3RhbmNlKGFyZ1swXSwgc3RyKToKLSAgICAgICAgICAgIHNlbGYuYmluZGluZ3NbYXJnWzBdXSA9IGFyZ1sxXQotICAgICAgICAgICAgcmV0dXJuIEJpbmRpbmcoYXJnWzBdLHNlbGYuX19jb252ZXJ0QXJndW1lbnQoYXJnWzFdKSkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGFyZywgQmluZGluZyk6CisgICAgICAgICAgICBzZWxmLmJpbmRpbmdzW2FyZy5rZXldID0gYXJnLnZhbHVlCisgICAgICAgICAgICByZXR1cm4gQmluZGluZyhhcmcua2V5LCBzZWxmLl9fY29udmVydEFyZ3VtZW50KGFyZy52YWx1ZSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gYXJnCiAKQEAgLTM2NSwxNCArNDAwLDE2IEBACiAKIAogY2xhc3MgQmluZGluZ3Mob2JqZWN0KToKLSAgICBkZWYgb2Yoc2VsZixrZXksdmFsdWUpOgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBvZihrZXksIHZhbHVlKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJLZXkgbXVzdCBiZSBzdHIiKQotICAgICAgICByZXR1cm4gKGtleSwgdmFsdWUpCisgICAgICAgIHJldHVybiBCaW5kaW5nKGtleSwgdmFsdWUpCiAKIAogY2xhc3MgQmluZGluZyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLGtleSx2YWx1ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICBzZWxmLmtleSA9IGtleQogICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKIApAQCAtMzg0LDMgKzQyMSwxNCBAQAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gImJpbmRpbmdbIiArIHNlbGYua2V5ICsgIj0iICsgc3RyKHNlbGYudmFsdWUpICsgIl0iCisKKworJycnCitXSVRIIE9QVElPTlMKKycnJworCisKK2NsYXNzIFdpdGhPcHRpb25zKG9iamVjdCk6Cis8JSB3aXRoT3B0aW9ucy5lYWNoIHsgJT4KKyAgICA8JT0gaXQubmFtZSAlPiA9IDwlPSBpdC52YWx1ZSAlPgorPCUgfSAlPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vZ2x2L2dlbmVyYXRlLmdyb292eSBiL2dyZW1saW4tcHl0aG9uL2dsdi9nZW5lcmF0ZS5ncm9vdnkKaW5kZXggMzE0MjRjOC4uNTAxMWE0MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vZ2x2L2dlbmVyYXRlLmdyb292eQorKysgYi9ncmVtbGluLXB5dGhvbi9nbHYvZ2VuZXJhdGUuZ3Jvb3Z5CkBAIC0xOCwxNCArMTgsMjIgQEAKICAqLwogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuQ29yZUltcG9ydHMKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLkNvbm5lY3RlZENvbXBvbmVudAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGFnZVJhbmsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlBlZXJQcmVzc3VyZQoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuU2hvcnRlc3RQYXRoCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2UKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU8KIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18KK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9ucwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Nb2RpZmllcgorCiAvLyB0aGlzIGlzIGEgYml0IG9mIGEgY29weSBvZiB3aGF0J3MgaW4gU3ltYm9sSGVscGVyIC0gbm8gd2F5IGFyb3VuZCBpdCBiZWNhdXNlIHRoaXMgY29kZSBnZW5lcmF0aW9uIHRhc2sgb2NjdXJzCiAvLyBiZWZvcmUgdGhlIFN5bWJvbEhlbHBlciBpcyBhdmFpbGFibGUgdG8gdGhlIHBsdWdpbi4KIGRlZiB0b1B5dGhvbk1hcCA9IFsiYW5kIjogImFuZF8iLApAQCAtNDQsNyArNTIsMTggQEAKICAgICAgICAgICAgICAgICAgICAicmFuZ2UiOiAicmFuZ2VfIiwKICAgICAgICAgICAgICAgICAgICAib3IiOiAib3JfIiwKICAgICAgICAgICAgICAgICAgICAic2V0IjogInNldF8iLAotICAgICAgICAgICAgICAgICAgICJzdW0iOiAic3VtXyJdCisgICAgICAgICAgICAgICAgICAgInN1bSI6ICJzdW1fIiwKKyAgICAgICAgICAgICAgICAgICAid2l0aCI6ICJ3aXRoXyJdCisKK2RlZiBnYXRoZXJUb2tlbnNGcm9tID0geyB0b2tlbkNsYXNzZXMgLT4KKyAgICBkZWYgbSA9IFs6XQorICAgIHRva2VuQ2xhc3Nlcy5lYWNoIHsgdGMgLT4gbSA8PCBbKHRjLnNpbXBsZU5hbWUpIDogdGMuZ2V0RmllbGRzKCkuc29ydHsgYSwgYiAtPiBhLm5hbWUgPD0+IGIubmFtZSB9LmNvbGxlY3RFbnRyaWVzeyBmIC0+IFsoZi5uYW1lKSA6IGYuZ2V0KG51bGwpXX1dfQorICAgIHJldHVybiBtCit9CisKK2RlZiB0b1B5dGhvblZhbHVlID0geyB0eXBlLCB2YWx1ZSAtPgorICB0eXBlID09IFN0cmluZy5jbGFzcyAmJiB2YWx1ZSAhPSBudWxsID8gKCciJyArIHZhbHVlICsgJyInKSA6IHZhbHVlCit9CiAKIGRlZiB0b0phdmFNYXAgPSB0b1B5dGhvbk1hcC5jb2xsZWN0RW50cmllc3trLHYgLT4gWyh2KTprXX0KIGRlZiB0b1B5dGhvbiA9IHsgc3ltYm9sIC0+IHRvUHl0aG9uTWFwLmdldE9yRGVmYXVsdChzeW1ib2wsIHN5bWJvbCkgfQpAQCAtNjEsNiArODAsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7IHRvUHl0aG9uKGl0Lm5hbWUpIH0uCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSgpLgogICAgICAgICAgICAgICAgICAgICAgICBzb3J0IHsgYSwgYiAtPiBhIDw9PiBiIH0sCisgICAgICAgICAgICAgICAidHBtZXRob2RzIjogVGV4dFAuY2xhc3MuZ2V0TWV0aG9kcygpLgorICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgTW9kaWZpZXIuaXNTdGF0aWMoaXQuZ2V0TW9kaWZpZXJzKCkpIH0uCisgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBUZXh0UC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGl0LnJldHVyblR5cGUpIH0uCisgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgeyB0b1B5dGhvbihpdC5uYW1lKSB9LgorICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgc29ydCB7IGEsIGIgLT4gYSA8PT4gYiB9LAogICAgICAgICAgICAgICAgInNvdXJjZVN0ZXBNZXRob2RzIjogR3JhcGhUcmF2ZXJzYWxTb3VyY2UuZ2V0TWV0aG9kcygpLiAvLyBTT1VSQ0UgU1RFUFMKICAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7IEdyYXBoVHJhdmVyc2FsU291cmNlLmNsYXNzLmVxdWFscyhpdC5yZXR1cm5UeXBlKSB9LgogICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsKQEAgLTg5LDggKzExNCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IHsgdG9QeXRob24oaXQubmFtZSkgfS4KICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKCkuCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEgPD0+IGIgfSwKKyAgICAgICAgICAgICAgICJ0b2tlbnMiOiBnYXRoZXJUb2tlbnNGcm9tKFtJTywgQ29ubmVjdGVkQ29tcG9uZW50LCBTaG9ydGVzdFBhdGgsIFBhZ2VSYW5rLCBQZWVyUHJlc3N1cmVdKSwKICAgICAgICAgICAgICAgICJ0b1B5dGhvbiI6IHRvUHl0aG9uLAotICAgICAgICAgICAgICAgInRvSmF2YSI6IHRvSmF2YV0KKyAgICAgICAgICAgICAgICJ0b0phdmEiOiB0b0phdmEsCisgICAgICAgICAgICAgICAid2l0aE9wdGlvbnMiOiBXaXRoT3B0aW9ucy5nZXREZWNsYXJlZEZpZWxkcygpLgorICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7WyJuYW1lIjogaXQubmFtZSwgInZhbHVlIjogdG9QeXRob25WYWx1ZShpdC50eXBlLCBpdC5nZXQobnVsbCkpXX1dCiAKIGRlZiBlbmdpbmUgPSBuZXcgZ3Jvb3Z5LnRleHQuR1N0cmluZ1RlbXBsYXRlRW5naW5lKCkKIGRlZiB0cmF2ZXJzYWxUZW1wbGF0ZSA9IGVuZ2luZS5jcmVhdGVUZW1wbGF0ZShuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vZ2x2L1RyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZSIpKS5tYWtlKGJpbmRpbmcpCkBAIC05OSw0ICsxMjcsNCBAQAogCiBkZWYgZ3JhcGhUcmF2ZXJzYWxUZW1wbGF0ZSA9IGVuZ2luZS5jcmVhdGVUZW1wbGF0ZShuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vZ2x2L0dyYXBoVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlIikpLm1ha2UoYmluZGluZykKIGRlZiBncmFwaFRyYXZlcnNhbEZpbGUgPSBuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvZ3JhcGhfdHJhdmVyc2FsLnB5IikKLWdyYXBoVHJhdmVyc2FsRmlsZS5uZXdXcml0ZXIoKS53aXRoV3JpdGVyeyBpdCA8PCBncmFwaFRyYXZlcnNhbFRlbXBsYXRlIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitncmFwaFRyYXZlcnNhbEZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgZ3JhcGhUcmF2ZXJzYWxUZW1wbGF0ZSB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9wb20ueG1sIGIvZ3JlbWxpbi1weXRob24vcG9tLnhtbAppbmRleCAwODE5NGNmLi44Mjk5ZDU4IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9wb20ueG1sCisrKyBiL2dyZW1saW4tcHl0aG9uL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tcHl0aG9uPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbiBQeXRob248L25hbWU+CkBAIC00NDksNiArNDQ5LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnYga2V5PSJQWVRIT05JT0VOQ09ESU5HIiB2YWx1ZT0idXRmLTg6c3Vycm9nYXRlZXNjYXBlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbGluZT0iLWYgZG90cyAtZSAtdCAtYiAke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9weXRob24yL3JhZGlzaCAke3Byb2plY3QuYmFzZWRpcn0vLi4vZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzLyAtLXVzZXItZGF0YT0mcXVvdDtzZXJpYWxpemVyPWFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbiZxdW90OyIvPiA8IS0tIC1uby1saW5lLWp1bXAgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcnVuIGZvciBncmFwaGJpbmFyeSAxLjAgLS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4ZWMgZXhlY3V0YWJsZT0iZW52L2Jpbi9yYWRpc2giIGRpcj0iJHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vcHl0aG9uMiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb25lcnJvcj0idHJ1ZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnYga2V5PSJQWVRIT05QQVRIIiB2YWx1ZT0iIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnYga2V5PSJQWVRIT05JT0VOQ09ESU5HIiB2YWx1ZT0idXRmLTg6c3Vycm9nYXRlZXNjYXBlIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbGluZT0iLWYgZG90cyAtZSAtdCAtYiAke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9weXRob24yL3JhZGlzaCAke3Byb2plY3QuYmFzZWRpcn0vLi4vZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzLyAtLXVzZXItZGF0YT0mcXVvdDtzZXJpYWxpemVyPWFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wJnF1b3Q7Ii8+IDwhLS0gLW5vLWxpbmUtanVtcCAtLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhcmdldD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgpAQCAtNDc5LDcgKzQ4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5ncm9vdnk8L2dyb3VwSWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyb292eS1hbGw8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7Z3Jvb3Z5LnZlcnNpb259PC92ZXJzaW9uPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xhc3NpZmllcj5pbmR5PC9jbGFzc2lmaWVyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZT5wb208L3R5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5ydW50aW1lPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlcGVuZGVuY3k+CkBAIC02MTUsMTEgKzYyMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YXJnZXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW1zIGxpa2UgaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvdHdpbmUvaXNzdWVzLzMzOCBpcyB0aGUgcmVhc29uIHRvIHN0YXkgYm91bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGlzIG9sZCB2ZXJzaW9uIG9mIHR3aW5lLiBhcyBsb25nIGFzIGtleXJpbmcgZ2V0cyBpbiB0aGUgd2F5IGFuZCBjYW4ndCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkIGFzIGRlc2NyaWJlZCB0aGVuIHlvdSBkb24ndCBnZXQgYSBwcm9tcHQgZm9yIHRoZSBwYXNzd29yZCBvbiBkZXBsb3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBweXBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjIGRpcj0iJHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vcHl0aG9uLXBhY2thZ2VkIiBleGVjdXRhYmxlPSJlbnYvYmluL3BpcCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb25lcnJvcj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbGluZT0iaW5zdGFsbCB0d2luZT09MS4xMi4xIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gY2hlY2sgdGhlIGRpc3QgZm9yIGVycm9ycyBiZWZvcmUgZGVwbG95aW5nIC0tPgorCQkJCQkgICAgICAgICAgICAgICAgICAgIDwhLS0gY2hlY2sgdGhlIGRpc3QgZm9yIGVycm9ycyBiZWZvcmUgZGVwbG95aW5nIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjIGRpcj0iJHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vcHl0aG9uLXBhY2thZ2VkIiBleGVjdXRhYmxlPSJlbnYvYmluL3R3aW5lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxvbmVycm9yPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBsaW5lPSJjaGVjayBkaXN0LyoiLz4KZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9weXRob24vanNyMjIzL1B5dGhvblRyYW5zbGF0b3IuamF2YSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9weXRob24vanNyMjIzL1B5dGhvblRyYW5zbGF0b3IuamF2YQppbmRleCA0MzE5YTgxLi5hMjRlMGU1IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHl0aG9uL2pzcjIyMy9QeXRob25UcmFuc2xhdG9yLmphdmEKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3B5dGhvbi9qc3IyMjMvUHl0aG9uVHJhbnNsYXRvci5qYXZhCkBAIC0yNCw2ICsyNCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TYWNrRnVuY3Rpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmFuc2xhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU291cmNlOwpAQCAtMjI3LDYgKzIyOCw3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBTdHJpbmdCdWlsZGVyIGNvbnZlcnRQVG9TdHJpbmcoZmluYWwgUCBwLCBmaW5hbCBTdHJpbmdCdWlsZGVyIGN1cnJlbnQpIHsKKyAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBUZXh0UCkgcmV0dXJuIGNvbnZlcnRUZXh0UFRvU3RyaW5nKChUZXh0UCkgcCwgY3VycmVudCk7CiAgICAgICAgIGlmIChwIGluc3RhbmNlb2YgQ29ubmVjdGl2ZVApIHsKICAgICAgICAgICAgIGZpbmFsIExpc3Q8UDw/Pj4gbGlzdCA9ICgoQ29ubmVjdGl2ZVApIHApLmdldFByZWRpY2F0ZXMoKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgewpAQCAtMjQwLDYgKzI0MiwxMSBAQAogICAgICAgICByZXR1cm4gY3VycmVudDsKICAgICB9CiAKKyAgICBwcml2YXRlIFN0cmluZ0J1aWxkZXIgY29udmVydFRleHRQVG9TdHJpbmcoZmluYWwgVGV4dFAgcCwgZmluYWwgU3RyaW5nQnVpbGRlciBjdXJyZW50KSB7CisgICAgICAgIGN1cnJlbnQuYXBwZW5kKGNvbnZlcnRTdGF0aWMoIlRleHRQLiIpKS5hcHBlbmQocC5nZXRCaVByZWRpY2F0ZSgpLnRvU3RyaW5nKCkpLmFwcGVuZCgiKCIpLmFwcGVuZChjb252ZXJ0VG9TdHJpbmcocC5nZXRWYWx1ZSgpKSkuYXBwZW5kKCIpIik7CisgICAgICAgIHJldHVybiBjdXJyZW50OworICAgIH0KKwogICAgIHByb3RlY3RlZCBTdHJpbmcgY29udmVydExhbWJkYVRvU3RyaW5nKGZpbmFsIExhbWJkYSBsYW1iZGEpIHsKICAgICAgICAgZmluYWwgU3RyaW5nIGxhbWJkYVN0cmluZyA9IGxhbWJkYS5nZXRMYW1iZGFTY3JpcHQoKS50cmltKCk7CiAgICAgICAgIHJldHVybiBsYW1iZGFTdHJpbmcuc3RhcnRzV2l0aCgibGFtYmRhIikgPyBsYW1iZGFTdHJpbmcgOiAibGFtYmRhICIgKyBsYW1iZGFTdHJpbmc7CmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHl0aG9uL2pzcjIyMy9TeW1ib2xIZWxwZXIuamF2YSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9weXRob24vanNyMjIzL1N5bWJvbEhlbHBlci5qYXZhCmluZGV4IGI1NGU4NzQuLjU0Y2Q1YjMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9weXRob24vanNyMjIzL1N5bWJvbEhlbHBlci5qYXZhCisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9weXRob24vanNyMjIzL1N5bWJvbEhlbHBlci5qYXZhCkBAIC00NSw2ICs0NSw3IEBACiAgICAgICAgIFRPX1BZVEhPTl9NQVAucHV0KCJsaXN0IiwgImxpc3RfIik7CiAgICAgICAgIFRPX1BZVEhPTl9NQVAucHV0KCJzZXQiLCAic2V0XyIpOwogICAgICAgICBUT19QWVRIT05fTUFQLnB1dCgiYWxsIiwgImFsbF8iKTsKKyAgICAgICAgVE9fUFlUSE9OX01BUC5wdXQoIndpdGgiLCAid2l0aF8iKTsKICAgICAgICAgLy8KICAgICAgICAgVE9fUFlUSE9OX01BUC5mb3JFYWNoKChrLCB2KSAtPiBGUk9NX1BZVEhPTl9NQVAucHV0KHYsIGspKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL2RyaXZlcl9yZW1vdGVfY29ubmVjdGlvbi5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvZHJpdmVyX3JlbW90ZV9jb25uZWN0aW9uLnB5CmluZGV4IDNmNGMzOWMuLjNiNmE3NjAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvZHJpdmVyX3JlbW90ZV9jb25uZWN0aW9uLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvZHJpdmVyX3JlbW90ZV9jb25uZWN0aW9uLnB5CkBAIC01NCw4ICs1NCw4IEBACiAgICAgZGVmIHN1Ym1pdChzZWxmLCBieXRlY29kZSk6CiAgICAgICAgIHJlc3VsdF9zZXQgPSBzZWxmLl9jbGllbnQuc3VibWl0KGJ5dGVjb2RlKQogICAgICAgICByZXN1bHRzID0gcmVzdWx0X3NldC5hbGwoKS5yZXN1bHQoKQotICAgICAgICBzaWRlX2VmZmVjdHMgPSBSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cyhyZXN1bHRfc2V0LnJlcXVlc3RfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudCkKKyAgICAgICAgc2lkZV9lZmZlY3RzID0gUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMocmVzdWx0X3NldC5yZXF1ZXN0X2lkLCBzZWxmLl9jbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zZXQuc3RhdHVzX2F0dHJpYnV0ZXMpCiAgICAgICAgIHJldHVybiBSZW1vdGVUcmF2ZXJzYWwoaXRlcihyZXN1bHRzKSwgc2lkZV9lZmZlY3RzKQogCiAgICAgZGVmIHN1Ym1pdEFzeW5jKHNlbGYsIGJ5dGVjb2RlKToKQEAgLTY2LDggKzY2LDggQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHRfc2V0ID0gZi5yZXN1bHQoKQogICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRfc2V0LmFsbCgpLnJlc3VsdCgpCi0gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzID0gUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMocmVzdWx0X3NldC5yZXF1ZXN0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudCkKKyAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHMgPSBSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cyhyZXN1bHRfc2V0LnJlcXVlc3RfaWQsIHNlbGYuX2NsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc2V0LnN0YXR1c19hdHRyaWJ1dGVzKQogICAgICAgICAgICAgICAgIGZ1dHVyZS5zZXRfcmVzdWx0KFJlbW90ZVRyYXZlcnNhbChpdGVyKHJlc3VsdHMpLCBzaWRlX2VmZmVjdHMpKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgIGZ1dHVyZS5zZXRfZXhjZXB0aW9uKGUpCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3Byb3RvY29sLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9wcm90b2NvbC5weQppbmRleCAxYTZkNWM1Li5hZDBkNDY3IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3Byb3RvY29sLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvcHJvdG9jb2wucHkKQEAgLTMzLDkgKzMzLDE0IEBACiAKIAogY2xhc3MgR3JlbWxpblNlcnZlckVycm9yKEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXR1cywgbWVzc2FnZSk6Ci0gICAgICAgIHN1cGVyKEdyZW1saW5TZXJ2ZXJFcnJvciwgc2VsZikuX19pbml0X18obWVzc2FnZSkKLSAgICAgICAgc2VsZi5zdGF0dXNfY29kZSA9IHN0YXR1cworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGF0dXMpOgorICAgICAgICBzdXBlcihHcmVtbGluU2VydmVyRXJyb3IsIHNlbGYpLl9faW5pdF9fKCJ7MH06IHsxfSIuZm9ybWF0KHN0YXR1c1siY29kZSJdLCBzdGF0dXNbIm1lc3NhZ2UiXSkpCisgICAgICAgIHNlbGYuX3N0YXR1c19hdHRyaWJ1dGVzID0gc3RhdHVzWyJhdHRyaWJ1dGVzIl0KKyAgICAgICAgc2VsZi5zdGF0dXNfY29kZSA9IHN0YXR1c1siY29kZSJdCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RhdHVzX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zdGF0dXNfYXR0cmlidXRlcwogCiAKIEBzaXguYWRkX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkKQEAgLTcyLDkgKzc3LDEwIEBACiAgICAgZGVmIGRhdGFfcmVjZWl2ZWQoc2VsZiwgbWVzc2FnZSwgcmVzdWx0c19kaWN0KToKICAgICAgICAgIyBpZiBHcmVtbGluIFNlcnZlciBjdXRzIG9mZiB0aGVuIHdlIGdldCBhIE5vbmUgZm9yIHRoZSBtZXNzYWdlCiAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEdyZW1saW5TZXJ2ZXJFcnJvcig1MDAsICI1MDA6IFNlcnZlciBkaXNjb25uZWN0ZWQgLSBwbGVhc2UgdHJ5IHRvIHJlY29ubmVjdCIpCisgICAgICAgICAgICByYWlzZSBHcmVtbGluU2VydmVyRXJyb3Ioeydjb2RlJzogNTAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnU2VydmVyIGRpc2Nvbm5lY3RlZCAtIHBsZWFzZSB0cnkgdG8gcmVjb25uZWN0JywgJ2F0dHJpYnV0ZXMnOiB7fX0pCiAKLSAgICAgICAgbWVzc2FnZSA9IHNlbGYuX21lc3NhZ2Vfc2VyaWFsaXplci5kZXNlcmlhbGl6ZV9tZXNzYWdlKGpzb24ubG9hZHMobWVzc2FnZS5kZWNvZGUoJ3V0Zi04JykpKQorICAgICAgICBtZXNzYWdlID0gc2VsZi5fbWVzc2FnZV9zZXJpYWxpemVyLmRlc2VyaWFsaXplX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgcmVxdWVzdF9pZCA9IG1lc3NhZ2VbJ3JlcXVlc3RJZCddCiAgICAgICAgIHJlc3VsdF9zZXQgPSByZXN1bHRzX2RpY3RbcmVxdWVzdF9pZF0gaWYgcmVxdWVzdF9pZCBpbiByZXN1bHRzX2RpY3QgZWxzZSBSZXN1bHRTZXQoTm9uZSwgTm9uZSkKICAgICAgICAgc3RhdHVzX2NvZGUgPSBtZXNzYWdlWydzdGF0dXMnXVsnY29kZSddCkBAIC05OCw5ICsxMDQsOSBAQAogICAgICAgICBlbGlmIHN0YXR1c19jb2RlIGluIFsyMDAsIDIwNl06CiAgICAgICAgICAgICByZXN1bHRfc2V0LnN0cmVhbS5wdXRfbm93YWl0KGRhdGEpCiAgICAgICAgICAgICBpZiBzdGF0dXNfY29kZSA9PSAyMDA6CisgICAgICAgICAgICAgICAgcmVzdWx0X3NldC5zdGF0dXNfYXR0cmlidXRlcyA9IG1lc3NhZ2VbJ3N0YXR1cyddWydhdHRyaWJ1dGVzJ10KICAgICAgICAgICAgICAgICBkZWwgcmVzdWx0c19kaWN0W3JlcXVlc3RfaWRdCiAgICAgICAgICAgICByZXR1cm4gc3RhdHVzX2NvZGUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRlbCByZXN1bHRzX2RpY3RbcmVxdWVzdF9pZF0KLSAgICAgICAgICAgIHJhaXNlIEdyZW1saW5TZXJ2ZXJFcnJvcihzdGF0dXNfY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezB9OiB7MX0iLmZvcm1hdChzdGF0dXNfY29kZSwgbWVzc2FnZVsic3RhdHVzIl1bIm1lc3NhZ2UiXSkpCisgICAgICAgICAgICByYWlzZSBHcmVtbGluU2VydmVyRXJyb3IobWVzc2FnZVsic3RhdHVzIl0pCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3JlbW90ZV9jb25uZWN0aW9uLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9yZW1vdGVfY29ubmVjdGlvbi5weQppbmRleCBkMjRhYmU0Li42YjZkZTE0IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3JlbW90ZV9jb25uZWN0aW9uLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvcmVtb3RlX2Nvbm5lY3Rpb24ucHkKQEAgLTYzLDEyICs2MywxNyBAQAogCiAKIGNsYXNzIFJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzKHRyYXZlcnNhbC5UcmF2ZXJzYWxTaWRlRWZmZWN0cyk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNpZGVfZWZmZWN0LCBjbGllbnQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaWRlX2VmZmVjdCwgY2xpZW50LCBzdGF0dXNfYXR0cmlidXRlcyk6CiAgICAgICAgIHNlbGYuX3NpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKICAgICAgICAgc2VsZi5fY2xpZW50ID0gY2xpZW50CiAgICAgICAgIHNlbGYuX2tleXMgPSBzZXQoKQogICAgICAgICBzZWxmLl9zaWRlX2VmZmVjdHMgPSB7fQogICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9zdGF0dXNfYXR0cmlidXRlcyA9IHN0YXR1c19hdHRyaWJ1dGVzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RhdHVzX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zdGF0dXNfYXR0cmlidXRlcwogCiAgICAgZGVmIGtleXMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6CmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3Jlc3VsdHNldC5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvcmVzdWx0c2V0LnB5CmluZGV4IDgyOTQ2YTcuLjY2NTY2ZmUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvcmVzdWx0c2V0LnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvcmVzdWx0c2V0LnB5CkBAIC0yOCw2ICsyOCw3IEBACiAgICAgICAgIHNlbGYuX3JlcXVlc3RfaWQgPSByZXF1ZXN0X2lkCiAgICAgICAgIHNlbGYuX2RvbmUgPSBOb25lCiAgICAgICAgIHNlbGYuX2FnZ3JlZ2F0ZV90byA9IE5vbmUKKyAgICAgICAgc2VsZi5fc3RhdHVzX2F0dHJpYnV0ZXMgPSB7fQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGFnZ3JlZ2F0ZV90byhzZWxmKToKQEAgLTM4LDYgKzM5LDE0IEBACiAgICAgICAgIHNlbGYuX2FnZ3JlZ2F0ZV90byA9IHZhbAogCiAgICAgQHByb3BlcnR5CisgICAgZGVmIHN0YXR1c19hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc3RhdHVzX2F0dHJpYnV0ZXMKKworICAgIEBzdGF0dXNfYXR0cmlidXRlcy5zZXR0ZXIKKyAgICBkZWYgc3RhdHVzX2F0dHJpYnV0ZXMoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5fc3RhdHVzX2F0dHJpYnV0ZXMgPSB2YWwKKworICAgIEBwcm9wZXJ0eQogICAgIGRlZiByZXF1ZXN0X2lkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9pZAogCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3NlcmlhbGl6ZXIucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3NlcmlhbGl6ZXIucHkKaW5kZXggNDFkNjAzZC4uYzdiNmI0ZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9zZXJpYWxpemVyLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvc2VyaWFsaXplci5weQpAQCAtNiw5ICs2LDkgQEAKICMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQogIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCiAjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMgCisjCiAjIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotIyAKKyMKICMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAogIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgogIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKQEAgLTIwLDcgKzIwLDExIEBACiAgICAgaW1wb3J0IHVqc29uIGFzIGpzb24KIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQganNvbgoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHV1aWQKK2ltcG9ydCBpbwogCitmcm9tIGdyZW1saW5fcHl0aG9uLnN0cnVjdHVyZS5pbyBpbXBvcnQgZ3JhcGhiaW5hcnlWMQogZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuaW8gaW1wb3J0IGdyYXBoc29uVjJkMAogZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuaW8gaW1wb3J0IGdyYXBoc29uVjNkMAogCkBAIC0zMSw3ICszNSw3IEBACiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgT3BQcm9jZXNzb3Igc2VyaWFsaXphdGlvbiBzeXN0ZW0uIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgd3JpdGVyKToKLSAgICAgICAgc2VsZi5fZ3JhcGhzb25fd3JpdGVyID0gd3JpdGVyCisgICAgICAgIHNlbGYuX3dyaXRlciA9IHdyaXRlcgogCiAgICAgZGVmIGdldF9vcF9hcmdzKHNlbGYsIG9wLCBhcmdzKToKICAgICAgICAgb3BfbWV0aG9kID0gZ2V0YXR0cihzZWxmLCBvcCwgTm9uZSkKQEAgLTY3LDcgKzcxLDcgQEAKIAogICAgIGRlZiBieXRlY29kZShzZWxmLCBhcmdzKToKICAgICAgICAgZ3JlbWxpbiA9IGFyZ3NbJ2dyZW1saW4nXQotICAgICAgICBhcmdzWydncmVtbGluJ10gPSBzZWxmLl9ncmFwaHNvbl93cml0ZXIudG9EaWN0KGdyZW1saW4pCisgICAgICAgIGFyZ3NbJ2dyZW1saW4nXSA9IHNlbGYuX3dyaXRlci50b0RpY3QoZ3JlbWxpbikKICAgICAgICAgYWxpYXNlcyA9IGFyZ3MuZ2V0KCdhbGlhc2VzJywgJycpCiAgICAgICAgIGlmIG5vdCBhbGlhc2VzOgogICAgICAgICAgICAgYWxpYXNlcyA9IHsnZyc6ICdnJ30KQEAgLTc4LDggKzgyLDggQEAKICAgICAgICAgcmV0dXJuIHNlbGYua2V5cyhhcmdzKQogCiAgICAgZGVmIGdhdGhlcihzZWxmLCBhcmdzKToKLSAgICAgICAgc2lkZV9lZmZlY3QgPSBhcmdzWydzaWRlRWZmZWN0J10KLSAgICAgICAgYXJnc1snc2lkZUVmZmVjdCddID0geydAdHlwZSc6ICdnOlVVSUQnLCAnQHZhbHVlJzogc2lkZV9lZmZlY3R9CisgICAgICAgIHNpZGVfZWZmZWN0ID0gdXVpZC5VVUlEKGFyZ3NbJ3NpZGVFZmZlY3QnXSkKKyAgICAgICAgYXJnc1snc2lkZUVmZmVjdCddID0gc2VsZi5fd3JpdGVyLnRvRGljdChzaWRlX2VmZmVjdCkKICAgICAgICAgYWxpYXNlcyA9IGFyZ3MuZ2V0KCdhbGlhc2VzJywgJycpCiAgICAgICAgIGlmIG5vdCBhbGlhc2VzOgogICAgICAgICAgICAgYWxpYXNlcyA9IHsnZyc6ICdnJ30KQEAgLTg3LDggKzkxLDggQEAKICAgICAgICAgcmV0dXJuIGFyZ3MKIAogICAgIGRlZiBrZXlzKHNlbGYsIGFyZ3MpOgotICAgICAgICBzaWRlX2VmZmVjdCA9IGFyZ3NbJ3NpZGVFZmZlY3QnXQotICAgICAgICBhcmdzWydzaWRlRWZmZWN0J10gPSB7J0B0eXBlJzogJ2c6VVVJRCcsICdAdmFsdWUnOiBzaWRlX2VmZmVjdH0KKyAgICAgICAgc2lkZV9lZmZlY3QgPSB1dWlkLlVVSUQoYXJnc1snc2lkZUVmZmVjdCddKQorICAgICAgICBhcmdzWydzaWRlRWZmZWN0J10gPSBzZWxmLl93cml0ZXIudG9EaWN0KHNpZGVfZWZmZWN0KQogICAgICAgICByZXR1cm4gYXJncwogCiAKQEAgLTE1NSw3ICsxNTksOCBAQAogICAgICAgICByZXR1cm4gbWVzc2FnZQogCiAgICAgZGVmIGRlc2VyaWFsaXplX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9ncmFwaHNvbl9yZWFkZXIudG9PYmplY3QobWVzc2FnZSkKKyAgICAgICAgbXNnID0ganNvbi5sb2FkcyhtZXNzYWdlLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dyYXBoc29uX3JlYWRlci50b09iamVjdChtc2cpCiAKIAogY2xhc3MgR3JhcGhTT05TZXJpYWxpemVyc1YyZDAoR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplcik6CkBAIC0xNzQsMyArMTc5LDExNSBAQAogICAgICAgICB3cml0ZXIgPSBncmFwaHNvblYzZDAuR3JhcGhTT05Xcml0ZXIoKQogICAgICAgICB2ZXJzaW9uID0gYiJhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2pzb24iCiAgICAgICAgIHN1cGVyKEdyYXBoU09OU2VyaWFsaXplcnNWM2QwLCBzZWxmKS5fX2luaXRfXyhyZWFkZXIsIHdyaXRlciwgdmVyc2lvbikKKworCitjbGFzcyBHcmFwaEJpbmFyeVNlcmlhbGl6ZXJzVjEob2JqZWN0KToKKyAgICBERUZBVUxUX1JFQURFUl9DTEFTUyA9IGdyYXBoYmluYXJ5VjEuR3JhcGhCaW5hcnlSZWFkZXIKKyAgICBERUZBVUxUX1dSSVRFUl9DTEFTUyA9IGdyYXBoYmluYXJ5VjEuR3JhcGhCaW5hcnlXcml0ZXIKKyAgICBERUZBVUxUX1ZFUlNJT04gPSBiImFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wIgorCisgICAgbWF4X2ludDY0ID0gMHhGRkZGRkZGRkZGRkZGRkZGCisgICAgaGVhZGVyX3N0cnVjdCA9IHN0cnVjdC5TdHJ1Y3QoJz5iMzJzQlFRJykKKyAgICBoZWFkZXJfcGFjayA9IGhlYWRlcl9zdHJ1Y3QucGFjaworICAgIGludF9wYWNrID0gZ3JhcGhiaW5hcnlWMS5pbnQzMl9wYWNrCisgICAgaW50MzJfdW5wYWNrID0gc3RydWN0LlN0cnVjdCgiPmkiKS51bnBhY2sKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkZXI9Tm9uZSwgd3JpdGVyPU5vbmUsIHZlcnNpb249Tm9uZSk6CisgICAgICAgIGlmIG5vdCB2ZXJzaW9uOgorICAgICAgICAgICAgdmVyc2lvbiA9IHNlbGYuREVGQVVMVF9WRVJTSU9OCisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSB2ZXJzaW9uCisgICAgICAgIGlmIG5vdCByZWFkZXI6CisgICAgICAgICAgICByZWFkZXIgPSBzZWxmLkRFRkFVTFRfUkVBREVSX0NMQVNTKCkKKyAgICAgICAgc2VsZi5fZ3JhcGhiaW5hcnlfcmVhZGVyID0gcmVhZGVyCisgICAgICAgIGlmIG5vdCB3cml0ZXI6CisgICAgICAgICAgICB3cml0ZXIgPSBzZWxmLkRFRkFVTFRfV1JJVEVSX0NMQVNTKCkKKyAgICAgICAgc2VsZi5fZ3JhcGhiaW5hcnlfd3JpdGVyID0gd3JpdGVyCisgICAgICAgIHNlbGYuc3RhbmRhcmQgPSBTdGFuZGFyZCh3cml0ZXIpCisgICAgICAgIHNlbGYudHJhdmVyc2FsID0gVHJhdmVyc2FsKHdyaXRlcikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiJSZWFkIG9ubHkgcHJvcGVydHkiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworICAgIGRlZiBnZXRfcHJvY2Vzc29yKHNlbGYsIHByb2Nlc3Nvcik6CisgICAgICAgIHByb2Nlc3NvciA9IGdldGF0dHIoc2VsZiwgcHJvY2Vzc29yLCBOb25lKQorICAgICAgICBpZiBub3QgcHJvY2Vzc29yOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJVbmtub3duIHByb2Nlc3NvciIpCisgICAgICAgIHJldHVybiBwcm9jZXNzb3IKKworICAgIGRlZiBzZXJpYWxpemVfbWVzc2FnZShzZWxmLCByZXF1ZXN0X2lkLCByZXF1ZXN0X21lc3NhZ2UpOgorICAgICAgICBwcm9jZXNzb3IgPSByZXF1ZXN0X21lc3NhZ2UucHJvY2Vzc29yCisgICAgICAgIG9wID0gcmVxdWVzdF9tZXNzYWdlLm9wCisgICAgICAgIGFyZ3MgPSByZXF1ZXN0X21lc3NhZ2UuYXJncworICAgICAgICBpZiBub3QgcHJvY2Vzc29yOgorICAgICAgICAgICAgcHJvY2Vzc29yX29iaiA9IHNlbGYuZ2V0X3Byb2Nlc3Nvcignc3RhbmRhcmQnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJvY2Vzc29yX29iaiA9IHNlbGYuZ2V0X3Byb2Nlc3Nvcihwcm9jZXNzb3IpCisgICAgICAgIGFyZ3MgPSBwcm9jZXNzb3Jfb2JqLmdldF9vcF9hcmdzKG9wLCBhcmdzKQorICAgICAgICBtZXNzYWdlID0gc2VsZi5idWlsZF9tZXNzYWdlKHJlcXVlc3RfaWQsIHByb2Nlc3Nvciwgb3AsIGFyZ3MpCisgICAgICAgIHJldHVybiBtZXNzYWdlCisKKyAgICBkZWYgYnVpbGRfbWVzc2FnZShzZWxmLCByZXF1ZXN0X2lkLCBwcm9jZXNzb3IsIG9wLCBhcmdzKToKKyAgICAgICAgbWVzc2FnZSA9IHsKKyAgICAgICAgICAgICdyZXF1ZXN0SWQnOiByZXF1ZXN0X2lkLAorICAgICAgICAgICAgJ3Byb2Nlc3Nvcic6IHByb2Nlc3NvciwKKyAgICAgICAgICAgICdvcCc6IG9wLAorICAgICAgICAgICAgJ2FyZ3MnOiBhcmdzCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGYuZmluYWxpemVfbWVzc2FnZShtZXNzYWdlLCAweDIwLCBzZWxmLnZlcnNpb24pCisKKyAgICBkZWYgZmluYWxpemVfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBtaW1lX2xlbiwgbWltZV90eXBlKToKKyAgICAgICAgYmEgPSBieXRlYXJyYXkoKQorCisgICAgICAgIHJlcXVlc3RfaWQgPSB1dWlkLlVVSUQobWVzc2FnZVsncmVxdWVzdElkJ10pCisgICAgICAgIGJhLmV4dGVuZChzZWxmLmhlYWRlcl9wYWNrKG1pbWVfbGVuLCBtaW1lX3R5cGUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0X2lkLmludCA+PiA2NCkgJiBzZWxmLm1heF9pbnQ2NCwgcmVxdWVzdF9pZC5pbnQgJiBzZWxmLm1heF9pbnQ2NCkpCisKKyAgICAgICAgb3BfYnl0ZXMgPSBtZXNzYWdlWydvcCddLmVuY29kZSgidXRmLTgiKQorICAgICAgICBiYS5leHRlbmQoc2VsZi5pbnRfcGFjayhsZW4ob3BfYnl0ZXMpKSkKKyAgICAgICAgYmEuZXh0ZW5kKG9wX2J5dGVzKQorCisgICAgICAgIHByb2Nlc3Nvcl9ieXRlcyA9IG1lc3NhZ2VbJ3Byb2Nlc3NvciddLmVuY29kZSgidXRmLTgiKQorICAgICAgICBiYS5leHRlbmQoc2VsZi5pbnRfcGFjayhsZW4ocHJvY2Vzc29yX2J5dGVzKSkpCisgICAgICAgIGJhLmV4dGVuZChwcm9jZXNzb3JfYnl0ZXMpCisKKyAgICAgICAgYXJncyA9IG1lc3NhZ2VbImFyZ3MiXQorICAgICAgICBiYS5leHRlbmQoc2VsZi5pbnRfcGFjayhsZW4oYXJncykpKQorICAgICAgICBmb3IgaywgdiBpbiBhcmdzLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLl9ncmFwaGJpbmFyeV93cml0ZXIudG9EaWN0KGssIGJhKQorCisgICAgICAgICAgICAjIHByb2Nlc3Nvcl9vYmouZ2V0X29wX2FyZ3MgaW4gc2VyaWFsaXplX21lc3NhZ2UoKSBzZWVtcyB0byBhbHJlYWR5IGhhbmRsZSBieXRlY29kZS4gaW4gcHl0aG9uIDMKKyAgICAgICAgICAgICMgYmVjYXVzZSBieXRlYXJyYXkgaXNuJ3QgYm91bmQgdG8gYSB0eXBlIGluIGdyYXBoYmluYXJ5IGl0IGZhbGxzIHRocm91Z2ggdGhlIHdyaXRlT2JqZWN0KCkgYW5kCisgICAgICAgICAgICAjIGp1c3Qgd29ya3MgYnV0IHB5dGhvbiAyIGJ5dGVhcnJheSBpcyBib3VuZCB0byBCeXRlQnVmZmVyVHlwZSBzbyBpdCB3cml0ZXMgRGF0YVR5cGUuYnl0ZWJ1ZmZlcgorICAgICAgICAgICAgIyByYXRoZXIgdGhhbiBEYXRhVHlwZS5ieXRlY29kZSBhbmQgdGhlIHNlcnZlciBnZXRzIGNvbmZ1c2VkLiBzcGVjaWFsIGNhc2luZyB0aGlzIGZvciBub3cgdW50aWwKKyAgICAgICAgICAgICMgaXQgY2FuIGJlIHJlZmFjdG9yZWQKKyAgICAgICAgICAgIGlmIGsgPT0gImdyZW1saW4iIG9yIGsgPT0gInNpZGVFZmZlY3QiOgorICAgICAgICAgICAgICAgIGJhLmV4dGVuZCh2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9ncmFwaGJpbmFyeV93cml0ZXIudG9EaWN0KHYsIGJhKQorCisgICAgICAgIHJldHVybiBieXRlcyhiYSkKKworICAgIGRlZiBkZXNlcmlhbGl6ZV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBiID0gaW8uQnl0ZXNJTyhtZXNzYWdlKQorCisgICAgICAgIGIucmVhZCgxKSAgIyB2ZXJzaW9uCisKKyAgICAgICAgcmVxdWVzdF9pZCA9IHN0cihzZWxmLl9ncmFwaGJpbmFyeV9yZWFkZXIudG9PYmplY3QoYiwgZ3JhcGhiaW5hcnlWMS5EYXRhVHlwZS51dWlkKSkKKyAgICAgICAgc3RhdHVzX2NvZGUgPSBzZWxmLmludDMyX3VucGFjayhiLnJlYWQoNCkpWzBdCisgICAgICAgIHN0YXR1c19tc2cgPSBzZWxmLl9ncmFwaGJpbmFyeV9yZWFkZXIudG9PYmplY3QoYiwgZ3JhcGhiaW5hcnlWMS5EYXRhVHlwZS5zdHJpbmcpCisgICAgICAgIHN0YXR1c19hdHRycyA9IHNlbGYuX2dyYXBoYmluYXJ5X3JlYWRlci50b09iamVjdChiLCBncmFwaGJpbmFyeVYxLkRhdGFUeXBlLm1hcCwgbnVsbGFibGU9RmFsc2UpCisgICAgICAgIG1ldGFfYXR0cnMgPSBzZWxmLl9ncmFwaGJpbmFyeV9yZWFkZXIudG9PYmplY3QoYiwgZ3JhcGhiaW5hcnlWMS5EYXRhVHlwZS5tYXAsIG51bGxhYmxlPUZhbHNlKQorICAgICAgICByZXN1bHQgPSBzZWxmLl9ncmFwaGJpbmFyeV9yZWFkZXIudG9PYmplY3QoYikKKworICAgICAgICBiLmNsb3NlKCkKKworICAgICAgICBtc2cgPSB7J3JlcXVlc3RJZCc6IHJlcXVlc3RfaWQsCisgICAgICAgICAgICAgICAnc3RhdHVzJzogeydjb2RlJzogc3RhdHVzX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogc3RhdHVzX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMnOiBzdGF0dXNfYXR0cnN9LAorICAgICAgICAgICAgICAgJ3Jlc3VsdCc6IHsnbWV0YSc6IG1ldGFfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhJzogcmVzdWx0fX0KKworICAgICAgICByZXR1cm4gbXNnCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy9ncmFwaF90cmF2ZXJzYWwucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy9ncmFwaF90cmF2ZXJzYWwucHkKaW5kZXggY2FjMTA3ZC4uZDQ3MzAxYiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvZ3JhcGhfdHJhdmVyc2FsLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL2dyYXBoX3RyYXZlcnNhbC5weQpAQCAtNzEsNiArNzEsMTEgQEAKICAgICAgICAgc291cmNlLmJ5dGVjb2RlLmFkZF9zb3VyY2UoIndpdGhTdHJhdGVnaWVzIiwgKmFyZ3MpCiAgICAgICAgIHJldHVybiBzb3VyY2UKIAorICAgIGRlZiB3aXRoXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X2dyYXBoX3RyYXZlcnNhbF9zb3VyY2UoKQorICAgICAgICBzb3VyY2UuYnl0ZWNvZGUuYWRkX3NvdXJjZSgid2l0aCIsICphcmdzKQorICAgICAgICByZXR1cm4gc291cmNlCisKICAgICBkZWYgd2l0aG91dFN0cmF0ZWdpZXMoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLmdldF9ncmFwaF90cmF2ZXJzYWxfc291cmNlKCkKICAgICAgICAgc291cmNlLmJ5dGVjb2RlLmFkZF9zb3VyY2UoIndpdGhvdXRTdHJhdGVnaWVzIiwgKmFyZ3MpCkBAIC0xMTEsNiArMTE2LDExIEBACiAgICAgICAgIHRyYXZlcnNhbC5ieXRlY29kZS5hZGRfc3RlcCgiaW5qZWN0IiwgKmFyZ3MpCiAgICAgICAgIHJldHVybiB0cmF2ZXJzYWwKIAorICAgIGRlZiBpbyhzZWxmLCAqYXJncyk6CisgICAgICAgIHRyYXZlcnNhbCA9IHNlbGYuZ2V0X2dyYXBoX3RyYXZlcnNhbCgpCisgICAgICAgIHRyYXZlcnNhbC5ieXRlY29kZS5hZGRfc3RlcCgiaW8iLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbAorCiAKIGNsYXNzIEdyYXBoVHJhdmVyc2FsKFRyYXZlcnNhbCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyYXBoLCB0cmF2ZXJzYWxfc3RyYXRlZ2llcywgYnl0ZWNvZGUpOgpAQCAtMTk5LDYgKzIwOSwxMCBAQAogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJjb2luIiwgKmFyZ3MpCiAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICBkZWYgY29ubmVjdGVkQ29tcG9uZW50KHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiY29ubmVjdGVkQ29tcG9uZW50IiwgKmFyZ3MpCisgICAgICAgIHJldHVybiBzZWxmCisKICAgICBkZWYgY29uc3RhbnQoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJjb25zdGFudCIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgpAQCAtMjE5LDYgKzIzMywxMCBAQAogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJkcm9wIiwgKmFyZ3MpCiAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICBkZWYgZWxlbWVudE1hcChzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoImVsZW1lbnRNYXAiLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgIGRlZiBlbWl0KHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiZW1pdCIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgpAQCAtMjkxLDYgKzMwOSwxMCBAQAogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJpbiIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgogCisgICAgZGVmIGluZGV4KHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiaW5kZXgiLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgIGRlZiBpbmplY3Qoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJpbmplY3QiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKQEAgLTQxOSw2ICs0NDEsMTAgQEAKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgicmFuZ2UiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKIAorICAgIGRlZiByZWFkKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgicmVhZCIsICphcmdzKQorICAgICAgICByZXR1cm4gc2VsZgorCiAgICAgZGVmIHJlcGVhdChzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoInJlcGVhdCIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgpAQCAtNDM1LDYgKzQ2MSwxMCBAQAogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJzZWxlY3QiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKIAorICAgIGRlZiBzaG9ydGVzdFBhdGgoc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJzaG9ydGVzdFBhdGgiLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgIGRlZiBzaWRlRWZmZWN0KHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgic2lkZUVmZmVjdCIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgpAQCAtNTE1LDYgKzU0NSwxNCBAQAogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJ3aGVyZSIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgogCisgICAgZGVmIHdpdGhfKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgid2l0aCIsICphcmdzKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIHdyaXRlKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgid3JpdGUiLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgICMgRGVwcmVjYXRlZCAtIHByZWZlciB0aGUgdW5kZXJzY29yZSBzdWZmaXhlZCB2ZXJzaW9ucyBlLmcgZmlsdGVyXygpCiAKICAgICBkZWYgZmlsdGVyKHNlbGYsICphcmdzKToKQEAgLTYzNCw2ICs2NzIsMTAgQEAKICAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkuZHJvcCgqYXJncykKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBlbGVtZW50TWFwKGNscywgKmFyZ3MpOgorICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5lbGVtZW50TWFwKCphcmdzKQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGVtaXQoY2xzLCAqYXJncyk6CiAgICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLmVtaXQoKmFyZ3MpCiAKQEAgLTcwMiw2ICs3NDQsMTAgQEAKICAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkuaW5fKCphcmdzKQogCiAgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGluZGV4KGNscywgKmFyZ3MpOgorICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5pbmRleCgqYXJncykKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBpbmplY3QoY2xzLCAqYXJncyk6CiAgICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLmluamVjdCgqYXJncykKIApAQCAtMTAxMiw2ICsxMDU4LDEwIEBACiAgICAgcmV0dXJuIF9fLmRyb3AoKmFyZ3MpCiAKIAorZGVmIGVsZW1lbnRNYXAoKmFyZ3MpOgorICAgIHJldHVybiBfXy5lbGVtZW50TWFwKCphcmdzKQorCisKIGRlZiBlbWl0KCphcmdzKToKICAgICByZXR1cm4gX18uZW1pdCgqYXJncykKIApAQCAtMTA4MCw2ICsxMTMwLDEwIEBACiAgICAgcmV0dXJuIF9fLmluXygqYXJncykKIAogCitkZWYgaW5kZXgoKmFyZ3MpOgorICAgIHJldHVybiBfXy5pbmRleCgqYXJncykKKworCiBkZWYgaW5qZWN0KCphcmdzKToKICAgICByZXR1cm4gX18uaW5qZWN0KCphcmdzKQogCkBAIC0xMzUwLDYgKzE0MDQsOCBAQAogCiBzdGF0aWNzLmFkZF9zdGF0aWMoJ2Ryb3AnLCBkcm9wKQogCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2VsZW1lbnRNYXAnLCBlbGVtZW50TWFwKQorCiBzdGF0aWNzLmFkZF9zdGF0aWMoJ2VtaXQnLCBlbWl0KQogCiBzdGF0aWNzLmFkZF9zdGF0aWMoJ2ZpbHRlcl8nLCBmaWx0ZXJfKQpAQCAtMTM4NCw2ICsxNDQwLDggQEAKIAogc3RhdGljcy5hZGRfc3RhdGljKCdpbl8nLCBpbl8pCiAKK3N0YXRpY3MuYWRkX3N0YXRpYygnaW5kZXgnLCBpbmRleCkKKwogc3RhdGljcy5hZGRfc3RhdGljKCdpbmplY3QnLCBpbmplY3QpCiAKIHN0YXRpY3MuYWRkX3N0YXRpYygnaXNfJywgaXNfKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3Mvc3RyYXRlZ2llcy5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL3N0cmF0ZWdpZXMucHkKaW5kZXggOWMyYTZkZi4uODk4OGI3OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3Mvc3RyYXRlZ2llcy5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy9zdHJhdGVnaWVzLnB5CkBAIC0yOCwyNiArMjgsMzEgQEAKIAogY2xhc3MgQ29ubmVjdGl2ZVN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5Db25uZWN0aXZlU3RyYXRlZ3kiKQogCiAKIGNsYXNzIEVsZW1lbnRJZFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FbGVtZW50SWRTdHJhdGVneSIpCiAKIAogIyBFdmVudFN0cmF0ZWd5IGRvZXNuJ3QgbWFrZSBzZW5zZSBvdXRzaWRlIEpWTSB0cmF2ZXJzYWwgbWFjaGluZQogCiBjbGFzcyBIYWx0ZWRUcmF2ZXJzZXJTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbHRlZF90cmF2ZXJzZXJfZmFjdG9yeT1Ob25lKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkhhbHRlZFRyYXZlcnNlclN0cmF0ZWd5IikKICAgICAgICAgaWYgaGFsdGVkX3RyYXZlcnNlcl9mYWN0b3J5IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJoYWx0ZWRUcmF2ZXJzZXJGYWN0b3J5Il0gPSBoYWx0ZWRfdHJhdmVyc2VyX2ZhY3RvcnkKIAogCitjbGFzcyBPcHRpb25zU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zPU5vbmUpOgorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBjb25maWd1cmF0aW9uPW9wdGlvbnMsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5PcHRpb25zU3RyYXRlZ3kiKQorCisKIGNsYXNzIFBhcnRpdGlvblN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydGl0aW9uX2tleT1Ob25lLCB3cml0ZV9wYXJ0aXRpb249Tm9uZSwgcmVhZF9wYXJ0aXRpb25zPU5vbmUsIGluY2x1ZGVfbWV0YV9wcm9wZXJ0aWVzPU5vbmUpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUGFydGl0aW9uU3RyYXRlZ3kiKQogICAgICAgICBpZiBwYXJ0aXRpb25fa2V5IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJwYXJ0aXRpb25LZXkiXSA9IHBhcnRpdGlvbl9rZXkKICAgICAgICAgaWYgd3JpdGVfcGFydGl0aW9uIGlzIG5vdCBOb25lOgpAQCAtNTksOCArNjQsOSBAQAogCiAKIGNsYXNzIFN1YmdyYXBoU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcnRpY2VzPU5vbmUsIGVkZ2VzPU5vbmUsIHZlcnRleF9wcm9wZXJ0aWVzPU5vbmUpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneSIpCiAgICAgICAgIGlmIHZlcnRpY2VzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJ2ZXJ0aWNlcyJdID0gdmVydGljZXMKICAgICAgICAgaWYgZWRnZXMgaXMgbm90IE5vbmU6CkBAIC03Miw3ICs3OCw3IEBACiBjbGFzcyBWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncmFwaF9jb21wdXRlcj1Ob25lLCB3b3JrZXJzPU5vbmUsIHBlcnNpc3Q9Tm9uZSwgcmVzdWx0PU5vbmUsIHZlcnRpY2VzPU5vbmUsIGVkZ2VzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Tm9uZSk6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kiKQogICAgICAgICBpZiBncmFwaF9jb21wdXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsiZ3JhcGhDb21wdXRlciJdID0gZ3JhcGhfY29tcHV0ZXIKICAgICAgICAgaWYgd29ya2VycyBpcyBub3QgTm9uZToKQEAgLTk1LDcgKzEwMSw3IEBACiAKIGNsYXNzIE1hdGNoQWxnb3JpdGhtU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXRjaF9hbGdvcml0aG09Tm9uZSk6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZmluYWxpemF0aW9uLk1hdGNoQWxnb3JpdGhtU3RyYXRlZ3kiKQogICAgICAgICBpZiBtYXRjaF9hbGdvcml0aG0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25bIm1hdGNoQWxnb3JpdGhtIl0gPSBtYXRjaF9hbGdvcml0aG0KIApAQCAtMTA2LDcyICsxMTIsNzMgQEAKIAogY2xhc3MgQWRqYWNlbnRUb0luY2lkZW50U3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uQWRqYWNlbnRUb0luY2lkZW50U3RyYXRlZ3kiKQogCiAKIGNsYXNzIEZpbHRlclJhbmtpbmdTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5GaWx0ZXJSYW5raW5nU3RyYXRlZ3kiKQogCiAKIGNsYXNzIElkZW50aXR5UmVtb3ZhbFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLklkZW50aXR5UmVtb3ZhbFN0cmF0ZWd5IikKIAogCiBjbGFzcyBJbmNpZGVudFRvQWRqYWNlbnRTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5JbmNpZGVudFRvQWRqYWNlbnRTdHJhdGVneSIpCiAKIAogY2xhc3MgSW5saW5lRmlsdGVyU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uSW5saW5lRmlsdGVyU3RyYXRlZ3kiKQogCiAKIGNsYXNzIExhenlCYXJyaWVyU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uTGF6eUJhcnJpZXJTdHJhdGVneSIpCiAKIAogY2xhc3MgTWF0Y2hQcmVkaWNhdGVTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5NYXRjaFByZWRpY2F0ZVN0cmF0ZWd5IikKIAogCiBjbGFzcyBPcmRlckxpbWl0U3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uT3JkZXJMaW1pdFN0cmF0ZWd5IikKIAogCiBjbGFzcyBQYXRoUHJvY2Vzc29yU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uUGF0aFByb2Nlc3NvclN0cmF0ZWd5IikKIAogCiBjbGFzcyBQYXRoUmV0cmFjdGlvblN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLlBhdGhSZXRyYWN0aW9uU3RyYXRlZ3kiKQogCiAKIGNsYXNzIENvdW50U3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uQ291bnRTdHJhdGVneSIpCiAKIAogY2xhc3MgUmVwZWF0VW5yb2xsU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uUmVwZWF0VW5yb2xsU3RyYXRlZ3kiKQogCiAKIGNsYXNzIEdyYXBoRmlsdGVyU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uR3JhcGhGaWx0ZXJTdHJhdGVneSIpCisKIAogCiBjbGFzcyBFYXJseUxpbWl0U3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uRWFybHlMaW1pdFN0cmF0ZWd5IikKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFZFUklGSUNBVElPTiBTVFJBVEVHSUVTICMKQEAgLTE4MCwyNCArMTg3LDI0IEBACiAKIGNsYXNzIExhbWJkYVJlc3RyaWN0aW9uU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uTGFtYmRhUmVzdHJpY3Rpb25TdHJhdGVneSIpCiAKIAogY2xhc3MgUmVhZE9ubHlTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5SZWFkT25seVN0cmF0ZWd5IikKIAogCiBjbGFzcyBFZGdlTGFiZWxWZXJpZmljYXRpb25TdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ193YXJuaW5nPUZhbHNlLCB0aHJvd19leGNlcHRpb249RmFsc2UpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5FZGdlTGFiZWxWZXJpZmljYXRpb25TdHJhdGVneSIpCiAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsibG9nV2FybmluZyJdID0gbG9nX3dhcm5pbmcKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJ0aHJvd0V4Y2VwdGlvbiJdID0gdGhyb3dfZXhjZXB0aW9uCiAKIAogY2xhc3MgUmVzZXJ2ZWRLZXlzVmVyaWZpY2F0aW9uU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dfd2FybmluZz1GYWxzZSwgdGhyb3dfZXhjZXB0aW9uPUZhbHNlLCBrZXlzPVsiaWQiLCAibGFiZWwiXSk6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kudmVyaWZpY2F0aW9uLlJlc2VydmVkS2V5c1ZlcmlmaWNhdGlvblN0cmF0ZWd5IikKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJsb2dXYXJuaW5nIl0gPSBsb2dfd2FybmluZwogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25bInRocm93RXhjZXB0aW9uIl0gPSB0aHJvd19leGNlcHRpb24KICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJrZXlzIl0gPSBrZXlzCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy90cmF2ZXJzYWwucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy90cmF2ZXJzYWwucHkKaW5kZXggYjk0MjQwOS4uZmYwZDEyMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvdHJhdmVyc2FsLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL3RyYXZlcnNhbC5weQpAQCAtMzM1LDMxICszMzUsMTg1IEBACiAgICAgcmV0dXJuIFAud2l0aG91dCgqYXJncykKIAogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ2JldHdlZW4nLGJldHdlZW4pCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2JldHdlZW4nLCBiZXR3ZWVuKQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ2VxJyxlcSkKK3N0YXRpY3MuYWRkX3N0YXRpYygnZXEnLCBlcSkKIAotc3RhdGljcy5hZGRfc3RhdGljKCdndCcsZ3QpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2d0JywgZ3QpCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnZ3RlJyxndGUpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2d0ZScsIGd0ZSkKIAotc3RhdGljcy5hZGRfc3RhdGljKCdpbnNpZGUnLGluc2lkZSkKK3N0YXRpY3MuYWRkX3N0YXRpYygnaW5zaWRlJywgaW5zaWRlKQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ2x0JyxsdCkKK3N0YXRpY3MuYWRkX3N0YXRpYygnbHQnLCBsdCkKIAotc3RhdGljcy5hZGRfc3RhdGljKCdsdGUnLGx0ZSkKK3N0YXRpY3MuYWRkX3N0YXRpYygnbHRlJywgbHRlKQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ25lcScsbmVxKQorc3RhdGljcy5hZGRfc3RhdGljKCduZXEnLCBuZXEpCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnbm90Xycsbm90XykKK3N0YXRpY3MuYWRkX3N0YXRpYygnbm90XycsIG5vdF8pCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnb3V0c2lkZScsb3V0c2lkZSkKK3N0YXRpY3MuYWRkX3N0YXRpYygnb3V0c2lkZScsIG91dHNpZGUpCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygndGVzdCcsdGVzdCkKK3N0YXRpY3MuYWRkX3N0YXRpYygndGVzdCcsIHRlc3QpCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnd2l0aGluJyx3aXRoaW4pCitzdGF0aWNzLmFkZF9zdGF0aWMoJ3dpdGhpbicsIHdpdGhpbikKIAotc3RhdGljcy5hZGRfc3RhdGljKCd3aXRob3V0Jyx3aXRob3V0KQorc3RhdGljcy5hZGRfc3RhdGljKCd3aXRob3V0Jywgd2l0aG91dCkKKworCitjbGFzcyBUZXh0UChQKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3BlcmF0b3IsIHZhbHVlLCBvdGhlcj1Ob25lKToKKyAgICAgICAgUC5fX2luaXRfXyhzZWxmLCBvcGVyYXRvciwgdmFsdWUsIG90aGVyKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjb250YWluaW5nKCphcmdzKToKKyAgICAgICAgcmV0dXJuIFRleHRQKCJjb250YWluaW5nIiwgKmFyZ3MpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGVuZGluZ1dpdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gVGV4dFAoImVuZGluZ1dpdGgiLCAqYXJncykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbm90Q29udGFpbmluZygqYXJncyk6CisgICAgICAgIHJldHVybiBUZXh0UCgibm90Q29udGFpbmluZyIsICphcmdzKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBub3RFbmRpbmdXaXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIFRleHRQKCJub3RFbmRpbmdXaXRoIiwgKmFyZ3MpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG5vdFN0YXJ0aW5nV2l0aCgqYXJncyk6CisgICAgICAgIHJldHVybiBUZXh0UCgibm90U3RhcnRpbmdXaXRoIiwgKmFyZ3MpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHN0YXJ0aW5nV2l0aCgqYXJncyk6CisgICAgICAgIHJldHVybiBUZXh0UCgic3RhcnRpbmdXaXRoIiwgKmFyZ3MpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKSBhbmQgc2VsZi5vcGVyYXRvciA9PSBvdGhlci5vcGVyYXRvciBhbmQgc2VsZi52YWx1ZSA9PSBvdGhlci52YWx1ZSBhbmQgc2VsZi5vdGhlciA9PSBvdGhlci5vdGhlcgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vcGVyYXRvciArICIoIiArIHN0cihzZWxmLnZhbHVlKSArICIpIiBpZiBzZWxmLm90aGVyIGlzIE5vbmUgZWxzZSBzZWxmLm9wZXJhdG9yICsgIigiICsgc3RyKHNlbGYudmFsdWUpICsgIiwiICsgc3RyKHNlbGYub3RoZXIpICsgIikiCisKKworZGVmIGNvbnRhaW5pbmcoKmFyZ3MpOgorICAgIHJldHVybiBUZXh0UC5jb250YWluaW5nKCphcmdzKQorCisKK2RlZiBlbmRpbmdXaXRoKCphcmdzKToKKyAgICByZXR1cm4gVGV4dFAuZW5kaW5nV2l0aCgqYXJncykKKworCitkZWYgbm90Q29udGFpbmluZygqYXJncyk6CisgICAgcmV0dXJuIFRleHRQLm5vdENvbnRhaW5pbmcoKmFyZ3MpCisKKworZGVmIG5vdEVuZGluZ1dpdGgoKmFyZ3MpOgorICAgIHJldHVybiBUZXh0UC5ub3RFbmRpbmdXaXRoKCphcmdzKQorCisKK2RlZiBub3RTdGFydGluZ1dpdGgoKmFyZ3MpOgorICAgIHJldHVybiBUZXh0UC5ub3RTdGFydGluZ1dpdGgoKmFyZ3MpCisKKworZGVmIHN0YXJ0aW5nV2l0aCgqYXJncyk6CisgICAgcmV0dXJuIFRleHRQLnN0YXJ0aW5nV2l0aCgqYXJncykKKworCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2NvbnRhaW5pbmcnLCBjb250YWluaW5nKQorCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2VuZGluZ1dpdGgnLCBlbmRpbmdXaXRoKQorCitzdGF0aWNzLmFkZF9zdGF0aWMoJ25vdENvbnRhaW5pbmcnLCBub3RDb250YWluaW5nKQorCitzdGF0aWNzLmFkZF9zdGF0aWMoJ25vdEVuZGluZ1dpdGgnLCBub3RFbmRpbmdXaXRoKQorCitzdGF0aWNzLmFkZF9zdGF0aWMoJ25vdFN0YXJ0aW5nV2l0aCcsIG5vdFN0YXJ0aW5nV2l0aCkKKworc3RhdGljcy5hZGRfc3RhdGljKCdzdGFydGluZ1dpdGgnLCBzdGFydGluZ1dpdGgpCisKKworCisKKycnJworSU8KKycnJworCisKK2NsYXNzIElPKG9iamVjdCk6CisKKyAgICBncmFwaG1sID0gImdyYXBobWwiCisKKyAgICBncmFwaHNvbiA9ICJncmFwaHNvbiIKKworICAgIGdyeW8gPSAiZ3J5byIKKworICAgIHJlYWRlciA9ICJ+dGlua2VycG9wLmlvLnJlYWRlciIKKworICAgIHJlZ2lzdHJ5ID0gIn50aW5rZXJwb3AuaW8ucmVnaXN0cnkiCisKKyAgICB3cml0ZXIgPSAifnRpbmtlcnBvcC5pby53cml0ZXIiCisKKworJycnCitDb25uZWN0ZWRDb21wb25lbnQKKycnJworCisKK2NsYXNzIENvbm5lY3RlZENvbXBvbmVudChvYmplY3QpOgorCisgICAgY29tcG9uZW50ID0gImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5jb21wb25lbnQiCisKKyAgICBlZGdlcyA9ICJ+dGlua2VycG9wLmNvbm5lY3RlZENvbXBvbmVudC5lZGdlcyIKKworICAgIHByb3BlcnR5TmFtZSA9ICJ+dGlua2VycG9wLmNvbm5lY3RlZENvbXBvbmVudC5wcm9wZXJ0eU5hbWUiCisKKworJycnCitTaG9ydGVzdFBhdGgKKycnJworCisKK2NsYXNzIFNob3J0ZXN0UGF0aChvYmplY3QpOgorCisgICAgZGlzdGFuY2UgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZGlzdGFuY2UiCisKKyAgICBlZGdlcyA9ICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5lZGdlcyIKKworICAgIGluY2x1ZGVFZGdlcyA9ICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5pbmNsdWRlRWRnZXMiCisKKyAgICBtYXhEaXN0YW5jZSA9ICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5tYXhEaXN0YW5jZSIKKworICAgIHRhcmdldCA9ICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC50YXJnZXQiCisKKworJycnCitQYWdlUmFuaworJycnCisKKworY2xhc3MgUGFnZVJhbmsob2JqZWN0KToKKworICAgIGVkZ2VzID0gIn50aW5rZXJwb3AucGFnZVJhbmsuZWRnZXMiCisKKyAgICBwcm9wZXJ0eU5hbWUgPSAifnRpbmtlcnBvcC5wYWdlUmFuay5wcm9wZXJ0eU5hbWUiCisKKyAgICB0aW1lcyA9ICJ+dGlua2VycG9wLnBhZ2VSYW5rLnRpbWVzIgorCisKKycnJworUGVlclByZXNzdXJlCisnJycKKworCitjbGFzcyBQZWVyUHJlc3N1cmUob2JqZWN0KToKKworICAgIGVkZ2VzID0gIn50aW5rZXJwb3AucGVlclByZXNzdXJlLmVkZ2VzIgorCisgICAgcHJvcGVydHlOYW1lID0gIn50aW5rZXJwb3AucGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSIKKworICAgIHRpbWVzID0gIn50aW5rZXJwb3AucGVlclByZXNzdXJlLnRpbWVzIgogCiAKICcnJwpAQCAtNDI3LDcgKzU4MSw4IEBACiAKIAogY2xhc3MgVHJhdmVyc2FsU3RyYXRlZ3kob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyYXRlZ3lfbmFtZT1Ob25lLCBjb25maWd1cmF0aW9uPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJhdGVneV9uYW1lPU5vbmUsIGNvbmZpZ3VyYXRpb249Tm9uZSwgZnFjbj1Ob25lKToKKyAgICAgICAgc2VsZi5mcWNuID0gZnFjbgogICAgICAgICBzZWxmLnN0cmF0ZWd5X25hbWUgPSB0eXBlKHNlbGYpLl9fbmFtZV9fIGlmIHN0cmF0ZWd5X25hbWUgaXMgTm9uZSBlbHNlIHN0cmF0ZWd5X25hbWUKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0ge30gaWYgY29uZmlndXJhdGlvbiBpcyBOb25lIGVsc2UgY29uZmlndXJhdGlvbgogCkBAIC01MTIsOSArNjY3LDkgQEAKICAgICAgICAgICAgIGZvciBpdGVtIGluIGFyZzoKICAgICAgICAgICAgICAgICBuZXdTZXQuYWRkKHNlbGYuX19jb252ZXJ0QXJndW1lbnQoaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4gbmV3U2V0Ci0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShhcmcsIHR1cGxlKSBhbmQgMiA9PSBsZW4oYXJnKSBhbmQgaXNpbnN0YW5jZShhcmdbMF0sIHN0cik6Ci0gICAgICAgICAgICBzZWxmLmJpbmRpbmdzW2FyZ1swXV0gPSBhcmdbMV0KLSAgICAgICAgICAgIHJldHVybiBCaW5kaW5nKGFyZ1swXSxzZWxmLl9fY29udmVydEFyZ3VtZW50KGFyZ1sxXSkpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhcmcsIEJpbmRpbmcpOgorICAgICAgICAgICAgc2VsZi5iaW5kaW5nc1thcmcua2V5XSA9IGFyZy52YWx1ZQorICAgICAgICAgICAgcmV0dXJuIEJpbmRpbmcoYXJnLmtleSwgc2VsZi5fX2NvbnZlcnRBcmd1bWVudChhcmcudmFsdWUpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIGFyZwogCkBAIC01MjksMTQgKzY4NCwxNiBAQAogCiAKIGNsYXNzIEJpbmRpbmdzKG9iamVjdCk6Ci0gICAgZGVmIG9mKHNlbGYsa2V5LHZhbHVlKToKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgb2Yoa2V5LCB2YWx1ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiS2V5IG11c3QgYmUgc3RyIikKLSAgICAgICAgcmV0dXJuIChrZXksIHZhbHVlKQorICAgICAgICByZXR1cm4gQmluZGluZyhrZXksIHZhbHVlKQogCiAKIGNsYXNzIEJpbmRpbmcob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZixrZXksdmFsdWUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgc2VsZi5rZXkgPSBrZXkKICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCiAKQEAgLTU0OCwzICs3MDUsMzIgQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJiaW5kaW5nWyIgKyBzZWxmLmtleSArICI9IiArIHN0cihzZWxmLnZhbHVlKSArICJdIgorCisKKycnJworV0lUSCBPUFRJT05TCisnJycKKworCitjbGFzcyBXaXRoT3B0aW9ucyhvYmplY3QpOgorCisgICAgdG9rZW5zID0gIn50aW5rZXJwb3AudmFsdWVNYXAudG9rZW5zIgorCisgICAgbm9uZSA9IDAKKworICAgIGlkcyA9IDEKKworICAgIGxhYmVscyA9IDIKKworICAgIGtleXMgPSA0CisKKyAgICB2YWx1ZXMgPSA4CisKKyAgICBhbGwgPSAxNQorCisgICAgaW5kZXhlciA9ICJ+dGlua2VycG9wLmluZGV4LmluZGV4ZXIiCisKKyAgICBsaXN0ID0gMAorCisgICAgbWFwID0gMQorCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RhdGljcy5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdGF0aWNzLnB5CmluZGV4IDczZjdlOTQuLjIyMWUxNjYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdGF0aWNzLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdGF0aWNzLnB5CkBAIC00MywxOSArNDMsMjAgQEAKICAgICBmcm9tIHR5cGVzIGltcG9ydCBUeXBlVHlwZQogICAgIGZyb20gdHlwZXMgaW1wb3J0IExpc3RUeXBlCiAgICAgZnJvbSB0eXBlcyBpbXBvcnQgRGljdFR5cGUKKyAgICBmcm9tIHR5cGVzIGltcG9ydCBUeXBlVHlwZQogCiAKIGNsYXNzIHRpbWVzdGFtcChmbG9hdCk6CiAgICAgIiIiCiAgICAgSW4gUHl0aG9uIGEgdGltZXN0YW1wIGlzIHNpbXBseSBhIGZsb2F0LiBUaGlzIGR1bW15IGNsYXNzIChzaW1pbGFyIHRvIGxvbmcpLCBhbGxvd3MgdXNlcnMgdG8gd3JhcCBhIGZsb2F0Ci0gICAgaW4gYSBHTFYgc2NyaXB0IHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUgaXMgc2VyaWFsaXplZCBhcyBhIEdyYXBoU09OIHRpbWVzdGFtcC4KKyAgICBpbiBhIEdMViBzY3JpcHQgdG8gbWFrZSBzdXJlIHRoZSB2YWx1ZSBpcyBzZXJpYWxpemVkIGFzIGEgR3JlbWxpbiB0aW1lc3RhbXAuCiAgICAgIiIiCiAgICAgcGFzcwogCiAKIGNsYXNzIFNpbmdsZUJ5dGUoaW50KToKICAgICAiIiIKLSAgICBQcm92aWRlcyBhIHdheSB0byBwYXNzIGEgc2luZ2xlIGJ5dGUgdmlhIEdyYXBoU09OLgorICAgIFByb3ZpZGVzIGEgd2F5IHRvIHBhc3MgYSBzaW5nbGUgYnl0ZSB2aWEgR3JlbWxpbi4KICAgICAiIiIKICAgICBkZWYgX19uZXdfXyhjbHMsIGIpOgogICAgICAgICBpZiAtMTI4IDw9IGIgPCAxMjg6CkBAIC02Niw3ICs2Nyw3IEBACiAKIGNsYXNzIFNpbmdsZUNoYXIoc3RyKToKICAgICAiIiIKLSAgICBQcm92aWRlcyBhIHdheSB0byBwYXNzIGEgc2luZ2xlIGNoYXJhY3RlciB2aWEgR3JhcGhTT04uCisgICAgUHJvdmlkZXMgYSB3YXkgdG8gcGFzcyBhIHNpbmdsZSBjaGFyYWN0ZXIgdmlhIEdyZW1saW4uCiAgICAgIiIiCiAgICAgZGVmIF9fbmV3X18oY2xzLCBjKToKICAgICAgICAgaWYgbGVuKGIpID09IDE6CkBAIC03NSw2ICs3NiwxNCBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3RyaW5nIG11c3QgY29udGFpbiBhIHNpbmdsZSBjaGFyYWN0ZXIiKQogCiAKK2NsYXNzIEdyZW1saW5UeXBlKG9iamVjdCk6CisgICAgIiIiCisgICAgUHJvdmlkZXMgYSB3YXkgdG8gcmVwcmVzZW50IGEgIkphdmEgY2xhc3MiIGZvciBHcmVtbGluLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncmVtbGluX3R5cGUpOgorICAgICAgICBzZWxmLmdyZW1saW5fdHlwZSA9IGdyZW1saW5fdHlwZQorICAgICAgICAKKwogc3RhdGljTWV0aG9kcyA9IHt9CiBzdGF0aWNFbnVtcyA9IHt9CiBkZWZhdWx0X2xhbWJkYV9sYW5ndWFnZSA9ICJncmVtbGluLXB5dGhvbiIKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdHJ1Y3R1cmUvZ3JhcGgucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2dyYXBoLnB5CmluZGV4IGI0NTBlYzEuLjc1MWYwYmIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdHJ1Y3R1cmUvZ3JhcGgucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9ncmFwaC5weQpAQCAtMzksNyArMzksNyBAQAogICAgICAgICByZXR1cm4gdHJhdmVyc2FsX3NvdXJjZV9jbGFzcyhzZWxmLCBUcmF2ZXJzYWxTdHJhdGVnaWVzLmdsb2JhbF9jYWNoZVtzZWxmLl9fY2xhc3NfX10pCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiZ3JhcGhbZW1wdHldIgorICAgICAgICByZXR1cm4gImdyYXBoW10iCiAKIAogY2xhc3MgRWxlbWVudChvYmplY3QpOgpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgIHNlbGYub2JqZWN0cyA9IG9iamVjdHMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmLm9iamVjdHMpCisgICAgICAgIHJldHVybiAicGF0aFsiICsgIiwgIi5qb2luKG1hcChzdHIsIHNlbGYub2JqZWN0cykpICsgIl0iCiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKSBhbmQgc2VsZi5vYmplY3RzID09IG90aGVyLm9iamVjdHMgYW5kIHNlbGYubGFiZWxzID09IG90aGVyLmxhYmVscwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeVYxLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeVYxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNmVlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5VjEucHkKQEAgLTAsMCArMSwxMDgzIEBACisiIiIKK0xpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKK29yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KK3JlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKK3RvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKK3dpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKK3NvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKK0tJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwordW5kZXIgdGhlIExpY2Vuc2UuCisiIiIKKworaW1wb3J0IHNpeAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgY2FsZW5kYXIKK2ltcG9ydCB1dWlkCitpbXBvcnQgbWF0aAoraW1wb3J0IGlvCitpbXBvcnQgc3RydWN0Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAoraW1wb3J0IGxvZ2dpbmcKKworZnJvbSBzdHJ1Y3QgaW1wb3J0IHBhY2ssIHVucGFjaworZnJvbSBhZW51bSBpbXBvcnQgRW51bQorZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZWRlbHRhCitmcm9tIGdyZW1saW5fcHl0aG9uIGltcG9ydCBzdGF0aWNzCitmcm9tIGdyZW1saW5fcHl0aG9uLnN0YXRpY3MgaW1wb3J0IEZsb2F0VHlwZSwgRnVuY3Rpb25UeXBlLCBJbnRUeXBlLCBMb25nVHlwZSwgVHlwZVR5cGUsIERpY3RUeXBlLCBMaXN0VHlwZSwgU2V0VHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVCeXRlLCBCeXRlQnVmZmVyVHlwZSwgR3JlbWxpblR5cGUsIFNpbmdsZUNoYXIKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJhcnJpZXIsIEJpbmRpbmcsIEJ5dGVjb2RlLCBDYXJkaW5hbGl0eSwgQ29sdW1uLCBEaXJlY3Rpb24sIE9wZXJhdG9yLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlciwgUGljaywgUG9wLCBQLCBTY29wZSwgVGV4dFAsIFRyYXZlcnNhbCwgVHJhdmVyc2VyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneSwgVAorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgR3JhcGhUcmF2ZXJzYWwKK2Zyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmdyYXBoIGltcG9ydCBHcmFwaCwgRWRnZSwgUHJvcGVydHksIFZlcnRleCwgVmVydGV4UHJvcGVydHksIFBhdGgKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKyMgV2hlbiB3ZSBmYWxsIGJhY2sgdG8gYSBzdXBlcmNsYXNzJ3Mgc2VyaWFsaXplciwgd2UgaXRlcmF0ZSBvdmVyIHRoaXMgbWFwLgorIyBXZSB3YW50IHRoYXQgaXRlcmF0aW9uIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnQsIHNvIHdlIHVzZSBhbiBPcmRlcmVkRGljdCwKKyMgbm90IGEgZGljdC4KK19zZXJpYWxpemVycyA9IE9yZGVyZWREaWN0KCkKK19kZXNlcmlhbGl6ZXJzID0ge30KKworCitjbGFzcyBEYXRhVHlwZShFbnVtKToKKyAgICBudWxsID0gMHhmZQorICAgIGludCA9IDB4MDEKKyAgICBsb25nID0gMHgwMgorICAgIHN0cmluZyA9IDB4MDMKKyAgICBkYXRlID0gMHgwNAorICAgIHRpbWVzdGFtcCA9IDB4MDUKKyAgICBjbGF6eiA9IDB4MDYKKyAgICBkb3VibGUgPSAweDA3CisgICAgZmxvYXQgPSAweDA4CisgICAgbGlzdCA9IDB4MDkKKyAgICBtYXAgPSAweDBhCisgICAgc2V0ID0gMHgwYgorICAgIHV1aWQgPSAweDBjCisgICAgZWRnZSA9IDB4MGQKKyAgICBwYXRoID0gMHgwZQorICAgIHByb3BlcnR5ID0gMHgwZgorICAgIGdyYXBoID0gMHgxMCAgICAgICAgICAgICAgICAgICMgbm90IHN1cHBvcnRlZCAtIG5vIGdyYXBoIG9iamVjdCBpbiBweXRob24geWV0CisgICAgdmVydGV4ID0gMHgxMQorICAgIHZlcnRleHByb3BlcnR5ID0gMHgxMgorICAgIGJhcnJpZXIgPSAweDEzCisgICAgYmluZGluZyA9IDB4MTQKKyAgICBieXRlY29kZSA9IDB4MTUKKyAgICBjYXJkaW5hbGl0eSA9IDB4MTYKKyAgICBjb2x1bW4gPSAweDE3CisgICAgZGlyZWN0aW9uID0gMHgxOAorICAgIG9wZXJhdG9yID0gMHgxOQorICAgIG9yZGVyID0gMHgxYQorICAgIHBpY2sgPSAweDFiCisgICAgcG9wID0gMHgxYworICAgIGxhbWJkYV8gPSAweDFkCisgICAgcCA9IDB4MWUKKyAgICBzY29wZSA9IDB4MWYKKyAgICB0ID0gMHgyMAorICAgIHRyYXZlcnNlciA9IDB4MjEKKyAgICBiaWdkZWNpbWFsID0gMHgyMiAgICAgICAgICAgICAjIHRvZG8KKyAgICBiaWdpbnRlZ2VyID0gMHgyMyAgICAgICAgICAgICAjIHRvZG8KKyAgICBieXRlID0gMHgyNAorICAgIGJ5dGVidWZmZXIgPSAweDI1CisgICAgc2hvcnQgPSAweDI2ICAgICAgICAgICAgICAgICAgIyB0b2RvCisgICAgYm9vbGVhbiA9IDB4MjcKKyAgICB0ZXh0cCA9IDB4MjgKKyAgICB0cmF2ZXJzYWxzdHJhdGVneSA9IDB4MjkKKyAgICBidWxrc2V0ID0gMHgyYQorICAgIHRyZWUgPSAweDJiICAgICAgICAgICAgICAgICAgICMgbm90IHN1cHBvcnRlZCAtIG5vIHRyZWUgb2JqZWN0IGluIFB5dGhvbiB5ZXQKKyAgICBtZXRyaWNzID0gMHgyYworICAgIHRyYXZlcnNhbG1ldHJpY3MgPSAweDJkCisgICAgY2hhciA9IDB4ODAKKyAgICBkdXJhdGlvbiA9IDB4ODEKKyAgICBpbmV0YWRkcmVzcyA9IDB4ODIgICAgICAgICAgICAjIHRvZG8KKyAgICBpbnN0YW50ID0gMHg4MyAgICAgICAgICAgICAgICAjIHRvZG8KKyAgICBsb2NhbGRhdGUgPSAweDg0ICAgICAgICAgICAgICAjIHRvZG8KKyAgICBsb2NhbGRhdGV0aW1lID0gMHg4NSAgICAgICAgICAjIHRvZG8KKyAgICBsb2NhbHRpbWUgPSAweDg2ICAgICAgICAgICAgICAjIHRvZG8KKyAgICBtb250aGRheSA9IDB4ODcgICAgICAgICAgICAgICAjIHRvZG8KKyAgICBvZmZzZXRkYXRldGltZSA9IDB4ODggICAgICAgICAjIHRvZG8KKyAgICBvZmZzZXR0aW1lID0gMHg4OSAgICAgICAgICAgICAjIHRvZG8KKyAgICBwZXJpb2QgPSAweDhhICAgICAgICAgICAgICAgICAjIHRvZG8KKyAgICB5ZWFyID0gMHg4YiAgICAgICAgICAgICAgICAgICAjIHRvZG8KKyAgICB5ZWFybW9udGggPSAweDhjICAgICAgICAgICAgICAjIHRvZG8KKyAgICB6b25lZGF0ZXRpbWUgPSAweDhkICAgICAgICAgICAjIHRvZG8KKyAgICB6b25lb2Zmc2V0ID0gMHg4ZSAgICAgICAgICAgICAjIHRvZG8KKyAgICBjdXN0b20gPSAweDAwICAgICAgICAgICAgICAgICAjIHRvZG8KKworCitOVUxMX0JZVEVTID0gW0RhdGFUeXBlLm51bGwudmFsdWUsIDB4MDFdCisKKworZGVmIF9tYWtlX3BhY2tlcihmb3JtYXRfc3RyaW5nKToKKyAgICBwYWNrZXIgPSBzdHJ1Y3QuU3RydWN0KGZvcm1hdF9zdHJpbmcpCisgICAgcGFjayA9IHBhY2tlci5wYWNrCisgICAgdW5wYWNrID0gbGFtYmRhIHM6IHBhY2tlci51bnBhY2socylbMF0KKyAgICByZXR1cm4gcGFjaywgdW5wYWNrCisKKworaW50NjRfcGFjaywgaW50NjRfdW5wYWNrID0gX21ha2VfcGFja2VyKCc+cScpCitpbnQzMl9wYWNrLCBpbnQzMl91bnBhY2sgPSBfbWFrZV9wYWNrZXIoJz5pJykKK2ludDhfcGFjaywgaW50OF91bnBhY2sgPSBfbWFrZV9wYWNrZXIoJz5iJykKK3VpbnQ2NF9wYWNrLCB1aW50NjRfdW5wYWNrID0gX21ha2VfcGFja2VyKCc+UScpCit1aW50OF9wYWNrLCB1aW50OF91bnBhY2sgPSBfbWFrZV9wYWNrZXIoJz5CJykKK2Zsb2F0X3BhY2ssIGZsb2F0X3VucGFjayA9IF9tYWtlX3BhY2tlcignPmYnKQorZG91YmxlX3BhY2ssIGRvdWJsZV91bnBhY2sgPSBfbWFrZV9wYWNrZXIoJz5kJykKKworCitjbGFzcyBHcmFwaEJpbmFyeVR5cGVUeXBlKHR5cGUpOgorICAgIGRlZiBfX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRjdCk6CisgICAgICAgIGNscyA9IHN1cGVyKEdyYXBoQmluYXJ5VHlwZVR5cGUsIG1jcykuX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkY3QpCisgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgIGlmIGNscy5weXRob25fdHlwZToKKyAgICAgICAgICAgICAgICBfc2VyaWFsaXplcnNbY2xzLnB5dGhvbl90eXBlXSA9IGNscworICAgICAgICAgICAgaWYgY2xzLmdyYXBoYmluYXJ5X3R5cGU6CisgICAgICAgICAgICAgICAgX2Rlc2VyaWFsaXplcnNbY2xzLmdyYXBoYmluYXJ5X3R5cGVdID0gY2xzCisgICAgICAgIHJldHVybiBjbHMKKworCitjbGFzcyBHcmFwaEJpbmFyeVdyaXRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJpYWxpemVyX21hcD1Ob25lKToKKyAgICAgICAgc2VsZi5zZXJpYWxpemVycyA9IF9zZXJpYWxpemVycy5jb3B5KCkKKyAgICAgICAgaWYgc2VyaWFsaXplcl9tYXA6CisgICAgICAgICAgICBzZWxmLnNlcmlhbGl6ZXJzLnVwZGF0ZShzZXJpYWxpemVyX21hcCkKKworICAgIGRlZiB3cml0ZU9iamVjdChzZWxmLCBvYmplY3REYXRhKToKKyAgICAgICAgcmV0dXJuIHNlbGYudG9EaWN0KG9iamVjdERhdGEpCisKKyAgICBkZWYgdG9EaWN0KHNlbGYsIG9iaiwgdG9fZXh0ZW5kPU5vbmUpOgorICAgICAgICBpZiB0b19leHRlbmQgaXMgTm9uZToKKyAgICAgICAgICAgIHRvX2V4dGVuZCA9IGJ5dGVhcnJheSgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdCA9IHR5cGUob2JqKQorICAgICAgICAgICAgCisgICAgICAgICAgICAjIGNvZXJjZSB1bmljb2RlIHRvIHN0ciBzbyB0aGUgc2VyaWFsaXplciB3aWxsIGJlIGZvdW5kIHByb3Blcmx5IGluIHRoZSBjYWNoZS4uLmJldHRlciB3YXk/CisgICAgICAgICAgICBpZiBub3Qgc2l4LlBZMzoKKyAgICAgICAgICAgICAgICB0ID0gc3RyIGlmIGlzaW5zdGFuY2Uob2JqLCB1bmljb2RlKSBlbHNlIHQKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnNlcmlhbGl6ZXJzW3RdLmRpY3RpZnkob2JqLCBzZWxmLCB0b19leHRlbmQpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIGZvciBrZXksIHNlcmlhbGl6ZXIgaW4gc2VsZi5zZXJpYWxpemVycy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBrZXkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplci5kaWN0aWZ5KG9iaiwgc2VsZiwgdG9fZXh0ZW5kKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBkaWN0KToKKyAgICAgICAgICAgIHJldHVybiBkaWN0KChzZWxmLnRvRGljdChrLCB0b19leHRlbmQpLCBzZWxmLnRvRGljdCh2LCB0b19leHRlbmQpKSBmb3IgaywgdiBpbiBvYmouaXRlbXMoKSkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgc2V0KToKKyAgICAgICAgICAgIHJldHVybiBzZXQoW3NlbGYudG9EaWN0KG8sIHRvX2V4dGVuZCkgZm9yIG8gaW4gb2JqXSkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgbGlzdCk6CisgICAgICAgICAgICByZXR1cm4gW3NlbGYudG9EaWN0KG8sIHRvX2V4dGVuZCkgZm9yIG8gaW4gb2JqXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG9iagorCisKK2NsYXNzIEdyYXBoQmluYXJ5UmVhZGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlc2VyaWFsaXplcl9tYXA9Tm9uZSk6CisgICAgICAgIHNlbGYuZGVzZXJpYWxpemVycyA9IF9kZXNlcmlhbGl6ZXJzLmNvcHkoKQorICAgICAgICBpZiBkZXNlcmlhbGl6ZXJfbWFwOgorICAgICAgICAgICAgc2VsZi5kZXNlcmlhbGl6ZXJzLnVwZGF0ZShkZXNlcmlhbGl6ZXJfbWFwKQorCisgICAgZGVmIHJlYWRPYmplY3Qoc2VsZiwgYik6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoYiwgYnl0ZWFycmF5KToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRvT2JqZWN0KGlvLkJ5dGVzSU8oYikpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShiLCBpby5CdWZmZXJlZElPQmFzZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50b09iamVjdChiKQorCisgICAgZGVmIHRvT2JqZWN0KHNlbGYsIGJ1ZmYsIGRhdGFfdHlwZT1Ob25lLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgaWYgZGF0YV90eXBlIGlzIE5vbmU6CisgICAgICAgICAgICBidCA9IHVpbnQ4X3VucGFjayhidWZmLnJlYWQoMSkpCisgICAgICAgICAgICBpZiBidCA9PSBEYXRhVHlwZS5udWxsLnZhbHVlOgorICAgICAgICAgICAgICAgIGlmIG51bGxhYmxlOgorICAgICAgICAgICAgICAgICAgICBidWZmLnJlYWQoMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVzZXJpYWxpemVyc1tEYXRhVHlwZShidCldLm9iamVjdGlmeShidWZmLCBzZWxmLCBudWxsYWJsZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlc2VyaWFsaXplcnNbZGF0YV90eXBlXS5vYmplY3RpZnkoYnVmZiwgc2VsZiwgbnVsbGFibGUpCisKKworQHNpeC5hZGRfbWV0YWNsYXNzKEdyYXBoQmluYXJ5VHlwZVR5cGUpCitjbGFzcyBfR3JhcGhCaW5hcnlUeXBlSU8ob2JqZWN0KToKKyAgICBweXRob25fdHlwZSA9IE5vbmUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gTm9uZQorCisgICAgc3ltYm9sTWFwID0geyJnbG9iYWxfIjogImdsb2JhbCIsICJhc18iOiAiYXMiLCAiaW5fIjogImluIiwgImFuZF8iOiAiYW5kIiwKKyAgICAgICAgICAgICAgICAgIm9yXyI6ICJvciIsICJpc18iOiAiaXMiLCAibm90XyI6ICJub3QiLCAiZnJvbV8iOiAiZnJvbSIsCisgICAgICAgICAgICAgICAgICJzZXRfIjogInNldCIsICJsaXN0XyI6ICJsaXN0IiwgImFsbF8iOiAiYWxsIiwgIndpdGhfIjogIndpdGgiLAorICAgICAgICAgICAgICAgICAiZmlsdGVyXyI6ICJmaWx0ZXIiLCAiaWRfIjogImlkIiwgIm1heF8iOiAibWF4IiwgIm1pbl8iOiAibWluIiwgInN1bV8iOiAic3VtIn0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwcmVmaXhfYnl0ZXMoY2xzLCBncmFwaGJpbl90eXBlLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSwgdG9fZXh0ZW5kPU5vbmUpOgorICAgICAgICBpZiB0b19leHRlbmQgaXMgTm9uZToKKyAgICAgICAgICAgIHRvX2V4dGVuZCA9IGJ5dGVhcnJheSgpCisKKyAgICAgICAgaWYgbm90IGFzX3ZhbHVlOgorICAgICAgICAgICAgdG9fZXh0ZW5kICs9IHVpbnQ4X3BhY2soZ3JhcGhiaW5fdHlwZS52YWx1ZSkKKworICAgICAgICBpZiBudWxsYWJsZToKKyAgICAgICAgICAgIHRvX2V4dGVuZCArPSBpbnQ4X3BhY2soMCkKKworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVhZF9pbnQoY2xzLCBidWZmKToKKyAgICAgICAgcmV0dXJuIGludDMyX3VucGFjayhidWZmLnJlYWQoNCkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdW5tYW5nbGVfa2V5d29yZChjbHMsIHN5bWJvbCk6CisgICAgICAgIHJldHVybiBjbHMuc3ltYm9sTWFwLmdldChzeW1ib2wsIHN5bWJvbCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpc19udWxsKGNscywgYnVmZiwgcmVhZGVyLCBlbHNlX29wdCwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBOb25lIGlmIG51bGxhYmxlIGFuZCBidWZmLnJlYWQoMSlbMF0gPT0gMHgwMSBlbHNlIGVsc2Vfb3B0KGJ1ZmYsIHJlYWRlcikKKworICAgIGRlZiBkaWN0aWZ5KHNlbGYsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBkZWYgb2JqZWN0aWZ5KHNlbGYsIGQsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorICAgICAgICAKKworY2xhc3MgTG9uZ0lPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IExvbmdUeXBlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmxvbmcKKyAgICBieXRlX2Zvcm1hdF9wYWNrID0gaW50NjRfcGFjaworICAgIGJ5dGVfZm9ybWF0X3VucGFjayA9IGludDY0X3VucGFjaworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGlmIG9iaiA8IC05MjIzMzcyMDM2ODU0Nzc1ODA4IG9yIG9iaiA+IDkyMjMzNzIwMzY4NTQ3NzU4MDc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRPRE86IGRvbid0IGZvcmdldCBiaWdpbnQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGNscy5ieXRlX2Zvcm1hdF9wYWNrKG9iaikpCisgICAgICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGxhbWJkYSBiLCByOiBpbnQ2NF91bnBhY2soYnVmZi5yZWFkKDgpKSwgbnVsbGFibGUpCisKKworY2xhc3MgSW50SU8oTG9uZ0lPKToKKworICAgIHB5dGhvbl90eXBlID0gSW50VHlwZQorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5pbnQKKyAgICBieXRlX2Zvcm1hdF9wYWNrID0gaW50MzJfcGFjaworICAgIGJ5dGVfZm9ybWF0X3VucGFjayA9IGludDMyX3VucGFjaworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGxhbWJkYSBiLCByOiBjbHMucmVhZF9pbnQoYiksIG51bGxhYmxlKQorCisKK2NsYXNzIERhdGVJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBkYXRldGltZS5kYXRldGltZQorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5kYXRlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZXN0YW1wX3NlY29uZHMgPSBjYWxlbmRhci50aW1lZ20ob2JqLnV0Y3RpbWV0dXBsZSgpKQorICAgICAgICAgICAgcHRzID0gdGltZXN0YW1wX3NlY29uZHMgKiAxZTMgKyBnZXRhdHRyKG9iaiwgJ21pY3Jvc2Vjb25kJywgMCkgLyAxZTMKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcHRzID0gY2FsZW5kYXIudGltZWdtKG9iai50aW1ldHVwbGUoKSkgKiAxZTMKKworICAgICAgICB0cyA9IGludChyb3VuZChwdHMpKQorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQ2NF9wYWNrKHRzKSkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYiwgcjogZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChpbnQ2NF91bnBhY2soYi5yZWFkKDgpKSAvIDEwMDAuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsYWJsZSkKKworCisjIEJhc2VkIG9uIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoaXMgY2xhc3MgbXVzdCBhbHdheXMgYmUgZGVjbGFyZWQgYmVmb3JlIEZsb2F0SU8uCisjIFNlZW1zIHByZXR0eSBmcmFnaWxlIGZvciBmdXR1cmUgbWFpbnRhaW5lcnMuIE1heWJlIGxvb2sgaW50byB0aGlzLgorY2xhc3MgVGltZXN0YW1wSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBweXRob25fdHlwZSA9IHN0YXRpY3MudGltZXN0YW1wCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnRpbWVzdGFtcAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgICMgSmF2YSB0aW1lc3RhbXAgZXhwZWN0cyBtaWxsaXNlY29uZHMgaW50ZWdlciAtIEhhdmUgdG8gdXNlIGludCBiZWNhdXNlIG9mIGxlZ2FjeSBQeXRob24KKyAgICAgICAgdHMgPSBpbnQocm91bmQob2JqICogMTAwMCkpCisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDY0X3BhY2sodHMpKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgIyBQeXRob24gdGltZXN0YW1wIGV4cGVjdHMgc2Vjb25kcworICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBsYW1iZGEgYiwgcjogc3RhdGljcy50aW1lc3RhbXAoaW50NjRfdW5wYWNrKGIucmVhZCg4KSkgLyAxMDAwLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGUpCisgICAgCisKK2RlZiBfbG9uZ19iaXRzX3RvX2RvdWJsZShiaXRzKToKKyAgICByZXR1cm4gdW5wYWNrKCdkJywgcGFjaygnUScsIGJpdHMpKVswXQorCisKK05BTiA9IF9sb25nX2JpdHNfdG9fZG91YmxlKDB4N2ZmODAwMDAwMDAwMDAwMCkKK1BPU0lUSVZFX0lORklOSVRZID0gX2xvbmdfYml0c190b19kb3VibGUoMHg3ZmYwMDAwMDAwMDAwMDAwKQorTkVHQVRJVkVfSU5GSU5JVFkgPSBfbG9uZ19iaXRzX3RvX2RvdWJsZSgweEZmZjAwMDAwMDAwMDAwMDApCisKKworY2xhc3MgRmxvYXRJTyhMb25nSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBGbG9hdFR5cGUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuZmxvYXQKKyAgICBncmFwaGJpbmFyeV9iYXNlX3R5cGUgPSBEYXRhVHlwZS5mbG9hdAorICAgIGJ5dGVfZm9ybWF0X3BhY2sgPSBmbG9hdF9wYWNrCisgICAgYnl0ZV9mb3JtYXRfdW5wYWNrID0gZmxvYXRfdW5wYWNrCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgaWYgbWF0aC5pc25hbihvYmopOgorICAgICAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGNscy5ieXRlX2Zvcm1hdF9wYWNrKE5BTikpCisgICAgICAgIGVsaWYgbWF0aC5pc2luZihvYmopIGFuZCBvYmogPiAwOgorICAgICAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGNscy5ieXRlX2Zvcm1hdF9wYWNrKFBPU0lUSVZFX0lORklOSVRZKSkKKyAgICAgICAgZWxpZiBtYXRoLmlzaW5mKG9iaikgYW5kIG9iaiA8IDA6CisgICAgICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoY2xzLmJ5dGVfZm9ybWF0X3BhY2soTkVHQVRJVkVfSU5GSU5JVFkpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGNscy5ieXRlX2Zvcm1hdF9wYWNrKG9iaikpCisKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGxhbWJkYSBiLCByOiBmbG9hdF91bnBhY2soYi5yZWFkKDQpKSwgbnVsbGFibGUpCisKKworY2xhc3MgRG91YmxlSU8oRmxvYXRJTyk6CisgICAgIiIiCisgICAgRmxvYXRzIGJhc2ljYWxseSBqdXN0IGZhbGwgdGhyb3VnaCB0byBkb3VibGUgc2VyaWFsaXphdGlvbi4KKyAgICAiIiIKKworICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5kb3VibGUKKyAgICBncmFwaGJpbmFyeV9iYXNlX3R5cGUgPSBEYXRhVHlwZS5kb3VibGUKKyAgICBieXRlX2Zvcm1hdF9wYWNrID0gZG91YmxlX3BhY2sKKyAgICBieXRlX2Zvcm1hdF91bnBhY2sgPSBkb3VibGVfdW5wYWNrCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgbGFtYmRhIGIsIHI6IGRvdWJsZV91bnBhY2soYi5yZWFkKDgpKSwgbnVsbGFibGUpCisKKworY2xhc3MgQ2hhcklPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSBTaW5nbGVDaGFyCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmNoYXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChvYmouZW5jb2RlKCJ1dGYtOCIpKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX2NoYXIsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX2NoYXIoY2xzLCBiLCByKToKKyAgICAgICAgbWF4X2J5dGVzID0gNAorICAgICAgICB4ID0gYi5yZWFkKDEpCisgICAgICAgIHdoaWxlIG1heF9ieXRlcyA+IDA6CisgICAgICAgICAgICBtYXhfYnl0ZXMgPSBtYXhfYnl0ZXMgLSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIHggKz0gYi5yZWFkKDEpCisKKworY2xhc3MgU3RyaW5nSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gc3RyCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnN0cmluZworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICBzdHJfYnl0ZXMgPSBvYmouZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHRvX2V4dGVuZCArPSBpbnQzMl9wYWNrKGxlbihzdHJfYnl0ZXMpKQorICAgICAgICB0b19leHRlbmQgKz0gc3RyX2J5dGVzCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBsYW1iZGEgYiwgcjogYi5yZWFkKGNscy5yZWFkX2ludChiKSkuZGVjb2RlKCJ1dGYtOCIpLCBudWxsYWJsZSkKKworCitjbGFzcyBMaXN0SU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gbGlzdAorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5saXN0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50MzJfcGFjayhsZW4ob2JqKSkpCisgICAgICAgIGZvciBpdGVtIGluIG9iajoKKyAgICAgICAgICAgIHdyaXRlci50b0RpY3QoaXRlbSwgdG9fZXh0ZW5kKQorCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfbGlzdCwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfbGlzdChjbHMsIGIsIHIpOgorICAgICAgICBzaXplID0gY2xzLnJlYWRfaW50KGIpCisgICAgICAgIHRoZV9saXN0ID0gW10KKyAgICAgICAgd2hpbGUgc2l6ZSA+IDA6CisgICAgICAgICAgICB0aGVfbGlzdC5hcHBlbmQoci5yZWFkT2JqZWN0KGIpKQorICAgICAgICAgICAgc2l6ZSA9IHNpemUgLSAxCisKKyAgICAgICAgcmV0dXJuIHRoZV9saXN0CisKKworY2xhc3MgU2V0RGVzZXJpYWxpemVyKExpc3RJTyk6CisKKyAgICBweXRob25fdHlwZSA9IFNldFR5cGUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuc2V0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIHNldChMaXN0SU8ub2JqZWN0aWZ5KGJ1ZmYsIHJlYWRlciwgbnVsbGFibGUpKQorCisKK2NsYXNzIE1hcElPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IERpY3RUeXBlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLm1hcAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50MzJfcGFjayhsZW4ob2JqKSkpCisgICAgICAgIGZvciBrLCB2IGluIG9iai5pdGVtcygpOgorICAgICAgICAgICAgd3JpdGVyLnRvRGljdChrLCB0b19leHRlbmQpCisgICAgICAgICAgICB3cml0ZXIudG9EaWN0KHYsIHRvX2V4dGVuZCkKKworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX21hcCwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfbWFwKGNscywgYiwgcik6CisgICAgICAgIHNpemUgPSBjbHMucmVhZF9pbnQoYikKKyAgICAgICAgdGhlX2RpY3QgPSB7fQorICAgICAgICB3aGlsZSBzaXplID4gMDoKKyAgICAgICAgICAgIGsgPSByLnJlYWRPYmplY3QoYikKKyAgICAgICAgICAgIHYgPSByLnJlYWRPYmplY3QoYikKKyAgICAgICAgICAgIHRoZV9kaWN0W2tdID0gdgorICAgICAgICAgICAgc2l6ZSA9IHNpemUgLSAxCisKKyAgICAgICAgcmV0dXJuIHRoZV9kaWN0CisKKworY2xhc3MgVXVpZElPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IHV1aWQuVVVJRAorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS51dWlkCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQob2JqLmJ5dGVzKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgbGFtYmRhIGIsIHI6IHV1aWQuVVVJRChieXRlcz1iLnJlYWQoMTYpKSwgbnVsbGFibGUpCisKKworY2xhc3MgRWRnZUlPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IEVkZ2UKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuZWRnZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLmlkLCB0b19leHRlbmQpCisgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkob2JqLmxhYmVsLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLmluVi5pZCwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5pblYubGFiZWwsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgd3JpdGVyLnRvRGljdChvYmoub3V0Vi5pZCwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5vdXRWLmxhYmVsLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoTlVMTF9CWVRFUykKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChOVUxMX0JZVEVTKQorCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfZWRnZSwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfZWRnZShjbHMsIGIsIHIpOgorICAgICAgICBlZGdlaWQgPSByLnJlYWRPYmplY3QoYikKKyAgICAgICAgZWRnZWxibCA9IHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSkKKyAgICAgICAgaW52ID0gVmVydGV4KHIucmVhZE9iamVjdChiKSwgci50b09iamVjdChiLCBEYXRhVHlwZS5zdHJpbmcsIEZhbHNlKSkKKyAgICAgICAgb3V0diA9IFZlcnRleChyLnJlYWRPYmplY3QoYiksIHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSkpCisgICAgICAgIGVkZ2UgPSBFZGdlKGVkZ2VpZCwgb3V0diwgZWRnZWxibCwgaW52KQorICAgICAgICBiLnJlYWQoNCkKKyAgICAgICAgcmV0dXJuIGVkZ2UKKworCitjbGFzcyBQYXRoSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gUGF0aAorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5wYXRoCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLmxhYmVscywgdG9fZXh0ZW5kKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai5vYmplY3RzLCB0b19leHRlbmQpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBsYW1iZGEgYiwgcjogUGF0aChyLnJlYWRPYmplY3QoYiksIHIucmVhZE9iamVjdChiKSksIG51bGxhYmxlKQorCisKK2NsYXNzIFByb3BlcnR5SU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gUHJvcGVydHkKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUucHJvcGVydHkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShvYmoua2V5LCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLnZhbHVlLCB0b19leHRlbmQpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoTlVMTF9CWVRFUykKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF9wcm9wZXJ0eSwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfcHJvcGVydHkoY2xzLCBiLCByKToKKyAgICAgICAgcCA9IFByb3BlcnR5KHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSksIHIucmVhZE9iamVjdChiKSwgTm9uZSkKKyAgICAgICAgYi5yZWFkKDIpCisgICAgICAgIHJldHVybiBwCisKKworY2xhc3MgVGlua2VyR3JhcGhJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBHcmFwaAorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5ncmFwaAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJUaW5rZXJHcmFwaCBzZXJpYWxpemF0aW9uIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IGdyZW1saW4tcHl0aG9uIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBiLCByZWFkZXIsIGFzX3ZhbHVlPUZhbHNlKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIlRpbmtlckdyYXBoIGRlc2VyaWFsaXphdGlvbiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSBncmVtbGluLXB5dGhvbiIpCisKKworY2xhc3MgVmVydGV4SU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gVmVydGV4CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnZlcnRleAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai5pZCwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5sYWJlbCwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKE5VTExfQllURVMpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfdmVydGV4LCBudWxsYWJsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVhZF92ZXJ0ZXgoY2xzLCBiLCByKToKKyAgICAgICAgdmVydGV4ID0gVmVydGV4KHIucmVhZE9iamVjdChiKSwgci50b09iamVjdChiLCBEYXRhVHlwZS5zdHJpbmcsIEZhbHNlKSkKKyAgICAgICAgYi5yZWFkKDIpCisgICAgICAgIHJldHVybiB2ZXJ0ZXgKKworCitjbGFzcyBWZXJ0ZXhQcm9wZXJ0eUlPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IFZlcnRleFByb3BlcnR5CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnZlcnRleHByb3BlcnR5CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLmlkLCB0b19leHRlbmQpCisgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkob2JqLmxhYmVsLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLnZhbHVlLCB0b19leHRlbmQpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoTlVMTF9CWVRFUykKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChOVUxMX0JZVEVTKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX3ZlcnRleHByb3BlcnR5LCBudWxsYWJsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVhZF92ZXJ0ZXhwcm9wZXJ0eShjbHMsIGIsIHIpOgorICAgICAgICB2cCA9IFZlcnRleFByb3BlcnR5KHIucmVhZE9iamVjdChiKSwgci50b09iamVjdChiLCBEYXRhVHlwZS5zdHJpbmcsIEZhbHNlKSwgci5yZWFkT2JqZWN0KGIpLCBOb25lKQorICAgICAgICBiLnJlYWQoNCkKKyAgICAgICAgcmV0dXJuIHZwCisKKworY2xhc3MgX0VudW1JTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KGNscy51bm1hbmdsZV9rZXl3b3JkKHN0cihvYmoubmFtZSkpLCB3cml0ZXIsIHRvX2V4dGVuZCkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF9lbnVtdmFsLCBudWxsYWJsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVhZF9lbnVtdmFsKGNscywgYiwgcik6CisgICAgICAgIGVudW1fbmFtZSA9IHIudG9PYmplY3QoYikKKyAgICAgICAgcmV0dXJuIGNscy5weXRob25fdHlwZVtlbnVtX25hbWVdCisKKworY2xhc3MgQmFycmllcklPKF9FbnVtSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5iYXJyaWVyCisgICAgcHl0aG9uX3R5cGUgPSBCYXJyaWVyCisKKworY2xhc3MgQ2FyZGluYWxpdHlJTyhfRW51bUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuY2FyZGluYWxpdHkKKyAgICBweXRob25fdHlwZSA9IENhcmRpbmFsaXR5CisKKworY2xhc3MgQ29sdW1uSU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmNvbHVtbgorICAgIHB5dGhvbl90eXBlID0gQ29sdW1uCisKKworY2xhc3MgRGlyZWN0aW9uSU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmRpcmVjdGlvbgorICAgIHB5dGhvbl90eXBlID0gRGlyZWN0aW9uCisKKworY2xhc3MgT3BlcmF0b3JJTyhfRW51bUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUub3BlcmF0b3IKKyAgICBweXRob25fdHlwZSA9IE9wZXJhdG9yCisKKworY2xhc3MgT3JkZXJJTyhfRW51bUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUub3JkZXIKKyAgICBweXRob25fdHlwZSA9IE9yZGVyCisKKworY2xhc3MgUGlja0lPKF9FbnVtSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5waWNrCisgICAgcHl0aG9uX3R5cGUgPSBQaWNrCisKKworY2xhc3MgUG9wSU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnBvcAorICAgIHB5dGhvbl90eXBlID0gUG9wCisKKworY2xhc3MgQmluZGluZ0lPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IEJpbmRpbmcKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuYmluZGluZworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5rZXksIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgd3JpdGVyLnRvRGljdChvYmoudmFsdWUsIHRvX2V4dGVuZCkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGxhbWJkYSBiLCByOiBCaW5kaW5nKHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkT2JqZWN0KGIpKSwgbnVsbGFibGUpCisKKworY2xhc3MgQnl0ZWNvZGVJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorICAgIHB5dGhvbl90eXBlID0gQnl0ZWNvZGUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuYnl0ZWNvZGUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgYmMgPSBvYmouYnl0ZWNvZGUgaWYgaXNpbnN0YW5jZShvYmosIFRyYXZlcnNhbCkgZWxzZSBvYmoKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQzMl9wYWNrKGxlbihiYy5zdGVwX2luc3RydWN0aW9ucykpKQorICAgICAgICBmb3IgaW5zdCBpbiBiYy5zdGVwX2luc3RydWN0aW9uczoKKyAgICAgICAgICAgIGluc3RfbmFtZSwgaW5zdF9hcmdzID0gaW5zdFswXSwgaW5zdFsxOl0gaWYgbGVuKGluc3QpID4gMSBlbHNlIFtdCisgICAgICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KGluc3RfbmFtZSwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQzMl9wYWNrKGxlbihpbnN0X2FyZ3MpKSkKKyAgICAgICAgICAgIGZvciBhcmcgaW4gaW5zdF9hcmdzOgorICAgICAgICAgICAgICAgIHdyaXRlci50b0RpY3QoYXJnLCB0b19leHRlbmQpCisKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQzMl9wYWNrKGxlbihiYy5zb3VyY2VfaW5zdHJ1Y3Rpb25zKSkpCisgICAgICAgIGZvciBpbnN0IGluIGJjLnNvdXJjZV9pbnN0cnVjdGlvbnM6CisgICAgICAgICAgICBpbnN0X25hbWUsIGluc3RfYXJncyA9IGluc3RbMF0sIGluc3RbMTpdIGlmIGxlbihpbnN0KSA+IDEgZWxzZSBbXQorICAgICAgICAgICAgU3RyaW5nSU8uZGljdGlmeShpbnN0X25hbWUsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50MzJfcGFjayhsZW4oaW5zdF9hcmdzKSkpCisgICAgICAgICAgICBmb3IgYXJnIGluIGluc3RfYXJnczoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgVHlwZVR5cGUpOgorICAgICAgICAgICAgICAgICAgICB3cml0ZXIudG9EaWN0KEdyZW1saW5UeXBlKGFyZygpLmZxY24pLCB0b19leHRlbmQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnRvRGljdChhcmcsIHRvX2V4dGVuZCkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF9ieXRlY29kZSwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfYnl0ZWNvZGUoY2xzLCBiLCByKToKKyAgICAgICAgYnl0ZWNvZGUgPSBCeXRlY29kZSgpCisKKyAgICAgICAgc3RlcF9jb3VudCA9IGNscy5yZWFkX2ludChiKQorICAgICAgICBpeCA9IDAKKyAgICAgICAgd2hpbGUgaXggPCBzdGVwX2NvdW50OgorICAgICAgICAgICAgaW5zdCA9IFtyLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpXQorICAgICAgICAgICAgaW5zdF9jdCA9IGNscy5yZWFkX2ludChiKQorICAgICAgICAgICAgaXkgPSAwCisgICAgICAgICAgICB3aGlsZSBpeSA8IGluc3RfY3Q6CisgICAgICAgICAgICAgICAgaW5zdC5hcHBlbmQoci5yZWFkT2JqZWN0KGIpKQorICAgICAgICAgICAgICAgIGl5ICs9IDEKKyAgICAgICAgICAgIGJ5dGVjb2RlLnN0ZXBfaW5zdHJ1Y3Rpb25zLmFwcGVuZChpbnN0KQorICAgICAgICAgICAgaXggKz0gMQorCisgICAgICAgIHNvdXJjZV9jb3VudCA9IGNscy5yZWFkX2ludChiKQorICAgICAgICBpeCA9IDAKKyAgICAgICAgd2hpbGUgaXggPCBzb3VyY2VfY291bnQ6CisgICAgICAgICAgICBpbnN0ID0gW3IudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSldCisgICAgICAgICAgICBpbnN0X2N0ID0gY2xzLnJlYWRfaW50KGIpCisgICAgICAgICAgICBpeSA9IDAKKyAgICAgICAgICAgIHdoaWxlIGl5IDwgaW5zdF9jdDoKKyAgICAgICAgICAgICAgICBpbnN0LmFwcGVuZChyLnJlYWRPYmplY3QoYikpCisgICAgICAgICAgICAgICAgaXkgKz0gMQorICAgICAgICAgICAgYnl0ZWNvZGUuc291cmNlX2luc3RydWN0aW9ucy5hcHBlbmQoaW5zdCkKKyAgICAgICAgICAgIGl4ICs9IDEKKworICAgICAgICByZXR1cm4gYnl0ZWNvZGUKKworCitjbGFzcyBUcmF2ZXJzYWxJTyhCeXRlY29kZUlPKToKKyAgICBweXRob25fdHlwZSA9IEdyYXBoVHJhdmVyc2FsCisKKworY2xhc3MgTGFtYmRhU2VyaWFsaXplcihfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBGdW5jdGlvblR5cGUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUubGFtYmRhXworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorCisgICAgICAgIGxhbWJkYV9yZXN1bHQgPSBvYmooKQorICAgICAgICBzY3JpcHQgPSBsYW1iZGFfcmVzdWx0IGlmIGlzaW5zdGFuY2UobGFtYmRhX3Jlc3VsdCwgc3RyKSBlbHNlIGxhbWJkYV9yZXN1bHRbMF0KKyAgICAgICAgbGFuZ3VhZ2UgPSBzdGF0aWNzLmRlZmF1bHRfbGFtYmRhX2xhbmd1YWdlIGlmIGlzaW5zdGFuY2UobGFtYmRhX3Jlc3VsdCwgc3RyKSBlbHNlIGxhbWJkYV9yZXN1bHRbMV0KKworICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KGxhbmd1YWdlLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisKKyAgICAgICAgc2NyaXB0X2NsZWFuZWQgPSBzY3JpcHQKKyAgICAgICAgc2NyaXB0X2FyZ3MgPSAtMQorCisgICAgICAgIGlmIGxhbmd1YWdlID09ICJncmVtbGluLWp5dGhvbiIgb3IgbGFuZ3VhZ2UgPT0gImdyZW1saW4tcHl0aG9uIjoKKyAgICAgICAgICAgIGlmIG5vdCBzY3JpcHQuc3RyaXAoKS5zdGFydHN3aXRoKCJsYW1iZGEiKToKKyAgICAgICAgICAgICAgICBzY3JpcHRfY2xlYW5lZCA9ICJsYW1iZGEgIiArIHNjcmlwdAorICAgICAgICAgICAgc2NyaXB0X2FyZ3MgPSBzaXguZ2V0X2Z1bmN0aW9uX2NvZGUoZXZhbChzY3JpcHRfY2xlYW5lZCkpLmNvX2FyZ2NvdW50CisgICAgICAgIGVsaWYgbGFuZ3VhZ2UgPT0gImdyZW1saW4tZ3Jvb3Z5IiBhbmQgIi0+IiBpbiBzY3JpcHQ6CisgICAgICAgICAgICAjIGlmIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IGFkZGVkIHBhcmFtZXRlcnMgdG8gdGhlIGdyb292eSBjbG9zdXJlIHRoZW4gd2UgY2FuIGVhc2lseSBkZXRlY3Qgb25lIG9yIHR3bworICAgICAgICAgICAgIyBhcmcgbGFtYmRhcyAtIGlmIHdlIGNhbid0IGRldGVjdCAxIG9yIDIgdGhlbiB3ZSBqdXN0IGdvIHdpdGggInVua25vd24iCisgICAgICAgICAgICBhcmdzID0gc2NyaXB0WzA6c2NyaXB0LmZpbmQoIi0+IildCisgICAgICAgICAgICBzY3JpcHRfYXJncyA9IDIgaWYgIiwiIGluIGFyZ3MgZWxzZSAxCisKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShzY3JpcHRfY2xlYW5lZCwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDMyX3BhY2soc2NyaXB0X2FyZ3MpKQorCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworCitjbGFzcyBQU2VyaWFsaXplcihfR3JhcGhCaW5hcnlUeXBlSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5wCisgICAgcHl0aG9uX3R5cGUgPSBQCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShvYmoub3BlcmF0b3IsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKworICAgICAgICBhcmdzID0gW10KKyAgICAgICAgaWYgb2JqLm90aGVyIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iai52YWx1ZSwgTGlzdFR5cGUpOgorICAgICAgICAgICAgICAgIGFyZ3MgPSBvYmoudmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQob2JqLnZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJncy5hcHBlbmQob2JqLnZhbHVlKQorICAgICAgICAgICAgYXJncy5hcHBlbmQob2JqLm90aGVyKQorCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50MzJfcGFjayhsZW4oYXJncykpKQorICAgICAgICBmb3IgYSBpbiBhcmdzOgorICAgICAgICAgICAgd3JpdGVyLnRvRGljdChhLCB0b19leHRlbmQpCisKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisKK2NsYXNzIFNjb3BlSU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnNjb3BlCisgICAgcHl0aG9uX3R5cGUgPSBTY29wZQorCisKK2NsYXNzIFRJTyhfRW51bUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUudAorICAgIHB5dGhvbl90eXBlID0gVAorCisKK2NsYXNzIFRyYXZlcnNlcklPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnRyYXZlcnNlcgorICAgIHB5dGhvbl90eXBlID0gVHJhdmVyc2VyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50NjRfcGFjayhvYmouYnVsaykpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLm9iamVjdCwgdG9fZXh0ZW5kKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX3RyYXZlcnNlciwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfdHJhdmVyc2VyKGNscywgYiwgcik6CisgICAgICAgIGJ1bGsgPSBpbnQ2NF91bnBhY2soYi5yZWFkKDgpKQorICAgICAgICBvYmogPSByLnJlYWRPYmplY3QoYikKKyAgICAgICAgcmV0dXJuIFRyYXZlcnNlcihvYmosIGJ1bGs9YnVsaykKKworCitjbGFzcyBCeXRlSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBweXRob25fdHlwZSA9IFNpbmdsZUJ5dGUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuYnl0ZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDhfcGFjayhvYmopKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiLCByOiBpbnQuX19uZXdfXyhTaW5nbGVCeXRlLCBpbnQ4X3VucGFjayhiLnJlYWQoMSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxhYmxlKQorCisKK2NsYXNzIEJ5dGVCdWZmZXJJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorICAgIHB5dGhvbl90eXBlID0gQnl0ZUJ1ZmZlclR5cGUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuYnl0ZWJ1ZmZlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDMyX3BhY2sobGVuKG9iaikpKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKG9iaikKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF9ieXRlYnVmZmVyLCBudWxsYWJsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVhZF9ieXRlYnVmZmVyKGNscywgYiwgcik6CisgICAgICAgIHNpemUgPSBjbHMucmVhZF9pbnQoYikKKyAgICAgICAgcmV0dXJuIEJ5dGVCdWZmZXJUeXBlKGIucmVhZChzaXplKSkKKworCitjbGFzcyBCb29sZWFuSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBweXRob25fdHlwZSA9IGJvb2wKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuYm9vbGVhbgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDhfcGFjaygweDAxIGlmIG9iaiBlbHNlIDB4MDApKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiLCByOiBUcnVlIGlmIGludDhfdW5wYWNrKGIucmVhZCgxKSkgPT0gMHgwMSBlbHNlIEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGUpCisKKworY2xhc3MgVGV4dFBTZXJpYWxpemVyKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnRleHRwCisgICAgcHl0aG9uX3R5cGUgPSBUZXh0UAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorCisgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkob2JqLm9wZXJhdG9yLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisKKyAgICAgICAgYXJncyA9IFtdCisgICAgICAgIGlmIG9iai5vdGhlciBpcyBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmoudmFsdWUsIExpc3RUeXBlKToKKyAgICAgICAgICAgICAgICBhcmdzID0gb2JqLnZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKG9iai52YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKG9iai52YWx1ZSkKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKG9iai5vdGhlcikKKworICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDMyX3BhY2sobGVuKGFyZ3MpKSkKKyAgICAgICAgZm9yIGEgaW4gYXJnczoKKyAgICAgICAgICAgIHdyaXRlci50b0RpY3QoYSwgdG9fZXh0ZW5kKQorCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworCitjbGFzcyBCdWxrU2V0RGVzZXJpYWxpemVyKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuYnVsa3NldAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF9idWxrc2V0LCBudWxsYWJsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVhZF9idWxrc2V0KGNscywgYiwgcik6CisgICAgICAgIHNpemUgPSBjbHMucmVhZF9pbnQoYikKKyAgICAgICAgdGhlX2xpc3QgPSBbXQorICAgICAgICB3aGlsZSBzaXplID4gMDoKKyAgICAgICAgICAgIGl0bSA9IHIucmVhZE9iamVjdChiKQorICAgICAgICAgICAgYnVsayA9IGludDY0X3VucGFjayhiLnJlYWQoOCkpCisgICAgICAgICAgICBmb3IgeSBpbiByYW5nZShidWxrKToKKyAgICAgICAgICAgICAgICB0aGVfbGlzdC5hcHBlbmQoaXRtKSAgICAgICAgICAgIAorICAgICAgICAgICAgc2l6ZSA9IHNpemUgLSAxCisKKyAgICAgICAgcmV0dXJuIHRoZV9saXN0CisKKworY2xhc3MgTWV0cmljc0Rlc2VyaWFsaXplcihfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLm1ldHJpY3MKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfbWV0cmljcywgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfbWV0cmljcyhjbHMsIGIsIHIpOgorICAgICAgICBtZXRyaWNpZCA9IHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSkKKyAgICAgICAgbmFtZSA9IHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSkKKyAgICAgICAgZHVyYXRpb24gPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLmxvbmcsIG51bGxhYmxlPUZhbHNlKQorICAgICAgICBjb3VudHMgPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLm1hcCwgbnVsbGFibGU9RmFsc2UpCisgICAgICAgIGFubm90YXRpb25zID0gci50b09iamVjdChiLCBEYXRhVHlwZS5tYXAsIG51bGxhYmxlPUZhbHNlKQorICAgICAgICBtZXRyaWNzID0gci50b09iamVjdChiLCBEYXRhVHlwZS5saXN0LCBudWxsYWJsZT1GYWxzZSkKKworICAgICAgICByZXR1cm4geyJpZCI6IG1ldHJpY2lkLAorICAgICAgICAgICAgICAgICJuYW1lIjogbmFtZSwKKyAgICAgICAgICAgICAgICAiZHVyIjogZHVyYXRpb24sCisgICAgICAgICAgICAgICAgImNvdW50cyI6IGNvdW50cywKKyAgICAgICAgICAgICAgICAiYW5ub3RhdGlvbnMiOiBhbm5vdGF0aW9ucywKKyAgICAgICAgICAgICAgICAibWV0cmljcyI6IG1ldHJpY3N9CisKKworY2xhc3MgVHJhdmVyc2FsTWV0cmljc0Rlc2VyaWFsaXplcihfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnRyYXZlcnNhbG1ldHJpY3MKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfdHJhdmVyc2FsbWV0cmljcywgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfdHJhdmVyc2FsbWV0cmljcyhjbHMsIGIsIHIpOgorICAgICAgICBkdXJhdGlvbiA9IHIudG9PYmplY3QoYiwgRGF0YVR5cGUubG9uZywgbnVsbGFibGU9RmFsc2UpCisgICAgICAgIG1ldHJpY3MgPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLmxpc3QsIG51bGxhYmxlPUZhbHNlKQorCisgICAgICAgIHJldHVybiB7ImR1ciI6IGR1cmF0aW9uLAorICAgICAgICAgICAgICAgICJtZXRyaWNzIjogbWV0cmljc30KKworCitjbGFzcyBDbGFzc1NlcmlhbGl6ZXIoX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuY2xhenoKKyAgICBweXRob25fdHlwZSA9IEdyZW1saW5UeXBlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkob2JqLmdyZW1saW5fdHlwZSwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKworY2xhc3MgVHJhdmVyc2FsU3RyYXRlZ3lTZXJpYWxpemVyKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnRyYXZlcnNhbHN0cmF0ZWd5CisgICAgcHl0aG9uX3R5cGUgPSBUcmF2ZXJzYWxTdHJhdGVneQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorCisgICAgICAgIENsYXNzU2VyaWFsaXplci5kaWN0aWZ5KEdyZW1saW5UeXBlKG9iai5mcWNuKSwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICBjb25mID0ge2s6IGNscy5fY29udmVydCh2KSBmb3IgaywgdiBpbiBvYmouY29uZmlndXJhdGlvbi5pdGVtcygpfQorICAgICAgICBNYXBJTy5kaWN0aWZ5KGNvbmYsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NvbnZlcnQoY2xzLCB2KToKKyAgICAgICAgcmV0dXJuIHYuYnl0ZWNvZGUgaWYgaXNpbnN0YW5jZSh2LCBUcmF2ZXJzYWwpIGVsc2UgdgorCisKK2NsYXNzIER1cmF0aW9uSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBweXRob25fdHlwZSA9IHRpbWVkZWx0YQorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5kdXJhdGlvbgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICBMb25nSU8uZGljdGlmeShvYmouc2Vjb25kcywgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICBJbnRJTy5kaWN0aWZ5KG9iai5taWNyb3NlY29uZHMgKiAxMDAwLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfZHVyYXRpb24sIG51bGxhYmxlKQorICAgIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVhZF9kdXJhdGlvbihjbHMsIGIsIHIpOgorICAgICAgICBzZWNvbmRzID0gci50b09iamVjdChiLCBEYXRhVHlwZS5sb25nLCBGYWxzZSkKKyAgICAgICAgbmFub3MgPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLmludCwgRmFsc2UpCisgICAgICAgIHJldHVybiB0aW1lZGVsdGEoc2Vjb25kcz1zZWNvbmRzLCBtaWNyb3NlY29uZHM9bmFub3MgLyAxMDAwKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYyZDAucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2lvL2dyYXBoc29uVjJkMC5weQppbmRleCBlNDA1YThlLi4yOTA2ZGJhIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2lvL2dyYXBoc29uVjJkMC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2lvL2dyYXBoc29uVjJkMC5weQpAQCAtMzIsNyArMzIsNyBAQAogCiBmcm9tIGdyZW1saW5fcHl0aG9uIGltcG9ydCBzdGF0aWNzCiBmcm9tIGdyZW1saW5fcHl0aG9uLnN0YXRpY3MgaW1wb3J0IEZsb2F0VHlwZSwgRnVuY3Rpb25UeXBlLCBJbnRUeXBlLCBMb25nVHlwZSwgVHlwZVR5cGUsIFNpbmdsZUJ5dGUsIEJ5dGVCdWZmZXJUeXBlLCBTaW5nbGVDaGFyCi1mcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCaW5kaW5nLCBCeXRlY29kZSwgUCwgVHJhdmVyc2FsLCBUcmF2ZXJzZXIsIFRyYXZlcnNhbFN0cmF0ZWd5Citmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCaW5kaW5nLCBCeXRlY29kZSwgUCwgVGV4dFAsIFRyYXZlcnNhbCwgVHJhdmVyc2VyLCBUcmF2ZXJzYWxTdHJhdGVneQogZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuZ3JhcGggaW1wb3J0IEVkZ2UsIFByb3BlcnR5LCBWZXJ0ZXgsIFZlcnRleFByb3BlcnR5LCBQYXRoCiAKICMgV2hlbiB3ZSBmYWxsIGJhY2sgdG8gYSBzdXBlcmNsYXNzJ3Mgc2VyaWFsaXplciwgd2UgaXRlcmF0ZSBvdmVyIHRoaXMgbWFwLgpAQCAtMTQwLDkgKzE0MCw5IEBACiAKICAgICBzeW1ib2xNYXAgPSB7Imdsb2JhbF8iOiAiZ2xvYmFsIiwgImFzXyI6ICJhcyIsICJpbl8iOiAiaW4iLCAiYW5kXyI6ICJhbmQiLAogICAgICAgICAgICAgICAgICAib3JfIjogIm9yIiwgImlzXyI6ICJpcyIsICJub3RfIjogIm5vdCIsICJmcm9tXyI6ICJmcm9tIiwKLSAgICAgICAgICAgICAgICAgInNldF8iOiAic2V0IiwgImxpc3RfIjogImxpc3QiLCAiYWxsXyI6ICJhbGwiLAorICAgICAgICAgICAgICAgICAic2V0XyI6ICJzZXQiLCAibGlzdF8iOiAibGlzdCIsICJhbGxfIjogImFsbCIsICJ3aXRoXyI6ICJ3aXRoIiwKICAgICAgICAgICAgICAgICAgImZpbHRlcl8iOiAiZmlsdGVyIiwgImlkXyI6ICJpZCIsICJtYXhfIjogIm1heCIsICJtaW5fIjogIm1pbiIsICJzdW1fIjogInN1bSJ9Ci0gICAgCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdW5tYW5nbGVLZXl3b3JkKGNscywgc3ltYm9sKToKICAgICAgICAgcmV0dXJuIGNscy5zeW1ib2xNYXAuZ2V0KHN5bWJvbCwgc3ltYm9sKQpAQCAtMjg0LDYgKzI4NCwxNyBAQAogICAgICAgICByZXR1cm4gR3JhcGhTT05VdGlsLnR5cGVkVmFsdWUoIlAiLCBvdXQpCiAKIAorY2xhc3MgVGV4dFBTZXJpYWxpemVyKF9HcmFwaFNPTlR5cGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSBUZXh0UAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBwLCB3cml0ZXIpOgorICAgICAgICBvdXQgPSB7InByZWRpY2F0ZSI6IHAub3BlcmF0b3IsCisgICAgICAgICAgICAgICAidmFsdWUiOiBbd3JpdGVyLnRvRGljdChwLnZhbHVlKSwgd3JpdGVyLnRvRGljdChwLm90aGVyKV0gaWYgcC5vdGhlciBpcyBub3QgTm9uZSBlbHNlCisgICAgICAgICAgICAgICB3cml0ZXIudG9EaWN0KHAudmFsdWUpfQorICAgICAgICByZXR1cm4gR3JhcGhTT05VdGlsLnR5cGVkVmFsdWUoIlRleHRQIiwgb3V0KQorCisKIGNsYXNzIEJpbmRpbmdTZXJpYWxpemVyKF9HcmFwaFNPTlR5cGVJTyk6CiAgICAgcHl0aG9uX3R5cGUgPSBCaW5kaW5nCiAKQEAgLTQ3MSw3ICs0ODIsNyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGRpY3RpZnkoY2xzLCBuLCB3cml0ZXIpOgotICAgICAgICAjIGlmIHdlIGV4Y2VlZCBKYXZhIGxvbmcgcmFuZ2UgdGhlbiB3ZSBuZWVkIGEgQmlnSW50ZWdlciAKKyAgICAgICAgIyBpZiB3ZSBleGNlZWQgSmF2YSBsb25nIHJhbmdlIHRoZW4gd2UgbmVlZCBhIEJpZ0ludGVnZXIKICAgICAgICAgaWYgaXNpbnN0YW5jZShuLCBib29sKToKICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgIGVsaWYgbiA8IC05MjIzMzcyMDM2ODU0Nzc1ODA4IG9yIG4gPiA5MjIzMzcyMDM2ODU0Nzc1ODA3OgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYzZDAucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2lvL2dyYXBoc29uVjNkMC5weQppbmRleCBiZDViMzFlLi5iMTVhY2E2IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2lvL2dyYXBoc29uVjNkMC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2lvL2dyYXBoc29uVjNkMC5weQpAQCAtMzAsNyArMzAsNyBAQAogCiBmcm9tIGdyZW1saW5fcHl0aG9uIGltcG9ydCBzdGF0aWNzCiBmcm9tIGdyZW1saW5fcHl0aG9uLnN0YXRpY3MgaW1wb3J0IEZsb2F0VHlwZSwgRnVuY3Rpb25UeXBlLCBJbnRUeXBlLCBMb25nVHlwZSwgVHlwZVR5cGUsIERpY3RUeXBlLCBMaXN0VHlwZSwgU2V0VHlwZSwgU2luZ2xlQnl0ZSwgQnl0ZUJ1ZmZlclR5cGUsIFNpbmdsZUNoYXIKLWZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJpbmRpbmcsIEJ5dGVjb2RlLCBQLCBUcmF2ZXJzYWwsIFRyYXZlcnNlciwgVHJhdmVyc2FsU3RyYXRlZ3ksIFQKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJpbmRpbmcsIEJ5dGVjb2RlLCBEaXJlY3Rpb24sIFAsIFRleHRQLCBUcmF2ZXJzYWwsIFRyYXZlcnNlciwgVHJhdmVyc2FsU3RyYXRlZ3ksIFQKIGZyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmdyYXBoIGltcG9ydCBFZGdlLCBQcm9wZXJ0eSwgVmVydGV4LCBWZXJ0ZXhQcm9wZXJ0eSwgUGF0aAogCiBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTE0Miw3ICsxNDIsNyBAQAogCiAgICAgc3ltYm9sTWFwID0geyJnbG9iYWxfIjogImdsb2JhbCIsICJhc18iOiAiYXMiLCAiaW5fIjogImluIiwgImFuZF8iOiAiYW5kIiwKICAgICAgICAgICAgICAgICAgIm9yXyI6ICJvciIsICJpc18iOiAiaXMiLCAibm90XyI6ICJub3QiLCAiZnJvbV8iOiAiZnJvbSIsCi0gICAgICAgICAgICAgICAgICJzZXRfIjogInNldCIsICJsaXN0XyI6ICJsaXN0IiwgImFsbF8iOiAiYWxsIiwKKyAgICAgICAgICAgICAgICAgInNldF8iOiAic2V0IiwgImxpc3RfIjogImxpc3QiLCAiYWxsXyI6ICJhbGwiLCAid2l0aF8iOiAid2l0aCIsCiAgICAgICAgICAgICAgICAgICJmaWx0ZXJfIjogImZpbHRlciIsICJpZF8iOiAiaWQiLCAibWF4XyI6ICJtYXgiLCAibWluXyI6ICJtaW4iLCAic3VtXyI6ICJzdW0ifQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0yOTAsNiArMjkwLDE3IEBACiAgICAgICAgIHJldHVybiBHcmFwaFNPTlV0aWwudHlwZWRWYWx1ZSgiUCIsIG91dCkKIAogCitjbGFzcyBUZXh0UFNlcmlhbGl6ZXIoX0dyYXBoU09OVHlwZUlPKToKKyAgICBweXRob25fdHlwZSA9IFRleHRQCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIHAsIHdyaXRlcik6CisgICAgICAgIG91dCA9IHsicHJlZGljYXRlIjogcC5vcGVyYXRvciwKKyAgICAgICAgICAgICAgICJ2YWx1ZSI6IFt3cml0ZXIudG9EaWN0KHAudmFsdWUpLCB3cml0ZXIudG9EaWN0KHAub3RoZXIpXSBpZiBwLm90aGVyIGlzIG5vdCBOb25lIGVsc2UKKyAgICAgICAgICAgICAgIHdyaXRlci50b0RpY3QocC52YWx1ZSl9CisgICAgICAgIHJldHVybiBHcmFwaFNPTlV0aWwudHlwZWRWYWx1ZSgiVGV4dFAiLCBvdXQpCisKKwogY2xhc3MgQmluZGluZ1NlcmlhbGl6ZXIoX0dyYXBoU09OVHlwZUlPKToKICAgICBweXRob25fdHlwZSA9IEJpbmRpbmcKIApAQCAtNDc1LDYgKzQ4NiwyNyBAQAogICAgICAgICByZXR1cm4gbmV3X2RpY3QKIAogCitjbGFzcyBCdWxrU2V0SU8oX0dyYXBoU09OVHlwZUlPKToKKyAgICBncmFwaHNvbl90eXBlID0gImc6QnVsa1NldCIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBsLCByZWFkZXIpOgorICAgICAgICBuZXdfbGlzdCA9IFtdCisKKyAgICAgICAgIyB0aGlzIGFwcHJvYWNoIGJhc2ljYWxseSBtaW1pY3Mgd2hhdCBjdXJyZW50bHkgZXhpc3RlZCBpbiAzLjMuNCBhbmQgcHJpb3IgdmVyc2lvbnMgd2hlcmUgQnVsa1NldCBpcworICAgICAgICAjIGJhc2ljYWxseSBqdXN0IGNvZXJjZWQgdG8gbGlzdC4gdGhlIGxpbWl0YXRpb24gaGVyZSBpcyB0aGF0IGlmIHRoZSB2YWx1ZSBvZiBhIGJ1bGsgZXhjZWVkcyB0aGUgc2l6ZSBvZgorICAgICAgICAjIGEgbGlzdCAoaW50byB0aGUgbG9uZyBzcGFjZSkgdGhlbiBzdHVmZiB3b24ndCB3b3JrIG5pY2UuCisgICAgICAgIGlmIGxlbihsKSA+IDA6CisgICAgICAgICAgICB4ID0gMAorICAgICAgICAgICAgd2hpbGUgeCA8IGxlbihsKToKKyAgICAgICAgICAgICAgICBvYmogPSByZWFkZXIudG9PYmplY3QobFt4XSkKKyAgICAgICAgICAgICAgICBidWxrID0gcmVhZGVyLnRvT2JqZWN0KGxbeCArIDFdKQorICAgICAgICAgICAgICAgIGZvciB5IGluIHJhbmdlKGJ1bGspOgorICAgICAgICAgICAgICAgICAgICBuZXdfbGlzdC5hcHBlbmQob2JqKQorICAgICAgICAgICAgICAgIHggPSB4ICsgMgorICAgICAgICByZXR1cm4gbmV3X2xpc3QKKworCiBjbGFzcyBGbG9hdElPKF9OdW1iZXJJTyk6CiAgICAgcHl0aG9uX3R5cGUgPSBGbG9hdFR5cGUKICAgICBncmFwaHNvbl90eXBlID0gImc6RmxvYXQiCkBAIC02OTIsNiArNzI0LDIxIEBACiAgICAgZGVmIG9iamVjdGlmeShjbHMsIGQsIHJlYWRlcik6CiAgICAgICAgIHJldHVybiBUW2RdCiAKKworY2xhc3MgRGlyZWN0aW9uSU8oX0dyYXBoU09OVHlwZUlPKToKKyAgICBncmFwaHNvbl90eXBlID0gImc6RGlyZWN0aW9uIgorICAgIGdyYXBoc29uX2Jhc2VfdHlwZSA9ICJEaXJlY3Rpb24iCisgICAgcHl0aG9uX3R5cGUgPSBEaXJlY3Rpb24KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgZCwgd3JpdGVyKToKKyAgICAgICAgcmV0dXJuIEdyYXBoU09OVXRpbC50eXBlZFZhbHVlKGNscy5ncmFwaHNvbl9iYXNlX3R5cGUsIGQubmFtZSwgImciKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGQsIHJlYWRlcik6CisgICAgICAgIHJldHVybiBEaXJlY3Rpb25bZF0KKworCiBjbGFzcyBUcmF2ZXJzYWxNZXRyaWNzRGVzZXJpYWxpemVyKF9HcmFwaFNPTlR5cGVJTyk6CiAgICAgZ3JhcGhzb25fdHlwZSA9ICJnOlRyYXZlcnNhbE1ldHJpY3MiCiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9yYWRpc2gvZmVhdHVyZV9zdGVwcy5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9yYWRpc2gvZmVhdHVyZV9zdGVwcy5weQppbmRleCBmZWFjZjIyLi40MGQyNTE4IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vcmFkaXNoL2ZlYXR1cmVfc3RlcHMucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3JhZGlzaC9mZWF0dXJlX3N0ZXBzLnB5CkBAIC0yMiw3ICsyMiw3IEBACiBmcm9tIGdyZW1saW5fcHl0aG9uLnN0cnVjdHVyZS5ncmFwaCBpbXBvcnQgUGF0aAogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmFub255bW91c190cmF2ZXJzYWwgaW1wb3J0IHRyYXZlcnNhbAogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18KLWZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJhcnJpZXIsIENhcmRpbmFsaXR5LCBQLCBQb3AsIFNjb3BlLCBDb2x1bW4sIE9yZGVyLCBEaXJlY3Rpb24sIFQsIFBpY2ssIE9wZXJhdG9yCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCYXJyaWVyLCBDYXJkaW5hbGl0eSwgUCwgVGV4dFAsIFBvcCwgU2NvcGUsIENvbHVtbiwgT3JkZXIsIERpcmVjdGlvbiwgVCwgUGljaywgT3BlcmF0b3IsIElPLCBXaXRoT3B0aW9ucwogZnJvbSByYWRpc2ggaW1wb3J0IGdpdmVuLCB3aGVuLCB0aGVuCiBmcm9tIGhhbWNyZXN0IGltcG9ydCAqCiAKQEAgLTMxLDEwICszMSwxMiBAQAogcmVnZXhfYXMgPSByZS5jb21waWxlKHIiKFsoLixcc10pYXNcKCIpCiByZWdleF9mcm9tID0gcmUuY29tcGlsZShyIihbKC4sXHNdKWZyb21cKCIpCiByZWdleF9nbG9iYWwgPSByZS5jb21waWxlKHIiKFsoLixcc10pZ2xvYmFsIikKK3JlZ2V4X2NhcmRsaXN0ID0gcmUuY29tcGlsZShyIkNhcmRpbmFsaXR5XC5saXN0IikKIHJlZ2V4X2luID0gcmUuY29tcGlsZShyIihbKC4sXHNdKWluXCgiKQogcmVnZXhfaXMgPSByZS5jb21waWxlKHIiKFsoLixcc10paXNcKCIpCiByZWdleF9ub3QgPSByZS5jb21waWxlKHIiKFsoLixcc10pbm90XCgiKQogcmVnZXhfb3IgPSByZS5jb21waWxlKHIiKFsoLixcc10pb3JcKCIpCityZWdleF93aXRoID0gcmUuY29tcGlsZShyIihbKC4sXHNdKXdpdGhcKCIpCiByZWdleF90cnVlID0gcmUuY29tcGlsZShyIih0cnVlKSIpCiByZWdleF9mYWxzZSA9IHJlLmNvbXBpbGUociIoZmFsc2UpIikKIApAQCAtNzksNyArODEsNyBAQAogICAgIGlmIG5vdCBoYXNhdHRyKHN0ZXAuY29udGV4dCwgInRyYXZlcnNhbF9wYXJhbXMiKToKICAgICAgICAgc3RlcC5jb250ZXh0LnRyYXZlcnNhbF9wYXJhbXMgPSB7fQogCi0gICAgc3RlcC5jb250ZXh0LnRyYXZlcnNhbF9wYXJhbXNbcGFyYW1fbmFtZV0gPSBfY29udmVydChwYXJhbSwgc3RlcC5jb250ZXh0KQorICAgIHN0ZXAuY29udGV4dC50cmF2ZXJzYWxfcGFyYW1zW3BhcmFtX25hbWVdID0gX2NvbnZlcnQocGFyYW0ucmVwbGFjZSgnXFwiJywgJyInKSwgc3RlcC5jb250ZXh0KQogCiAKIEBnaXZlbigidGhlIHRyYXZlcnNhbCBvZiIpCkBAIC0xNzEsMTQgKzE3MywxNiBAQAogICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIHN0cikgYW5kIHJlLm1hdGNoKCJeZVxbLipcXSQiLCB2YWwpOiAgICAgICAgICAgIyBwYXJzZSBlZGdlCiAgICAgICAgIHJldHVybiBfX2ZpbmRfY2FjaGVkX2VsZW1lbnQoY3R4LCBncmFwaF9uYW1lLCB2YWxbMjotMV0sICJlIikKICAgICBlbGlmIGlzaW5zdGFuY2UodmFsLCBzdHIpIGFuZCByZS5tYXRjaCgiXm1cWy4qXF0kIiwgdmFsKTogICAgICAgICAgICMgcGFyc2UganNvbiBhcyBhIG1hcAotICAgICAgICByZXR1cm4gX2NvbnZlcnQoanNvbi5sb2Fkcyh2YWxbMjotMV0ucmVwbGFjZSgnXFwiJywgJyInKSksIGN0eCkKKyAgICAgICAgcmV0dXJuIF9jb252ZXJ0KGpzb24ubG9hZHModmFsWzI6LTFdKSwgY3R4KQogICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIHN0cikgYW5kIHJlLm1hdGNoKCJecFxbLipcXSQiLCB2YWwpOiAgICAgICAgICAgIyBwYXJzZSBwYXRoCiAgICAgICAgIHBhdGhfb2JqZWN0cyA9IGxpc3QobWFwKChsYW1iZGEgeDogX2NvbnZlcnQoeCwgY3R4KSksIHZhbFsyOi0xXS5zcGxpdCgiLCIpKSkKICAgICAgICAgcmV0dXJuIFBhdGgoW3NldChbXSldLCBwYXRoX29iamVjdHMpCiAgICAgZWxpZiBpc2luc3RhbmNlKHZhbCwgc3RyKSBhbmQgcmUubWF0Y2goIl5jXFsuKlxdJCIsIHZhbCk6ICAgICAgICAgICAjIHBhcnNlIGxhbWJkYS9jbG9zdXJlCiAgICAgICAgIHJldHVybiBsYW1iZGE6ICh2YWxbMjotMV0sICJncmVtbGluLWdyb292eSIpCi0gICAgZWxpZiBpc2luc3RhbmNlKHZhbCwgc3RyKSBhbmQgcmUubWF0Y2goIl50XFsuKlxdJCIsIHZhbCk6ICAgICAgICAgIyBwYXJzZSBpbnN0YW5jZSBvZiBUIGVudW0KKyAgICBlbGlmIGlzaW5zdGFuY2UodmFsLCBzdHIpIGFuZCByZS5tYXRjaCgiXnRcWy4qXF0kIiwgdmFsKTogICAgICAgICAgICMgcGFyc2UgaW5zdGFuY2Ugb2YgVCBlbnVtCiAgICAgICAgIHJldHVybiBUW3ZhbFsyOi0xXV0KKyAgICBlbGlmIGlzaW5zdGFuY2UodmFsLCBzdHIpIGFuZCByZS5tYXRjaCgiXkRcWy4qXF0kIiwgdmFsKTogICAgICAgICAgICMgcGFyc2UgaW5zdGFuY2Ugb2YgRGlyZWN0aW9uIGVudW0KKyAgICAgICAgcmV0dXJuIERpcmVjdGlvblt2YWxbMjotMV1dCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHZhbAogCkBAIC0yMzQsNiArMjM4LDcgQEAKIGRlZiBfdHJhbnNsYXRlKHRyYXZlcnNhbF8pOgogICAgIHJlcGxhY2VkID0gdHJhdmVyc2FsXy5yZXBsYWNlKCJcbiIsICIiKQogICAgIHJlcGxhY2VkID0gcmVnZXhfYWxsLnN1YihyIlBvcC5hbGxfIiwgcmVwbGFjZWQpCisgICAgcmVwbGFjZWQgPSByZWdleF9jYXJkbGlzdC5zdWIociJDYXJkaW5hbGl0eS5saXN0XyIsIHJlcGxhY2VkKQogICAgIHJlcGxhY2VkID0gcmVnZXhfYW5kLnN1YihyIlwxYW5kXygiLCByZXBsYWNlZCkKICAgICByZXBsYWNlZCA9IHJlZ2V4X2Zyb20uc3ViKHIiXDFmcm9tXygiLCByZXBsYWNlZCkKICAgICByZXBsYWNlZCA9IHJlZ2V4X2dsb2JhbC5zdWIociJcMWdsb2JhbF8iLCByZXBsYWNlZCkKQEAgLTI0Miw2ICsyNDcsNyBAQAogICAgIHJlcGxhY2VkID0gcmVnZXhfbm90LnN1YihyIlwxbm90XygiLCByZXBsYWNlZCkKICAgICByZXBsYWNlZCA9IHJlZ2V4X29yLnN1YihyIlwxb3JfKCIsIHJlcGxhY2VkKQogICAgIHJlcGxhY2VkID0gcmVnZXhfaW4uc3ViKHIiXDFpbl8oIiwgcmVwbGFjZWQpCisgICAgcmVwbGFjZWQgPSByZWdleF93aXRoLnN1YihyIlwxd2l0aF8oIiwgcmVwbGFjZWQpCiAgICAgcmVwbGFjZWQgPSByZWdleF90cnVlLnN1YihyIlRydWUiLCByZXBsYWNlZCkKICAgICByZXR1cm4gcmVnZXhfZmFsc2Uuc3ViKHIiRmFsc2UiLCByZXBsYWNlZCkKIApAQCAtMjU1LDExICsyNjEsMTQgQEAKICAgICAgICAgICJEaXJlY3Rpb24iOiBEaXJlY3Rpb24sCiAgICAgICAgICAiT3JkZXIiOiBPcmRlciwKICAgICAgICAgICJQIjogUCwKKyAgICAgICAgICJUZXh0UCI6IFRleHRQLAorICAgICAgICAgIklPIjogSU8sCiAgICAgICAgICAiUGljayI6IFBpY2ssCiAgICAgICAgICAiUG9wIjogUG9wLAogICAgICAgICAgIlNjb3BlIjogU2NvcGUsCiAgICAgICAgICAiT3BlcmF0b3IiOiBPcGVyYXRvciwKLSAgICAgICAgICJUIjogVH0KKyAgICAgICAgICJUIjogVCwKKyAgICAgICAgICJXaXRoT3B0aW9ucyI6IFdpdGhPcHRpb25zfQogCiAgICAgYi51cGRhdGUocGFyYW1zKQogCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vcmFkaXNoL3RlcnJhaW4ucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vcmFkaXNoL3RlcnJhaW4ucHkKaW5kZXggYTI2ODI1Yi4uOGZhMDFkMDIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9yYWRpc2gvdGVycmFpbi5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vcmFkaXNoL3RlcnJhaW4ucHkKQEAgLTg5LDYgKzg5LDggQEAKIAogICAgIGlmIHdvcmxkLmNvbmZpZy51c2VyX2RhdGFbInNlcmlhbGl6ZXIiXSA9PSAiYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtqc29uIjoKICAgICAgICAgcyA9IHNlcmlhbGl6ZXIuR3JhcGhTT05TZXJpYWxpemVyc1YzZDAoKQorICAgIGVsaWYgd29ybGQuY29uZmlnLnVzZXJfZGF0YVsic2VyaWFsaXplciJdID09ICJhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMCI6CisgICAgICAgIHMgPSBzZXJpYWxpemVyLkdyYXBoQmluYXJ5U2VyaWFsaXplcnNWMSgpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc2VyaWFsaXplciBub3QgZm91bmQgLSAnICsgd29ybGQuY29uZmlnLnVzZXJfZGF0YVsic2VyaWFsaXplciJdKQogCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvY29uZnRlc3QucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvY29uZnRlc3QucHkKaW5kZXggOTYyYTE0OC4uY2MzODU1ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2NvbmZ0ZXN0LnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9jb25mdGVzdC5weQpAQCAtMjgsMTAgKzI4LDE0IEBACiAgICAgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbikKIGZyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLnByb3RvY29sIGltcG9ydCBHcmVtbGluU2VydmVyV1NQcm90b2NvbAogZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIuc2VyaWFsaXplciBpbXBvcnQgKAotICAgIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXIsIEdyYXBoU09OU2VyaWFsaXplcnNWMmQwLAotICAgIEdyYXBoU09OU2VyaWFsaXplcnNWM2QwKQorICAgIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXIsIEdyYXBoU09OU2VyaWFsaXplcnNWMmQwLCBHcmFwaFNPTlNlcmlhbGl6ZXJzVjNkMCwKKyAgICBHcmFwaEJpbmFyeVNlcmlhbGl6ZXJzVjEpCiBmcm9tIGdyZW1saW5fcHl0aG9uLmRyaXZlci50b3JuYWRvLnRyYW5zcG9ydCBpbXBvcnQgVG9ybmFkb1RyYW5zcG9ydAogCisjIGRvY2tlciBHcmVtbGluIFNlcnZlciA9IDE3Mi4xNy4wLjIKK2dyZW1saW5fc2VydmVyX2hvc3QgPSAibG9jYWxob3N0IgorZ3JlbWxpbl9zZXJ2ZXJfdXJsID0gJ3dzOi8vJyArIGdyZW1saW5fc2VydmVyX2hvc3QgKyAnOjQ1OTQwL2dyZW1saW4nCisKIAogQHB5dGVzdC5maXh0dXJlCiBkZWYgY29ubmVjdGlvbihyZXF1ZXN0KToKQEAgLTQxLDcgKzQ1LDcgQEAKICAgICBleGVjdXRvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IoNSkKICAgICBwb29sID0gcXVldWUuUXVldWUoKQogICAgIHRyeToKLSAgICAgICAgY29ubiA9IENvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjQ1OTQxL2dyZW1saW4nLCAnZ21vZGVybicsIHByb3RvY29sLAorICAgICAgICBjb25uID0gQ29ubmVjdGlvbihncmVtbGluX3NlcnZlcl91cmwsICdnbW9kZXJuJywgcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogVG9ybmFkb1RyYW5zcG9ydCgpLCBleGVjdXRvciwgcG9vbCkKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgZXhlY3V0b3Iuc2h1dGRvd24oKQpAQCAtNTcsNyArNjEsNyBAQAogQHB5dGVzdC5maXh0dXJlCiBkZWYgY2xpZW50KHJlcXVlc3QpOgogICAgIHRyeToKLSAgICAgICAgY2xpZW50ID0gQ2xpZW50KCd3czovL2xvY2FsaG9zdDo0NTk0MC9ncmVtbGluJywgJ2dtb2Rlcm4nKQorICAgICAgICBjbGllbnQgPSBDbGllbnQoZ3JlbWxpbl9zZXJ2ZXJfdXJsLCAnZ21vZGVybicpCiAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHB5dGVzdC5za2lwKCdHcmVtbGluIFNlcnZlciBpcyBub3QgcnVubmluZycpCiAgICAgZWxzZToKQEAgLTcwLDcgKzc0LDggQEAKIEBweXRlc3QuZml4dHVyZQogZGVmIHNlY3VyZV9jbGllbnQocmVxdWVzdCk6CiAgICAgdHJ5OgotICAgICAgICBjbGllbnQgPSBDbGllbnQoJ3dzOi8vbG9jYWxob3N0OjQ1OTQxL2dyZW1saW4nLCAnZ21vZGVybicsIHVzZXJuYW1lPSdzdGVwaGVuJywgcGFzc3dvcmQ9J3Bhc3N3b3JkJykKKyAgICAgICAgY2xpZW50ID0gQ2xpZW50KCd3czovLycgKyBncmVtbGluX3NlcnZlcl9ob3N0ICsgJzo0NTk0MS9ncmVtbGluJywgJ2dtb2Rlcm4nLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3N0ZXBoZW4nLCBwYXNzd29yZD0ncGFzc3dvcmQnKQogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBweXRlc3Quc2tpcCgnR3JlbWxpbiBTZXJ2ZXIgaXMgbm90IHJ1bm5pbmcnKQogICAgIGVsc2U6CkBAIC04MCwxNCArODUsMjAgQEAKICAgICAgICAgcmV0dXJuIGNsaWVudAogCiAKLUBweXRlc3QuZml4dHVyZShwYXJhbXM9Wyd2MicsICd2MyddKQorQHB5dGVzdC5maXh0dXJlKHBhcmFtcz1bJ2dyYXBoc29udjInLCAnZ3JhcGhzb252MycsICdncmFwaGJpbmFyeXYxJ10pCiBkZWYgcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6CiAgICAgdHJ5OgotICAgICAgICBpZiByZXF1ZXN0LnBhcmFtID09ICd2Mic6Ci0gICAgICAgICAgICByZW1vdGVfY29ubiA9IERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjQ1OTQwL2dyZW1saW4nLCAnZ21vZGVybicsCisgICAgICAgIGlmIHJlcXVlc3QucGFyYW0gPT0gJ2dyYXBoYmluYXJ5djEnOgorICAgICAgICAgICAgcmVtb3RlX2Nvbm4gPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGdyZW1saW5fc2VydmVyX3VybCwgJ2dtb2Rlcm4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vfc2VyaWFsaXplcj1zZXJpYWxpemVyLkdyYXBoQmluYXJ5U2VyaWFsaXplcnNWMSgpKQorICAgICAgICBlbGlmIHJlcXVlc3QucGFyYW0gPT0gJ2dyYXBoc29udjInOgorICAgICAgICAgICAgcmVtb3RlX2Nvbm4gPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGdyZW1saW5fc2VydmVyX3VybCwgJ2dtb2Rlcm4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vfc2VyaWFsaXplcj1zZXJpYWxpemVyLkdyYXBoU09OU2VyaWFsaXplcnNWMmQwKCkpCisgICAgICAgIGVsaWYgcmVxdWVzdC5wYXJhbSA9PSAnZ3JhcGhzb252Myc6CisgICAgICAgICAgICByZW1vdGVfY29ubiA9IERyaXZlclJlbW90ZUNvbm5lY3Rpb24oZ3JlbWxpbl9zZXJ2ZXJfdXJsLCAnZ21vZGVybicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9zZXJpYWxpemVyPXNlcmlhbGl6ZXIuR3JhcGhTT05TZXJpYWxpemVyc1YzZDAoKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlbW90ZV9jb25uID0gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6NDU5NDAvZ3JlbWxpbicsICdnbW9kZXJuJykKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgc2VyaWFsaXplciBvcHRpb24gLSAiICsgcmVxdWVzdC5wYXJhbSkKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcHl0ZXN0LnNraXAoJ0dyZW1saW4gU2VydmVyIGlzIG5vdCBydW5uaW5nJykKICAgICBlbHNlOgpAQCAtMTAwLDcgKzExMSw4IEBACiBAcHl0ZXN0LmZpeHR1cmUKIGRlZiByZW1vdGVfY29ubmVjdGlvbl92MihyZXF1ZXN0KToKICAgICB0cnk6Ci0gICAgICAgIHJlbW90ZV9jb25uID0gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6NDU5NDAvZ3JlbWxpbicsICdnJywgbWVzc2FnZV9zZXJpYWxpemVyPXNlcmlhbGl6ZXIuR3JhcGhTT05TZXJpYWxpemVyc1YyZDAoKSkKKyAgICAgICAgcmVtb3RlX2Nvbm4gPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGdyZW1saW5fc2VydmVyX3VybCwgJ2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9zZXJpYWxpemVyPXNlcmlhbGl6ZXIuR3JhcGhTT05TZXJpYWxpemVyc1YyZDAoKSkKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcHl0ZXN0LnNraXAoJ0dyZW1saW4gU2VydmVyIGlzIG5vdCBydW5uaW5nJykKICAgICBlbHNlOgpAQCAtMTE4LDMgKzEzMCw4IEBACiBAcHl0ZXN0LmZpeHR1cmUKIGRlZiBncmFwaHNvbl9zZXJpYWxpemVyX3YzKHJlcXVlc3QpOgogICAgIHJldHVybiBHcmFwaFNPTlNlcmlhbGl6ZXJzVjNkMCgpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgZ3JhcGhiaW5hcnlfc2VyaWFsaXplcl92MShyZXF1ZXN0KToKKyAgICByZXR1cm4gR3JhcGhCaW5hcnlTZXJpYWxpemVyc1YxKCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9jbGllbnQucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvZHJpdmVyL3Rlc3RfY2xpZW50LnB5CmluZGV4IGYwZWExNjMuLjQ2ZWI2ZTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9jbGllbnQucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X2NsaWVudC5weQpAQCAtMjEsNyArMjEsOSBAQAogaW1wb3J0IHV1aWQKIGZyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLnByb3RvY29sIGltcG9ydCBHcmVtbGluU2VydmVyRXJyb3IKIGZyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLmNsaWVudCBpbXBvcnQgQ2xpZW50Citmcm9tIGdyZW1saW5fcHl0aG9uLmRyaXZlci5wcm90b2NvbCBpbXBvcnQgR3JlbWxpblNlcnZlckVycm9yCiBmcm9tIGdyZW1saW5fcHl0aG9uLmRyaXZlci5yZXF1ZXN0IGltcG9ydCBSZXF1ZXN0TWVzc2FnZQorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnN0cmF0ZWdpZXMgaW1wb3J0IE9wdGlvbnNTdHJhdGVneQogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18KIGZyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmdyYXBoIGltcG9ydCBHcmFwaAogCkBAIC0zNyw2ICszOSw4IEBACiAgICAgcmVzdWx0cyA9IGZ1dHVyZS5yZXN1bHQoKQogICAgIGFzc2VydCBsZW4ocmVzdWx0cykgPT0gNgogICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdHMsIGxpc3QpCisgICAgYXNzZXJ0IHJlc3VsdHNfc2V0LmRvbmUuZG9uZSgpCisgICAgYXNzZXJ0ICdob3N0JyBpbiByZXN1bHRzX3NldC5zdGF0dXNfYXR0cmlidXRlcwogCiAKIGRlZiB0ZXN0X2NsaWVudF9zaW1wbGVfZXZhbChjbGllbnQpOgpAQCAtNTEsNiArNTUsMTYgQEAKICAgICBhc3NlcnQgbGVuKGNsaWVudC5zdWJtaXQoJ2cuVigpJykuYWxsKCkucmVzdWx0KCkpID09IDYKIAogCitkZWYgdGVzdF9jbGllbnRfZXJyb3IoY2xpZW50KToKKyAgICB0cnk6CisgICAgICAgICMgc2hvdWxkIGZpcmUgYW4gZXhjZXB0aW9uCisgICAgICAgIGNsaWVudC5zdWJtaXQoJzEvMCcpLmFsbCgpLnJlc3VsdCgpCisgICAgICAgIGFzc2VydCBGYWxzZQorICAgIGV4Y2VwdCBHcmVtbGluU2VydmVyRXJyb3IgYXMgZXg6CisgICAgICAgIGFzc2VydCAnZXhjZXB0aW9ucycgaW4gZXguc3RhdHVzX2F0dHJpYnV0ZXMKKyAgICAgICAgYXNzZXJ0ICdzdGFja1RyYWNlJyBpbiBleC5zdGF0dXNfYXR0cmlidXRlcworCisKIGRlZiB0ZXN0X2NsaWVudF9jb25uZWN0aW9uX3Bvb2xfYWZ0ZXJfZXJyb3IoY2xpZW50KToKICAgICAjIE92ZXJ3cml0ZSBmaXh0dXJlIHdpdGggcG9vbF9zaXplPTEgY2xpZW50CiAgICAgY2xpZW50ID0gQ2xpZW50KCd3czovL2xvY2FsaG9zdDo0NTk0MC9ncmVtbGluJywgJ2dtb2Rlcm4nLCBwb29sX3NpemU9MSkKQEAgLTczLDYgKzg3LDIxIEBACiAgICAgYXNzZXJ0IGxlbihyZXN1bHRfc2V0LmFsbCgpLnJlc3VsdCgpKSA9PSA2CiAKIAorZGVmIHRlc3RfY2xpZW50X2J5dGVjb2RlX29wdGlvbnMoY2xpZW50KToKKyAgICAjIHNtb2tlIHRlc3QgdG8gdmFsaWRhdGUgc2VyaWFsaXphdGlvbiBvZiBPcHRpb25zU3RyYXRlZ3kuIG5vIHdheSB0byByZWFsbHkgdmFsaWRhdGUgdGhpcyBmcm9tIGFuIGludGVncmF0aW9uCisgICAgIyB0ZXN0IHBlcnNwZWN0aXZlIGJlY2F1c2UgdGhlcmUncyBubyB3YXkgdG8gYWNjZXNzIHRoZSBpbnRlcm5hbHMgb2YgdGhlIHN0cmF0ZWd5IHZpYSBieXRlY29kZQorICAgIGcgPSBHcmFwaCgpLnRyYXZlcnNhbCgpCisgICAgdCA9IGcud2l0aFN0cmF0ZWdpZXMoT3B0aW9uc1N0cmF0ZWd5KG9wdGlvbnM9eyJ4IjogInRlc3QiLCAieSI6IFRydWV9KSkuVigpCisgICAgbWVzc2FnZSA9IFJlcXVlc3RNZXNzYWdlKCd0cmF2ZXJzYWwnLCAnYnl0ZWNvZGUnLCB7J2dyZW1saW4nOiB0LmJ5dGVjb2RlLCAnYWxpYXNlcyc6IHsnZyc6ICdnbW9kZXJuJ319KQorICAgIHJlc3VsdF9zZXQgPSBjbGllbnQuc3VibWl0KG1lc3NhZ2UpCisgICAgYXNzZXJ0IGxlbihyZXN1bHRfc2V0LmFsbCgpLnJlc3VsdCgpKSA9PSA2CisgICAgIyMKKyAgICB0ID0gZy53aXRoXygieCIsICJ0ZXN0Iikud2l0aF8oInkiLCBUcnVlKS5WKCkKKyAgICBtZXNzYWdlID0gUmVxdWVzdE1lc3NhZ2UoJ3RyYXZlcnNhbCcsICdieXRlY29kZScsIHsnZ3JlbWxpbic6IHQuYnl0ZWNvZGUsICdhbGlhc2VzJzogeydnJzogJ2dtb2Rlcm4nfX0pCisgICAgcmVzdWx0X3NldCA9IGNsaWVudC5zdWJtaXQobWVzc2FnZSkKKyAgICBhc3NlcnQgbGVuKHJlc3VsdF9zZXQuYWxsKCkucmVzdWx0KCkpID09IDYKKworCiBkZWYgdGVzdF9pdGVyYXRlX3Jlc3VsdF9zZXQoY2xpZW50KToKICAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKQogICAgIHQgPSBnLlYoKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X2RyaXZlcl9yZW1vdGVfY29ubmVjdGlvbi5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9kcml2ZXJfcmVtb3RlX2Nvbm5lY3Rpb24ucHkKaW5kZXggNjQzYWU2ZS4uNDRkOGRlYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X2RyaXZlcl9yZW1vdGVfY29ubmVjdGlvbi5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvZHJpdmVyL3Rlc3RfZHJpdmVyX3JlbW90ZV9jb25uZWN0aW9uLnB5CkBAIC0yNyw2ICsyNyw3IEBACiAgICAgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbikKIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFRyYXZlcnNlcgogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgVHJhdmVyc2FsU3RyYXRlZ3kKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJpbmRpbmdzCiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBQCiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuZ3JhcGhfdHJhdmVyc2FsIGltcG9ydCBfXwogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmFub255bW91c190cmF2ZXJzYWwgaW1wb3J0IHRyYXZlcnNhbApAQCAtMzksNyArNDAsNiBAQAogY2xhc3MgVGVzdERyaXZlclJlbW90ZUNvbm5lY3Rpb24ob2JqZWN0KToKICAgICBkZWYgdGVzdF90cmF2ZXJzYWxzKHNlbGYsIHJlbW90ZV9jb25uZWN0aW9uKToKICAgICAgICAgc3RhdGljcy5sb2FkX3N0YXRpY3MoZ2xvYmFscygpKQotICAgICAgICBhc3NlcnQgInJlbW90ZWNvbm5lY3Rpb25bd3M6Ly9sb2NhbGhvc3Q6NDU5NDAvZ3JlbWxpbixnbW9kZXJuXSIgPT0gc3RyKHJlbW90ZV9jb25uZWN0aW9uKQogICAgICAgICBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShyZW1vdGVfY29ubmVjdGlvbikKIAogICAgICAgICBhc3NlcnQgbG9uZyg2KSA9PSBnLlYoKS5jb3VudCgpLnRvTGlzdCgpWzBdCkBAIC02MSw4ICs2MSw3IEBACiAgICAgICAgIGFzc2VydCA0ID09IGcuVigpWzI6XS5jb3VudCgpLm5leHQoKQogICAgICAgICBhc3NlcnQgMiA9PSBnLlYoKVs6Ml0uY291bnQoKS5uZXh0KCkKICAgICAgICAgIyAjCi0gICAgICAgIHJlc3VsdHMgPSBnLndpdGhTaWRlRWZmZWN0KCdhJywgWydqb3NoJywgJ3BldGVyJ10pLlYoMSkub3V0KCdjcmVhdGVkJykuaW5fKCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykud2hlcmUoCi0gICAgICAgICAgICB3aXRoaW4oJ2EnKSkudG9MaXN0KCkKKyAgICAgICAgcmVzdWx0cyA9IGcud2l0aFNpZGVFZmZlY3QoJ2EnLCBbJ2pvc2gnLCAncGV0ZXInXSkuVigxKS5vdXQoJ2NyZWF0ZWQnKS5pbl8oJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKS53aGVyZShQLndpdGhpbignYScpKS50b0xpc3QoKQogICAgICAgICBhc3NlcnQgMiA9PSBsZW4ocmVzdWx0cykKICAgICAgICAgYXNzZXJ0ICdqb3NoJyBpbiByZXN1bHRzCiAgICAgICAgIGFzc2VydCAncGV0ZXInIGluIHJlc3VsdHMKQEAgLTg3LDYgKzg2LDEwIEBACiAgICAgICAgIGFzc2VydCAnbWFya28nIGluIHJlc3VsdHMKICAgICAgICAgYXNzZXJ0ICd2YWRhcycgaW4gcmVzdWx0cwogICAgICAgICAjICMKKyAgICAgICAgcmVzdWx0cyA9IGcuVigpLmhhcygncGVyc29uJywgJ25hbWUnLCAnbWFya28nKS5tYXAobGFtYmRhOiAoIml0LmdldCgpLnZhbHVlKCduYW1lJykiLCAiZ3JlbWxpbi1ncm9vdnkiKSkudG9MaXN0KCkKKyAgICAgICAgYXNzZXJ0IDEgPT0gbGVuKHJlc3VsdHMpCisgICAgICAgIGFzc2VydCAnbWFya28nIGluIHJlc3VsdHMKKyAgICAgICAgIyAjCiAgICAgICAgICMgdGhpcyB0ZXN0IGp1c3QgdmFsaWRhdGVzIHRoYXQgdGhlIHVuZGVyc2NvcmVkIHZlcnNpb25zIG9mIHN0ZXBzIGNvbmZsaWN0aW5nIHdpdGggR3JlbWxpbiB3b3JrCiAgICAgICAgICMgcHJvcGVybHkgYW5kIGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIG9sZCBzdGVwcyBhcmUgcmVtb3ZlZCAtIFRJTktFUlBPUC0yMjcyCiAgICAgICAgIHJlc3VsdHMgPSBnLlYoKS5maWx0ZXJfKF9fLnZhbHVlcygnYWdlJykuc3VtXygpLmFuZF8oCkBAIC05NCw3ICs5Nyw3IEBACiAgICAgICAgIGFzc2VydCAxID09IHJlc3VsdHMKICAgICAgICAgIyAjCiAgICAgICAgICMgdGVzdCBiaW5kaW5nIGluIFAKLSAgICAgICAgcmVzdWx0cyA9IGcuVigpLmhhcygncGVyc29uJywgJ2FnZScsICgneCcsIGx0KDMwKSkpLmNvdW50KCkubmV4dCgpCisgICAgICAgIHJlc3VsdHMgPSBnLlYoKS5oYXMoJ3BlcnNvbicsICdhZ2UnLCBCaW5kaW5ncy5vZigneCcsIGx0KDMwKSkpLmNvdW50KCkubmV4dCgpCiAgICAgICAgIGFzc2VydCAyID09IHJlc3VsdHMKIAogCkBAIC0xMTEsNyArMTE0LDYgQEAKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdGlvbihzZWxmLCByZW1vdGVfY29ubmVjdGlvbik6CiAgICAgICAgIHN0YXRpY3MubG9hZF9zdGF0aWNzKGdsb2JhbHMoKSkKLSAgICAgICAgYXNzZXJ0ICJyZW1vdGVjb25uZWN0aW9uW3dzOi8vbG9jYWxob3N0OjQ1OTQwL2dyZW1saW4sZ21vZGVybl0iID09IHN0cihyZW1vdGVfY29ubmVjdGlvbikKICAgICAgICAgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUocmVtb3RlX2Nvbm5lY3Rpb24pCiAKICAgICAgICAgdCA9IGcuVigpLmNvdW50KCkKQEAgLTE0OSwxMSArMTUxLDExIEBACiAKICAgICBkZWYgdGVzdF9zdHJhdGVnaWVzKHNlbGYsIHJlbW90ZV9jb25uZWN0aW9uKToKICAgICAgICAgc3RhdGljcy5sb2FkX3N0YXRpY3MoZ2xvYmFscygpKQotICAgICAgICAjCiAgICAgICAgIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKS4gXAogICAgICAgICAgICAgd2l0aFN0cmF0ZWdpZXMoVHJhdmVyc2FsU3RyYXRlZ3koIlN1YmdyYXBoU3RyYXRlZ3kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJ2ZXJ0aWNlcyI6IF9fLmhhc0xhYmVsKCJwZXJzb24iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWRnZXMiOiBfXy5oYXNMYWJlbCgiY3JlYXRlZCIpfSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVkZ2VzIjogX18uaGFzTGFiZWwoImNyZWF0ZWQiKX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TdWJncmFwaFN0cmF0ZWd5IikpCiAgICAgICAgIGFzc2VydCA0ID09IGcuVigpLmNvdW50KCkubmV4dCgpCiAgICAgICAgIGFzc2VydCAwID09IGcuRSgpLmNvdW50KCkubmV4dCgpCiAgICAgICAgIGFzc2VydCAxID09IGcuVigpLmxhYmVsKCkuZGVkdXAoKS5jb3VudCgpLm5leHQoKQpAQCAtMjE1LDggKzIxNywxMCBAQAogICAgICAgICBhc3NlcnQgMiA9PSBsZW4obSkKICAgICAgICAgYXNzZXJ0IDMgPT0gbVsibG9wIl0KICAgICAgICAgYXNzZXJ0IDEgPT0gbVsicmlwcGxlIl0KLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobVsibG9wIl0sIGxvbmcpCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1bInJpcHBsZSJdLCBsb25nKQorCisgICAgICAgICMgY2hlY2sgc3RhdHVzIGF0dHJpYnV0ZXMKKyAgICAgICAgYXNzZXJ0ICJob3N0IiBpbiB0LnNpZGVfZWZmZWN0cy5zdGF0dXNfYXR0cmlidXRlcworCiAgICAgICAgICMjCiAgICAgICAgIHQgPSBnLlYoKS5vdXQoImNyZWF0ZWQiKS5ncm91cENvdW50KCJtIikuYnkoIm5hbWUiKS5uYW1lLmFnZ3JlZ2F0ZSgibiIpCiAgICAgICAgIHJlc3VsdHMgPSB0LnRvU2V0KCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9zZXJpYWxpemVyLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X3NlcmlhbGl6ZXIucHkKaW5kZXggZGEyYWJmMy4uODQzYWY5NyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X3NlcmlhbGl6ZXIucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X3NlcmlhbGl6ZXIucHkKQEAgLTE4LDIwICsxOCwyOCBAQAogIwogZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuaW8gaW1wb3J0IGdyYXBoc29uVjJkMAogZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuaW8gaW1wb3J0IGdyYXBoc29uVjNkMAorZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuaW8gaW1wb3J0IGdyYXBoYmluYXJ5VjEKIAogCiBfX2F1dGhvcl9fID0gJ0RhdmlkIE0uIEJyb3duJwogCiAKLWRlZiB0ZXN0X2dyYXBoc29uX3NlcmlhbHppZXJfdjIoZ3JhcGhzb25fc2VyaWFsaXplcl92Mik6CitkZWYgdGVzdF9ncmFwaHNvbl9zZXJpYWxpemVyX3YyKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjIpOgogICAgIGFzc2VydCBncmFwaHNvbl9zZXJpYWxpemVyX3YyLnZlcnNpb24gPT0gYiJhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12Mi4wK2pzb24iCiAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JhcGhzb25fc2VyaWFsaXplcl92Mi5fZ3JhcGhzb25fcmVhZGVyLCBncmFwaHNvblYyZDAuR3JhcGhTT05SZWFkZXIpCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JhcGhzb25fc2VyaWFsaXplcl92Mi5zdGFuZGFyZC5fZ3JhcGhzb25fd3JpdGVyLCBncmFwaHNvblYyZDAuR3JhcGhTT05Xcml0ZXIpCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JhcGhzb25fc2VyaWFsaXplcl92Mi50cmF2ZXJzYWwuX2dyYXBoc29uX3dyaXRlciwgZ3JhcGhzb25WMmQwLkdyYXBoU09OV3JpdGVyKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjIuc3RhbmRhcmQuX3dyaXRlciwgZ3JhcGhzb25WMmQwLkdyYXBoU09OV3JpdGVyKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjIudHJhdmVyc2FsLl93cml0ZXIsIGdyYXBoc29uVjJkMC5HcmFwaFNPTldyaXRlcikKIAogCi1kZWYgdGVzdF9ncmFwaHNvbl9zZXJpYWx6aWVyX3YzKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjMpOgorZGVmIHRlc3RfZ3JhcGhzb25fc2VyaWFsaXplcl92MyhncmFwaHNvbl9zZXJpYWxpemVyX3YzKToKICAgICBhc3NlcnQgZ3JhcGhzb25fc2VyaWFsaXplcl92My52ZXJzaW9uID09IGIiYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtqc29uIgogICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjMuX2dyYXBoc29uX3JlYWRlciwgZ3JhcGhzb25WM2QwLkdyYXBoU09OUmVhZGVyKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjMuc3RhbmRhcmQuX2dyYXBoc29uX3dyaXRlciwgZ3JhcGhzb25WM2QwLkdyYXBoU09OV3JpdGVyKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjMudHJhdmVyc2FsLl9ncmFwaHNvbl93cml0ZXIsIGdyYXBoc29uVjNkMC5HcmFwaFNPTldyaXRlcikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaHNvbl9zZXJpYWxpemVyX3YzLnN0YW5kYXJkLl93cml0ZXIsIGdyYXBoc29uVjNkMC5HcmFwaFNPTldyaXRlcikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaHNvbl9zZXJpYWxpemVyX3YzLnRyYXZlcnNhbC5fd3JpdGVyLCBncmFwaHNvblYzZDAuR3JhcGhTT05Xcml0ZXIpCisKKworZGVmIHRlc3RfZ3JhcGhiaW5hcnlfc2VyaWFsaXplcl92MShncmFwaGJpbmFyeV9zZXJpYWxpemVyX3YxKToKKyAgICBhc3NlcnQgZ3JhcGhiaW5hcnlfc2VyaWFsaXplcl92MS52ZXJzaW9uID09IGIiYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAiCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JhcGhiaW5hcnlfc2VyaWFsaXplcl92MS5fZ3JhcGhiaW5hcnlfcmVhZGVyLCBncmFwaGJpbmFyeVYxLkdyYXBoQmluYXJ5UmVhZGVyKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoYmluYXJ5X3NlcmlhbGl6ZXJfdjEuc3RhbmRhcmQuX3dyaXRlciwgZ3JhcGhiaW5hcnlWMS5HcmFwaEJpbmFyeVdyaXRlcikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaGJpbmFyeV9zZXJpYWxpemVyX3YxLnRyYXZlcnNhbC5fd3JpdGVyLCBncmFwaGJpbmFyeVYxLkdyYXBoQmluYXJ5V3JpdGVyKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3Byb2Nlc3MvdGVzdF9zdHJhdGVnaWVzLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3Byb2Nlc3MvdGVzdF9zdHJhdGVnaWVzLnB5CmluZGV4IDgyZjI0NjMuLjRiMDNmOGEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9wcm9jZXNzL3Rlc3Rfc3RyYXRlZ2llcy5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvcHJvY2Vzcy90ZXN0X3N0cmF0ZWdpZXMucHkKQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgICAgIGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnNbMF1bMV0pICAjIGV2ZW4gdGhvdWdoIGRpZmZlcmVudCBjb25mcywgc2FtZSBzdHJhdGVneQogICAgICAgICBhc3NlcnQgMCA9PSBsZW4oZy50cmF2ZXJzYWxfc3RyYXRlZ2llcy50cmF2ZXJzYWxfc3RyYXRlZ2llcykgICMgdGhlc2Ugc3RyYXRlZ2llcyBhcmUgcHJveGllcwogICAgICAgICAjIyMKLSAgICAgICAgYnl0ZWNvZGUgPSBnLndpdGhTdHJhdGVnaWVzKFN1YmdyYXBoU3RyYXRlZ3kodmVydGljZXM9X18uaGFzKCJuYW1lIiwibWFya28iKSkpLmJ5dGVjb2RlCisgICAgICAgIGJ5dGVjb2RlID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzPV9fLmhhcygibmFtZSIsICJtYXJrbyIpKSkuYnl0ZWNvZGUKICAgICAgICAgYXNzZXJ0IDEgPT0gbGVuKGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnMpCiAgICAgICAgIGFzc2VydCAyID09IGxlbihieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdKQogICAgICAgICBhc3NlcnQgIndpdGhTdHJhdGVnaWVzIiA9PSBieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdWzBdCkBAIC05OCwzICs5OCwxMyBAQAogICAgICAgICBzdHJhdGVneSA9IGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnNbMF1bMV0KICAgICAgICAgYXNzZXJ0IDEgPT0gbGVuKHN0cmF0ZWd5LmNvbmZpZ3VyYXRpb24pCiAgICAgICAgIGFzc2VydCBfXy5oYXMoIm5hbWUiLCJtYXJrbyIpID09IHN0cmF0ZWd5LmNvbmZpZ3VyYXRpb25bInZlcnRpY2VzIl0KKyAgICAgICAgIyMjCisgICAgICAgIGJ5dGVjb2RlID0gZy53aXRoU3RyYXRlZ2llcyhPcHRpb25zU3RyYXRlZ3kob3B0aW9ucz17IngiOiAidGVzdCIsICJ5IjogVHJ1ZX0pKS5ieXRlY29kZQorICAgICAgICBhc3NlcnQgMSA9PSBsZW4oYnl0ZWNvZGUuc291cmNlX2luc3RydWN0aW9ucykKKyAgICAgICAgYXNzZXJ0IDIgPT0gbGVuKGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnNbMF0pCisgICAgICAgIGFzc2VydCAid2l0aFN0cmF0ZWdpZXMiID09IGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnNbMF1bMF0KKyAgICAgICAgYXNzZXJ0IE9wdGlvbnNTdHJhdGVneSgpID09IGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnNbMF1bMV0KKyAgICAgICAgc3RyYXRlZ3kgPSBieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdWzFdCisgICAgICAgIGFzc2VydCAyID09IGxlbihzdHJhdGVneS5jb25maWd1cmF0aW9uKQorICAgICAgICBhc3NlcnQgInRlc3QiID09IHN0cmF0ZWd5LmNvbmZpZ3VyYXRpb25bIngiXQorICAgICAgICBhc3NlcnQgc3RyYXRlZ3kuY29uZmlndXJhdGlvblsieSJdCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvcHJvY2Vzcy90ZXN0X3RyYXZlcnNhbC5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9wcm9jZXNzL3Rlc3RfdHJhdmVyc2FsLnB5CmluZGV4IDE5OGQxMWIuLjViOWI2MTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9wcm9jZXNzL3Rlc3RfdHJhdmVyc2FsLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9wcm9jZXNzL3Rlc3RfdHJhdmVyc2FsLnB5CkBAIC0yMiw3ICsyMiw3IEBACiBmcm9tIGdyZW1saW5fcHl0aG9uLnN0cnVjdHVyZS5ncmFwaCBpbXBvcnQgR3JhcGgKIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5hbm9ueW1vdXNfdHJhdmVyc2FsIGltcG9ydCB0cmF2ZXJzYWwKIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFAKLWZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJpbmRpbmcKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJpbmRpbmcsIEJpbmRpbmdzCiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuZ3JhcGhfdHJhdmVyc2FsIGltcG9ydCBfXwogCiAKQEAgLTUzLDcgKzUzLDEwIEBACiAgICAgICAgIGFzc2VydCAxID09IGxlbihieXRlY29kZS5zdGVwX2luc3RydWN0aW9uc1sxXSkKICAgICAgICAgYXNzZXJ0IDIgPT0gbGVuKGJ5dGVjb2RlLnN0ZXBfaW5zdHJ1Y3Rpb25zWzJdKQogICAgICAgICAjIwotICAgICAgICBieXRlY29kZSA9IGcuVigoJ2EnLFsxLDIsM10pKS5vdXQoKCdiJywnY3JlYXRlZCcpKS53aGVyZShfXy5pbl8oKCdjJywnY3JlYXRlZCcpLCgnZCcsJ2tub3dzJykpLmNvdW50KCkuaXNfKCgnZScsUC5ndCgyKSkpKS5ieXRlY29kZQorICAgICAgICBieXRlY29kZSA9IGcuVihCaW5kaW5ncy5vZignYScsIFsxLDIsM10pKSBcCisgICAgICAgICAgICAub3V0KEJpbmRpbmdzLm9mKCdiJywnY3JlYXRlZCcpKSBcCisgICAgICAgICAgICAud2hlcmUoX18uaW5fKEJpbmRpbmdzLm9mKCdjJywnY3JlYXRlZCcpLCBCaW5kaW5ncy5vZignZCcsJ2tub3dzJykpIFwKKyAgICAgICAgICAgIC5jb3VudCgpLmlzXyhCaW5kaW5ncy5vZignZScsUC5ndCgyKSkpKS5ieXRlY29kZQogICAgICAgICBhc3NlcnQgNSA9PSBsZW4oYnl0ZWNvZGUuYmluZGluZ3Mua2V5cygpKQogICAgICAgICBhc3NlcnQgWzEsMiwzXSA9PSBieXRlY29kZS5iaW5kaW5nc1snYSddCiAgICAgICAgIGFzc2VydCAnY3JlYXRlZCcgPT0gYnl0ZWNvZGUuYmluZGluZ3NbJ2InXQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2Z1bmN0aW9uYWxpdHlpby5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9mdW5jdGlvbmFsaXR5aW8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhNjJhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9mdW5jdGlvbmFsaXR5aW8ucHkKQEAgLTAsMCArMSw5NyBAQAorJycnCitMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCitvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKK2Rpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCityZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCit0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCit3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCitzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCitLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKK3NwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKK3VuZGVyIHRoZSBMaWNlbnNlLgorJycnCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IHV1aWQKKworZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIuc2VyaWFsaXplciBpbXBvcnQgR3JhcGhTT05TZXJpYWxpemVyc1YyZDAKK2Zyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmdyYXBoIGltcG9ydCBHcmFwaAorZnJvbSBncmVtbGluX3B5dGhvbi5zdGF0aWNzIGltcG9ydCAqCisKKworZGVmIHRlc3RfdGltZXN0YW1wKHJlbW90ZV9jb25uZWN0aW9uKToKKyAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKQorICAgIHRzID0gdGltZXN0YW1wKDE0ODE3NTAwNzYyOTUgLyAxMDAwKQorICAgIHJlc3AgPSBnLmFkZFYoJ3Rlc3RfdmVydGV4JykucHJvcGVydHkoJ3RzJywgdHMpCisgICAgcmVzcCA9IHJlc3AudG9MaXN0KCkKKyAgICB2aWQgPSByZXNwWzBdLmlkCisgICAgdHJ5OgorICAgICAgICB0c19wcm9wID0gZy5WKHZpZCkucHJvcGVydGllcygndHMnKS50b0xpc3QoKVswXQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0c19wcm9wLnZhbHVlLCB0aW1lc3RhbXApCisgICAgICAgIGFzc2VydCB0c19wcm9wLnZhbHVlID09IHRzCisgICAgZmluYWxseToKKyAgICAgICAgZy5WKHZpZCkuZHJvcCgpLml0ZXJhdGUoKQorCisKK2RlZiB0ZXN0X2RhdGV0aW1lKHJlbW90ZV9jb25uZWN0aW9uKToKKyAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKQorICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgxNDgxNzUwMDc2Mjk1IC8gMTAwMCkKKyAgICByZXNwID0gZy5hZGRWKCd0ZXN0X3ZlcnRleCcpLnByb3BlcnR5KCdkdCcsIGR0KS50b0xpc3QoKQorICAgIHZpZCA9IHJlc3BbMF0uaWQKKyAgICB0cnk6CisgICAgICAgIGR0X3Byb3AgPSBnLlYodmlkKS5wcm9wZXJ0aWVzKCdkdCcpLnRvTGlzdCgpWzBdCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGR0X3Byb3AudmFsdWUsIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICBhc3NlcnQgZHRfcHJvcC52YWx1ZSA9PSBkdAorICAgIGZpbmFsbHk6CisgICAgICAgIGcuVih2aWQpLmRyb3AoKS5pdGVyYXRlKCkKKworCitkZWYgdGVzdF91dWlkKHJlbW90ZV9jb25uZWN0aW9uKToKKyAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKQorICAgIHVpZCA9IHV1aWQuVVVJRCgiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IikKKyAgICByZXNwID0gZy5hZGRWKCd0ZXN0X3ZlcnRleCcpLnByb3BlcnR5KCd1dWlkJywgdWlkKS50b0xpc3QoKQorICAgIHZpZCA9IHJlc3BbMF0uaWQKKyAgICB0cnk6CisgICAgICAgIHVpZF9wcm9wID0gZy5WKHZpZCkucHJvcGVydGllcygndXVpZCcpLnRvTGlzdCgpWzBdCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHVpZF9wcm9wLnZhbHVlLCB1dWlkLlVVSUQpCisgICAgICAgIGFzc2VydCB1aWRfcHJvcC52YWx1ZSA9PSB1aWQKKyAgICBmaW5hbGx5OgorICAgICAgICBnLlYodmlkKS5kcm9wKCkuaXRlcmF0ZSgpCisKKworZGVmIHRlc3Rfb2RkX2JpdHMocmVtb3RlX2Nvbm5lY3Rpb24pOgorICAgIGlmIG5vdCBpc2luc3RhbmNlKHJlbW90ZV9jb25uZWN0aW9uLl9jbGllbnQuX21lc3NhZ2Vfc2VyaWFsaXplciwgR3JhcGhTT05TZXJpYWxpemVyc1YyZDApOgorICAgICAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKQorICAgICAgICBjaGFyX2xvd2VyID0gc3RyLl9fbmV3X18oU2luZ2xlQ2hhciwgY2hyKDc4KSkKKyAgICAgICAgcmVzcCA9IGcuYWRkVigndGVzdF92ZXJ0ZXgnKS5wcm9wZXJ0eSgnY2hhcl9sb3dlcicsIGNoYXJfbG93ZXIpLnRvTGlzdCgpCisgICAgICAgIHZpZCA9IHJlc3BbMF0uaWQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdiA9IGcuVih2aWQpLnZhbHVlcygnY2hhcl9sb3dlcicpLnRvTGlzdCgpWzBdCisgICAgICAgICAgICBhc3NlcnQgdiA9PSBjaGFyX2xvd2VyCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBnLlYodmlkKS5kcm9wKCkuaXRlcmF0ZSgpCisKKyAgICAgICAgaWYgc2l4LlBZMzoKKyAgICAgICAgICAgIGNoYXJfdXBwZXIgPSBzdHIuX19uZXdfXyhTaW5nbGVDaGFyLCBjaHIoNTczNDQpKQorICAgICAgICAgICAgcmVzcCA9IGcuYWRkVigndGVzdF92ZXJ0ZXgnKS5wcm9wZXJ0eSgnY2hhcl91cHBlcicsIGNoYXJfdXBwZXIpLnRvTGlzdCgpCisgICAgICAgICAgICB2aWQgPSByZXNwWzBdLmlkCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdiA9IGcuVih2aWQpLnZhbHVlcygnY2hhcl91cHBlcicpLnRvTGlzdCgpWzBdCisgICAgICAgICAgICAgICAgYXNzZXJ0IHYgPT0gY2hhcl91cHBlcgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBnLlYodmlkKS5kcm9wKCkuaXRlcmF0ZSgpCisgICAgICAgICAgICAgICAgCisgICAgICAgIGR1ciA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTEwMDAsIG1pY3Jvc2Vjb25kcz0xMDAwKQorICAgICAgICByZXNwID0gZy5hZGRWKCd0ZXN0X3ZlcnRleCcpLnByb3BlcnR5KCdkdXInLCBkdXIpLnRvTGlzdCgpCisgICAgICAgIHZpZCA9IHJlc3BbMF0uaWQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdiA9IGcuVih2aWQpLnZhbHVlcygnZHVyJykudG9MaXN0KClbMF0KKyAgICAgICAgICAgIGFzc2VydCB2ID09IGR1cgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZy5WKHZpZCkuZHJvcCgpLml0ZXJhdGUoKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoYmluYXJ5VjEucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZ3JhcGhiaW5hcnlWMS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjMyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoYmluYXJ5VjEucHkKQEAgLTAsMCArMSwyMTUgQEAKKyIiIgorTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCitkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQordG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQord2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCitzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCit1bmRlciB0aGUgTGljZW5zZS4KKyIiIgorCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBjYWxlbmRhcgoraW1wb3J0IHRpbWUKK2ltcG9ydCB1dWlkCitpbXBvcnQgbWF0aAorZnJvbSBkZWNpbWFsIGltcG9ydCAqCisKK2Zyb20gbW9jayBpbXBvcnQgTW9jaworCitpbXBvcnQgc2l4CisKK2Zyb20gZ3JlbWxpbl9weXRob24uc3RhdGljcyBpbXBvcnQgdGltZXN0YW1wLCBsb25nLCBTaW5nbGVCeXRlLCBTaW5nbGVDaGFyLCBCeXRlQnVmZmVyVHlwZQorZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuZ3JhcGggaW1wb3J0IFZlcnRleCwgRWRnZSwgUHJvcGVydHksIFZlcnRleFByb3BlcnR5LCBHcmFwaCwgUGF0aAorZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhiaW5hcnlWMSBpbXBvcnQgR3JhcGhCaW5hcnlXcml0ZXIsIEdyYXBoQmluYXJ5UmVhZGVyLCBEYXRhVHlwZQorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgUCwgQmFycmllciwgQmluZGluZywgQnl0ZWNvZGUKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5zdHJhdGVnaWVzIGltcG9ydCBTdWJncmFwaFN0cmF0ZWd5Citmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuZ3JhcGhfdHJhdmVyc2FsIGltcG9ydCBfXworCisKK2NsYXNzIFRlc3RHcmFwaEJpbmFyeVJlYWRlcihvYmplY3QpOgorICAgIGdyYXBoYmluYXJ5X3JlYWRlciA9IEdyYXBoQmluYXJ5UmVhZGVyKCkKKworCitjbGFzcyBUZXN0R3JhcGhTT05Xcml0ZXIob2JqZWN0KToKKyAgICBncmFwaGJpbmFyeV93cml0ZXIgPSBHcmFwaEJpbmFyeVdyaXRlcigpCisgICAgZ3JhcGhiaW5hcnlfcmVhZGVyID0gR3JhcGhCaW5hcnlSZWFkZXIoKQorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICB4ID0gMTAwCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfbG9uZyhzZWxmKToKKyAgICAgICAgeCA9IGxvbmcoMTAwKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2Zsb2F0KHNlbGYpOgorICAgICAgICB4ID0gZmxvYXQoMTAwLjAwMSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICAgICAgeCA9IGZsb2F0KCduYW4nKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgbWF0aC5pc25hbihvdXRwdXQpCisKKyAgICAgICAgeCA9IGZsb2F0KCctaW5mJykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IG1hdGguaXNpbmYob3V0cHV0KSBhbmQgb3V0cHV0IDwgMAorCisgICAgICAgIHggPSBmbG9hdCgnaW5mJykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IG1hdGguaXNpbmYob3V0cHV0KSBhbmQgb3V0cHV0ID4gMAorCisgICAgZGVmIHRlc3RfZG91YmxlKHNlbGYpOgorICAgICAgICB4ID0gMTAwLjAwMQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2RhdGUoc2VsZik6CisgICAgICAgIHggPSBkYXRldGltZS5kYXRldGltZSgyMDE2LCAxMiwgMTQsIDE2LCAxNCwgMzYsIDI5NTAwMCkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF90aW1lc3RhbXAoc2VsZik6CisgICAgICAgIHggPSB0aW1lc3RhbXAoMTQ4MTc1MDA3NjI5NSAvIDEwMDApCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgorICAgICAgICB4ID0gInNlcmlhbGl6ZSB0aGlzISIKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9ob21vZ2VuZW91c19saXN0KHNlbGYpOgorICAgICAgICB4ID0gWyJzZXJpYWxpemUgdGhpcyEiLCAic2VyaWFsaXplIHRoYXQhIiwgInNlcmlhbGl6ZSB0aGF0ISIsInN0b3AgdGVsbGluZyBtZSB3aGF0IHRvIHNlcmlhbGl6ZSJdCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfaGV0ZXJvZ2VuZW91c19saXN0KHNlbGYpOgorICAgICAgICB4ID0gWyJzZXJpYWxpemUgdGhpcyEiLCAwLCAic2VyaWFsaXplIHRoYXQhIiwgInNlcmlhbGl6ZSB0aGF0ISIsIDEsICJzdG9wIHRlbGxpbmcgbWUgd2hhdCB0byBzZXJpYWxpemUiLCAyXQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2hvbW9nZW5lb3VzX3NldChzZWxmKToKKyAgICAgICAgeCA9IHsic2VyaWFsaXplIHRoaXMhIiwgInNlcmlhbGl6ZSB0aGF0ISIsICJzdG9wIHRlbGxpbmcgbWUgd2hhdCB0byBzZXJpYWxpemUifQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2hldGVyb2dlbmVvdXNfc2V0KHNlbGYpOgorICAgICAgICB4ID0geyJzZXJpYWxpemUgdGhpcyEiLCAwLCAic2VyaWFsaXplIHRoYXQhIiwgMSwgInN0b3AgdGVsbGluZyBtZSB3aGF0IHRvIHNlcmlhbGl6ZSIsIDJ9CisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfZGljdChzZWxmKToKKyAgICAgICAgeCA9IHsieW8iOiAid2hhdD8iLAorICAgICAgICAgICAgICJnbyI6ICJubyEiLAorICAgICAgICAgICAgICJudW1iZXIiOiAxMjMsCisgICAgICAgICAgICAgMzIxOiAiY3Jhenkgd2l0aCB0aGUgbnVtYmVyIGZvciBhIGtleSIsCisgICAgICAgICAgICAgOTg3OiBbImdvIiwgImRlZXAiLCB7ImhlcmUiOiAiISJ9XX0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICAgICAgeCA9IHsibWFya28iOiBbNjY2XSwgIm5vb25lIjogWyJibGFoIl19CisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgICAgIHggPSB7InJpcHBsZSI6IFtdLCAicGV0ZXIiOiBbImNyZWF0ZWQiXSwgIm5vb25lIjogWyJibGFoIl0sICJ2YWRhcyI6IFtdLAorICAgICAgICAgICAgICJqb3NoIjogWyJjcmVhdGVkIiwgImNyZWF0ZWQiXSwgImxvcCI6IFtdLCAibWFya28iOiBbNjY2LCAiY3JlYXRlZCIsICJrbm93cyIsICJrbm93cyJdfQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X3V1aWQoc2VsZik6CisgICAgICAgIHggPSB1dWlkLlVVSUQoIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfZWRnZShzZWxmKToKKyAgICAgICAgeCA9IEVkZ2UoMTIzLCBWZXJ0ZXgoMSwgJ3BlcnNvbicpLCAiZGV2ZWxvcGVkIiwgVmVydGV4KDEwLCAic29mdHdhcmUiKSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisgICAgICAgIGFzc2VydCB4LmluViA9PSBvdXRwdXQuaW5WCisgICAgICAgIGFzc2VydCB4Lm91dFYgPT0gb3V0cHV0Lm91dFYKKworICAgIGRlZiB0ZXN0X3BhdGgoc2VsZik6CisgICAgICAgIHggPSBQYXRoKFsieCIsICJ5IiwgInoiXSwgWzEsIDIsIDNdKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X3Byb3BlcnR5KHNlbGYpOgorICAgICAgICB4ID0gUHJvcGVydHkoIm5hbWUiLCAic3RlcGhlbiIsIE5vbmUpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfdmVydGV4KHNlbGYpOgorICAgICAgICB4ID0gVmVydGV4KDEyMywgInBlcnNvbiIpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfdmVydGV4cHJvcGVydHkoc2VsZik6CisgICAgICAgIHggPSBWZXJ0ZXhQcm9wZXJ0eSgxMjMsICJuYW1lIiwgInN0ZXBoZW4iLCBOb25lKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKyAgICAgICAgCisgICAgZGVmIHRlc3RfYmFycmllcihzZWxmKToKKyAgICAgICAgeCA9IEJhcnJpZXIubm9ybVNhY2sKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9iaW5kaW5nKHNlbGYpOgorICAgICAgICB4ID0gQmluZGluZygibmFtZSIsICJtYXJrbyIpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfYnl0ZWNvZGUoc2VsZik6CisgICAgICAgIHggPSBCeXRlY29kZSgpCisgICAgICAgIHguc291cmNlX2luc3RydWN0aW9ucy5hcHBlbmQoWyJ3aXRoU3RyYXRlZ2llcyIsICJTdWJncmFwaFN0cmF0ZWd5Il0pCisgICAgICAgIHguc3RlcF9pbnN0cnVjdGlvbnMuYXBwZW5kKFsiViIsIDEsIDIsIDNdKQorICAgICAgICB4LnN0ZXBfaW5zdHJ1Y3Rpb25zLmFwcGVuZChbIm91dCJdKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2J5dGUoc2VsZik6CisgICAgICAgIHggPSBpbnQuX19uZXdfXyhTaW5nbGVCeXRlLCAxKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2J5dGVidWZmZXIoc2VsZik6CisgICAgICAgIHggPSBCeXRlQnVmZmVyVHlwZSgiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIiwgInV0ZjgiKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2Jvb2xlYW4oc2VsZik6CisgICAgICAgIHggPSBUcnVlCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgICAgIHggPSBGYWxzZQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2NoYXIoc2VsZik6CisgICAgICAgIHggPSBzdHIuX19uZXdfXyhTaW5nbGVDaGFyLCBjaHIoNzYpKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgICAgICBpZiBzaXguUFkzOgorICAgICAgICAgICAgeCA9IHN0ci5fX25ld19fKFNpbmdsZUNoYXIsIGNocig1NzM0NCkpCisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9kdXJhdGlvbihzZWxmKToKKyAgICAgICAgeCA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTEwMDAsIG1pY3Jvc2Vjb25kcz0xMDAwKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKyAgICAgICAgCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZ3JhcGhzb25WMmQwLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoc29uVjJkMC5weQppbmRleCBmYThkOGJmLi5iOTAyNWU4IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZ3JhcGhzb25WMmQwLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9ncmFwaHNvblYyZDAucHkKQEAgLTIwMiwxMCArMjAyLDcgQEAKICAgICAgICAgICAgICIiInsiQHR5cGUiOiJnOlBhdGgiLCJAdmFsdWUiOnsibGFiZWxzIjpbWyJhIl0sWyJiIiwiYyJdLFtdXSwib2JqZWN0cyI6W3siQHR5cGUiOiJnOlZlcnRleCIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50MzIiLCJAdmFsdWUiOjF9LCJsYWJlbCI6InBlcnNvbiIsInByb3BlcnRpZXMiOnsibmFtZSI6W3siQHR5cGUiOiJnOlZlcnRleFByb3BlcnR5IiwiQHZhbHVlIjp7ImlkIjp7IkB0eXBlIjoiZzpJbnQ2NCIsIkB2YWx1ZSI6MH0sInZhbHVlIjoibWFya28iLCJsYWJlbCI6Im5hbWUifX1dLCJhZ2UiOlt7IkB0eXBlIjoiZzpWZXJ0ZXhQcm9wZXJ0eSIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50NjQiLCJAdmFsdWUiOjF9LCJ2YWx1ZSI6eyJAdHlwZSI6Imc6SW50MzIiLCJAdmFsdWUiOjI5fSwibGFiZWwiOiJhZ2UifX1dfX19LHsiQHR5cGUiOiJnOlZlcnRleCIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50MzIiLCJAdmFsdWUiOjN9LCJsYWJlbCI6InNvZnR3YXJlIiwicHJvcGVydGllcyI6eyJuYW1lIjpbeyJAdHlwZSI6Imc6VmVydGV4UHJvcGVydHkiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDY0IiwiQHZhbHVlIjo0fSwidmFsdWUiOiJsb3AiLCJsYWJlbCI6Im5hbWUifX1dLCJsYW5nIjpbeyJAdHlwZSI6Imc6VmVydGV4UHJvcGVydHkiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDY0IiwiQHZhbHVlIjo1fSwidmFsdWUiOiJqYXZhIiwibGFiZWwiOiJsYW5nIn19XX19fSwibG9wIl19fSIiIgogICAgICAgICApCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHBhdGgsIFBhdGgpCi0gICAgICAgIGlmIHNpeC5QWTM6Ci0gICAgICAgICAgICBhc3NlcnQgIlt2WzFdLCB2WzNdLCAnbG9wJ10iID09IHN0cihwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0ICJbdlsxXSwgdlszXSwgdSdsb3AnXSIgPT0gc3RyKHBhdGgpCisgICAgICAgIGFzc2VydCAicGF0aFt2WzFdLCB2WzNdLCBsb3BdIiA9PSBzdHIocGF0aCkKICAgICAgICAgYXNzZXJ0IFZlcnRleCgxKSA9PSBwYXRoWzBdCiAgICAgICAgIGFzc2VydCBWZXJ0ZXgoMSkgPT0gcGF0aFsiYSJdCiAgICAgICAgIGFzc2VydCAibG9wIiA9PSBwYXRoWzJdCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZ3JhcGhzb25WM2QwLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoc29uVjNkMC5weQppbmRleCAyMDBlMDE0Li43YWFmZDZhIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZ3JhcGhzb25WM2QwLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9ncmFwaHNvblYzZDAucHkKQEAgLTc5LDYgKzc5LDE1IEBACiAgICAgICAgIGFzc2VydCB4WydiJ10gPT0gIm1hcmtvIgogICAgICAgICBhc3NlcnQgbGVuKHgpID09IDIKIAorICAgICAgICAjIEJ1bGtTZXQgZ2V0cyBjb2VyY2VkIHRvIGEgTGlzdCAtIGJvdGggaGF2ZSB0aGUgc2FtZSBiZWhhdmlvcgorICAgICAgICB4ID0gc2VsZi5ncmFwaHNvbl9yZWFkZXIucmVhZE9iamVjdCgKKyAgICAgICAgICAgIGpzb24uZHVtcHMoeyJAdHlwZSI6ICJnOkJ1bGtTZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSI6IFsibWFya28iLCB7IkB0eXBlIjogImc6SW50NjQiLCAiQHZhbHVlIjogMX0sICJqb3NoIiwgeyJAdHlwZSI6ICJnOkludDY0IiwgIkB2YWx1ZSI6IDN9XX0pKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh4LCBsaXN0KQorICAgICAgICBhc3NlcnQgbGVuKHgpID09IDQKKyAgICAgICAgYXNzZXJ0IHguY291bnQoIm1hcmtvIikgPT0gMQorICAgICAgICBhc3NlcnQgeC5jb3VudCgiam9zaCIpID09IDMKKwogICAgIGRlZiB0ZXN0X251bWJlcl9pbnB1dChzZWxmKToKICAgICAgICAgeCA9IHNlbGYuZ3JhcGhzb25fcmVhZGVyLnJlYWRPYmplY3QoanNvbi5kdW1wcyh7CiAgICAgICAgICAgICAiQHR5cGUiOiAiZ3g6Qnl0ZSIsCkBAIC0yMzksMTAgKzI0OCw3IEBACiAgICAgICAgICAgICAiIiJ7IkB0eXBlIjoiZzpQYXRoIiwiQHZhbHVlIjp7ImxhYmVscyI6eyJAdHlwZSI6Imc6TGlzdCIsIkB2YWx1ZSI6W3siQHR5cGUiOiJnOlNldCIsIkB2YWx1ZSI6WyJhIl19LHsiQHR5cGUiOiJnOlNldCIsIkB2YWx1ZSI6WyJiIiwiYyJdfSx7IkB0eXBlIjoiZzpTZXQiLCJAdmFsdWUiOltdfV19LCJvYmplY3RzIjp7IkB0eXBlIjoiZzpMaXN0IiwiQHZhbHVlIjpbeyJAdHlwZSI6Imc6VmVydGV4IiwiQHZhbHVlIjp7ImlkIjp7IkB0eXBlIjoiZzpJbnQzMiIsIkB2YWx1ZSI6MX0sImxhYmVsIjoicGVyc29uIiwicHJvcGVydGllcyI6eyJuYW1lIjpbeyJAdHlwZSI6Imc6VmVydGV4UHJvcGVydHkiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDY0IiwiQHZhbHVlIjowfSwidmFsdWUiOiJtYXJrbyIsImxhYmVsIjoibmFtZSJ9fV0sImFnZSI6W3siQHR5cGUiOiJnOlZlcnRleFByb3BlcnR5IiwiQHZhbHVlIjp7ImlkIjp7IkB0eXBlIjoiZzpJbnQ2NCIsIkB2YWx1ZSI6MX0sInZhbHVlIjp7IkB0eXBlIjoiZzpJbnQzMiIsIkB2YWx1ZSI6Mjl9LCJsYWJlbCI6ImFnZSJ9fV19fX0seyJAdHlwZSI6Imc6VmVydGV4IiwiQHZhbHVlIjp7ImlkIjp7IkB0eXBlIjoiZzpJbnQzMiIsIkB2YWx1ZSI6M30sImxhYmVsIjoic29mdHdhcmUiLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOlt7IkB0eXBlIjoiZzpWZXJ0ZXhQcm9wZXJ0eSIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50NjQiLCJAdmFsdWUiOjR9LCJ2YWx1ZSI6ImxvcCIsImxhYmVsIjoibmFtZSJ9fV0sImxhbmciOlt7IkB0eXBlIjoiZzpWZXJ0ZXhQcm9wZXJ0eSIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50NjQiLCJAdmFsdWUiOjV9LCJ2YWx1ZSI6ImphdmEiLCJsYWJlbCI6ImxhbmcifX1dfX19LCJsb3AiXX19fSIiIgogICAgICAgICApCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHBhdGgsIFBhdGgpCi0gICAgICAgIGlmIHNpeC5QWTM6Ci0gICAgICAgICAgICBhc3NlcnQgIlt2WzFdLCB2WzNdLCAnbG9wJ10iID09IHN0cihwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0ICJbdlsxXSwgdlszXSwgdSdsb3AnXSIgPT0gc3RyKHBhdGgpCisgICAgICAgIGFzc2VydCAicGF0aFt2WzFdLCB2WzNdLCBsb3BdIiA9PSBzdHIocGF0aCkKICAgICAgICAgYXNzZXJ0IFZlcnRleCgxKSA9PSBwYXRoWzBdCiAgICAgICAgIGFzc2VydCBWZXJ0ZXgoMSkgPT0gcGF0aFsiYSJdCiAgICAgICAgIGFzc2VydCAibG9wIiA9PSBwYXRoWzJdCkBAIC00MDEsNyArNDA3LDggQEAKICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSBqc29uLmxvYWRzKHNlbGYuZ3JhcGhzb25fd3JpdGVyLndyaXRlT2JqZWN0KFAud2l0aGluKDEpKSkKIAogICAgIGRlZiB0ZXN0X3N0cmF0ZWdpZXMoc2VsZik6Ci0gICAgICAgICMgd2UgaGF2ZSBhIHByb3h5IG1vZGVsIGZvciBub3cgZ2l2ZW4gdGhhdCB3ZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gaGF2ZSBnOlhYWCBhbGwgcmVnaXN0ZXJlZCBvbiB0aGUgR3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZSAoeWV0KQorICAgICAgICAjIHdlIGhhdmUgYSBwcm94eSBtb2RlbCBmb3Igbm93IGdpdmVuIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUgZzpYWFggYWxsIHJlZ2lzdGVyZWQgb24gdGhlIAorICAgICAgICAjIEdyZW1saW4gdHJhdmVyc2FsIG1hY2hpbmUgKHlldCkKICAgICAgICAgYXNzZXJ0IHsiQHR5cGUiOiAiZzpTdWJncmFwaFN0cmF0ZWd5IiwgIkB2YWx1ZSI6IHt9fSA9PSBqc29uLmxvYWRzKAogICAgICAgICAgICAgc2VsZi5ncmFwaHNvbl93cml0ZXIud3JpdGVPYmplY3QoU3ViZ3JhcGhTdHJhdGVneSkpCiAgICAgICAgIGFzc2VydCB7IkB0eXBlIjogImc6U3ViZ3JhcGhTdHJhdGVneSIsICJAdmFsdWUiOiB7CkBAIC01MjYsNDQgKzUzMywzIEBACiAgICAgICAgIGMgPSBzdHIuX19uZXdfXyhTaW5nbGVDaGFyLCBjaHIoNzYpKQogICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoc29uX3dyaXRlci53cml0ZU9iamVjdChjKQogICAgICAgICBhc3NlcnQgZXhwZWN0ZWQgPT0gb3V0cHV0Ci0KLQotY2xhc3MgVGVzdEZ1bmN0aW9uYWxHcmFwaFNPTklPKG9iamVjdCk6Ci0gICAgIiIiRnVuY3Rpb25hbCBJTyB0ZXN0cyIiIgotCi0gICAgZGVmIHRlc3RfdGltZXN0YW1wKHNlbGYsIHJlbW90ZV9jb25uZWN0aW9uKToKLSAgICAgICAgZyA9IEdyYXBoKCkudHJhdmVyc2FsKCkud2l0aFJlbW90ZShyZW1vdGVfY29ubmVjdGlvbikKLSAgICAgICAgdHMgPSB0aW1lc3RhbXAoMTQ4MTc1MDA3NjI5NSAvIDEwMDApCi0gICAgICAgIHJlc3AgPSBnLmFkZFYoJ3Rlc3RfdmVydGV4JykucHJvcGVydHkoJ3RzJywgdHMpCi0gICAgICAgIHJlc3AgPSByZXNwLnRvTGlzdCgpCi0gICAgICAgIHZpZCA9IHJlc3BbMF0uaWQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdHNfcHJvcCA9IGcuVih2aWQpLnByb3BlcnRpZXMoJ3RzJykudG9MaXN0KClbMF0KLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHRzX3Byb3AudmFsdWUsIHRpbWVzdGFtcCkKLSAgICAgICAgICAgIGFzc2VydCB0c19wcm9wLnZhbHVlID09IHRzCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBnLlYodmlkKS5kcm9wKCkuaXRlcmF0ZSgpCi0KLSAgICBkZWYgdGVzdF9kYXRldGltZShzZWxmLCByZW1vdGVfY29ubmVjdGlvbik6Ci0gICAgICAgIGcgPSBHcmFwaCgpLnRyYXZlcnNhbCgpLndpdGhSZW1vdGUocmVtb3RlX2Nvbm5lY3Rpb24pCi0gICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgxNDgxNzUwMDc2Mjk1IC8gMTAwMCkKLSAgICAgICAgcmVzcCA9IGcuYWRkVigndGVzdF92ZXJ0ZXgnKS5wcm9wZXJ0eSgnZHQnLCBkdCkudG9MaXN0KCkKLSAgICAgICAgdmlkID0gcmVzcFswXS5pZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkdF9wcm9wID0gZy5WKHZpZCkucHJvcGVydGllcygnZHQnKS50b0xpc3QoKVswXQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZHRfcHJvcC52YWx1ZSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCi0gICAgICAgICAgICBhc3NlcnQgZHRfcHJvcC52YWx1ZSA9PSBkdAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZy5WKHZpZCkuZHJvcCgpLml0ZXJhdGUoKQotCi0gICAgZGVmIHRlc3RfdXVpZChzZWxmLCByZW1vdGVfY29ubmVjdGlvbik6Ci0gICAgICAgIGcgPSBHcmFwaCgpLnRyYXZlcnNhbCgpLndpdGhSZW1vdGUocmVtb3RlX2Nvbm5lY3Rpb24pCi0gICAgICAgIHVpZCA9IHV1aWQuVVVJRCgiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IikKLSAgICAgICAgcmVzcCA9IGcuYWRkVigndGVzdF92ZXJ0ZXgnKS5wcm9wZXJ0eSgndXVpZCcsIHVpZCkudG9MaXN0KCkKLSAgICAgICAgdmlkID0gcmVzcFswXS5pZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB1aWRfcHJvcCA9IGcuVih2aWQpLnByb3BlcnRpZXMoJ3V1aWQnKS50b0xpc3QoKVswXQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodWlkX3Byb3AudmFsdWUsIHV1aWQuVVVJRCkKLSAgICAgICAgICAgIGFzc2VydCB1aWRfcHJvcC52YWx1ZSA9PSB1aWQKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGcuVih2aWQpLmRyb3AoKS5pdGVyYXRlKCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvdGVzdF9ncmFwaC5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvdGVzdF9ncmFwaC5weQppbmRleCBkOWRjZjM3Li42Nzg0OWY2IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL3Rlc3RfZ3JhcGgucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS90ZXN0X2dyYXBoLnB5CkBAIC03NSw3ICs3NSw3IEBACiAKICAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgogICAgICAgICBwYXRoID0gUGF0aChbc2V0KFsiYSIsICJiIl0pLCBzZXQoWyJjIiwgImIiXSksIHNldChbXSldLCBbMSwgVmVydGV4KDEpLCAiaGVsbG8iXSkKLSAgICAgICAgYXNzZXJ0ICJbMSwgdlsxXSwgJ2hlbGxvJ10iID09IHN0cihwYXRoKQorICAgICAgICBhc3NlcnQgInBhdGhbMSwgdlsxXSwgaGVsbG9dIiA9PSBzdHIocGF0aCkKICAgICAgICAgYXNzZXJ0IDEgPT0gcGF0aFsiYSJdCiAgICAgICAgIGFzc2VydCBWZXJ0ZXgoMSkgPT0gcGF0aFsiYyJdCiAgICAgICAgIGFzc2VydCBbMSwgVmVydGV4KDEpXSA9PSBwYXRoWyJiIl0KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItY2xhc3NpYy55YW1sIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1jbGFzc2ljLnlhbWwKaW5kZXggYmE3YmRhNS4uMjQ4YTZiZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1jbGFzc2ljLnlhbWwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1jbGFzc2ljLnlhbWwKQEAgLTMwLDYgKzMwLDggQEAKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5bwogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAjIGFwcGxpY2F0aW9uL2pzb24KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkCiBtZXRyaWNzOiB7CiAgIHNsZjRqUmVwb3J0ZXI6IHtlbmFibGVkOiB0cnVlLCBpbnRlcnZhbDogMTgwMDAwfX0KIHN0cmljdFRyYW5zYWN0aW9uTWFuYWdlbWVudDogZmFsc2UKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXB5LnlhbWwgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCmluZGV4IGMwMzFjMjMuLjMxOTNkNWYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXB5LnlhbWwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbApAQCAtNDUsNiArNDUsOCBAQAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICMgYXBwbGljYXRpb24vanNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2QKIG1ldHJpY3M6IHsKICAgc2xmNGpSZXBvcnRlcjoge2VuYWJsZWQ6IHRydWUsIGludGVydmFsOiAxODAwMDB9fQogc3RyaWN0VHJhbnNhY3Rpb25NYW5hZ2VtZW50OiBmYWxzZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcmVhZG9ubHkueWFtbCBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXJlYWRvbmx5LnlhbWwKaW5kZXggNWEzZjVkYi4uNzM4OGY3MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcmVhZG9ubHkueWFtbAorKysgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1yZWFkb25seS55YW1sCkBAIC0zMCw2ICszMCw4IEBACiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5by1zdHJpbmdkCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgIyBhcHBsaWNhdGlvbi9qc29uCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMAorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAtc3RyaW5nZAogbWV0cmljczogewogICBzbGY0alJlcG9ydGVyOiB7ZW5hYmxlZDogdHJ1ZSwgaW50ZXJ2YWw6IDE4MDAwMH19CiBzdHJpY3RUcmFuc2FjdGlvbk1hbmFnZW1lbnQ6IGZhbHNlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi55YW1sIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4ueWFtbAppbmRleCA3OTdjNDg1Li41ZjgzNTA4IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLnlhbWwKQEAgLTMxLDYgKzMxLDggQEAKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5bwogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAjIGFwcGxpY2F0aW9uL2pzb24KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkCiBtZXRyaWNzOiB7CiAgIHNsZjRqUmVwb3J0ZXI6IHtlbmFibGVkOiB0cnVlLCBpbnRlcnZhbDogMTgwMDAwfX0KIHN0cmljdFRyYW5zYWN0aW9uTWFuYWdlbWVudDogZmFsc2UKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbmVvNGoueWFtbCBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbmVvNGoueWFtbAppbmRleCA3YTE4NWY3Li4wOGU0MmE4IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW5lbzRqLnlhbWwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1uZW80ai55YW1sCkBAIC00MSw2ICs0MSw4IEBACiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5by1zdHJpbmdkCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgIyBhcHBsaWNhdGlvbi9qc29uCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMAorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAtc3RyaW5nZAogcHJvY2Vzc29yczoKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc2Vzc2lvbi5TZXNzaW9uT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBzZXNzaW9uVGltZW91dDogMjg4MDAwMDAgfX0KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3AudHJhdmVyc2FsLlRyYXZlcnNhbE9wUHJvY2Vzc29yLCBjb25maWc6IHsgY2FjaGVFeHBpcmF0aW9uVGltZTogNjAwMDAwLCBjYWNoZU1heFNpemU6IDEwMDAgfX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItc2VjdXJlLnlhbWwgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLXNlY3VyZS55YW1sCmluZGV4IDcxMGEwMWYuLmRlYzJiYjMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItc2VjdXJlLnlhbWwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1zZWN1cmUueWFtbApAQCAtNDAsNiArNDAsOCBAQAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICMgYXBwbGljYXRpb24vanNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2QKIHByb2Nlc3NvcnM6CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnNlc3Npb24uU2Vzc2lvbk9wUHJvY2Vzc29yLCBjb25maWc6IHsgc2Vzc2lvblRpbWVvdXQ6IDI4ODAwMDAwIH19CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnRyYXZlcnNhbC5UcmF2ZXJzYWxPcFByb2Nlc3NvciwgY29uZmlnOiB7IGNhY2hlRXhwaXJhdGlvblRpbWU6IDYwMDAwMCwgY2FjaGVNYXhTaXplOiAxMDAwIH19CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLXNwYXJrLnlhbWwgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLXNwYXJrLnlhbWwKaW5kZXggMDNjODk3OC4uNGQ5NzRiZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1zcGFyay55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItc3BhcmsueWFtbApAQCAtNTQsNiArNTQsOCBAQAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICMgYXBwbGljYXRpb24vanNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2QKIHByb2Nlc3NvcnM6CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnNlc3Npb24uU2Vzc2lvbk9wUHJvY2Vzc29yLCBjb25maWc6IHsgc2Vzc2lvblRpbWVvdXQ6IDI4ODAwMDAwIH19CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnRyYXZlcnNhbC5UcmF2ZXJzYWxPcFByb2Nlc3NvciwgY29uZmlnOiB7IGNhY2hlRXhwaXJhdGlvblRpbWU6IDYwMDAwMCwgY2FjaGVNYXhTaXplOiAxMDAwIH19CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLnlhbWwgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLnlhbWwKaW5kZXggMWVmNmEwYi4uODZmNGU5MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXIueWFtbApAQCAtMjgsOSArMjgsMTEgQEAKICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkltcG9ydEdyZW1saW5QbHVnaW46IHtjbGFzc0ltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aF0sIG1ldGhvZEltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aCMqXX0sCiAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjoge2ZpbGVzOiBbc2NyaXB0cy9lbXB0eS1zYW1wbGUuZ3Jvb3Z5XX19fX0KIHNlcmlhbGl6ZXJzOgotICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5bwotICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5by1zdHJpbmdkCi0gIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICMgYXBwbGljYXRpb24vanNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZAorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICMgYXBwbGljYXRpb24vanNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2QKIHByb2Nlc3NvcnM6CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnNlc3Npb24uU2Vzc2lvbk9wUHJvY2Vzc29yLCBjb25maWc6IHsgc2Vzc2lvblRpbWVvdXQ6IDI4ODAwMDAwIH19CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnRyYXZlcnNhbC5UcmF2ZXJzYWxPcFByb2Nlc3NvciwgY29uZmlnOiB7IGNhY2hlRXhwaXJhdGlvblRpbWU6IDYwMDAwMCwgY2FjaGVNYXhTaXplOiAxMDAwIH19CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL25lbzRqLWVtcHR5LnByb3BlcnRpZXMgYi9ncmVtbGluLXNlcnZlci9jb25mL25lbzRqLWVtcHR5LnByb3BlcnRpZXMKaW5kZXggNDc2NDU4Yi4uZDFhZDYxZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9uZW80ai1lbXB0eS5wcm9wZXJ0aWVzCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvbmVvNGotZW1wdHkucHJvcGVydGllcwpAQCAtMzMsMyArMzMsOCBAQAogI2dyZW1saW4ubmVvNGouY29uZi5kYm1zLmF1dG9faW5kZXgubm9kZXMua2V5cz0KIGdyZW1saW4ubmVvNGouY29uZi5kYm1zLmF1dG9faW5kZXgucmVsYXRpb25zaGlwcy5lbmFibGVkPXRydWUKICNncmVtbGluLm5lbzRqLmNvbmYuZGJtcy5hdXRvX2luZGV4LnJlbGF0aW9uc2hpcHMua2V5cz0KKworIyB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyB0byBlbmFibGUgQm9sdCBvbiB0aGUgc3BlY2lmaWVkIHBvcnQKKyMgZ3JlbWxpbi5uZW80ai5jb25mLmRibXMuY29ubmVjdG9yLjAudHlwZT1CT0xUCisjIGdyZW1saW4ubmVvNGouY29uZi5kYm1zLmNvbm5lY3Rvci4wLmVuYWJsZWQ9dHJ1ZQorIyBncmVtbGluLm5lbzRqLmNvbmYuZGJtcy5jb25uZWN0b3IuMC5hZGRyZXNzPWxvY2FsaG9zdDo3Njg3CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9wb20ueG1sIGIvZ3JlbWxpbi1zZXJ2ZXIvcG9tLnhtbAppbmRleCA0NDdlYWUzLi5jMGY5OThhIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9wb20ueG1sCisrKyBiL2dyZW1saW4tc2VydmVyL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tc2VydmVyPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbiBTZXJ2ZXI8L25hbWU+CkBAIC0yOTcsNiArMjk3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+ZG9ja2VyLWltYWdlLXRhZy1sYXRlc3Q8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD50YWc8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhZz5sYXRlc3Q8L3RhZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxza2lwPiR7b25seS53aGVuLmlzLnByZXJlbGVhc2UudmVyc2lvbn08L3NraXA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+ZG9ja2VyLWltYWdlLXB1c2g8L2lkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+ZGVwbG95PC9waGFzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgpAQCAtMzE4LDYgKzMyOCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNraXA+JHtvbmx5LndoZW4uaXMucHJlcmVsZWFzZS52ZXJzaW9ufTwvc2tpcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5kb2NrZXItaW1hZ2UtcHVzaC1sYXRlc3Q8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+ZGVwbG95PC9waGFzZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cHVzaDwvZ29hbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFnPmxhdGVzdDwvdGFnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNraXA+JHtvbmx5LndoZW4uaXMucHJlcmVsZWFzZS52ZXJzaW9ufTwvc2tpcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgogICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9zaXRvcnk+dGlua2VycG9wL2dyZW1saW4tc2VydmVyPC9yZXBvc2l0b3J5PgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9lbXB0eS1zYW1wbGUtc2VjdXJlLmdyb292eSBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZW1wdHktc2FtcGxlLXNlY3VyZS5ncm9vdnkKaW5kZXggY2YyZjdhNy4uMDZjMjEyNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9lbXB0eS1zYW1wbGUtc2VjdXJlLmdyb292eQorKysgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2VtcHR5LXNhbXBsZS1zZWN1cmUuZ3Jvb3Z5CkBAIC00Nyw0ICs0Nyw5IEBACiBdIGFzIExpZmVDeWNsZUhvb2tdCiAKIC8vIGRlZmluZSB0aGUgZGVmYXVsdCBUcmF2ZXJzYWxTb3VyY2UgdG8gYmluZCBxdWVyaWVzIHRvIC0gdGhpcyBvbmUgd2lsbCBiZSBuYW1lZCAiZyIuCi1nbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLy8gUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5IGNvbnZlcnRzIGFsbCBncmFwaCBlbGVtZW50cyAodmVydGljZXMvZWRnZXMvdmVydGV4IHByb3BlcnRpZXMpCisvLyB0byAicmVmZXJlbmNlcyIgKGkuZS4ganVzdCBpZCBhbmQgbGFiZWwgd2l0aG91dCBwcm9wZXJ0aWVzKS4gdGhpcyBzdHJhdGVneSB3YXMgYWRkZWQKKy8vIGluIDMuNC4wIHRvIG1ha2UgYWxsIEdyZW1saW4gU2VydmVyIHJlc3VsdHMgY29uc2lzdGVudCBhY3Jvc3MgYWxsIHByb3RvY29scyBhbmQKKy8vIHNlcmlhbGl6YXRpb24gZm9ybWF0cyBhbGlnbmluZyBpdCB3aXRoIFRpbmtlclBvcCByZWNvbW1lbmRlZCBwcmFjdGljZXMgZm9yIHdyaXRpbmcKKy8vIEdyZW1saW4uCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZW1wdHktc2FtcGxlLmdyb292eSBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZW1wdHktc2FtcGxlLmdyb292eQppbmRleCAzNDY1NTc3Li4xZWJiNzc3IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2VtcHR5LXNhbXBsZS5ncm9vdnkKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9lbXB0eS1zYW1wbGUuZ3Jvb3Z5CkBAIC0zNyw0ICszNyw5IEBACiBdIGFzIExpZmVDeWNsZUhvb2tdCiAKIC8vIGRlZmluZSB0aGUgZGVmYXVsdCBUcmF2ZXJzYWxTb3VyY2UgdG8gYmluZCBxdWVyaWVzIHRvIC0gdGhpcyBvbmUgd2lsbCBiZSBuYW1lZCAiZyIuCi1nbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLy8gUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5IGNvbnZlcnRzIGFsbCBncmFwaCBlbGVtZW50cyAodmVydGljZXMvZWRnZXMvdmVydGV4IHByb3BlcnRpZXMpCisvLyB0byAicmVmZXJlbmNlcyIgKGkuZS4ganVzdCBpZCBhbmQgbGFiZWwgd2l0aG91dCBwcm9wZXJ0aWVzKS4gdGhpcyBzdHJhdGVneSB3YXMgYWRkZWQKKy8vIGluIDMuNC4wIHRvIG1ha2UgYWxsIEdyZW1saW4gU2VydmVyIHJlc3VsdHMgY29uc2lzdGVudCBhY3Jvc3MgYWxsIHByb3RvY29scyBhbmQKKy8vIHNlcmlhbGl6YXRpb24gZm9ybWF0cyBhbGlnbmluZyBpdCB3aXRoIFRpbmtlclBvcCByZWNvbW1lbmRlZCBwcmFjdGljZXMgZm9yIHdyaXRpbmcKKy8vIEdyZW1saW4uCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtY2xhc3NpYy5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLWNsYXNzaWMuZ3Jvb3Z5CmluZGV4IDRjNzNlNzQuLjVmNWY4NDggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtY2xhc3NpYy5ncm9vdnkKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9nZW5lcmF0ZS1jbGFzc2ljLmdyb292eQpAQCAtMzAsNCArMzAsOSBAQAogXSBhcyBMaWZlQ3ljbGVIb29rXQogCiAvLyBkZWZpbmUgdGhlIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHRvIGJpbmQgcXVlcmllcyB0byAtIHRoaXMgb25lIHdpbGwgYmUgbmFtZWQgImciLgotZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKy8vIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSBjb252ZXJ0cyBhbGwgZ3JhcGggZWxlbWVudHMgKHZlcnRpY2VzL2VkZ2VzL3ZlcnRleCBwcm9wZXJ0aWVzKQorLy8gdG8gInJlZmVyZW5jZXMiIChpLmUuIGp1c3QgaWQgYW5kIGxhYmVsIHdpdGhvdXQgcHJvcGVydGllcykuIHRoaXMgc3RyYXRlZ3kgd2FzIGFkZGVkCisvLyBpbiAzLjQuMCB0byBtYWtlIGFsbCBHcmVtbGluIFNlcnZlciByZXN1bHRzIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBwcm90b2NvbHMgYW5kCisvLyBzZXJpYWxpemF0aW9uIGZvcm1hdHMgYWxpZ25pbmcgaXQgd2l0aCBUaW5rZXJQb3AgcmVjb21tZW5kZWQgcHJhY3RpY2VzIGZvciB3cml0aW5nCisvLyBHcmVtbGluLgorZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLW1vZGVybi1yZWFkb25seS5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLW1vZGVybi1yZWFkb25seS5ncm9vdnkKaW5kZXggZmRhODA1Mi4uMWZkMDFjZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9nZW5lcmF0ZS1tb2Rlcm4tcmVhZG9ubHkuZ3Jvb3Z5CisrKyBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtbW9kZXJuLXJlYWRvbmx5Lmdyb292eQpAQCAtMzAsNCArMzAsOSBAQAogXSBhcyBMaWZlQ3ljbGVIb29rXQogCiAvLyBkZWZpbmUgdGhlIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHRvIGJpbmQgcXVlcmllcyB0byAtIHRoaXMgb25lIHdpbGwgYmUgbmFtZWQgImciLgotZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlYWRPbmx5U3RyYXRlZ3kuaW5zdGFuY2UoKSldCisvLyBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kgY29udmVydHMgYWxsIGdyYXBoIGVsZW1lbnRzICh2ZXJ0aWNlcy9lZGdlcy92ZXJ0ZXggcHJvcGVydGllcykKKy8vIHRvICJyZWZlcmVuY2VzIiAoaS5lLiBqdXN0IGlkIGFuZCBsYWJlbCB3aXRob3V0IHByb3BlcnRpZXMpLiB0aGlzIHN0cmF0ZWd5IHdhcyBhZGRlZAorLy8gaW4gMy40LjAgdG8gbWFrZSBhbGwgR3JlbWxpbiBTZXJ2ZXIgcmVzdWx0cyBjb25zaXN0ZW50IGFjcm9zcyBhbGwgcHJvdG9jb2xzIGFuZAorLy8gc2VyaWFsaXphdGlvbiBmb3JtYXRzIGFsaWduaW5nIGl0IHdpdGggVGlua2VyUG9wIHJlY29tbWVuZGVkIHByYWN0aWNlcyBmb3Igd3JpdGluZworLy8gR3JlbWxpbi4KK2dsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWFkT25seVN0cmF0ZWd5Lmluc3RhbmNlKCksIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtbW9kZXJuLmdyb292eSBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtbW9kZXJuLmdyb292eQppbmRleCBlMjU0Y2Q0Li45NTAwNDk4IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLW1vZGVybi5ncm9vdnkKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9nZW5lcmF0ZS1tb2Rlcm4uZ3Jvb3Z5CkBAIC0zMCw0ICszMCw5IEBACiBdIGFzIExpZmVDeWNsZUhvb2tdCiAKIC8vIGRlZmluZSB0aGUgZGVmYXVsdCBUcmF2ZXJzYWxTb3VyY2UgdG8gYmluZCBxdWVyaWVzIHRvIC0gdGhpcyBvbmUgd2lsbCBiZSBuYW1lZCAiZyIuCi1nbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLy8gUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5IGNvbnZlcnRzIGFsbCBncmFwaCBlbGVtZW50cyAodmVydGljZXMvZWRnZXMvdmVydGV4IHByb3BlcnRpZXMpCisvLyB0byAicmVmZXJlbmNlcyIgKGkuZS4ganVzdCBpZCBhbmQgbGFiZWwgd2l0aG91dCBwcm9wZXJ0aWVzKS4gdGhpcyBzdHJhdGVneSB3YXMgYWRkZWQKKy8vIGluIDMuNC4wIHRvIG1ha2UgYWxsIEdyZW1saW4gU2VydmVyIHJlc3VsdHMgY29uc2lzdGVudCBhY3Jvc3MgYWxsIHByb3RvY29scyBhbmQKKy8vIHNlcmlhbGl6YXRpb24gZm9ybWF0cyBhbGlnbmluZyBpdCB3aXRoIFRpbmtlclBvcCByZWNvbW1lbmRlZCBwcmFjdGljZXMgZm9yIHdyaXRpbmcKKy8vIEdyZW1saW4uCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvbG9hZC1zYW1wbGUuZ3Jvb3Z5IGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9sb2FkLXNhbXBsZS5ncm9vdnkKaW5kZXggODEyNDFhMC4uMWM1NjE1NSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9sb2FkLXNhbXBsZS5ncm9vdnkKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9sb2FkLXNhbXBsZS5ncm9vdnkKQEAgLTM2LDQgKzM2LDkgQEAKIF0gYXMgTGlmZUN5Y2xlSG9va10KIAogLy8gZGVmaW5lIHRoZSBkZWZhdWx0IFRyYXZlcnNhbFNvdXJjZSB0byBiaW5kIHF1ZXJpZXMgdG8gLSB0aGlzIG9uZSB3aWxsIGJlIG5hbWVkICJnIi4KLWdsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisvLyBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kgY29udmVydHMgYWxsIGdyYXBoIGVsZW1lbnRzICh2ZXJ0aWNlcy9lZGdlcy92ZXJ0ZXggcHJvcGVydGllcykKKy8vIHRvICJyZWZlcmVuY2VzIiAoaS5lLiBqdXN0IGlkIGFuZCBsYWJlbCB3aXRob3V0IHByb3BlcnRpZXMpLiB0aGlzIHN0cmF0ZWd5IHdhcyBhZGRlZAorLy8gaW4gMy40LjAgdG8gbWFrZSBhbGwgR3JlbWxpbiBTZXJ2ZXIgcmVzdWx0cyBjb25zaXN0ZW50IGFjcm9zcyBhbGwgcHJvdG9jb2xzIGFuZAorLy8gc2VyaWFsaXphdGlvbiBmb3JtYXRzIGFsaWduaW5nIGl0IHdpdGggVGlua2VyUG9wIHJlY29tbWVuZGVkIHByYWN0aWNlcyBmb3Igd3JpdGluZworLy8gR3JlbWxpbi4KK2dsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9zcGFyay5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL3NwYXJrLmdyb292eQppbmRleCA3NGE5MWE0Li5kYjA3ZmRjIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL3NwYXJrLmdyb292eQorKysgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL3NwYXJrLmdyb292eQpAQCAtNDQsNCArNDQsMTAgQEAKIC8vCiAvLyBQbGVhc2Ugc2VlIGNvbmYvZ3JlbWxpbi1zZXJ2ZXItc3BhcmsueWFtbCBmb3IgYSB3b3JraW5nIGV4YW1wbGUgb2YgYSBjb25maWcgZmlsZSB0aGF0IHdpbGwKIC8vIHdvcmsgd2l0aCB0aGlzIGluaXQgc2NyaXB0LgotZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihTcGFya0dyYXBoQ29tcHV0ZXIpXQorLy8KKy8vIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSBjb252ZXJ0cyBhbGwgZ3JhcGggZWxlbWVudHMgKHZlcnRpY2VzL2VkZ2VzL3ZlcnRleCBwcm9wZXJ0aWVzKQorLy8gdG8gInJlZmVyZW5jZXMiIChpLmUuIGp1c3QgaWQgYW5kIGxhYmVsIHdpdGhvdXQgcHJvcGVydGllcykuIHRoaXMgc3RyYXRlZ3kgd2FzIGFkZGVkCisvLyBpbiAzLjQuMCB0byBtYWtlIGFsbCBHcmVtbGluIFNlcnZlciByZXN1bHRzIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBwcm90b2NvbHMgYW5kCisvLyBzZXJpYWxpemF0aW9uIGZvcm1hdHMgYWxpZ25pbmcgaXQgd2l0aCBUaW5rZXJQb3AgcmVjb21tZW5kZWQgcHJhY3RpY2VzIGZvciB3cml0aW5nCisvLyBHcmVtbGluLgorZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihTcGFya0dyYXBoQ29tcHV0ZXIpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2Jpbi9ncmVtbGluLXNlcnZlci5iYXQgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9iaW4vZ3JlbWxpbi1zZXJ2ZXIuYmF0CmluZGV4IDZjNzNmNDguLjczZGYyYTMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2Jpbi9ncmVtbGluLXNlcnZlci5iYXQKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vYmluL2dyZW1saW4tc2VydmVyLmJhdApAQCAtMzYsNyArMzYsNiBAQAogc2V0IEpBVkFfT1BUSU9OUz0tWG1zMzJtIC1YbXg1MTJtCiAKIGlmICIlMSIgPT0gIiIgZ290byBzZXJ2ZXIKLWlmICIlMSIgPT0gIi1pIiBnb3RvIGRhc2hpCiBpZiAiJTEiID09ICJpbnN0YWxsIiBnb3RvIGluc3RhbGwKIAogOnNlcnZlcgpAQCAtNDQsMTEgKzQzLDYgQEAKIDo6IExhdW5jaCB0aGUgYXBwbGljYXRpb24KIGphdmEgLURsb2c0ai5jb25maWd1cmF0aW9uPWNvbmYvbG9nNGotc2VydmVyLnByb3BlcnRpZXMgJUpBVkFfT1BUSU9OUyUgJUpBVkFfQVJHUyUgLWNwICIlTElCRElSJS8qOyVFWFRESVIlOyIgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuR3JlbWxpblNlcnZlciAlKgogCi06ZGFzaGkKLQotZWNobyBOT1RFOiAtaSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXBkYXRlIHlvdXIgc2NyaXB0cy4gVXNpbmcgJ2luc3RhbGwnIGNvbW1hbmQuLi4KLWdvdG8gaW5zdGFsbAotCiA6aW5zdGFsbAogCiBzZXQgUkVTVFZBUj0KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2Jpbi9ncmVtbGluLXNlcnZlci5zaCBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2Jpbi9ncmVtbGluLXNlcnZlci5zaAppbmRleCA3NmFmYTA5Li4zYzBjODJjIDEwMDc1NQotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9iaW4vZ3JlbWxpbi1zZXJ2ZXIuc2gKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vYmluL2dyZW1saW4tc2VydmVyLnNoCkBAIC0yNTIsMTEgKzI1Miw2IEBACiAgIHN0b3ApCiAgICAgc3RvcAogICAgIDs7Ci0gIC1pKQotICAgIHNoaWZ0Ci0gICAgZWNobyAiUmVkaXJlY3RpbmcgdG8gJ2luc3RhbGwgJEAnICgtaSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSkiCi0gICAgaW5zdGFsbCAiJEAiCi0gICAgOzsKICAgaW5zdGFsbCkKICAgICBzaGlmdAogICAgIGluc3RhbGwgIiRAIgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9BYnN0cmFjdENoYW5uZWxpemVyLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0Fic3RyYWN0Q2hhbm5lbGl6ZXIuamF2YQppbmRleCAxNGI4NDkyLi43N2NkNDY1IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0Fic3RyYWN0Q2hhbm5lbGl6ZXIuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0Fic3RyYWN0Q2hhbm5lbGl6ZXIuamF2YQpAQCAtMjcsNiArMjcsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVxdWVzdE1lc3NhZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZU1lc3NhZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkFic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5lbmdpbmUuR3JlbWxpbkV4ZWN1dG9yOwpAQCAtODQsNyArODUsMTEgQEAKICAgICAgICAgICAgIG5ldyBTZXR0aW5ncy5TZXJpYWxpemVyU2V0dGluZ3MoR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5jbGFzcy5nZXROYW1lKCksIG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCl7ewogICAgICAgICAgICAgICAgIHB1dChBYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuVE9LRU5fU0VSSUFMSVpFX1JFU1VMVF9UT19TVFJJTkcsIHRydWUpOwogICAgICAgICAgICAgfX0pLAotICAgICAgICAgICAgbmV3IFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncyhHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5jbGFzcy5nZXROYW1lKCksIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpCisgICAgICAgICAgICBuZXcgU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzKEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmNsYXNzLmdldE5hbWUoKSwgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSksCisgICAgICAgICAgICBuZXcgU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzKEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMS5jbGFzcy5nZXROYW1lKCksIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpLAorICAgICAgICAgICAgbmV3IFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncyhHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEuY2xhc3MuZ2V0TmFtZSgpLCBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgICAgICBwdXQoR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLlRPS0VOX1NFUklBTElaRV9SRVNVTFRfVE9fU1RSSU5HLCB0cnVlKTsKKyAgICAgICAgICAgIH19KQogICAgICk7CiAKICAgICBwcm90ZWN0ZWQgU2V0dGluZ3Mgc2V0dGluZ3M7CkBAIC0xMDgsMTUgKzExMywxNCBAQAogCiAgICAgcHJvdGVjdGVkIGZpbmFsIE1hcDxTdHJpbmcsIE1lc3NhZ2VTZXJpYWxpemVyPiBzZXJpYWxpemVycyA9IG5ldyBIYXNoTWFwPD4oKTsKIAotICAgIHByaXZhdGUgSWRsZVN0YXRlSGFuZGxlciBpZGxlU3RhdGVIYW5kbGVyOwogICAgIHByaXZhdGUgT3BTZWxlY3RvckhhbmRsZXIgb3BTZWxlY3RvckhhbmRsZXI7CiAgICAgcHJpdmF0ZSBPcEV4ZWN1dG9ySGFuZGxlciBvcEV4ZWN1dG9ySGFuZGxlcjsKIAogICAgIHByb3RlY3RlZCBBdXRoZW50aWNhdG9yIGF1dGhlbnRpY2F0b3I7CiAKICAgICAvKioKLSAgICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4ge0BsaW5rICNpbml0Q2hhbm5lbChpby5uZXR0eS5jaGFubmVsLnNvY2tldC5Tb2NrZXRDaGFubmVsKX0ganVzdCBhZnRlcgotICAgICAqIHRoZSBTU0wgaGFuZGxlciBpcyBwdXQgaW4gdGhlIHBpcGVsaW5lLiAgTW9kaWZ5IHRoZSBwaXBlbGluZSBhcyBuZWVkZWQgaGVyZS4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4ge0Bjb2RlIFNvY2tldENoYW5uZWx9IGp1c3QgYWZ0ZXIgdGhlIFNTTCBoYW5kbGVyIGlzIHB1dCBpbiB0aGUgcGlwZWxpbmUuCisgICAgICogTW9kaWZ5IHRoZSBwaXBlbGluZSBhcyBuZWVkZWQgaGVyZS4KICAgICAgKi8KICAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBjb25maWd1cmUoZmluYWwgQ2hhbm5lbFBpcGVsaW5lIHBpcGVsaW5lKTsKIApAQCAtMTkxLDEyICsxOTUsNyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgQXV0aGVudGljYXRvciBjcmVhdGVBdXRoZW50aWNhdG9yKGZpbmFsIFNldHRpbmdzLkF1dGhlbnRpY2F0aW9uU2V0dGluZ3MgY29uZmlnKSB7Ci0gICAgICAgIFN0cmluZyBhdXRoZW50aWNhdG9yQ2xhc3MgPSBudWxsOwotICAgICAgICBpZiAoY29uZmlnLmF1dGhlbnRpY2F0b3IgPT0gbnVsbCkgewotICAgICAgICAgICAgYXV0aGVudGljYXRvckNsYXNzID0gY29uZmlnLmNsYXNzTmFtZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JDbGFzcyA9IGNvbmZpZy5hdXRoZW50aWNhdG9yOwotICAgICAgICB9CisgICAgICAgIGZpbmFsIFN0cmluZyBhdXRoZW50aWNhdG9yQ2xhc3MgPSBjb25maWcuYXV0aGVudGljYXRvcjsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGZpbmFsIENsYXNzPD8+IGNsYXp6ID0gQ2xhc3MuZm9yTmFtZShhdXRoZW50aWNhdG9yQ2xhc3MpOwogICAgICAgICAgICAgZmluYWwgQXV0aGVudGljYXRvciBhdXRoZW50aWNhdG9yID0gKEF1dGhlbnRpY2F0b3IpIGNsYXp6Lm5ld0luc3RhbmNlKCk7CkBAIC0yNDcsNyArMjQ2LDcgQEAKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtaW1lVHlwZSA9IHBhaXIuZ2V0VmFsdWUwKCk7CiAgICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyID0gcGFpci5nZXRWYWx1ZTEoKTsKICAgICAgICAgICAgIGlmIChzZXJpYWxpemVycy5jb250YWluc0tleShtaW1lVHlwZSkpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oInt9IGFscmVhZHkgaGFzIHt9IGNvbmZpZ3VyZWQgLSBpdCB3aWxsIG5vdCBiZSByZXBsYWNlZCBieSB7fS4iLAorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJ7fSBhbHJlYWR5IGhhcyB7fSBjb25maWd1cmVkIC0gaXQgd2lsbCBub3QgYmUgcmVwbGFjZWQgYnkge30sIGNoYW5nZSBvcmRlciBvZiBzZXJpYWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gaWYgdGhpcyBpcyBub3QgZGVzaXJlZC4iLAogICAgICAgICAgICAgICAgICAgICAgICAgbWltZVR5cGUsIHNlcmlhbGl6ZXJzLmdldChtaW1lVHlwZSkuZ2V0Q2xhc3MoKS5nZXROYW1lKCksIHNlcmlhbGl6ZXIuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNvbmZpZ3VyZWQge30gd2l0aCB7fSIsIG1pbWVUeXBlLCBwYWlyLmdldFZhbHVlMSgpLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JhcGhNYW5hZ2VyLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyYXBoTWFuYWdlci5qYXZhCmluZGV4IGJjYjRhOGUuLmI2NGJiYTQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JhcGhNYW5hZ2VyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmFwaE1hbmFnZXIuamF2YQpAQCAtMzUsMTYgKzM1LDYgQEAKICAqIHRoZSBpbnRlcmZhY2UgYWxzbyBkZWZpbmVzIHNpbWlsYXIgZmVhdHVyZXMgZm9yIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IG9iamVjdHMuCiAgKi8KIHB1YmxpYyBpbnRlcmZhY2UgR3JhcGhNYW5hZ2VyIHsKLSAgICAvKioKLSAgICAgKiBHZXQgYSBsaXN0IG9mIHRoZSB7QGxpbmsgR3JhcGh9IGluc3RhbmNlcyBhbmQgdGhlaXIgYmluZGluZyBuYW1lcy4KLSAgICAgKgotICAgICAqIEByZXR1cm4gYSB7QGNvZGUgTWFwfSB3aGVyZSB0aGUga2V5IGlzIHRoZSBuYW1lIG9mIHRoZSB7QGxpbmsgR3JhcGh9IGFuZCB0aGUgdmFsdWUgaXMgdGhlIHtAbGluayBHcmFwaH0gaXRzZWxmCi0gICAgICogQGRlcHJlY2F0ZWQgIEFzIG9mIHJlbGVhc2UgMy4yLjUsIHJlcGxhY2VkIGJ5IGEgY29tYmluYXRpb24gb2Yge0BsaW5rICNnZXRHcmFwaE5hbWVzKCl9IGFuZAotICAgICAqIHtAbGluayAjZ2V0R3JhcGgoU3RyaW5nKX0gLSBub3RlIHRoYXQgdGhlIGV4cGVjdGF0aW9uIGlzIHRoaXMgbWV0aG9kIHJldHVybiBhbiBpbW11dGFibGUge0Bjb2RlIE1hcH0gd2hpY2ggd2FzCi0gICAgICogbm90IHRoZSBleHBlY3RhdGlvbiBwcmlvciB0byAzLjIuNS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBHcmFwaD4gZ2V0R3JhcGhzKCk7CiAKICAgICAvKioKICAgICAgKiBHZXQgYSB7QGxpbmsgU2V0fSBvZiB7QGxpbmsgU3RyaW5nfSBncmFwaE5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gbmFtZXMgc3RvcmVkIGluIHRoZSBncmFwaCdzCkBAIC02NSwxOCArNTUsNiBAQAogICAgIHB1YmxpYyB2b2lkIHB1dEdyYXBoKGZpbmFsIFN0cmluZyBncmFwaE5hbWUsIGZpbmFsIEdyYXBoIGcpOwogCiAgICAgLyoqCi0gICAgICogR2V0IGEgbGlzdCBvZiB0aGUge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gaW5zdGFuY2VzIGFuZCB0aGVpciBiaW5kaW5nIG5hbWVzCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIGEge0BsaW5rIE1hcH0gd2hlcmUgdGhlIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gYW5kIHRoZSB2YWx1ZSBpcyB0aGUKLSAgICAgKiAgICAgICAgIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IGl0c2VsZgotICAgICAqIEBkZXByZWNhdGVkICBBcyBvZiByZWxlYXNlIDMuMi41LCByZXBsYWNlZCBieSBhIGNvbWJpbmF0aW9uIG9mIHtAbGluayAjZ2V0VHJhdmVyc2FsU291cmNlTmFtZXMoKX0gYW5kCi0gICAgICoge0BsaW5rICNnZXRUcmF2ZXJzYWxTb3VyY2UoU3RyaW5nKX0gLSBub3RlIHRoYXQgdGhlIGV4cGVjdGF0aW9uIGlzIHRoaXMgbWV0aG9kIHJldHVybiBhbiBpbW11dGFibGUKLSAgICAgKiB7QGNvZGUgTWFwfSB3aGljaCB3YXMgbm90IHRoZSBleHBlY3RhdGlvbiBwcmlvciB0byAzLjIuNS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBUcmF2ZXJzYWxTb3VyY2U+IGdldFRyYXZlcnNhbFNvdXJjZXMoKTsKLQotICAgIC8qKgogICAgICAqIEdldCBhIHtAY29kZSBTZXR9IG9mIHRoZSBuYW1lcyBvZiB0aGUgdGhlIHN0b3JlZCB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBpbnN0YW5jZXMuCiAgICAgICovCiAgICAgcHVibGljIFNldDxTdHJpbmc+IGdldFRyYXZlcnNhbFNvdXJjZU5hbWVzKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlci5qYXZhCmluZGV4IDUwYWZkYjIuLjJhMWFkZjcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlci5qYXZhCkBAIC0yNSw2ICsyNSw3IEBACiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5DaGFubmVsRnV0dXJlTGlzdGVuZXI7CiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5DaGFubmVsT3B0aW9uOwogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuRXZlbnRMb29wR3JvdXA7CitpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5Xcml0ZUJ1ZmZlcldhdGVyTWFyazsKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLmVwb2xsLkVwb2xsRXZlbnRMb29wR3JvdXA7CiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5lcG9sbC5FcG9sbFNlcnZlclNvY2tldENoYW5uZWw7CiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5uaW8uTmlvRXZlbnRMb29wR3JvdXA7CkBAIC01OSw3ICs2MCw3IEBACiAKICAgICBzdGF0aWMgewogICAgICAgICAvLyBob29rIHNsZjRqIHVwIHRvIG5ldHR5IGludGVybmFsIGxvZ2dpbmcKLSAgICAgICAgSW50ZXJuYWxMb2dnZXJGYWN0b3J5LnNldERlZmF1bHRGYWN0b3J5KG5ldyBTbGY0SkxvZ2dlckZhY3RvcnkoKSk7CisgICAgICAgIEludGVybmFsTG9nZ2VyRmFjdG9yeS5zZXREZWZhdWx0RmFjdG9yeShTbGY0SkxvZ2dlckZhY3RvcnkuSU5TVEFOQ0UpOwogICAgIH0KIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVJWRVJfVEhSRUFEX1BSRUZJWCA9ICJncmVtbGluLXNlcnZlci0iOwpAQCAtMTQyLDggKzE0Myw4IEBACiAKICAgICAgICAgICAgIC8vIHdoZW4gaGlnaCB2YWx1ZSBpcyByZWFjaGVkIHRoZW4gdGhlIGNoYW5uZWwgYmVjb21lcyBub24td3JpdGFibGUgYW5kIHN0YXlzIGxpa2UgdGhhdCB1bnRpbCB0aGUKICAgICAgICAgICAgIC8vIGxvdyB2YWx1ZSBpcyBzbyB0aGF0IHRoZXJlIGlzIHRpbWUgdG8gcmVjb3ZlcgotICAgICAgICAgICAgYi5jaGlsZE9wdGlvbihDaGFubmVsT3B0aW9uLldSSVRFX0JVRkZFUl9ISUdIX1dBVEVSX01BUkssIHNldHRpbmdzLndyaXRlQnVmZmVySGlnaFdhdGVyTWFyayk7Ci0gICAgICAgICAgICBiLmNoaWxkT3B0aW9uKENoYW5uZWxPcHRpb24uV1JJVEVfQlVGRkVSX0xPV19XQVRFUl9NQVJLLCBzZXR0aW5ncy53cml0ZUJ1ZmZlckxvd1dhdGVyTWFyayk7CisgICAgICAgICAgICBiLmNoaWxkT3B0aW9uKENoYW5uZWxPcHRpb24uV1JJVEVfQlVGRkVSX1dBVEVSX01BUkssCisgICAgICAgICAgICAgICAgICAgIG5ldyBXcml0ZUJ1ZmZlcldhdGVyTWFyayhzZXR0aW5ncy53cml0ZUJ1ZmZlckxvd1dhdGVyTWFyaywgc2V0dGluZ3Mud3JpdGVCdWZmZXJIaWdoV2F0ZXJNYXJrKSk7CiAgICAgICAgICAgICBiLmNoaWxkT3B0aW9uKENoYW5uZWxPcHRpb24uQUxMT0NBVE9SLCBQb29sZWRCeXRlQnVmQWxsb2NhdG9yLkRFRkFVTFQpOwogCiAgICAgICAgICAgICAvLyBmaXJlIG9mZiBhbnkgbGlmZWN5Y2xlIHNjcmlwdHMgdGhhdCB3ZXJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLiBob29rcyBnZXQgaW5pdGlhbGl6ZWQgZHVyaW5nCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL1NldHRpbmdzLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL1NldHRpbmdzLmphdmEKaW5kZXggYzRhYWIyNy4uMDU5MTYzZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9TZXR0aW5ncy5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvU2V0dGluZ3MuamF2YQpAQCAtMTE2LDE1ICsxMTYsNiBAQAogICAgIHB1YmxpYyBsb25nIGV2YWx1YXRpb25UaW1lb3V0ID0gMzAwMDBMOwogCiAgICAgLyoqCi0gICAgICogVGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCB3aGlsZSBhbiBldmFsdWF0ZWQgc2NyaXB0IHNlcmlhbGl6ZXMgaXRzIHJlc3VsdHMuIFRoaXMgdmFsdWUgcmVwcmVzZW50cyB0aGUKLSAgICAgKiB0b3RhbCBzZXJpYWxpemF0aW9uIHRpbWUgYWxsb3dlZCBmb3IgdGhlIHJlcXVlc3QuICBEZWZhdWx0cyB0byAwIHdoaWNoIGRpc2FibGVzIHRoaXMgc2V0dGluZy4KLSAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjEsIHJlcGxhY2VkIHdob2xseSBieSB7QGxpbmsgI2V2YWx1YXRpb25UaW1lb3V0fS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBsb25nIHNlcmlhbGl6ZWRSZXNwb25zZVRpbWVvdXQgPSAwTDsKLQotICAgIC8qKgogICAgICAqIE51bWJlciBvZiBpdGVtcyBpbiBhIHBhcnRpY3VsYXIgcmVzdWx0c2V0IHRvIGl0ZXJhdGUgYW5kIHNlcmlhbGl6ZSBwcmlvciB0byBwdXNoaW5nIHRoZSBkYXRhIGRvd24gdGhlIHdpcmUKICAgICAgKiB0byB0aGUgY2xpZW50LgogICAgICAqLwpAQCAtNDI2LDE2ICs0MTcsNyBAQAogICAgICAgICAgKiB1c2VkIHRvIGxvYWQgdGhlIGltcGxlbWVudGF0aW9uIGZyb20gdGhlIGNsYXNzcGF0aC4gRGVmYXVsdHMgdG8ge0BsaW5rIEFsbG93QWxsQXV0aGVudGljYXRvcn0gd2hlbgogICAgICAgICAgKiBub3Qgc3BlY2lmaWVkLgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIFN0cmluZyBhdXRoZW50aWNhdG9yID0gbnVsbDsKLQotICAgICAgICAvKioKLSAgICAgICAgICogVGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzcyBuYW1lIG9mIHRoZSB7QGxpbmsgQXV0aGVudGljYXRvcn0gaW1wbGVtZW50YXRpb24uIFRoaXMgY2xhc3MgbmFtZSB3aWxsIGJlCi0gICAgICAgICAqIHVzZWQgdG8gbG9hZCB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgY2xhc3NwYXRoLiBEZWZhdWx0cyB0byB7QGxpbmsgQWxsb3dBbGxBdXRoZW50aWNhdG9yfSB3aGVuCi0gICAgICAgICAqIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjUsIHJlcGxhY2VkIGJ5IHtAbGluayAjYXV0aGVudGljYXRvcn0uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgU3RyaW5nIGNsYXNzTmFtZSA9IEFsbG93QWxsQXV0aGVudGljYXRvci5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgYXV0aGVudGljYXRvciA9IEFsbG93QWxsQXV0aGVudGljYXRvci5jbGFzcy5nZXROYW1lKCk7CiAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUge0BsaW5rIEFic3RyYWN0QXV0aGVudGljYXRpb25IYW5kbGVyfSBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvY2hhbm5lbC9XZWJTb2NrZXRDaGFubmVsaXplci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9jaGFubmVsL1dlYlNvY2tldENoYW5uZWxpemVyLmphdmEKaW5kZXggMDEwMTE0Yi4uNzczYjZmYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9jaGFubmVsL1dlYlNvY2tldENoYW5uZWxpemVyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9jaGFubmVsL1dlYlNvY2tldENoYW5uZWxpemVyLmphdmEKQEAgLTE5LDYgKzE5LDcgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbDsKIAogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC53ZWJzb2NrZXR4LlBpbmdXZWJTb2NrZXRGcmFtZTsKK2ltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5XZWJTb2NrZXREZWNvZGVyQ29uZmlnOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLkFic3RyYWN0Q2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuQ2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuYXV0aC5BbGxvd0FsbEF1dGhlbnRpY2F0b3I7CkBAIC05NSw4ICs5NiwxMiBAQAogCiAgICAgICAgIHBpcGVsaW5lLmFkZExhc3QoUElQRUxJTkVfSFRUUF9SRVNQT05TRV9FTkNPREVSLCBuZXcgSHR0cFJlc3BvbnNlRW5jb2RlcigpKTsKIAorICAgICAgICAvLyBzZXR0aW5nIGNsb3NlT25Qcm90b2NvbFZpb2xhdGlvbiB0byBmYWxzZSBwcmV2ZW50cyBjYXVzaW5nIGFsbCB0aGUgb3RoZXIgcmVxdWVzdHMgdXNpbmcgdGhlIHNhbWUgY2hhbm5lbAorICAgICAgICAvLyB0byBmYWlsIHdoZW4gYSBzaW5nbGUgcmVxdWVzdCBjYXVzZXMgYSBwcm90b2NvbCB2aW9sYXRpb24uCisgICAgICAgIGZpbmFsIFdlYlNvY2tldERlY29kZXJDb25maWcgd3NEZWNvZGVyQ29uZmlnID0gV2ViU29ja2V0RGVjb2RlckNvbmZpZy5uZXdCdWlsZGVyKCkuCisgICAgICAgICAgICAgICAgY2xvc2VPblByb3RvY29sVmlvbGF0aW9uKGZhbHNlKS5hbGxvd0V4dGVuc2lvbnMoZmFsc2UpLm1heEZyYW1lUGF5bG9hZExlbmd0aChzZXR0aW5ncy5tYXhDb250ZW50TGVuZ3RoKS5idWlsZCgpOwogICAgICAgICBwaXBlbGluZS5hZGRMYXN0KFBJUEVMSU5FX1JFUVVFU1RfSEFORExFUiwgbmV3IFdlYlNvY2tldFNlcnZlclByb3RvY29sSGFuZGxlcihHUkVNTElOX0VORFBPSU5ULAotICAgICAgICAgICAgICAgIG51bGwsIGZhbHNlLCBzZXR0aW5ncy5tYXhDb250ZW50TGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgbnVsbCwgZmFsc2UsIGZhbHNlLCAxMDAwMEwsIHdzRGVjb2RlckNvbmZpZykpOwogCiAgICAgICAgIGlmIChsb2dnZXIuaXNEZWJ1Z0VuYWJsZWQoKSkKICAgICAgICAgICAgIHBpcGVsaW5lLmFkZExhc3QobmV3IExvZ2dpbmdIYW5kbGVyKCJsb2ctYWdncmVnYXRvci1lbmNvZGVyIiwgTG9nTGV2ZWwuREVCVUcpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9IdHRwR3JlbWxpbkVuZHBvaW50SGFuZGxlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL0h0dHBHcmVtbGluRW5kcG9pbnRIYW5kbGVyLmphdmEKaW5kZXggY2Q1YzM0My4uZDEwMzc0MSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL0h0dHBHcmVtbGluRW5kcG9pbnRIYW5kbGVyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL0h0dHBHcmVtbGluRW5kcG9pbnRIYW5kbGVyLmphdmEKQEAgLTIxLDYgKzIxLDggQEAKIGltcG9ydCBjb20uY29kYWhhbGUubWV0cmljcy5NZXRlcjsKIGltcG9ydCBjb20uY29kYWhhbGUubWV0cmljcy5UaW1lcjsKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLlRvb0xvbmdGcmFtZUV4Y2VwdGlvbjsKK2ltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlclZhbHVlczsKK2ltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cFV0aWw7CiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLmV4Y2VwdGlvbi5FeGNlcHRpb25VdGlsczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5NZXNzYWdlU2VyaWFsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnM7CkBAIC04MCwxMyArODIsMTEgQEAKIGltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKIAogaW1wb3J0IHN0YXRpYyBjb20uY29kYWhhbGUubWV0cmljcy5NZXRyaWNSZWdpc3RyeS5uYW1lOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuQUNDRVNTX0NPTlRST0xfQUxMT1dfT1JJR0lOOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuQ09OTkVDVElPTjsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLk5hbWVzLkNPTlRFTlRfTEVOR1RIOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuQ09OVEVOVF9UWVBFOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuT1JJR0lOOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuaXMxMDBDb250aW51ZUV4cGVjdGVkOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuaXNLZWVwQWxpdmU7CitpbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVyTmFtZXMuQUNDRVNTX0NPTlRST0xfQUxMT1dfT1JJR0lOOworaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlck5hbWVzLkNPTk5FQ1RJT047CitpbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVyTmFtZXMuQ09OVEVOVF9MRU5HVEg7CitpbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVyTmFtZXMuQ09OVEVOVF9UWVBFOworaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlck5hbWVzLk9SSUdJTjsKIGltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBNZXRob2QuR0VUOwogaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cE1ldGhvZC5QT1NUOwogaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cFJlc3BvbnNlU3RhdHVzLkJBRF9SRVFVRVNUOwpAQCAtMTExLDExICsxMTEsNiBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR1NfQklORElOR1NfRE9UID0gVG9rZW5zLkFSR1NfQklORElOR1MgKyAiLiI7CiAKLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMS4wLCByZXBsYWNlZCBieSB7QGxpbmsgI0FSR1NfQUxJQVNFU19ET1R9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR1NfUkVCSU5ESU5HU19ET1QgPSBUb2tlbnMuQVJHU19SRUJJTkRJTkdTICsgIi4iOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX0FMSUFTRVNfRE9UID0gVG9rZW5zLkFSR1NfQUxJQVNFUyArICIuIjsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFRpbWVyIGV2YWxPcFRpbWVyID0gTWV0cmljTWFuYWdlci5JTlNUQU5DRS5nZXRUaW1lcihuYW1lKEdyZW1saW5TZXJ2ZXIuY2xhc3MsICJvcCIsICJldmFsIikpOwpAQCAtMTUyLDE3ICsxNDcsMTcgQEAKICAgICAgICAgaWYgKG1zZyBpbnN0YW5jZW9mIEZ1bGxIdHRwUmVxdWVzdCkgewogICAgICAgICAgICAgZmluYWwgRnVsbEh0dHBSZXF1ZXN0IHJlcSA9IChGdWxsSHR0cFJlcXVlc3QpIG1zZzsKIAotICAgICAgICAgICAgaWYgKCIvZmF2aWNvbi5pY28iLmVxdWFscyhyZXEuZ2V0VXJpKCkpKSB7CisgICAgICAgICAgICBpZiAoIi9mYXZpY29uLmljbyIuZXF1YWxzKHJlcS51cmkoKSkpIHsKICAgICAgICAgICAgICAgICBzZW5kRXJyb3IoY3R4LCBOT1RfRk9VTkQsICJHcmVtbGluIFNlcnZlciBkb2Vzbid0IGhhdmUgYSBmYXZpY29uLmljbyIpOwogICAgICAgICAgICAgICAgIFJlZmVyZW5jZUNvdW50VXRpbC5yZWxlYXNlKG1zZyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoaXMxMDBDb250aW51ZUV4cGVjdGVkKHJlcSkpIHsKKyAgICAgICAgICAgIGlmIChIdHRwVXRpbC5pczEwMENvbnRpbnVlRXhwZWN0ZWQocmVxKSkgewogICAgICAgICAgICAgICAgIGN0eC53cml0ZShuZXcgRGVmYXVsdEZ1bGxIdHRwUmVzcG9uc2UoSFRUUF8xXzEsIENPTlRJTlVFKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChyZXEuZ2V0TWV0aG9kKCkgIT0gR0VUICYmIHJlcS5nZXRNZXRob2QoKSAhPSBQT1NUKSB7CisgICAgICAgICAgICBpZiAocmVxLm1ldGhvZCgpICE9IEdFVCAmJiByZXEubWV0aG9kKCkgIT0gUE9TVCkgewogICAgICAgICAgICAgICAgIHNlbmRFcnJvcihjdHgsIE1FVEhPRF9OT1RfQUxMT1dFRCwgTUVUSE9EX05PVF9BTExPV0VELnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIFJlZmVyZW5jZUNvdW50VXRpbC5yZWxlYXNlKG1zZyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg2LDcgKzE4MSw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBvcmlnaW4gPSByZXEuaGVhZGVycygpLmdldChPUklHSU4pOwotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBrZWVwQWxpdmUgPSBpc0tlZXBBbGl2ZShyZXEpOworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBrZWVwQWxpdmUgPSBIdHRwVXRpbC5pc0tlZXBBbGl2ZShyZXEpOwogCiAgICAgICAgICAgICAvLyBub3QgdXNpbmcgdGhlIHJlcSBhbnkgd2hlcmUgYmVsb3cgaGVyZSAtIGFzc3VtZSBpdCBpcyBzYWZlIHRvIHJlbGVhc2UgYXQgdGhpcyBwb2ludC4KICAgICAgICAgICAgIFJlZmVyZW5jZUNvdW50VXRpbC5yZWxlYXNlKG1zZyk7CkBAIC0yMTcsNyArMjEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgha2VlcEFsaXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LndyaXRlQW5kRmx1c2gocmVzcG9uc2UpLmFkZExpc3RlbmVyKENoYW5uZWxGdXR1cmVMaXN0ZW5lci5DTE9TRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMoKS5zZXQoQ09OTkVDVElPTiwgSHR0cEhlYWRlcnMuVmFsdWVzLktFRVBfQUxJVkUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMoKS5zZXQoQ09OTkVDVElPTiwgSHR0cEhlYWRlclZhbHVlcy5LRUVQX0FMSVZFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgud3JpdGVBbmRGbHVzaChyZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM1NCw4ICszNDksOCBAQAogICAgIH0KIAogICAgIHByaXZhdGUgc3RhdGljIFF1YXJ0ZXQ8U3RyaW5nLCBNYXA8U3RyaW5nLCBPYmplY3Q+LCBTdHJpbmcsIE1hcDxTdHJpbmcsU3RyaW5nPj4gZ2V0UmVxdWVzdEFyZ3VtZW50cyhmaW5hbCBGdWxsSHR0cFJlcXVlc3QgcmVxdWVzdCkgewotICAgICAgICBpZiAocmVxdWVzdC5nZXRNZXRob2QoKSA9PSBHRVQpIHsKLSAgICAgICAgICAgIGZpbmFsIFF1ZXJ5U3RyaW5nRGVjb2RlciBkZWNvZGVyID0gbmV3IFF1ZXJ5U3RyaW5nRGVjb2RlcihyZXF1ZXN0LmdldFVyaSgpKTsKKyAgICAgICAgaWYgKHJlcXVlc3QubWV0aG9kKCkgPT0gR0VUKSB7CisgICAgICAgICAgICBmaW5hbCBRdWVyeVN0cmluZ0RlY29kZXIgZGVjb2RlciA9IG5ldyBRdWVyeVN0cmluZ0RlY29kZXIocmVxdWVzdC51cmkoKSk7CiAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gZ3JlbWxpblBhcm1zID0gZGVjb2Rlci5wYXJhbWV0ZXJzKCkuZ2V0KFRva2Vucy5BUkdTX0dSRU1MSU4pOwogCiAgICAgICAgICAgICBpZiAobnVsbCA9PSBncmVtbGluUGFybXMgfHwgZ3JlbWxpblBhcm1zLnNpemUoKSA9PSAwKQpAQCAtMzY4LDE4ICszNjMsOSBAQAogICAgICAgICAgICAgZGVjb2Rlci5wYXJhbWV0ZXJzKCkuZW50cnlTZXQoKS5zdHJlYW0oKS5maWx0ZXIoa3YgLT4ga3YuZ2V0S2V5KCkuc3RhcnRzV2l0aChBUkdTX0JJTkRJTkdTX0RPVCkpCiAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGt2IC0+IGJpbmRpbmdzLnB1dChrdi5nZXRLZXkoKS5zdWJzdHJpbmcoQVJHU19CSU5ESU5HU19ET1QubGVuZ3RoKCkpLCBrdi5nZXRWYWx1ZSgpLmdldCgwKSkpOwogCi0gICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBib3RoIHJlYmluZGluZ3MgYW5kIGFsaWFzZXMgcGFyYW1ldGVycyBhcyB0aGV5IGFyZSB0aGUgc2FtZSB0aGluZy4gYWxpYXNlcyB3ZXJlIGludHJvZHVjZWQKLSAgICAgICAgICAgIC8vIGFzIG9mIDMuMS4wIGFzIGEgcmVwbGFjZW1lbnQgZm9yIHJlYmluZGluZ3MuIHRoaXMgY2hlY2sgY2FuIGJlIHJlbW92ZWQgd2hlbiByZWJpbmRpbmdzIGFyZSBjb21wbGV0ZWx5Ci0gICAgICAgICAgICAvLyByZW1vdmVkIGZyb20gdGhlIHByb3RvY29sCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGhhc1JlYmluZGluZ3MgPSBkZWNvZGVyLnBhcmFtZXRlcnMoKS5lbnRyeVNldCgpLnN0cmVhbSgpLmFueU1hdGNoKGt2IC0+IGt2LmdldEtleSgpLnN0YXJ0c1dpdGgoQVJHU19SRUJJTkRJTkdTX0RPVCkpOwotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBoYXNBbGlhc2VzID0gZGVjb2Rlci5wYXJhbWV0ZXJzKCkuZW50cnlTZXQoKS5zdHJlYW0oKS5hbnlNYXRjaChrdiAtPiBrdi5nZXRLZXkoKS5zdGFydHNXaXRoKEFSR1NfQUxJQVNFU19ET1QpKTsKLSAgICAgICAgICAgIGlmIChoYXNSZWJpbmRpbmdzICYmIGhhc0FsaWFzZXMpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicHJlZmVyIHVzZSBvZiB0aGUgJ2FsaWFzZXMnIHBhcmFtZXRlciBvdmVyICdyZWJpbmRpbmdzJyBhbmQgZG8gbm90IHVzZSBib3RoIik7Ci0KICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gYWxpYXNlcyA9IG5ldyBIYXNoTWFwPD4oKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyByZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyID0gaGFzUmViaW5kaW5ncyA/IEFSR1NfUkVCSU5ESU5HU19ET1QgOiBBUkdTX0FMSUFTRVNfRE9UOwotICAgICAgICAgICAgZGVjb2Rlci5wYXJhbWV0ZXJzKCkuZW50cnlTZXQoKS5zdHJlYW0oKS5maWx0ZXIoa3YgLT4ga3YuZ2V0S2V5KCkuc3RhcnRzV2l0aChyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyKSkKLSAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goa3YgLT4gYWxpYXNlcy5wdXQoa3YuZ2V0S2V5KCkuc3Vic3RyaW5nKHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIubGVuZ3RoKCkpLCBrdi5nZXRWYWx1ZSgpLmdldCgwKSkpOworICAgICAgICAgICAgZGVjb2Rlci5wYXJhbWV0ZXJzKCkuZW50cnlTZXQoKS5zdHJlYW0oKS5maWx0ZXIoa3YgLT4ga3YuZ2V0S2V5KCkuc3RhcnRzV2l0aChBUkdTX0FMSUFTRVNfRE9UKSkKKyAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goa3YgLT4gYWxpYXNlcy5wdXQoa3YuZ2V0S2V5KCkuc3Vic3RyaW5nKEFSR1NfQUxJQVNFU19ET1QubGVuZ3RoKCkpLCBrdi5nZXRWYWx1ZSgpLmdldCgwKSkpOwogCiAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gbGFuZ3VhZ2VQYXJtcyA9IGRlY29kZXIucGFyYW1ldGVycygpLmdldChUb2tlbnMuQVJHU19MQU5HVUFHRSk7CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbGFuZ3VhZ2UgPSAobnVsbCA9PSBsYW5ndWFnZVBhcm1zIHx8IGxhbmd1YWdlUGFybXMuc2l6ZSgpID09IDApID8gbnVsbCA6IGxhbmd1YWdlUGFybXMuZ2V0KDApOwpAQCAtNDA0LDE2ICszOTAsNyBAQAogICAgICAgICAgICAgaWYgKGJpbmRpbmdzTm9kZSAhPSBudWxsKQogICAgICAgICAgICAgICAgIGJpbmRpbmdzTm9kZS5maWVsZHMoKS5mb3JFYWNoUmVtYWluaW5nKGt2IC0+IGJpbmRpbmdzLnB1dChrdi5nZXRLZXkoKSwgZnJvbUpzb25Ob2RlKGt2LmdldFZhbHVlKCkpKSk7CiAKLSAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGJvdGggcmViaW5kaW5ncyBhbmQgYWxpYXNlcyBwYXJhbWV0ZXJzIGFzIHRoZXkgYXJlIHRoZSBzYW1lIHRoaW5nLiBhbGlhc2VzIHdlcmUgaW50cm9kdWNlZAotICAgICAgICAgICAgLy8gYXMgb2YgMy4xLjAgYXMgYSByZXBsYWNlbWVudCBmb3IgcmViaW5kaW5ncy4gdGhpcyBjaGVjayBjYW4gYmUgcmVtb3ZlZCB3aGVuIHJlYmluZGluZ3MgYXJlIGNvbXBsZXRlbHkKLSAgICAgICAgICAgIC8vIHJlbW92ZWQgZnJvbSB0aGUgcHJvdG9jb2wKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzUmViaW5kaW5ncyA9IGJvZHkuaGFzKFRva2Vucy5BUkdTX1JFQklORElOR1MpOwotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBoYXNBbGlhc2VzID0gYm9keS5oYXMoVG9rZW5zLkFSR1NfQUxJQVNFUyk7Ci0gICAgICAgICAgICBpZiAoaGFzUmViaW5kaW5ncyAmJiBoYXNBbGlhc2VzKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInByZWZlciB1c2Ugb2YgdGhlICdhbGlhc2VzJyBwYXJhbWV0ZXIgb3ZlciAncmViaW5kaW5ncycgYW5kIGRvIG5vdCB1c2UgYm90aCIpOwotCi0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlciA9IGhhc1JlYmluZGluZ3MgPyBUb2tlbnMuQVJHU19SRUJJTkRJTkdTIDogVG9rZW5zLkFSR1NfQUxJQVNFUzsKLSAgICAgICAgICAgIGZpbmFsIEpzb25Ob2RlIGFsaWFzZXNOb2RlID0gYm9keS5nZXQocmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlcik7CisgICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBhbGlhc2VzTm9kZSA9IGJvZHkuZ2V0KFRva2Vucy5BUkdTX0FMSUFTRVMpOwogICAgICAgICAgICAgaWYgKGFsaWFzZXNOb2RlICE9IG51bGwgJiYgIWFsaWFzZXNOb2RlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYWxpYXNlcyBtdXN0IGJlIGEgTWFwIik7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9PcFNlbGVjdG9ySGFuZGxlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL09wU2VsZWN0b3JIYW5kbGVyLmphdmEKaW5kZXggODlhZTBlZS4uNWEyZTFmOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL09wU2VsZWN0b3JIYW5kbGVyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL09wU2VsZWN0b3JIYW5kbGVyLmphdmEKQEAgLTU2LDE1ICs1Niw2IEBACiAgICAgcHJpdmF0ZSBmaW5hbCBTY2hlZHVsZWRFeGVjdXRvclNlcnZpY2Ugc2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlOwogICAgIHByaXZhdGUgZmluYWwgQ2hhbm5lbGl6ZXIgY2hhbm5lbGl6ZXI7CiAKLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi44LCByZXBsYWNlZCBieSB7QGxpbmsgI09wU2VsZWN0b3JIYW5kbGVyKFNldHRpbmdzLCBHcmFwaE1hbmFnZXIsIEdyZW1saW5FeGVjdXRvciwgU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlLCBDaGFubmVsaXplcil9Ci0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgT3BTZWxlY3RvckhhbmRsZXIoZmluYWwgU2V0dGluZ3Mgc2V0dGluZ3MsIGZpbmFsIEdyYXBoTWFuYWdlciBncmFwaE1hbmFnZXIsIGZpbmFsIEdyZW1saW5FeGVjdXRvciBncmVtbGluRXhlY3V0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSBzY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UpIHsKLSAgICAgICAgdGhpcyhzZXR0aW5ncywgZ3JhcGhNYW5hZ2VyLCBncmVtbGluRXhlY3V0b3IsIHNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSwgbnVsbCk7Ci0gICAgfQotCiAgICAgcHVibGljIE9wU2VsZWN0b3JIYW5kbGVyKGZpbmFsIFNldHRpbmdzIHNldHRpbmdzLCBmaW5hbCBHcmFwaE1hbmFnZXIgZ3JhcGhNYW5hZ2VyLCBmaW5hbCBHcmVtbGluRXhlY3V0b3IgZ3JlbWxpbkV4ZWN1dG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTY2hlZHVsZWRFeGVjdXRvclNlcnZpY2Ugc2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlLCBmaW5hbCBDaGFubmVsaXplciBjaGFubmVsaXplcikgewogICAgICAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvU2FzbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1Nhc2xBdXRoZW50aWNhdGlvbkhhbmRsZXIuamF2YQppbmRleCBlZDNkZGM5Li4zZTExYWU4IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvU2FzbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9TYXNsQXV0aGVudGljYXRpb25IYW5kbGVyLmphdmEKQEAgLTMyLDYgKzMyLDcgQEAKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogCitpbXBvcnQgaW8ubmV0dHkudXRpbC5BdHRyaWJ1dGVNYXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVxdWVzdE1lc3NhZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZU1lc3NhZ2U7CkBAIC03Myw4ICs3NCw4IEBACiAgICAgICAgIGlmIChtc2cgaW5zdGFuY2VvZiBSZXF1ZXN0TWVzc2FnZSl7CiAgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0TWVzc2FnZSA9IChSZXF1ZXN0TWVzc2FnZSkgbXNnOwogCi0gICAgICAgICAgICBmaW5hbCBBdHRyaWJ1dGU8QXV0aGVudGljYXRvci5TYXNsTmVnb3RpYXRvcj4gbmVnb3RpYXRvciA9IGN0eC5hdHRyKFN0YXRlS2V5Lk5FR09USUFUT1IpOwotICAgICAgICAgICAgZmluYWwgQXR0cmlidXRlPFJlcXVlc3RNZXNzYWdlPiByZXF1ZXN0ID0gY3R4LmF0dHIoU3RhdGVLZXkuUkVRVUVTVF9NRVNTQUdFKTsKKyAgICAgICAgICAgIGZpbmFsIEF0dHJpYnV0ZTxBdXRoZW50aWNhdG9yLlNhc2xOZWdvdGlhdG9yPiBuZWdvdGlhdG9yID0gKChBdHRyaWJ1dGVNYXApIGN0eCkuYXR0cihTdGF0ZUtleS5ORUdPVElBVE9SKTsKKyAgICAgICAgICAgIGZpbmFsIEF0dHJpYnV0ZTxSZXF1ZXN0TWVzc2FnZT4gcmVxdWVzdCA9ICgoQXR0cmlidXRlTWFwKSBjdHgpLmF0dHIoU3RhdGVLZXkuUkVRVUVTVF9NRVNTQUdFKTsKICAgICAgICAgICAgIGlmIChuZWdvdGlhdG9yLmdldCgpID09IG51bGwpIHsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdCB0aW1lIHRocm91Z2ggc28gc2F2ZSB0aGUgcmVxdWVzdCBhbmQgc2VuZCBhbiBBVVRIRU5USUNBVEUgY2hhbGxlbmdlIHdpdGggbm8gZGF0YQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1dlYlNvY2tldEhhbmRsZXJVdGlsLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvV2ViU29ja2V0SGFuZGxlclV0aWwuamF2YQppbmRleCBhYjA0YjhjLi5lZTM3ZTQ0IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvV2ViU29ja2V0SGFuZGxlclV0aWwuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvV2ViU29ja2V0SGFuZGxlclV0aWwuamF2YQpAQCAtMjAsOCArMjAsOCBAQAogCiBpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBNZXNzYWdlOwogCi1pbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVycy5OYW1lcy5VUEdSQURFOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuQ09OTkVDVElPTjsKK2ltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJOYW1lcy5VUEdSQURFOworaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlck5hbWVzLkNPTk5FQ1RJT047CiAKIC8qKgogICogQSBjbGFzcyB0byBoYW5kbGUgY29tbW9uIFdlYlNvY2tldCBvcGVyYXRpb25zLgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1dzQW5kSHR0cENoYW5uZWxpemVySGFuZGxlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1dzQW5kSHR0cENoYW5uZWxpemVySGFuZGxlci5qYXZhCmluZGV4IDAxNTc5YTMuLmU0Zjc5YjQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9Xc0FuZEh0dHBDaGFubmVsaXplckhhbmRsZXIuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvV3NBbmRIdHRwQ2hhbm5lbGl6ZXJIYW5kbGVyLmphdmEKQEAgLTIyLDIxICsyMiwxMiBAQAogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuQ2hhbm5lbEhhbmRsZXJDb250ZXh0OwogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuQ2hhbm5lbEluYm91bmRIYW5kbGVyQWRhcHRlcjsKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLkNoYW5uZWxQaXBlbGluZTsKLWltcG9ydCBpby5uZXR0eS5jaGFubmVsLkV2ZW50TG9vcEdyb3VwOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwTWVzc2FnZTsKLWltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5XZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbEhhbmRsZXI7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBTZXJ2ZXJDb2RlYzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5DaGFubmVsaXplcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5jaGFubmVsLkh0dHBDaGFubmVsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5jaGFubmVsLldlYlNvY2tldENoYW5uZWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmNoYW5uZWwuV3NBbmRIdHRwQ2hhbm5lbGl6ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuaGFuZGxlci5IdHRwR3JlbWxpbkVuZHBvaW50SGFuZGxlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5oYW5kbGVyLldzQW5kSHR0cENoYW5uZWxpemVySGFuZGxlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5oYW5kbGVyLldlYlNvY2tldEhhbmRsZXJVdGlsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLnV0aWwuU2VydmVyR3JlbWxpbkV4ZWN1dG9yOwogCi1pbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVycy5OYW1lcy5VUEdSQURFOwotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuQ09OTkVDVElPTjsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5XZWJTb2NrZXRDaGFubmVsaXplci5QSVBFTElORV9BVVRIRU5USUNBVE9SOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5jaGFubmVsLldlYlNvY2tldENoYW5uZWxpemVyLlBJUEVMSU5FX1JFUVVFU1RfSEFORExFUjsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5XZWJTb2NrZXRDaGFubmVsaXplci5QSVBFTElORV9IVFRQX1JFU1BPTlNFX0VOQ09ERVI7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0RXZhbE9wUHJvY2Vzc29yLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0RXZhbE9wUHJvY2Vzc29yLmphdmEKaW5kZXggOTUwMzhlNC4uMjYyMGU0NyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9BYnN0cmFjdEV2YWxPcFByb2Nlc3Nvci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvQWJzdHJhY3RFdmFsT3BQcm9jZXNzb3IuamF2YQpAQCAtMjk5LDkgKzI5OSw5IEBACiAgICAgICAgICAgICAgICAgICAgIC8vIHByZXNlbnRlZCBpdHNlbGYgd2hlcmUgdGhlICJNZXRob2QgY29kZSB0b28gbGFyZ2UhIiBjb21lcyB3aXRoIG90aGVyIGNvbXBpbGF0aW9uIGVycm9ycyBzbwogICAgICAgICAgICAgICAgICAgICAvLyBpdCBzZWVtcyB0aGF0IHRoaXMgbWVzc2FnZSB0cnVtcHMgb3RoZXIgY29tcGlsYXRpb24gZXJyb3JzIHRvIHNvbWUgcmVhc29uYWJsZSBkZWdyZWUgdGhhdCBlbmRzCiAgICAgICAgICAgICAgICAgICAgIC8vIHVwIGJlaW5nIGZhdm9yYWJsZSBmb3IgdGhpcyBwcm9ibGVtCi0gICAgICAgICAgICAgICAgICAgIGlmICh0IGluc3RhbmNlb2YgTXVsdGlwbGVDb21waWxhdGlvbkVycm9yc0V4Y2VwdGlvbiAmJiB0LmdldE1lc3NhZ2UoKS5jb250YWlucygiTWV0aG9kIGNvZGUgdG9vIGxhcmdlISIpICYmCisgICAgICAgICAgICAgICAgICAgIGlmICh0IGluc3RhbmNlb2YgTXVsdGlwbGVDb21waWxhdGlvbkVycm9yc0V4Y2VwdGlvbiAmJiB0LmdldE1lc3NhZ2UoKS5jb250YWlucygiTWV0aG9kIHRvbyBsYXJnZSIpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNdWx0aXBsZUNvbXBpbGF0aW9uRXJyb3JzRXhjZXB0aW9uKSB0KS5nZXRFcnJvckNvbGxlY3RvcigpLmdldEVycm9yQ291bnQoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nLmZvcm1hdCgiVGhlIEdyZW1saW4gc3RhdGVtZW50IHRoYXQgd2FzIHN1Ym1pdHRlZCBleGNlZWQgdGhlIG1heGltdW0gY29tcGlsYXRpb24gc2l6ZSBhbGxvd2VkIGJ5IHRoZSBKVk0sIHBsZWFzZSBzcGxpdCBpdCBpbnRvIG11bHRpcGxlIHNtYWxsZXIgc3RhdGVtZW50cyAtICVzIiwgdHJpbU1lc3NhZ2UobXNnKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nLmZvcm1hdCgiVGhlIEdyZW1saW4gc3RhdGVtZW50IHRoYXQgd2FzIHN1Ym1pdHRlZCBleGNlZWRzIHRoZSBtYXhpbXVtIGNvbXBpbGF0aW9uIHNpemUgYWxsb3dlZCBieSB0aGUgSlZNLCBwbGVhc2Ugc3BsaXQgaXQgaW50byBtdWx0aXBsZSBzbWFsbGVyIHN0YXRlbWVudHMgLSAlcyIsIHRyaW1NZXNzYWdlKG1zZykpOwogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oZXJyb3JNZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC53cml0ZUFuZEZsdXNoKFJlc3BvbnNlTWVzc2FnZS5idWlsZChtc2cpLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9TQ1JJUFRfRVZBTFVBVElPTikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdGF0dXNNZXNzYWdlKGVycm9yTWVzc2FnZSkKQEAgLTMyMSw3ICszMjEsNyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFVzZWQgdG8gZGVjcmVhc2UgdGhlIHNpemUgb2YgYSBHcmVtbGluIHNjcmlwdCB0aGF0IHRyaWdnZXJlZCBhICJtZXRob2QgY29kZSB0b28gbGFyZ2UiIGV4Y2VwdGlvbiBzbyB0aGF0IGl0CisgICAgICogVXNlZCB0byBkZWNyZWFzZSB0aGUgc2l6ZSBvZiBhIEdyZW1saW4gc2NyaXB0IHRoYXQgdHJpZ2dlcmVkIGEgIm1ldGhvZCB0b28gbGFyZ2UiIGV4Y2VwdGlvbiBzbyB0aGF0IGl0CiAgICAgICogZG9lc24ndCBsb2cgYSBtYXNzaXZlIHRleHQgc3RyaW5nIG5vciByZXR1cm4gYSBsYXJnZSBlcnJvciBtZXNzYWdlLgogICAgICAqLwogICAgIHByaXZhdGUgUmVxdWVzdE1lc3NhZ2UgdHJpbU1lc3NhZ2UoZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0T3BQcm9jZXNzb3IuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvQWJzdHJhY3RPcFByb2Nlc3Nvci5qYXZhCmluZGV4IDAzYmY2ZmQuLjYyNTRiMWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvQWJzdHJhY3RPcFByb2Nlc3Nvci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvQWJzdHJhY3RPcFByb2Nlc3Nvci5qYXZhCkBAIC0xOSw3ICsxOSw2IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wOwogCiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5DaGFubmVsSGFuZGxlckNvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLnRpbWUuU3RvcFdhdGNoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLk1lc3NhZ2VTZXJpYWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwpAQCAtMzksMTIgKzM4LDEyIEBACiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uOwogCiAvKioKICAqIEEgYmFzZSB7QGxpbmsgT3BQcm9jZXNzb3J9IGltcGxlbWVudGF0aW9uIHRoYXQgcHJvY2Vzc2VzIGFuIHtAY29kZSBJdGVyYXRvcn0gb2YgcmVzdWx0cyBpbiBhIGdlbmVyYWxpemVkIHdheSB3aGlsZQpAQCAtNjUsMjcgKzY0LDIwIEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogQSB2YXJpYW50IG9mIHtAbGluayAjaGFuZGxlSXRlcmF0b3IoQ29udGV4dCwgSXRlcmF0b3IpfSB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gc2l0dWF0aW9ucyB3aGVuIG11bHRpcGxlCi0gICAgICogdGhyZWFkcyBtYXkgcHJvZHVjZSB7QGxpbmsgUmVzcG9uc2VTdGF0dXNDb2RlI2lzRmluYWxSZXNwb25zZSgpIGZpbmFsfSByZXNwb25zZSBtZXNzYWdlcyBjb25jdXJyZW50bHkuCiAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjMuOCwgbm90IHJlcGxhY2VkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCi0gICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlSXRlcmF0b3IoZmluYWwgUmVzcG9uc2VIYW5kbGVyQ29udGV4dCByaGMsIGZpbmFsIEl0ZXJhdG9yIGl0dHkpIHRocm93cyBUaW1lb3V0RXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlSXRlcmF0b3IoZmluYWwgUmVzcG9uc2VIYW5kbGVyQ29udGV4dCByaGMsIGZpbmFsIEl0ZXJhdG9yIGl0dHkpIHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CiAgICAgICAgIGhhbmRsZUl0ZXJhdG9yKHJoYy5nZXRDb250ZXh0KCksIGl0dHkpOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIFByb3ZpZGVzIGEgZ2VuZXJpYyB3YXkgb2YgaXRlcmF0aW5nIGEgcmVzdWx0IHNldCBiYWNrIHRvIHRoZSBjbGllbnQuIEltcGxlbWVudGVycyBzaG91bGQgcmVzcGVjdCB0aGUKLSAgICAgKiB7QGxpbmsgU2V0dGluZ3Mjc2VyaWFsaXplZFJlc3BvbnNlVGltZW91dH0gY29uZmlndXJhdGlvbiBhbmQgYnJlYWsgdGhlIHNlcmlhbGl6YXRpb24gcHJvY2VzcyBpZgotICAgICAqIGl0IGJlZ2lucyB0byB0YWtlIHRvbyBsb25nIHRvIGRvIHNvLCB0aHJvd2luZyBhIHtAY29kZSBUaW1lb3V0RXhjZXB0aW9ufSBpbiBzdWNoCi0gICAgICogY2FzZXMuCisgICAgICogUHJvdmlkZXMgYSBnZW5lcmljIHdheSBvZiBpdGVyYXRpbmcgYSByZXN1bHQgc2V0IGJhY2sgdG8gdGhlIGNsaWVudC4KICAgICAgKgotICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBHcmVtbGluIFNlcnZlciB7QGxpbmsgQ29udGV4dH0gd2hpY2ggZW5mb3JjZXMgdGhhdCBvbmx5IGEgc2luZ2xlIGZpbmFsIHJlc3BvbnNlIGlzCi0gICAgICogICAgICAgICAgICBzZW50IHRvIHRoZSBjbGllbnQuCisgICAgICogQHBhcmFtIGNvbnRleHQgVGhlIEdyZW1saW4gU2VydmVyIHtAbGluayBDb250ZXh0fSBvYmplY3QgY29udGFpbmluZyBzZXR0aW5ncywgcmVxdWVzdCBtZXNzYWdlLCBldGMuCiAgICAgICogQHBhcmFtIGl0dHkgVGhlIHJlc3VsdCB0byBpdGVyYXRvcgotICAgICAqIEB0aHJvd3MgVGltZW91dEV4Y2VwdGlvbiBpZiB0aGUgdGltZSB0YWtlbiB0byBzZXJpYWxpemUgdGhlIGVudGlyZSByZXN1bHQgc2V0IGV4Y2VlZHMgdGhlIGFsbG93YWJsZSB0aW1lLgogICAgICAqLwotICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUl0ZXJhdG9yKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgSXRlcmF0b3IgaXR0eSkgdGhyb3dzIFRpbWVvdXRFeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVJdGVyYXRvcihmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIEl0ZXJhdG9yIGl0dHkpIHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIENoYW5uZWxIYW5kbGVyQ29udGV4dCBuZXR0eUNvbnRleHQgPSBjb250ZXh0LmdldENoYW5uZWxIYW5kbGVyQ29udGV4dCgpOwogICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2cgPSBjb250ZXh0LmdldFJlcXVlc3RNZXNzYWdlKCk7CiAgICAgICAgIGZpbmFsIFNldHRpbmdzIHNldHRpbmdzID0gY29udGV4dC5nZXRTZXR0aW5ncygpOwpAQCAtOTksMTkgKzkxLDE3IEBACiAKICAgICAgICAgLy8gd2UgaGF2ZSBhbiBlbXB0eSBpdGVyYXRvciAtIGhhcHBlbnMgb24gc3R1ZmYgbGlrZTogZy5WKCkuaXRlcmF0ZSgpCiAgICAgICAgIGlmICghaXR0eS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gYXR0cmlidXRlcyA9IGdlbmVyYXRlU3RhdHVzQXR0cmlidXRlcyhuZXR0eUNvbnRleHQsIG1zZywgUmVzcG9uc2VTdGF0dXNDb2RlLk5PX0NPTlRFTlQsIGl0dHksIHNldHRpbmdzKTsKICAgICAgICAgICAgIC8vIGFzIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0byBpdGVyYXRlIGlmIHdlIGFyZSB0cmFuc2FjdGlvbiBtYW5hZ2VkIHRoZW4gd2Ugc2hvdWxkIGV4ZWN1dGUgYQogICAgICAgICAgICAgLy8gY29tbWl0IGhlcmUgYmVmb3JlIHdlIHNlbmQgYmFjayBhIE5PX0NPTlRFTlQgd2hpY2ggaW1wbGllcyBzdWNjZXNzCiAgICAgICAgICAgICBpZiAobWFuYWdlZFRyYW5zYWN0aW9uc0ZvclJlcXVlc3QpIGF0dGVtcHRDb21taXQobXNnLCBjb250ZXh0LmdldEdyYXBoTWFuYWdlcigpLCBzZXR0aW5ncy5zdHJpY3RUcmFuc2FjdGlvbk1hbmFnZW1lbnQpOwogICAgICAgICAgICAgY29udGV4dC53cml0ZUFuZEZsdXNoKFJlc3BvbnNlTWVzc2FnZS5idWlsZChtc2cpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuTk9fQ09OVEVOVCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5OT19DT05URU5UKQorICAgICAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gdGltZXIgZm9yIHRoZSB0b3RhbCBzZXJpYWxpemF0aW9uIHRpbWUKLSAgICAgICAgZmluYWwgU3RvcFdhdGNoIHN0b3BXYXRjaCA9IG5ldyBTdG9wV2F0Y2goKTsKLSAgICAgICAgc3RvcFdhdGNoLnN0YXJ0KCk7Ci0KICAgICAgICAgLy8gdGhlIGJhdGNoIHNpemUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIHJlcXVlc3QKICAgICAgICAgZmluYWwgaW50IHJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZSA9IChJbnRlZ2VyKSBtc2cub3B0aW9uYWxBcmdzKFRva2Vucy5BUkdTX0JBVENIX1NJWkUpCiAgICAgICAgICAgICAgICAgLm9yRWxzZShzZXR0aW5ncy5yZXN1bHRJdGVyYXRpb25CYXRjaFNpemUpOwpAQCAtMTYxLDcgKzE1MSw5IEBACiAgICAgICAgICAgICAgICAgICAgIC8vIHRocmVhZCB0aGF0IHByb2Nlc3NlZCB0aGUgZXZhbCBvZiB0aGUgc2NyaXB0IHNvLCB3ZSBoYXZlIHRvIHB1c2ggc2VyaWFsaXphdGlvbiBkb3duIGludG8gdGhhdAogICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSA9IG1ha2VGcmFtZShjb250ZXh0LCBtc2csIHNlcmlhbGl6ZXIsIHVzZUJpbmFyeSwgYWdncmVnYXRlLCBjb2RlLCBnZW5lcmF0ZU1ldGFEYXRhKG5ldHR5Q29udGV4dCwgbXNnLCBjb2RlLCBpdHR5KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSA9IG1ha2VGcmFtZShjb250ZXh0LCBtc2csIHNlcmlhbGl6ZXIsIHVzZUJpbmFyeSwgYWdncmVnYXRlLCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZVJlc3VsdE1ldGFEYXRhKG5ldHR5Q29udGV4dCwgbXNnLCBjb2RlLCBpdHR5LCBzZXR0aW5ncyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlU3RhdHVzQXR0cmlidXRlcyhuZXR0eUNvbnRleHQsIG1zZywgY29kZSwgaXR0eSwgc2V0dGluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGZyYW1lIG1heSB1c2UgYSBCeXRlYnVmIHdoaWNoIGlzIGEgY291bnRhYmxlIHJlbGVhc2UgLSBpZiBpdCBkb2VzIG5vdCBnZXQgd3JpdHRlbgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93bnN0cmVhbSBpdCBuZWVkcyB0byBiZSByZWxlYXNlZCBoZXJlCkBAIC0yMjIsMTggKzIxNCw3IEBACiAgICAgICAgICAgICAgICAgLy8gdGhpcyBpc24ndCBibG9ja2luZyB0aGUgSU8gdGhyZWFkIC0ganVzdCBhIHdvcmtlci4KICAgICAgICAgICAgICAgICBUaW1lVW5pdC5NSUxMSVNFQ09ORFMuc2xlZXAoMTApOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdG9wV2F0Y2guc3BsaXQoKTsKLSAgICAgICAgICAgIGlmIChzZXR0aW5ncy5zZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0ID4gMCAmJiBzdG9wV2F0Y2guZ2V0U3BsaXRUaW1lKCkgPiBzZXR0aW5ncy5zZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0KSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRpbWVvdXRNc2cgPSBTdHJpbmcuZm9ybWF0KCJTZXJpYWxpemF0aW9uIG9mIHRoZSBlbnRpcmUgcmVzcG9uc2UgZXhjZWVkZWQgdGhlICdzZXJpYWxpemVSZXNwb25zZVRpbWVvdXQnIHNldHRpbmcgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgd2Fybk9uY2UgPyAiW0dyZW1saW4gU2VydmVyIHBhdXNlZCB3cml0ZXMgdG8gY2xpZW50IGFzIG1lc3NhZ2VzIHdlcmUgbm90IGJlaW5nIGNvbnN1bWVkIHF1aWNrbHkgZW5vdWdoXSIgOiAiIik7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVvdXRFeGNlcHRpb24odGltZW91dE1zZy50cmltKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdG9wV2F0Y2gudW5zcGxpdCgpOwogICAgICAgICB9Ci0KLSAgICAgICAgc3RvcFdhdGNoLnN0b3AoKTsKICAgICB9CiAKICAgICAvKioKQEAgLTI1NywyNCArMjM4LDQ2IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2VuZXJhdGVzIG1ldGEtZGF0YSB0byBwdXQgb24gYSB7QGxpbmsgUmVzcG9uc2VNZXNzYWdlfS4KKyAgICAgKiBHZW5lcmF0ZXMgcmVzcG9uc2UgcmVzdWx0IG1ldGEtZGF0YSB0byBwdXQgb24gYSB7QGxpbmsgUmVzcG9uc2VNZXNzYWdlfS4KICAgICAgKgogICAgICAqIEBwYXJhbSBpdHR5IGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHtAbGluayBJdGVyYXRvcn0gb2YgcmVzdWx0cyAtIGl0IGlzIG5vdCBtZWFudCB0byBiZSBmb3J3YXJkZWQgaW4KICAgICAgKiAgICAgICAgICAgICB0aGlzIG1ldGhvZAorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjZ2VuZXJhdGVSZXN1bHRNZXRhRGF0YShDaGFubmVsSGFuZGxlckNvbnRleHQsIFJlcXVlc3RNZXNzYWdlLCBSZXNwb25zZVN0YXR1c0NvZGUsIEl0ZXJhdG9yLCBTZXR0aW5ncyl9CiAgICAgICovCi0gICAgcHJvdGVjdGVkIE1hcDxTdHJpbmcsT2JqZWN0PiBnZW5lcmF0ZU1ldGFEYXRhKGZpbmFsIENoYW5uZWxIYW5kbGVyQ29udGV4dCBjdHgsIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIGNvZGUsIGZpbmFsIEl0ZXJhdG9yIGl0dHkpIHsKKyAgICBARGVwcmVjYXRlZAorICAgIHByb3RlY3RlZCBNYXA8U3RyaW5nLCBPYmplY3Q+IGdlbmVyYXRlTWV0YURhdGEoZmluYWwgQ2hhbm5lbEhhbmRsZXJDb250ZXh0IGN0eCwgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIGNvZGUsIGZpbmFsIEl0ZXJhdG9yIGl0dHkpIHsKICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TWFwKCk7CiAgICAgfQogCiAgICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMiwgcmVwbGFjZWQgYnkge0BsaW5rICNtYWtlRnJhbWUoQ29udGV4dCwgUmVxdWVzdE1lc3NhZ2UsIE1lc3NhZ2VTZXJpYWxpemVyLCBib29sZWFuLCBMaXN0LCBSZXNwb25zZVN0YXR1c0NvZGUsIE1hcCl9LgorICAgICAqIEdlbmVyYXRlcyByZXNwb25zZSByZXN1bHQgbWV0YS1kYXRhIHRvIHB1dCBvbiBhIHtAbGluayBSZXNwb25zZU1lc3NhZ2V9LgorICAgICAqCisgICAgICogQHBhcmFtIGl0dHkgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQge0BsaW5rIEl0ZXJhdG9yfSBvZiByZXN1bHRzIC0gaXQgaXMgbm90IG1lYW50IHRvIGJlIGZvcndhcmRlZCBpbgorICAgICAqICAgICAgICAgICAgIHRoaXMgbWV0aG9kCiAgICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwcm90ZWN0ZWQgc3RhdGljIEZyYW1lIG1ha2VGcmFtZShmaW5hbCBDaGFubmVsSGFuZGxlckNvbnRleHQgY3R4LCBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplciwgZmluYWwgYm9vbGVhbiB1c2VCaW5hcnksIGZpbmFsIExpc3Q8T2JqZWN0PiBhZ2dyZWdhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIGNvZGUpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gbWFrZUZyYW1lKGN0eCwgbXNnLCBzZXJpYWxpemVyLCB1c2VCaW5hcnksIGFnZ3JlZ2F0ZSwgY29kZSwgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSk7CisgICAgcHJvdGVjdGVkIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2VuZXJhdGVSZXN1bHRNZXRhRGF0YShmaW5hbCBDaGFubmVsSGFuZGxlckNvbnRleHQgY3R4LCBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSwgZmluYWwgSXRlcmF0b3IgaXR0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFNldHRpbmdzIHNldHRpbmdzKSB7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZU1ldGFEYXRhKGN0eCwgbXNnLCBjb2RlLCBpdHR5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgcmVzcG9uc2Ugc3RhdHVzIG1ldGEtZGF0YSB0byBwdXQgb24gYSB7QGxpbmsgUmVzcG9uc2VNZXNzYWdlfS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpdHR5IGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHtAbGluayBJdGVyYXRvcn0gb2YgcmVzdWx0cyAtIGl0IGlzIG5vdCBtZWFudCB0byBiZSBmb3J3YXJkZWQgaW4KKyAgICAgKiAgICAgICAgICAgICB0aGlzIG1ldGhvZAorICAgICAqLworICAgIHByb3RlY3RlZCBNYXA8U3RyaW5nLCBPYmplY3Q+IGdlbmVyYXRlU3RhdHVzQXR0cmlidXRlcyhmaW5hbCBDaGFubmVsSGFuZGxlckNvbnRleHQgY3R4LCBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlLCBmaW5hbCBJdGVyYXRvciBpdHR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXR0aW5ncyBzZXR0aW5ncykgeworICAgICAgICAvLyBvbmx5IHJldHVybiBzZXJ2ZXIgbWV0YWRhdGEgb24gdGhlIGxhc3QgbWVzc2FnZQorICAgICAgICBpZiAoaXR0eS5oYXNOZXh0KCkpIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpOworCisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gbWV0YURhdGEgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIG1ldGFEYXRhLnB1dChUb2tlbnMuQVJHU19IT1NULCBjdHguY2hhbm5lbCgpLnJlbW90ZUFkZHJlc3MoKS50b1N0cmluZygpKTsKKworICAgICAgICByZXR1cm4gbWV0YURhdGE7CiAgICAgfQogCiAgICAgLyoqCkBAIC0yODMsMTAgKzI4NiwxMSBAQAogICAgIEBEZXByZWNhdGVkCiAgICAgcHJvdGVjdGVkIHN0YXRpYyBGcmFtZSBtYWtlRnJhbWUoZmluYWwgQ2hhbm5lbEhhbmRsZXJDb250ZXh0IGN0eCwgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXIsIGZpbmFsIGJvb2xlYW4gdXNlQmluYXJ5LCBmaW5hbCBMaXN0PE9iamVjdD4gYWdncmVnYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlLCBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gcmVzcG9uc2VNZXRhRGF0YSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIGNvZGUsIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiByZXNwb25zZU1ldGFEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0ID0gbmV3IENvbnRleHQobXNnLCBjdHgsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOyAvLyBkdW1teSBjb250ZXh0LCBnb29kIG9ubHkgZm9yIHdyaXRpbmcgcmVzcG9uc2UgbWVzc2FnZXMgdG8gdGhlIGNoYW5uZWwKICAgICAgICAgZmluYWwgUmVzcG9uc2VIYW5kbGVyQ29udGV4dCByaGMgPSBuZXcgUmVzcG9uc2VIYW5kbGVyQ29udGV4dChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIG1ha2VGcmFtZShyaGMsIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LCBhZ2dyZWdhdGUsIGNvZGUsIHJlc3BvbnNlTWV0YURhdGEpOworICAgICAgICByZXR1cm4gbWFrZUZyYW1lKHJoYywgbXNnLCBzZXJpYWxpemVyLCB1c2VCaW5hcnksIGFnZ3JlZ2F0ZSwgY29kZSwgcmVzcG9uc2VNZXRhRGF0YSwgc3RhdHVzQXR0cmlidXRlcyk7CiAgICAgfQogCiAgICAgLyoqCkBAIC0yOTksMTUgKzMwMywzOCBAQAogICAgICAgICByZXR1cm4gbWFrZUZyYW1lKHJoYy5nZXRDb250ZXh0KCksIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LGFnZ3JlZ2F0ZSwgY29kZSwgcmVzcG9uc2VNZXRhRGF0YSk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjMuOCwgcmVwbGFjZWQgYnkge0BsaW5rICNtYWtlRnJhbWUoQ29udGV4dCwgUmVxdWVzdE1lc3NhZ2UsIE1lc3NhZ2VTZXJpYWxpemVyLCBib29sZWFuLCBMaXN0LCBSZXNwb25zZVN0YXR1c0NvZGUsIE1hcCl9LgorICAgICAqLworICAgIEBEZXByZWNhdGVkCisgICAgcHJvdGVjdGVkIHN0YXRpYyBGcmFtZSBtYWtlRnJhbWUoZmluYWwgUmVzcG9uc2VIYW5kbGVyQ29udGV4dCByaGMsIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyLCBmaW5hbCBib29sZWFuIHVzZUJpbmFyeSwgZmluYWwgTGlzdDxPYmplY3Q+IGFnZ3JlZ2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSwgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHJlc3BvbnNlTWV0YURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICByZXR1cm4gbWFrZUZyYW1lKHJoYy5nZXRDb250ZXh0KCksIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LGFnZ3JlZ2F0ZSwgY29kZSwgcmVzcG9uc2VNZXRhRGF0YSwgc3RhdHVzQXR0cmlidXRlcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rICNtYWtlRnJhbWUoQ29udGV4dCwgUmVxdWVzdE1lc3NhZ2UsIE1lc3NhZ2VTZXJpYWxpemVyLCBib29sZWFuLCBMaXN0LCBSZXNwb25zZVN0YXR1c0NvZGUsIE1hcCl9LgorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHJvdGVjdGVkIHN0YXRpYyBGcmFtZSBtYWtlRnJhbWUoZmluYWwgQ29udGV4dCBjdHgsIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyLCBmaW5hbCBib29sZWFuIHVzZUJpbmFyeSwgZmluYWwgTGlzdDxPYmplY3Q+IGFnZ3JlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSwgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHJlc3BvbnNlTWV0YURhdGEpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICByZXR1cm4gbWFrZUZyYW1lKGN0eCwgbXNnLCBzZXJpYWxpemVyLCB1c2VCaW5hcnksYWdncmVnYXRlLCBjb2RlLCByZXNwb25zZU1ldGFEYXRhLCBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgc3RhdGljIEZyYW1lIG1ha2VGcmFtZShmaW5hbCBDb250ZXh0IGN0eCwgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXIsIGZpbmFsIGJvb2xlYW4gdXNlQmluYXJ5LCBmaW5hbCBMaXN0PE9iamVjdD4gYWdncmVnYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlLCBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gcmVzcG9uc2VNZXRhRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gc3RhdHVzQXR0cmlidXRlcykgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBmaW5hbCBDaGFubmVsSGFuZGxlckNvbnRleHQgbmV0dHlDb250ZXh0ID0gY3R4LmdldENoYW5uZWxIYW5kbGVyQ29udGV4dCgpOwogCiAgICAgICAgICAgICBpZiAodXNlQmluYXJ5KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGcmFtZShzZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkoUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKG1zZykKICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RlKGNvZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlcyhzdGF0dXNBdHRyaWJ1dGVzKQogICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3BvbnNlTWV0YURhdGEocmVzcG9uc2VNZXRhRGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXN1bHQoYWdncmVnYXRlKS5jcmVhdGUoKSwgbmV0dHlDb250ZXh0LmFsbG9jKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMTYsNiArMzQzLDcgQEAKICAgICAgICAgICAgICAgICBmaW5hbCBNZXNzYWdlVGV4dFNlcmlhbGl6ZXIgdGV4dFNlcmlhbGl6ZXIgPSAoTWVzc2FnZVRleHRTZXJpYWxpemVyKSBzZXJpYWxpemVyOwogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRnJhbWUodGV4dFNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc1N0cmluZyhSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKQogICAgICAgICAgICAgICAgICAgICAgICAgLmNvZGUoY29kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5zdGF0dXNBdHRyaWJ1dGVzKHN0YXR1c0F0dHJpYnV0ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAucmVzcG9uc2VNZXRhRGF0YShyZXNwb25zZU1ldGFEYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3VsdChhZ2dyZWdhdGUpLmNyZWF0ZSgpKSk7CiAgICAgICAgICAgICB9CkBAIC0zMzMsMTMgKzM2MSw4IEBACiAKICAgICBwcm90ZWN0ZWQgc3RhdGljIHZvaWQgYXR0ZW1wdENvbW1pdChmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csIGZpbmFsIEdyYXBoTWFuYWdlciBncmFwaE1hbmFnZXIsIGZpbmFsIGJvb2xlYW4gc3RyaWN0KSB7CiAgICAgICAgIGlmIChzdHJpY3QpIHsKLSAgICAgICAgICAgIC8vIHZhbGlkYXRpb25zIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBwZXJmb3JtZWQgaW4gU3RhbmRhcmRPcFByb2Nlc3NvciwgYnV0IGEgZmFpbHVyZSBpbiBiaW5kaW5ncyBtYWtlcgotICAgICAgICAgICAgLy8gYXQgdGhlIHRpbWUgb2YgdGhlIGV2YWwgbWlnaHQgcmFpc2UgdGhyb3VnaCBoZXJlIGF0IHdoaWNoIHBvaW50IHRoZSB2YWxpZGF0aW9uIGRpZG4ndCB5ZXQgaGFwcGVuLiBiZXR0ZXIKLSAgICAgICAgICAgIC8vIHRvIGp1c3QgY2hlY2sgYWdhaW4KLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzUmViaW5kaW5ncyA9IG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyk7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlciA9IGhhc1JlYmluZGluZ3MgPyBUb2tlbnMuQVJHU19SRUJJTkRJTkdTIDogVG9rZW5zLkFSR1NfQUxJQVNFUzsKLSAgICAgICAgICAgIGlmIChtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzID0gKE1hcDxTdHJpbmcsIFN0cmluZz4pIG1zZy5nZXRBcmdzKCkuZ2V0KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpOworICAgICAgICAgICAgaWYgKG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfQUxJQVNFUykpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzZXMgPSAoTWFwPFN0cmluZywgU3RyaW5nPikgbXNnLmdldEFyZ3MoKS5nZXQoVG9rZW5zLkFSR1NfQUxJQVNFUyk7CiAgICAgICAgICAgICAgICAgZ3JhcGhNYW5hZ2VyLmNvbW1pdChuZXcgSGFzaFNldDw+KGFsaWFzZXMudmFsdWVzKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZ3JhcGhNYW5hZ2VyLmNvbW1pdEFsbCgpOwpAQCAtMzUxLDEzICszNzQsOCBAQAogCiAgICAgcHJvdGVjdGVkIHN0YXRpYyB2b2lkIGF0dGVtcHRSb2xsYmFjayhmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csIGZpbmFsIEdyYXBoTWFuYWdlciBncmFwaE1hbmFnZXIsIGZpbmFsIGJvb2xlYW4gc3RyaWN0KSB7CiAgICAgICAgIGlmIChzdHJpY3QpIHsKLSAgICAgICAgICAgIC8vIHZhbGlkYXRpb25zIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBwZXJmb3JtZWQgaW4gU3RhbmRhcmRPcFByb2Nlc3NvciwgYnV0IGEgZmFpbHVyZSBpbiBiaW5kaW5ncyBtYWtlcgotICAgICAgICAgICAgLy8gYXQgdGhlIHRpbWUgb2YgdGhlIGV2YWwgbWlnaHQgcmFpc2UgdGhyb3VnaCBoZXJlIGF0IHdoaWNoIHBvaW50IHRoZSB2YWxpZGF0aW9uIGRpZG4ndCB5ZXQgaGFwcGVuLiBiZXR0ZXIKLSAgICAgICAgICAgIC8vIHRvIGp1c3QgY2hlY2sgYWdhaW4KLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzUmViaW5kaW5ncyA9IG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyk7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlciA9IGhhc1JlYmluZGluZ3MgPyBUb2tlbnMuQVJHU19SRUJJTkRJTkdTIDogVG9rZW5zLkFSR1NfQUxJQVNFUzsKLSAgICAgICAgICAgIGlmIChtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzID0gKE1hcDxTdHJpbmcsIFN0cmluZz4pIG1zZy5nZXRBcmdzKCkuZ2V0KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpOworICAgICAgICAgICAgaWYgKG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfQUxJQVNFUykpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzZXMgPSAoTWFwPFN0cmluZywgU3RyaW5nPikgbXNnLmdldEFyZ3MoKS5nZXQoVG9rZW5zLkFSR1NfQUxJQVNFUyk7CiAgICAgICAgICAgICAgICAgZ3JhcGhNYW5hZ2VyLnJvbGxiYWNrKG5ldyBIYXNoU2V0PD4oYWxpYXNlcy52YWx1ZXMoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBncmFwaE1hbmFnZXIucm9sbGJhY2tBbGwoKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3Avc2Vzc2lvbi9TZXNzaW9uLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3Nlc3Npb24vU2Vzc2lvbi5qYXZhCmluZGV4IDI0ZDc5OWIuLjhkNGZlM2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3Avc2Vzc2lvbi9TZXNzaW9uLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zZXNzaW9uL1Nlc3Npb24uamF2YQpAQCAtMzUsNiArMzUsNyBAQAogaW1wb3J0IGphdmF4LnNjcmlwdC5TaW1wbGVCaW5kaW5nczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvclNlcnZpY2U7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzOwpAQCAtMTY3LDcgKzE2OCwxMiBAQAogICAgICAqIHNlc3Npb24ga2lsbCB3aWxsIG1lYW4uCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgbWFudWFsS2lsbChmaW5hbCBib29sZWFuIGZvcmNlKSB7Ci0gICAgICAgIGtpbGwuZ2V0KCkuY2FuY2VsKHRydWUpOworICAgICAgICAvLyBzZWVtcyB0aGVyZSBpcyBhIHNpdHVhdGlvbiB3aGVyZSBraWxsIGNhbiBnZXQgbnVsbGVkLiBzZWVtcyB0byBvbmx5IGhhcHBlbiBpbiB0cmF2aXMgYXMgYSByZXN1bHQgb2YgdGVzdAorICAgICAgICAvLyBydW5zIGFuZCBpJ20gZ3Vlc3NpbmcgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIGEgY29tYmluYXRpb24gb2Ygc2h1dGRvd24gYW5kIHNlc3Npb24gY2xvc2UgdGhvdWdoIGknbQorICAgICAgICAvLyBub3Qgc3VyZSB3aHkuIHBlcmhhcHMgdGhpcyAiZml4IiBqdXN0IG1hc2tzIHVwIGEgZGVlcGVyIHByb2JsZW0gYnV0IGFzIGkgcmVhc29uIG9uIGl0IG5vdywgaXQgc2VlbXMgbW9zdGx5CisgICAgICAgIC8vIGJvdW5kIHRvIHNodXRkb3duIHNpdHVhdGlvbnMgd2hpY2ggYmFzaWNhbGx5IG1lYW5zIHRoZSBmb3JjZWQgZW5kIG9mIHRoZSBzZXNzaW9uIGFueXdheSwgc28gcGVyaGFwcyB0aGUKKyAgICAgICAgLy8gcm9vdCBjYXVzZSBpc24ndCBzb21ldGhpbmcgdGhhdCBuZWVkcyBpbW1lZGlhdGUgY2hhc2luZyAoYXQgbGVhc3QgdW50aWwgaXQgY2FuIGJlIHNob3duIG90aGVyd2lzZSBhbnl3YXkpCisgICAgICAgIE9wdGlvbmFsLm9mTnVsbGFibGUoa2lsbC5nZXQoKSkuaWZQcmVzZW50KGYgLT4gZi5jYW5jZWwodHJ1ZSkpOwogICAgICAgICBraWxsKGZvcmNlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3Avc2Vzc2lvbi9TZXNzaW9uT3BQcm9jZXNzb3IuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3Avc2Vzc2lvbi9TZXNzaW9uT3BQcm9jZXNzb3IuamF2YQppbmRleCAzNzUyZjQ4Li4yYmNiNDMwIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3Nlc3Npb24vU2Vzc2lvbk9wUHJvY2Vzc29yLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zZXNzaW9uL1Nlc3Npb25PcFByb2Nlc3Nvci5qYXZhCkBAIC0yMjYsMjIgKzIyNiw5IEBACiAgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2cgPSBjb250ZXh0LmdldFJlcXVlc3RNZXNzYWdlKCk7CiAgICAgICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IHNlc3Npb24uZ2V0QmluZGluZ3MoKTsKIAotICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgYm90aCByZWJpbmRpbmdzIGFuZCBhbGlhc2VzIHBhcmFtZXRlcnMgYXMgdGhleSBhcmUgdGhlIHNhbWUgdGhpbmcuIGFsaWFzZXMgd2VyZSBpbnRyb2R1Y2VkCi0gICAgICAgICAgICAvLyBhcyBvZiAzLjEuMCBhcyBhIHJlcGxhY2VtZW50IGZvciByZWJpbmRpbmdzLiB0aGlzIGNoZWNrIGNhbiBiZSByZW1vdmVkIHdoZW4gcmViaW5kaW5ncyBhcmUgY29tcGxldGVseQotICAgICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBwcm90b2NvbAotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBoYXNSZWJpbmRpbmdzID0gbXNnLmdldEFyZ3MoKS5jb250YWluc0tleShUb2tlbnMuQVJHU19SRUJJTkRJTkdTKTsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzQWxpYXNlcyA9IG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfQUxJQVNFUyk7Ci0gICAgICAgICAgICBpZiAoaGFzUmViaW5kaW5ncyAmJiBoYXNBbGlhc2VzKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGVycm9yID0gIlByZWZlciB1c2Ugb2YgdGhlICdhbGlhc2VzJyBwYXJhbWV0ZXIgb3ZlciAncmViaW5kaW5ncycgYW5kIGRvIG5vdCB1c2UgYm90aCI7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE9wUHJvY2Vzc29yRXhjZXB0aW9uKGVycm9yLCBSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlJFUVVFU1RfRVJST1JfSU5WQUxJRF9SRVFVRVNUX0FSR1VNRU5UUykuc3RhdHVzTWVzc2FnZShlcnJvcikuY3JlYXRlKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlciA9IGhhc1JlYmluZGluZ3MgPyBUb2tlbnMuQVJHU19SRUJJTkRJTkdTIDogVG9rZW5zLkFSR1NfQUxJQVNFUzsKLQogICAgICAgICAgICAgLy8gYWxpYXMgYW55IGdsb2JhbCBiaW5kaW5ncyB0byBhIGRpZmZlcmVudCB2YXJpYWJsZQotICAgICAgICAgICAgaWYgKG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkocmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlcikpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzZXMgPSAoTWFwPFN0cmluZywgU3RyaW5nPikgbXNnLmdldEFyZ3MoKS5nZXQocmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlcik7CisgICAgICAgICAgICBpZiAobXNnLmdldEFyZ3MoKS5jb250YWluc0tleShUb2tlbnMuQVJHU19BTElBU0VTKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gYWxpYXNlcyA9IChNYXA8U3RyaW5nLCBTdHJpbmc+KSBtc2cuZ2V0QXJncygpLmdldChUb2tlbnMuQVJHU19BTElBU0VTKTsKICAgICAgICAgICAgICAgICBmb3IgKE1hcC5FbnRyeTxTdHJpbmcsU3RyaW5nPiBhbGlhc0t2IDogYWxpYXNlcy5lbnRyeVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZm91bmQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zdGFuZGFyZC9TdGFuZGFyZE9wUHJvY2Vzc29yLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3N0YW5kYXJkL1N0YW5kYXJkT3BQcm9jZXNzb3IuamF2YQppbmRleCBmMmVjMTM0Li43NDYzOTdhIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3N0YW5kYXJkL1N0YW5kYXJkT3BQcm9jZXNzb3IuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3N0YW5kYXJkL1N0YW5kYXJkT3BQcm9jZXNzb3IuamF2YQpAQCAtMTE0LDIyICsxMTQsOSBAQAogICAgICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnID0gY29udGV4dC5nZXRSZXF1ZXN0TWVzc2FnZSgpOwogICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBuZXcgU2ltcGxlQmluZGluZ3MoKTsKIAotICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgYm90aCByZWJpbmRpbmdzIGFuZCBhbGlhc2VzIHBhcmFtZXRlcnMgYXMgdGhleSBhcmUgdGhlIHNhbWUgdGhpbmcuIGFsaWFzZXMgd2VyZSBpbnRyb2R1Y2VkCi0gICAgICAgICAgICAvLyBhcyBvZiAzLjEuMCBhcyBhIHJlcGxhY2VtZW50IGZvciByZWJpbmRpbmdzLiB0aGlzIGNoZWNrIGNhbiBiZSByZW1vdmVkIHdoZW4gcmViaW5kaW5ncyBhcmUgY29tcGxldGVseQotICAgICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBwcm90b2NvbAotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBoYXNSZWJpbmRpbmdzID0gbXNnLmdldEFyZ3MoKS5jb250YWluc0tleShUb2tlbnMuQVJHU19SRUJJTkRJTkdTKTsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzQWxpYXNlcyA9IG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfQUxJQVNFUyk7Ci0gICAgICAgICAgICBpZiAoaGFzUmViaW5kaW5ncyAmJiBoYXNBbGlhc2VzKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGVycm9yID0gIlByZWZlciB1c2Ugb2YgdGhlICdhbGlhc2VzJyBwYXJhbWV0ZXIgb3ZlciAncmViaW5kaW5ncycgYW5kIGRvIG5vdCB1c2UgYm90aCI7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE9wUHJvY2Vzc29yRXhjZXB0aW9uKGVycm9yLCBSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlJFUVVFU1RfRVJST1JfSU5WQUxJRF9SRVFVRVNUX0FSR1VNRU5UUykuc3RhdHVzTWVzc2FnZShlcnJvcikuY3JlYXRlKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlciA9IGhhc1JlYmluZGluZ3MgPyBUb2tlbnMuQVJHU19SRUJJTkRJTkdTIDogVG9rZW5zLkFSR1NfQUxJQVNFUzsKLQogICAgICAgICAgICAgLy8gYWxpYXMgYW55IGdsb2JhbCBiaW5kaW5ncyB0byBhIGRpZmZlcmVudCB2YXJpYWJsZS4KLSAgICAgICAgICAgIGlmIChtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzID0gKE1hcDxTdHJpbmcsIFN0cmluZz4pIG1zZy5nZXRBcmdzKCkuZ2V0KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpOworICAgICAgICAgICAgaWYgKG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfQUxJQVNFUykpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzZXMgPSAoTWFwPFN0cmluZywgU3RyaW5nPikgbXNnLmdldEFyZ3MoKS5nZXQoVG9rZW5zLkFSR1NfQUxJQVNFUyk7CiAgICAgICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8U3RyaW5nLFN0cmluZz4gYWxpYXNLdiA6IGFsaWFzZXMuZW50cnlTZXQoKSkgewogICAgICAgICAgICAgICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvdHJhdmVyc2FsL1RyYXZlcnNhbE9wUHJvY2Vzc29yLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3RyYXZlcnNhbC9UcmF2ZXJzYWxPcFByb2Nlc3Nvci5qYXZhCmluZGV4IDg3MzdhOWEuLjQxOGM2NmMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvdHJhdmVyc2FsL1RyYXZlcnNhbE9wUHJvY2Vzc29yLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC90cmF2ZXJzYWwvVHJhdmVyc2FsT3BQcm9jZXNzb3IuamF2YQpAQCAtNjksNyArNjksNiBAQAogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZTsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0OwotaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb247CiAKIGltcG9ydCBzdGF0aWMgY29tLmNvZGFoYWxlLm1ldHJpY3MuTWV0cmljUmVnaXN0cnkubmFtZTsKIApAQCAtMzIyLDE0ICszMjEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJdGVyYXRvcihjb250ZXh0LCBuZXcgU2lkZUVmZmVjdEl0ZXJhdG9yKHNpZGVFZmZlY3RzLmdldChzaWRlRWZmZWN0S2V5LmdldCgpKSwgc2lkZUVmZmVjdEtleS5nZXQoKSkpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChUaW1lb3V0RXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nLmZvcm1hdCgiUmVzcG9uc2UgaXRlcmF0aW9uIGV4Y2VlZGVkIHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBmb3IgcmVxdWVzdCBbJXNdIC0gJXMiLCBtc2cuZ2V0UmVxdWVzdElkKCksIGV4LmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybihlcnJvck1lc3NhZ2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZUFuZEZsdXNoKFJlc3BvbnNlTWVzc2FnZS5idWlsZChtc2cpLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9USU1FT1VUKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdGF0dXNNZXNzYWdlKGVycm9yTWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlRXhjZXB0aW9uKGV4KS5jcmVhdGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGdyYXBoLCBjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybihTdHJpbmcuZm9ybWF0KCJFeGNlcHRpb24gcHJvY2Vzc2luZyBhIHNpZGUtZWZmZWN0IG9uIGl0ZXJhdGlvbiBmb3IgcmVxdWVzdCBbJXNdLiIsIG1zZy5nZXRSZXF1ZXN0SWQoKSksIGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVBbmRGbHVzaChSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKS5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1IpCkBAIC00ODksNiArNDgwLDkgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgTWFwPFN0cmluZywgT2JqZWN0PiBnZW5lcmF0ZU1ldGFEYXRhKGZpbmFsIENoYW5uZWxIYW5kbGVyQ29udGV4dCBjdHgsIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlLCBmaW5hbCBJdGVyYXRvciBpdHR5KSB7CisgICAgICAgIC8vIGxlYXZpbmcgdGhpcyBvdmVycmlkaW5nIHRoZSBkZXByZWNhdGVkIHZlcnNpb24gb2YgdGhpcyBtZXRob2QgYmVjYXVzZSBpdCBwcm92aWRlcyBhIGRlY2VudCB0ZXN0IHRvIHRob3NlCisgICAgICAgIC8vIHdobyBtaWdodCBoYXZlIHRoZWlyIG93biBPcFByb2Nlc3NvciBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcHBseSBtZXRhLWRhdGEuIGxlYXZpbmcgdGhpcyBhbG9uZSBoZWxwcyB2YWxpZGF0ZQorICAgICAgICAvLyB0aGF0IHRoZSB1cGdyYWRlIHBhdGggaXMgY2xlYW4uICBpdCBjYW4gYmUgcmVtb3ZlZCBhdCB0aGUgbmV4dCBicmVha2luZyBjaGFuZ2UgMy41LjAKICAgICAgICAgTWFwPFN0cmluZywgT2JqZWN0PiBtZXRhRGF0YSA9IENvbGxlY3Rpb25zLmVtcHR5TWFwKCk7CiAgICAgICAgIGlmIChpdHR5IGluc3RhbmNlb2YgU2lkZUVmZmVjdEl0ZXJhdG9yKSB7CiAgICAgICAgICAgICBmaW5hbCBTaWRlRWZmZWN0SXRlcmF0b3IgdHJhdmVyc2FsSXRlcmF0b3IgPSAoU2lkZUVmZmVjdEl0ZXJhdG9yKSBpdHR5OwpAQCAtNDk4LDYgKzQ5Miw5IEBACiAgICAgICAgICAgICAgICAgbWV0YURhdGEucHV0KFRva2Vucy5BUkdTX1NJREVfRUZGRUNUX0tFWSwga2V5KTsKICAgICAgICAgICAgICAgICBtZXRhRGF0YS5wdXQoVG9rZW5zLkFSR1NfQUdHUkVHQVRFX1RPLCB0cmF2ZXJzYWxJdGVyYXRvci5nZXRTaWRlRWZmZWN0QWdncmVnYXRvcigpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBzdGFuZGFyZCB0cmF2ZXJzYWwgaXRlcmF0b3IKKyAgICAgICAgICAgIG1ldGFEYXRhID0gc3VwZXIuZ2VuZXJhdGVNZXRhRGF0YShjdHgsIG1zZywgY29kZSwgaXR0eSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbWV0YURhdGE7CkBAIC01MTMsMTcgKzUxMCwxOSBAQAogCiAgICAgICAgIC8vIHdlIGhhdmUgYW4gZW1wdHkgaXRlcmF0b3IgLSBoYXBwZW5zIG9uIHN0dWZmIGxpa2U6IGcuVigpLml0ZXJhdGUoKQogICAgICAgICBpZiAoIWl0dHkuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAvLyBhcyB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gaXRlcmF0ZSBpZiB3ZSBhcmUgdHJhbnNhY3Rpb24gbWFuYWdlZCB0aGVuIHdlIHNob3VsZCBleGVjdXRlIGEKLSAgICAgICAgICAgIC8vIGNvbW1pdCBoZXJlIGJlZm9yZSB3ZSBzZW5kIGJhY2sgYSBOT19DT05URU5UIHdoaWNoIGltcGxpZXMgc3VjY2VzcwotICAgICAgICAgICAgb25UcmF2ZXJzYWxTdWNjZXNzKGdyYXBoLCBjb250ZXh0KTsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gYXR0cmlidXRlcyA9IGdlbmVyYXRlU3RhdHVzQXR0cmlidXRlcyhuZXR0eUNvbnRleHQsIG1zZywgUmVzcG9uc2VTdGF0dXNDb2RlLk5PX0NPTlRFTlQsIGl0dHksIHNldHRpbmdzKTsKICAgICAgICAgICAgIC8vIGlmIGl0IHdhcyBhIGcuVigpLml0ZXJhdGUoKSwgdGhlbiBiZSBzdXJlIHRvIGFkZCB0aGUgc2lkZS1lZmZlY3RzIHRvIHRoZSBjYWNoZQogICAgICAgICAgICAgaWYgKGl0dHkgaW5zdGFuY2VvZiBUcmF2ZXJzZXJJdGVyYXRvciAmJgogICAgICAgICAgICAgICAgICAgICAhKChUcmF2ZXJzZXJJdGVyYXRvcilpdHR5KS5nZXRUcmF2ZXJzYWwoKS5nZXRTaWRlRWZmZWN0cygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGNhY2hlLnB1dChtc2cuZ2V0UmVxdWVzdElkKCksICgoVHJhdmVyc2VySXRlcmF0b3IpaXR0eSkuZ2V0VHJhdmVyc2FsKCkuZ2V0U2lkZUVmZmVjdHMoKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBhcyB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gaXRlcmF0ZSBpZiB3ZSBhcmUgdHJhbnNhY3Rpb24gbWFuYWdlZCB0aGVuIHdlIHNob3VsZCBleGVjdXRlIGEKKyAgICAgICAgICAgIC8vIGNvbW1pdCBoZXJlIGJlZm9yZSB3ZSBzZW5kIGJhY2sgYSBOT19DT05URU5UIHdoaWNoIGltcGxpZXMgc3VjY2VzcworICAgICAgICAgICAgb25UcmF2ZXJzYWxTdWNjZXNzKGdyYXBoLCBjb250ZXh0KTsKICAgICAgICAgICAgIGNvbnRleHQud3JpdGVBbmRGbHVzaChSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5OT19DT05URU5UKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5OT19DT05URU5UKQorICAgICAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU3NCwxMCArNTczLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIC8vIHNlcmlhbGl6ZSBoZXJlIGJlY2F1c2UgaW4gc2Vzc2lvbmxlc3MgcmVxdWVzdHMgdGhlIHNlcmlhbGl6YXRpb24gbXVzdCBvY2N1ciBpbiB0aGUgc2FtZQogICAgICAgICAgICAgICAgICAgICAvLyB0aHJlYWQgYXMgdGhlIGV2YWwuICBhcyBldmFsIG9jY3VycyBpbiB0aGUgR3JlbWxpbkV4ZWN1dG9yIHRoZXJlJ3Mgbm8gd2F5IHRvIGdldCBiYWNrIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAvLyB0aHJlYWQgdGhhdCBwcm9jZXNzZWQgdGhlIGV2YWwgb2YgdGhlIHNjcmlwdCBzbywgd2UgaGF2ZSB0byBwdXNoIHNlcmlhbGl6YXRpb24gZG93biBpbnRvIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBtZXRhZGF0YSA9IGdlbmVyYXRlTWV0YURhdGEobmV0dHlDb250ZXh0LCBtc2csIGNvZGUsIGl0dHkpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG1ldGFkYXRhID0gZ2VuZXJhdGVSZXN1bHRNZXRhRGF0YShuZXR0eUNvbnRleHQsIG1zZywgY29kZSwgaXR0eSwgc2V0dGluZ3MpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IHN0YXR1c0F0dHJiID0gZ2VuZXJhdGVTdGF0dXNBdHRyaWJ1dGVzKG5ldHR5Q29udGV4dCwgbXNnLCBjb2RlLCBpdHR5LCBzZXR0aW5ncyk7CiAgICAgICAgICAgICAgICAgICAgIEZyYW1lIGZyYW1lID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lID0gbWFrZUZyYW1lKGNvbnRleHQsIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LCBhZ2dyZWdhdGUsIGNvZGUsIG1ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lID0gbWFrZUZyYW1lKGNvbnRleHQsIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LCBhZ2dyZWdhdGUsIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YSwgc3RhdHVzQXR0cmIpOwogICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZnJhbWUgbWF5IHVzZSBhIEJ5dGVidWYgd2hpY2ggaXMgYSBjb3VudGFibGUgcmVsZWFzZSAtIGlmIGl0IGRvZXMgbm90IGdldCB3cml0dGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb3duc3RyZWFtIGl0IG5lZWRzIHRvIGJlIHJlbGVhc2VkIGhlcmUKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvdXRpbC9EZWZhdWx0R3JhcGhNYW5hZ2VyLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL3V0aWwvRGVmYXVsdEdyYXBoTWFuYWdlci5qYXZhCmluZGV4IDliNTY2OGYuLmE5ZTk5MDIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvdXRpbC9EZWZhdWx0R3JhcGhNYW5hZ2VyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci91dGlsL0RlZmF1bHRHcmFwaE1hbmFnZXIuamF2YQpAQCAtNjUsMTkgKzY1LDYgQEAKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgLyoqCi0gICAgICogR2V0IGEgbGlzdCBvZiB0aGUge0BsaW5rIEdyYXBofSBpbnN0YW5jZXMgYW5kIHRoZWlyIGJpbmRpbmcgbmFtZXMgYXMgZGVmaW5lZCBpbiB0aGUgR3JlbWxpbiBTZXJ2ZXIKLSAgICAgKiBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIGEge0Bjb2RlIE1hcH0gd2hlcmUgdGhlIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUge0BsaW5rIEdyYXBofSBhbmQgdGhlIHZhbHVlIGlzIHRoZSB7QGxpbmsgR3JhcGh9IGl0c2VsZgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjUsIHJlcGxhY2VkIGJ5IGEgY29tYmluYXRpb24gb2Yge0BsaW5rICNnZXRHcmFwaE5hbWVzKCl9IGFuZAotICAgICAqIHtAbGluayAjZ2V0R3JhcGgoU3RyaW5nKX0KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBmaW5hbCBNYXA8U3RyaW5nLCBHcmFwaD4gZ2V0R3JhcGhzKCkgewotICAgICAgICByZXR1cm4gZ3JhcGhzOwotICAgIH0KLQogICAgIHB1YmxpYyBmaW5hbCBTZXQ8U3RyaW5nPiBnZXRHcmFwaE5hbWVzKCkgewogICAgICAgICByZXR1cm4gZ3JhcGhzLmtleVNldCgpOwogICAgIH0KQEAgLTkwLDIwICs3Nyw2IEBACiAgICAgICAgIGdyYXBocy5wdXQoZ3JhcGhOYW1lLCBnKTsKICAgICB9CiAKLSAgICAvKioKLSAgICAgKiBHZXQgYSBsaXN0IG9mIHRoZSB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBpbnN0YW5jZXMgYW5kIHRoZWlyIGJpbmRpbmcgbmFtZXMgYXMgZGVmaW5lZCBieSBHcmVtbGluIFNlcnZlcgotICAgICAqIGluaXRpYWxpemF0aW9uIHNjcmlwdHMuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIGEge0Bjb2RlIE1hcH0gd2hlcmUgdGhlIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gYW5kIHRoZSB2YWx1ZSBpcyB0aGUKLSAgICAgKiB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBpdHNlbGYKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi41LCByZXBsYWNlZCBieSBhIGNvbWJpbmF0aW9uIG9mIHtAbGluayAjZ2V0VHJhdmVyc2FsU291cmNlTmFtZXMoKX0gYW5kCi0gICAgICoge0BsaW5rICNnZXRUcmF2ZXJzYWxTb3VyY2UoU3RyaW5nKX0KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBmaW5hbCBNYXA8U3RyaW5nLCBUcmF2ZXJzYWxTb3VyY2U+IGdldFRyYXZlcnNhbFNvdXJjZXMoKSB7Ci0gICAgICAgIHJldHVybiB0cmF2ZXJzYWxTb3VyY2VzOwotICAgIH0KLQogICAgIHB1YmxpYyBmaW5hbCBTZXQ8U3RyaW5nPiBnZXRUcmF2ZXJzYWxTb3VyY2VOYW1lcygpIHsKICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbFNvdXJjZXMua2V5U2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9zdGF0aWMvTElDRU5TRQppbmRleCA3OGFlNTcwLi5mM2RhNGY3IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9zdGF0aWMvTElDRU5TRQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9zdGF0aWMvTElDRU5TRQpAQCAtMjA5LDcgKzIwOSw3IEBACiAKICAgICAgamNhYmktbG9nIChjb20uamNhYmk6amNhYmktbG9nOjAuMTQgLSBodHRwOi8vd3d3LmpjYWJpLmNvbS9qY2FiaS1sb2cpIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9qY2FiaS1sb2cKICAgICAgamNhYmktbWFuaWZlc3RzIDEuMSAoY29tLmpjYWJpOmpjYWJpLW1hbmlmZXN0czoxLjEgLSBodHRwOi8vd3d3LmpjYWJpLmNvbS9qY2FiaS1tYW5pZmVzdHMpIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9qY2FiaS1tYW5pZmVzdHMKLSAgICAgSkxpbmUgKGpsaW5lOmpsaW5lOjIuMTIgLSBodHRwczovL2dpdGh1Yi5jb20vamxpbmUvamxpbmUyKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamxpbmUyCisgICAgIEpMaW5lIChqbGluZTpqbGluZToyLjE0LjYgLSBodHRwczovL2dpdGh1Yi5jb20vamxpbmUvamxpbmUyKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamxpbmUyCiAgICAgIEtyeW8gKGNvbS5lc290ZXJpY3NvZnR3YXJlOmtyeW8tc2hhZGVkOjMuMC4zIC0gaHR0cHM6Ly9naXRodWIuY29tL0Vzb3RlcmljU29mdHdhcmUva3J5bykKICAgICAgICAtIHNoYWRlZCBpbiBncmVtbGluLXNoYWRlZCB0byBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQua3J5bwogICAgICAgIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9rcnlvCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9zdGF0aWMvTk9USUNFIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vc3RhdGljL05PVElDRQppbmRleCBkYWZjZWJhLi41ZjdlYjZlIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL3N0YXRpYy9OT1RJQ0UKQEAgLTUsNyArNSw3IEBACiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8pLgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFwYWNoZSBHcm9vdnkgMi40LjE2IChBTCBBU0YpCitBcGFjaGUgR3Jvb3Z5IDIuNS43IChBTCBBU0YpCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFRoaXMgcHJvZHVjdCBpbmNsdWRlcy91c2VzIEFOVExSIChodHRwOi8vd3d3LmFudGxyMi5vcmcvKQogZGV2ZWxvcGVkIGJ5IFRlcmVuY2UgUGFyciAxOTg5LTIwMDYKQEAgLTQ5LDYgKzQ5LDE4IEBACiAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLU5ldHR5IDQuMC41NgorSFBQQyAwLjcuMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIUFBDIGJvcnJvd2VkIGNvZGUsIGlkZWFzIG9yIGJvdGggZnJvbToKKworICogQXBhY2hlIEx1Y2VuZSwgaHR0cDovL2x1Y2VuZS5hcGFjaGUub3JnLworICAgKEFwYWNoZSBsaWNlbnNlKQorICogRmFzdHV0aWwsIGh0dHA6Ly9mYXN0dXRpbC5kaS51bmltaS5pdC8KKyAgIChBcGFjaGUgbGljZW5zZSkKKyAqIEtvbG9ib2tlLCBodHRwczovL2dpdGh1Yi5jb20vT3BlbkhGVC9Lb2xvYm9rZQorICAgKEFwYWNoZSBsaWNlbnNlKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05ldHR5IDQuMS40MgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDb3B5cmlnaHQgMjAxNCBUaGUgTmV0dHkgUHJvamVjdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9BYnN0cmFjdFJlbW90ZUdyYXBoUHJvdmlkZXIuamF2YQppbmRleCBiNTlkOTAxLi5lODZhNTQ2IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9BYnN0cmFjdFJlbW90ZUdyYXBoUHJvdmlkZXIuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9BYnN0cmFjdFJlbW90ZUdyYXBoUHJvdmlkZXIuamF2YQpAQCAtMjYsNyArMjYsOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsdXN0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6ZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5HcmVtbGluU2VydmVyOwpAQCAtMjQ2LDcgKzI0Nyw3IEBACiAgICAgcHVibGljIEdyYXBoIG9wZW5UZXN0R3JhcGgoZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWcpIHsKICAgICAgICAgZmluYWwgU3RyaW5nIHNlcnZlckdyYXBoTmFtZSA9IGNvbmZpZy5nZXRTdHJpbmcoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5HUkVNTElOX1JFTU9URV9EUklWRVJfU09VUkNFTkFNRSk7CiAgICAgICAgIHJldHVybiByZW1vdGVDYWNoZS5jb21wdXRlSWZBYnNlbnQoc2VydmVyR3JhcGhOYW1lLAotICAgICAgICAgICAgICAgIGsgLT4gUmVtb3RlR3JhcGgub3BlbihuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihjbHVzdGVyLCBjb25maWcpKSk7CisgICAgICAgICAgICAgICAgayAtPiBSZW1vdGVHcmFwaC5vcGVuKG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGNsdXN0ZXIsIGNvbmZpZyksIGNvbmZpZykpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMjU3LDcgKzI1OCw3IEBACiAgICAgICAgIGZpbmFsIFN1cHBsaWVyPEdyYXBoPiBncmFwaEdldHRlciA9ICgpIC0+IHNlcnZlci5nZXRTZXJ2ZXJHcmVtbGluRXhlY3V0b3IoKS5nZXRHcmFwaE1hbmFnZXIoKS5nZXRHcmFwaChzZXJ2ZXJHcmFwaE5hbWUpOwogICAgICAgICByZXR1cm4gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCkge3sKICAgICAgICAgICAgIHB1dChHcmFwaC5HUkFQSCwgUmVtb3RlR3JhcGguY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgICAgIHB1dChSZW1vdGVHcmFwaC5HUkVNTElOX1JFTU9URV9HUkFQSF9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUywgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICAgICAgcHV0KFJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUywgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5jbGFzcy5nZXROYW1lKCkpOwogICAgICAgICAgICAgcHV0KERyaXZlclJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfRFJJVkVSX1NPVVJDRU5BTUUsICJnIiArIHNlcnZlckdyYXBoTmFtZSk7CiAgICAgICAgICAgICBwdXQoImNsdXN0ZXJDb25maWd1cmF0aW9uLnBvcnQiLCBUZXN0Q2xpZW50RmFjdG9yeS5QT1JUKTsKICAgICAgICAgICAgIHB1dCgiY2x1c3RlckNvbmZpZ3VyYXRpb24uaG9zdHMiLCAibG9jYWxob3N0Iik7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcmFwaEJpbmFyeVJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTMzYTBiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDM3NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5TZXJpYWxpemVyczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnByb2Nlc3MuY29tcHV0ZXIuVGlua2VyR3JhcGhDb21wdXRlcjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5BZGRFZGdlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBhZGRFZGdlKCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLkFuZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dFhrbm93c1hfYW5kX291dFhjcmVhdGVkWF9pblhjcmVhdGVkWF9hc1hhWF9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLkNob29zZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19pbmplY3RYMVhfY2hvb3NlWGlzWDFYX19jb25zdGFudFgxMFhmb2xkX19mb2xkWCIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW5qZWN0KCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLkNob29zZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19pbmplY3RYMlhfY2hvb3NlWGlzWDFYX19jb25zdGFudFgxMFhmb2xkX19mb2xkWCIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW5qZWN0KCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvYWxlc2NlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfY29hbGVzY2VYb3V0RVhrbm93c1hfb3V0RVhjcmVhdGVkWFhfb3RoZXJWX3BhdGhfYnlYbmFtZVhfYnlYbGFiZWxYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db21wbGV4VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJwbGF5bGlzdFBhdGhzIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvdW50VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1Zfd2hlcmVYaW5Ya2tub3dzWF9vdXRYY3JlYXRlZFhfY291bnRfaXNfMFhYX25hbWUiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuRGVkdXBUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9ib3RoX2FzWGJYX2RlZHVwWGFfYlhfYnlYbGFiZWxYX3NlbGVjdFhhX2JYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9oYXNMYWJlbFhwZXJzb25YX2FzWHBYX1ZYc29mdHdhcmVYX2FkZEluRVh1c2VzX3BYIiwKKyAgICAgICAgcmVhc29uID0gIk1pZC10cmF2ZXJzYWwgVigpL0UoKSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5HcmFwaFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2hhc1huYW1lX0dhcmNpYVhfaW5Yc3VuZ0J5WF9hc1hzb25nWF9WX2hhc1huYW1lX1dpbGxpZV9EaXhvblhfaW5Yd3JpdHRlbkJ5WF93aGVyZVhlcVhzb25nWFhfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJNaWQtdHJhdmVyc2FsIFYoKS9FKCkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9vdXRYa25vd3NYX1ZfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJNaWQtdHJhdmVyc2FsIFYoKS9FKCkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9WX3ZhbHVlc1huYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJNaWQtdHJhdmVyc2FsIFYoKS9FKCkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0Lkdyb3VwVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfZ3JvdXBYbVhfYnlYbmFtZVhfYnlYaW5Ya25vd3NYX25hbWVYX2NhcFhtWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuR3JvdXBUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9oYXNMYWJlbFhwZXJzb25YX2FzWHBYX291dFhjcmVhdGVkWF9ncm91cF9ieVhuYW1lWF9ieVhzZWxlY3RYcFhfdmFsdWVzWGFnZVhfc3VtWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW5qZWN0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfaW5qZWN0WGdfVlg0WFhfb3V0X25hbWUiLAorICAgICAgICByZWFzb24gPSAiVGhlIGluamVjdCgpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW5qZWN0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfb3V0X2luamVjdFh2MlhfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW5qZWN0KCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLkxvY2FsVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfbG9jYWxYbWF0Y2hYcHJvamVjdF9fY3JlYXRlZF9wZXJzb25fX3BlcnNvbl9uYW1lX25hbWVYX3NlbGVjdFhuYW1lX3Byb2plY3RYX2J5X2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkxvb3BzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfcmVwZWF0WGJvdGhfc2ltcGxlUGF0aFhfdW50aWxYaGFzWG5hbWVfcGV0ZXJYX2FuZF9sb29wc19pc1gzWFhfaGFzWG5hbWVfcGV0ZXJYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Mb29wc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX3JlcGVhdFhib3RoX3NpbXBsZVBhdGhYX3VudGlsWGhhc1huYW1lX3BldGVyWF9vcl9sb29wc19pc1gyWFhfaGFzWG5hbWVfcGV0ZXJYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Mb29wc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX3JlcGVhdFhib3RoX3NpbXBsZVBhdGhYX3VudGlsWGhhc1huYW1lX3BldGVyWF9vcl9sb29wc19pc1gzWFhfaGFzWG5hbWVfcGV0ZXJYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX21hdGNoWGFfYm90aF9iX19iX2JvdGhfY1hfZGVkdXBYYV9iWF9ieVhsYWJlbFgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX21hdGNoWGFfY3JlYXRlZF9sb3BfYl9fYl8wY3JlYXRlZF8yOV9jX19jX3doZXJlWHJlcGVhdFhvdXRYX3RpbWVzWDJYWFgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX21hdGNoWGFfY3JlYXRlZF9sb3BfYl9fYl8wY3JlYXRlZF8yOV9jWF93aGVyZVhjX3JlcGVhdFhvdXRYX3RpbWVzWDJYWF9zZWxlY3RYYV9iX2NYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYd2hlcmVYYW5kWGFfY3JlYXRlZF9iX19iXzBjcmVhdGVkX2NvdW50X2lzWGVxWDNYWFhYX19hX2JvdGhfYl9fd2hlcmVYYl9pblhYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0Y2hUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2JvdGhfYl9fYl9ib3RoX2NYX2RlZHVwWGFfYlhfYnlYbGFiZWxYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0Y2hUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2NyZWF0ZWRfbG9wX2JfX2JfMGNyZWF0ZWRfMjlfY19fY193aGVyZVhyZXBlYXRYb3V0WF90aW1lc1gyWFhYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYYV9jcmVhdGVkX2xvcF9iX19iXzBjcmVhdGVkXzI5X2NYX3doZXJlWGNfcmVwZWF0WG91dFhfdGltZXNYMlhYX3NlbGVjdFhhX2JfY1giLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0Y2hUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFh3aGVyZVhhbmRYYV9jcmVhdGVkX2JfX2JfMGNyZWF0ZWRfY291bnRfaXNYZXFYM1hYWFhfX2FfYm90aF9iX193aGVyZVhiX2luWFgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0WGNyZWF0ZWRYX2FzWGJYX21hdGhYYl9wbHVzX2FYX2J5WGluWGNyZWF0ZWRYX2NvdW50WF9ieVhhZ2VYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0aFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dFhrbm93c1hfYXNYYlhfbWF0aFhhX3BsdXNfYlhfYnlYYWdlWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfd2l0aFNhY2tYMVhfaW5qZWN0WDFYX3JlcGVhdFhzYWNrWHN1bVhfYnlYY29uc3RhbnRYMVhYWF90aW1lc1g1WF9lbWl0X21hdGhYc2luX19YX2J5WHNhY2tYIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbmplY3QoKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgYnkgR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWluVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfZm9vX2luamVjdFg5OTk5OTk5OTk5WF9taW4iLAorICAgICAgICByZWFzb24gPSAiVGhlIGluamVjdCgpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5PcHRpb25hbFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2hhc0xhYmVsWHBlcnNvblhfb3B0aW9uYWxYb3V0WGtub3dzWF9vcHRpb25hbFhvdXRYY3JlYXRlZFhYWF9wYXRoIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLk9wdGlvbmFsVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1Zfb3B0aW9uYWxYb3V0X29wdGlvbmFsWG91dFhYX3BhdGgiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guT3B0aW9uYWxUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9vcHRpb25hbFhhZGRWWGRvZ1hYX2xhYmVsIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBhZGRWKCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlNpbXBsZVBhdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYlhfb3V0X2FzWGNYX3NpbXBsZVBhdGhfYnlYbGFiZWxYX2Zyb21YYlhfdG9YY1hfcGF0aF9ieVhuYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneVByb2Nlc3NUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gInNob3VsZEZpbHRlckNvbXBsZXhWZXJ0ZXhDcml0ZXJpb24iLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TdWJncmFwaFN0cmF0ZWd5UHJvY2Vzc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAic2hvdWxkRmlsdGVyRWRnZUNyaXRlcmlvbiIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJzaG91bGRGaWx0ZXJNaXhlZENyaXRlcmlhIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneVByb2Nlc3NUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gInNob3VsZEZpbHRlclZlcnRleENyaXRlcmlvbiIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJzaG91bGRGaWx0ZXJWZXJ0ZXhDcml0ZXJpb25BbmRLZWVwTGFiZWxzIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneVByb2Nlc3NUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gInNob3VsZEdldEV4Y2x1ZGVkRWRnZSIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5UYWlsVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGFYX291dF9hc1hhWF9zZWxlY3RYbWl4ZWRfYVhfYnlYbGltaXRYbG9jYWxfMFhYX3RhaWxYbG9jYWxfMVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5UYWlsVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGFYX291dF9hc1hhWF9zZWxlY3RYbWl4ZWRfYVhfYnlYdW5mb2xkX3ZhbHVlc1huYW1lWF9mb2xkWF90YWlsWGxvY2FsXzFYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuVGFpbFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dF9hc1hhWF9vdXRfYXNYYVhfc2VsZWN0WG1peGVkX2FYX2J5WHVuZm9sZF92YWx1ZXNYbmFtZVhfZm9sZFhfdGFpbFhsb2NhbF8yWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlRhaWxUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYVhfb3V0X2FzWGFYX3NlbGVjdFhtaXhlZF9hWF9ieVh1bmZvbGRfdmFsdWVzWG5hbWVYX2ZvbGRYX3RhaWxYbG9jYWxYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlRyZWVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9vdXRfb3V0X3RyZWVfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuVHJlZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX291dF9vdXRfdHJlZVhhWF9ieVhuYW1lWF9ib3RoX2JvdGhfY2FwWGFYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVW5mb2xkVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfcmVwZWF0WGJvdGhfc2ltcGxlUGF0aFhfdW50aWxYaGFzSWRYNlhYX3BhdGhfYnlYbmFtZVhfdW5mb2xkIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVmVydGV4VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfaGFzTGFiZWxYcGVyc29uWF9WX2hhc0xhYmVsWHNvZnR3YXJlWF9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIk1pZC10cmF2ZXJzYWwgVigpL0UoKSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5XaGVyZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dF9hc1hiWF93aGVyZVhhbmRYYXNYYVhfb3V0WGtub3dzWF9hc1hiWF9fb3JYYXNYYlhfb3V0WGNyZWF0ZWRYX2hhc1huYW1lX3JpcHBsZVhfX2FzWGJYX2luWGtub3dzWF9jb3VudF9pc1hub3RYZXFYMFhYWFhYX3NlbGVjdFhhX2JYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuV2hlcmVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYlhfd2hlcmVYaW5fY291bnRfaXNYZXFYM1hYX29yX3doZXJlWG91dFhjcmVhdGVkWF9hbmRfaGFzWGxhYmVsX3BlcnNvblhYWF9zZWxlY3RYYV9iWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLldoZXJlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0RVhjcmVhdGVkWF9hc1hiWF9pblZfYXNYY1hfaW5YY3JlYXRlZFhfYXNYZFhfd2hlcmVYYV9sdFhiWF9vclhndFhjWFhfYW5kWG5lcVhkWFhYX2J5WGFnZVhfYnlYd2VpZ2h0WF9ieVhpblhjcmVhdGVkWF92YWx1ZXNYYWdlWF9taW5YX3NlbGVjdFhhX2NfZFgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5XaGVyZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dEVYY3JlYXRlZFhfYXNYYlhfaW5WX2FzWGNYX3doZXJlWGFfZ3RYYlhfb3JYZXFYYlhYWF9ieVhhZ2VYX2J5WHdlaWdodFhfYnlYd2VpZ2h0WF9zZWxlY3RYYV9jWF9ieVhuYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLldoZXJlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0WGNyZWF0ZWRYX2FzWGJYX3doZXJlWGFuZFhhc1hiWF9pbl9fbm90WGFzWGFYX291dFhjcmVhdGVkWF9oYXNYbmFtZV9yaXBwbGVYWFhfc2VsZWN0WGFfYlgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5XaGVyZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dFhjcmVhdGVkWF9pblhjcmVhdGVkWF9hc1hiWF93aGVyZVhhX2d0WGJYWF9ieVhhZ2VYX3NlbGVjdFhhX2JYX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuV2hlcmVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9hc1hhWF9vdXRfaGFzWGFnZVhfd2hlcmVYZ3RYYVhYX2J5WGFnZVhfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLldoZXJlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfYXNYYVhfb3V0WGNyZWF0ZWRYX2luWGNyZWF0ZWRYX2FzWGJYX3doZXJlWGFzWGJYX291dFhjcmVhdGVkWF9oYXNYbmFtZV9yaXBwbGVYWF92YWx1ZXNYYWdlX25hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlBhdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYlhfb3V0X2FzWGNYX3BhdGhfZnJvbVhiWF90b1hjWF9ieVhuYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlBhdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9vdXRfb3V0X3BhdGhfYnlYbmFtZVhfYnlYYWdlWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlBhdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9yZXBlYXRYb3V0WF90aW1lc1gyWF9wYXRoX2J5WGl0WF9ieVhuYW1lWF9ieVhsYW5nWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlBhdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9vdXRfcGF0aF9ieVhhZ2VYX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuUmFuZ2VUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9pbl9hc1hhWF9pbl9hc1hhWF9zZWxlY3RYbWl4ZWRfYVhfYnlYdW5mb2xkX3ZhbHVlc1huYW1lWF9mb2xkWF9saW1pdFhsb2NhbF8xWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlJhbmdlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfaW5fYXNYYVhfaW5fYXNYYVhfc2VsZWN0WG1peGVkX2FYX2J5WHVuZm9sZF92YWx1ZXNYbmFtZVhfZm9sZFhfbGltaXRYbG9jYWxfMlgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5SYW5nZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dF9hc1hhWF9vdXRfYXNYYVhfc2VsZWN0WG1peGVkX2FYX2J5WHVuZm9sZF92YWx1ZXNYbmFtZVhfZm9sZFhfcmFuZ2VYbG9jYWxfMV8yWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlJhbmdlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGFYX291dF9hc1hhWF9zZWxlY3RYbWl4ZWRfYVhfYnlYdW5mb2xkX3ZhbHVlc1huYW1lWF9mb2xkWF9yYW5nZVhsb2NhbF8xXzNYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuUmFuZ2VUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYVhfb3V0X2FzWGFYX3NlbGVjdFhtaXhlZF9hWF9ieVh1bmZvbGRfdmFsdWVzWG5hbWVYX2ZvbGRYX3JhbmdlWGxvY2FsXzRfNVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5SZXBlYXRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9oYXNYbG9vcF9uYW1lX2xvb3BYX3JlcGVhdFhpblhfdGltZXNYNVhfcGF0aF9ieV9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfaGFzWG5hbWVfbWFya29YX3JlcGVhdFhvdXRFX2luVl9zaW1wbGVQYXRoWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWF9wYXRoX2J5WG5hbWVYX2J5WGxhYmVsWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5TYWNrVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX3dpdGhCdWxrWGZhbHNlWF93aXRoU2Fja1gxX3N1bVhfVl9vdXRfYmFycmllcl9zYWNrIiwKKyAgICAgICAgcmVhc29uID0gIk9uZSBidWxrIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5TYWNrVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX3dpdGhCdWxrWGZhbHNlWF93aXRoU2Fja1gxX3N1bVhfVlgxWF9sb2NhbFhvdXRFWGtub3dzWF9iYXJyaWVyWG5vcm1TYWNrWF9pblZYX2luWGtub3dzWF9iYXJyaWVyX3NhY2siLAorICAgICAgICByZWFzb24gPSAiT25lIGJ1bGsgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfZ3JvdXBYbVhfYnlfYnlYYm90aEVfY291bnRYX2JhcnJpZXJfc2VsZWN0WG1YX3NlbGVjdFhzZWxlY3RYYVhYX2J5WG1hdGhYX3BsdXNfWFgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TZWxlY3RUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRYa25vd3NYX2FzWGJYX2xvY2FsWHNlbGVjdFhhX2JYX2J5WG5hbWVYWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9hc1huYW1lWF9hc1hsYW5ndWFnZVhfYXNYY3JlYXRvcnNYX3NlbGVjdFhuYW1lX2xhbmd1YWdlX2NyZWF0b3JzWF9ieVhuYW1lWF9ieVhsYW5nWF9ieVhpblhjcmVhdGVkWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TZWxlY3RUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfYXNYbmFtZVhfYXNYbGFuZ3VhZ2VYX2FzWGNyZWF0b3JzWF9zZWxlY3RYbmFtZV9sYW5ndWFnZV9jcmVhdG9yc1hfYnlYbmFtZVhfYnlYbGFuZ1hfYnlYaW5YY3JlYXRlZFhfbmFtZV9mb2xkX29yZGVyWGxvY2FsWFgiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2FzWG5hbWVYX2FzWGxhbmd1YWdlWF9hc1hjcmVhdG9yc1hfc2VsZWN0WG5hbWVfbGFuZ3VhZ2VfY3JlYXRvcnNYX2J5WG5hbWVYX2J5WGxhbmdYX2J5WGluWGNyZWF0ZWRYX25hbWVfZm9sZF9vcmRlclhsb2NhbFhYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3VudGlsWG91dF9vdXRYX3JlcGVhdFhpbl9hc1hhWF9pbl9hc1hiWFhfc2VsZWN0WGFfYlhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfdW50aWxYb3V0X291dFhfcmVwZWF0WGluX2FzWGFYWF9zZWxlY3RYYVhfYnlYdGFpbFhsb2NhbFhfbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvcGVydGllc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19pbmplY3RYZ19WWDFYX3Byb3BlcnRpZXNYbmFtZVhfbmV4dFhfdmFsdWUiLAorICAgICAgICByZWFzb24gPSAiTmVlZHMgaW52ZXN0aWdhdGlvbiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLldyaXRlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbygpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBnZW5lcmFsbHkgYnkgR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dFhrbm93c1hYX3VudGlsWHJlcGVhdFhvdXRYY3JlYXRlZFhYX2VtaXRYaGFzWG5hbWVfbG9wWFhYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5SZXBlYXRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgzWF9yZXBlYXRYYm90aFhfY3JlYXRlZFhYX3VudGlsWGxvb3BzX2lzXzQwWFhlbWl0X3JlcGVhdFhpbl9rbm93c1hYX2VtaXRfbG9vcHNYaXNYMVhkZWR1cF92YWx1ZXMiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYNlhfcmVwZWF0WGFfYm90aFhjcmVhdGVkWF9zaW1wbGVQYXRoWF9lbWl0WHJlcGVhdFhiX2JvdGhYa25vd3NYWF91bnRpbFhsb29wc1hiWF9hc1hiX3doZXJlWGxvb3BzWGFYX2FzWGJYX2hhc1huYW1lX3ZhZGFzWFhfZGVkdXBfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaFByb3ZpZGVyLkRlc2NyaXB0b3IoY29tcHV0ZXIgPSBUaW5rZXJHcmFwaENvbXB1dGVyLmNsYXNzKQorcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5UmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyIHsKKworICAgIHB1YmxpYyBHcmFwaEJpbmFyeVJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlcigpIHsKKyAgICAgICAgc3VwZXIoY3JlYXRlQ2x1c3RlckJ1aWxkZXIoU2VyaWFsaXplcnMuR1JBUEhCSU5BUllfVjFEMCkuY3JlYXRlKCksIHRydWUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm92aWRlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVmOGY4OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyaWFsaXplcnM7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgcHVibGljIEdyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm92aWRlcigpIHsKKyAgICAgICAgc3VwZXIoY3JlYXRlQ2x1c3RlckJ1aWxkZXIoU2VyaWFsaXplcnMuR1JBUEhCSU5BUllfVjFEMCkuY3JlYXRlKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcmFwaFNPTlJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5qYXZhCmluZGV4IDhiNjY5YzkuLjdiODBjMmMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIuamF2YQpAQCAtMjAsMTcgKzIwLDEwIEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZTsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyaWFsaXplcnM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5wcm9jZXNzLmNvbXB1dGVyLlRpbmtlckdyYXBoQ29tcHV0ZXI7CiAKLWltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOwotCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwpAQCAtMzUwLDYgKzM0MywzMCBAQAogICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvcGVydGllc1Rlc3QiLAogICAgICAgICBtZXRob2QgPSAiZ19pbmplY3RYZ19WWDFYX3Byb3BlcnRpZXNYbmFtZVhfbmV4dFhfdmFsdWUiLAogICAgICAgICByZWFzb24gPSAiTmVlZHMgaW52ZXN0aWdhdGlvbiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLldyaXRlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbygpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBnZW5lcmFsbHkgYnkgR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dFhrbm93c1hYX3VudGlsWHJlcGVhdFhvdXRYY3JlYXRlZFhYX2VtaXRYaGFzWG5hbWVfbG9wWFhYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5SZXBlYXRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgzWF9yZXBlYXRYYm90aFhfY3JlYXRlZFhYX3VudGlsWGxvb3BzX2lzXzQwWFhlbWl0X3JlcGVhdFhpbl9rbm93c1hYX2VtaXRfbG9vcHNYaXNYMVhkZWR1cF92YWx1ZXMiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYNlhfcmVwZWF0WGFfYm90aFhjcmVhdGVkWF9zaW1wbGVQYXRoWF9lbWl0WHJlcGVhdFhiX2JvdGhYa25vd3NYWF91bnRpbFhsb29wc1hiWF9hc1hiX3doZXJlWGxvb3BzWGFYX2FzWGJYX2hhc1huYW1lX3ZhZGFzWFhfZGVkdXBfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKIEBHcmFwaFByb3ZpZGVyLkRlc2NyaXB0b3IoY29tcHV0ZXIgPSBUaW5rZXJHcmFwaENvbXB1dGVyLmNsYXNzKQogcHVibGljIGNsYXNzIEdyYXBoU09OUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyIHsKICAgICBwdWJsaWMgR3JhcGhTT05SZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEKaW5kZXggMDc1ODMzNi4uMTI2OTMyMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyeW9SZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIuamF2YQpAQCAtMjAsMTcgKzIwLDEwIEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZTsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyaWFsaXplcnM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5wcm9jZXNzLmNvbXB1dGVyLlRpbmtlckdyYXBoQ29tcHV0ZXI7CiAKLWltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOwotCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQpAQCAtMzUxLDYgKzM0NCwzMCBAQAogICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvcGVydGllc1Rlc3QiLAogICAgICAgICBtZXRob2QgPSAiZ19pbmplY3RYZ19WWDFYX3Byb3BlcnRpZXNYbmFtZVhfbmV4dFhfdmFsdWUiLAogICAgICAgICByZWFzb24gPSAiTmVlZHMgaW52ZXN0aWdhdGlvbiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLldyaXRlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbygpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBnZW5lcmFsbHkgYnkgR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dFhrbm93c1hYX3VudGlsWHJlcGVhdFhvdXRYY3JlYXRlZFhYX2VtaXRYaGFzWG5hbWVfbG9wWFhYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5SZXBlYXRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgzWF9yZXBlYXRYYm90aFhfY3JlYXRlZFhYX3VudGlsWGxvb3BzX2lzXzQwWFhlbWl0X3JlcGVhdFhpbl9rbm93c1hYX2VtaXRfbG9vcHNYaXNYMVhkZWR1cF92YWx1ZXMiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYNlhfcmVwZWF0WGFfYm90aFhjcmVhdGVkWF9zaW1wbGVQYXRoWF9lbWl0WHJlcGVhdFhiX2JvdGhYa25vd3NYWF91bnRpbFhsb29wc1hiWF9hc1hiX3doZXJlWGxvb3BzWGFYX2FzWGJYX2hhc1huYW1lX3ZhZGFzWFhfZGVkdXBfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKIEBHcmFwaFByb3ZpZGVyLkRlc2NyaXB0b3IoY29tcHV0ZXIgPSBUaW5rZXJHcmFwaENvbXB1dGVyLmNsYXNzKQogcHVibGljIGNsYXNzIEdyeW9SZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIgZXh0ZW5kcyBBYnN0cmFjdFJlbW90ZUdyYXBoUHJvdmlkZXIgewogCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcnlvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yQ29tcHV0ZXJQcm92aWRlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3J5b1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvckNvbXB1dGVyUHJvdmlkZXIuamF2YQppbmRleCBjNTM1MTZmLi43N2ZhNWY2IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcnlvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yQ29tcHV0ZXJQcm92aWRlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyeW9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JDb21wdXRlclByb3ZpZGVyLmphdmEKQEAgLTIyLDcgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGgucHJvY2Vzcy5jb21wdXRlci5UaW5rZXJHcmFwaENvbXB1dGVyOwpAQCAtMzQyLDYgKzM0MiwzMCBAQAogICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdCIsCiAgICAgICAgIG1ldGhvZCA9ICJnX1ZfdW50aWxYb3V0X291dFhfcmVwZWF0WGluX2FzWGFYWF9zZWxlY3RYYVhfYnlYdGFpbFhsb2NhbFhfbmFtZVgiLAogICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLldyaXRlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbygpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBnZW5lcmFsbHkgYnkgR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dFhrbm93c1hYX3VudGlsWHJlcGVhdFhvdXRYY3JlYXRlZFhYX2VtaXRYaGFzWG5hbWVfbG9wWFhYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5SZXBlYXRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgzWF9yZXBlYXRYYm90aFhfY3JlYXRlZFhYX3VudGlsWGxvb3BzX2lzXzQwWFhlbWl0X3JlcGVhdFhpbl9rbm93c1hYX2VtaXRfbG9vcHNYaXNYMVhkZWR1cF92YWx1ZXMiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYNlhfcmVwZWF0WGFfYm90aFhjcmVhdGVkWF9zaW1wbGVQYXRoWF9lbWl0WHJlcGVhdFhiX2JvdGhYa25vd3NYWF91bnRpbFhsb29wc1hiWF9hc1hiX3doZXJlWGxvb3BzWGFYX2FzWGJYX2hhc1huYW1lX3ZhZGFzWFhfZGVkdXBfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKIEBHcmFwaFByb3ZpZGVyLkRlc2NyaXB0b3IoY29tcHV0ZXIgPSBUaW5rZXJHcmFwaENvbXB1dGVyLmNsYXNzKQogcHVibGljIGNsYXNzIEdyeW9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JDb21wdXRlclByb3ZpZGVyIGV4dGVuZHMgR3J5b1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvclByb3ZpZGVyIHsKICAgICBwcml2YXRlIGZpbmFsIGludCBBVkFJTEFCTEVfUFJPQ0VTU09SUyA9IFJ1bnRpbWUuZ2V0UnVudGltZSgpLmF2YWlsYWJsZVByb2Nlc3NvcnMoKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvclByb2Nlc3NDb21wdXRlclRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvclByb2Nlc3NDb21wdXRlclRlc3QuamF2YQppbmRleCAzNmNkOGY1Li43MjMyMWE0IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCkBAIC0yMSw3ICsyMSw3IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuUHJvY2Vzc0NvbXB1dGVyU3VpdGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhCmluZGV4IDg3ZWIzNzUuLjliMTg1NmEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvclByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKQEAgLTIxLDcgKzIxLDcgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlckNsYXNzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5Qcm9jZXNzU3RhbmRhcmRTdWl0ZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAogLyoqCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYzQyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YQpAQCAtMCwwICsxLDM0IEBACisvKgorICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqICB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuR3JhcGhCaW5hcnlSZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLlByb2Nlc3NDb21wdXRlclN1aXRlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BSdW5XaXRoKFByb2Nlc3NDb21wdXRlclN1aXRlLmNsYXNzKQorQEdyYXBoUHJvdmlkZXJDbGFzcyhwcm92aWRlciA9IEdyYXBoQmluYXJ5UmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmNsYXNzLCBncmFwaCA9IFJlbW90ZUdyYXBoLmNsYXNzKQorcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm9jZXNzQ29tcHV0ZXJUZXN0IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYjFkMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqICB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyQ2xhc3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkdyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuUHJvY2Vzc1N0YW5kYXJkU3VpdGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworQFJ1bldpdGgoUHJvY2Vzc1N0YW5kYXJkU3VpdGUuY2xhc3MpCitAR3JhcGhQcm92aWRlckNsYXNzKHByb3ZpZGVyID0gR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb3ZpZGVyLmNsYXNzLCBncmFwaCA9IFJlbW90ZUdyYXBoLmNsYXNzKQorcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcmFwaFNPTlJlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCmluZGV4IGU5N2E0NzYuLjhkNjAxM2IgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcmFwaFNPTlJlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcmFwaFNPTlJlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyQ2xhc3M7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkdyYXBoU09OUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5Qcm9jZXNzQ29tcHV0ZXJTdWl0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQppbmRleCA3ZjNmOWYxLi5jMWQ0MjljIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlckNsYXNzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZS5HcmFwaFNPTlJlbW90ZUdyYXBoUHJvdmlkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLlByb2Nlc3NTdGFuZGFyZFN1aXRlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAogLyoqCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyeW9SZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YQppbmRleCAzNjMxNDkwLi5jZmVlMzhmIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuR3J5b1JlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuUHJvY2Vzc0NvbXB1dGVyU3VpdGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogCiAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhCmluZGV4IGQ0MGMyNjguLjg3ZjRiNmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyeW9SZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlckNsYXNzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5Qcm9jZXNzU3RhbmRhcmRTdWl0ZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuR3J5b1JlbW90ZUdyYXBoUHJvdmlkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogCiAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpbkRyaXZlckludGVncmF0ZVRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpbkRyaXZlckludGVncmF0ZVRlc3QuamF2YQppbmRleCA5NzQ0Zjc5Li44NmFjODA5IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5Ecml2ZXJJbnRlZ3JhdGVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluRHJpdmVySW50ZWdyYXRlVGVzdC5qYXZhCkBAIC0yNCwyMCArMjQsMjggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DaGFubmVsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXF1ZXN0T3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXN1bHQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0U2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5leGNlcHRpb24uUmVzcG9uc2VFeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuaGFuZGxlci5XZWJTb2NrZXRDbGllbnRIYW5kbGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVxdWVzdE1lc3NhZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZVN0YXR1c0NvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6ZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLlNjcmlwdEZpbGVHcmVtbGluUGx1Z2luOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5OaW9DaGFubmVsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uU3RvcmFnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJGYWN0b3J5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5Mb2c0alJlY29yZGluZ0FwcGVuZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5UaW1lVXRpbDsKQEAgLTQ4LDYgKzU2LDggQEAKIGltcG9ydCBvcmcuanVuaXQuQWZ0ZXI7CiBpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcubW9ja2l0by5Bcmd1bWVudENhcHRvcjsKK2ltcG9ydCBvcmcubW9ja2l0by5Nb2NraXRvOwogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CiBpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CiAKQEAgLTYxLDYgKzcxLDcgQEAKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZTsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaDsKQEAgLTg4LDYgKzk5LDcgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLmlzOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5TdHJpbmdTdGFydHNXaXRoLnN0YXJ0c1dpdGg7CitpbXBvcnQgc3RhdGljIG9yZy5tb2NraXRvLk1vY2tpdG8udmVyaWZ5OwogCiAvKioKICAqIEludGVncmF0aW9uIHRlc3RzIGZvciBncmVtbGluLWRyaXZlciBjb25maWd1cmF0aW9ucyBhbmQgc2V0dGluZ3MuCkBAIC0xODEsNiArMTkzLDkgQEAKICAgICAgICAgICAgIGNhc2UgInNob3VsZFByb2Nlc3NFdmFsSW50ZXJydXB0aW9uIjoKICAgICAgICAgICAgICAgICBzZXR0aW5ncy5ldmFsdWF0aW9uVGltZW91dCA9IDE1MDA7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJzaG91bGRQcm9jZXNzRXZhbFRpbWVvdXRPdmVycmlkZSI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc2NyaXB0RXZhbHVhdGlvblRpbWVvdXQgPSAxNTAwMDsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBzZXR0aW5nczsKQEAgLTIxMSw2ICsyMjYsMjMgQEAKICAgICB9CiAKICAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFByb2Nlc3NFdmFsVGltZW91dE92ZXJyaWRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5Lm9wZW4oKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworICAgICAgICBmaW5hbCBSZXF1ZXN0T3B0aW9ucyBvcHRpb25zID0gUmVxdWVzdE9wdGlvbnMuYnVpbGQoKS50aW1lb3V0KDUwMCkuY3JlYXRlKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIlRocmVhZC5zbGVlcCg1MDAwKTsnZG9uZSciLCBvcHRpb25zKS5hbGwoKS5nZXQoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIHRpbWVkIG91dCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlRXhjZXB0aW9uIHJlID0gKFJlc3BvbnNlRXhjZXB0aW9uKSBleC5nZXRDYXVzZSgpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfVElNRU9VVCwgcmUuZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkpOworICAgICAgICB9CisKKyAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgIH0KKworICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkUHJvY2Vzc1RyYXZlcnNhbEludGVycnVwdGlvbigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5vcGVuKCk7CiAgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKQEAgLTQxNyw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgICIgICAgdiA9IGdyYXBoLmFkZFZlcnRleCgpO1xuIiArCiAgICAgICAgICAgICAgICAgIiAgICB2LnByb3BlcnR5KFwiaWlcIiwgaWkpO1xuIiArCiAgICAgICAgICAgICAgICAgIiAgICB2LnByb3BlcnR5KFwic2luXCIsIE1hdGguc2luKGlpLzUuMCkpO1xuIiArCi0gICAgICAgICAgICAgICAgIiAgICBWZXJ0ZXggdSA9IGcuVihpZHMuZ2V0KHJhbmQubmV4dEludChpZHMuc2l6ZSgpKSkpLm5leHQoKTtcbiIgKworICAgICAgICAgICAgICAgICIgICAgVmVydGV4IHUgPSBncmFwaC52ZXJ0aWNlcyhpZHMuZ2V0KHJhbmQubmV4dEludChpZHMuc2l6ZSgpKSkpLm5leHQoKTtcbiIgKwogICAgICAgICAgICAgICAgICIgICAgdi5hZGRFZGdlKFwibGlua2VkXCIsIHUpO1xuIiArCiAgICAgICAgICAgICAgICAgIiAgICBpZHMuYWRkKHUuaWQoKSk7XG4iICsKICAgICAgICAgICAgICAgICAiICAgIGlkcy5hZGQodi5pZCgpKTtcbiIgKwpAQCAtOTM5LDYgKzk3MSwyMSBAQAogICAgIH0KIAogICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkV29ya1dpdGhHcmFwaEJpbmFyeVYxU2VyaWFsaXphdGlvbigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLnNlcmlhbGl6ZXIoU2VyaWFsaXplcnMuR1JBUEhCSU5BUllfVjFEMCkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICBmaW5hbCBMaXN0PFJlc3VsdD4gciA9IGNsaWVudC5zdWJtaXQoIlRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCkudHJhdmVyc2FsKCkuVigxKSIpLmFsbCgpLmpvaW4oKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHIuc2l6ZSgpKTsKKworICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IHIuZ2V0KDApLmdldChSZWZlcmVuY2VWZXJ0ZXguY2xhc3MpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgdi5pZCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2LmxhYmVsKCkpOworCisgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICB9CisKKyAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEZhaWxDbGllbnRTaWRlV2l0aFRvb0xhcmdlQVJlc3BvbnNlKCkgewogICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLm1heENvbnRlbnRMZW5ndGgoMSkuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKQEAgLTExMzMsMTQgKzExODAsMTIgQEAKIAogICAgICAgICAvLyB0aGlzIGxpbmUgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgdGVzdHMgR3JhcGhUcmF2ZXJzYWwgd2hpY2ggaGFzIGEgY2VydGFpbiB0cmFuc2FjdGlvbmFsIHBhdGgKICAgICAgICAgZmluYWwgVmVydGV4IHZlcnRleFJlcXVlc3QxID0gY2xpZW50LnN1Ym1pdCgiZy5hZGRWKCkucHJvcGVydHkoXCJuYW1lXCIsXCJzdGVwaGVuXCIpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCB2ZXJ0ZXhSZXF1ZXN0MS52YWx1ZXMoIm5hbWUiKS5uZXh0KCkpOwogCiAgICAgICAgIGZpbmFsIFZlcnRleCB2ZXJ0ZXhSZXF1ZXN0MiA9IGNsaWVudC5zdWJtaXQoImdyYXBoLnZlcnRpY2VzKCkubmV4dCgpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCB2ZXJ0ZXhSZXF1ZXN0Mi52YWx1ZXMoIm5hbWUiKS5uZXh0KCkpOworICAgICAgICBhc3NlcnRFcXVhbHModmVydGV4UmVxdWVzdDEuaWQoKSwgdmVydGV4UmVxdWVzdDIuaWQoKSk7CiAKICAgICAgICAgLy8gdGhpcyBsaW5lIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IHRlc3RzIHRoZSBvdGhlciB0cmFuc2FjdGlvbmFsIHBhdGgKLSAgICAgICAgZmluYWwgVmVydGV4IHZlcnRleFJlcXVlc3QzID0gY2xpZW50LnN1Ym1pdCgiZ3JhcGguYWRkVmVydGV4KFwibmFtZVwiLFwibWFya29cIikiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygibWFya28iLCB2ZXJ0ZXhSZXF1ZXN0My52YWx1ZXMoIm5hbWUiKS5uZXh0KCkpOworICAgICAgICBjbGllbnQuc3VibWl0KCJncmFwaC5hZGRWZXJ0ZXgoXCJuYW1lXCIsXCJtYXJrb1wiKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKIAogICAgICAgICBhc3NlcnRFcXVhbHMoMiwgY2xpZW50LnN1Ym1pdCgiZy5WKCkuY291bnQoKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRMb25nKCkpOwogCkBAIC0xMzEzLDExICsxMzU4LDYgQEAKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhSZXNwb25zZVN0YXR1c0NvZGUuUkVRVUVTVF9FUlJPUl9JTlZBTElEX1JFUVVFU1RfQVJHVU1FTlRTLCByZS5nZXRSZXNwb25zZVN0YXR1c0NvZGUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBrZWVwIHRoZSB0ZXN0aW5nIGhlcmUgdW50aWwgInJlYmluZCIgaXMgY29tcGxldGVseSByZW1vdmVkCi0gICAgICAgIGZpbmFsIENsaWVudCByZWJvdW5kTGVnYWN5ID0gY2x1c3Rlci5jb25uZWN0KCkucmViaW5kKCJncmFwaCIpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdkxlZ2FjeSA9IHJlYm91bmRMZWdhY3kuc3VibWl0KCJnLmFkZFZlcnRleCgnbmFtZScsJ3N0ZXBoZW4nKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdkxlZ2FjeS52YWx1ZSgibmFtZSIpKTsKLQogICAgICAgICBmaW5hbCBDbGllbnQgcmVib3VuZCA9IGNsdXN0ZXIuY29ubmVjdCgpLmFsaWFzKCJncmFwaCIpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IHJlYm91bmQuc3VibWl0KCJnLmFkZFZlcnRleCgnbmFtZScsJ2phc29uJykiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7CiAgICAgICAgIGFzc2VydEVxdWFscygiamFzb24iLCB2LnZhbHVlKCJuYW1lIikpOwpAQCAtMTM0MCwxMSArMTM4MCw2IEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9TQ1JJUFRfRVZBTFVBVElPTiwgcmUuZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8ga2VlcCB0aGUgdGVzdGluZyBoZXJlIHVudGlsICJyZWJpbmQiIGlzIGNvbXBsZXRlbHkgcmVtb3ZlZAotICAgICAgICBmaW5hbCBDbGllbnQgcmVib3VuZExlZ2FjeSA9IGNsdXN0ZXIuY29ubmVjdCgpLnJlYmluZCgiZ3JhcGgiKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHZMZWdhY3kgPSByZWJvdW5kTGVnYWN5LnN1Ym1pdCgiZy5hZGRWZXJ0ZXgoJ25hbWUnLCdzdGVwaGVuJykiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIHZMZWdhY3kudmFsdWUoIm5hbWUiKSk7Ci0KICAgICAgICAgZmluYWwgQ2xpZW50IHJlYm91bmQgPSBjbHVzdGVyLmNvbm5lY3QoKS5hbGlhcygiZ3JhcGgiKTsKICAgICAgICAgZmluYWwgVmVydGV4IHYgPSByZWJvdW5kLnN1Ym1pdCgiZy5hZGRWZXJ0ZXgoJ25hbWUnLCdqYXNvbicpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImphc29uIiwgdi52YWx1ZSgibmFtZSIpKTsKQEAgLTEzNjcsMTEgKzE0MDIsNiBAQAogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0NSSVBUX0VWQUxVQVRJT04sIHJlLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIGtlZXAgdGhlIHRlc3RpbmcgaGVyZSB1bnRpbCAicmViaW5kIiBpcyBjb21wbGV0ZWx5IHJlbW92ZWQKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudExlZ2FjeSA9IGNsaWVudC5yZWJpbmQoImcxIik7Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2TGVnYWN5ID0gY2xpZW50TGVnYWN5LnN1Ym1pdCgiZy5hZGRWKCkucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIHZMZWdhY3kudmFsdWUoIm5hbWUiKSk7Ci0KICAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudEFsaWFzZWQgPSBjbGllbnQuYWxpYXMoImcxIik7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gY2xpZW50QWxpYXNlZC5zdWJtaXQoImcuYWRkVigpLnByb3BlcnR5KCduYW1lJywnamFzb24nKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXNvbiIsIHYudmFsdWUoIm5hbWUiKSk7CkBAIC0xMzk0LDE0ICsxNDI0LDggQEAKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhSZXNwb25zZVN0YXR1c0NvZGUuU0VSVkVSX0VSUk9SX1NDUklQVF9FVkFMVUFUSU9OLCByZS5nZXRSZXNwb25zZVN0YXR1c0NvZGUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBrZWVwIHRoZSB0ZXN0aW5nIGhlcmUgdW50aWwgInJlYmluZCIgaXMgY29tcGxldGVseSByZW1vdmVkCi0gICAgICAgIGZpbmFsIENsaWVudCByZWJvdW5kTGVnYWN5ID0gY2xpZW50LnJlYmluZCgiZ3JhcGgiKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgcmVib3VuZExlZ2FjeS5zdWJtaXQoIm49J3N0ZXBoZW4nIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFN0cmluZygpKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHZMZWdhY3kgPSByZWJvdW5kTGVnYWN5LnN1Ym1pdCgiZy5hZGRWZXJ0ZXgoJ25hbWUnLG4pIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCB2TGVnYWN5LnZhbHVlKCJuYW1lIikpOwotCiAgICAgICAgIGZpbmFsIENsaWVudCBhbGlhc2VkID0gY2xpZW50LmFsaWFzKCJncmFwaCIpOwotICAgICAgICBhc3NlcnRFcXVhbHMoImphc29uIiwgcmVib3VuZExlZ2FjeS5zdWJtaXQoIm49J2phc29uJyIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRTdHJpbmcoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiamFzb24iLCBhbGlhc2VkLnN1Ym1pdCgibj0namFzb24nIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFN0cmluZygpKTsKICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBhbGlhc2VkLnN1Ym1pdCgiZy5hZGRWZXJ0ZXgoJ25hbWUnLG4pIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImphc29uIiwgdi52YWx1ZSgibmFtZSIpKTsKIApAQCAtMTQyMywxMiArMTQ0Nyw2IEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9TQ1JJUFRfRVZBTFVBVElPTiwgcmUuZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8ga2VlcCB0aGUgdGVzdGluZyBoZXJlIHVudGlsICJyZWJpbmQiIGlzIGNvbXBsZXRlbHkgcmVtb3ZlZAotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50TGVnYWN5ID0gY2xpZW50LnJlYmluZCgiZzEiKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgY2xpZW50TGVnYWN5LnN1Ym1pdCgibj0nc3RlcGhlbiciKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0U3RyaW5nKCkpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdkxlZ2FjeSA9IGNsaWVudExlZ2FjeS5zdWJtaXQoImcuYWRkVigpLnByb3BlcnR5KCduYW1lJyxuKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdkxlZ2FjeS52YWx1ZSgibmFtZSIpKTsKLQogICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50QWxpYXNlZCA9IGNsaWVudC5hbGlhcygiZzEiKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXNvbiIsIGNsaWVudEFsaWFzZWQuc3VibWl0KCJuPSdqYXNvbiciKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0U3RyaW5nKCkpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGNsaWVudEFsaWFzZWQuc3VibWl0KCJnLmFkZFYoKS5wcm9wZXJ0eSgnbmFtZScsbikiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7CkBAIC0xNDQ3LDggKzE0NjUsNyBAQAogICAgICAgICBmaW5hbCBDbGllbnQgc2Vzc2lvbldpdGhvdXRNYW5hZ2VkVHggPSBjbHVzdGVyLmNvbm5lY3QobmFtZS5nZXRNZXRob2ROYW1lKCkgKyAiLW5vdC1tYW5hZ2VkIik7CiAKICAgICAgICAgLy8gdGhpcyBzaG91bGQgYXV0by1jb21taXQKLSAgICAgICAgZmluYWwgVmVydGV4IHZTdGVwaGVuID0gc2Vzc2lvbldpdGhNYW5hZ2VkVHguc3VibWl0KCJ2ID0gZy5hZGRWKCkucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCB2U3RlcGhlbi52YWx1ZSgibmFtZSIpKTsKKyAgICAgICAgc2Vzc2lvbldpdGhNYW5hZ2VkVHguc3VibWl0KCJ2ID0gZy5hZGRWKCkucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwogCiAgICAgICAgIC8vIHRoZSBvdGhlciBjbGllbnRzIHNob3VsZCBzZWUgdGhhdCBjaGFuZ2UgYmVjYXVzZSBvZiBhdXRvLWNvbW1pdAogICAgICAgICBhc3NlcnRUaGF0KGNsaWVudC5zdWJtaXQoImcuVigpLmhhcygnbmFtZScsJ3N0ZXBoZW4nKS5oYXNOZXh0KCkiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0Qm9vbGVhbigpLCBpcyh0cnVlKSk7CkBAIC0xNDU2LDcgKzE0NzMsNiBAQAogCiAgICAgICAgIC8vIHRoaXMgc2hvdWxkIE5PVCBhdXRvLWNvbW1pdAogICAgICAgICBmaW5hbCBWZXJ0ZXggdkRhbmllbCA9IHNlc3Npb25XaXRob3V0TWFuYWdlZFR4LnN1Ym1pdCgidiA9IGcuYWRkVigpLnByb3BlcnR5KCduYW1lJywnZGFuaWVsJykubmV4dCgpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoImRhbmllbCIsIHZEYW5pZWwudmFsdWUoIm5hbWUiKSk7CiAKICAgICAgICAgLy8gdGhlIG90aGVyIGNsaWVudHMgc2hvdWxkIE5PVCBzZWUgdGhhdCBjaGFuZ2UgYmVjYXVzZSBvZiBhdXRvLWNvbW1pdAogICAgICAgICBhc3NlcnRUaGF0KGNsaWVudC5zdWJtaXQoImcuVigpLmhhcygnbmFtZScsJ2RhbmllbCcpLmhhc05leHQoKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRCb29sZWFuKCksIGlzKGZhbHNlKSk7CkBAIC0xNDY0LDcgKzE0ODAsNyBAQAogCiAgICAgICAgIC8vIGJ1dCAidiIgc2hvdWxkIHN0aWxsIGJlIHRoZXJlCiAgICAgICAgIGZpbmFsIFZlcnRleCB2RGFuaWVsQWdhaW4gPSBzZXNzaW9uV2l0aG91dE1hbmFnZWRUeC5zdWJtaXQoInYiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygiZGFuaWVsIiwgdkRhbmllbEFnYWluLnZhbHVlKCJuYW1lIikpOworICAgICAgICBhc3NlcnRFcXVhbHModkRhbmllbC5pZCgpLCB2RGFuaWVsQWdhaW4uaWQoKSk7CiAKICAgICAgICAgLy8gbm93IGNvbW1pdCBtYW51YWxseQogICAgICAgICBzZXNzaW9uV2l0aG91dE1hbmFnZWRUeC5zdWJtaXQoImcudHgoKS5jb21taXQoKSIpLmFsbCgpLmdldCgpOwpAQCAtMTU5Miw2ICsxNjA4LDU4IEBACiAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFNlbmRVc2VyQWdlbnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5zZXJpYWxpemVyKFNlcmlhbGl6ZXJzLkdSQVBIU09OX1YzRDApLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gTW9ja2l0by5zcHkoY2x1c3Rlci5jb25uZWN0KCkuYWxpYXMoImciKSk7CisgICAgICAgIGNsaWVudC5zdWJtaXQoIiIsIFJlcXVlc3RPcHRpb25zLmJ1aWxkKCkudXNlckFnZW50KCJ0ZXN0IikuY3JlYXRlKCkpLmFsbCgpLmdldCgpOworICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIEFyZ3VtZW50Q2FwdG9yPFJlcXVlc3RNZXNzYWdlPiByZXF1ZXN0TWVzc2FnZUNhcHRvciA9IEFyZ3VtZW50Q2FwdG9yLmZvckNsYXNzKFJlcXVlc3RNZXNzYWdlLmNsYXNzKTsKKyAgICAgICAgdmVyaWZ5KGNsaWVudCkuc3VibWl0QXN5bmMocmVxdWVzdE1lc3NhZ2VDYXB0b3IuY2FwdHVyZSgpKTsKKyAgICAgICAgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UgPSByZXF1ZXN0TWVzc2FnZUNhcHRvci5nZXRWYWx1ZSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCByZXF1ZXN0TWVzc2FnZS5nZXRBcmdzKCkuZ2V0KFRva2Vucy5BUkdTX1VTRVJfQUdFTlQpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFNlbmRVc2VyQWdlbnRCeXRlY29kZSgpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5zZXJpYWxpemVyKFNlcmlhbGl6ZXJzLkdSQVBIU09OX1YzRDApLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gTW9ja2l0by5zcHkoY2x1c3Rlci5jb25uZWN0KCkuYWxpYXMoImciKSk7CisgICAgICAgIE1vY2tpdG8ud2hlbihjbGllbnQuYWxpYXMoImciKSkudGhlblJldHVybihjbGllbnQpOworICAgICAgICBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZyhjbGllbnQpKTsKKyAgICAgICAgZy53aXRoKFRva2Vucy5BUkdTX1VTRVJfQUdFTlQsICJ0ZXN0IikuVigpLml0ZXJhdGUoKTsKKyAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICBBcmd1bWVudENhcHRvcjxSZXF1ZXN0T3B0aW9ucz4gcmVxdWVzdE9wdGlvbnNDYXB0b3IgPSBBcmd1bWVudENhcHRvci5mb3JDbGFzcyhSZXF1ZXN0T3B0aW9ucy5jbGFzcyk7CisgICAgICAgIHZlcmlmeShjbGllbnQpLnN1Ym1pdEFzeW5jKE1vY2tpdG8uYW55KEJ5dGVjb2RlLmNsYXNzKSwgcmVxdWVzdE9wdGlvbnNDYXB0b3IuY2FwdHVyZSgpKTsKKyAgICAgICAgUmVxdWVzdE9wdGlvbnMgcmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9uc0NhcHRvci5nZXRWYWx1ZSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCByZXF1ZXN0T3B0aW9ucy5nZXRVc2VyQWdlbnQoKS5nZXQoKSk7CisKKyAgICAgICAgQXJndW1lbnRDYXB0b3I8UmVxdWVzdE1lc3NhZ2U+IHJlcXVlc3RNZXNzYWdlQ2FwdG9yID0gQXJndW1lbnRDYXB0b3IuZm9yQ2xhc3MoUmVxdWVzdE1lc3NhZ2UuY2xhc3MpOworICAgICAgICB2ZXJpZnkoY2xpZW50KS5zdWJtaXRBc3luYyhyZXF1ZXN0TWVzc2FnZUNhcHRvci5jYXB0dXJlKCkpOworICAgICAgICBSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0TWVzc2FnZSA9IHJlcXVlc3RNZXNzYWdlQ2FwdG9yLmdldFZhbHVlKCk7CisgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIHJlcXVlc3RNZXNzYWdlLmdldEFyZ3MoKS5nZXRPckRlZmF1bHQoVG9rZW5zLkFSR1NfVVNFUl9BR0VOVCwgbnVsbCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VuZFJlcXVlc3RJZEJ5dGVjb2RlKCkgeworICAgICAgICBmaW5hbCBVVUlEIG92ZXJyaWRlUmVxdWVzdElkID0gVVVJRC5yYW5kb21VVUlEKCk7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuc2VyaWFsaXplcihTZXJpYWxpemVycy5HUkFQSFNPTl9WM0QwKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IE1vY2tpdG8uc3B5KGNsdXN0ZXIuY29ubmVjdCgpLmFsaWFzKCJnIikpOworICAgICAgICBNb2NraXRvLndoZW4oY2xpZW50LmFsaWFzKCJnIikpLnRoZW5SZXR1cm4oY2xpZW50KTsKKyAgICAgICAgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoY2xpZW50KSk7CisgICAgICAgIGcud2l0aChUb2tlbnMuUkVRVUVTVF9JRCwgb3ZlcnJpZGVSZXF1ZXN0SWQpLlYoKS5pdGVyYXRlKCk7CisgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgQXJndW1lbnRDYXB0b3I8UmVxdWVzdE9wdGlvbnM+IHJlcXVlc3RPcHRpb25zQ2FwdG9yID0gQXJndW1lbnRDYXB0b3IuZm9yQ2xhc3MoUmVxdWVzdE9wdGlvbnMuY2xhc3MpOworICAgICAgICB2ZXJpZnkoY2xpZW50KS5zdWJtaXRBc3luYyhNb2NraXRvLmFueShCeXRlY29kZS5jbGFzcyksIHJlcXVlc3RPcHRpb25zQ2FwdG9yLmNhcHR1cmUoKSk7CisgICAgICAgIFJlcXVlc3RPcHRpb25zIHJlcXVlc3RPcHRpb25zID0gcmVxdWVzdE9wdGlvbnNDYXB0b3IuZ2V0VmFsdWUoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXF1ZXN0T3B0aW9ucy5nZXRPdmVycmlkZVJlcXVlc3RJZCgpLmlzUHJlc2VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG92ZXJyaWRlUmVxdWVzdElkLCByZXF1ZXN0T3B0aW9ucy5nZXRPdmVycmlkZVJlcXVlc3RJZCgpLmdldCgpKTsKKworICAgICAgICBBcmd1bWVudENhcHRvcjxSZXF1ZXN0TWVzc2FnZT4gcmVxdWVzdE1lc3NhZ2VDYXB0b3IgPSBBcmd1bWVudENhcHRvci5mb3JDbGFzcyhSZXF1ZXN0TWVzc2FnZS5jbGFzcyk7CisgICAgICAgIHZlcmlmeShjbGllbnQpLnN1Ym1pdEFzeW5jKHJlcXVlc3RNZXNzYWdlQ2FwdG9yLmNhcHR1cmUoKSk7CisgICAgICAgIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlID0gcmVxdWVzdE1lc3NhZ2VDYXB0b3IuZ2V0VmFsdWUoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG92ZXJyaWRlUmVxdWVzdElkLCByZXF1ZXN0TWVzc2FnZS5nZXRSZXF1ZXN0SWQoKSk7CisgICAgfQorCiAgICAgcHJpdmF0ZSB2b2lkIGFzc2VydEZ1dHVyZVRpbWVvdXQoZmluYWwgQ29tcGxldGFibGVGdXR1cmU8TGlzdDxSZXN1bHQ+PiBmdXR1cmVGaXJzdCkgewogICAgICAgICB0cnkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluUmVzdWx0U2V0SW50ZWdyYXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluUmVzdWx0U2V0SW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IDY2ZTJjOTQuLmJkNDY2NzkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblJlc3VsdFNldEludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5SZXN1bHRTZXRJbnRlZ3JhdGVUZXN0LmphdmEKQEAgLTIzLDkgKzIzLDEyIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuTWVzc2FnZVNlcmlhbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlJlc3VsdFNldDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b0xpdGVNZXNzYWdlU2VyaWFsaXplclYxZDA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6ZXJzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLlNjcmlwdEZpbGVHcmVtbGluUGx1Z2luOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKQEAgLTM1LDUwICszOCw4MiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1Rlc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZEVkZ2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFBhdGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFByb3BlcnR5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZUVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VQcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDA7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiBpbXBvcnQgb3JnLmhhbWNyZXN0LkNvcmVNYXRjaGVyczsKIGltcG9ydCBvcmcuanVuaXQuQWZ0ZXI7CiBpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuUGFyYW1ldGVyaXplZDsKIAoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQ7CiAKLWltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LkNvcmVNYXRjaGVycy5hbnlPZjsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LkNvcmVNYXRjaGVycy5pczsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXNJbnN0YW5jZU9mLmluc3RhbmNlT2Y7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE51bGw7Ci1pbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKIAogLyoqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KK0BSdW5XaXRoKFBhcmFtZXRlcml6ZWQuY2xhc3MpCiBwdWJsaWMgY2xhc3MgR3JlbWxpblJlc3VsdFNldEludGVncmF0ZVRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5TZXJ2ZXJJbnRlZ3JhdGlvblRlc3QgewogCiAgICAgcHJpdmF0ZSBDbHVzdGVyIGNsdXN0ZXI7CiAgICAgcHJpdmF0ZSBDbGllbnQgY2xpZW50OwogCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVycyhuYW1lID0gInswfSIpCisgICAgcHVibGljIHN0YXRpYyBJdGVyYWJsZTxPYmplY3RbXT4gZGF0YSgpIHsKKyAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgZ3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxID0gbmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpOworCisgICAgICAgIC8vIG11c3QgY29uZmlndXJlIEdyeW8gd2l0aCAiY3VzdG9tIiBzaW5jZSBpdCdzIGNvbmZpZ3VyZWQgb24gdGhlIHNlcnZlcgorICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBncnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGdyeW9WM2QwQ29uZmlnID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBncnlvVjNkMENvbmZpZy5wdXQoImlvUmVnaXN0cmllcyIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoVGlua2VySW9SZWdpc3RyeVYzZDAuY2xhc3MuZ2V0TmFtZSgpKSk7CisgICAgICAgIGdyeW9WM2QwQ29uZmlnLnB1dCgiY3VzdG9tIiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXIiKSk7CisgICAgICAgIGdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuY29uZmlndXJlKGdyeW9WM2QwQ29uZmlnLCBudWxsKTsKKworICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBncnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAoKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGdyeW9WMWQwQ29uZmlnID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBncnlvVjFkMENvbmZpZy5wdXQoImlvUmVnaXN0cmllcyIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoVGlua2VySW9SZWdpc3RyeVYzZDAuY2xhc3MuZ2V0TmFtZSgpKSk7CisgICAgICAgIGdyeW9WMWQwQ29uZmlnLnB1dCgiY3VzdG9tIiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXIiKSk7CisgICAgICAgIGdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuY29uZmlndXJlKGdyeW9WMWQwQ29uZmlnLCBudWxsKTsKKworICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBncnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMCA9IG5ldyBHcnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMCgpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gZ3J5b0xpdGVWMWQwQ29uZmlnID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBncnlvTGl0ZVYxZDBDb25maWcucHV0KCJpb1JlZ2lzdHJpZXMiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KFRpbmtlcklvUmVnaXN0cnlWM2QwLmNsYXNzLmdldE5hbWUoKSkpOworICAgICAgICBncnlvTGl0ZVYxZDBDb25maWcucHV0KCJjdXN0b20iLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJncm9vdnkuanNvbi5Kc29uQnVpbGRlcjtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuSnNvbkJ1aWxkZXJHcnlvU2VyaWFsaXplciIpKTsKKyAgICAgICAgZ3J5b0xpdGVNZXNzYWdlU2VyaWFsaXplclYxZDAuY29uZmlndXJlKGdyeW9MaXRlVjFkMENvbmZpZywgbnVsbCk7CisKKyAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QobmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAge1NlcmlhbGl6ZXJzLkdSQVBIQklOQVJZX1YxRDAsIGdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMX0sCisgICAgICAgICAgICAgICAge1NlcmlhbGl6ZXJzLkdSWU9fVjNEMCwgZ3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMH0sCisgICAgICAgICAgICAgICAge1NlcmlhbGl6ZXJzLkdSWU9fVjFEMCwgZ3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMH0sCisgICAgICAgICAgICAgICAge1NlcmlhbGl6ZXJzLkdSWU9fTElURV9WMUQwLCBncnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVyKHZhbHVlID0gMCkKKyAgICBwdWJsaWMgU2VyaWFsaXplcnMgbmFtZTsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDEpCisgICAgcHVibGljIE1lc3NhZ2VTZXJpYWxpemVyIG1lc3NhZ2VTZXJpYWxpemVyOworCiAgICAgQEJlZm9yZQogICAgIHB1YmxpYyB2b2lkIGJlZm9yZVRlc3QoKSB7Ci0gICAgICAgIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCgpOwotICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gYyA9IG5ldyBIYXNoTWFwPD4oKTsKLSAgICAgICAgYy5wdXQoImlvUmVnaXN0cmllcyIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoVGlua2VySW9SZWdpc3RyeVYzZDAuY2xhc3MuZ2V0TmFtZSgpKSk7Ci0gICAgICAgIGMucHV0KCJjdXN0b20iLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJncm9vdnkuanNvbi5Kc29uQnVpbGRlcjtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuSnNvbkJ1aWxkZXJHcnlvU2VyaWFsaXplciIpKTsKLQotICAgICAgICBzZXJpYWxpemVyLmNvbmZpZ3VyZShjLCBudWxsKTsKLSAgICAgICAgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuc2VyaWFsaXplcihzZXJpYWxpemVyKS5jcmVhdGUoKTsKKyAgICAgICAgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuc2VyaWFsaXplcihtZXNzYWdlU2VyaWFsaXplcikuY3JlYXRlKCk7CiAgICAgICAgIGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwogICAgIH0KIApAQCAtODgsNiArMTIzLDIwIEBACiAgICAgfQogCiAgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXR1cm5SZXNwb25zZUF0dHJpYnV0ZXNWaWFOb0NvbnRlbnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJbXSIpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gYXR0ciA9IHJlc3VsdHMuc3RhdHVzQXR0cmlidXRlcygpLmdldCgyMDAwMCwgVGltZVVuaXQuTUlMTElTRUNPTkRTKTsKKyAgICAgICAgYXNzZXJ0VGhhdChhdHRyLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX0hPU1QpLCBpcyh0cnVlKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXR1cm5SZXNwb25zZUF0dHJpYnV0ZXNWaWFTdWNjZXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFJlc3VsdFNldCByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiZ21vZGVybi5WKCkiKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGF0dHIgPSByZXN1bHRzLnN0YXR1c0F0dHJpYnV0ZXMoKS5nZXQoMjAwMDAsIFRpbWVVbml0Lk1JTExJU0VDT05EUyk7CisgICAgICAgIGFzc2VydFRoYXQoYXR0ci5jb250YWluc0tleShUb2tlbnMuQVJHU19IT1NUKSwgaXModHJ1ZSkpOworICAgIH0KKworICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGFuZGxlVmVydGV4UmVzdWx0RnJvbVRyYXZlcnNhbEJ1bGtlZCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IGdyYXBoLnRyYXZlcnNhbCgpOwpAQCAtMTIxLDU4ICsxNzAsMzUgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIYW5kbGVWZXJ0ZXhSZXN1bHQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJnbW9kZXJuLlYoMSkubmV4dCgpIik7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gcmVzdWx0cy5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7Ci0gICAgICAgIGFzc2VydFRoYXQodiwgaW5zdGFuY2VPZihEZXRhY2hlZFZlcnRleC5jbGFzcykpOwotCi0gICAgICAgIGFzc2VydEVxdWFscygibWFya28iLCB2LnByb3BlcnRpZXMoIm5hbWUiKS5uZXh0KCkudmFsdWUoKSk7Ci0gICAgICAgIHYucHJvcGVydGllcygpLmZvckVhY2hSZW1haW5pbmcocCAtPiB7Ci0gICAgICAgICAgICBpZiAocC5rZXkoKS5lcXVhbHMoIm5hbWUiKSkKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgcC52YWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHAua2V5KCkuZXF1YWxzKCJhZ2UiKSkKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjksIHAudmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZmFpbCgiU2hvdWxkIG5vdCBoYXZlIGFueSBvdGhlciBrZXlzIGJlc2lkZXMgJ25hbWUnIGFuZCAnYWdlJyIpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZVZlcnRleFJlc3VsdFdpdGhMaXRlU2VyaWFsaXphdGlvbigpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLnNlcmlhbGl6ZXIoU2VyaWFsaXplcnMuR1JZT19MSVRFX1YxRDApLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50TGl0ZSA9IGNsdXN0ZXIuY29ubmVjdCgpOwotICAgICAgICBmaW5hbCBSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudExpdGUuc3VibWl0KCJnbW9kZXJuLlYoMSkubmV4dCgpIik7Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2ID0gcmVzdWx0cy5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7CiAgICAgICAgIGFzc2VydFRoYXQodiwgaW5zdGFuY2VPZihSZWZlcmVuY2VWZXJ0ZXguY2xhc3MpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgdi5pZCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2LmxhYmVsKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgSXRlcmF0b3JVdGlscy5jb3VudCh2LnByb3BlcnRpZXMoKSkpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGFuZGxlVmVydGV4UHJvcGVydHlSZXN1bHQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJnbW9kZXJuLlYoKS5wcm9wZXJ0aWVzKCduYW1lJykubmV4dCgpIik7CiAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5PFN0cmluZz4gdiA9IHJlc3VsdHMuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleFByb3BlcnR5KCk7Ci0gICAgICAgIGFzc2VydFRoYXQodiwgaW5zdGFuY2VPZihEZXRhY2hlZFZlcnRleFByb3BlcnR5LmNsYXNzKSk7CisgICAgICAgIGFzc2VydFRoYXQodiwgaW5zdGFuY2VPZihSZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eS5jbGFzcykpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGFuZGxlRWRnZVJlc3VsdCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoImdtb2Rlcm4uRSgpLm5leHQoKSIpOwogICAgICAgICBmaW5hbCBFZGdlIGUgPSByZXN1bHRzLmFsbCgpLmdldCgpLmdldCgwKS5nZXRFZGdlKCk7Ci0gICAgICAgIGFzc2VydFRoYXQoZSwgaW5zdGFuY2VPZihEZXRhY2hlZEVkZ2UuY2xhc3MpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChlLCBpbnN0YW5jZU9mKFJlZmVyZW5jZUVkZ2UuY2xhc3MpKTsKICAgICB9CiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZVByb3BlcnR5UmVzdWx0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFJlc3VsdFNldCByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiZ21vZGVybi5FKCkucHJvcGVydGllcygnd2VpZ2h0JykubmV4dCgpIik7CiAgICAgICAgIGZpbmFsIFByb3BlcnR5PERvdWJsZT4gcCA9IHJlc3VsdHMuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFByb3BlcnR5KCk7Ci0gICAgICAgIGFzc2VydFRoYXQocCwgaW5zdGFuY2VPZihEZXRhY2hlZFByb3BlcnR5LmNsYXNzKSk7CisgICAgICAgIGFzc2VydFRoYXQocCwgaW5zdGFuY2VPZihSZWZlcmVuY2VQcm9wZXJ0eS5jbGFzcykpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGFuZGxlUGF0aFJlc3VsdCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoImdtb2Rlcm4uVigpLm91dCgpLnBhdGgoKSIpOwogICAgICAgICBmaW5hbCBQYXRoIHAgPSByZXN1bHRzLmFsbCgpLmdldCgpLmdldCgwKS5nZXRQYXRoKCk7Ci0gICAgICAgIGFzc2VydFRoYXQocCwgaW5zdGFuY2VPZihEZXRhY2hlZFBhdGguY2xhc3MpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChwLCBpbnN0YW5jZU9mKFJlZmVyZW5jZVBhdGguY2xhc3MpKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtMTk1LDE3ICsyMjEsNCBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoM0wsIG0uZ2V0KDFMKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygzTCwgbS5nZXQoM0wpKTsKICAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZU1hcE9iamVjdFJlc3VsdCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoImdtb2Rlcm4uVigpLmdyb3VwQ291bnQoKS5ieShib3RoRSgpLmNvdW50KCkpLm5leHQoKSIpOwotICAgICAgICBmaW5hbCBMaXN0PFJlc3VsdD4gcmVzdWx0TGlzdCA9IHJlc3VsdHMuYWxsKCkuZ2V0KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygyLCByZXN1bHRMaXN0LnNpemUoKSk7Ci0gICAgICAgIGZpbmFsIE1hcC5FbnRyeSBmaXJzdEVudHJ5ID0gcmVzdWx0TGlzdC5nZXQoMCkuZ2V0KEhhc2hNYXAuRW50cnkuY2xhc3MpOwotICAgICAgICBmaW5hbCBNYXAuRW50cnkgc2Vjb25kRW50cnkgPSByZXN1bHRMaXN0LmdldCgxKS5nZXQoSGFzaE1hcC5FbnRyeS5jbGFzcyk7Ci0gICAgICAgIGFzc2VydFRoYXQoZmlyc3RFbnRyeS5nZXRLZXkoKSwgYW55T2YoaXMoM0wpLCBpcygxTCkpKTsKLSAgICAgICAgYXNzZXJ0VGhhdChmaXJzdEVudHJ5LmdldFZhbHVlKCksIGlzKDNMKSk7Ci0gICAgICAgIGFzc2VydFRoYXQoc2Vjb25kRW50cnkuZ2V0S2V5KCksIGFueU9mKGlzKDNMKSwgaXMoMUwpKSk7Ci0gICAgICAgIGFzc2VydFRoYXQoc2Vjb25kRW50cnkuZ2V0VmFsdWUoKSwgaXMoM0wpKTsKLSAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdWRpdExvZ0ludGVncmF0ZVRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1ZGl0TG9nSW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IGNmMDBlMGMuLjVkMzRhNzggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1ZGl0TG9nSW50ZWdyYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1ZGl0TG9nSW50ZWdyYXRlVGVzdC5qYXZhCkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICAgICAgZmluYWwgU2V0dGluZ3MuQXV0aGVudGljYXRpb25TZXR0aW5ncyBhdXRoU2V0dGluZ3MgPSBuZXcgU2V0dGluZ3MuQXV0aGVudGljYXRpb25TZXR0aW5ncygpOwogICAgICAgICBzZXR0aW5ncy5hdXRoZW50aWNhdGlvbiA9IGF1dGhTZXR0aW5nczsKICAgICAgICAgYXV0aFNldHRpbmdzLmVuYWJsZUF1ZGl0TG9nID0gQVVESVRfTE9HX0VOQUJMRUQ7Ci0gICAgICAgIGF1dGhTZXR0aW5ncy5jbGFzc05hbWUgPSBLcmI1QXV0aGVudGljYXRvci5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgIGF1dGhTZXR0aW5ncy5hdXRoZW50aWNhdG9yID0gS3JiNUF1dGhlbnRpY2F0b3IuY2xhc3MuZ2V0TmFtZSgpOwogICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gYXV0aENvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICAgYXV0aFNldHRpbmdzLmNvbmZpZyA9IGF1dGhDb25maWc7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1dGhJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdXRoSW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IDBjYTczYTUuLjgwN2U5YTcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1dGhJbnRlZ3JhdGVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyQXV0aEludGVncmF0ZVRlc3QuamF2YQpAQCAtNTQsNyArNTQsNyBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTZXR0aW5ncyBvdmVycmlkZVNldHRpbmdzKGZpbmFsIFNldHRpbmdzIHNldHRpbmdzKSB7CiAgICAgICAgIGZpbmFsIFNldHRpbmdzLkF1dGhlbnRpY2F0aW9uU2V0dGluZ3MgYXV0aFNldHRpbmdzID0gbmV3IFNldHRpbmdzLkF1dGhlbnRpY2F0aW9uU2V0dGluZ3MoKTsKLSAgICAgICAgYXV0aFNldHRpbmdzLmNsYXNzTmFtZSA9IFNpbXBsZUF1dGhlbnRpY2F0b3IuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBhdXRoU2V0dGluZ3MuYXV0aGVudGljYXRvciA9IFNpbXBsZUF1dGhlbnRpY2F0b3IuY2xhc3MuZ2V0TmFtZSgpOwogCiAgICAgICAgIC8vIHVzZSBhIGNyZWRlbnRpYWxzIGdyYXBoIHdpdGggb25lIHVzZXIgaW4gaXQ6IHN0ZXBoZW4vcGFzc3dvcmQKICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGF1dGhDb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdXRoS3JiNUludGVncmF0ZVRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1dGhLcmI1SW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IDI5ZGFiODguLjAyOWE0MDggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1dGhLcmI1SW50ZWdyYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1dGhLcmI1SW50ZWdyYXRlVGVzdC5qYXZhCkBAIC0yNCw2ICsyNCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuTWVzc2FnZVNlcmlhbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuZXhjZXB0aW9uLlJlc3BvbnNlRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXNDb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjE7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuYXV0aC5LcmI1QXV0aGVudGljYXRvcjsKQEAgLTM3LDcgKzM4LDYgQEAKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dGlvbkV4Y2VwdGlvbjsKIGltcG9ydCBqYXZheC5zZWN1cml0eS5hdXRoLmxvZ2luLkxvZ2luRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb247CiAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKQEAgLTc5LDcgKzc5LDcgQEAKICAgICAgICAgc2V0dGluZ3Muc3NsID0gc3NsQ29uZmlnOwogICAgICAgICBmaW5hbCBTZXR0aW5ncy5BdXRoZW50aWNhdGlvblNldHRpbmdzIGF1dGhTZXR0aW5ncyA9IG5ldyBTZXR0aW5ncy5BdXRoZW50aWNhdGlvblNldHRpbmdzKCk7CiAgICAgICAgIHNldHRpbmdzLmF1dGhlbnRpY2F0aW9uID0gYXV0aFNldHRpbmdzOwotICAgICAgICBhdXRoU2V0dGluZ3MuY2xhc3NOYW1lID0gS3JiNUF1dGhlbnRpY2F0b3IuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBhdXRoU2V0dGluZ3MuYXV0aGVudGljYXRvciA9IEtyYjVBdXRoZW50aWNhdG9yLmNsYXNzLmdldE5hbWUoKTsKICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGF1dGhDb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIGF1dGhDb25maWcucHV0KCJwcmluY2lwYWwiLCBrZGNTZXJ2ZXIuc2VydmVyUHJpbmNpcGFsKTsKICAgICAgICAgYXV0aENvbmZpZy5wdXQoImtleXRhYiIsIGtkY1NlcnZlci5zZXJ2aWNlS2V5dGFiRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSk7CkBAIC0xOTgsMjEgKzE5OCwyMiBAQAogICAgIH0KIAogICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkQXV0aGVudGljYXRlV2l0aFNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nVjEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwKCk7Ci0gICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBjb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7Ci0gICAgICAgIGNvbmZpZy5wdXQoInNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nIiwgdHJ1ZSk7Ci0gICAgICAgIHNlcmlhbGl6ZXIuY29uZmlndXJlKGNvbmZpZywgbnVsbCk7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuamFhc0VudHJ5KFRFU1RDT05TT0xFKQotICAgICAgICAgICAgICAgIC5wcm90b2NvbChrZGNTZXJ2ZXIuc2VydmVyUHJpbmNpcGFsTmFtZSkuYWRkQ29udGFjdFBvaW50KGtkY1NlcnZlci5ob3N0bmFtZSkuc2VyaWFsaXplcihzZXJpYWxpemVyKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotICAgICAgICBhc3NlcnRDb25uZWN0aW9uKGNsdXN0ZXIsIGNsaWVudCk7CisgICAgcHVibGljIHZvaWQgc2hvdWxkQXV0aGVudGljYXRlV2l0aFNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nR3J5b1YxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGFzc2VydEF1dGhWaWFUb1N0cmluZ1dpdGhTcGVjaWZpZWRTZXJpYWxpemVyKG5ldyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwKCkpOwogICAgIH0KIAogICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkQXV0aGVudGljYXRlV2l0aFNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nVjMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKCk7Ci0gICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gY29uZmlnID0gbmV3IEhhc2hNYXA8PigpOworICAgIHB1YmxpYyB2b2lkIHNob3VsZEF1dGhlbnRpY2F0ZVdpdGhTZXJpYWxpemVSZXN1bHRUb1N0cmluZ0dyeW9WMygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBhc3NlcnRBdXRoVmlhVG9TdHJpbmdXaXRoU3BlY2lmaWVkU2VyaWFsaXplcihuZXcgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEF1dGhlbnRpY2F0ZVdpdGhTZXJpYWxpemVSZXN1bHRUb1N0cmluZ0dyYXBoQmluYXJ5VjEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgYXNzZXJ0QXV0aFZpYVRvU3RyaW5nV2l0aFNwZWNpZmllZFNlcmlhbGl6ZXIobmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhc3NlcnRBdXRoVmlhVG9TdHJpbmdXaXRoU3BlY2lmaWVkU2VyaWFsaXplcihmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24sIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBjb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIGNvbmZpZy5wdXQoInNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nIiwgdHJ1ZSk7CiAgICAgICAgIHNlcmlhbGl6ZXIuY29uZmlndXJlKGNvbmZpZywgbnVsbCk7CiAgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuamFhc0VudHJ5KFRFU1RDT05TT0xFKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVySHR0cEludGVncmF0ZVRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckh0dHBJbnRlZ3JhdGVUZXN0LmphdmEKaW5kZXggMWVjODRjMS4uMGJkOWVjZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVySHR0cEludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJIdHRwSW50ZWdyYXRlVGVzdC5qYXZhCkBAIC0xOSwxMSArMTksMTIgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXI7CiAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuUmFuZG9tU3RyaW5nVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS5odHRwLkh0dHBIZWFkZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjFkMDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyVG9rZW5zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmF1dGguU2ltcGxlQXV0aGVudGljYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5jaGFubmVsLkh0dHBDaGFubmVsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5oYW5kbGVyLkh0dHBCYXNpY0F1dGhlbnRpY2F0aW9uSGFuZGxlcjsKQEAgLTk5LDYgKzEwMCwxOCBAQAogICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXJTZXR0aW5nc1YzLmNsYXNzTmFtZSA9IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmNsYXNzLmdldE5hbWUoKTsKICAgICAgICAgICAgICAgICBzZXR0aW5ncy5zZXJpYWxpemVycy5hZGQoc2VyaWFsaXplclNldHRpbmdzVjMpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkMjAwT25QT1NUV2l0aEFueUdyYXBoU09OQWNjZXB0SGVhZGVyRGVmYXVsdFJlc3VsdFRvSnNvbiI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc2VyaWFsaXplcnMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTZXR0aW5ncy5TZXJpYWxpemVyU2V0dGluZ3Mgc2VyaWFsaXplclNldHRpbmdzQWxsVjEgPSBuZXcgU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2VyaWFsaXplclNldHRpbmdzQWxsVjEuY2xhc3NOYW1lID0gR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYxZDAuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNlcmlhbGl6ZXJzLmFkZChzZXJpYWxpemVyU2V0dGluZ3NBbGxWMSk7CisgICAgICAgICAgICAgICAgZmluYWwgU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzIHNlcmlhbGl6ZXJTZXR0aW5nc0FsbFYyID0gbmV3IFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXJTZXR0aW5nc0FsbFYyLmNsYXNzTmFtZSA9IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zZXJpYWxpemVycy5hZGQoc2VyaWFsaXplclNldHRpbmdzQWxsVjIpOworICAgICAgICAgICAgICAgIGZpbmFsIFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncyBzZXJpYWxpemVyU2V0dGluZ3NBbGxWMyA9IG5ldyBTZXR0aW5ncy5TZXJpYWxpemVyU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVyU2V0dGluZ3NBbGxWMy5jbGFzc05hbWUgPSBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMC5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc2VyaWFsaXplcnMuYWRkKHNlcmlhbGl6ZXJTZXR0aW5nc0FsbFYzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgInNob3VsZDQwMU9uR0VUV2l0aE5vQXV0aG9yaXphdGlvbkhlYWRlciI6CiAgICAgICAgICAgICBjYXNlICJzaG91bGQ0MDFPblBPU1RXaXRoTm9BdXRob3JpemF0aW9uSGVhZGVyIjoKICAgICAgICAgICAgIGNhc2UgInNob3VsZDQwMU9uR0VUV2l0aEJhZEF1dGhvcml6YXRpb25IZWFkZXIiOgpAQCAtMzMwLDMyICszNDMsNiBAQAogICAgIH0KIAogICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkMjAwT25HRVRXaXRoR3JlbWxpblF1ZXJ5U3RyaW5nQXJndW1lbnRXaXRoSXRlcmF0b3JSZXN1bHRBbmRBbGlhc2VzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIC8vIHdlIGNhbiByZW1vdmUgdGhpcyBmaXJzdCB0ZXN0IHdoZW4gcmViaW5kaW5ncyBhcmUgY29tcGxldGVseSByZW1vdmVkCi0gICAgICAgIGZpbmFsIENsb3NlYWJsZUh0dHBDbGllbnQgaHR0cGNsaWVudExlZ2FjeSA9IEh0dHBDbGllbnRzLmNyZWF0ZURlZmF1bHQoKTsKLSAgICAgICAgZmluYWwgSHR0cEdldCBodHRwZ2V0TGVnYWN5ID0gbmV3IEh0dHBHZXQoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCI/Z3JlbWxpbj1nMS5WKCkmcmViaW5kaW5ncy5nMT1nY2xhc3NpYyIpKTsKLQotICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnRMZWdhY3kuZXhlY3V0ZShodHRwZ2V0TGVnYWN5KSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImFwcGxpY2F0aW9uL2pzb24iLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7Ci0gICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoR3JhcGhTT05Ub2tlbnMuVkFMVUVQUk9QKS5zaXplKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgQ2xvc2VhYmxlSHR0cENsaWVudCBodHRwY2xpZW50ID0gSHR0cENsaWVudHMuY3JlYXRlRGVmYXVsdCgpOwotICAgICAgICBmaW5hbCBIdHRwR2V0IGh0dHBnZXQgPSBuZXcgSHR0cEdldChUZXN0Q2xpZW50RmFjdG9yeS5jcmVhdGVVUkxTdHJpbmcoIj9ncmVtbGluPWcxLlYoKSZhbGlhc2VzLmcxPWdjbGFzc2ljIikpOwotCi0gICAgICAgIHRyeSAoZmluYWwgQ2xvc2VhYmxlSHR0cFJlc3BvbnNlIHJlc3BvbnNlID0gaHR0cGNsaWVudC5leGVjdXRlKGh0dHBnZXQpKSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjAwLCByZXNwb25zZS5nZXRTdGF0dXNMaW5lKCkuZ2V0U3RhdHVzQ29kZSgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygiYXBwbGljYXRpb24vanNvbiIsIHJlc3BvbnNlLmdldEVudGl0eSgpLmdldENvbnRlbnRUeXBlKCkuZ2V0VmFsdWUoKSk7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcganNvbiA9IEVudGl0eVV0aWxzLnRvU3RyaW5nKHJlc3BvbnNlLmdldEVudGl0eSgpKTsKLSAgICAgICAgICAgIGZpbmFsIEpzb25Ob2RlIG5vZGUgPSBtYXBwZXIucmVhZFRyZWUoanNvbik7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoNiwgbm9kZS5nZXQoInJlc3VsdCIpLmdldCgiZGF0YSIpLmdldChHcmFwaFNPTlRva2Vucy5WQUxVRVBST1ApLnNpemUoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZDIwME9uR0VUV2l0aEdyZW1saW5RdWVyeVN0cmluZ0FyZ3VtZW50KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIENsb3NlYWJsZUh0dHBDbGllbnQgaHR0cGNsaWVudCA9IEh0dHBDbGllbnRzLmNyZWF0ZURlZmF1bHQoKTsKICAgICAgICAgZmluYWwgSHR0cEdldCBodHRwZ2V0ID0gbmV3IEh0dHBHZXQoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCI/Z3JlbWxpbj0xLTEiKSk7CkBAIC01MDQsMjAgKzQ5MSw2IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkMjAwT25QT1NUVHJhbnNhY3Rpb25hbEdyYXBoSW5TdHJpY3RNb2RlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGFzc3VtZU5lbzRqSXNQcmVzZW50KCk7CiAKLSAgICAgICAgLy8gd2UgY2FuIHJlbW92ZSB0aGlzIGZpcnN0IHRlc3Qgd2hlbiByZWJpbmRpbmdzIGFyZSBjb21wbGV0ZWx5IHJlbW92ZWQKLSAgICAgICAgZmluYWwgQ2xvc2VhYmxlSHR0cENsaWVudCBodHRwY2xpZW50TGVnYWN5ID0gSHR0cENsaWVudHMuY3JlYXRlRGVmYXVsdCgpOwotICAgICAgICBmaW5hbCBIdHRwUG9zdCBodHRwcG9zdExlZ2FjeSA9IG5ldyBIdHRwUG9zdChUZXN0Q2xpZW50RmFjdG9yeS5jcmVhdGVVUkxTdHJpbmcoKSk7Ci0gICAgICAgIGh0dHBwb3N0TGVnYWN5LmFkZEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKTsKLSAgICAgICAgaHR0cHBvc3RMZWdhY3kuc2V0RW50aXR5KG5ldyBTdHJpbmdFbnRpdHkoIntcImdyZW1saW5cIjpcImcxLmFkZFYoKVwiLFwicmViaW5kaW5nc1wiOntcImcxXCI6XCJnXCJ9fSIsIENvbnN0cy5VVEZfOCkpOwotCi0gICAgICAgIHRyeSAoZmluYWwgQ2xvc2VhYmxlSHR0cFJlc3BvbnNlIHJlc3BvbnNlID0gaHR0cGNsaWVudExlZ2FjeS5leGVjdXRlKGh0dHBwb3N0TGVnYWN5KSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImFwcGxpY2F0aW9uL2pzb24iLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7Ci0gICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoR3JhcGhTT05Ub2tlbnMuVkFMVUVQUk9QKS5zaXplKCkpOwotICAgICAgICB9Ci0KICAgICAgICAgZmluYWwgQ2xvc2VhYmxlSHR0cENsaWVudCBodHRwY2xpZW50ID0gSHR0cENsaWVudHMuY3JlYXRlRGVmYXVsdCgpOwogICAgICAgICBmaW5hbCBIdHRwUG9zdCBodHRwcG9zdCA9IG5ldyBIdHRwUG9zdChUZXN0Q2xpZW50RmFjdG9yeS5jcmVhdGVVUkxTdHJpbmcoKSk7CiAgICAgICAgIGh0dHBwb3N0LmFkZEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKTsKQEAgLTU3MCwyMCArNTQzLDYgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkMjAwT25QT1NUV2l0aEdyZW1saW5Kc29uRW5kY29kZWRCb2R5V2l0aEl0ZXJhdG9yUmVzdWx0QW5kQWxpYXNlcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICAvLyB3ZSBjYW4gcmVtb3ZlIHRoaXMgZmlyc3QgdGVzdCB3aGVuIHJlYmluZGluZ3MgYXJlIGNvbXBsZXRlbHkgcmVtb3ZlZAotICAgICAgICBmaW5hbCBDbG9zZWFibGVIdHRwQ2xpZW50IGh0dHBjbGllbnRMZWdhY3kgPSBIdHRwQ2xpZW50cy5jcmVhdGVEZWZhdWx0KCk7Ci0gICAgICAgIGZpbmFsIEh0dHBQb3N0IGh0dHBwb3N0TGVnYWN5ID0gbmV3IEh0dHBQb3N0KFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVVSTFN0cmluZygpKTsKLSAgICAgICAgaHR0cHBvc3RMZWdhY3kuYWRkSGVhZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vanNvbiIpOwotICAgICAgICBodHRwcG9zdExlZ2FjeS5zZXRFbnRpdHkobmV3IFN0cmluZ0VudGl0eSgie1wiZ3JlbWxpblwiOlwiZzEuVigpXCIsXCJyZWJpbmRpbmdzXCI6e1wiZzFcIjpcImdjbGFzc2ljXCJ9fSIsIENvbnN0cy5VVEZfOCkpOwotCi0gICAgICAgIHRyeSAoZmluYWwgQ2xvc2VhYmxlSHR0cFJlc3BvbnNlIHJlc3BvbnNlID0gaHR0cGNsaWVudExlZ2FjeS5leGVjdXRlKGh0dHBwb3N0TGVnYWN5KSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImFwcGxpY2F0aW9uL2pzb24iLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7Ci0gICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoR3JhcGhTT05Ub2tlbnMuVkFMVUVQUk9QKS5zaXplKCkpOwotICAgICAgICB9Ci0KICAgICAgICAgZmluYWwgQ2xvc2VhYmxlSHR0cENsaWVudCBodHRwY2xpZW50ID0gSHR0cENsaWVudHMuY3JlYXRlRGVmYXVsdCgpOwogICAgICAgICBmaW5hbCBIdHRwUG9zdCBodHRwcG9zdCA9IG5ldyBIdHRwUG9zdChUZXN0Q2xpZW50RmFjdG9yeS5jcmVhdGVVUkxTdHJpbmcoKSk7CiAgICAgICAgIGh0dHBwb3N0LmFkZEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKTsKQEAgLTgyNiw3ICs3ODUsNyBAQAogCiAgICAgICAgIHRyeSAoZmluYWwgQ2xvc2VhYmxlSHR0cFJlc3BvbnNlIHJlc3BvbnNlID0gaHR0cGNsaWVudC5leGVjdXRlKGh0dHBwb3N0KSkgewogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImFwcGxpY2F0aW9uL2pzb24iLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFNlclRva2Vucy5NSU1FX0pTT04sIHJlc3BvbnNlLmdldEVudGl0eSgpLmdldENvbnRlbnRUeXBlKCkuZ2V0VmFsdWUoKSk7CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcganNvbiA9IEVudGl0eVV0aWxzLnRvU3RyaW5nKHJlc3BvbnNlLmdldEVudGl0eSgpKTsKICAgICAgICAgICAgIGZpbmFsIEpzb25Ob2RlIG5vZGUgPSBtYXBwZXIucmVhZFRyZWUoanNvbik7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbm9kZS5nZXQoInJlc3VsdCIpLmdldCgiZGF0YSIpLmdldCgwKS5hc0ludCgpKTsKQEAgLTg0MSw3ICs4MDAsNyBAQAogCiAgICAgICAgIHRyeSAoZmluYWwgQ2xvc2VhYmxlSHR0cFJlc3BvbnNlIHJlc3BvbnNlID0gaHR0cGNsaWVudC5leGVjdXRlKGh0dHBwb3N0KSkgewogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImFwcGxpY2F0aW9uL2pzb24iLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFNlclRva2Vucy5NSU1FX0pTT04sIHJlc3BvbnNlLmdldEVudGl0eSgpLmdldENvbnRlbnRUeXBlKCkuZ2V0VmFsdWUoKSk7CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcganNvbiA9IEVudGl0eVV0aWxzLnRvU3RyaW5nKHJlc3BvbnNlLmdldEVudGl0eSgpKTsKICAgICAgICAgICAgIGZpbmFsIEpzb25Ob2RlIG5vZGUgPSBtYXBwZXIucmVhZFRyZWUoanNvbik7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbm9kZS5nZXQoInJlc3VsdCIpLmdldCgiZGF0YSIpLmdldCgwKS5hc0ludCgpKTsKQEAgLTg1Niw3ICs4MTUsNTAgQEAKIAogICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnQuZXhlY3V0ZShodHRwcG9zdCkpIHsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygyMDAsIHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKS5nZXRTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhcHBsaWNhdGlvbi9qc29uIiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhTZXJUb2tlbnMuTUlNRV9KU09OLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7CisgICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoR3JhcGhTT05Ub2tlbnMuVkFMVUVQUk9QKS5nZXQoMCkuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuYXNJbnQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZDIwME9uUE9TVFdpdGhBbnlHcmFwaFNPTkFjY2VwdEhlYWRlckRlZmF1bHRSZXN1bHRUb0pzb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ2xvc2VhYmxlSHR0cENsaWVudCBodHRwY2xpZW50ID0gSHR0cENsaWVudHMuY3JlYXRlRGVmYXVsdCgpOworICAgICAgICBmaW5hbCBIdHRwUG9zdCBodHRwcG9zdDEgPSBuZXcgSHR0cFBvc3QoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCkpOworICAgICAgICBodHRwcG9zdDEuc2V0SGVhZGVyKEh0dHBIZWFkZXJzLkNPTlRFTlRfVFlQRSwgU2VyVG9rZW5zLk1JTUVfSlNPTik7CisgICAgICAgIGh0dHBwb3N0MS5zZXRIZWFkZXIoSHR0cEhlYWRlcnMuQUNDRVBULCBTZXJUb2tlbnMuTUlNRV9KU09OKTsKKyAgICAgICAgaHR0cHBvc3QxLnNldEVudGl0eShuZXcgU3RyaW5nRW50aXR5KCJ7XCJncmVtbGluXCI6XCIxLTFcIn0iLCBDb25zdHMuVVRGXzgpKTsKKworICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnQuZXhlY3V0ZShodHRwcG9zdDEpKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjAwLCByZXNwb25zZS5nZXRTdGF0dXNMaW5lKCkuZ2V0U3RhdHVzQ29kZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhTZXJUb2tlbnMuTUlNRV9KU09OLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7CisgICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoMCkuYXNJbnQoKSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBIdHRwUG9zdCBodHRwcG9zdDIgPSBuZXcgSHR0cFBvc3QoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCkpOworICAgICAgICBodHRwcG9zdDIuc2V0SGVhZGVyKEh0dHBIZWFkZXJzLkNPTlRFTlRfVFlQRSwgU2VyVG9rZW5zLk1JTUVfSlNPTik7CisgICAgICAgIGh0dHBwb3N0Mi5zZXRIZWFkZXIoSHR0cEhlYWRlcnMuQUNDRVBULCBTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WMkQwKTsKKyAgICAgICAgaHR0cHBvc3QyLnNldEVudGl0eShuZXcgU3RyaW5nRW50aXR5KCJ7XCJncmVtbGluXCI6XCIxLTFcIn0iLCBDb25zdHMuVVRGXzgpKTsKKworICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnQuZXhlY3V0ZShodHRwcG9zdDIpKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjAwLCByZXNwb25zZS5nZXRTdGF0dXNMaW5lKCkuZ2V0U3RhdHVzQ29kZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WMkQwLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7CisgICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoMCkuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuYXNJbnQoKSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBIdHRwUG9zdCBodHRwcG9zdDMgPSBuZXcgSHR0cFBvc3QoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCkpOworICAgICAgICBodHRwcG9zdDMuc2V0SGVhZGVyKEh0dHBIZWFkZXJzLkNPTlRFTlRfVFlQRSwgU2VyVG9rZW5zLk1JTUVfSlNPTik7CisgICAgICAgIGh0dHBwb3N0My5zZXRIZWFkZXIoSHR0cEhlYWRlcnMuQUNDRVBULCBTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WM0QwKTsKKyAgICAgICAgaHR0cHBvc3QzLnNldEVudGl0eShuZXcgU3RyaW5nRW50aXR5KCJ7XCJncmVtbGluXCI6XCIxLTFcIn0iLCBDb25zdHMuVVRGXzgpKTsKKworICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnQuZXhlY3V0ZShodHRwcG9zdDMpKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjAwLCByZXNwb25zZS5nZXRTdGF0dXNMaW5lKCkuZ2V0U3RhdHVzQ29kZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WM0QwLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7CiAgICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoR3JhcGhTT05Ub2tlbnMuVkFMVUVQUk9QKS5nZXQoMCkuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuYXNJbnQoKSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJJbnRlZ3JhdGVUZXN0LmphdmEKaW5kZXggMDkwNTZjMi4uMjNkNGZlMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVySW50ZWdyYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckludGVncmF0ZVRlc3QuamF2YQpAQCAtMTgsMTIgKzE4LDYgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlcjsKIAotaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuc3NsLkNsaWVudEF1dGg7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wuU3NsQ29udGV4dDsKLWltcG9ydCBpby5uZXR0eS5oYW5kbGVyLnNzbC5Tc2xDb250ZXh0QnVpbGRlcjsKLWltcG9ydCBpby5uZXR0eS5oYW5kbGVyLnNzbC5Tc2xQcm92aWRlcjsKLWltcG9ydCBpby5uZXR0eS5oYW5kbGVyLnNzbC51dGlsLkluc2VjdXJlVHJ1c3RNYW5hZ2VyRmFjdG9yeTsKLWltcG9ydCBpby5uZXR0eS5oYW5kbGVyLnNzbC51dGlsLlNlbGZTaWduZWRDZXJ0aWZpY2F0ZTsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5CYXNlQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5leGNlcHRpb24uRXhjZXB0aW9uVXRpbHM7CkBAIC00Nyw3ICs0MSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLkdyb292eUNvbXBpbGVyR3JlbWxpblBsdWdpbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuY3VzdG9taXplci5TaW1wbGVTYW5kYm94RXh0ZW5zaW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLlNjcmlwdEZpbGVHcmVtbGluUGx1Z2luOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CkBAIC01OSw3ICs1Myw2IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuTG9nNGpSZWNvcmRpbmdBcHBlbmRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuZnVuY3Rpb24uTGFtYmRhOwogaW1wb3J0IG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnM7CkBAIC02OCw4ICs2MSw2IEBACiBpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwpAQCAtODQsNiArNzUsOCBAQAogaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5TdXBwbGllcjsKIGltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CiBpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5JbnRTdHJlYW07CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zLkFSR1NfU0NSSVBUX0VWQUxfVElNRU9VVDsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLkdyb292eUNvbXBpbGVyR3JlbWxpblBsdWdpbi5Db21waWxhdGlvbi5DT01QSUxFX1NUQVRJQzsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUzsKQEAgLTkzLDcgKzg2LDYgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXNJbnN0YW5jZU9mLmluc3RhbmNlT2Y7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzTm90Lm5vdDsKLWltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuU3RyaW5nRW5kc1dpdGguZW5kc1dpdGg7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLlN0cmluZ1N0YXJ0c1dpdGguc3RhcnRzV2l0aDsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0TnVsbDsKQEAgLTEwNSwxMCArOTcsNiBAQAogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCiBwdWJsaWMgY2xhc3MgR3JlbWxpblNlcnZlckludGVncmF0ZVRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5TZXJ2ZXJJbnRlZ3JhdGlvblRlc3QgewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQRU1fU0VSVkVSX0tFWSA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvc2VydmVyLmtleS5wazgiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQRU1fU0VSVkVSX0NSVCA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvc2VydmVyLmNydCI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBFTV9DTElFTlRfS0VZID0gInNyYy90ZXN0L3Jlc291cmNlcy9jbGllbnQua2V5LnBrOCI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBFTV9DTElFTlRfQ1JUID0gInNyYy90ZXN0L3Jlc291cmNlcy9jbGllbnQuY3J0IjsKICAgICBwcml2YXRlIExldmVsIHByZXZpb3VzTG9nTGV2ZWw7CiAKICAgICBwcml2YXRlIExvZzRqUmVjb3JkaW5nQXBwZW5kZXIgcmVjb3JkaW5nQXBwZW5kZXIgPSBudWxsOwpAQCAtMTc0LDExMiArMTYyLDEyIEBACiAgICAgICAgICAgICBjYXNlICJzaG91bGRSZWNlaXZlRmFpbHVyZVRpbWVPdXRPblNjcmlwdEV2YWwiOgogICAgICAgICAgICAgICAgIHNldHRpbmdzLmV2YWx1YXRpb25UaW1lb3V0ID0gMTAwMDsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZFJlY2VpdmVGYWlsdXJlVGltZU91dE9uVG90YWxTZXJpYWxpemF0aW9uIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0ID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgInNob3VsZEJsb2NrUmVxdWVzdFdoZW5Ub29CaWciOgogICAgICAgICAgICAgICAgIHNldHRpbmdzLm1heENvbnRlbnRMZW5ndGggPSAxMDI0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAic2hvdWxkQmF0Y2hSZXN1bHRzQnlUd29zIjoKICAgICAgICAgICAgICAgICBzZXR0aW5ncy5yZXN1bHRJdGVyYXRpb25CYXRjaFNpemUgPSAyOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsIjoKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEJ1dEZhaWxJZkNsaWVudENvbm5lY3RzV2l0aG91dEl0IjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gSktTX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9KS1M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xXaXRoU3NsQ29udGV4dFByb2dyYW1tYXRpY2FsbHlTcGVjaWZpZWQiOgotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wub3ZlcnJpZGVTc2xDb250ZXh0KGNyZWF0ZVNlcnZlclNzbENvbnRleHQoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhXaXRoTGVnYWN5UGVtIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlDZXJ0Q2hhaW5GaWxlID0gUEVNX1NFUlZFUl9DUlQ7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleUZpbGUgPSBQRU1fU0VSVkVSX0tFWTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5UGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICAvLyBUcnVzdCB0aGUgY2xpZW50Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0Q2VydENoYWluRmlsZSA9IFBFTV9DTElFTlRfQ1JUOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRDZXJ0V2l0aExlZ2FjeVBlbSI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5Q2VydENoYWluRmlsZSA9IFBFTV9TRVJWRVJfQ1JUOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlGaWxlID0gUEVNX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgLy8gVHJ1c3QgdGhlIGNsaWVudAotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdENlcnRDaGFpbkZpbGUgPSBQRU1fQ0xJRU5UX0NSVDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0VHJ1c3RlZENsaWVudENlcnRXaXRoTGVnYWN5UGVtIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlDZXJ0Q2hhaW5GaWxlID0gUEVNX1NFUlZFUl9DUlQ7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleUZpbGUgPSBQRU1fU0VSVkVSX0tFWTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5UGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICAvLyBUcnVzdCBPTkxZIHRoZSBzZXJ2ZXIgY2VydAotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdENlcnRDaGFpbkZpbGUgPSBQRU1fU0VSVkVSX0NSVDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhQa2NzMTIiOgotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gUDEyX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9QS0NTMTI7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmUgPSBQMTJfU0VSVkVSX1RSVVNUOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aCI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZSA9IEpLU19TRVJWRVJfVFJVU1Q7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRDZXJ0IjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlID0gSktTX1NFUlZFUl9UUlVTVDsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dFRydXN0ZWRDbGllbnRDZXJ0IjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kRmFpbElmUHJvdG9jb2xzRG9udE1hdGNoIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gSktTX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9KS1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnNzbEVuYWJsZWRQcm90b2NvbHMgPSBBcnJheXMuYXNMaXN0KCJUTFN2MS4xIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRGYWlsSWZDaXBoZXJzRG9udE1hdGNoIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gSktTX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9KS1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnNzbENpcGhlclN1aXRlcyA9IEFycmF5cy5hc0xpc3QoIlRMU19ESEVfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJzaG91bGRVc2VTaW1wbGVTYW5kYm94IjoKICAgICAgICAgICAgICAgICBzZXR0aW5ncy5zY3JpcHRFbmdpbmVzLmdldCgiZ3JlbWxpbi1ncm9vdnkiKS5wbHVnaW5zLnB1dChHcm9vdnlDb21waWxlckdyZW1saW5QbHVnaW4uY2xhc3MuZ2V0TmFtZSgpLCBnZXRTY3JpcHRFbmdpbmVDb25mRm9yU2ltcGxlU2FuZGJveCgpKTsKICAgICAgICAgICAgICAgICAvLyByZW1vdmUgdGhlIHNjcmlwdCBiZWNhdXNlIGl0IGlzbid0IHVzZWQgaW4gdGhlIHRlc3QgYnV0IGFsc28gYmVjYXVzZSBpdCdzIG5vdCBDb21waWxlU3RhdGljIHJlYWR5CkBAIC0zMTYsMTkgKzIwNCw2IEBACiAgICAgICAgICAgICBjYXNlICJzaG91bGRDbG9zZUNoYW5uZWxJZkNsaWVudERvZXNudFJlc3BvbmQiOgogICAgICAgICAgICAgICAgIHNldHRpbmdzLmlkbGVDb25uZWN0aW9uVGltZW91dCA9IDEwMDA7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhXaXRoRGlmZmVyZW50U3RvcmVUeXBlIjoKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRoSW5jb3JyZWN0S2V5U3RvcmVUeXBlIjoKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRoSW5jb3JyZWN0VHJ1c3RTdG9yZVR5cGUiOgotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gSktTX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9KS1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmUgPSBQMTJfU0VSVkVSX1RSVVNUOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZVR5cGUgPSBUUlVTVFNUT1JFX1RZUEVfUEtDUzEyOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzM2LDE4ICsyMTEsNiBAQAogICAgICAgICByZXR1cm4gc2V0dGluZ3M7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgU3NsQ29udGV4dCBjcmVhdGVTZXJ2ZXJTc2xDb250ZXh0KCkgewotICAgICAgICBmaW5hbCBTc2xQcm92aWRlciBwcm92aWRlciA9IFNzbFByb3ZpZGVyLkpESzsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgZ29vZCBmb3IgcHJvZHVjdGlvbiAtIGp1c3QgdGVzdGluZwotICAgICAgICAgICAgZmluYWwgU2VsZlNpZ25lZENlcnRpZmljYXRlIHNzYyA9IG5ldyBTZWxmU2lnbmVkQ2VydGlmaWNhdGUoKTsKLSAgICAgICAgICAgIHJldHVybiBTc2xDb250ZXh0QnVpbGRlci5mb3JTZXJ2ZXIoc3NjLmNlcnRpZmljYXRlKCksIHNzYy5wcml2YXRlS2V5KCkpLnNzbFByb3ZpZGVyKHByb3ZpZGVyKS5idWlsZCgpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gY2UpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDb3VsZG4ndCBzZXR1cCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBmb3IgdGVzdCIpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHJpdmF0ZSBzdGF0aWMgTWFwPFN0cmluZywgT2JqZWN0PiBnZXRTY3JpcHRFbmdpbmVDb25mRm9yU2ltcGxlU2FuZGJveCgpIHsKICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHNjcmlwdEVuZ2luZUNvbmYgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIHNjcmlwdEVuZ2luZUNvbmYucHV0KCJjb21waWxhdGlvbiIsIENPTVBJTEVfU1RBVElDLm5hbWUoKSk7CkBAIC00OTIsNiArMzU1LDM0IEBACiAgICAgfQogCiAgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRUaW1lT3V0UmVtb3RlVHJhdmVyc2FsV2l0aFBlclJlcXVlc3RPcHRpb24oKSB7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKGNvbmYpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyB0ZXN0cyBzbGVlcGluZyB0aHJlYWQKKyAgICAgICAgICAgIGcud2l0aChBUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQsIDUwMEwpLmluamVjdCgxKS5zaWRlRWZmZWN0KExhbWJkYS5jb25zdW1lcigiVGhyZWFkLnNsZWVwKDEwMDAwKSIpKS5pdGVyYXRlKCk7CisgICAgICAgICAgICBmYWlsKCJUaGlzIHRyYXZlcnNhbCBzaG91bGQgaGF2ZSB0aW1lZCBvdXQiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgdCA9IGV4LmdldENhdXNlKCk7CisgICAgICAgICAgICBhc3NlcnRUaGF0KHQsIGluc3RhbmNlT2YoUmVzcG9uc2VFeGNlcHRpb24uY2xhc3MpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhSZXNwb25zZVN0YXR1c0NvZGUuU0VSVkVSX0VSUk9SX1RJTUVPVVQsICgoUmVzcG9uc2VFeGNlcHRpb24pIHQpLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG1ha2UgYSBncmFwaCB3aXRoIGEgY3ljbGUgaW4gaXQgdG8gZm9yY2UgYSBsb25nIHJ1biB0cmF2ZXJzYWwKKyAgICAgICAgZ3JhcGhHZXR0ZXIuZ2V0KCkudHJhdmVyc2FsKCkuYWRkVigicGVyc29uIikuYXMoInAiKS5hZGRFKCJzZWxmIikudG8oInAiKS5pdGVyYXRlKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIHRlc3RzIGFuICJ1bmVuZGluZyIgdHJhdmVyc2FsCisgICAgICAgICAgICBnLndpdGgoQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VULCA1MDBMKS5WKCkucmVwZWF0KF9fLm91dCgpKS51bnRpbChfXy5vdXRFKCkuY291bnQoKS5pcygwKSkuaXRlcmF0ZSgpOworICAgICAgICAgICAgZmFpbCgiVGhpcyB0cmF2ZXJzYWwgc2hvdWxkIGhhdmUgdGltZWQgb3V0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHQgPSBleC5nZXRDYXVzZSgpOworICAgICAgICAgICAgYXNzZXJ0VGhhdCh0LCBpbnN0YW5jZU9mKFJlc3BvbnNlRXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9USU1FT1VULCAoKFJlc3BvbnNlRXhjZXB0aW9uKSB0KS5nZXRSZXNwb25zZVN0YXR1c0NvZGUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFByb2R1Y2VQcm9wZXJFeGNlcHRpb25PblRpbWVvdXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3Rvcnkub3BlbigpOwogICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KG5hbWUuZ2V0TWV0aG9kTmFtZSgpKTsKQEAgLTU5OCwxOTUgKzQ4OSw2IEBACiAgICAgfQogCiAgICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2woKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5zc2xTa2lwQ2VydFZhbGlkYXRpb24odHJ1ZSkuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgcmV0dXJuICJub3RoaW5nIiAtIHRoZXJlIHNob3VsZCBiZSBubyBleGNlcHRpb24KLSAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsV2l0aFNzbENvbnRleHRQcm9ncmFtbWF0aWNhbGx5U3BlY2lmaWVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIC8vIGp1c3QgZm9yIHRlc3RpbmcgLSB0aGlzIGlzIG5vdCBnb29kIGZvciBwcm9kdWN0aW9uIHVzZQotICAgICAgICBmaW5hbCBTc2xDb250ZXh0QnVpbGRlciBidWlsZGVyID0gU3NsQ29udGV4dEJ1aWxkZXIuZm9yQ2xpZW50KCk7Ci0gICAgICAgIGJ1aWxkZXIudHJ1c3RNYW5hZ2VyKEluc2VjdXJlVHJ1c3RNYW5hZ2VyRmFjdG9yeS5JTlNUQU5DRSk7Ci0gICAgICAgIGJ1aWxkZXIuc3NsUHJvdmlkZXIoU3NsUHJvdmlkZXIuSkRLKTsKLQotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5zc2xDb250ZXh0KGJ1aWxkZXIuYnVpbGQoKSkuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgcmV0dXJuICJub3RoaW5nIiAtIHRoZXJlIHNob3VsZCBiZSBubyBleGNlcHRpb24KLSAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQnV0RmFpbElmQ2xpZW50Q29ubmVjdHNXaXRob3V0SXQoKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKGZhbHNlKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKLSAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGJ1dCBub3Qgb24gY2xpZW50Iik7Ci0gICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aExlZ2FjeVBlbSgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkKLSAgICAgICAgICAgICAgICAua2V5Q2VydENoYWluRmlsZShQRU1fQ0xJRU5UX0NSVCkua2V5RmlsZShQRU1fQ0xJRU5UX0tFWSkKLSAgICAgICAgICAgICAgICAua2V5UGFzc3dvcmQoS0VZX1BBU1MpLnRydXN0Q2VydGlmaWNhdGVDaGFpbkZpbGUoUEVNX1NFUlZFUl9DUlQpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRDZXJ0V2l0aExlZ2FjeVBlbSgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX1NFUlZFUl9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLnNzbFNraXBDZXJ0VmFsaWRhdGlvbih0cnVlKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKLSAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IGF1dGggaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGJ1dCBjbGllbnQgZG9lcyBub3QgaGF2ZSBhIGNlcnQiKTsKLSAgICAgICAgfSBjYXRjaChFeGNlcHRpb24geCkgewotICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dFRydXN0ZWRDbGllbnRDZXJ0V2l0aExlZ2FjeVBlbSgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkKLSAgICAgICAgICAgICAgICAua2V5Q2VydENoYWluRmlsZShQRU1fQ0xJRU5UX0NSVCkua2V5RmlsZShQRU1fQ0xJRU5UX0tFWSkKLSAgICAgICAgICAgICAgICAua2V5UGFzc3dvcmQoS0VZX1BBU1MpLnRydXN0Q2VydGlmaWNhdGVDaGFpbkZpbGUoUEVNX1NFUlZFUl9DUlQpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOwotICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBjbGllbnQgYXV0aCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgYnV0IGRvZXMgbm90IHRydXN0IGNsaWVudCdzIGNlcnQiKTsKLSAgICAgICAgfSBjYXRjaChFeGNlcHRpb24geCkgewotICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhXaXRoUGtjczEyKCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShQMTJfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKLSAgICAgICAgICAgICAgICAua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfUEtDUzEyKS50cnVzdFN0b3JlKFAxMl9DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGgoKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQotICAgICAgICAgICAgICAgIC5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9KS1MpLnRydXN0U3RvcmUoSktTX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0Q2VydCgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX1NFUlZFUl9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCi0gICAgICAgICAgICAgICAgLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX0pLUykuc3NsU2tpcENlcnRWYWxpZGF0aW9uKHRydWUpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOwotICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBjbGllbnQgYXV0aCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgYnV0IGNsaWVudCBkb2VzIG5vdCBoYXZlIGEgY2VydCIpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgewotICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dFRydXN0ZWRDbGllbnRDZXJ0KCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKLSAgICAgICAgICAgICAgICAua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfSktTKS50cnVzdFN0b3JlKEpLU19DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7Ci0gICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGNsaWVudCBhdXRoIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBidXQgZG9lcyBub3QgdHJ1c3QgY2xpZW50J3MgY2VydCIpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgewotICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRGYWlsSWZQcm90b2NvbHNEb250TWF0Y2goKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQotICAgICAgICAgICAgICAgIC5zc2xTa2lwQ2VydFZhbGlkYXRpb24odHJ1ZSkuc3NsRW5hYmxlZFByb3RvY29scyhBcnJheXMuYXNMaXN0KCJUTFN2MS4yIikpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOwotICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBjbGllbnQgcmVxdWlyZXMgVExTdjEuMiB3aGVyZWFzIHNlcnZlciBzdXBwb3J0cyBvbmx5IFRMU3YxLjEiKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kRmFpbElmQ2lwaGVyc0RvbnRNYXRjaCgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX1NFUlZFUl9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCi0gICAgICAgICAgICAgICAgLnNzbFNraXBDZXJ0VmFsaWRhdGlvbih0cnVlKS5zc2xDaXBoZXJTdWl0ZXMoQXJyYXlzLmFzTGlzdCgiU1NMX1JTQV9XSVRIX1JDNF8xMjhfU0hBIikpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOwotICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBjbGllbnQgcmVxdWlyZXMgVExTdjEuMiB3aGVyZWFzIHNlcnZlciBzdXBwb3J0cyBvbmx5IFRMU3YxLjEiKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkUmVzcGVjdEhpZ2hXYXRlck1hcmtTZXR0aW5nQW5kU3VjY2VlZCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICAvLyB0aGUgaGlnaHdhdGVybWFyayBzaG91bGQgZ2V0IGV4Y2VlZGVkIG9uIHRoZSBzZXJ2ZXIgYW5kIHRodXMgcGF1c2UgdGhlIHdyaXRlcywgYnV0IGhhdmUgbm8gcHJvYmxlbSBjYXRjaGluZwogICAgICAgICAvLyBpdHNlbGYgdXAgLSB0aGlzIGlzIGEgdHJpY2t5IHRlc3RzIHRvIGdldCBwYXNzaW5nIG9uIGFsbCBlbnZpcm9ubWVudHMgc28gdGhpcyBhc3N1bXB0aW9uIHdpbGwgZGVueSB0aGUKQEAgLTEwNDIsNyArNzQ0LDcgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRSZWNlaXZlRmFpbHVyZVRpbWVPdXRPblNjcmlwdEV2YWxVc2luZ092ZXJyaWRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIHRyeSAoU2ltcGxlQ2xpZW50IGNsaWVudCA9IFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVdlYlNvY2tldENsaWVudCgpKSB7CiAgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2cgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZCgiZXZhbCIpCi0gICAgICAgICAgICAgICAgICAgIC5hZGRBcmcoVG9rZW5zLkFSR1NfU0NSSVBUX0VWQUxfVElNRU9VVCwgMTAwTCkKKyAgICAgICAgICAgICAgICAgICAgLmFkZEFyZyhBUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQsIDEwMEwpCiAgICAgICAgICAgICAgICAgICAgIC5hZGRBcmcoVG9rZW5zLkFSR1NfR1JFTUxJTiwgIlRocmVhZC5zbGVlcCgzMDAwKTsnc29tZS1zdHVmZi10aGF0LXNob3VsZCBub3QgcmV0dXJuJyIpCiAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKICAgICAgICAgICAgIGZpbmFsIExpc3Q8UmVzcG9uc2VNZXNzYWdlPiByZXNwb25zZXMgPSBjbGllbnQuc3VibWl0KG1zZyk7CkBAIC0xMDgyLDI0ICs3ODQsNiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMSwgcmVwbGFjZWQgYnkgdGVzdHMgY292ZXJpbmcge0BsaW5rIFNldHRpbmdzI2V2YWx1YXRpb25UaW1lb3V0fS4KLSAgICAgKi8KLSAgICBAVGVzdAotICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHZvaWQgc2hvdWxkUmVjZWl2ZUZhaWx1cmVUaW1lT3V0T25Ub3RhbFNlcmlhbGl6YXRpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgdHJ5IChTaW1wbGVDbGllbnQgY2xpZW50ID0gVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlV2ViU29ja2V0Q2xpZW50KCkpewotICAgICAgICAgICAgZmluYWwgTGlzdDxSZXNwb25zZU1lc3NhZ2U+IHJlc3BvbnNlcyA9IGNsaWVudC5zdWJtaXQoIigwLi48MTAwMDAwKSIpOwotCi0gICAgICAgICAgICAvLyB0aGUgbGFzdCBtZXNzYWdlIHNob3VsZCBjb250YWluIHRoZSBlcnJvcgotICAgICAgICAgICAgYXNzZXJ0VGhhdChyZXNwb25zZXMuZ2V0KHJlc3BvbnNlcy5zaXplKCkgLSAxKS5nZXRTdGF0dXMoKS5nZXRNZXNzYWdlKCksIGVuZHNXaXRoKCJTZXJpYWxpemF0aW9uIG9mIHRoZSBlbnRpcmUgcmVzcG9uc2UgZXhjZWVkZWQgdGhlICdzZXJpYWxpemVSZXNwb25zZVRpbWVvdXQnIHNldHRpbmciKSk7Ci0KLSAgICAgICAgICAgIC8vIHZhbGlkYXRlIHRoYXQgd2UgY2FuIHN0aWxsIHNlbmQgbWVzc2FnZXMgdG8gdGhlIHNlcnZlcgotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsICgoTGlzdDxJbnRlZ2VyPikgY2xpZW50LnN1Ym1pdCgiMSsxIikuZ2V0KDApLmdldFJlc3VsdCgpLmdldERhdGEoKSkuZ2V0KDApLmludFZhbHVlKCkpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgQFRlc3QKICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKICAgICBwdWJsaWMgdm9pZCBzaG91bGRMb2FkSW5pdFNjcmlwdCgpIHRocm93cyBFeGNlcHRpb24gewpAQCAtMTE4OCwxMCArODcyLDcgQEAKICAgICAgICAgICAgIC8vIGl0IHNlZW1zIG9rIHRvIHBhc3MgaW4gdGhpcyBjYXNlLgogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gcmUpIHsKICAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHJlKTsKLSAgICAgICAgICAgIC8vIE5ldHR5IGNsb3NlcyB0aGUgY2hhbm5lbCB0byB0aGUgc2VydmVyIG9uIGEgbm9uLXJlY292ZXJhYmxlIGVycm9yIHN1Y2ggYXMgQ29ycnVwdGVkRnJhbWVFeGNlcHRpb24KLSAgICAgICAgICAgIC8vIGFuZCB0aGUgY29ubmVjdGlvbiBpcyBzdWJzZXF1ZW50bHkgZGVzdHJveWVkLiBFYWNoIG9mIHRoZSBwZW5kaW5nIHJlcXVlc3RzIGFyZSBnaXZlbiBhbiBlcnJvciB3aXRoCi0gICAgICAgICAgICAvLyB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2UuCi0gICAgICAgICAgICAvLworCiAgICAgICAgICAgICAvLyB3ZW50IHdpdGggdHdvIHBvc3NpYmxlIGVycm9yIG1lc3NhZ2VzIGhlcmUgYXMgaSB0aGluayB0aGF0IHRoZXJlIGlzIHNvbWUgZWl0aGVyIG5vbi1kZXRlcm1pbmlzdGljCiAgICAgICAgICAgICAvLyBiZWhhdmlvciBhcm91bmQgdGhlIGVycm9yIG1lc3NhZ2Ugb3IgaXQncyBlbnZpcm9ubWVudGFsbHkgZGVwZW5kZW50IChlLmcuIGRpZmZlcmVudCBqZGssIHZlcnNpb25zLCBldGMpCiAgICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QuZ2V0TWVzc2FnZSgpLCBNYXRjaGVycy5hbnlPZihpcygiQ29ubmVjdGlvbiB0byBzZXJ2ZXIgaXMgbm8gbG9uZ2VyIGFjdGl2ZSIpLCBpcygiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIikpKTsKQEAgLTEyMjksMTMgKzkxMCwyMSBAQAogCiAgICAgICAgICAgICAvLyByZXN0YXJ0IHNlcnZlcgogICAgICAgICAgICAgdGhpcy5zdGFydFNlcnZlcigpOwotICAgICAgICAgICAgLy8gdGhlIHJldHJ5IGludGVydmFsIGlzIDEgc2Vjb25kLCB3YWl0IGEgYml0IGxvbmdlcgotICAgICAgICAgICAgVGltZVVuaXQuU0VDT05EUy5zbGVlcCg1KTsKIAotICAgICAgICAgICAgTGlzdDxSZXN1bHQ+IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCIxKzEiKS5hbGwoKS5qb2luKCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgcmVzdWx0cy5zaXplKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHJlc3VsdHMuZ2V0KDApLmdldEludCgpKTsKKyAgICAgICAgICAgIC8vIHRyeSBhIGJ1bmNoIG9mIHRpbWVzIHRvIHJlY29ubmVjdC4gb24gc2xvd2VyIHN5c3RlbXMgdGhpcyBtYXkgc2ltcGx5IHRha2UgbG9uZ2VyLi4ubG9va2luZyBhdCB5b3UgdHJhdmlzCisgICAgICAgICAgICBmb3IgKGludCBpeCA9IDE7IGl4IDwgMTE7IGl4KyspIHsKKyAgICAgICAgICAgICAgICAvLyB0aGUgcmV0cnkgaW50ZXJ2YWwgaXMgMSBzZWNvbmQsIHdhaXQgYSBiaXQgbG9uZ2VyCisgICAgICAgICAgICAgICAgVGltZVVuaXQuU0VDT05EUy5zbGVlcCg1KTsKIAorICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8UmVzdWx0PiByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiMSsxIikuYWxsKCkuam9pbigpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgcmVzdWx0cy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgcmVzdWx0cy5nZXQoMCkuZ2V0SW50KCkpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXggPT0gMTApCisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBldmVudHVhbGx5IHN1Y2NlZWRlZCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKICAgICAgICAgfQpAQCAtMTI3OSwyNCArOTY4LDYgQEAKICAgICB9CiAKICAgICBAVGVzdAotICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZFN0aWxsU3VwcG9ydERlcHJlY2F0ZWRSZWJpbmRpbmdzUGFyYW1ldGVyT25TZXJ2ZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgLy8gdGhpcyB0ZXN0IGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIHJlYmluZGluZ3MgYXJnIGlzIHJlbW92ZWQKLSAgICAgICAgdHJ5IChTaW1wbGVDbGllbnQgY2xpZW50ID0gVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlV2ViU29ja2V0Q2xpZW50KCkpIHsKLSAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsU3RyaW5nPiByZWJpbmRpbmdzID0gbmV3IEhhc2hNYXA8PigpOwotICAgICAgICAgICAgcmViaW5kaW5ncy5wdXQoInh5eiIsICJncmFwaCIpOwotICAgICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKFRva2Vucy5PUFNfRVZBTCkKLSAgICAgICAgICAgICAgICAgICAgLmFkZEFyZyhUb2tlbnMuQVJHU19HUkVNTElOLCAieHl6LmFkZFZlcnRleCgnbmFtZScsJ2phc29uJykiKQotICAgICAgICAgICAgICAgICAgICAuYWRkQXJnKFRva2Vucy5BUkdTX1JFQklORElOR1MsIHJlYmluZGluZ3MpLmNyZWF0ZSgpOwotICAgICAgICAgICAgZmluYWwgTGlzdDxSZXNwb25zZU1lc3NhZ2U+IHJlc3BvbnNlcyA9IGNsaWVudC5zdWJtaXQocmVxdWVzdCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgcmVzcG9uc2VzLnNpemUoKSk7Ci0KLSAgICAgICAgICAgIGZpbmFsIERldGFjaGVkVmVydGV4IHYgPSAoKEFycmF5TGlzdDxEZXRhY2hlZFZlcnRleD4pIHJlc3BvbnNlcy5nZXQoMCkuZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpKS5nZXQoMCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImphc29uIiwgdi52YWx1ZSgibmFtZSIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkU3VwcG9ydExhbWJkYXNVc2luZ1dpdGhSZW1vdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoY29uZik7CiAgICAgICAgIGcuYWRkVigicGVyc29uIikucHJvcGVydHkoImFnZSIsIDIwKS5pdGVyYXRlKCk7CkBAIC0xMzA1LDEzICs5NzYsMTQgQEAKICAgICB9CiAKICAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEdldFNpZGVFZmZlY3RLZXlzVXNpbmdXaXRoUmVtb3RlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgcHVibGljIHZvaWQgc2hvdWxkR2V0U2lkZUVmZmVjdEtleXNBbmRTdGF0dXNVc2luZ1dpdGhSZW1vdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoY29uZik7CiAgICAgICAgIGcuYWRkVigicGVyc29uIikucHJvcGVydHkoImFnZSIsIDIwKS5pdGVyYXRlKCk7CiAgICAgICAgIGcuYWRkVigicGVyc29uIikucHJvcGVydHkoImFnZSIsIDEwKS5pdGVyYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsIHRyYXZlcnNhbCA9IGcuVigpLmFnZ3JlZ2F0ZSgiYSIpLmFnZ3JlZ2F0ZSgiYiIpOwogICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOwogICAgICAgICBmaW5hbCBEcml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cyBzZSA9IChEcml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cykgdHJhdmVyc2FsLmFzQWRtaW4oKS5nZXRTaWRlRWZmZWN0cygpOworICAgICAgICBhc3NlcnRUaGF0KHNlLnN0YXR1c0F0dHJpYnV0ZXMoKS5jb250YWluc0tleShUb2tlbnMuQVJHU19IT1NUKSwgaXModHJ1ZSkpOwogCiAgICAgICAgIC8vIEdldCBrZXlzCiAgICAgICAgIGZpbmFsIFNldDxTdHJpbmc+IHNpZGVFZmZlY3RLZXlzID0gc2Uua2V5cygpOwpAQCAtMTMzNCw2ICsxMDA2LDExIEBACiAKICAgICAgICAgZmluYWwgQnVsa1NldCBsb2NhbEJTaWRlRWZmZWN0cyA9IHNlLmdldCgiYiIpOwogICAgICAgICBhc3NlcnRUaGF0KGxvY2FsQlNpZGVFZmZlY3RzLmlzRW1wdHkoKSwgaXMoZmFsc2UpKTsKKworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbCBnZG90diA9IGcuVigpOworICAgICAgICBnZG90di50b0xpc3QoKTsKKyAgICAgICAgZmluYWwgRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMgZ2RvdHZTZSA9IChEcml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cykgZ2RvdHYuYXNBZG1pbigpLmdldFNpZGVFZmZlY3RzKCk7CisgICAgICAgIGFzc2VydFRoYXQoZ2RvdHZTZS5zdGF0dXNBdHRyaWJ1dGVzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfSE9TVCksIGlzKHRydWUpKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtMTUxNCw3MiArMTE5MSw3IEBACiAgICAgICAgICAgICBjbGllbnQuc3VibWl0KHNjcmlwdCwgYikuYWxsKCkuZ2V0KCk7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSB0YW5rZWQgb3V0IGJlY2F1c2Ugb2YgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdXNlZCBhbmQgc2l6ZSBvZiB0aGUgY29tcGlsZSBzY3JpcHQiKTsKICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KGV4LmdldE1lc3NhZ2UoKSwgY29udGFpbnNTdHJpbmcoIlRoZSBHcmVtbGluIHN0YXRlbWVudCB0aGF0IHdhcyBzdWJtaXR0ZWQgZXhjZWVkIHRoZSBtYXhpbXVtIGNvbXBpbGF0aW9uIHNpemUgYWxsb3dlZCBieSB0aGUgSlZNIikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhXaXRoRGlmZmVyZW50U3RvcmVUeXBlKCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQotICAgICAgICAgICAgICAgIC5rZXlTdG9yZShKS1NfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfSktTKQotICAgICAgICAgICAgICAgIC50cnVzdFN0b3JlKFAxMl9DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykudHJ1c3RTdG9yZVR5cGUoVFJVU1RTVE9SRV9UWVBFX1BLQ1MxMikKLSAgICAgICAgICAgICAgICAuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyMiA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCi0gICAgICAgICAgICAgICAgLmtleVN0b3JlKFAxMl9DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9QS0NTMTIpCi0gICAgICAgICAgICAgICAgLnRydXN0U3RvcmUoSktTX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdFN0b3JlVHlwZShUUlVTVFNUT1JFX1RZUEVfSktTKQotICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudDIgPSBjbHVzdGVyMi5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudDIuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyMi5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdEtleVN0b3JlVHlwZSgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkKLSAgICAgICAgICAgICAgICAua2V5U3RvcmUoSktTX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX1BLQ1MxMikKLSAgICAgICAgICAgICAgICAudHJ1c3RTdG9yZShQMTJfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLnRydXN0U3RvcmVUeXBlKFRSVVNUU1RPUkVfVFlQRV9QS0NTMTIpCi0gICAgICAgICAgICAgICAgLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIFN0cmluZyByZXMgPSBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKTsKLSAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBpbmNvcnJlY3Qga2V5U3RvcmVUeXBlIGlzIHNwZWNpZmllZCIpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgewotICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdFRydXN0U3RvcmVUeXBlKCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQotICAgICAgICAgICAgICAgIC5rZXlTdG9yZShQMTJfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfUEtDUzEyKQotICAgICAgICAgICAgICAgIC50cnVzdFN0b3JlKEpLU19DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykudHJ1c3RTdG9yZVR5cGUoVFJVU1RTVE9SRV9UWVBFX1BLQ1MxMikKLSAgICAgICAgICAgICAgICAuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7Ci0gICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2UgaW5jb3JyZWN0IHRydXN0U3RvcmVUeXBlIGlzIHNwZWNpZmllZCIpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgewotICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICAgICAgYXNzZXJ0VGhhdChleC5nZXRNZXNzYWdlKCksIGNvbnRhaW5zU3RyaW5nKCJUaGUgR3JlbWxpbiBzdGF0ZW1lbnQgdGhhdCB3YXMgc3VibWl0dGVkIGV4Y2VlZHMgdGhlIG1heGltdW0gY29tcGlsYXRpb24gc2l6ZSBhbGxvd2VkIGJ5IHRoZSBKVk0iKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJTZXNzaW9uSW50ZWdyYXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyU2Vzc2lvbkludGVncmF0ZVRlc3QuamF2YQppbmRleCA5ZGE4Y2ZkLi5iNDAxMzAzIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJTZXNzaW9uSW50ZWdyYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlclNlc3Npb25JbnRlZ3JhdGVUZXN0LmphdmEKQEAgLTMzOSwzMiArMzM5LDM4IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuc3VyZVNlc3Npb25CaW5kaW5nc0FyZVRocmVhZFNhZmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5taW5JblByb2Nlc3NQZXJDb25uZWN0aW9uKDE2KS5tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKDY0KS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS4KKyAgICAgICAgICAgICAgICBtaW5JblByb2Nlc3NQZXJDb25uZWN0aW9uKDE2KS5tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKDY0KS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdChuYW1lLmdldE1ldGhvZE5hbWUoKSk7CiAKLSAgICAgICAgY2xpZW50LnN1Ym1pdEFzeW5jKCJhPTEwMDtiPTEwMDA7Yz0xMDAwMDtudWxsIik7Ci0gICAgICAgIGZpbmFsIGludCByZXF1ZXN0cyA9IDEwMDAwOwotICAgICAgICBmaW5hbCBMaXN0PENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4+IGZ1dHVyZXMgPSBuZXcgQXJyYXlMaXN0PD4ocmVxdWVzdHMpOwotICAgICAgICBJbnRTdHJlYW0ucmFuZ2UoMCwgcmVxdWVzdHMpLmZvckVhY2goaSAtPiB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZ1dHVyZXMuYWRkKGNsaWVudC5zdWJtaXRBc3luYygiYStiK2MiKSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCJhPTEwMDtiPTEwMDA7Yz0xMDAwMDtudWxsIikuYWxsKCkuZ2V0KCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgcmVxdWVzdHMgPSAxMDAwMDsKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8Q29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0Pj4gZnV0dXJlcyA9IG5ldyBBcnJheUxpc3Q8PihyZXF1ZXN0cyk7CisgICAgICAgICAgICBJbnRTdHJlYW0ucmFuZ2UoMCwgcmVxdWVzdHMpLmZvckVhY2goaSAtPiB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZnV0dXJlcy5hZGQoY2xpZW50LnN1Ym1pdEFzeW5jKCJhK2IrYyIpKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnRFcXVhbHMocmVxdWVzdHMsIGZ1dHVyZXMuc2l6ZSgpKTsKKworICAgICAgICAgICAgaW50IGNvdW50ZXIgPSAwOworICAgICAgICAgICAgZm9yIChDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IGYgOiBmdXR1cmVzKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVzdWx0IHIgPSBmLmdldCgpLmFsbCgpLmdldCgzMDAwMCwgVGltZVVuaXQuTUlMTElTRUNPTkRTKS5nZXQoMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDExMTAwLCByLmdldEludCgpKTsKKyAgICAgICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0pOwogCi0gICAgICAgIGFzc2VydEVxdWFscyhyZXF1ZXN0cywgZnV0dXJlcy5zaXplKCkpOwotCi0gICAgICAgIGludCBjb3VudGVyID0gMDsKLSAgICAgICAgZm9yKENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4gZiA6IGZ1dHVyZXMpIHsKLSAgICAgICAgICAgIGZpbmFsIFJlc3VsdCByID0gZi5nZXQoKS5hbGwoKS5nZXQoMzAwMDAsIFRpbWVVbml0Lk1JTExJU0VDT05EUykuZ2V0KDApOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDExMTAwLCByLmdldEludCgpKTsKLSAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhyZXF1ZXN0cywgY291bnRlcik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgZmFpbChleC5nZXRNZXNzYWdlKCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0RXF1YWxzKHJlcXVlc3RzLCBjb3VudGVyKTsKLQotICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlclNzbEludGVncmF0ZVRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlclNzbEludGVncmF0ZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjc1YjhlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyU3NsSW50ZWdyYXRlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNDE4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXI7CisKK2ltcG9ydCBpby5uZXR0eS5oYW5kbGVyLnNzbC5DbGllbnRBdXRoOworaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuc3NsLlNzbENvbnRleHQ7CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wuU3NsQ29udGV4dEJ1aWxkZXI7CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wuU3NsUHJvdmlkZXI7CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wudXRpbC5JbnNlY3VyZVRydXN0TWFuYWdlckZhY3Rvcnk7CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wudXRpbC5TZWxmU2lnbmVkQ2VydGlmaWNhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLmV4Y2VwdGlvbi5FeGNlcHRpb25VdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb247CisKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXNJbnN0YW5jZU9mLmluc3RhbmNlT2Y7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CisKK3B1YmxpYyBjbGFzcyBHcmVtbGluU2VydmVyU3NsSW50ZWdyYXRlVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblNlcnZlckludGVncmF0aW9uVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBFTV9TRVJWRVJfS0VZID0gInNyYy90ZXN0L3Jlc291cmNlcy9zZXJ2ZXIua2V5LnBrOCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBFTV9TRVJWRVJfQ1JUID0gInNyYy90ZXN0L3Jlc291cmNlcy9zZXJ2ZXIuY3J0IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEVNX0NMSUVOVF9LRVkgPSAic3JjL3Rlc3QvcmVzb3VyY2VzL2NsaWVudC5rZXkucGs4IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEVNX0NMSUVOVF9DUlQgPSAic3JjL3Rlc3QvcmVzb3VyY2VzL2NsaWVudC5jcnQiOworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlIHNwZWNpZmljIEdyZW1saW4gU2VydmVyIHNldHRpbmdzIGZvciBzcGVjaWZpYyB0ZXN0cy4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0dGluZ3Mgb3ZlcnJpZGVTZXR0aW5ncyhmaW5hbCBTZXR0aW5ncyBzZXR0aW5ncykgeworICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZU9mVGVzdCA9IG5hbWUuZ2V0TWV0aG9kTmFtZSgpOworICAgICAgICBzd2l0Y2ggKG5hbWVPZlRlc3QpIHsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbCI6CisgICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xCdXRGYWlsSWZDbGllbnRDb25uZWN0c1dpdGhvdXRJdCI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsV2l0aFNzbENvbnRleHRQcm9ncmFtbWF0aWNhbGx5U3BlY2lmaWVkIjoKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm92ZXJyaWRlU3NsQ29udGV4dChjcmVhdGVTZXJ2ZXJTc2xDb250ZXh0KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aExlZ2FjeVBlbSI6CisgICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dENlcnRXaXRoTGVnYWN5UGVtIjoKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlDZXJ0Q2hhaW5GaWxlID0gUEVNX1NFUlZFUl9DUlQ7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleUZpbGUgPSBQRU1fU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5UGFzc3dvcmQgPSBLRVlfUEFTUzsKKyAgICAgICAgICAgICAgICAvLyBUcnVzdCB0aGUgY2xpZW50CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0Q2VydENoYWluRmlsZSA9IFBFTV9DTElFTlRfQ1JUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gVHJ1c3QgdGhlIGNsaWVudAorICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRUcnVzdGVkQ2xpZW50Q2VydFdpdGhMZWdhY3lQZW0iOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleUNlcnRDaGFpbkZpbGUgPSBQRU1fU0VSVkVSX0NSVDsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5RmlsZSA9IFBFTV9TRVJWRVJfS0VZOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIC8vIFRydXN0IE9OTFkgdGhlIHNlcnZlciBjZXJ0CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0Q2VydENoYWluRmlsZSA9IFBFTV9TRVJWRVJfQ1JUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aFBrY3MxMiI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBQMTJfU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX1BLQ1MxMjsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZSA9IFAxMl9TRVJWRVJfVFJVU1Q7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoIjoKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0Q2VydCI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZSA9IEpLU19TRVJWRVJfVFJVU1Q7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRUcnVzdGVkQ2xpZW50Q2VydCI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZEZhaWxJZlByb3RvY29sc0RvbnRNYXRjaCI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5zc2xFbmFibGVkUHJvdG9jb2xzID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiVExTdjEuMSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kRmFpbElmQ2lwaGVyc0RvbnRNYXRjaCI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5zc2xDaXBoZXJTdWl0ZXMgPSBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJUTFNfREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aERpZmZlcmVudFN0b3JlVHlwZSI6CisgICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdEtleVN0b3JlVHlwZSI6CisgICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdFRydXN0U3RvcmVUeXBlIjoKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlID0gUDEyX1NFUlZFUl9UUlVTVDsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmVUeXBlID0gVFJVU1RTVE9SRV9UWVBFX1BLQ1MxMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzZXR0aW5nczsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTc2xDb250ZXh0IGNyZWF0ZVNlcnZlclNzbENvbnRleHQoKSB7CisgICAgICAgIGZpbmFsIFNzbFByb3ZpZGVyIHByb3ZpZGVyID0gU3NsUHJvdmlkZXIuSkRLOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBnb29kIGZvciBwcm9kdWN0aW9uIC0ganVzdCB0ZXN0aW5nCisgICAgICAgICAgICBmaW5hbCBTZWxmU2lnbmVkQ2VydGlmaWNhdGUgc3NjID0gbmV3IFNlbGZTaWduZWRDZXJ0aWZpY2F0ZSgpOworICAgICAgICAgICAgcmV0dXJuIFNzbENvbnRleHRCdWlsZGVyLmZvclNlcnZlcihzc2MuY2VydGlmaWNhdGUoKSwgc3NjLnByaXZhdGVLZXkoKSkuc3NsUHJvdmlkZXIocHJvdmlkZXIpLmJ1aWxkKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBjZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkbid0IHNldHVwIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGZvciB0ZXN0Iik7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfU0VSVkVSX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykuc3NsU2tpcENlcnRWYWxpZGF0aW9uKHRydWUpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIHJldHVybiAibm90aGluZyIgLSB0aGVyZSBzaG91bGQgYmUgbm8gZXhjZXB0aW9uCisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbFdpdGhTc2xDb250ZXh0UHJvZ3JhbW1hdGljYWxseVNwZWNpZmllZCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAvLyBqdXN0IGZvciB0ZXN0aW5nIC0gdGhpcyBpcyBub3QgZ29vZCBmb3IgcHJvZHVjdGlvbiB1c2UKKyAgICAgICAgZmluYWwgU3NsQ29udGV4dEJ1aWxkZXIgYnVpbGRlciA9IFNzbENvbnRleHRCdWlsZGVyLmZvckNsaWVudCgpOworICAgICAgICBidWlsZGVyLnRydXN0TWFuYWdlcihJbnNlY3VyZVRydXN0TWFuYWdlckZhY3RvcnkuSU5TVEFOQ0UpOworICAgICAgICBidWlsZGVyLnNzbFByb3ZpZGVyKFNzbFByb3ZpZGVyLkpESyk7CisKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkuc3NsQ29udGV4dChidWlsZGVyLmJ1aWxkKCkpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIHJldHVybiAibm90aGluZyIgLSB0aGVyZSBzaG91bGQgYmUgbm8gZXhjZXB0aW9uCisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEJ1dEZhaWxJZkNsaWVudENvbm5lY3RzV2l0aG91dEl0KCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbChmYWxzZSkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBidXQgbm90IG9uIGNsaWVudCIpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhMZWdhY3lQZW0oKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCisgICAgICAgICAgICAgICAgLmtleUNlcnRDaGFpbkZpbGUoUEVNX0NMSUVOVF9DUlQpLmtleUZpbGUoUEVNX0NMSUVOVF9LRVkpCisgICAgICAgICAgICAgICAgLmtleVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdENlcnRpZmljYXRlQ2hhaW5GaWxlKFBFTV9TRVJWRVJfQ1JUKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0Q2VydFdpdGhMZWdhY3lQZW0oKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5zc2xTa2lwQ2VydFZhbGlkYXRpb24odHJ1ZSkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGNsaWVudCBhdXRoIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBidXQgY2xpZW50IGRvZXMgbm90IGhhdmUgYSBjZXJ0Iik7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIHgpIHsKKyAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOworICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRUcnVzdGVkQ2xpZW50Q2VydFdpdGhMZWdhY3lQZW0oKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCisgICAgICAgICAgICAgICAgLmtleUNlcnRDaGFpbkZpbGUoUEVNX0NMSUVOVF9DUlQpLmtleUZpbGUoUEVNX0NMSUVOVF9LRVkpCisgICAgICAgICAgICAgICAgLmtleVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdENlcnRpZmljYXRlQ2hhaW5GaWxlKFBFTV9TRVJWRVJfQ1JUKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IGF1dGggaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGJ1dCBkb2VzIG5vdCB0cnVzdCBjbGllbnQncyBjZXJ0Iik7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIHgpIHsKKyAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOworICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aFBrY3MxMigpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoUDEyX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCisgICAgICAgICAgICAgICAgLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX1BLQ1MxMikudHJ1c3RTdG9yZShQMTJfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKKyAgICAgICAgICAgICAgICAua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfSktTKS50cnVzdFN0b3JlKEpLU19DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dENlcnQoKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQorICAgICAgICAgICAgICAgIC5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9KS1MpLnNzbFNraXBDZXJ0VmFsaWRhdGlvbih0cnVlKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IGF1dGggaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGJ1dCBjbGllbnQgZG9lcyBub3QgaGF2ZSBhIGNlcnQiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKKyAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOworICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRUcnVzdGVkQ2xpZW50Q2VydCgpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCisgICAgICAgICAgICAgICAgLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX0pLUykudHJ1c3RTdG9yZShKS1NfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOworICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBjbGllbnQgYXV0aCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgYnV0IGRvZXMgbm90IHRydXN0IGNsaWVudCdzIGNlcnQiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKKyAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOworICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kRmFpbElmUHJvdG9jb2xzRG9udE1hdGNoKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfU0VSVkVSX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKKyAgICAgICAgICAgICAgICAuc3NsU2tpcENlcnRWYWxpZGF0aW9uKHRydWUpLnNzbEVuYWJsZWRQcm90b2NvbHMoQXJyYXlzLmFzTGlzdCgiVExTdjEuMiIpKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IHJlcXVpcmVzIFRMU3YxLjIgd2hlcmVhcyBzZXJ2ZXIgc3VwcG9ydHMgb25seSBUTFN2MS4xIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZEZhaWxJZkNpcGhlcnNEb250TWF0Y2goKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQorICAgICAgICAgICAgICAgIC5zc2xTa2lwQ2VydFZhbGlkYXRpb24odHJ1ZSkuc3NsQ2lwaGVyU3VpdGVzKEFycmF5cy5hc0xpc3QoIlNTTF9SU0FfV0lUSF9SQzRfMTI4X1NIQSIpKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IHJlcXVpcmVzIFRMU3YxLjIgd2hlcmVhcyBzZXJ2ZXIgc3VwcG9ydHMgb25seSBUTFN2MS4xIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhEaWZmZXJlbnRTdG9yZVR5cGUoKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCisgICAgICAgICAgICAgICAgLmtleVN0b3JlKEpLU19DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9KS1MpCisgICAgICAgICAgICAgICAgLnRydXN0U3RvcmUoUDEyX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdFN0b3JlVHlwZShUUlVTVFNUT1JFX1RZUEVfUEtDUzEyKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkKKyAgICAgICAgICAgICAgICAua2V5U3RvcmUoUDEyX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX1BLQ1MxMikKKyAgICAgICAgICAgICAgICAudHJ1c3RTdG9yZShKS1NfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLnRydXN0U3RvcmVUeXBlKFRSVVNUU1RPUkVfVFlQRV9KS1MpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50MiA9IGNsdXN0ZXIyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50Mi5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRoSW5jb3JyZWN0S2V5U3RvcmVUeXBlKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQorICAgICAgICAgICAgICAgIC5rZXlTdG9yZShKS1NfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfUEtDUzEyKQorICAgICAgICAgICAgICAgIC50cnVzdFN0b3JlKFAxMl9DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykudHJ1c3RTdG9yZVR5cGUoVFJVU1RTVE9SRV9UWVBFX1BLQ1MxMikKKyAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgU3RyaW5nIHJlcyA9IGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpOworICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIGluY29ycmVjdCBrZXlTdG9yZVR5cGUgaXMgc3BlY2lmaWVkIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRoSW5jb3JyZWN0VHJ1c3RTdG9yZVR5cGUoKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCisgICAgICAgICAgICAgICAgLmtleVN0b3JlKFAxMl9DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9QS0NTMTIpCisgICAgICAgICAgICAgICAgLnRydXN0U3RvcmUoSktTX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdFN0b3JlVHlwZShUUlVTVFNUT1JFX1RZUEVfUEtDUzEyKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBpbmNvcnJlY3QgdHJ1c3RTdG9yZVR5cGUgaXMgc3BlY2lmaWVkIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2NoYW5uZWwvQWJzdHJhY3RHcmVtbGluU2VydmVyQ2hhbm5lbGl6ZXJJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2NoYW5uZWwvQWJzdHJhY3RHcmVtbGluU2VydmVyQ2hhbm5lbGl6ZXJJbnRlZ3JhdGVUZXN0LmphdmEKaW5kZXggZDY4ZDg5MC4uYjYwNDI1NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9jaGFubmVsL0Fic3RyYWN0R3JlbWxpblNlcnZlckNoYW5uZWxpemVySW50ZWdyYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvY2hhbm5lbC9BYnN0cmFjdEdyZW1saW5TZXJ2ZXJDaGFubmVsaXplckludGVncmF0ZVRlc3QuamF2YQpAQCAtMTgsMzAgKzE4LDIzIEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbDsKIAoraW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5Ob29wSG9zdG5hbWVWZXJpZmllcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5BdXRoUHJvcGVydGllczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2ltcGxlLlNpbXBsZUNsaWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DaGFubmVsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5BYnN0cmFjdEdyZW1saW5TZXJ2ZXJJbnRlZ3JhdGlvblRlc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5Xc0FuZEh0dHBDaGFubmVsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5TZXR0aW5nczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5UZXN0Q2xpZW50RmFjdG9yeTsKIAotCiBpbXBvcnQgb3JnLmFwYWNoZS5odHRwLkNvbnN0czsKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuQ2xvc2VhYmxlSHR0cFJlc3BvbnNlOwotaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwR2V0OwogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwUG9zdDsKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29uZmlnLlJlZ2lzdHJ5OwogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25maWcuUmVnaXN0cnlCdWlsZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnNvY2tldC5Db25uZWN0aW9uU29ja2V0RmFjdG9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWxsb3dBbGxIb3N0bmFtZVZlcmlmaWVyOwogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5TU0xDb25uZWN0aW9uU29ja2V0RmFjdG9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMQ29udGV4dEJ1aWxkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlRydXN0U2VsZlNpZ25lZFN0cmF0ZWd5OwotaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5UcnVzdFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5zc2wuU1NMQ29udGV4dEJ1aWxkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS5odHRwLmVudGl0eS5TdHJpbmdFbnRpdHk7CiBpbXBvcnQgb3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50Lkh0dHBDbGllbnRzOwogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5DbG9zZWFibGVIdHRwQ2xpZW50OwpAQCAtNDksMTkgKzQyLDkgQEAKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAudXRpbC5FbnRpdHlVdGlsczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5PYmplY3RNYXBwZXI7Ci1pbXBvcnQgb3JnLmp1bml0LkFmdGVyOwotaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLlBhcmFtZXRlcml6ZWQ7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bGVzLkV4dGVybmFsUmVzb3VyY2U7CiAKLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKIGltcG9ydCBqYXZhLnV0aWwuQmFzZTY0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CkBAIC0yMjEsMTUgKzIwNCw5IEBACiAKICAgICAgICAgcHJpdmF0ZSBDbG9zZWFibGVIdHRwQ2xpZW50IGNyZWF0ZVNzbEh0dHBDbGllbnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgICAgIGZpbmFsIFNTTENvbnRleHRCdWlsZGVyIHdzQnVpbGRlciA9IG5ldyBTU0xDb250ZXh0QnVpbGRlcigpOwotICAgICAgICAgICAgd3NCdWlsZGVyLmxvYWRUcnVzdE1hdGVyaWFsKG51bGwsIG5ldyBUcnVzdFN0cmF0ZWd5KCkgewotICAgICAgICAgICAgICAgIEBPdmVycmlkZQotICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVHJ1c3RlZChYNTA5Q2VydGlmaWNhdGVbXSBjaGFpbiwKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGF1dGhUeXBlKSB0aHJvd3MgQ2VydGlmaWNhdGVFeGNlcHRpb24gewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHdzQnVpbGRlci5sb2FkVHJ1c3RNYXRlcmlhbChudWxsLCAoY2hhaW4sIGF1dGhUeXBlKSAtPiB0cnVlKTsKICAgICAgICAgICAgIGZpbmFsIFNTTENvbm5lY3Rpb25Tb2NrZXRGYWN0b3J5IHNzbHNmID0gbmV3IFNTTENvbm5lY3Rpb25Tb2NrZXRGYWN0b3J5KHdzQnVpbGRlci5idWlsZCgpLAotICAgICAgICAgICAgICAgIG5ldyBBbGxvd0FsbEhvc3RuYW1lVmVyaWZpZXIoKSk7CisgICAgICAgICAgICAgICAgbmV3IE5vb3BIb3N0bmFtZVZlcmlmaWVyKCkpOwogICAgICAgICAgICAgLy9UaGlzIHdpbmRzIHVwIHVzaW5nIGEgUG9vbGluZ0h0dHBDbGllbnRDb25uZWN0aW9uTWFuYWdlciBzbyBuZWVkIHRvIHBhc3MgdGhlCiAgICAgICAgICAgICAvL1JlZ2lzdHJ5QnVpbGRlcgogICAgICAgICAgICAgZmluYWwgUmVnaXN0cnk8Q29ubmVjdGlvblNvY2tldEZhY3Rvcnk+IHJlZ2lzdHJ5ID0gUmVnaXN0cnlCdWlsZGVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0T3BQcm9jZXNzb3JUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0T3BQcm9jZXNzb3JUZXN0LmphdmEKaW5kZXggMTg1MmQzMS4uZWFiYTFjNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9BYnN0cmFjdE9wUHJvY2Vzc29yVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvQWJzdHJhY3RPcFByb2Nlc3NvclRlc3QuamF2YQpAQCAtMzAsNiArMzAsNyBAQAogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CiAKIHB1YmxpYyBjbGFzcyBBYnN0cmFjdE9wUHJvY2Vzc29yVGVzdCB7CisKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIG1ha2VGcmFtZU1ldGhvZFRlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKCJ0ZXN0IikuY3JlYXRlKCk7CkBAIC0zOSw3ICs0MCw3IEBACiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIC8vIEluZHVjZSBhIE51bGxQb2ludGVyRXhjZXB0aW9uIHRvIHZhbGlkYXRlIGVycm9yIHJlc3BvbnNlIG1lc3NhZ2Ugd3JpdGluZwotICAgICAgICAgICAgQWJzdHJhY3RPcFByb2Nlc3Nvci5tYWtlRnJhbWUoY3R4LCByZXF1ZXN0LCBudWxsLCB0cnVlLCBudWxsLCBSZXNwb25zZVN0YXR1c0NvZGUuUEFSVElBTF9DT05URU5ULCBudWxsKTsKKyAgICAgICAgICAgIEFic3RyYWN0T3BQcm9jZXNzb3IubWFrZUZyYW1lKGN0eCwgcmVxdWVzdCwgbnVsbCwgdHJ1ZSwgbnVsbCwgUmVzcG9uc2VTdGF0dXNDb2RlLlBBUlRJQUxfQ09OVEVOVCwgbnVsbCwgbnVsbCk7CiAgICAgICAgICAgICBmYWlsKCJFeHBlY3RlZCBhIE51bGxQb2ludGVyRXhjZXB0aW9uIik7CiAgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGV4cGVjdGVkKSB7CiAgICAgICAgICAgICAvLyBub3AKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLnlhbWwKaW5kZXggNGVhZTU0Yy4uNjAxZTQwNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLnlhbWwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLnlhbWwKQEAgLTE1LDYgKzE1LDE5IEBACiAjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSU1QT1JUQU5UCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENoYW5nZXMgdG8gdGhpcyBmaWxlIG5lZWQgdG8gYmUgYXBwcm9wcmlhdGVseSByZXBsaWNhdGVkIHRvCisjCisjIC0gZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLnlhbWwKKyMgLSBkb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvZ3JlbWxpbi1zZXJ2ZXItaW50ZWdyYXRpb24tc2VjdXJlLnlhbWwKKyMKKyMgV2l0aG91dCBzdWNoIGNoYW5nZXMsIHRoZSB0ZXN0IGRvY2tlciBzZXJ2ZXIgY2FuJ3QgYmUgc3RhcnRlZCBmb3IgaW5kZXBlbmRlbnQKKyMgdGVzdGluZyB3aXRoIEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHMuIE5vdGUgdGhpcyBmaWxlJ3MgcmVsYXRpb24gdG8KKyMgZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvcmVzb3VyY2VzL3NjcmlwdHMvdGVzdC1zZXJ2ZXItc3RhcnQuZ3Jvb3Z5CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKIGhvc3Q6IGxvY2FsaG9zdAogcG9ydDogNDU5NDAKIGV2YWx1YXRpb25UaW1lb3V0OiAzMDAwMApAQCAtMjksNiArNDIsNyBAQAogICBncmVtbGluLWdyb292eTogewogICAgIHBsdWdpbnM6IHsgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuanNyMjIzLkdyZW1saW5TZXJ2ZXJHcmVtbGluUGx1Z2luOiB7fSwKICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguanNyMjIzLlRpbmtlckdyYXBoR3JlbWxpblBsdWdpbjoge30sCisgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuR3Jvb3Z5Q29tcGlsZXJHcmVtbGluUGx1Z2luOiB7ZXhwZWN0ZWRDb21waWxhdGlvblRpbWU6IDMwMDAwfSwKICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkltcG9ydEdyZW1saW5QbHVnaW46IHtjbGFzc0ltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aF0sIG1ldGhvZEltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aCMqXX0sCiAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjoge2ZpbGVzOiBbc2NyaXB0cy9nZW5lcmF0ZS1hbGwuZ3Jvb3Z5XX19fX0KIHNlcmlhbGl6ZXJzOgpAQCAtMzcsOSArNTEsMTEgQEAKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9MaXRlTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYxZDBdLCBjdXN0b206IFtncm9vdnkuanNvbi5Kc29uQnVpbGRlcjtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuSnNvbkJ1aWxkZXJHcnlvU2VyaWFsaXplcl19fQogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlfX0KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZX19Ci0gIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYxZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjFkMF0gfX0KLSAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMmQwXSB9fQogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYyZDBdIH19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYxZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjFkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fQogcHJvY2Vzc29yczoKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc2Vzc2lvbi5TZXNzaW9uT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBzZXNzaW9uVGltZW91dDogMjg4MDAwMDAgfX0KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc3RhbmRhcmQuU3RhbmRhcmRPcFByb2Nlc3NvciwgY29uZmlnOiB7fX0KQEAgLTU1LDQgKzcxLDQgQEAKIG1heEFjY3VtdWxhdGlvbkJ1ZmZlckNvbXBvbmVudHM6IDEwMjQKIHJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZTogNjQKIHdyaXRlQnVmZmVyTG93V2F0ZXJNYXJrOiAzMjc2OAotd3JpdGVCdWZmZXJIaWdoV2F0ZXJNYXJrOiA2NTUzNgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dyaXRlQnVmZmVySGlnaFdhdGVyTWFyazogNjU1MzYKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtYWxsLmdyb292eSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtYWxsLmdyb292eQppbmRleCBhYTNjNWU1Li40YjFhY2IzIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9zY3JpcHRzL2dlbmVyYXRlLWFsbC5ncm9vdnkKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1hbGwuZ3Jvb3Z5CkBAIC01MCwyMCArNTAsMjAgQEAKICAgICAgIGFsbG93U2V0T2ZJZE1hbmFnZXIoaXQsICJlZGdlSWRNYW5hZ2VyIikKICAgICAgIGFsbG93U2V0T2ZJZE1hbmFnZXIoaXQsICJ2ZXJ0ZXhQcm9wZXJ0eUlkTWFuYWdlciIpCiAgICAgfQotCiAgICAgVGlua2VyRmFjdG9yeS5nZW5lcmF0ZUNsYXNzaWMoY2xhc3NpYykKICAgICBUaW5rZXJGYWN0b3J5LmdlbmVyYXRlTW9kZXJuKG1vZGVybikKICAgICBUaW5rZXJGYWN0b3J5LmdlbmVyYXRlVGhlQ3JldyhjcmV3KQogICAgIFRpbmtlckZhY3RvcnkuZ2VuZXJhdGVHcmF0ZWZ1bERlYWQoZ3JhdGVmdWwpCiAgICAgVGlua2VyRmFjdG9yeS5nZW5lcmF0ZUtpdGNoZW5TaW5rKHNpbmspCisKICAgfQogXSBhcyBMaWZlQ3ljbGVIb29rXQogCiAvLyBhZGQgZGVmYXVsdCBUcmF2ZXJzYWxTb3VyY2UgaW5zdGFuY2VzIGZvciBlYWNoIGdyYXBoIGluc3RhbmNlCi1nbG9iYWxzIDw8IFtnY2xhc3NpYyA6IGNsYXNzaWMudHJhdmVyc2FsKCldCi1nbG9iYWxzIDw8IFtnbW9kZXJuIDogbW9kZXJuLnRyYXZlcnNhbCgpXQotZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpXQotZ2xvYmFscyA8PCBbZ2NyZXcgOiBjcmV3LnRyYXZlcnNhbCgpXQotZ2xvYmFscyA8PCBbZ2dyYXBoIDogZ3JhcGgudHJhdmVyc2FsKCldCi1nbG9iYWxzIDw8IFtnZ3JhdGVmdWwgOiBncmF0ZWZ1bC50cmF2ZXJzYWwoKV0KLWdsb2JhbHMgPDwgW2dzaW5rIDogc2luay50cmF2ZXJzYWwoKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitnbG9iYWxzIDw8IFtnY2xhc3NpYyA6IGNsYXNzaWMudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQorZ2xvYmFscyA8PCBbZ21vZGVybiA6IG1vZGVybi50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQorZ2xvYmFscyA8PCBbZ2NyZXcgOiBjcmV3LnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KK2dsb2JhbHMgPDwgW2dncmFwaCA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KK2dsb2JhbHMgPDwgW2dncmF0ZWZ1bCA6IGdyYXRlZnVsLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KK2dsb2JhbHMgPDwgW2dzaW5rIDogc2luay50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9zY3JpcHRzL3Rlc3Qtc2VydmVyLXN0YXJ0Lmdyb292eSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3NjcmlwdHMvdGVzdC1zZXJ2ZXItc3RhcnQuZ3Jvb3Z5CmluZGV4IDFlMmIwMTIuLmU3MjFhZmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3NjcmlwdHMvdGVzdC1zZXJ2ZXItc3RhcnQuZ3Jvb3Z5CisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3NjcmlwdHMvdGVzdC1zZXJ2ZXItc3RhcnQuZ3Jvb3Z5CkBAIC0xOSw3ICsxOSwxOCBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuR3JlbWxpblNlcnZlcgogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLlNldHRpbmdzCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBJTVBPUlRBTlQKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBDaGFuZ2VzIHRvIHRoaXMgZmlsZSBuZWVkIHRvIGJlIGFwcHJvcHJpYXRlbHkgcmVwbGljYXRlZCB0bworLy8KKy8vIC0gZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLnlhbWwKKy8vIC0gZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLXNlY3VyZS55YW1sCisvLworLy8gV2l0aG91dCBzdWNoIGNoYW5nZXMsIHRoZSB0ZXN0IGRvY2tlciBzZXJ2ZXIgY2FuJ3QgYmUgc3RhcnRlZCBmb3IgaW5kZXBlbmRlbnQKKy8vIHRlc3Rpbmcgd2l0aCBHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzLgorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogaWYgKEJvb2xlYW4ucGFyc2VCb29sZWFuKHNraXBUZXN0cykpIHJldHVybgogCmRpZmYgLS1naXQgYS9ncmVtbGluLXNoYWRlZC9wb20ueG1sIGIvZ3JlbWxpbi1zaGFkZWQvcG9tLnhtbAppbmRleCBlYzJkMmE2Li4yN2JhYWExIDEwMDY0NAotLS0gYS9ncmVtbGluLXNoYWRlZC9wb20ueG1sCisrKyBiL2dyZW1saW4tc2hhZGVkL3BvbS54bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tc2hhZGVkPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbiBTaGFkZWQ8L25hbWU+CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvYnJhbmNoL1JlcGVhdC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2JyYW5jaC9SZXBlYXQuZmVhdHVyZQppbmRleCAzMDRkODU2Li4zMDYxNWE1IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvYnJhbmNoL1JlcGVhdC5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9icmFuY2gvUmVwZWF0LmZlYXR1cmUKQEAgLTI0MSwzICsyNDEsMTEzIEBACiAgICAgICB8IGxvb3AgfAogICAgICAgfCBsb29wICB8CiAgICAgICB8IGxvb3AgIHwKKworU2NlbmFyaW86IGdfVl9yZXBlYXRYb3V0X3JlcGVhdFhvdXRYX3RpbWVzWDFYWF90aW1lc1gxWF9saW1pdFgxWF9wYXRoX2J5X25hbWUKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkucmVwZWF0KF9fLm91dCgpLnJlcGVhdChfXy5vdXQoKSkudGltZXMoMSkpLnRpbWVzKDEpLmxpbWl0KDEpLnBhdGgoKS5ieSgibmFtZSIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIG5leHQKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtYXJrbyB8CisgICAgICB8IGpvc2ggfAorICAgICAgfCByaXBwbGUgfAorCitTY2VuYXJpbzogZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnJlcGVhdChfXy5vdXQoImtub3dzIikpLnVudGlsKF9fLnJlcGVhdChfXy5vdXQoImNyZWF0ZWQiKSkuZW1pdChfXy5oYXMoIm5hbWUiLCAibG9wIikpKS5wYXRoKCkuYnkoIm5hbWUiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCBuZXh0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbWFya28gfAorICAgICAgfCBqb3NoIHwKKworU2NlbmFyaW86IGdfVl9yZXBlYXRYcmVwZWF0WG91dF9jcmVhdGVkWFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhYZW1pdF9sYW5nCisgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAiIiIKKyAgICBnLlYoKS5yZXBlYXQoX18ucmVwZWF0KF9fLm91dCgiY3JlYXRlZCIpKS51bnRpbChfXy5oYXMoIm5hbWUiLCAicmlwcGxlIikpKS5lbWl0KCkudmFsdWVzKCJsYW5nIikKKyAgICAiIiIKKyAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgfCByZXN1bHQgfAorICAgIHwgamF2YSB8CisKK1NjZW5hcmlvOiBnX1ZfdW50aWxYY29uc3RhbnRYdHJ1ZVhYX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcKKyAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICIiIgorICAgIGcuVigpLnVudGlsKF9fLmNvbnN0YW50KHRydWUpKS5yZXBlYXQoX18ucmVwZWF0KF9fLm91dCgiY3JlYXRlZCIpKS51bnRpbChfXy5oYXMoIm5hbWUiLCAicmlwcGxlIikpKS5lbWl0KCkudmFsdWVzKCJsYW5nIikKKyAgICAiIiIKKyAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgfCByZXN1bHQgfAorICAgIHwgamF2YSB8CisgICAgfCBqYXZhIHwKKworU2NlbmFyaW86IGdfVl9lbWl0X3JlcGVhdFhhX291dFhrbm93c19maWx0ZXJYbG9vcHNfaXNYMFhYX2xhbmcKKyAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICIiIgorICAgIGcuVigpLmVtaXQoKS5yZXBlYXQoImEiLCBfXy5vdXQoImtub3dzIikuZmlsdGVyKF9fLmxvb3BzKCJhIikuaXMoMCkpKS52YWx1ZXMoImxhbmciKQorICAgICIiIgorICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICB8IHJlc3VsdCB8CisgICAgfCBqYXZhIHwKKyAgICB8IGphdmEgfAorCitTY2VuYXJpbzogZ19WWDNYX3JlcGVhdFhib3RoWF9jcmVhdGVkWFhfdW50aWxYbG9vcHNfaXNfNDBYWGVtaXRfcmVwZWF0WGluX2tub3dzWFhfZW1pdF9sb29wc1hpc1gxWGRlZHVwX3ZhbHVlcworICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciB2M0lkIGRlZmluZWQgYXMgInZbbG9wXS5pZCIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYodjNJZCkucmVwZWF0KF9fLmJvdGgoImNyZWF0ZWQiKSkudW50aWwoX18ubG9vcHMoKS5pcyg0MCkpLmVtaXQoX18ucmVwZWF0KF9fLmluKCJrbm93cyIpKS5lbWl0KF9fLmxvb3BzKCkuaXMoMSkpKS5kZWR1cCgpLnZhbHVlcygibmFtZSIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICAgIHwgcmVzdWx0IHwKKyAgICAgICAgfCBqb3NoIHwKKyAgICAgICAgfCBsb3AgfAorICAgICAgICB8IHJpcHBsZSB8CisKK1NjZW5hcmlvOiBnX1ZYMVhfcmVwZWF0WHJlcGVhdFh1bmlvblhvdXRfdXNlc19vdXRfdHJhdmVyc2VzWFhfd2hlcmVYbG9vcHNfaXNYMFhfdGltZXNYMVhfdGltZVgyWF9uYW1lCisgICAgR2l2ZW4gdGhlIGNyZXcgZ3JhcGgKKyAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciB2MUlkIGRlZmluZWQgYXMgInZbbWFya29dLmlkIgorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVih2MUlkKS5yZXBlYXQoX18ucmVwZWF0KF9fLnVuaW9uKF9fLm91dCgidXNlcyIpLCBfXy5vdXQoInRyYXZlcnNlcyIpKS53aGVyZShfXy5sb29wcygpLmlzKDApKSkudGltZXMoMSkpLnRpbWVzKDIpLnZhbHVlcygibmFtZSIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICAgIHwgcmVzdWx0IHwKKyAgICAgICAgfCB0aW5rZXJncmFwaCB8CisKK1NjZW5hcmlvOiBnX1ZfcmVwZWF0WGFfb3V0WGtub3dzX3JlcGVhdFhiX291dFhjcmVhdGVkWF9maWx0ZXJYbG9vcHNfaXNYMFhYX2VtaXRfbGFuZworICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgIiIiCisgICAgZy5WKCkucmVwZWF0KCJhIiwgX18ub3V0KCJrbm93cyIpLnJlcGVhdCgiYiIsIF9fLm91dCgiY3JlYXRlZCIpLmZpbHRlcihfXy5sb29wcygiYSIpLmlzKDApKSkuZW1pdCgpKS5lbWl0KCkudmFsdWVzKCJsYW5nIikKKyAgICAiIiIKKyAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgfCByZXN1bHQgfAorICAgIHwgamF2YSB8CisgICAgfCBqYXZhIHwKKworU2NlbmFyaW86IGdfVlg2WF9yZXBlYXRYYV9ib3RoWGNyZWF0ZWRYX3NpbXBsZVBhdGhYX2VtaXRYcmVwZWF0WGJfYm90aFhrbm93c1hYX3VudGlsWGxvb3BzWGJYX2FzWGJfd2hlcmVYbG9vcHNYYVhfYXNYYlhfaGFzWG5hbWVfdmFkYXNYWF9kZWR1cF9uYW1lCisgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjZJZCBkZWZpbmVkIGFzICJ2W3BldGVyXS5pZCIKKyAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAiIiIKKyAgICBnLlYodjZJZCkucmVwZWF0KCJhIiwgX18uYm90aCgiY3JlYXRlZCIpLnNpbXBsZVBhdGgoKSkuZW1pdChfXy5yZXBlYXQoImIiLCBfXy5ib3RoKCJrbm93cyIpKS51bnRpbChfXy5sb29wcygiYiIpLmFzKCJiIikud2hlcmUoX18ubG9vcHMoImEiKS5hcygiYiIpKSkuaGFzKCJuYW1lIiwgInZhZGFzIikpLmRlZHVwKCkudmFsdWVzKCJuYW1lIikKKyAgICAiIiIKKyAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgfCByZXN1bHQgfAorICAgIHwgam9zaCB8CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvYnJhbmNoL1VuaW9uLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvYnJhbmNoL1VuaW9uLmZlYXR1cmUKaW5kZXggODMzMThmNi4uOGY1Mjk3ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2JyYW5jaC9Vbmlvbi5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9icmFuY2gvVW5pb24uZmVhdHVyZQpAQCAtMTM1LDcgKzEzNSw2IEBACiAgICAgICB8IGRbM10ubCAgIHwKICAgICAgIHwgZFswXS5sICAgfAogICAgICAgfCBkWzEuOV0uZCB8Ci0gICAgICB8IGRbMF0uaSAgIHwKICAgICAgIHwgZFswXS5sICAgfAogICAgICAgfCBkWzFdLmwgICB8CiAKQEAgLTE1MSw0ICsxNTAsNCBAQAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCiAgICAgICB8IHJlc3VsdCB8CiAgICAgICB8IGRbMV0ubCAgIHwKLSAgICAgIHwgZFsxXS5sICAgfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHwgZFsxXS5sICAgfApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2ZpbHRlci9BbmQuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvQW5kLmZlYXR1cmUKaW5kZXggMWU4NzMyZS4uZjEzNzg0MSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2ZpbHRlci9BbmQuZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0FuZC5mZWF0dXJlCkBAIC02Niw0ICs2NiwxNSBAQAogICAgICAgfCB2W2xvcF0gfAogICAgICAgfCB2W2pvc2hdIHwKICAgICAgIHwgdltyaXBwbGVdIHwKLSAgICAgIHwgdltwZXRlcl0gIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICB8IHZbcGV0ZXJdICB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9tYXJrb1hfYW5kX2hhc1huYW1lX21hcmtvWF9hbmRfaGFzWG5hbWVfbWFya29YCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2W21hcmtvXSB8CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0Ryb3AuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvRHJvcC5mZWF0dXJlCmluZGV4IDc1M2IzNzcuLjE0NDM5OWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvRHJvcC5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvRHJvcC5mZWF0dXJlCkBAIC02MCw0ICs2MCw0NSBAQAogICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKICAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gMiBmb3IgY291bnQgb2YgImcuVigpIgotICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiAwIGZvciBjb3VudCBvZiAiZy5WKCkucHJvcGVydGllcygpIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gMCBmb3IgY291bnQgb2YgImcuVigpLnByb3BlcnRpZXMoKSIKKworICBTY2VuYXJpbzogZ19FX3Byb3BlcnRpZXNYd2VpZ2h0WF9kcm9wCisgICAgR2l2ZW4gdGhlIGVtcHR5IGdyYXBoCisgICAgQW5kIHRoZSBncmFwaCBpbml0aWFsaXplciBvZgorICAgICAgIiIiCisgICAgICBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KFQuaWQsIDEpLnByb3BlcnR5KCJuYW1lIiwgIm1hcmtvIikucHJvcGVydHkoImFnZSIsIDI5KS5hcygibWFya28iKS4KKyAgICAgICAgYWRkVigicGVyc29uIikucHJvcGVydHkoVC5pZCwgMikucHJvcGVydHkoIm5hbWUiLCAidmFkYXMiKS5wcm9wZXJ0eSgiYWdlIiwgMjcpLmFzKCJ2YWRhcyIpLgorICAgICAgICBhZGRWKCJzb2Z0d2FyZSIpLnByb3BlcnR5KFQuaWQsIDMpLnByb3BlcnR5KCJuYW1lIiwgImxvcCIpLnByb3BlcnR5KCJsYW5nIiwgImphdmEiKS5hcygibG9wIikuCisgICAgICAgIGFkZFYoInBlcnNvbiIpLnByb3BlcnR5KFQuaWQsIDQpLnByb3BlcnR5KCJuYW1lIiwiam9zaCIpLnByb3BlcnR5KCJhZ2UiLCAzMikuYXMoImpvc2giKS4KKyAgICAgICAgYWRkVigic29mdHdhcmUiKS5wcm9wZXJ0eShULmlkLCA1KS5wcm9wZXJ0eSgibmFtZSIsICJyaXBwbGUiKS5wcm9wZXJ0eSgibGFuZyIsICJqYXZhIikuYXMoInJpcHBsZSIpLgorICAgICAgICBhZGRWKCJwZXJzb24iKS5wcm9wZXJ0eShULmlkLCA2KS5wcm9wZXJ0eSgibmFtZSIsICJwZXRlciIpLnByb3BlcnR5KCJhZ2UiLCAzNSkuYXMoJ3BldGVyJykuCisgICAgICAgIGFkZEUoImtub3dzIikuZnJvbSgibWFya28iKS50bygidmFkYXMiKS5wcm9wZXJ0eShULmlkLCA3KS5wcm9wZXJ0eSgid2VpZ2h0IiwgMC41KS4KKyAgICAgICAgYWRkRSgia25vd3MiKS5mcm9tKCJtYXJrbyIpLnRvKCJqb3NoIikucHJvcGVydHkoVC5pZCwgOCkucHJvcGVydHkoIndlaWdodCIsIDEuMCkuCisgICAgICAgIGFkZEUoImNyZWF0ZWQiKS5mcm9tKCJtYXJrbyIpLnRvKCJsb3AiKS5wcm9wZXJ0eShULmlkLCA5KS5wcm9wZXJ0eSgid2VpZ2h0IiwgMC40KS4KKyAgICAgICAgYWRkRSgiY3JlYXRlZCIpLmZyb20oImpvc2giKS50bygicmlwcGxlIikucHJvcGVydHkoVC5pZCwgMTApLnByb3BlcnR5KCJ3ZWlnaHQiLCAxLjApLgorICAgICAgICBhZGRFKCJjcmVhdGVkIikuZnJvbSgiam9zaCIpLnRvKCJsb3AiKS5wcm9wZXJ0eShULmlkLCAxMSkucHJvcGVydHkoIndlaWdodCIsIDAuNCkuCisgICAgICAgIGFkZEUoImNyZWF0ZWQiKS5mcm9tKCJwZXRlciIpLnRvKCJsb3AiKS5wcm9wZXJ0eShULmlkLCAxMikucHJvcGVydHkoIndlaWdodCIsIDAuMikKKyAgICAgICIiIgorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuRSgpLnByb3BlcnRpZXMoIndlaWdodCIpLmRyb3AoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiAwIGZvciBjb3VudCBvZiAiZy5FKCkucHJvcGVydGllcygpIgorCisgIFNjZW5hcmlvOiBnX1ZfcHJvcGVydGllc19wcm9wZXJ0aWVzWHN0YXJ0VGltZVhfZHJvcAorICAgIEdpdmVuIHRoZSBlbXB0eSBncmFwaAorICAgIEFuZCB0aGUgZ3JhcGggaW5pdGlhbGl6ZXIgb2YKKyAgICAgICIiIgorICAgICAgZy5hZGRWKCkucHJvcGVydHkoIm5hbWUiLCJib2IiKS5wcm9wZXJ0eShDYXJkaW5hbGl0eS5saXN0LCAibG9jYXRpb24iLCAibnkiLCAic3RhcnRUaW1lIiwgMjAxNCwgImVuZFRpbWUiLCAyMDE2KS5wcm9wZXJ0eShDYXJkaW5hbGl0eS5saXN0LCAibG9jYXRpb24iLCAidmEiLCAic3RhcnRUaW1lIiwgMjAxNikuCisgICAgICAgIGFkZFYoKS5wcm9wZXJ0eSgibmFtZSIsImFsaWNlIikucHJvcGVydHkoQ2FyZGluYWxpdHkubGlzdCwgImxvY2F0aW9uIiwgInZhIiwgInN0YXJ0VGltZSIsIDIwMTQsICJlbmRUaW1lIiwgMjAxNikucHJvcGVydHkoQ2FyZGluYWxpdHkubGlzdCwgImxvY2F0aW9uIiwgIm55IiwgInN0YXJ0VGltZSIsIDIwMTYpCisgICAgICAiIiIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5wcm9wZXJ0aWVzKCkucHJvcGVydGllcygic3RhcnRUaW1lIikuZHJvcCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDIgZm9yIGNvdW50IG9mICJnLlYoKS5wcm9wZXJ0aWVzKCkucHJvcGVydGllcygpIgorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiAwIGZvciBjb3VudCBvZiAiZy5WKCkucHJvcGVydGllcygpLnByb3BlcnRpZXMoXCJzdGFydFRpbWVcIikiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2ZpbHRlci9IYXMuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvSGFzLmZlYXR1cmUKaW5kZXggZGRmOTk4NC4uYWRlMzI2NSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2ZpbHRlci9IYXMuZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0hhcy5mZWF0dXJlCkBAIC00MDgsMTkgKzQwOCw2IEBACiAgICAgICB8IHZbam9zaF0gfAogICAgICAgfCB2W3BldGVyXSB8CiAKLSAgU2NlbmFyaW86IGdfVl9ib3RoX2RlZHVwX3Byb3BlcnRpZXNfaGFzS2V5WGFnZVhfdmFsdWUKLSAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCi0gICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKLSAgICAiIiIKLSAgICBnLlYoKS5ib3RoKCkucHJvcGVydGllcygpLmRlZHVwKCkuaGFzS2V5KCJhZ2UiKS52YWx1ZSgpCi0gICAgIiIiCi0gICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0Ci0gICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKLSAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgZFsyOV0uaSB8Ci0gICAgICB8IGRbMjddLmkgfAotICAgICAgfCBkWzMyXS5pIHwKLSAgICAgIHwgZFszNV0uaSB8CiAgIFNjZW5hcmlvOiBnX1ZfaGFzWGFnZV93aXRoaW5YMjdYX2NvdW50CiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCkBAIC00NjUsNiArNDUyLDE5IEBACiAgICAgICB8IHJlc3VsdCB8CiAgICAgICB8IGRbMl0ubCB8CiAKKyAgU2NlbmFyaW86IGdfVl9ib3RoX2RlZHVwX3Byb3BlcnRpZXNfaGFzS2V5WGFnZVhfdmFsdWUKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAiIiIKKyAgICBnLlYoKS5ib3RoKCkucHJvcGVydGllcygpLmRlZHVwKCkuaGFzS2V5KCJhZ2UiKS52YWx1ZSgpCisgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgZFsyOV0uaSB8CisgICAgICB8IGRbMjddLmkgfAorICAgICAgfCBkWzMyXS5pIHwKKyAgICAgIHwgZFszNV0uaSB8CiAKICAgU2NlbmFyaW86IGdfVl9ib3RoX2RlZHVwX3Byb3BlcnRpZXNfaGFzS2V5WGFnZVhfaGFzVmFsdWVYZ3RYMzBYWF92YWx1ZQogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKQEAgLTQ3OSw2ICs0NzksMzIgQEAKICAgICAgIHwgZFszMl0uaSB8CiAgICAgICB8IGRbMzVdLmkgfAogCisgIFNjZW5hcmlvOiBnX1ZfYm90aEVfcHJvcGVydGllc19kZWR1cF9oYXNLZXlYd2VpZ2h0WF92YWx1ZQorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICIiIgorICAgIGcuVigpLmJvdGhFKCkucHJvcGVydGllcygpLmRlZHVwKCkuaGFzS2V5KCJ3ZWlnaHQiKS52YWx1ZSgpCisgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgZFswLjVdLmQgfAorICAgICAgfCBkWzEuMF0uZCB8CisgICAgICB8IGRbMC40XS5kIHwKKyAgICAgIHwgZFswLjJdLmQgfAorCisgIFNjZW5hcmlvOiBnX1ZfYm90aEVfcHJvcGVydGllc19kZWR1cF9oYXNLZXlYd2VpZ2h0WF9oYXNWYWx1ZVhsdFgwZDNYWF92YWx1ZQorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciBkMGQzIGRlZmluZWQgYXMgImRbMC4zXS5kIgorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgIiIiCisgICAgZy5WKCkuYm90aEUoKS5wcm9wZXJ0aWVzKCkuZGVkdXAoKS5oYXNLZXkoIndlaWdodCIpLmhhc1ZhbHVlKFAubHQoMC4zKSkudmFsdWUoKQorICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGRbMC4yXS5kIHwKKwogICBTY2VuYXJpbzogZ19WX2hhc05vdFhhZ2VYX25hbWUKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKQEAgLTU1Nyw0ICs1ODMsMTEzIEBACiAgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CiAgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKICAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgZFs2XS5sIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICB8IGRbNl0ubCB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9jb250YWluaW5nWGFya1hYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsIFRleHRQLmNvbnRhaW5pbmcoImFyayIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlttYXJrb10gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfc3RhcnRpbmdXaXRoWG1hclhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsIFRleHRQLnN0YXJ0aW5nV2l0aCgibWFyIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2W21hcmtvXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9lbmRpbmdXaXRoWGFzWFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuaGFzKCJuYW1lIiwgVGV4dFAuZW5kaW5nV2l0aCgiYXMiKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IHZbdmFkYXNdIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1hwZXJzb25fbmFtZV9jb250YWluaW5nWG9YX2FuZFhsdFhtWFhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygicGVyc29uIiwgIm5hbWUiLCBUZXh0UC5jb250YWluaW5nKCJvIikuYW5kKFAubHQoIm0iKSkpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2W2pvc2hdIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX2d0WG1YX2FuZFhjb250YWluaW5nWG9YWFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuaGFzKCJuYW1lIiwgUC5ndCgibSIpLmFuZChUZXh0UC5jb250YWluaW5nKCJvIikpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlttYXJrb10gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfbm90X2NvbnRhaW5pbmdYYXJrWFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuaGFzKCJuYW1lIiwgVGV4dFAubm90Q29udGFpbmluZygiYXJrIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2W3ZhZGFzXSB8CisgICAgICB8IHZbbG9wXSB8CisgICAgICB8IHZbam9zaF0gfAorICAgICAgfCB2W3JpcHBsZV0gfAorICAgICAgfCB2W3BldGVyXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9ub3Rfc3RhcnRpbmdXaXRoWG1hclhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsIFRleHRQLm5vdFN0YXJ0aW5nV2l0aCgibWFyIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2W3ZhZGFzXSB8CisgICAgICB8IHZbbG9wXSB8CisgICAgICB8IHZbam9zaF0gfAorICAgICAgfCB2W3JpcHBsZV0gfAorICAgICAgfCB2W3BldGVyXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9ub3RfZW5kaW5nV2l0aFhhc1hYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsIFRleHRQLm5vdEVuZGluZ1dpdGgoImFzIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2W21hcmtvXSB8CisgICAgICB8IHZbbG9wXSB8CisgICAgICB8IHZbam9zaF0gfAorICAgICAgfCB2W3JpcHBsZV0gfAorICAgICAgfCB2W3BldGVyXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYcF9uZXFYdlhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygicCIsIFAubmVxKCJ2IikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9BZGRWZXJ0ZXguZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvQWRkVmVydGV4LmZlYXR1cmUKaW5kZXggNzYxOTE2ZS4uYTYwZmVmYiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9BZGRWZXJ0ZXguZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0FkZFZlcnRleC5mZWF0dXJlCkBAIC0zMzYsNyArMzM2LDcgQEAKICAgICAgIHwgbWFya28gfAogICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiAyIGZvciBjb3VudCBvZiAiZy5WKCkuaGFzKFwibmFtZVwiLFwibWFya29cIikiCiAKLSAgU2NlbmFyaW86IGdfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBYdHJ1ZVgKKyAgU2NlbmFyaW86IGdfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBfd2l0aFh0b2tlbnNYCiAgICAgR2l2ZW4gdGhlIGVtcHR5IGdyYXBoCiAgICAgQW5kIHRoZSBncmFwaCBpbml0aWFsaXplciBvZgogICAgICAgIiIiCkBAIC0zNTUsNyArMzU1LDcgQEAKICAgICAgICIiIgogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCiAgICAgICAiIiIKLSAgICAgIGcuVigpLmFzKCJhIikuaGFzKCJuYW1lIiwgIm1hcmtvIikub3V0KCJjcmVhdGVkIikuYXMoImIiKS5hZGRWKF9fLnNlbGVjdCgiYSIpLmxhYmVsKCkpLnByb3BlcnR5KCJ0ZXN0IiwgX18uc2VsZWN0KCJiIikubGFiZWwoKSkudmFsdWVNYXAodHJ1ZSkKKyAgICAgIGcuVigpLmFzKCJhIikuaGFzKCJuYW1lIiwgIm1hcmtvIikub3V0KCJjcmVhdGVkIikuYXMoImIiKS5hZGRWKF9fLnNlbGVjdCgiYSIpLmxhYmVsKCkpLnByb3BlcnR5KCJ0ZXN0IiwgX18uc2VsZWN0KCJiIikubGFiZWwoKSkudmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucykKICAgICAgICIiIgogICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgaGF2ZSBhIGNvdW50IG9mIDEKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvQ29ubmVjdGVkQ29tcG9uZW50LmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0Nvbm5lY3RlZENvbXBvbmVudC5mZWF0dXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOTU0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0Nvbm5lY3RlZENvbXBvbmVudC5mZWF0dXJlCkBAIC0wLDAgKzEsNzYgQEAKKyMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisjICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyMgdW5kZXIgdGhlIExpY2Vuc2UuCisKK0ZlYXR1cmU6IFN0ZXAgLSBjb25uZWN0ZWRDb21wb25lbnQoKQorICAgICAgICAgICAgICAgIAorICBTY2VuYXJpbzogZ19WX2Nvbm5lY3RlZENvbXBvbmVudF9oYXNYY29tcG9uZW50WAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5jb25uZWN0ZWRDb21wb25lbnQoKS5oYXMoImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5jb21wb25lbnQiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlttYXJrb10gfAorICAgICAgfCB2W3ZhZGFzXSB8CisgICAgICB8IHZbbG9wXSB8CisgICAgICB8IHZbam9zaF0gfAorICAgICAgfCB2W3JpcHBsZV0gfAorICAgICAgfCB2W3BldGVyXSB8CisKKyAgU2NlbmFyaW86IGdfVl9kZWR1cF9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuZGVkdXAoKS5jb25uZWN0ZWRDb21wb25lbnQoKS5oYXMoImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5jb21wb25lbnQiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlttYXJrb10gfAorICAgICAgfCB2W3ZhZGFzXSB8CisgICAgICB8IHZbbG9wXSB8CisgICAgICB8IHZbam9zaF0gfAorICAgICAgfCB2W3JpcHBsZV0gfAorICAgICAgfCB2W3BldGVyXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfY29ubmVjdGVkQ29tcG9uZW50X3Byb2plY3RfYnlYbmFtZVhfYnlYY29tcG9uZW50WAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5jb25uZWN0ZWRDb21wb25lbnQoKS5wcm9qZWN0KCJuYW1lIiwiY29tcG9uZW50IikuYnkoIm5hbWUiKS5ieSgiZ3JlbWxpbi5jb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLmNvbXBvbmVudCIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtW3sibmFtZSI6ICJsb3AiLCAiY29tcG9uZW50IjogIjEifV0gfAorICAgICAgfCBtW3sibmFtZSI6ICJyaXBwbGUiLCAiY29tcG9uZW50IjogIjEifV0gfAorCisgIFNjZW5hcmlvOiBnX1ZfY29ubmVjdGVkQ29tcG9uZW50X3dpdGhYRURHRVNfYm90aEVYa25vd3NYWF93aXRoWFBST1BFUlRZX05BTUVfY2x1c3RlclhfcHJvamVjdF9ieVhuYW1lWF9ieVhjbHVzdGVyWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXNMYWJlbCgicGVyc29uIikuY29ubmVjdGVkQ29tcG9uZW50KCkud2l0aCgifnRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQuZWRnZXMiLCBfXy5ib3RoRSgia25vd3MiKSkud2l0aCgifnRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQucHJvcGVydHlOYW1lIiwgImNsdXN0ZXIiKS5wcm9qZWN0KCJuYW1lIiwiY2x1c3RlciIpLmJ5KCJuYW1lIikuYnkoImNsdXN0ZXIiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7Im5hbWUiOiAibWFya28iLCAiY2x1c3RlciI6ICIxIn1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiAidmFkYXMiLCAiY2x1c3RlciI6ICIxIn1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiAiam9zaCIsICJjbHVzdGVyIjogIjEifV0gfAorICAgICAgfCBtW3sibmFtZSI6ICJwZXRlciIsICJjbHVzdGVyIjogIjYifV0gfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvRWxlbWVudE1hcC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9FbGVtZW50TWFwLmZlYXR1cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVkZTY4OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvRWxlbWVudE1hcC5mZWF0dXJlCkBAIC0wLDAgKzEsNjIgQEAKKyMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisjICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyMgdW5kZXIgdGhlIExpY2Vuc2UuCisKK0ZlYXR1cmU6IFN0ZXAgLSBlbGVtZW50TWFwKCkKKworICBTY2VuYXJpbzogZ19WX2VsZW1lbnRNYXAKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuZWxlbWVudE1hcCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtW3sidFtpZF0iOiAidlttYXJrb10uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiAibWFya28iLCAiYWdlIjogMjl9XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2pvc2hdLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogImpvc2giLCAiYWdlIjogMzJ9XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3BldGVyXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6ICJwZXRlciIsICJhZ2UiOiAzNX1dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbdmFkYXNdLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogInZhZGFzIiwgImFnZSI6IDI3fV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltsb3BdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiAibG9wIiwgImxhbmciOiAiamF2YSJ9XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3JpcHBsZV0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6ICJyaXBwbGUiLCAibGFuZyI6ICJqYXZhIn1dIHwKKworICBTY2VuYXJpbzogZ19WX2VsZW1lbnRNYXBYbmFtZV9hZ2VYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmVsZW1lbnRNYXAoIm5hbWUiLCAiYWdlIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W21hcmtvXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6ICJtYXJrbyIsICJhZ2UiOiAyOX1dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbam9zaF0uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiAiam9zaCIsICJhZ2UiOiAzMn1dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbcGV0ZXJdLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogInBldGVyIiwgImFnZSI6IDM1fV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidlt2YWRhc10uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiAidmFkYXMiLCAiYWdlIjogMjd9XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2xvcF0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6ICJsb3AifV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltyaXBwbGVdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiAicmlwcGxlIn1dIHwKKworICBTY2VuYXJpbzogZ19FWDExWF9lbGVtZW50TWFwCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB1c2luZyB0aGUgcGFyYW1ldGVyIGUxMUlkIGRlZmluZWQgYXMgImVbam9zaC1jcmVhdGVkLT5sb3BdLmlkIgorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgIiIiCisgICAgICBnLkUoZTExSWQpLmVsZW1lbnRNYXAoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7InRbaWRdIjogImVbam9zaC1jcmVhdGVkLT5sb3BdLmlkIiwgInRbbGFiZWxdIjogImNyZWF0ZWQiLCAid2VpZ2h0IjogImRbMC40XS5kIiwgIkRbT1VUXSI6ICJtW3tcXCJ0W2lkXVxcIjogXFwidltqb3NoXS5pZFxcIiwgXFwidFtsYWJlbF1cXCI6IFxcInBlcnNvblxcIn1dIiwgIkRbSU5dIjogIm1be1xcInRbaWRdXFwiOiBcXCJ2W2xvcF0uaWRcXCIsIFxcInRbbGFiZWxdXFwiOiBcXCJzb2Z0d2FyZVxcIn1dIn1dIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0luZGV4LmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0luZGV4LmZlYXR1cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRjMTkwYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvSW5kZXguZmVhdHVyZQpAQCAtMCwwICsxLDY1IEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitGZWF0dXJlOiBTdGVwIC0gaW5kZXgoKQorCisgIFNjZW5hcmlvOiBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2luZGV4X3VuZm9sZAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5pbmRleCgpLnVuZm9sZCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBsW3ZbbG9wXSxkWzBdLmldIHwKKyAgICAgIHwgbFt2W3JpcHBsZV0sZFswXS5pXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfb3JkZXJfYnlYbmFtZVhfaW5kZXhfd2l0aFhtYXBYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLm9yZGVyKCkuYnkoIm5hbWUiKS5pbmRleCgpLndpdGgoV2l0aE9wdGlvbnMuaW5kZXhlciwgV2l0aE9wdGlvbnMubWFwKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBvcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJkWzBdLmkiOiAidltsb3BdIn1dIHwKKyAgICAgIHwgbVt7ImRbMF0uaSI6ICJ2W3JpcHBsZV0ifV0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfdW5mb2xkX29yZGVyX2J5WHRhaWxYbG9jYWxfMVhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlcygibmFtZSIpLmZvbGQoKS5vcmRlcihTY29wZS5sb2NhbCkuaW5kZXgoKS51bmZvbGQoKS5vcmRlcigpLmJ5KF9fLnRhaWwoU2NvcGUubG9jYWwsIDEpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbFtsb3AsZFswXS5pXSB8CisgICAgICB8IGxbcmlwcGxlLGRbMV0uaV0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzTGFiZWxYcGVyc29uWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYX2luZGV4X3dpdGhYbWFwWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJuYW1lIikuZm9sZCgpLm9yZGVyKFNjb3BlLmxvY2FsKS5pbmRleCgpLndpdGgoV2l0aE9wdGlvbnMuaW5kZXhlciwgV2l0aE9wdGlvbnMubWFwKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7ImRbMF0uaSI6ICJqb3NoIiwgImRbMV0uaSI6ICJtYXJrbyIsICJkWzJdLmkiOiAicGV0ZXIiLCAiZFszXS5pIjogInZhZGFzIn1dIHwKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWF4LmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL01heC5mZWF0dXJlCmluZGV4IGFkMGEyNzAuLjQ0ZDk2NDAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWF4LmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NYXguZmVhdHVyZQpAQCAtMjgsNiArMjgsNTcgQEAKICAgICAgIHwgcmVzdWx0IHwKICAgICAgIHwgZFszNV0uaSB8CiAKKyAgU2NlbmFyaW86IGdfVl9mb29fbWF4CisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiZm9vIikubWF4KCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKworICBTY2VuYXJpbzogZ19WX25hbWVfbWF4CisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygibmFtZSIpLm1heCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2YWRhcyB8CisKKyAgU2NlbmFyaW86IGdfVl9hZ2VfZm9sZF9tYXhYbG9jYWxYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiYWdlIikuZm9sZCgpLm1heChTY29wZS5sb2NhbCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGRbMzVdLmkgfAorCisgIFNjZW5hcmlvOiBnX1ZfZm9vX2ZvbGRfbWF4WGxvY2FsWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImZvbyIpLmZvbGQoKS5tYXgoU2NvcGUubG9jYWwpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisKKyAgU2NlbmFyaW86IGdfVl9uYW1lX2ZvbGRfbWF4WGxvY2FsWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkubWF4KFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdmFkYXMgfAorCiAgIFNjZW5hcmlvOiBnX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9tYXgKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWVhbi5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NZWFuLmZlYXR1cmUKaW5kZXggYjEwOTM1Ni4uZGMyOGVjYiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NZWFuLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NZWFuLmZlYXR1cmUKQEAgLTI4LDYgKzI4LDM1IEBACiAgICAgICB8IHJlc3VsdCB8CiAgICAgICB8IGRbMzAuNzVdLmQgfAogCisgIFNjZW5hcmlvOiBnX1ZfZm9vX21lYW4KKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJmb28iKS5tZWFuKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKworICBTY2VuYXJpbzogZ19WX2FnZV9mb2xkX21lYW5YbG9jYWxYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiYWdlIikuZm9sZCgpLm1lYW4oU2NvcGUubG9jYWwpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBkWzMwLjc1XS5kIHwKKworICBTY2VuYXJpbzogZ19WX2Zvb19mb2xkX21lYW5YbG9jYWxYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiZm9vIikuZm9sZCgpLm1lYW4oU2NvcGUubG9jYWwpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisKICAgU2NlbmFyaW86IGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfZ3JvdXBfYnlYbmFtZVhfYnlYYm90aEVfd2VpZ2h0X21lYW5YCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCkBAIC0zNyw0ICs2Niw0IEBACiAgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CiAgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKICAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgbVt7InJpcHBsZSI6ImRbMS4wXS5kIiwibG9wIjoiZFswLjMzMzMzMzMzMzMzMzMzMzNdLmQifV0gfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHwgbVt7InJpcHBsZSI6ImRbMS4wXS5kIiwibG9wIjoiZFswLjMzMzMzMzMzMzMzMzMzMzNdLmQifV0gfApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NaW4uZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWluLmZlYXR1cmUKaW5kZXggZDc3ZTlmMy4uZDE1ZWZmNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NaW4uZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL01pbi5mZWF0dXJlCkBAIC0yOCw2ICsyOCw1NyBAQAogICAgICAgfCByZXN1bHQgfAogICAgICAgfCBkWzI3XS5pIHwKIAorICBTY2VuYXJpbzogZ19WX2Zvb19taW4KKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJmb28iKS5taW4oKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorCisgIFNjZW5hcmlvOiBnX1ZfbmFtZV9taW4KKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJuYW1lIikubWluKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGpvc2ggfAorCisgIFNjZW5hcmlvOiBnX1ZfYWdlX2ZvbGRfbWluWGxvY2FsWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImFnZSIpLmZvbGQoKS5taW4oU2NvcGUubG9jYWwpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBkWzI3XS5pIHwKKworICBTY2VuYXJpbzogZ19WX2Zvb19mb2xkX21pblhsb2NhbFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJmb28iKS5mb2xkKCkubWluKFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorCisgIFNjZW5hcmlvOiBnX1ZfbmFtZV9mb2xkX21pblhsb2NhbFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJuYW1lIikuZm9sZCgpLm1pbihTY29wZS5sb2NhbCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGpvc2ggfAorCiAgIFNjZW5hcmlvOiBnX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9taW4KICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvT3JkZXIuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvT3JkZXIuZmVhdHVyZQppbmRleCA4ZGViYzRmLi42YTA2ODkwIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL09yZGVyLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9PcmRlci5mZWF0dXJlCkBAIC0yMjQsMTMgKzIyNCwxMyBAQAogICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgb3JkZXJlZAogICAgICAgfCByZXN1bHQgfAotICAgICAgfCBtW3sidmFkYXMiOiJkWzBdLmkiLCJwZXRlciI6ImRbMC4yXS5kIiwiam9zaCI6ImRbMS40XS5kIiwibWFya28iOiJkWzEuOV0uZCJ9XSB8CisgICAgICB8IG1beyJwZXRlciI6ImRbMC4yXS5kIiwiam9zaCI6ImRbMS40XS5kIiwibWFya28iOiJkWzEuOV0uZCJ9XSB8CiAKLSAgU2NlbmFyaW86IGdfVl9sb2NhbFhib3RoRV93ZWlnaHRfZm9sZFhfb3JkZXJfYnlYc3VtWGxvY2FsWF9kZXNjWAorICBTY2VuYXJpbzogZ19WX21hcFhib3RoRV93ZWlnaHRfZm9sZFhfb3JkZXJfYnlYc3VtWGxvY2FsWF9kZXNjWAogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKICAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgogICAgICAgIiIiCi0gICAgICBnLlYoKS5sb2NhbChfXy5ib3RoRSgpLnZhbHVlcygid2VpZ2h0IikuZm9sZCgpKS5vcmRlcigpLmJ5KF9fLnN1bShTY29wZS5sb2NhbCksIE9yZGVyLmRlc2MpCisgICAgICBnLlYoKS5tYXAoX18uYm90aEUoKS52YWx1ZXMoIndlaWdodCIpLmZvbGQoKSkub3JkZXIoKS5ieShfXy5zdW0oU2NvcGUubG9jYWwpLCBPcmRlci5kZXNjKQogICAgICAgIiIiCiAgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CiAgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBvcmRlcmVkCkBAIC0yNjUsNyArMjY1LDYgQEAKICAgICAgIHwgbVt7Im1hcmtvIjoiZFsxLjldLmQifV0gIHwKICAgICAgIHwgbVt7Impvc2giOiJkWzEuNF0uZCJ9XSAgfAogICAgICAgfCBtW3sicGV0ZXIiOiJkWzAuMl0uZCJ9XSAgfAotICAgICAgfCBtW3sidmFkYXMiOiJkWzBdLmkifV0gIHwKIAogICBTY2VuYXJpbzogZ19WX2FzWHZYX21hcFhib3RoRV93ZWlnaHRfZm9sZFhfc3VtWGxvY2FsWF9hc1hzWF9zZWxlY3RYdl9zWF9vcmRlcl9ieVhzZWxlY3RYc1hfZGVzY1gKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCkBAIC0zNjksMTcgKzM2OCwxNyBAQAogICAgICAgVE9ETwogICAgICAgIiIiCiAKLSAgU2NlbmFyaW86IGdfVlgxWF92YWx1ZU1hcFh0cnVlWF9vcmRlclhsb2NhbFhfYnlYa2V5c19kZXNjWHVuZm9sZAorICBTY2VuYXJpbzogZ19WWDFYX2VsZW1lbnRNYXBfb3JkZXJYbG9jYWxYX2J5WGtleXNfZGVzY1h1bmZvbGQKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjFJZCBkZWZpbmVkIGFzICJ2W21hcmtvXS5pZCIKICAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgogICAgICAgIiIiCi0gICAgICBnLlYodjFJZCkudmFsdWVNYXAodHJ1ZSkub3JkZXIoU2NvcGUubG9jYWwpLmJ5KENvbHVtbi5rZXlzLCBPcmRlci5kZXNjKS51bmZvbGQoKQorICAgICAgZy5WKHYxSWQpLmVsZW1lbnRNYXAoKS5vcmRlcihTY29wZS5sb2NhbCkuYnkoQ29sdW1uLmtleXMsIE9yZGVyLmRlc2MpLnVuZm9sZCgpCiAgICAgICAiIiIKICAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIG9yZGVyZWQKICAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgbVt7Im5hbWUiOlsibWFya28iXX1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiJtYXJrbyJ9XSB8CiAgICAgICB8IG1beyJ0W2xhYmVsXSI6InBlcnNvbiJ9XSB8CiAgICAgICB8IG1beyJ0W2lkXSI6InZbbWFya29dLmlkIn1dIHwKLSAgICAgIHwgbVt7ImFnZSI6WzI5XX1dIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICB8IG1beyJhZ2UiOjI5fV0gfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUGF0aC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9QYXRoLmZlYXR1cmUKaW5kZXggYjBjYjlkZC4uMGJiNzU3MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9QYXRoLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9QYXRoLmZlYXR1cmUKQEAgLTE1LDcgKzE1LDcgQEAKICMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwogIyB1bmRlciB0aGUgTGljZW5zZS4KIAotRmVhdHVyZTogU3RlcCAtIGNvdW50KCkKK0ZlYXR1cmU6IFN0ZXAgLSBwYXRoKCkKIAogICBTY2VuYXJpbzogZ19WWDFYX25hbWVfcGF0aAogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUGVlclByZXNzdXJlLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1BlZXJQcmVzc3VyZS5mZWF0dXJlCmluZGV4IGRkMDg4MDYuLjgxY2E2ZjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUGVlclByZXNzdXJlLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9QZWVyUHJlc3N1cmUuZmVhdHVyZQpAQCAtNjAsMyArNjAsMjAgQEAKICAgICAgIHwgbVt7Im5hbWUiOiBbImpvc2giXSwgImNsdXN0ZXIiOiBbNF19XSB8CiAgICAgICB8IG1beyJuYW1lIjogWyJyaXBwbGUiXSwgImNsdXN0ZXIiOiBbNF19XSB8CiAgICAgICB8IG1beyJuYW1lIjogWyJwZXRlciJdLCAiY2x1c3RlciI6IFs2XX1dIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX3dpdGhYRURHRVNfb3V0RVhfd2l0aFhQUk9QRVJUWV9OQU1FX2NsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoIm5hbWUiLCAicmlwcGxlIikuaW4oImNyZWF0ZWQiKS5wZWVyUHJlc3N1cmUoKS53aXRoKCJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS5lZGdlcyIsX18ub3V0RSgpKS53aXRoKCJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS5wcm9wZXJ0eU5hbWUiLCAiY2x1c3RlciIpLnJlcGVhdChfXy51bmlvbihfXy5pZGVudGl0eSgpLCBfXy5ib3RoKCkpKS50aW1lcygyKS5kZWR1cCgpLnZhbHVlTWFwKCJuYW1lIiwgImNsdXN0ZXIiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7Im5hbWUiOiBbIm1hcmtvIl0sICJjbHVzdGVyIjogWzFdfV0gfAorICAgICAgfCBtW3sibmFtZSI6IFsidmFkYXMiXSwgImNsdXN0ZXIiOiBbMl19XSB8CisgICAgICB8IG1beyJuYW1lIjogWyJsb3AiXSwgImNsdXN0ZXIiOiBbNF19XSB8CisgICAgICB8IG1beyJuYW1lIjogWyJqb3NoIl0sICJjbHVzdGVyIjogWzRdfV0gfAorICAgICAgfCBtW3sibmFtZSI6IFsicmlwcGxlIl0sICJjbHVzdGVyIjogWzRdfV0gfAorICAgICAgfCBtW3sibmFtZSI6IFsicGV0ZXIiXSwgImNsdXN0ZXIiOiBbNl19XSB8CisKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUHJvamVjdC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9Qcm9qZWN0LmZlYXR1cmUKaW5kZXggODk3NDMxMi4uZjM2NjZiOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9Qcm9qZWN0LmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9Qcm9qZWN0LmZlYXR1cmUKQEAgLTUyLDQgKzUyLDIwIEBACiAgICAgICB8IGxvcCB8CiAgICAgICB8IGxvcCB8CiAgICAgICB8IGxvcCB8Ci0gICAgICB8IHJpcHBsZSB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgfCByaXBwbGUgfAorCisgIFNjZW5hcmlvOiBnX1ZfdmFsdWVNYXBfcHJvamVjdFh4WF9ieVhzZWxlY3RYbmFtZVhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlTWFwKCkucHJvamVjdCgieCIpLmJ5KF9fLnNlbGVjdCgibmFtZSIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7IngiOlsibWFya28iXX1dIHwKKyAgICAgIHwgbVt7IngiOlsiam9zaCJdfV0gfAorICAgICAgfCBtW3sieCI6WyJ2YWRhcyJdfV0gfAorICAgICAgfCBtW3sieCI6WyJwZXRlciJdfV0gfAorICAgICAgfCBtW3sieCI6WyJsb3AiXX1dIHwKKyAgICAgIHwgbVt7IngiOlsicmlwcGxlIl19XSB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9TZWxlY3QuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU2VsZWN0LmZlYXR1cmUKaW5kZXggNDY4MzQ2NC4uYmUxYTg5OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9TZWxlY3QuZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1NlbGVjdC5mZWF0dXJlCkBAIC0yMDQsNiArMjA0LDIyIEBACiAgICAgICB8IHZbcmlwcGxlXSB8CiAgICAgICB8IHZbcGV0ZXJdIHwKIAorICBTY2VuYXJpbzogZ19WWDFYX2dyb3VwWGFYX2J5WGNvbnN0YW50WGFYWF9ieVhuYW1lWF9zZWxlY3RYYVhfc2VsZWN0WGFYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB1c2luZyB0aGUgcGFyYW1ldGVyIHYxSWQgZGVmaW5lZCBhcyAidlttYXJrb10uaWQiCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKHYxSWQpLmdyb3VwKCJhIikuCisgICAgICAgICAgICAgICAgICBieShfXy5jb25zdGFudCgiYSIpKS4KKyAgICAgICAgICAgICAgICAgIGJ5KF9fLnZhbHVlcygibmFtZSIpKS4KKyAgICAgICAgYmFycmllcigpLgorICAgICAgICBzZWxlY3QoImEiKS5zZWxlY3QoImEiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbWFya28gfAorCiAgIFNjZW5hcmlvOiBnX1ZYMVhfYXNYaGVyZVhfb3V0X3NlbGVjdFhoZXJlWAogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKICAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciB2MUlkIGRlZmluZWQgYXMgInZbbWFya29dLmlkIgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9TaG9ydGVzdFBhdGguZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU2hvcnRlc3RQYXRoLmZlYXR1cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlMDFiMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU2hvcnRlc3RQYXRoLmZlYXR1cmUKQEAgLTAsMCArMSwzNjEgQEAKKyMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyMgdW5kZXIgdGhlIExpY2Vuc2UuCisKK0ZlYXR1cmU6IFN0ZXAgLSBzaG9ydGVzdFBhdGgoKQorCisgIFNjZW5hcmlvOiBnX1Zfc2hvcnRlc3RQYXRoCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLnNob3J0ZXN0UGF0aCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W2xvcF0sdltwZXRlcl1dICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdlttYXJrb10sdlt2YWRhc11dICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbcmlwcGxlXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbam9zaF0sdltyaXBwbGVdXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdltqb3NoXV0gICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W21hcmtvXSx2W3ZhZGFzXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdltwZXRlcl1dICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXSx2W3JpcHBsZV1dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbbG9wXSx2W3BldGVyXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdLHZbam9zaF0sdltyaXBwbGVdXSAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF0sdltqb3NoXV0gICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXSx2W21hcmtvXSx2W3ZhZGFzXV0gICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdLHZbbWFya29dXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF0sdltsb3BdLHZbcGV0ZXJdXSAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXSx2W2xvcF1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbWFya29dLHZbdmFkYXNdXSB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF0sdlttYXJrb11dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXV0gICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb10sdltqb3NoXSx2W3JpcHBsZV1dIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2pvc2hdXSAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbbG9wXSx2W3BldGVyXV0gICB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb10sdltsb3BdXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyAgU2NlbmFyaW86IGdfVl9ib3RoX2RlZHVwX3Nob3J0ZXN0UGF0aAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5ib3RoKCkuZGVkdXAoKS5zaG9ydGVzdFBhdGgoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdltsb3BdLHZbcGV0ZXJdXSAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbWFya29dLHZbdmFkYXNdXSAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdlttYXJrb11dICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W2pvc2hdLHZbcmlwcGxlXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdlttYXJrb10sdlt2YWRhc11dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbam9zaF0sdltyaXBwbGVdXSAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXV0gICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2xvcF0sdltwZXRlcl1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdlt2YWRhc11dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXSx2W2pvc2hdLHZbcmlwcGxlXV0gICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdLHZbam9zaF1dICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF0sdlttYXJrb10sdlt2YWRhc11dICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXSx2W21hcmtvXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbG9wXSx2W3BldGVyXV0gICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF0sdltsb3BdXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXSx2W21hcmtvXSx2W3ZhZGFzXV0gfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbWFya29dXSAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbam9zaF0sdltyaXBwbGVdXSB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb10sdltqb3NoXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2xvcF0sdltwZXRlcl1dICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbbG9wXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb11dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWQKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuc2hvcnRlc3RQYXRoKCkud2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguaW5jbHVkZUVkZ2VzIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSxlW2pvc2gtY3JlYXRlZC0+bG9wXSx2W2xvcF0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSxlW2pvc2gtY3JlYXRlZC0+bG9wXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSxlW21hcmtvLWtub3dzLT5qb3NoXSx2W21hcmtvXSxlW21hcmtvLWtub3dzLT52YWRhc10sdlt2YWRhc11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSxlW21hcmtvLWtub3dzLT5qb3NoXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLGVbam9zaC1jcmVhdGVkLT5sb3BdLHZbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPnJpcHBsZV0sdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLGVbam9zaC1jcmVhdGVkLT5sb3BdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLGVbbWFya28tY3JlYXRlZC0+bG9wXSx2W21hcmtvXSxlW21hcmtvLWtub3dzLT52YWRhc10sdlt2YWRhc11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLGVbbWFya28tY3JlYXRlZC0+bG9wXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W3BldGVyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sZVttYXJrby1jcmVhdGVkLT5sb3BdLHZbbG9wXSxlW3BldGVyLWNyZWF0ZWQtPmxvcF0sdltwZXRlcl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sZVttYXJrby1jcmVhdGVkLT5sb3BdLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sZVttYXJrby1rbm93cy0+am9zaF0sdltqb3NoXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sZVttYXJrby1rbm93cy0+am9zaF0sdltqb3NoXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbbG9wXSxlW2pvc2gtY3JlYXRlZC0+bG9wXSx2W2pvc2hdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbcmlwcGxlXV0gICB8CisgICAgICB8IHBbdltwZXRlcl0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbbG9wXSxlW2pvc2gtY3JlYXRlZC0+bG9wXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbbG9wXSxlW21hcmtvLWNyZWF0ZWQtPmxvcF0sdlttYXJrb10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbdmFkYXNdXSAgICB8CisgICAgICB8IHBbdltwZXRlcl0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbbG9wXSxlW21hcmtvLWNyZWF0ZWQtPmxvcF0sdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPmxvcF0sdltsb3BdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W3BldGVyXV0gICB8CisgICAgICB8IHBbdltyaXBwbGVdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPmxvcF0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbam9zaF0sZVttYXJrby1rbm93cy0+am9zaF0sdlttYXJrb10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbdmFkYXNdXSB8CisgICAgICB8IHBbdltyaXBwbGVdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbam9zaF0sZVttYXJrby1rbm93cy0+am9zaF0sdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbbWFya29dLGVbbWFya28tY3JlYXRlZC0+bG9wXSx2W2xvcF0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbcGV0ZXJdXSAgICB8CisgICAgICB8IHBbdlt2YWRhc10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbbWFya29dLGVbbWFya28tY3JlYXRlZC0+bG9wXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbbWFya29dLGVbbWFya28ta25vd3MtPmpvc2hdLHZbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPnJpcHBsZV0sdltyaXBwbGVdXSB8CisgICAgICB8IHBbdlt2YWRhc10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbbWFya29dLGVbbWFya28ta25vd3MtPmpvc2hdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyAgU2NlbmFyaW86IGdfVl9zaG9ydGVzdFBhdGhfZGlyZWN0aW9uWElOWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5lZGdlcyIsIERpcmVjdGlvbi5JTikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbWFya29dXSAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF1dICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbam9zaF1dICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdlttYXJrb11dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W3BldGVyXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdXSAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF0sdlttYXJrb11dIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXV0gICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXV0gICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb11dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzWG91dEVYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLnNob3J0ZXN0UGF0aCgpLndpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmVkZ2VzIiwgX18ub3V0RSgpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdltsb3BdXSAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W3JpcHBsZV1dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXSx2W3JpcHBsZV1dIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2pvc2hdXSAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbbG9wXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdlt2YWRhc11dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl1dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICB8CisKKyAgU2NlbmFyaW86IGdfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZF9lZGdlc1hvdXRFWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5zaG9ydGVzdFBhdGgoKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5pbmNsdWRlRWRnZXMiKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5lZGdlcyIsIF9fLm91dEUoKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLGVbam9zaC1jcmVhdGVkLT5sb3BdLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPnJpcHBsZV0sdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28tY3JlYXRlZC0+bG9wXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sZVttYXJrby1rbm93cy0+am9zaF0sdltqb3NoXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W3JpcHBsZV1dIHwKKyAgICAgIHwgcFt2W21hcmtvXSxlW21hcmtvLWtub3dzLT5qb3NoXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSxlW3BldGVyLWNyZWF0ZWQtPmxvcF0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoIm5hbWUiLCJtYXJrbyIpLnNob3J0ZXN0UGF0aCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXSx2W3JpcHBsZV1dIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2pvc2hdXSAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbbG9wXSx2W3BldGVyXV0gICB8CisgICAgICB8IHBbdlttYXJrb10sdltsb3BdXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W3ZhZGFzXV0gICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dXSAgICAgICAgICAgICAgICAgICB8CisKKyAgU2NlbmFyaW86IGdfVl9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX21hcmtvWFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuc2hvcnRlc3RQYXRoKCkud2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IiwgX18uaGFzKCJuYW1lIiwibWFya28iKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbWFya29dXSAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W21hcmtvXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb11dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF0sdlttYXJrb11dICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbWFya29dXSB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb11dICAgICAgICAgIHwKKworICBTY2VuYXJpbzogZ19WX3Nob3J0ZXN0UGF0aF90YXJnZXRYdmFsdWVzWG5hbWVYX2lzWG1hcmtvWFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuc2hvcnRlc3RQYXRoKCkud2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IiwgX18udmFsdWVzKCJuYW1lIikuaXMoIm1hcmtvIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W21hcmtvXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdlttYXJrb11dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdLHZbbWFya29dXSAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXSx2W21hcmtvXV0gfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dXSAgICAgICAgICB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNMYWJlbFhzb2Z0d2FyZVhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLmhhcygibmFtZSIsIm1hcmtvIikuc2hvcnRlc3RQYXRoKCkud2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IiwgX18uaGFzTGFiZWwoInNvZnR3YXJlIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXSx2W3JpcHBsZV1dIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2xvcF1dICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfam9zaFhYX2Rpc3RhbmNlWHdlaWdodFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuaGFzKCJuYW1lIiwibWFya28iKS5zaG9ydGVzdFBhdGgoKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC50YXJnZXQiLCBfXy5oYXMoIm5hbWUiLCJqb3NoIikpLgorICAgICAgICAgIHdpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmRpc3RhbmNlIiwgIndlaWdodCIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltsb3BdLHZbam9zaF1dIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX2RhbmllbFhfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9zdGVwaGVuWFhfZWRnZXNYYm90aEVYdXNlc1hYCisgICAgR2l2ZW4gdGhlIGNyZXcgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoIm5hbWUiLCJkYW5pZWwiKS5zaG9ydGVzdFBhdGgoKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC50YXJnZXQiLCBfXy5oYXMoIm5hbWUiLCJzdGVwaGVuIikpLgorICAgICAgICAgIHdpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmVkZ2VzIiwgX18uYm90aEUoInVzZXMiKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2RhbmllbF0sdltncmVtbGluXSx2W3N0ZXBoZW5dXSAgICAgfAorICAgICAgfCBwW3ZbZGFuaWVsXSx2W3RpbmtlcmdyYXBoXSx2W3N0ZXBoZW5dXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYc29uZ19uYW1lX01JR0hUX0FTX1dFTExYX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWHNvbmdfbmFtZV9NQVlCRV9ZT1VfS05PV19IT1dfSV9GRUVMWFhfZWRnZXNYb3V0RVhmb2xsb3dlZEJ5WFhfZGlzdGFuY2VYd2VpZ2h0WAorICAgIEdpdmVuIHRoZSBncmF0ZWZ1bCBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLmhhcygic29uZyIsIm5hbWUiLCJNSUdIVCBBUyBXRUxMIikuCisgICAgICAgIHNob3J0ZXN0UGF0aCgpLgorICAgICAgICAgIHdpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLnRhcmdldCIsIF9fLmhhcygic29uZyIsIm5hbWUiLCJNQVlCRSBZT1UgS05PVyBIT1cgSSBGRUVMIikpLgorICAgICAgICAgIHdpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmVkZ2VzIiwgX18ub3V0RSgiZm9sbG93ZWRCeSIpKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5kaXN0YW5jZSIsICJ3ZWlnaHQiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbTUlHSFQgQVMgV0VMTF0sdltEUlVNU10sdltNQVlCRSBZT1UgS05PVyBIT1cgSSBGRUVMXV0gICAgICAgICB8CisgICAgICB8IHBbdltNSUdIVCBBUyBXRUxMXSx2W1NISVAgT0YgRk9PTFNdLHZbTUFZQkUgWU9VIEtOT1cgSE9XIEkgRkVFTF1dIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGhfbWF4RGlzdGFuY2VYMVgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuaGFzKCJuYW1lIiwibWFya28iKS5zaG9ydGVzdFBhdGgoKS53aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5tYXhEaXN0YW5jZSIsIDEpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXV0gIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2xvcF1dICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbdmFkYXNdXSB8CisgICAgICB8IHBbdlttYXJrb11dICAgICAgICAgIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX3ZhZGFzWF9zaG9ydGVzdFBhdGhfZGlzdGFuY2VYd2VpZ2h0WF9tYXhEaXN0YW5jZVgxXzNYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLmhhcygibmFtZSIsInZhZGFzIikuc2hvcnRlc3RQYXRoKCkuCisgICAgICAgICAgd2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZGlzdGFuY2UiLCAid2VpZ2h0IikuCisgICAgICAgICAgd2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgubWF4RGlzdGFuY2UiLCAxLjMpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbbG9wXSx2W2pvc2hdXSAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbbG9wXSx2W3BldGVyXV0gfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbbG9wXV0gICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dXSAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICAgICAgICAgfApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9TdW0uZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU3VtLmZlYXR1cmUKaW5kZXggMmM4OTk0Ni4uMGUyMDM2OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9TdW0uZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1N1bS5mZWF0dXJlCkBAIC0xNyw3ICsxNyw3IEBACiAKIEZlYXR1cmU6IFN0ZXAgLSBzdW0oKQogCi0gIFNjZW5hcmlvOiBnX1ZfdmFsdWVzWGFnZVhfc3VtCisgIFNjZW5hcmlvOiBnX1ZfYWdlX3N1bQogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKICAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgogICAgICAgIiIiCkBAIC0yOCw2ICsyOCwzNSBAQAogICAgICAgfCByZXN1bHQgfAogICAgICAgfCBkWzEyM10ubCB8CiAKKyAgU2NlbmFyaW86IGdfVl9mb29fc3VtCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiZm9vIikuc3VtKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKworICBTY2VuYXJpbzogZ19WX2FnZV9mb2xkX3N1bVhsb2NhbFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJhZ2UiKS5mb2xkKCkuc3VtKFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgZFsxMjNdLmkgfAorCisgIFNjZW5hcmlvOiBnX1ZfZm9vX2ZvbGRfc3VtWGxvY2FsWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImZvbyIpLmZvbGQoKS5zdW0oU2NvcGUubG9jYWwpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisKICAgU2NlbmFyaW86IGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfZ3JvdXBfYnlYbmFtZVhfYnlYYm90aEVfd2VpZ2h0X3N1bVgKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKQEAgLTM3LDQgKzY2LDQgQEAKICAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAogICAgICAgfCByZXN1bHQgfAotICAgICAgfCBtW3sicmlwcGxlIjoiZFsxLjBdLmQiLCJsb3AiOiJkWzEuMF0uZCJ9XSB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgfCBtW3sicmlwcGxlIjoiZFsxLjBdLmQiLCJsb3AiOiJkWzEuMF0uZCJ9XSB8CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1ZhbHVlTWFwLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1ZhbHVlTWFwLmZlYXR1cmUKaW5kZXggMTA5MzE4Zi4uODJhYWZmZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9WYWx1ZU1hcC5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvVmFsdWVNYXAuZmVhdHVyZQpAQCAtNDksNiArNDksMjIgQEAKICAgICAgIHwgbVt7InRbaWRdIjogInZbbG9wXS5pZCIsICJ0W2xhYmVsXSI6ICJzb2Z0d2FyZSIsICJuYW1lIjogWyJsb3AiXSwgImxhbmciOiBbImphdmEiXX1dIHwKICAgICAgIHwgbVt7InRbaWRdIjogInZbcmlwcGxlXS5pZCIsICJ0W2xhYmVsXSI6ICJzb2Z0d2FyZSIsICJuYW1lIjogWyJyaXBwbGUiXSwgImxhbmciOiBbImphdmEiXX1dIHwKIAorICBTY2VuYXJpbzogZ19WX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZU1hcCgpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbbWFya29dLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogWyJtYXJrbyJdLCAiYWdlIjogWzI5XX1dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbam9zaF0uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiBbImpvc2giXSwgImFnZSI6IFszMl19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3BldGVyXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6IFsicGV0ZXIiXSwgImFnZSI6IFszNV19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3ZhZGFzXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6IFsidmFkYXMiXSwgImFnZSI6IFsyN119XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2xvcF0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsibG9wIl0sICJsYW5nIjogWyJqYXZhIl19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3JpcHBsZV0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsicmlwcGxlIl0sICJsYW5nIjogWyJqYXZhIl19XSB8CisKICAgU2NlbmFyaW86IGdfVl92YWx1ZU1hcFhuYW1lX2FnZVgKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKQEAgLTgxLDYgKzk3LDM4IEBACiAgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2xvcF0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsibG9wIl19XSB8CiAgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3JpcHBsZV0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsicmlwcGxlIl19XSB8CiAKKyAgU2NlbmFyaW86IGdfVl92YWx1ZU1hcFhuYW1lX2FnZVhfd2l0aFh0b2tlbnNYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlTWFwKCJuYW1lIiwgImFnZSIpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbbWFya29dLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogWyJtYXJrbyJdLCAiYWdlIjogWzI5XX1dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbam9zaF0uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiBbImpvc2giXSwgImFnZSI6IFszMl19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3BldGVyXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6IFsicGV0ZXIiXSwgImFnZSI6IFszNV19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3ZhZGFzXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6IFsidmFkYXMiXSwgImFnZSI6IFsyN119XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2xvcF0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsibG9wIl19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3JpcHBsZV0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsicmlwcGxlIl19XSB8CisKKyAgU2NlbmFyaW86IGdfVl92YWx1ZU1hcFhuYW1lX2FnZVhfd2l0aFh0b2tlbnNfbGFiZWxzWF9ieVh1bmZvbGRYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlTWFwKCJuYW1lIiwgImFnZSIpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zLCBXaXRoT3B0aW9ucy5sYWJlbHMpLmJ5KF9fLnVuZm9sZCgpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7InRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogIm1hcmtvIiwgImFnZSI6IDI5fV0gfAorICAgICAgfCBtW3sidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiAiam9zaCIsICJhZ2UiOiAzMn1dIHwKKyAgICAgIHwgbVt7InRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogInBldGVyIiwgImFnZSI6IDM1fV0gfAorICAgICAgfCBtW3sidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiAidmFkYXMiLCAiYWdlIjogMjd9XSB8CisgICAgICB8IG1beyJ0W2xhYmVsXSI6ICJzb2Z0d2FyZSIsICJuYW1lIjogImxvcCJ9XSB8CisgICAgICB8IG1beyJ0W2xhYmVsXSI6ICJzb2Z0d2FyZSIsICJuYW1lIjogInJpcHBsZSJ9XSB8CisKICAgU2NlbmFyaW86IGdfVlgxWF9vdXRYY3JlYXRlZFhfdmFsdWVNYXAKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjFJZCBkZWZpbmVkIGFzICJ2W21hcmtvXS5pZCIKQEAgLTEwNCw0ICsxNTIsMzAgQEAKICAgICAgIHwgcmVzdWx0IHwKICAgICAgIHwgbVt7Im5hbWUiOiBbIm1hcmtvIl0sICJhZ2UiOiBbMjldLCAidFtsYWJlbF0iOiJwZXJzb24iLCAidFtpZF0iOiJ2W21hcmtvXS5pZCJ9XSB8CiAgICAgICB8IG1beyJuYW1lIjogWyJqb3NoIl0sICJhZ2UiOiBbMzJdLCAidFtsYWJlbF0iOiJwZXJzb24iLCAidFtpZF0iOiJ2W2pvc2hdLmlkIn1dIHwKLSAgICAgIHwgbVt7Im5hbWUiOiBbInBldGVyIl0sICJhZ2UiOiBbMzVdLCAidFtsYWJlbF0iOiJwZXJzb24iLCAidFtpZF0iOiJ2W3BldGVyXS5pZCJ9XSB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgfCBtW3sibmFtZSI6IFsicGV0ZXIiXSwgImFnZSI6IFszNV0sICJ0W2xhYmVsXSI6InBlcnNvbiIsICJ0W2lkXSI6InZbcGV0ZXJdLmlkIn1dIHwKKworICBTY2VuYXJpbzogZ19WX2hhc0xhYmVsWHBlcnNvblhfZmlsdGVyWG91dEVYY3JlYXRlZFhYX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikuZmlsdGVyKF9fLm91dEUoImNyZWF0ZWQiKSkudmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucykKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJuYW1lIjogWyJtYXJrbyJdLCAiYWdlIjogWzI5XSwgInRbbGFiZWxdIjoicGVyc29uIiwgInRbaWRdIjoidlttYXJrb10uaWQifV0gfAorICAgICAgfCBtW3sibmFtZSI6IFsiam9zaCJdLCAiYWdlIjogWzMyXSwgInRbbGFiZWxdIjoicGVyc29uIiwgInRbaWRdIjoidltqb3NoXS5pZCJ9XSB8CisgICAgICB8IG1beyJuYW1lIjogWyJwZXRlciJdLCAiYWdlIjogWzM1XSwgInRbbGFiZWxdIjoicGVyc29uIiwgInRbaWRdIjoidltwZXRlcl0uaWQifV0gfAorCisgIFNjZW5hcmlvOiBnX1ZYMVhfdmFsdWVNYXBYbmFtZV9sb2NhdGlvblhfYnlYdW5mb2xkWF9ieQorICAgIEdpdmVuIHRoZSBjcmV3IGdyYXBoCisgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjFJZCBkZWZpbmVkIGFzICJ2W21hcmtvXS5pZCIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYodjFJZCkudmFsdWVNYXAoIm5hbWUiLCAibG9jYXRpb24iKS5ieShfXy51bmZvbGQoKSkuYnkoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7Im5hbWUiOiAibWFya28iLCAibG9jYXRpb24iOiBbInNhbiBkaWVnbyIsICJzYW50YSBjcnV6IiwgImJydXNzZWxzIiwgInNhbnRhIGZlIl19XSB8CisKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L0FnZ3JlZ2F0ZS5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvQWdncmVnYXRlLmZlYXR1cmUKaW5kZXggMmFiMzVlZi4uMmU4MDk5MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvQWdncmVnYXRlLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvQWdncmVnYXRlLmZlYXR1cmUKQEAgLTMzLDYgKzMzLDIyIEBACiAgICAgICB8IHZhZGFzIHwKICAgICAgIHwgcmlwcGxlIHwKIAorICBTY2VuYXJpbzogZ19WX3ZhbHVlWG5hbWVYX2FnZ3JlZ2F0ZVhnbG9iYWxfeFhfY2FwWHhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygibmFtZSIpLmFnZ3JlZ2F0ZShTY29wZS5nbG9iYWwsIngiKS5jYXAoIngiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCBuZXh0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbWFya28gfAorICAgICAgfCBqb3NoIHwKKyAgICAgIHwgcGV0ZXIgfAorICAgICAgfCBsb3AgfAorICAgICAgfCB2YWRhcyB8CisgICAgICB8IHJpcHBsZSB8CisKICAgU2NlbmFyaW86IGdfVl9hZ2dyZWdhdGVYeFhfYnlYbmFtZVhfY2FwWHhYCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCkBAIC03Nyw0ICs5Myw3NCBAQAogICAgICAgfCBkWzI5XS5pIHwKICAgICAgIHwgZFsyN10uaSB8CiAgICAgICB8IGRbMzJdLmkgfAotICAgICAgfCBkWzM1XS5pIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICB8IGRbMzVdLmkgfAorCisgIFNjZW5hcmlvOiBnX1ZfYWdncmVnYXRlWGxvY2FsX2FfbmFtZVhfb3V0X2NhcFhhWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsImEiKS5ieSgibmFtZSIpLm91dCgpLmNhcCgiYSIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIG5leHQKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtYXJrbyB8CisgICAgICB8IHZhZGFzIHwKKyAgICAgIHwgbG9wIHwKKyAgICAgIHwgam9zaCB8CisgICAgICB8IHJpcHBsZSB8CisgICAgICB8IHBldGVyICB8CisKKyAgU2NlbmFyaW86IGdfVlgxWF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYbmFtZVhfb3V0X2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9uYW1lX2NhcFhhWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciB2MUlkIGRlZmluZWQgYXMgInZbbWFya29dLmlkIgorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVih2MUlkKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsImEiKS5ieSgibmFtZSIpLm91dCgpLmFnZ3JlZ2F0ZShTY29wZS5sb2NhbCwiYSIpLmJ5KCJuYW1lIikudmFsdWVzKCJuYW1lIikuY2FwKCJhIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgbmV4dAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1hcmtvIHwKKyAgICAgIHwgdmFkYXMgfAorICAgICAgfCBsb3AgfAorICAgICAgfCBqb3NoIHwKKworICBTY2VuYXJpbzogZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfYWdncmVnYXRlWGxvY2FsX2FYX2NhcFhhWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciBpbml0aWFsIGRlZmluZWQgYXMgInNbXSIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhTaWRlRWZmZWN0KCJhIiwgaW5pdGlhbCkuVigpLmJvdGgoKS52YWx1ZXMoIm5hbWUiKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsImEiKS5jYXAoImEiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCBuZXh0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbWFya28gfAorICAgICAgfCB2YWRhcyB8CisgICAgICB8IGxvcCB8CisgICAgICB8IGpvc2ggfAorICAgICAgfCByaXBwbGUgfAorICAgICAgfCBwZXRlciAgfAorCisgIFNjZW5hcmlvOiBnX1ZfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG91dEVYY3JlYXRlZFhfY291bnRYX291dF9vdXRfYWdncmVnYXRlWGxvY2FsX2FYX2J5WGluRVhjcmVhdGVkWF93ZWlnaHRfc3VtWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsImEiKS4KKyAgICAgICAgICAgICBieShfXy5vdXRFKCJjcmVhdGVkIikuY291bnQoKSkuCisgICAgICAgIG91dCgpLm91dCgpLmFnZ3JlZ2F0ZShTY29wZS5sb2NhbCwiYSIpLgorICAgICAgICAgICAgICAgICAgICAgIGJ5KF9fLmluRSgiY3JlYXRlZCIpLnZhbHVlcygid2VpZ2h0Iikuc3VtKCkpLgorICAgICAgICBjYXAoImEiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCBuZXh0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgZFsxXS5sIHwKKyAgICAgIHwgZFsxXS5sIHwKKyAgICAgIHwgZFswXS5sIHwKKyAgICAgIHwgZFswXS5sIHwKKyAgICAgIHwgZFswXS5sIHwKKyAgICAgIHwgZFsyXS5sIHwKKyAgICAgIHwgZFsxLjBdLmQgfAorICAgICAgfCBkWzEuMF0uZCB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvR3JvdXAuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L0dyb3VwLmZlYXR1cmUKaW5kZXggZDM4M2E4My4uZTY5YjQ0NyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvR3JvdXAuZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9Hcm91cC5mZWF0dXJlCkBAIC0xMDMsNyArMTAzLDcgQEAKICAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAogICAgICAgfCByZXN1bHQgfAotICAgICAgfCBtW3sic29mdHdhcmUiOiJkWzBdLmkiLCAicGVyc29uIjoiZFszLjVdLmQifV0gfAorICAgICAgfCBtW3sicGVyc29uIjoiZFszLjVdLmQifV0gfAogCiAgIFNjZW5hcmlvOiBnX1ZfcmVwZWF0WGJvdGhYZm9sbG93ZWRCeVhYX3RpbWVzWDJYX2dyb3VwX2J5WHNvbmdUeXBlWF9ieVhjb3VudFgKICAgICBHaXZlbiB0aGUgZ3JhdGVmdWwgZ3JhcGgKQEAgLTIwNCw3ICsyMDQsNyBAQAogICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCiAgICAgICB8IHJlc3VsdCB8Ci0gICAgICB8IG1beyJjb3ZlciI6eyJmb2xsb3dlZEJ5IjoiZFs3Nzc5ODJdLmwiLCAic3VuZ0J5IjoiZFswXS5pIiwgIndyaXR0ZW5CeSI6ImRbMF0uaSJ9LCAiIjp7ImZvbGxvd2VkQnkiOiJkWzE3OTM1MF0ubCJ9LCAib3JpZ2luYWwiOnsiZm9sbG93ZWRCeSI6ImRbMjE4NTYxM10ubCIsICJzdW5nQnkiOiJkWzBdLmkiLCAid3JpdHRlbkJ5IjoiZFswXS5pIn19XSB8CisgICAgICB8IG1beyJjb3ZlciI6eyJmb2xsb3dlZEJ5IjoiZFs3Nzc5ODJdLmwifSwgIiI6eyJmb2xsb3dlZEJ5IjoiZFsxNzkzNTBdLmwifSwgIm9yaWdpbmFsIjp7ImZvbGxvd2VkQnkiOiJkWzIxODU2MTNdLmwifX1dIHwKIAogICBTY2VuYXJpbzogZ19WX2dyb3VwWG1YX2J5WG5hbWVYX2J5WGluWGtub3dzWF9uYW1lWF9jYXBYbVgKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9SZWFkLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9SZWFkLmZlYXR1cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU5NjEwMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L1JlYWQuZmVhdHVyZQpAQCAtMCwwICsxLDg0IEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitGZWF0dXJlOiBTdGVwIC0gcmVhZCgpCisKKyAgU2NlbmFyaW86IGdfaW9fcmVhZFhrcnlvWAorICAgIEdpdmVuIHRoZSBlbXB0eSBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuaW8oImRhdGEvdGlua2VycG9wLW1vZGVybi5rcnlvIikucmVhZCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLlYoKSIKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuRSgpIgorCisgIFNjZW5hcmlvOiBnX2lvX3JlYWRfd2l0aFhyZWFkZXJfZ3J5b1gKKyAgICBHaXZlbiB0aGUgZW1wdHkgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLmlvKCJkYXRhL3RpbmtlcnBvcC1tb2Rlcm4ua3J5byIpLndpdGgoSU8ucmVhZGVyLCBJTy5ncnlvKS5yZWFkKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuVigpIgorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiA2IGZvciBjb3VudCBvZiAiZy5FKCkiCisKKyAgU2NlbmFyaW86IGdfaW9fcmVhZFhncmFwaHNvblgKKyAgICBHaXZlbiB0aGUgZW1wdHkgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLmlvKCJkYXRhL3RpbmtlcnBvcC1tb2Rlcm4uanNvbiIpLnJlYWQoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiA2IGZvciBjb3VudCBvZiAiZy5WKCkiCisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLkUoKSIKKworICBTY2VuYXJpbzogZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBoc29uWAorICAgIEdpdmVuIHRoZSBlbXB0eSBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuaW8oImRhdGEvdGlua2VycG9wLW1vZGVybi5qc29uIikud2l0aChJTy5yZWFkZXIsIElPLmdyYXBoc29uKS5yZWFkKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuVigpIgorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiA2IGZvciBjb3VudCBvZiAiZy5FKCkiCisKKyAgU2NlbmFyaW86IGdfaW9fcmVhZFhncmFwaG1sWAorICAgIEdpdmVuIHRoZSBlbXB0eSBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuaW8oImRhdGEvdGlua2VycG9wLW1vZGVybi54bWwiKS5yZWFkKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuVigpIgorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiA2IGZvciBjb3VudCBvZiAiZy5FKCkiCisKKyAgU2NlbmFyaW86IGdfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaG1sWAorICAgIEdpdmVuIHRoZSBlbXB0eSBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuaW8oImRhdGEvdGlua2VycG9wLW1vZGVybi54bWwiKS53aXRoKElPLnJlYWRlciwgSU8uZ3JhcGhtbCkucmVhZCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLlYoKSIKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuRSgpIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L1N0b3JlLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9TdG9yZS5mZWF0dXJlCmluZGV4IDBhODFiNzUuLmY2MWNiYzQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L1N0b3JlLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvU3RvcmUuZmVhdHVyZQpAQCAtNTgsMTIgKzU4LDEyIEBACiAgICAgV2hlbiBpdGVyYXRlZCBuZXh0CiAgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKICAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgbG9wICAgIHwKLSAgICAgIHwgdmFkYXMgIHwKLSAgICAgIHwgam9zaCAgIHwKLSAgICAgIHwgbWFya28gIHwKLSAgICAgIHwgcGV0ZXIgIHwKKyAgICAgIHwgbWFya28gfAorICAgICAgfCB2YWRhcyB8CisgICAgICB8IGxvcCB8CisgICAgICB8IGpvc2ggfAogICAgICAgfCByaXBwbGUgfAorICAgICAgfCBwZXRlciAgfAogCiAgIFNjZW5hcmlvOiBnX1Zfc3RvcmVYYVhfYnlYb3V0RVhjcmVhdGVkWF9jb3VudFhfb3V0X291dF9zdG9yZVhhWF9ieVhpbkVYY3JlYXRlZFhfd2VpZ2h0X3N1bVgKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9Xcml0ZS5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvV3JpdGUuZmVhdHVyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTc3NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvV3JpdGUuZmVhdHVyZQpAQCAtMCwwICsxLDYwIEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitGZWF0dXJlOiBTdGVwIC0gd3JpdGUoKQorCisgIFNjZW5hcmlvOiBnX2lvX3dyaXRlWGtyeW9YCisgICAgR2l2ZW4gYW4gdW5zdXBwb3J0ZWQgdGVzdAorICAgIFRoZW4gbm90aGluZyBzaG91bGQgaGFwcGVuIGJlY2F1c2UKKyAgICAgICIiIgorICAgICAgV2UgZG9uJ3QgaGF2ZSBhIG5pY2Ugd2F5IHRvIGFzc2VydCB0aGUgcmVtb3RlbHkgd3JpdHRlbiBmaWxlIHdpdGggdGhpcyBmcmFtZXdvcmsgLSBqdXN0IHRlc3RpbmcgY29tcGlsYXRpb24uCisgICAgICAiIiIKKworICBTY2VuYXJpbzogZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncnlvWAorICAgIEdpdmVuIGFuIHVuc3VwcG9ydGVkIHRlc3QKKyAgICBUaGVuIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZWNhdXNlCisgICAgICAiIiIKKyAgICAgIFdlIGRvbid0IGhhdmUgYSBuaWNlIHdheSB0byBhc3NlcnQgdGhlIHJlbW90ZWx5IHdyaXR0ZW4gZmlsZSB3aXRoIHRoaXMgZnJhbWV3b3JrIC0ganVzdCB0ZXN0aW5nIGNvbXBpbGF0aW9uLgorICAgICAgIiIiCisKKyAgU2NlbmFyaW86IGdfaW9fd3JpdGVYZ3JhcGhzb25YCisgICAgR2l2ZW4gYW4gdW5zdXBwb3J0ZWQgdGVzdAorICAgIFRoZW4gbm90aGluZyBzaG91bGQgaGFwcGVuIGJlY2F1c2UKKyAgICAgICIiIgorICAgICAgV2UgZG9uJ3QgaGF2ZSBhIG5pY2Ugd2F5IHRvIGFzc2VydCB0aGUgcmVtb3RlbHkgd3JpdHRlbiBmaWxlIHdpdGggdGhpcyBmcmFtZXdvcmsgLSBqdXN0IHRlc3RpbmcgY29tcGlsYXRpb24uCisgICAgICAiIiIKKworICBTY2VuYXJpbzogZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaHNvblgKKyAgICBHaXZlbiBhbiB1bnN1cHBvcnRlZCB0ZXN0CisgICAgVGhlbiBub3RoaW5nIHNob3VsZCBoYXBwZW4gYmVjYXVzZQorICAgICAgIiIiCisgICAgICBXZSBkb24ndCBoYXZlIGEgbmljZSB3YXkgdG8gYXNzZXJ0IHRoZSByZW1vdGVseSB3cml0dGVuIGZpbGUgd2l0aCB0aGlzIGZyYW1ld29yayAtIGp1c3QgdGVzdGluZyBjb21waWxhdGlvbi4KKyAgICAgICIiIgorCisgIFNjZW5hcmlvOiBnX2lvX3dyaXRlWGdyYXBobWxYCisgICAgR2l2ZW4gYW4gdW5zdXBwb3J0ZWQgdGVzdAorICAgIFRoZW4gbm90aGluZyBzaG91bGQgaGFwcGVuIGJlY2F1c2UKKyAgICAgICIiIgorICAgICAgV2UgZG9uJ3QgaGF2ZSBhIG5pY2Ugd2F5IHRvIGFzc2VydCB0aGUgcmVtb3RlbHkgd3JpdHRlbiBmaWxlIHdpdGggdGhpcyBmcmFtZXdvcmsgLSBqdXN0IHRlc3RpbmcgY29tcGlsYXRpb24uCisgICAgICAiIiIKKworICBTY2VuYXJpbzogZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaG1sWAorICAgIEdpdmVuIGFuIHVuc3VwcG9ydGVkIHRlc3QKKyAgICBUaGVuIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZWNhdXNlCisgICAgICAiIiIKKyAgICAgIFdlIGRvbid0IGhhdmUgYSBuaWNlIHdheSB0byBhc3NlcnQgdGhlIHJlbW90ZWx5IHdyaXR0ZW4gZmlsZSB3aXRoIHRoaXMgZnJhbWV3b3JrIC0ganVzdCB0ZXN0aW5nIGNvbXBpbGF0aW9uLgorICAgICAgIiIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3BvbS54bWwgYi9ncmVtbGluLXRlc3QvcG9tLnhtbAppbmRleCAwZjMwYmE2Li42MjMxYTFmIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3QvcG9tLnhtbAorKysgYi9ncmVtbGluLXRlc3QvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi10ZXN0PC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbiBUZXN0PC9uYW1lPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEZpbGVHcmFwaFByb3ZpZGVyLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0Fic3RyYWN0RmlsZUdyYXBoUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGU5YTBkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEZpbGVHcmFwaFByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5TdG9yYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OUmVzb3VyY2VBY2Nlc3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVzb3VyY2VBY2Nlc3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uc2NyaXB0LlNjcmlwdFJlc291cmNlQWNjZXNzOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CisKKy8qKgorICogQSBiYXNlIHtAbGluayBHcmFwaFByb3ZpZGVyfSB0aGF0IGlzIHR5cGljYWxseSBmb3IgdXNlIHdpdGggSGFkb29wLWJhc2VkIGdyYXBocyBhcyBpdCBlbmFibGVzIGFjY2VzcyB0byB0aGUgdmFyaW91cworICogcmVzb3VyY2UgZGF0YSBmaWxlcyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0ZXN0cy4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVHcmFwaFByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RHcmFwaFByb3ZpZGVyIHsKKworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgUmFuZG9tIFJBTkRPTSA9IFRlc3RIZWxwZXIuUkFORE9NOworCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gZ3JhcGhTT05JbnB1dCA9IGZhbHNlOworCisgICAgcHVibGljIHN0YXRpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IFBBVEhTID0gbmV3IEhhc2hNYXA8PigpOworICAgIHN0YXRpYyB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4ga3J5b1Jlc291cmNlcyA9IEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtbW9kZXJuLXYzZDAua3J5byIsCisgICAgICAgICAgICAgICAgICAgICJncmF0ZWZ1bC1kZWFkLXYzZDAua3J5byIsCisgICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY2xhc3NpYy12M2QwLmtyeW8iLAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNyZXctdjNkMC5rcnlvIiwKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1zaW5rLXYzZDAua3J5byIpOworICAgICAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgZmlsZU5hbWUgOiBrcnlvUmVzb3VyY2VzKSB7CisgICAgICAgICAgICAgICAgUEFUSFMucHV0KGZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS50b1BhdGgoVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKEdyeW9SZXNvdXJjZUFjY2Vzcy5jbGFzcywgZmlsZU5hbWUsICIiKSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gZ3JhcGhzb25SZXNvdXJjZXMgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLW1vZGVybi10eXBlZC12MmQwLmpzb24iLAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLW1vZGVybi12M2QwLmpzb24iLAorICAgICAgICAgICAgICAgICAgICAiZ3JhdGVmdWwtZGVhZC10eXBlZC12MmQwLmpzb24iLAorICAgICAgICAgICAgICAgICAgICAiZ3JhdGVmdWwtZGVhZC12M2QwLmpzb24iLAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNsYXNzaWMtdHlwZWQtdjJkMC5qc29uIiwKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jbGFzc2ljLXYzZDAuanNvbiIsCisgICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY3Jldy10eXBlZC12MmQwLmpzb24iLAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNyZXctdjNkMC5qc29uIiwKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1zaW5rLXYzZDAuanNvbiIpOworICAgICAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgZmlsZU5hbWUgOiBncmFwaHNvblJlc291cmNlcykgeworICAgICAgICAgICAgICAgIFBBVEhTLnB1dChmaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UudG9QYXRoKFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShHcmFwaFNPTlJlc291cmNlQWNjZXNzLmNsYXNzLCBmaWxlTmFtZSwgIiIpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBzY3JpcHRSZXNvdXJjZXMgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNsYXNzaWMudHh0IiwKKyAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1pbnB1dC5ncm9vdnkiLAorICAgICAgICAgICAgICAgICAgICAic2NyaXB0LW91dHB1dC5ncm9vdnkiLAorICAgICAgICAgICAgICAgICAgICAiZ3JhdGVmdWwtZGVhZC50eHQiLAorICAgICAgICAgICAgICAgICAgICAic2NyaXB0LWlucHV0LWdyYXRlZnVsLWRlYWQuZ3Jvb3Z5IiwKKyAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1vdXRwdXQtZ3JhdGVmdWwtZGVhZC5ncm9vdnkiKTsKKyAgICAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIGZpbGVOYW1lIDogc2NyaXB0UmVzb3VyY2VzKSB7CisgICAgICAgICAgICAgICAgUEFUSFMucHV0KGZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS50b1BhdGgoVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKFNjcmlwdFJlc291cmNlQWNjZXNzLmNsYXNzLCBmaWxlTmFtZSwgIiIpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY2xlYXIoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChncmFwaCAhPSBudWxsKQorICAgICAgICAgICAgZ3JhcGguY2xvc2UoKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldElucHV0TG9jYXRpb24oZmluYWwgR3JhcGggZywgZmluYWwgTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEgZ3JhcGhEYXRhKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyB0eXBlID0gdGhpcy5ncmFwaFNPTklucHV0ID8gIi12M2QwLmpzb24iIDogIi12M2QwLmtyeW8iOworCisgICAgICAgIGlmIChncmFwaERhdGEuZXF1YWxzKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkdSQVRFRlVMKSkKKyAgICAgICAgICAgIHJldHVybiBQQVRIUy5nZXQoImdyYXRlZnVsLWRlYWQiICsgdHlwZSk7CisgICAgICAgIGVsc2UgaWYgKGdyYXBoRGF0YS5lcXVhbHMoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOKSkKKyAgICAgICAgICAgIHJldHVybiBQQVRIUy5nZXQoInRpbmtlcnBvcC1tb2Rlcm4iICsgdHlwZSk7CisgICAgICAgIGVsc2UgaWYgKGdyYXBoRGF0YS5lcXVhbHMoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ0xBU1NJQykpCisgICAgICAgICAgICByZXR1cm4gUEFUSFMuZ2V0KCJ0aW5rZXJwb3AtY2xhc3NpYyIgKyB0eXBlKTsKKyAgICAgICAgZWxzZSBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5DUkVXKSkKKyAgICAgICAgICAgIHJldHVybiBQQVRIUy5nZXQoInRpbmtlcnBvcC1jcmV3IiArIHR5cGUpOworICAgICAgICBlbHNlIGlmIChncmFwaERhdGEuZXF1YWxzKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLlNJTkspKQorICAgICAgICAgICAgcmV0dXJuIFBBVEhTLmdldCgidGlua2VycG9wLXNpbmsiICsgdHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDb3VsZCBub3QgbG9hZCBncmFwaCB3aXRoICIgKyBncmFwaERhdGEpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEdyYXBoUHJvdmlkZXIuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RHcmFwaFByb3ZpZGVyLmphdmEKaW5kZXggMDUyZTQ3YS4uM2VjMmFiMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEdyYXBoUHJvdmlkZXIuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0Fic3RyYWN0R3JhcGhQcm92aWRlci5qYXZhCkBAIC0yMCwxMSArMjAsMTMgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkdyYXBoUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvUmVnaXN0cnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvSW87CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVhZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkJhc2VDb25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5HcmFwaEZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVzb3VyY2VBY2Nlc3M7CiBpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKIGltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsKIApAQCAtMTM2LDEyICsxMzgsMTggQEAKICAgICAgICAgcmV0dXJuIG1ldGhvZE5hbWUucmVwbGFjZUFsbCgiWzAtOSwgLV0rJCIsIFN0cmluZy52YWx1ZU9mKHJhbmRvbSkpOwogICAgIH0KIAotICAgIHByb3RlY3RlZCB2b2lkIHJlYWRJbnRvR3JhcGgoZmluYWwgR3JhcGggZywgZmluYWwgU3RyaW5nIHBhdGgpIHRocm93cyBJT0V4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIEdyYXBoUmVhZGVyIHJlYWRlciA9IEdyeW9SZWFkZXIuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5tYXBwZXIoZy5pbyhHcnlvSW8uYnVpbGQoKSkubWFwcGVyKCkuY3JlYXRlKCkpCi0gICAgICAgICAgICAgICAgLmNyZWF0ZSgpOwotICAgICAgICB0cnkgKGZpbmFsIElucHV0U3RyZWFtIHN0cmVhbSA9IEFic3RyYWN0R3JlbWxpblRlc3QuY2xhc3MuZ2V0UmVzb3VyY2VBc1N0cmVhbShwYXRoKSkgewotICAgICAgICAgICAgcmVhZGVyLnJlYWRHcmFwaChzdHJlYW0sIGcpOwotICAgICAgICB9CisgICAgLyoqCisgICAgICogVXNlZCBieSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgQWJzdHJhY3RHcmFwaFByb3ZpZGVyI2xvYWRHcmFwaERhdGEoR3JhcGgsIExvYWRHcmFwaFdpdGgsIENsYXNzLCBTdHJpbmcpfQorICAgICAqIHRvIHJlYWQgdGhlIGdyYXBoIGZyb20gYSBLcnlvIGZpbGUgdXNpbmcgdGhlIGRlZmF1bHQge0BsaW5rIEdyeW9SZWFkZXJ9IGltcGxlbWVudGF0aW9uLiBJZiB0aGUgZGVmYXVsdAorICAgICAqIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHdvcmsgKHBlcmhhcHMgYSBncmFwaCBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byByZWdpc3RlciBzb21lIHNwZWNpYWwge0BsaW5rIElvUmVnaXN0cnl9CisgICAgICogdGhlbiB0aGlzIG1ldGhvZCBvciBpdHMgY2FsbGVyIHNob3VsZCBiZSBvdmVycmlkZGVuIHRvIHN1aXQgdGhlIGltcGxlbWVudGF0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIGdyYXBoIHRoZSBncmFwaCB0byBsb2FkIHRvCisgICAgICogQHBhcmFtIHBhdGggdGhlIHBhdGggdG8gdGhlIGZpbGUgdG8gbG9hZCBpbnRvIHRoZSBncmFwaAorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHJlYWRJbnRvR3JhcGgoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIFN0cmluZyBwYXRoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZGF0YUZpbGUgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoZ3JhcGguZ2V0Q2xhc3MoKSwKKyAgICAgICAgICAgICAgICBHcnlvUmVzb3VyY2VBY2Nlc3MuY2xhc3MsIHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoRmlsZS5zZXBhcmF0b3IpICsgMSksICIiLCBmYWxzZSkuZ2V0QWJzb2x1dGVQYXRoKCk7CisgICAgICAgIGdyYXBoLnRyYXZlcnNhbCgpLmlvKGRhdGFGaWxlKS5yZWFkKCkuaXRlcmF0ZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RHcmVtbGluVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEdyZW1saW5UZXN0LmphdmEKaW5kZXggNWQwZmFlZS4uZjA2OWExMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEdyZW1saW5UZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEdyZW1saW5UZXN0LmphdmEKQEAgLTM3LDExICszNywxMyBAQAogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CiBpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CiAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOwogaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiBpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkNvbnN1bWVyOwogaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKQEAgLTc1LDggKzc3LDE2IEBACiAgICAgICAgIGZpbmFsIExvYWRHcmFwaFdpdGhbXSBsb2FkR3JhcGhXaXRocyA9IHRlc3RNZXRob2QuZ2V0QW5ub3RhdGlvbnNCeVR5cGUoTG9hZEdyYXBoV2l0aC5jbGFzcyk7CiAgICAgICAgIGZpbmFsIExvYWRHcmFwaFdpdGggbG9hZEdyYXBoV2l0aCA9IGxvYWRHcmFwaFdpdGhzLmxlbmd0aCA9PSAwID8gbnVsbCA6IGxvYWRHcmFwaFdpdGhzWzBdOwogICAgICAgICBmaW5hbCBMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YSBsb2FkR3JhcGhXaXRoRGF0YSA9IG51bGwgPT0gbG9hZEdyYXBoV2l0aCA/IG51bGwgOiBsb2FkR3JhcGhXaXRoLnZhbHVlKCk7CisgICAgICAgIGZpbmFsIFNldDxGZWF0dXJlUmVxdWlyZW1lbnQ+IGZlYXR1cmVSZXF1aXJlbWVudFNldCA9IGdldEZlYXR1cmVSZXF1aXJlbWVudHNGb3JUZXN0KHRlc3RNZXRob2QsIGxvYWRHcmFwaFdpdGhzKTsKIAogICAgICAgICBncmFwaFByb3ZpZGVyID0gR3JhcGhNYW5hZ2VyLmdldEdyYXBoUHJvdmlkZXIoKTsKKworICAgICAgICAvLyBwcmUtY2hlY2sgaWYgYXZhaWxhYmxlIGZyb20gZ3JhcGggcHJvdmlkZXIgdG8gYXZvaWQgZ3JhcGggY3JlYXRpb24KKyAgICAgICAgZmluYWwgT3B0aW9uYWw8R3JhcGguRmVhdHVyZXM+IHN0YXRpY0ZlYXR1cmVzID0gZ3JhcGhQcm92aWRlci5nZXRTdGF0aWNGZWF0dXJlcygpOworICAgICAgICBpZiAoc3RhdGljRmVhdHVyZXMuaXNQcmVzZW50KCkpIHsKKyAgICAgICAgICAgIGFzc3VtZVJlcXVpcmVtZW50c0FyZU1ldEZvclRlc3QoZmVhdHVyZVJlcXVpcmVtZW50U2V0LCBzdGF0aWNGZWF0dXJlcy5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIH0KKwogICAgICAgICBncmFwaFByb3ZpZGVyLmdldFRlc3RMaXN0ZW5lcigpLmlmUHJlc2VudChsIC0+IGwub25UZXN0U3RhcnQodGhpcy5nZXRDbGFzcygpLCBuYW1lLmdldE1ldGhvZE5hbWUoKSkpOwogCiAgICAgICAgIC8vIFJlc2V0IHRoZSBjb3VudGVyIGZvciBvcGVuIGl0ZXJhdG9ycyBieSB0aGlzIHRlc3QKQEAgLTkxLDMxICsxMDEsMTAgQEAKICAgICAgICAgZ3JhcGggPSBncmFwaFByb3ZpZGVyLm9wZW5UZXN0R3JhcGgoY29uZmlnKTsKICAgICAgICAgZyA9IGdyYXBoUHJvdmlkZXIudHJhdmVyc2FsKGdyYXBoKTsKIAotICAgICAgICAvLyBnZXQgZmVhdHVyZSByZXF1aXJlbWVudHMgb24gdGhlIHRlc3QgbWV0aG9kIGFuZCBhZGQgdGhlbSB0byB0aGUgbGlzdCBvZiBvbmVzIHRvIGNoZWNrCi0gICAgICAgIGZpbmFsIEZlYXR1cmVSZXF1aXJlbWVudFtdIGZlYXR1cmVSZXF1aXJlbWVudCA9IHRlc3RNZXRob2QuZ2V0QW5ub3RhdGlvbnNCeVR5cGUoRmVhdHVyZVJlcXVpcmVtZW50LmNsYXNzKTsKLSAgICAgICAgZmluYWwgTGlzdDxGZWF0dXJlUmVxdWlyZW1lbnQ+IGZycyA9IG5ldyBBcnJheUxpc3Q8PihBcnJheXMuYXNMaXN0KGZlYXR1cmVSZXF1aXJlbWVudCkpOwotCi0gICAgICAgIC8vIGlmIHRoZSBncmFwaCBpcyBsb2FkaW5nIGRhdGEgdGhlbiBpdCB3aWxsIGNvbWUgd2l0aCBpdCdzIG93biByZXF1aXJlbWVudHMKLSAgICAgICAgaWYgKGxvYWRHcmFwaFdpdGhzLmxlbmd0aCA+IDApIGZycy5hZGRBbGwobG9hZEdyYXBoV2l0aHNbMF0udmFsdWUoKS5mZWF0dXJlc1JlcXVpcmVkKCkpOwotCi0gICAgICAgIC8vIGlmIHRoZSBncmFwaCBoYXMgYSBzZXQgb2YgZmVhdHVyZSByZXF1aXJlbWVudHMgYnVuZGxlZCB0b2dldGhlciB0aGVuIGFkZCB0aG9zZQotICAgICAgICBmaW5hbCBGZWF0dXJlUmVxdWlyZW1lbnRTZXRbXSBmZWF0dXJlUmVxdWlyZW1lbnRTZXRzID0gdGVzdE1ldGhvZC5nZXRBbm5vdGF0aW9uc0J5VHlwZShGZWF0dXJlUmVxdWlyZW1lbnRTZXQuY2xhc3MpOwotICAgICAgICBpZiAoZmVhdHVyZVJlcXVpcmVtZW50U2V0cy5sZW5ndGggPiAwKQotICAgICAgICAgICAgZnJzLmFkZEFsbChBcnJheXMuc3RyZWFtKGZlYXR1cmVSZXF1aXJlbWVudFNldHMpCi0gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKGYgLT4gZi52YWx1ZSgpLmZlYXR1cmVzUmVxdWlyZWQoKS5zdHJlYW0oKSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKSk7Ci0KLSAgICAgICAgLy8gcHJvY2VzcyB0aGUgdW5pcXVlIHNldCBvZiBmZWF0dXJlIHJlcXVpcmVtZW50cwotICAgICAgICBmaW5hbCBTZXQ8RmVhdHVyZVJlcXVpcmVtZW50PiBmZWF0dXJlUmVxdWlyZW1lbnRTZXQgPSBuZXcgSGFzaFNldDw+KGZycyk7Ci0gICAgICAgIGZvciAoRmVhdHVyZVJlcXVpcmVtZW50IGZyIDogZmVhdHVyZVJlcXVpcmVtZW50U2V0KSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQoIkFzc3VtZSB0aGF0ICVzIG1lZXRzIEZlYXR1cmUgUmVxdWlyZW1lbnQgLSAlcyAtIHdpdGggJXMiLCBmci5mZWF0dXJlQ2xhc3MoKS5nZXRTaW1wbGVOYW1lKCksIGZyLmZlYXR1cmUoKSwgZnIuc3VwcG9ydGVkKCkpKTsKLSAgICAgICAgICAgICAgICBhc3N1bWVUaGF0KFN0cmluZy5mb3JtYXQoIiVzIGRvZXMgbm90IHN1cHBvcnQgYWxsIG9mIHRoZSBmZWF0dXJlcyByZXF1aXJlZCBieSB0aGlzIHRlc3Qgc28gaXQgd2lsbCBiZSBpZ25vcmVkOiAlcy4lcz0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoLmdldENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpLCBmci5mZWF0dXJlQ2xhc3MoKS5nZXRTaW1wbGVOYW1lKCksIGZyLmZlYXR1cmUoKSwgZnIuc3VwcG9ydGVkKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGguZmVhdHVyZXMoKS5zdXBwb3J0cyhmci5mZWF0dXJlQ2xhc3MoKSwgZnIuZmVhdHVyZSgpKSwgaXMoZnIuc3VwcG9ydGVkKCkpKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKE5vU3VjaE1ldGhvZEV4Y2VwdGlvbiBuc21lKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaE1ldGhvZEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJbc3VwcG9ydHMlc10gaXMgbm90IGEgdmFsaWQgZmVhdHVyZSBvbiAlcyIsIGZyLmZlYXR1cmUoKSwgZnIuZmVhdHVyZUNsYXNzKCkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICAvLyBldmVuIGlmIHdlIGNoZWNrZWQgc3RhdGljIGZlYXR1cmVzIGVhcmxpZXIgaXQncyBvZiBsaXR0bGUgY29zdCB0byByZWNoZWNrIGFnYWluIHdpdGggdGhlIHJlYWwgZ3JhcGgKKyAgICAgICAgLy8gb25jZSBpdCBpcyBpbnN0YW50aWF0ZWQuIHRoZSByZWFsIGNvc3Qgc2F2aW5ncyBpcyBwcmV2ZW50aW5nIGdyYXBoIGNyZWF0aW9uIGluIHRoZSBmaXJzdCBwbGFjZSBzbworICAgICAgICAvLyBsZXQncyBkb3VibGUgY2hlY2sgdGhhdCBhbGwgaXMgbGVnaXQuCisgICAgICAgIGFzc3VtZVJlcXVpcmVtZW50c0FyZU1ldEZvclRlc3QoZmVhdHVyZVJlcXVpcmVtZW50U2V0LCBncmFwaC5mZWF0dXJlcygpLCBmYWxzZSk7CiAKICAgICAgICAgYmVmb3JlTG9hZEdyYXBoV2l0aChncmFwaCk7CiAKQEAgLTEyNSw2ICsxMTQsMjUgQEAKICAgICAgICAgYWZ0ZXJMb2FkR3JhcGhXaXRoKGdyYXBoKTsKICAgICB9CiAKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGFzc3VtZVJlcXVpcmVtZW50c0FyZU1ldEZvclRlc3QoZmluYWwgU2V0PEZlYXR1cmVSZXF1aXJlbWVudD4gZmVhdHVyZVJlcXVpcmVtZW50U2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBHcmFwaC5GZWF0dXJlcyBmZWF0dXJlcywgZmluYWwgYm9vbGVhbiBzdGF0aWNDaGVjaykKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uLCBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLCBOb1N1Y2hNZXRob2RFeGNlcHRpb24geworICAgICAgICBmb3IgKEZlYXR1cmVSZXF1aXJlbWVudCBmciA6IGZlYXR1cmVSZXF1aXJlbWVudFNldCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBhc3N1bWVUaGF0KFN0cmluZy5mb3JtYXQoIkZlYXR1cmVzIG9mIHRoZSBncmFwaCBkbyBub3Qgc3VwcG9ydCBhbGwgb2YgdGhlIGZlYXR1cmVzIHJlcXVpcmVkIGJ5IHRoaXMgdGVzdCBzbyBpdCB3aWxsIGJlIGlnbm9yZWQ6ICVzLiVzPSVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyLmZlYXR1cmVDbGFzcygpLmdldFNpbXBsZU5hbWUoKSwgZnIuZmVhdHVyZSgpLCBmci5zdXBwb3J0ZWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcy5zdXBwb3J0cyhmci5mZWF0dXJlQ2xhc3MoKSwgZnIuZmVhdHVyZSgpKSwgaXMoZnIuc3VwcG9ydGVkKCkpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE5vU3VjaE1ldGhvZEV4Y2VwdGlvbiBuc21lKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaE1ldGhvZEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJbc3VwcG9ydHMlc10gaXMgbm90IGEgdmFsaWQgZmVhdHVyZSBvbiAlcyIsIGZyLmZlYXR1cmUoKSwgZnIuZmVhdHVyZUNsYXNzKCkpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHVvZSkgeworICAgICAgICAgICAgICAgIC8vIG5vIHdvcnJpZXMgaWYgdGhpcyBpcyBhIGNoZWNrIG9mIHN0YXRpYyBmZWF0dXJlcyAtIGl0IGp1c3QgbWVhbnMgdGhhdCB3ZSBjYW4ndCB1c2UgdGhlIGNhY2hlIHRvCisgICAgICAgICAgICAgICAgLy8gc3VwcG9ydCB0aGlzIGNoZWNrIGFuZCB3aWxsIGhhdmUgdG8gaW5jdXIgdGhlIGNvc3Qgb2YgaW5zdGFudGlhdGluZyBhIGdyYXBoIGluc3RhbmNlIGRpcmVjdGx5LiBidXQsCisgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSBzdGF0aWMgY2hlY2sgdGhlbiBzb21ldGhpbmcgZWxzZSBpcyBhbWlzcyBhbmQgd2Ugc2hvdWxkIHRocm93LgorICAgICAgICAgICAgICAgIGlmIChzdGF0aWNDaGVjaykgdGhyb3cgdW9lOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgcHJvdGVjdGVkIHZvaWQgYmVmb3JlTG9hZEdyYXBoV2l0aChmaW5hbCBHcmFwaCBnKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgLy8gZG8gbm90aGluZwogICAgIH0KQEAgLTEzOSw2ICsxNDcsNyBAQAogICAgICAgICAgICAgZ3JhcGhQcm92aWRlci5nZXRUZXN0TGlzdGVuZXIoKS5pZlByZXNlbnQobCAtPiBsLm9uVGVzdEVuZCh0aGlzLmdldENsYXNzKCksIG5hbWUuZ2V0TWV0aG9kTmFtZSgpKSk7CiAKICAgICAgICAgICAgIC8vIEdyYXBoUHJvdmlkZXIgdGhhdCBoYXMgaW1wbGVtZW50ZWQgdGhlIGNsZWFyIG1ldGhvZCBtdXN0IGNoZWNrIG51bGwgZm9yIGdyYXBoIGFuZCBjb25maWcuCisgICAgICAgICAgICAvLyBJZiAjYXNzdW1lUmVxdWlyZW1lbnRzQXJlTWV0Rm9yVGVzdCByZXR1cm5zIGZhbHNlIGluICNzZXR1cCwgZ3JhcGggYW5kIGNvbmZpZyB3aWxsIGJlIG51bGwuCiAgICAgICAgICAgICBncmFwaFByb3ZpZGVyLmNsZWFyKGdyYXBoLCBjb25maWcpOwogCiAgICAgICAgICAgICAvLyBBbGwgR3JhcGhQcm92aWRlciBvYmplY3RzIHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBNYW5hZ2VkR3JhcGhQcm92aWRlciwgYXMgdGhpcyBpcyBoYW5kbGVkIGJ5IEdyYXBoTWFuYWdlcgpAQCAtMTUwLDggKzE1OSw4IEBACiAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIlRoZSB7fSBpcyBub3Qgb2YgdHlwZSBNYW5hZ2VkR3JhcGhQcm92aWRlciBhbmQgdGhlcmVmb3JlIGdyYXBoIGluc3RhbmNlcyBtYXkgbGVhayBiZXR3ZWVuIHRlc3QgY2FzZXMuIiwgZ3JhcGhQcm92aWRlci5nZXRDbGFzcygpKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZFRlc3RJdGVyYXRvckxlYWspIHsKLSAgICAgICAgICAgICAgICBsb25nIHdhaXQgPSAzMDA7Ci0gICAgICAgICAgICAgICAgbG9uZ1tdIHRyaWVzID0gbmV3IGxvbmdbXSB7IDEsIDMsIDUsIDcsIDksIDE4LCAyNywgMzYsIDcyLCAxNDQsIDI1NiwgNTEyIH07CisgICAgICAgICAgICAgICAgZmluYWwgbG9uZyB3YWl0ID0gMzAwOworICAgICAgICAgICAgICAgIGZpbmFsIGxvbmdbXSB0cmllcyA9IG5ldyBsb25nW10geyAxLCAzLCA1LCA3LCA5LCAxOCwgMjcsIDM2LCA3MiwgMTQ0LCAyNTYsIDUxMiB9OwogICAgICAgICAgICAgICAgIGxvbmcgb3Blbkl0ckNvdW50ID0gU3RvcmVJdGVyYXRvckNvdW50ZXIuSU5TVEFOQ0UuZ2V0T3Blbkl0ZXJhdG9yQ291bnQoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpeCA9IDA7IGl4IDwgdHJpZXMubGVuZ3RoICYmIG9wZW5JdHJDb3VudCA+IDA7IGl4KyspIHsKICAgICAgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKHdhaXQgKiB0cmllc1tpeF0pOwpAQCAtMTg5LDkgKzE5OCwxMyBAQAogICAgICAgICByZXR1cm4gY29udmVydFRvVmVydGV4KGdyYXBoLCB2ZXJ0ZXhOYW1lKS5pZCgpOwogICAgIH0KIAorICAgIHB1YmxpYyBWZXJ0ZXggY29udmVydFRvVmVydGV4KGZpbmFsIFN0cmluZyB2ZXJ0ZXhOYW1lKSB7CisgICAgICAgIHJldHVybiBjb252ZXJ0VG9WZXJ0ZXgoZ3JhcGgsIHZlcnRleE5hbWUpOworICAgIH0KKwogICAgIHB1YmxpYyBWZXJ0ZXggY29udmVydFRvVmVydGV4KGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBTdHJpbmcgdmVydGV4TmFtZSkgewogICAgICAgICAvLyBhbGwgdGVzdCBncmFwaHMgaGF2ZSAibmFtZSIgYXMgYSB1bmlxdWUgaWQgd2hpY2ggbWFrZXMgaXQgZWFzeSB0byBoYXJkY29kZSB0aGlzLi4ud29ya3MgZm9yIG5vdwotICAgICAgICByZXR1cm4gZ3JhcGgudHJhdmVyc2FsKCkuVigpLmhhcygibmFtZSIsIHZlcnRleE5hbWUpLnRvTGlzdCgpLmdldCgwKTsKKyAgICAgICAgcmV0dXJuIGdyYXBoUHJvdmlkZXIudHJhdmVyc2FsKGdyYXBoKS5WKCkuaGFzKCJuYW1lIiwgdmVydGV4TmFtZSkudG9MaXN0KCkuZ2V0KDApOwogICAgIH0KIAogICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsIE9iamVjdD4gY29udmVydFRvVmVydGV4UHJvcGVydHlJZChmaW5hbCBTdHJpbmcgdmVydGV4TmFtZSwgZmluYWwgU3RyaW5nIHZlcnRleFByb3BlcnR5S2V5KSB7CkBAIC0yMDQsNyArMjE3LDcgQEAKIAogICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleFByb3BlcnR5PE9iamVjdD4+IGNvbnZlcnRUb1ZlcnRleFByb3BlcnR5KGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBTdHJpbmcgdmVydGV4TmFtZSwgZmluYWwgU3RyaW5nIHZlcnRleFByb3BlcnR5S2V5KSB7CiAgICAgICAgIC8vIGFsbCB0ZXN0IGdyYXBocyBoYXZlICJuYW1lIiBhcyBhIHVuaXF1ZSBpZCB3aGljaCBtYWtlcyBpdCBlYXN5IHRvIGhhcmRjb2RlIHRoaXMuLi53b3JrcyBmb3Igbm93Ci0gICAgICAgIHJldHVybiAoR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+PikgZ3JhcGgudHJhdmVyc2FsKCkuVigpLmhhcygibmFtZSIsIHZlcnRleE5hbWUpLnByb3BlcnRpZXModmVydGV4UHJvcGVydHlLZXkpOworICAgICAgICByZXR1cm4gKEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4UHJvcGVydHk8T2JqZWN0Pj4pIGdyYXBoUHJvdmlkZXIudHJhdmVyc2FsKGdyYXBoKS5WKCkuaGFzKCJuYW1lIiwgdmVydGV4TmFtZSkucHJvcGVydGllcyh2ZXJ0ZXhQcm9wZXJ0eUtleSk7CiAgICAgfQogCiAgICAgcHVibGljIEVkZ2UgY29udmVydFRvRWRnZShmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgU3RyaW5nIG91dFZlcnRleE5hbWUsIFN0cmluZyBlZGdlTGFiZWwsIGZpbmFsIFN0cmluZyBpblZlcnRleE5hbWUpIHsKQEAgLTI2Miw3ICsyNzUsNyBAQAogICAgIHB1YmxpYyB2b2lkIHByaW50VHJhdmVyc2FsRm9ybShmaW5hbCBUcmF2ZXJzYWwgdHJhdmVyc2FsKSB7CiAgICAgICAgIGxvZ2dlci5pbmZvKFN0cmluZy5mb3JtYXQoIlRlc3Rpbmc6ICVzIiwgbmFtZS5nZXRNZXRob2ROYW1lKCkpKTsKICAgICAgICAgbG9nZ2VyLmluZm8oIiAgIHByZS1zdHJhdGVneToiICsgdHJhdmVyc2FsKTsKLSAgICAgICAgdHJhdmVyc2FsLmhhc05leHQoKTsKKyAgICAgICAgaWYgKCF0cmF2ZXJzYWwuYXNBZG1pbigpLmlzTG9ja2VkKCkpIHRyYXZlcnNhbC5hc0FkbWluKCkuYXBwbHlTdHJhdGVnaWVzKCk7CiAgICAgICAgIGxvZ2dlci5pbmZvKCIgIHBvc3Qtc3RyYXRlZ3k6IiArIHRyYXZlcnNhbCk7CiAgICAgICAgIHZlcmlmeVVuaXF1ZVN0ZXBJZHModHJhdmVyc2FsLmFzQWRtaW4oKSk7CiAgICAgfQpAQCAtMjg2LDYgKzI5OSwyNCBAQAogICAgICAgICBBYnN0cmFjdEdyZW1saW5UZXN0LnZlcmlmeVVuaXF1ZVN0ZXBJZHModHJhdmVyc2FsLCAwLCBuZXcgSGFzaFNldDw+KCkpOwogICAgIH0KIAorICAgIHByaXZhdGUgc3RhdGljIFNldDxGZWF0dXJlUmVxdWlyZW1lbnQ+IGdldEZlYXR1cmVSZXF1aXJlbWVudHNGb3JUZXN0KGZpbmFsIE1ldGhvZCB0ZXN0TWV0aG9kLCBmaW5hbCBMb2FkR3JhcGhXaXRoW10gbG9hZEdyYXBoV2l0aHMpIHsKKyAgICAgICAgLy8gZ2V0IGZlYXR1cmUgcmVxdWlyZW1lbnRzIG9uIHRoZSB0ZXN0IG1ldGhvZCBhbmQgYWRkIHRoZW0gdG8gdGhlIGxpc3Qgb2Ygb25lcyB0byBjaGVjaworICAgICAgICBmaW5hbCBGZWF0dXJlUmVxdWlyZW1lbnRbXSBmZWF0dXJlUmVxdWlyZW1lbnQgPSB0ZXN0TWV0aG9kLmdldEFubm90YXRpb25zQnlUeXBlKEZlYXR1cmVSZXF1aXJlbWVudC5jbGFzcyk7CisgICAgICAgIGZpbmFsIExpc3Q8RmVhdHVyZVJlcXVpcmVtZW50PiBmcnMgPSBuZXcgQXJyYXlMaXN0PD4oQXJyYXlzLmFzTGlzdChmZWF0dXJlUmVxdWlyZW1lbnQpKTsKKworICAgICAgICAvLyBpZiB0aGUgZ3JhcGggaXMgbG9hZGluZyBkYXRhIHRoZW4gaXQgd2lsbCBjb21lIHdpdGggaXQncyBvd24gcmVxdWlyZW1lbnRzCisgICAgICAgIGlmIChsb2FkR3JhcGhXaXRocy5sZW5ndGggPiAwKSBmcnMuYWRkQWxsKGxvYWRHcmFwaFdpdGhzWzBdLnZhbHVlKCkuZmVhdHVyZXNSZXF1aXJlZCgpKTsKKworICAgICAgICAvLyBpZiB0aGUgZ3JhcGggaGFzIGEgc2V0IG9mIGZlYXR1cmUgcmVxdWlyZW1lbnRzIGJ1bmRsZWQgdG9nZXRoZXIgdGhlbiBhZGQgdGhvc2UKKyAgICAgICAgZmluYWwgRmVhdHVyZVJlcXVpcmVtZW50U2V0W10gZmVhdHVyZVJlcXVpcmVtZW50U2V0cyA9IHRlc3RNZXRob2QuZ2V0QW5ub3RhdGlvbnNCeVR5cGUoRmVhdHVyZVJlcXVpcmVtZW50U2V0LmNsYXNzKTsKKyAgICAgICAgaWYgKGZlYXR1cmVSZXF1aXJlbWVudFNldHMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIGZycy5hZGRBbGwoQXJyYXlzLnN0cmVhbShmZWF0dXJlUmVxdWlyZW1lbnRTZXRzKQorICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcChmIC0+IGYudmFsdWUoKS5mZWF0dXJlc1JlcXVpcmVkKCkuc3RyZWFtKCkpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSkpOworCisgICAgICAgIC8vIHByb2Nlc3MgdGhlIHVuaXF1ZSBzZXQgb2YgZmVhdHVyZSByZXF1aXJlbWVudHMKKyAgICAgICAgcmV0dXJuIG5ldyBIYXNoU2V0PD4oZnJzKTsKKyAgICB9CisKICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHZlcmlmeVVuaXF1ZVN0ZXBJZHMoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCwgZmluYWwgaW50IGRlcHRoLCBmaW5hbCBTZXQ8U3RyaW5nPiBpZHMpIHsKICAgICAgICAgZm9yIChmaW5hbCBTdGVwIHN0ZXAgOiB0cmF2ZXJzYWwuYXNBZG1pbigpLmdldFN0ZXBzKCkpIHsKICAgICAgICAgICAgIC8qZm9yIChpbnQgaSA9IDA7IGkgPCBkZXB0aDsgaSsrKSBTeXN0ZW0ub3V0LnByaW50KCJcdCIpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9HcmFwaE1hbmFnZXIuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vR3JhcGhNYW5hZ2VyLmphdmEKaW5kZXggNjg4NjQ2NS4uNzUwNjIyNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9HcmFwaE1hbmFnZXIuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0dyYXBoTWFuYWdlci5qYXZhCkBAIC0xODMsNiArMTgzLDExIEBACiAgICAgICAgICAgICBpZiAoaW5uZXJHcmFwaFByb3ZpZGVyIGluc3RhbmNlb2YgQXV0b0Nsb3NlYWJsZSkKICAgICAgICAgICAgICAgICAoKEF1dG9DbG9zZWFibGUpIGlubmVyR3JhcGhQcm92aWRlcikuY2xvc2UoKTsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgT3B0aW9uYWw8R3JhcGguRmVhdHVyZXM+IGdldFN0YXRpY0ZlYXR1cmVzKCkgeworICAgICAgICAgICAgcmV0dXJuIGlubmVyR3JhcGhQcm92aWRlci5nZXRTdGF0aWNGZWF0dXJlcygpOworICAgICAgICB9CiAgICAgfQogCiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0dyYXBoUHJvdmlkZXIuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vR3JhcGhQcm92aWRlci5qYXZhCmluZGV4IGZlOTA2MTkuLmVmZTI3MGEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vR3JhcGhQcm92aWRlci5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vR3JhcGhQcm92aWRlci5qYXZhCkBAIC0zMDAsNiArMzAwLDIyIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogR2V0cyBhIHtAbGluayBHcmFwaC5GZWF0dXJlc30gaW1wbGVtZW50YXRpb24gdGhhdCBjb250YWlucyBncmFwaCBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gdGhhdCB3aWxsIG5ldmVyIGNoYW5nZQorICAgICAqIGZyb20gZXhlY3V0aW9uIHRvIGV4ZWN1dGlvbiBvZiB0aGUgdGVzdHMgZ2l2ZW4gdGhpcyBjdXJyZW50IHtAY29kZSBHcmFwaFByb3ZpZGVyfSBpbXBsZW1lbnRhdGlvbi4gSW1wbGVtZW50aW5nCisgICAgICogdGhpcyBtZXRob2Qgd2lsbCBhbGxvdyB0aGUgdGVzdCBzdWl0ZSB0byBhdm9pZCBjcmVhdGlvbiBvZiBhIHtAbGluayBHcmFwaH0gaW5zdGFuY2UgYW5kIHRodXMgc3BlZWQgdXAgdGhlCisgICAgICogZXhlY3V0aW9uIG9mIHRlc3RzIGlmIHRoYXQgY3JlYXRpb24gcHJvY2VzcyBpcyBleHBlbnNpdmUuIEl0IGlzIGltcG9ydGFudCB0aGF0IHRoaXMgc3RhdGljIHNldCBvZiBmZWF0dXJlcyBiZQorICAgICAqIHJlcHJlc2VudGF0aXZlIG9mIHdoYXQgdGhlIHtAbGluayBHcmFwaH0gaW5zdGFuY2UgcHJvZHVjZWQgYnkgdGhpcyB7QGNvZGUgR3JhcGhQcm92aWRlcn0gY2FuIGFjdHVhbGx5IGRvIG9yCisgICAgICogZWxzZSB0aGUgY29zdCBvZiB7QGxpbmsgR3JhcGh9IGluc3RhbnRpYXRpb24gd2lsbCBiZSBpbmN1cnJlZCB3aGVuIGl0IGRvZXNuJ3QgbmVlZCB0byBiZS4gSXQgaXMgYWxzbyBpbXBvcnRhbnQKKyAgICAgKiB0aGF0IHRoaXMgbWV0aG9kIGJlIGZhc3RlciB0aGFuIHRoZSBjb3N0IG9mIHtAbGluayBHcmFwaH0gY3JlYXRpb24gaW4gdGhlIGZpcnN0IHBsYWNlIG9yIHRoZXJlIHJlYWxseSB3b24ndCBiZQorICAgICAqIGFueSBkaWZmZXJlbmNlIGluIGV4ZWN1dGlvbiBzcGVlZC4gSW4gY2FzZXMgd2hlcmUgc29tZSBmZWF0dXJlcyBhcmUgc3RhdGljIGFuZCBvdGhlcnMgYXJlIG5vdCwgc2ltcGx5IHRocm93CisgICAgICogYW4ge0Bjb2RlIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9ufSBmcm9tIHRob3NlIGZlYXR1cmVzIHRvIGxldCB0aGUgdGVzdCBzdWl0ZSBrbm93IHRoYXQgaXQgY2Fubm90IHJlbHkKKyAgICAgKiBvbiB0aGVtIGFuZCB0aGUgdGVzdCBzdWl0ZSB3aWxsIHJldmVydCB0byB1c2luZyBhIGNvbnN0cnVjdGVkIHtAbGluayBHcmFwaH0gaW5zdGFuY2UuCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgT3B0aW9uYWw8R3JhcGguRmVhdHVyZXM+IGdldFN0YXRpY0ZlYXR1cmVzKCkgeworICAgICAgICByZXR1cm4gT3B0aW9uYWwuZW1wdHkoKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBBbiBhbm5vdGF0aW9uIHRvIGJlIGFwcGxpZWQgdG8gYSB7QGNvZGUgR3JhcGhQcm92aWRlcn0gaW1wbGVtZW50YXRpb24gdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCiAgICAgICogYWJvdXQgaXRzIGludGVudGlvbnMuIFRoZSB7QGNvZGUgRGVzY3JpcHRvcn0gaXMgcmVxdWlyZWQgYnkgdGhvc2Uge0Bjb2RlIEdyYXBoUHJvdmlkZXJ9IGltcGxlbWVudGF0aW9ucwogICAgICAqIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byB0ZXN0IHN1aXRlcyB0aGF0IHVzZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9UZXN0SGVscGVyLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL1Rlc3RIZWxwZXIuamF2YQppbmRleCAwNzY3MDY0Li4wNjI5NWY0IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL1Rlc3RIZWxwZXIuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL1Rlc3RIZWxwZXIuamF2YQpAQCAtNDcsNyArNDcsOCBAQAogICoKICAqIE5PVEU6IFRoaXMgY2xhc3MgZHVwbGljYXRlcyB0aGUgVGVzdEhlbHBlciBjbGFzcyBmcm9tIGdyZW1saW4tY29yZS4gT25lIG9mIHRoZW0gbXVzdCBiZSByZW1vdmVkLgogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgVGVzdEhlbHBlciBleHRlbmRzIFRlc3RTdXBwb3J0IHtwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoVGVzdFN1cHBvcnQuY2xhc3MpOworcHVibGljIGZpbmFsIGNsYXNzIFRlc3RIZWxwZXIgZXh0ZW5kcyBUZXN0U3VwcG9ydCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFRlc3RTdXBwb3J0LmNsYXNzKTsKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUmFuZG9tIFJBTkRPTTsKIApAQCAtNTksNyArNjAsNyBAQAogCiAgICAgcHJpdmF0ZSBUZXN0SGVscGVyKCkgewogICAgIH0KLSAgICAKKwogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGNvbnZlcnRUb1JlbGF0aXZlKGZpbmFsIENsYXNzIGNsYXp6LCBmaW5hbCBGaWxlIGYpIHsKICAgICAgICAgZmluYWwgRmlsZSByb290ID0gZ2V0Um9vdE9mQnVpbGREaXJlY3RvcnkoY2xhenopLmdldFBhcmVudEZpbGUoKTsKICAgICAgICAgcmV0dXJuIHJvb3QudG9VUkkoKS5yZWxhdGl2aXplKGYudG9VUkkoKSkudG9TdHJpbmcoKTsKQEAgLTc4LDcgKzc5LDcgQEAKICAgICAgICAgYXNzdW1lVGhhdCgiU2V0IHRoZSAnYXNzZXJ0Tm9uRGV0ZXJtaW5pc3RpYycgcHJvcGVydHkgdG8gdHJ1ZSB0byBleGVjdXRlIHRoaXMgdGVzdCIsCiAgICAgICAgICAgICAgICAgU3lzdGVtLmdldFByb3BlcnR5KCJhc3NlcnROb25EZXRlcm1pbmlzdGljIiksIGlzKCJ0cnVlIikpOwogICAgIH0KLSAgICAgICAgCisKICAgICAvLy8vLy8vLy8vLy8vLy8KIAogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB2YWxpZGF0ZVZlcnRleEVxdWFsaXR5KGZpbmFsIFZlcnRleCBvcmlnaW5hbFZlcnRleCwgZmluYWwgVmVydGV4IG90aGVyVmVydGV4LCBib29sZWFuIHRlc3RFZGdlcykgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0Fic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QuamF2YQppbmRleCA0NzQ5ZTkzLi4wYTJhNDA1IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QuamF2YQpAQCAtMTI3LDcgKzEyNyw3IEBACiAKICAgICBwdWJsaWMgc3RhdGljIDxUPiB2b2lkIGNoZWNrUmVzdWx0cyhmaW5hbCBMaXN0PFQ+IGV4cGVjdGVkUmVzdWx0cywgZmluYWwgVHJhdmVyc2FsPD8sIFQ+IHRyYXZlcnNhbCkgewogICAgICAgICBmaW5hbCBMaXN0PFQ+IHJlc3VsdHMgPSB0cmF2ZXJzYWwudG9MaXN0KCk7Ci0gICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRUaGF0KHRyYXZlcnNhbC5oYXNOZXh0KCksIGlzKGZhbHNlKSk7CiAgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdHMuc2l6ZSgpICE9IHJlc3VsdHMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkV4cGVjdGVkIHJlc3VsdHM6ICIgKyBleHBlY3RlZFJlc3VsdHMpOwogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJBY3R1YWwgcmVzdWx0czogICAiICsgcmVzdWx0cyk7CkBAIC0xNDUsMTEgKzE0NSwxMCBAQAogICAgICAgICB9CiAgICAgICAgIGZpbmFsIE1hcDxULCBMb25nPiBleHBlY3RlZFJlc3VsdHNDb3VudCA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICAgZmluYWwgTWFwPFQsIExvbmc+IHJlc3VsdHNDb3VudCA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgZXhwZWN0ZWRSZXN1bHRzLmZvckVhY2godCAtPiBNYXBIZWxwZXIuaW5jcihleHBlY3RlZFJlc3VsdHNDb3VudCwgdCwgMUwpKTsKKyAgICAgICAgcmVzdWx0cy5mb3JFYWNoKHQgLT4gTWFwSGVscGVyLmluY3IocmVzdWx0c0NvdW50LCB0LCAxTCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoIkNoZWNraW5nIGluZGV4aW5nIGlzIGVxdWl2YWxlbnQiLCBleHBlY3RlZFJlc3VsdHNDb3VudC5zaXplKCksIHJlc3VsdHNDb3VudC5zaXplKCkpOwotICAgICAgICBleHBlY3RlZFJlc3VsdHMuZm9yRWFjaCh0IC0+IE1hcEhlbHBlci5pbmNyKGV4cGVjdGVkUmVzdWx0c0NvdW50LCB0LCAxbCkpOwotICAgICAgICByZXN1bHRzLmZvckVhY2godCAtPiBNYXBIZWxwZXIuaW5jcihyZXN1bHRzQ291bnQsIHQsIDFsKSk7CiAgICAgICAgIGV4cGVjdGVkUmVzdWx0c0NvdW50LmZvckVhY2goKGssIHYpIC0+IGFzc2VydEVxdWFscygiQ2hlY2tpbmcgcmVzdWx0IGdyb3VwIGNvdW50cyIsIHYsIHJlc3VsdHNDb3VudC5nZXQoaykpKTsKLSAgICAgICAgYXNzZXJ0VGhhdCh0cmF2ZXJzYWwuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOwogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgPFQ+IHZvaWQgY2hlY2tSZXN1bHRzKGZpbmFsIE1hcDxULCBMb25nPiBleHBlY3RlZFJlc3VsdHMsIGZpbmFsIFRyYXZlcnNhbDw/LCBUPiB0cmF2ZXJzYWwpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9HcmVtbGluUHJvY2Vzc1J1bm5lci5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0dyZW1saW5Qcm9jZXNzUnVubmVyLmphdmEKaW5kZXggYjc2MTcxOS4uMjYzNjE3MSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0dyZW1saW5Qcm9jZXNzUnVubmVyLmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0dyZW1saW5Qcm9jZXNzUnVubmVyLmphdmEKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAgICAgaWYgKHRoaXMuaXNJZ25vcmVkKG1ldGhvZCkpIHsKICAgICAgICAgICAgIG5vdGlmaWVyLmZpcmVUZXN0SWdub3JlZChkZXNjcmlwdGlvbik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBFYWNoVGVzdE5vdGlmaWVyIGVhY2hOb3RpZmllciA9IG5ldyBFYWNoVGVzdE5vdGlmaWVyKG5vdGlmaWVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICBmaW5hbCBFYWNoVGVzdE5vdGlmaWVyIGVhY2hOb3RpZmllciA9IG5ldyBFYWNoVGVzdE5vdGlmaWVyKG5vdGlmaWVyLCBkZXNjcmlwdGlvbik7CiAgICAgICAgICAgICBlYWNoTm90aWZpZXIuZmlyZVRlc3RTdGFydGVkKCk7CiAgICAgICAgICAgICBib29sZWFuIGlnbm9yZWQgPSBmYWxzZTsKICAgICAgICAgICAgIHRyeSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvUHJvY2Vzc0NvbXB1dGVyU3VpdGUuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9Qcm9jZXNzQ29tcHV0ZXJTdWl0ZS5qYXZhCmluZGV4IGRlNTNkODcuLjNjYTViNzYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9Qcm9jZXNzQ29tcHV0ZXJTdWl0ZS5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9Qcm9jZXNzQ29tcHV0ZXJTdWl0ZS5qYXZhCkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsb25lLkNsb25lVmVydGV4UHJvZ3JhbVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcucGVlcnByZXNzdXJlLlBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW1UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5yYW5raW5nLnBhZ2VyYW5rLlBhZ2VSYW5rVmVydGV4UHJvZ3JhbVRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnNlYXJjaC5wYXRoLlNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsRW5naW5lOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsSW50ZXJydXB0aW9uQ29tcHV0ZXJUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db21wbGV4VGVzdDsKQEAgLTUwLDggKzUxLDEwIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5XaGVyZVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5BZGRFZGdlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvYWxlc2NlVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvbm5lY3RlZENvbXBvbmVudFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db25zdGFudFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db3VudFRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5FbGVtZW50TWFwVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkZsYXRNYXBUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRm9sZFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5HcmFwaFRlc3Q7CkBAIC03MCwxMSArNzMsMTQgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2dyYW1UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvamVjdFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Qcm9wZXJ0aWVzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2hvcnRlc3RQYXRoVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TdW1UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVW5mb2xkVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZhbHVlTWFwVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuQWdncmVnYXRlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5FeHBsYWluVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Hcm91cENvdW50VGVzdDsKQEAgLTE0Miw4ICsxNDgsMTAgQEAKIAogICAgICAgICAgICAgLy8gbWFwCiAgICAgICAgICAgICBDb2FsZXNjZVRlc3QuVHJhdmVyc2Fscy5jbGFzcywKKyAgICAgICAgICAgIENvbm5lY3RlZENvbXBvbmVudFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIENvbnN0YW50VGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgQ291bnRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCisgICAgICAgICAgICBFbGVtZW50TWFwVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgRmxhdE1hcFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIEZvbGRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBHcmFwaFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKQEAgLTE2NCwxMCArMTcyLDEzIEBACiAgICAgICAgICAgICBQcm9qZWN0VGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgUHJvZ3JhbVRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFByb3BlcnRpZXNUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCisgICAgICAgICAgICBSZWFkVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAorICAgICAgICAgICAgU2hvcnRlc3RQYXRoVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgU2VsZWN0VGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgVW5mb2xkVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgVmFsdWVNYXBUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBWZXJ0ZXhUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCisgICAgICAgICAgICBXcml0ZVRlc3QuVHJhdmVyc2Fscy5jbGFzcywKIAogICAgICAgICAgICAgLy8gc2lkZUVmZmVjdAogICAgICAgICAgICAgQWRkRWRnZVRlc3QuVHJhdmVyc2Fscy5jbGFzcywKQEAgLTE5MSw2ICsyMDIsNyBAQAogICAgICAgICAgICAgLy8gYWxnb3JpdGhtcwogICAgICAgICAgICAgUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtVGVzdC5jbGFzcywKICAgICAgICAgICAgIFBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW1UZXN0LmNsYXNzLAorICAgICAgICAgICAgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVRlc3QuY2xhc3MsCiAgICAgICAgICAgICBCdWxrTG9hZGVyVmVydGV4UHJvZ3JhbVRlc3QuY2xhc3MsCiAgICAgICAgICAgICBCdWxrRHVtcGVyVmVydGV4UHJvZ3JhbVRlc3QuY2xhc3MsCiAgICAgICAgICAgICBDbG9uZVZlcnRleFByb2dyYW1UZXN0LmNsYXNzLApAQCAtMjM5LDYgKzI1MSw3IEBACiAgICAgICAgICAgICBDb25zdGFudFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBDb3VudFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBGbGF0TWFwVGVzdC5jbGFzcywKKyAgICAgICAgICAgIEVsZW1lbnRNYXBUZXN0LmNsYXNzLAogICAgICAgICAgICAgRm9sZFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBNYXRjaFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBNYXRoVGVzdC5jbGFzcywKQEAgLTI1Niw2ICsyNjksNyBAQAogICAgICAgICAgICAgUHJvamVjdFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBQcm9ncmFtVGVzdC5jbGFzcywKICAgICAgICAgICAgIFByb3BlcnRpZXNUZXN0LmNsYXNzLAorICAgICAgICAgICAgU2hvcnRlc3RQYXRoVGVzdC5jbGFzcywKICAgICAgICAgICAgIFNlbGVjdFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBVbmZvbGRUZXN0LmNsYXNzLAogICAgICAgICAgICAgVmFsdWVNYXBUZXN0LmNsYXNzLApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL1Byb2Nlc3NTdGFuZGFyZFN1aXRlLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvUHJvY2Vzc1N0YW5kYXJkU3VpdGUuamF2YQppbmRleCAxNmMwZDBkLi5mMTI3Y2EwIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvUHJvY2Vzc1N0YW5kYXJkU3VpdGUuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvUHJvY2Vzc1N0YW5kYXJkU3VpdGUuamF2YQpAQCAtNDgsOSArNDgsMTEgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvYWxlc2NlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvbnN0YW50VGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvdW50VGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkVsZW1lbnRNYXBUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRmxhdE1hcFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Gb2xkVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyYXBoVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkluZGV4VGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkxvb3BzVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hcFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3Q7CkBAIC02MywxMSArNjUsMTMgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2ZpbGVUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvamVjdFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Qcm9wZXJ0aWVzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlN1bVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5VbmZvbGRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVmFsdWVNYXBUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVmVydGV4VGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLldyaXRlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5BZ2dyZWdhdGVUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkV4cGxhaW5UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0Lkdyb3VwQ291bnRUZXN0OwpAQCAtMTM3LDEwICsxNDEsMTIgQEAKICAgICAgICAgICAgIENvYWxlc2NlVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgQ29uc3RhbnRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBDb3VudFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKKyAgICAgICAgICAgIEVsZW1lbnRNYXBUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBGbGF0TWFwVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgRm9sZFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIEdyYXBoVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgTG9vcHNUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCisgICAgICAgICAgICBJbmRleFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIE1hcFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIE1hdGNoVGVzdC5Db3VudE1hdGNoVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIE1hdGNoVGVzdC5HcmVlZHlNYXRjaFRyYXZlcnNhbHMuY2xhc3MsCkBAIC0xNTQsMTAgKzE2MCwxMiBAQAogICAgICAgICAgICAgUHJvZmlsZVRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFByb2plY3RUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBQcm9wZXJ0aWVzVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAorICAgICAgICAgICAgUmVhZFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFNlbGVjdFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFZlcnRleFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFVuZm9sZFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFZhbHVlTWFwVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAorICAgICAgICAgICAgV3JpdGVUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAKICAgICAgICAgICAgIC8vIHNpZGVFZmZlY3QKICAgICAgICAgICAgIEFnZ3JlZ2F0ZVRlc3QuVHJhdmVyc2Fscy5jbGFzcywKQEAgLTIyNiw5ICsyMzQsMTEgQEAKICAgICAgICAgICAgIENvYWxlc2NlVGVzdC5jbGFzcywKICAgICAgICAgICAgIENvbnN0YW50VGVzdC5jbGFzcywKICAgICAgICAgICAgIENvdW50VGVzdC5jbGFzcywKKyAgICAgICAgICAgIEVsZW1lbnRNYXBUZXN0LmNsYXNzLAogICAgICAgICAgICAgRmxhdE1hcFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBGb2xkVGVzdC5jbGFzcywKICAgICAgICAgICAgIExvb3BzVGVzdC5jbGFzcywKKyAgICAgICAgICAgIEluZGV4VGVzdC5jbGFzcywKICAgICAgICAgICAgIE1hcFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBNYXRjaFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBNYXRoVGVzdC5jbGFzcywKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaENvbXB1dGVyVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL0dyYXBoQ29tcHV0ZXJUZXN0LmphdmEKaW5kZXggMmIwMThkYi4uZDE2YzhiOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL0dyYXBoQ29tcHV0ZXJUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL0dyYXBoQ29tcHV0ZXJUZXN0LmphdmEKQEAgLTEzNTAsMTMgKzEzNTAsMTMgQEAKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoMGwpLCByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKS5FKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZigwbCksIHJlc3VsdC5ncmFwaCgpLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDBsKSwgcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkuRSgpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLm5leHQoKSk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZShyZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLmhhc05leHQoKSk7CiAgICAgICAgICAgICAvLy8KICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCBncmFwaC50cmF2ZXJzYWwoKS5WKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZig2bCksIGdyYXBoLnRyYXZlcnNhbCgpLkUoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDEybCksIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgZ3JhcGgudHJhdmVyc2FsKCkuRSgpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLm5leHQoKSk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZShncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLmhhc05leHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzNzYsNyArMTM3Niw3IEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgZ3JhcGgudHJhdmVyc2FsKCkuRSgpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoMTJsKSwgZ3JhcGgudHJhdmVyc2FsKCkuVigpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCBncmFwaC50cmF2ZXJzYWwoKS5FKCkudmFsdWVzKCkuY291bnQoKS5uZXh0KCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkubmV4dCgpKTsKKyAgICAgICAgICAgIGFzc2VydEZhbHNlKGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkuaGFzTmV4dCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTM5Niw3ICsxMzk2LDcgQEAKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCBncmFwaC50cmF2ZXJzYWwoKS5FKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZigxMmwpLCBncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZig2bCksIGdyYXBoLnRyYXZlcnNhbCgpLkUoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgZ3JhcGgudHJhdmVyc2FsKCkuVigpLnZhbHVlcygibW9uZXkiKS5zdW0oKS5uZXh0KCkpOworICAgICAgICAgICAgYXNzZXJ0RmFsc2UoZ3JhcGgudHJhdmVyc2FsKCkuVigpLnZhbHVlcygibW9uZXkiKS5zdW0oKS5oYXNOZXh0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDEwLDEzICsxNDEwLDEzIEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkuRSgpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoMTJsKSwgcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkuVigpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKS5FKCkudmFsdWVzKCkuY291bnQoKS5uZXh0KCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHJlc3VsdC5ncmFwaCgpLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkubmV4dCgpKTsKKyAgICAgICAgICAgIGFzc2VydEZhbHNlKHJlc3VsdC5ncmFwaCgpLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkuaGFzTmV4dCgpKTsKICAgICAgICAgICAgIC8vLwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZig2bCksIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgZ3JhcGgudHJhdmVyc2FsKCkuRSgpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoMTJsKSwgZ3JhcGgudHJhdmVyc2FsKCkuVigpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCBncmFwaC50cmF2ZXJzYWwoKS5FKCkudmFsdWVzKCkuY291bnQoKS5uZXh0KCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkubmV4dCgpKTsKKyAgICAgICAgICAgIGFzc2VydEZhbHNlKGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkuaGFzTmV4dCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjUwMCw3ICsyNTAwLDcgQEAKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgZy5WKCkucmVwZWF0KF9fLm91dCgpKS5lbWl0KCkucHJvZ3JhbSh2cCkuZGVkdXAoKQotICAgICAgICAgICAgICAgICAgICAudmFsdWVNYXAoIm5hbWUiLCAicGwiKS5mb3JFYWNoUmVtYWluaW5nKChNYXA8U3RyaW5nLCBPYmplY3Q+IG1hcCkgLT4geworICAgICAgICAgICAgICAgICAgICAudmFsdWVNYXAoIm5hbWUiLCAicGwiKS5mb3JFYWNoUmVtYWluaW5nKChNYXA8T2JqZWN0LCBPYmplY3Q+IG1hcCkgLT4gewogCiAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSAoKExpc3QpIG1hcC5nZXQoIm5hbWUiKSkuZ2V0KDApOwogICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8SW50ZWdlcj4gcGF0aExlbmd0aHMgPSAoTGlzdDxJbnRlZ2VyPikgbWFwLmdldCgicGwiKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9zZWFyY2gvcGF0aC9TaG9ydGVzdFBhdGhUZXN0SGVscGVyLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVGVzdEhlbHBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmM2FhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVGVzdEhlbHBlci5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnNlYXJjaC5wYXRoOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSW1tdXRhYmxlUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5NYXBIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuTXV0YWJsZVBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmhhbWNyZXN0Lk1hdGNoZXJzOworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJzLmVxdWFsVG87CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVycy5pczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VGhhdDsKKworLyoqCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICovCitwdWJsaWMgY2xhc3MgU2hvcnRlc3RQYXRoVGVzdEhlbHBlciB7CisKKyAgICBwcml2YXRlIGZpbmFsIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHRlc3Q7CisgICAgcHJpdmF0ZSBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnOworICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZywgVmVydGV4PiB2ZXJ0ZXhDYWNoZTsKKyAgICBwcml2YXRlIGZpbmFsIE1hcDxPYmplY3QsIE1hcDxPYmplY3QsIEVkZ2U+PiBlZGdlQ2FjaGU7CisKKyAgICBwdWJsaWMgU2hvcnRlc3RQYXRoVGVzdEhlbHBlcihmaW5hbCBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB0ZXN0LCBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnKSB7CisgICAgICAgIHRoaXMudGVzdCA9IHRlc3Q7CisgICAgICAgIHRoaXMuZyA9IGc7CisgICAgICAgIHRoaXMudmVydGV4Q2FjaGUgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIHRoaXMuZWRnZUNhY2hlID0gbmV3IEhhc2hNYXA8PigpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNoZWNrUmVzdWx0cyhmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkLCBmaW5hbCBMaXN0PFBhdGg+IGFjdHVhbCkgeworICAgICAgICBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdC5jaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIF9fLmluamVjdChhY3R1YWwudG9BcnJheShuZXcgUGF0aFthY3R1YWwuc2l6ZSgpXSkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUGF0aCBtYWtlUGF0aChmaW5hbCBTdHJpbmcuLi4gbmFtZXMpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VQYXRoKGZhbHNlLCBuYW1lcyk7CisgICAgfQorCisgICAgcHVibGljIFBhdGggbWFrZVBhdGgoZmluYWwgYm9vbGVhbiBpbmNsdWRlRWRnZXMsIGZpbmFsIFN0cmluZy4uLiBuYW1lcykgeworICAgICAgICBQYXRoIHBhdGggPSBJbW11dGFibGVQYXRoLm1ha2UoKTsKKyAgICAgICAgYm9vbGVhbiBmaXJzdCA9IHRydWU7CisgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIG5hbWUgOiBuYW1lcykgeworICAgICAgICAgICAgZmluYWwgVmVydGV4IHZlcnRleCA9IHZlcnRleENhY2hlLmNvbXB1dGVJZkFic2VudChuYW1lLCB0ZXN0Ojpjb252ZXJ0VG9WZXJ0ZXgpOworICAgICAgICAgICAgaWYgKCFmaXJzdCkgeworICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlRWRnZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGlkMSA9ICgoVmVydGV4KSBwYXRoLmdldChwYXRoLnNpemUoKSAtIDEpKS5pZCgpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3QgaWQyID0gdmVydGV4LmlkKCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIEVkZ2UgZWRnZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2VDYWNoZS5jb250YWluc0tleShpZDEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlZGdlID0gZWRnZUNhY2hlLmdldChpZDEpLmNvbXB1dGVJZkFic2VudChpZDIsIGlkIC0+IGdldEVkZ2UoaWQxLCBpZCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2VDYWNoZS5jb250YWluc0tleShpZDIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlZGdlID0gZWRnZUNhY2hlLmdldChpZDIpLmNvbXB1dGVJZkFic2VudChpZDEsIGlkIC0+IGdldEVkZ2UoaWQsIGlkMikpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUNhY2hlLnB1dChpZDEsIG5ldyBIYXNoTWFwPD4oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlZGdlQ2FjaGUuZ2V0KGlkMSkucHV0KGlkMiwgZWRnZSA9IGdldEVkZ2UoaWQxLCBpZDIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5leHRlbmQoZWRnZSwgQ29sbGVjdGlvbnMuZW1wdHlTZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcGF0aCA9IHBhdGguZXh0ZW5kKHZlcnRleCwgQ29sbGVjdGlvbnMuZW1wdHlTZXQoKSk7CisgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0KKworICAgIHByaXZhdGUgRWRnZSBnZXRFZGdlKGZpbmFsIE9iamVjdCBpZDEsIGZpbmFsIE9iamVjdCBpZDIpIHsKKyAgICAgICAgcmV0dXJuIGcuVihpZDEpCisgICAgICAgICAgICAgICAgLmJvdGhFKCkuZmlsdGVyKF9fLm90aGVyVigpLmhhc0lkKGlkMikpCisgICAgICAgICAgICAgICAgLm5leHQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9zZWFyY2gvcGF0aC9TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMzI5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVRlc3QuamF2YQpAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKK2ltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkNSRVc7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuR1JBVEVGVUw7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCisvKioKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK3B1YmxpYyBjbGFzcyBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKKworICAgIHByaXZhdGUgU2hvcnRlc3RQYXRoVGVzdEhlbHBlciBoZWxwZXI7CisKKyAgICBAQmVmb3JlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZUhlbHBlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0aGlzLmhlbHBlciAgPSBuZXcgU2hvcnRlc3RQYXRoVGVzdEhlbHBlcih0aGlzLCBnKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kQWxsU2hvcnRlc3RQYXRoc1dpdGhEZWZhdWx0UGFyYW1ldGVycygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSBncmFwaC5jb21wdXRlKGdyYXBoUHJvdmlkZXIuZ2V0R3JhcGhDb21wdXRlcihncmFwaCkuZ2V0Q2xhc3MoKSkuCisgICAgICAgICAgICAgICAgcHJvZ3JhbShTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGhlbHBlci5jaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHNob3J0ZXN0UGF0aHMpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRBbGxTaG9ydGVzdFBhdGhzV2l0aEVkZ2VzSW5jbHVkZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmluY2x1ZGVFZGdlcyh0cnVlKS5jcmVhdGUoZ3JhcGgpKS5zdWJtaXQoKS5nZXQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKS5tYXAocCAtPiBoZWxwZXIubWFrZVBhdGgodHJ1ZSwgcCkpCisgICAgICAgICAgICAgICAgLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGhlbHBlci5jaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHNob3J0ZXN0UGF0aHMpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRPdXREaXJlY3RlZFNob3J0ZXN0UGF0aHMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTGlzdDxTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtPiBwcm9ncmFtcyA9IEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmVkZ2VUcmF2ZXJzYWwoX18ub3V0RSgpKS5jcmVhdGUoZ3JhcGgpLAorICAgICAgICAgICAgICAgIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKS5lZGdlRGlyZWN0aW9uKERpcmVjdGlvbi5PVVQpLmNyZWF0ZShncmFwaCkpOworICAgICAgICBmb3IgKGZpbmFsIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0gcHJvZ3JhbSA6IHByb2dyYW1zKSB7CisgICAgICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSBncmFwaC5jb21wdXRlKGdyYXBoUHJvdmlkZXIuZ2V0R3JhcGhDb21wdXRlcihncmFwaCkuZ2V0Q2xhc3MoKSkuCisgICAgICAgICAgICAgICAgICAgIHByb2dyYW0ocHJvZ3JhbSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IChwWzBdLmVxdWFscygibWFya28iKSAmJiAhcFtwLmxlbmd0aCAtIDFdLmVxdWFscygicGV0ZXIiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInZhZGFzIikgJiYgcC5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoImxvcCIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJqb3NoIikgJiYgQXJyYXlzLmFzTGlzdCgibG9wIiwgImpvc2giLCAicmlwcGxlIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInJpcHBsZSIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJwZXRlciIpICYmIEFycmF5cy5hc0xpc3QoImxvcCIsICJwZXRlciIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpKQorICAgICAgICAgICAgICAgICAgICAubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRJbkRpcmVjdGVkU2hvcnRlc3RQYXRocygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBMaXN0PFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0+IHByb2dyYW1zID0gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuZWRnZVRyYXZlcnNhbChfXy5pbkUoKSkuY3JlYXRlKGdyYXBoKSwKKyAgICAgICAgICAgICAgICBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuZWRnZURpcmVjdGlvbihEaXJlY3Rpb24uSU4pLmNyZWF0ZShncmFwaCkpOworICAgICAgICBmb3IgKGZpbmFsIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0gcHJvZ3JhbSA6IHByb2dyYW1zKSB7CisgICAgICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSBncmFwaC5jb21wdXRlKGdyYXBoUHJvdmlkZXIuZ2V0R3JhcGhDb21wdXRlcihncmFwaCkuZ2V0Q2xhc3MoKSkuCisgICAgICAgICAgICAgICAgICAgIHByb2dyYW0ocHJvZ3JhbSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IChwWzBdLmVxdWFscygibWFya28iKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygidmFkYXMiKSAmJiBBcnJheXMuYXNMaXN0KCJtYXJrbyIsICJ2YWRhcyIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJsb3AiKSAmJiBBcnJheXMuYXNMaXN0KCJtYXJrbyIsICJsb3AiLCAiam9zaCIsICJwZXRlciIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJqb3NoIikgJiYgQXJyYXlzLmFzTGlzdCgibWFya28iLCAiam9zaCIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJyaXBwbGUiKSAmJiBBcnJheXMuYXNMaXN0KCJtYXJrbyIsICJqb3NoIiwgInJpcHBsZSIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJwZXRlciIpICYmIHAubGVuZ3RoID09IDEpKQorICAgICAgICAgICAgICAgICAgICAubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmREaXJlY3RlZFNob3J0ZXN0UGF0aHNXaXRoRWRnZXNJbmNsdWRlZCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSBncmFwaC5jb21wdXRlKGdyYXBoUHJvdmlkZXIuZ2V0R3JhcGhDb21wdXRlcihncmFwaCkuZ2V0Q2xhc3MoKSkuCisgICAgICAgICAgICAgICAgcHJvZ3JhbShTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuZWRnZVRyYXZlcnNhbChfXy5vdXRFKCkpLmluY2x1ZGVFZGdlcyh0cnVlKS5jcmVhdGUoZ3JhcGgpKS5zdWJtaXQoKS5nZXQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiAocFswXS5lcXVhbHMoIm1hcmtvIikgJiYgIXBbcC5sZW5ndGggLSAxXS5lcXVhbHMoInBldGVyIikpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInZhZGFzIikgJiYgcC5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygibG9wIikgJiYgcC5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygiam9zaCIpICYmIEFycmF5cy5hc0xpc3QoImxvcCIsICJqb3NoIiwgInJpcHBsZSIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInJpcHBsZSIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInBldGVyIikgJiYgQXJyYXlzLmFzTGlzdCgibG9wIiwgInBldGVyIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkpCisgICAgICAgICAgICAgICAgLm1hcChwIC0+IGhlbHBlci5tYWtlUGF0aCh0cnVlLCBwKSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZFNob3J0ZXN0UGF0aHNXaXRoU3RhcnRWZXJ0ZXhGaWx0ZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLnNvdXJjZShfXy5oYXMoIm5hbWUiLCAibWFya28iKSkuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gcFswXS5lcXVhbHMoIm1hcmtvIikpLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kU2hvcnRlc3RQYXRoc1dpdGhFbmRWZXJ0ZXhGaWx0ZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLnRhcmdldChfXy5oYXMoIm5hbWUiLCAibWFya28iKSkuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gcFtwLmxlbmd0aCAtIDFdLmVxdWFscygibWFya28iKSkubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGhlbHBlci5jaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHNob3J0ZXN0UGF0aHMpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRTaG9ydGVzdFBhdGhzV2l0aFN0YXJ0RW5kVmVydGV4RmlsdGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKQorICAgICAgICAgICAgICAgICAgICAgICAgLnNvdXJjZShfXy5oYXMoIm5hbWUiLCAibWFya28iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC50YXJnZXQoX18uaGFzTGFiZWwoInNvZnR3YXJlIikpLmNyZWF0ZShncmFwaCkpLnN1Ym1pdCgpLmdldCgpOworICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHNob3J0ZXN0UGF0aHMgPSByZXN1bHQubWVtb3J5KCkuZ2V0KFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+CisgICAgICAgICAgICAgICAgICAgICAgICBwWzBdLmVxdWFscygibWFya28iKSAmJiBBcnJheXMuYXNMaXN0KCJsb3AiLCAicmlwcGxlIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGhlbHBlci5jaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHNob3J0ZXN0UGF0aHMpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZFVzZUN1c3RvbURpc3RhbmNlUHJvcGVydHkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAuc291cmNlKF9fLmhhcygibmFtZSIsICJtYXJrbyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgLnRhcmdldChfXy5oYXMoIm5hbWUiLCAiam9zaCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgLmRpc3RhbmNlUHJvcGVydHkoIndlaWdodCIpLmNyZWF0ZShncmFwaCkpLnN1Ym1pdCgpLmdldCgpOworICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHNob3J0ZXN0UGF0aHMgPSByZXN1bHQubWVtb3J5KCkuZ2V0KFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgc2hvcnRlc3RQYXRocy5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoaGVscGVyLm1ha2VQYXRoKCJtYXJrbyIsICJsb3AiLCAiam9zaCIpLCBzaG9ydGVzdFBhdGhzLmdldCgwKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChDUkVXKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRFcXVhbExlbmd0aFBhdGhzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKQorICAgICAgICAgICAgICAgICAgICAgICAgLmVkZ2VUcmF2ZXJzYWwoX18uYm90aEUoInVzZXMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5zb3VyY2UoX18uaGFzKCJuYW1lIiwgImRhbmllbCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgLnRhcmdldChfXy5oYXMoIm5hbWUiLCAic3RlcGhlbiIpKS5jcmVhdGUoZ3JhcGgpKS5zdWJtaXQoKS5nZXQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VQYXRoKCJkYW5pZWwiLCAiZ3JlbWxpbiIsICJzdGVwaGVuIiksCisgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VQYXRoKCJkYW5pZWwiLCAidGlua2VyZ3JhcGgiLCAic3RlcGhlbiIpKTsKKyAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChHUkFURUZVTCkKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kRXF1YWxMZW5ndGhQYXRoc1VzaW5nRGlzdGFuY2VQcm9wZXJ0eSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSBncmFwaC5jb21wdXRlKGdyYXBoUHJvdmlkZXIuZ2V0R3JhcGhDb21wdXRlcihncmFwaCkuZ2V0Q2xhc3MoKSkuCisgICAgICAgICAgICAgICAgcHJvZ3JhbShTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5lZGdlVHJhdmVyc2FsKF9fLm91dEUoImZvbGxvd2VkQnkiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5zb3VyY2UoX18uaGFzKCJzb25nIiwgIm5hbWUiLCAiTUlHSFQgQVMgV0VMTCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgLnRhcmdldChfXy5oYXMoInNvbmciLCAibmFtZSIsICJNQVlCRSBZT1UgS05PVyBIT1cgSSBGRUVMIikpCisgICAgICAgICAgICAgICAgICAgICAgICAuZGlzdGFuY2VQcm9wZXJ0eSgid2VpZ2h0IikKKyAgICAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoZ3JhcGgpKS5zdWJtaXQoKS5nZXQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VQYXRoKCJNSUdIVCBBUyBXRUxMIiwgIkRSVU1TIiwgIk1BWUJFIFlPVSBLTk9XIEhPVyBJIEZFRUwiKSwKKyAgICAgICAgICAgICAgICBoZWxwZXIubWFrZVBhdGgoIk1JR0hUIEFTIFdFTEwiLCAiU0hJUCBPRiBGT09MUyIsICJNQVlCRSBZT1UgS05PVyBIT1cgSSBGRUVMIikpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXNwZWN0TWF4RGlzdGFuY2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAuc291cmNlKF9fLmhhcygibmFtZSIsICJtYXJrbyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgLm1heERpc3RhbmNlKDEpLmNyZWF0ZShncmFwaCkpLnN1Ym1pdCgpLmdldCgpOworICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHNob3J0ZXN0UGF0aHMgPSByZXN1bHQubWVtb3J5KCkuZ2V0KFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IHBbMF0uZXF1YWxzKCJtYXJrbyIpICYmIHAubGVuZ3RoIDw9IDIpLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXNwZWN0TWF4Q3VzdG9tRGlzdGFuY2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAuc291cmNlKF9fLmhhcygibmFtZSIsICJ2YWRhcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgLmRpc3RhbmNlUHJvcGVydHkoIndlaWdodCIpLm1heERpc3RhbmNlKDEuMykuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBTdHJlYW0uY29uY2F0KEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IHBbMF0uZXF1YWxzKCJ2YWRhcyIpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5cy5hc0xpc3QoInZhZGFzIiwgIm1hcmtvIiwgImxvcCIsICJwZXRlciIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGhlbHBlcjo6bWFrZVBhdGgpLAorICAgICAgICAgICAgICAgIFN0cmVhbS5vZihoZWxwZXIubWFrZVBhdGgoInZhZGFzIiwgIm1hcmtvIiwgImxvcCIsICJqb3NoIikpKQorICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdW10gQUxMX1NIT1JURVNUX1BBVEhTID0gbmV3IFN0cmluZ1tdW117CisgICAgICAgICAgICBuZXcgU3RyaW5nW117Im1hcmtvIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117Im1hcmtvIiwgInZhZGFzIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117Im1hcmtvIiwgImxvcCJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJtYXJrbyIsICJsb3AiLCAicGV0ZXIifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsibWFya28iLCAiam9zaCJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJtYXJrbyIsICJqb3NoIiwgInJpcHBsZSJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJ2YWRhcyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJ2YWRhcyIsICJtYXJrbyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJ2YWRhcyIsICJtYXJrbyIsICJsb3AifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsidmFkYXMiLCAibWFya28iLCAibG9wIiwgInBldGVyIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InZhZGFzIiwgIm1hcmtvIiwgImpvc2giLCAicmlwcGxlIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InZhZGFzIiwgIm1hcmtvIiwgImpvc2gifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsibG9wIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117ImxvcCIsICJtYXJrbyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJsb3AiLCAibWFya28iLCAidmFkYXMifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsibG9wIiwgImpvc2gifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsibG9wIiwgImpvc2giLCAicmlwcGxlIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117ImxvcCIsICJwZXRlciJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJqb3NoIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117Impvc2giLCAibWFya28ifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsiam9zaCIsICJtYXJrbyIsICJ2YWRhcyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJqb3NoIiwgImxvcCJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJqb3NoIiwgImxvcCIsICJwZXRlciJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJqb3NoIiwgInJpcHBsZSJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJyaXBwbGUifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicmlwcGxlIiwgImpvc2gifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicmlwcGxlIiwgImpvc2giLCAibWFya28ifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicmlwcGxlIiwgImpvc2giLCAibWFya28iLCAidmFkYXMifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicmlwcGxlIiwgImpvc2giLCAibG9wIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InJpcHBsZSIsICJqb3NoIiwgImxvcCIsICJwZXRlciJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJwZXRlciJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJwZXRlciIsICJsb3AifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicGV0ZXIiLCAibG9wIiwgIm1hcmtvIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InBldGVyIiwgImxvcCIsICJtYXJrbyIsICJ2YWRhcyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJwZXRlciIsICJsb3AiLCAiam9zaCJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJwZXRlciIsICJsb3AiLCAiam9zaCIsICJyaXBwbGUifQorICAgIH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db3JlVHJhdmVyc2FsVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db3JlVHJhdmVyc2FsVGVzdC5qYXZhCmluZGV4IDA0NDE3YTAuLmNmMzRlZTIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29yZVRyYXZlcnNhbFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0NvcmVUcmF2ZXJzYWxUZXN0LmphdmEKQEAgLTQ4LDggKzQ4LDEwIEBACiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uaW5qZWN0OwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfVFJBTlNBQ1RJT05TOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5TdHJpbmdTdGFydHNXaXRoLnN0YXJ0c1dpdGg7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEZhbHNlOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOwogCkBAIC0yNjcsNiArMjY5LDcgQEAKICAgICAgICAgLy9UaGV5IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gcmVndWxhciBleGNlcHRpb25zIGJlZm9yZSByZXR1cm5pbmcgdG8gdGhlIHRoZSB1c2VyLgogICAgICAgICB0cnkgewogICAgICAgICAgICAgZy5WKCkuaGFzKCJmb28iKS5uZXh0KCk7CisgICAgICAgICAgICBmYWlsKCJFeHBlY3RlZCBhIHVzZXIgZmFjaW5nIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24iKTsKICAgICAgICAgfSBjYXRjaCAoTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTm9TdWNoRWxlbWVudEV4Y2VwdGlvbi5jbGFzcywgZS5nZXRDbGFzcygpKTsKICAgICAgICAgfQpAQCAtMjg5LDcgKzI5Miw2IEBACiAgICAgICAgIH0gY2F0Y2ggKE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKEZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uLmNsYXNzLCBlLmdldENsYXNzKCkpOwogICAgICAgICB9Ci0KICAgICB9CiAKICAgICBAVGVzdApAQCAtMjk5LDQgKzMwMSwyNiBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoNiwgc2ltdWxhdGVkUmVtb3RlRy5WKCkuY291bnQoKS5uZXh0KCkuaW50VmFsdWUoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFya28iLCBzaW11bGF0ZWRSZW1vdGVHLlYoKS5oYXMoIm5hbWUiLCAibWFya28iKS52YWx1ZXMoIm5hbWUiKS5uZXh0KCkpOwogICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93TmljZUV4Y2VwdGlvbldoZW5NYXBLZXlOb3RGb3VuZEluTWF0aFN0ZXAoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikucHJvamVjdCgiYWdlIikuYnkoImFnZSIpLmFzKCJ4IikubWF0aCgieCIpLmJ5KCJhZ2VkIikuaXRlcmF0ZSgpOworICAgICAgICAgICAgZmFpbCgiVHJhdmVyc2FsIHNob3VsZCBubyBoYXZlIHN1Y2NlZWRlZCBzaW5jZSB0aGUgJ2FnZWQnIGtleSBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gaXNlKSB7CisgICAgICAgICAgICBhc3NlcnRUaGF0KGlzZS5nZXRNZXNzYWdlKCksIHN0YXJ0c1dpdGgoIlRoZSB2YXJpYWJsZSB4IGZvciBtYXRoKCkgc3RlcCBtdXN0IHJlc29sdmUgdG8gYSBOdW1iZXIiKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRUaHJvd05pY2VFeGNlcHRpb25XaGVuTWFwS2V5SXNOb3RSZXNvbHZpbmdUb051bWJlckluTWF0aFN0ZXAoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikucHJvamVjdCgiYWdlIikuYnkoImFnZSIpLmFzKCJ4IikubWF0aCgieCIpLmJ5KCJuYW1lIikuaXRlcmF0ZSgpOworICAgICAgICAgICAgZmFpbCgiVHJhdmVyc2FsIHNob3VsZCBubyBoYXZlIHN1Y2NlZWRlZCBzaW5jZSB0aGUgJ25hbWUnIGtleSBkb2VzIG5vdCByZXNvbHZlIHRvIE51bWJlciIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gaXNlKSB7CisgICAgICAgICAgICBhc3NlcnRUaGF0KGlzZS5nZXRNZXNzYWdlKCksIHN0YXJ0c1dpdGgoIlRoZSB2YXJpYWJsZSB4IGZvciBtYXRoKCkgc3RlcCBtdXN0IHJlc29sdmUgdG8gYSBOdW1iZXIiKSk7CisgICAgICAgIH0KKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbEVuZ2luZS5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxFbmdpbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTcyY2RmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxFbmdpbmUuamF2YQpAQCAtMCwwICsxLDM0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKKworLyoqCisgKiBBIFRyYXZlcnNhbEVuZ2luZSBpcyBhIHRlc3QgY29tcG9uZW50IHRoYXQgaGVscHMgZGV0ZXJtaW5lIHRoZSBlbmdpbmUgb24gd2hpY2ggYSB0cmF2ZXJzYWwgdGVzdCB3aWxsIGV4ZWN1dGUuIFRoaXMKKyAqIGludGVyZmFjZSB3YXMgb3JpZ2luYWxseSBpbiB7QGNvZGUgZ3JlbWxpbi1jb3JlfSBidXQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB7QGxpbmsgQ29tcHV0ZXJ9LiBTaW5jZSB0aGlzIGludGVyZmFjZQorICogd2FzIGhlYXZpbHkgYm91bmQgdG8gdGhlIHRlc3Qgc3VpdGUgaXQgd2FzIG1haW50YWluZWQgdW50aWwgMy40LjAgd2hlbiBpdCB3YXMgZmluYWxseSBtb3ZlZCBoZXJlIHRvCisgKiB7QGNvZGUgZ3JlbWxpbi10ZXN0fSB3aGVyZSBpdCBzaW1wbHkgc2VydmVzIGFzIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBoaW50cyBvbiB3aGV0aGVyIGEgdGVzdCB3aWxsIGJlCisgKiBleGVjdXRlZCB3aXRoIGEge0BsaW5rIENvbXB1dGVyfSBvciBub3QuCisgKgorICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgVHJhdmVyc2FsRW5naW5lIHsKKyAgICBwdWJsaWMgZW51bSBUeXBlIHtTVEFOREFSRCwgQ09NUFVURVJ9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvUmVwZWF0VGVzdC5qYXZhCmluZGV4IDZkOTA2ODcuLjM2ODFhZWYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvUmVwZWF0VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvUmVwZWF0VGVzdC5qYXZhCkBAIC0yNSw2ICsyNSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuTWFwSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLlJlcGVhdFVucm9sbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwpAQCAtMzYsNiArMzcsNyBAQAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CiAKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5DUkVXOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTjsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5TSU5LOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5ib3RoOwpAQCAtNDgsMTAgKzUwLDEyIEBACiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQ7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzLmlzOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29sbGVjdGlvbi5Jc0l0ZXJhYmxlQ29udGFpbmluZ0luT3JkZXIuY29udGFpbnM7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzRXF1YWwuZXF1YWxUbzsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RmFsc2U7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5BbnlPZi5hbnlPZjsKIAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKQEAgLTk4LDYgKzEwMiwyOCBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3JlcGVhdFhvdXRFX2luVl9zaW1wbGVQYXRoWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWF9wYXRoX2J5WG5hbWVYX2J5WGxhYmVsWCgpOwogCisgICAgLy8gTkVTVEVEIExPT1AKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3JlcGVhdFhvdXRfcmVwZWF0WG91dFhfdGltZXNYMVhYX3RpbWVzWDFYX2xpbWl0WDFYX3BhdGhfYnlfbmFtZSgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfcmVwZWF0WG91dFhrbm93c1hYX3VudGlsWHJlcGVhdFhvdXRYY3JlYXRlZFhYX2VtaXRYaGFzWG5hbWVfbG9wWFhYX3BhdGhfYnlYbmFtZVgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfcmVwZWF0WHJlcGVhdFhvdXRfY3JlYXRlZFhYX3VudGlsWGhhc1huYW1lX3JpcHBsZVhYWGVtaXRfbGFuZygpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl91bnRpbFhjb25zdGFudFh0cnVlWFhfcmVwZWF0WHJlcGVhdFhvdXRfY3JlYXRlZFhYX3VudGlsWGhhc1huYW1lX3JpcHBsZVhYWGVtaXRfbGFuZygpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVlgzWF9yZXBlYXRYYm90aFhfY3JlYXRlZFhYX3VudGlsWGxvb3BzX2lzXzQwWFhlbWl0X3JlcGVhdFhpbl9rbm93c1hYX2VtaXRfbG9vcHNYaXNYMVhkZWR1cF92YWx1ZXMoZmluYWwgT2JqZWN0IHYzSWQpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVlgxWF9yZXBlYXRYcmVwZWF0WHVuaW9uWG91dF91c2VzX291dF90cmF2ZXJzZXNYWF93aGVyZVhsb29wc19pc1gwWF90aW1lc1gxWF90aW1lWDJYX25hbWUoZmluYWwgT2JqZWN0IHYxSWQpOworCisgICAgLy8gTkFNRUQgTE9PUAorCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9yZXBlYXRYYV9vdXRYa25vd3NfcmVwZWF0WGJfb3V0WGNyZWF0ZWRYX2ZpbHRlclhsb29wc19pc1gwWFhfZW1pdF9sYW5nKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX2VtaXRfcmVwZWF0WGFfb3V0WGtub3dzX2ZpbHRlclhsb29wc19pc1gwWFhfbGFuZygpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVlg2WF9yZXBlYXRYYV9ib3RoWGNyZWF0ZWRYX3NpbXBsZVBhdGhYX2VtaXRYcmVwZWF0WGJfYm90aFhrbm93c1hYX3VudGlsWGxvb3BzWGJYX2FzWGJfd2hlcmVYbG9vcHNYYVhfYXNYYlhfaGFzWG5hbWVfdmFkYXNYWF9kZWR1cF9uYW1lKGZpbmFsIE9iamVjdCB2NklkKTsKKwogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9yZXBlYXRYb3V0WF90aW1lc1gyWF9lbWl0X3BhdGgoKSB7CkBAIC0zMTAsNiArMzM2LDEyOSBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoInJpcHBsZSIsIHBhdGguZ2V0KDQpKTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lKCkgeworICAgICAgICAvLyBUaGlzIHRyYXZlcnNhbCBnZXRzIG9wdGltaXNlZCBieSB0aGUgUmVwZWF0VW5yb2xsU3RyYXRlZ3kKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsX3Vucm9sbGVkID0gZ2V0X2dfVl9yZXBlYXRYb3V0X3JlcGVhdFhvdXRYX3RpbWVzWDFYWF90aW1lc1gxWF9saW1pdFgxWF9wYXRoX2J5X25hbWUoKTsKKyAgICAgICAgZmluYWwgUGF0aCBwYXRoT3JpZ2luYWwgPSB0cmF2ZXJzYWxfdW5yb2xsZWQubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWxfdW5yb2xsZWQuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHBhdGhPcmlnaW5hbC5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgcGF0aE9yaWdpbmFsLmdldCgwKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiam9zaCIsIHBhdGhPcmlnaW5hbC5nZXQoMSkpOworCisgICAgICAgIC8vIGNvdWxkIGJlIGxvcCBvciByaXBwbGUgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIGdyYXBoIGNob29zZXMgdG8gdHJhdmVyc2UgZmlyc3QKKyAgICAgICAgYXNzZXJ0VGhhdChwYXRoT3JpZ2luYWwuZ2V0KDIpLCBhbnlPZihlcXVhbFRvKCJyaXBwbGUiKSwgZXF1YWxUbygibG9wIikpKTsKKworICAgICAgICBnID0gZy53aXRob3V0U3RyYXRlZ2llcyhSZXBlYXRVbnJvbGxTdHJhdGVneS5jbGFzcyk7CisKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9yZXBlYXRYb3V0X3JlcGVhdFhvdXRYX3RpbWVzWDFYWF90aW1lc1gxWF9saW1pdFgxWF9wYXRoX2J5X25hbWUoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIFBhdGggcGF0aCA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMywgcGF0aC5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgcGF0aC5nZXQoMCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoImpvc2giLCBwYXRoLmdldCgxKSk7CisKKyAgICAgICAgLy8gY291bGQgYmUgbG9wIG9yIHJpcHBsZSBkZXBlbmRpbmcgb24gd2hhdCB0aGUgZ3JhcGggY2hvb3NlcyB0byB0cmF2ZXJzZSBmaXJzdAorICAgICAgICBhc3NlcnRUaGF0KHBhdGguZ2V0KDIpLCBhbnlPZihlcXVhbFRvKCJyaXBwbGUiKSwgZXF1YWxUbygibG9wIikpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfcmVwZWF0WG91dFhrbm93c1hYX3VudGlsWHJlcGVhdFhvdXRYY3JlYXRlZFhYX2VtaXRYaGFzWG5hbWVfbG9wWFhYX3BhdGhfYnlYbmFtZVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfcmVwZWF0WG91dFhrbm93c1hYX3VudGlsWHJlcGVhdFhvdXRYY3JlYXRlZFhYX2VtaXRYaGFzWG5hbWVfbG9wWFhYX3BhdGhfYnlYbmFtZVgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIFBhdGggcGF0aCA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMiwgcGF0aC5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgcGF0aC5nZXQoMCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoImpvc2giLCBwYXRoLmdldCgxKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVl9yZXBlYXRYcmVwZWF0WG91dF9jcmVhdGVkWFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhYZW1pdF9sYW5nKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBTdHJpbmcgbGFuZyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhsYW5nLCAiamF2YSIpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfdW50aWxYY29uc3RhbnRYdHJ1ZVhYX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVl91bnRpbFhjb25zdGFudFh0cnVlWFhfcmVwZWF0WHJlcGVhdFhvdXRfY3JlYXRlZFhYX3VudGlsWGhhc1huYW1lX3JpcHBsZVhYWGVtaXRfbGFuZygpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgU3RyaW5nIGxhbmcgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRFcXVhbHMobGFuZywgImphdmEiKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgbGFuZyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhsYW5nLCAiamF2YSIpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZYM1hfcmVwZWF0WGJvdGhYX2NyZWF0ZWRYWF91bnRpbFhsb29wc19pc180MFhYZW1pdF9yZXBlYXRYaW5fa25vd3NYWF9lbWl0X2xvb3BzWGlzWDFYZGVkdXBfdmFsdWVzKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZYM1hfcmVwZWF0WGJvdGhYX2NyZWF0ZWRYWF91bnRpbFhsb29wc19pc180MFhYZW1pdF9yZXBlYXRYaW5fa25vd3NYWF9lbWl0X2xvb3BzWGlzWDFYZGVkdXBfdmFsdWVzKGNvbnZlcnRUb1ZlcnRleElkKCJsb3AiKSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQXJyYXlzLmFzTGlzdCgiam9zaCIsICJyaXBwbGUiLCAibG9wIiksIHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoQ1JFVykKKyAgICBwdWJsaWMgdm9pZCBnX1ZYMVhfcmVwZWF0WHJlcGVhdFh1bmlvblhvdXRfdXNlc19vdXRfdHJhdmVyc2VzWFhfd2hlcmVYbG9vcHNfaXNYMFhfdGltZXNYMVhfdGltZVgyWF9uYW1lKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZYMVhfcmVwZWF0WHJlcGVhdFh1bmlvblhvdXRfdXNlc19vdXRfdHJhdmVyc2VzWFhfd2hlcmVYbG9vcHNfaXNYMFhfdGltZXNYMVhfdGltZVgyWF9uYW1lKGNvbnZlcnRUb1ZlcnRleElkKCJtYXJrbyIpKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIFN0cmluZyBuYW1lID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5hbWUsICJ0aW5rZXJncmFwaCIpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3JlcGVhdFhhX291dFhrbm93c19yZXBlYXRYYl9vdXRYY3JlYXRlZFhfZmlsdGVyWGxvb3BzX2lzWDBYWF9lbWl0X2xhbmcoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVl9yZXBlYXRYYV9vdXRYa25vd3NfcmVwZWF0WGJfb3V0WGNyZWF0ZWRYX2ZpbHRlclhsb29wc19pc1gwWFhfZW1pdF9sYW5nKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBTdHJpbmcgbGFuZyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhsYW5nLCAiamF2YSIpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBsYW5nID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGxhbmcsICJqYXZhIik7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9lbWl0X3JlcGVhdFhhX291dFhrbm93c19maWx0ZXJYbG9vcHNfaXNYMFhYX2xhbmcoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVl9lbWl0X3JlcGVhdFhhX291dFhrbm93c19maWx0ZXJYbG9vcHNfaXNYMFhYX2xhbmcoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIFN0cmluZyBsYW5nID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGxhbmcsICJqYXZhIik7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGxhbmcgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRFcXVhbHMobGFuZywgImphdmEiKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WWDZYX3JlcGVhdFhhX2JvdGhYY3JlYXRlZFhfc2ltcGxlUGF0aFhfZW1pdFhyZXBlYXRYYl9ib3RoWGtub3dzWFhfdW50aWxYbG9vcHNYYlhfYXNYYl93aGVyZVhsb29wc1hhWF9hc1hiWF9oYXNYbmFtZV92YWRhc1hYX2RlZHVwX25hbWUoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVlg2WF9yZXBlYXRYYV9ib3RoWGNyZWF0ZWRYX3NpbXBsZVBhdGhYX2VtaXRYcmVwZWF0WGJfYm90aFhrbm93c1hYX3VudGlsWGxvb3BzWGJYX2FzWGJfd2hlcmVYbG9vcHNYYVhfYXNYYlhfaGFzWG5hbWVfdmFkYXNYWF9kZWR1cF9uYW1lKGNvbnZlcnRUb1ZlcnRleElkKCJwZXRlciIpKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIFN0cmluZyBuYW1lID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5hbWUsICJqb3NoIik7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIFJlcGVhdFRlc3QgewogCiAgICAgICAgIEBPdmVycmlkZQpAQCAtMzg2LDUgKzUzNSw1MSBAQAogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbG9vcF9uYW1lX2xvb3BYX3JlcGVhdFhpblhfdGltZXNYNVhfcGF0aF9ieV9uYW1lKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibG9vcHMiLCJuYW1lIiwibG9vcCIpLnJlcGVhdChfXy5pbigpKS50aW1lcyg1KS5wYXRoKCkuYnkoIm5hbWUiKTsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9yZXBlYXRYb3V0X3JlcGVhdFhvdXRYX3RpbWVzWDFYWF90aW1lc1gxWF9saW1pdFgxWF9wYXRoX2J5X25hbWUoKSB7CisgICAgICAgICAgICAvLyBOQiBXZSBuZWVkIHRvIHByZXZlbnQgdGhlIFJlcGVhdFVucm9sbFN0cmF0ZWd5IGZyb20gYXBwbHlpbmcgdG8gcHJvcGVybHkgZXhlcmNpc2UgdGhpcyB0ZXN0IGFzIHRoaXMgdHJhdmVyc2FsIGNhbiBiZSBzaW1wbGlmaWVkCisgICAgICAgICAgICByZXR1cm4gZy5WKCkucmVwZWF0KG91dCgpLnJlcGVhdChvdXQoKSkudGltZXMoMSkpLnRpbWVzKDEpLmxpbWl0KDEpLnBhdGgoKS5ieSgibmFtZSIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnJlcGVhdChvdXQoImtub3dzIikpLnVudGlsKF9fLnJlcGVhdChvdXQoImNyZWF0ZWQiKSkuZW1pdChfXy5oYXMoIm5hbWUiLCAibG9wIikpKS5wYXRoKCkuYnkoIm5hbWUiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkucmVwZWF0KF9fLnJlcGVhdChvdXQoImNyZWF0ZWQiKSkudW50aWwoX18uaGFzKCJuYW1lIiwgInJpcHBsZSIpKSkuZW1pdCgpLnZhbHVlcygibGFuZyIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfdW50aWxYY29uc3RhbnRYdHJ1ZVhYX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudW50aWwoX18uY29uc3RhbnQodHJ1ZSkpLnJlcGVhdChfXy5yZXBlYXQob3V0KCJjcmVhdGVkIikpLnVudGlsKF9fLmhhcygibmFtZSIsICJyaXBwbGUiKSkpLmVtaXQoKS52YWx1ZXMoImxhbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WWDNYX3JlcGVhdFhib3RoWF9jcmVhdGVkWFhfdW50aWxYbG9vcHNfaXNfNDBYWGVtaXRfcmVwZWF0WGluX2tub3dzWFhfZW1pdF9sb29wc1hpc1gxWGRlZHVwX3ZhbHVlcyhmaW5hbCBPYmplY3QgdjNJZCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVih2M0lkKS5yZXBlYXQoX18uYm90aCgiY3JlYXRlZCIpKS51bnRpbChsb29wcygpLmlzKDQwKSkuZW1pdChfXy5yZXBlYXQoX18uaW4oImtub3dzIikpLmVtaXQobG9vcHMoKS5pcygxKSkpLmRlZHVwKCkudmFsdWVzKCJuYW1lIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9yZXBlYXRYYV9vdXRYa25vd3NfcmVwZWF0WGJfb3V0WGNyZWF0ZWRYX2ZpbHRlclhsb29wc19pc1gwWFhfZW1pdF9sYW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnJlcGVhdCgiYSIsIG91dCgia25vd3MiKS5yZXBlYXQoImIiLCBvdXQoImNyZWF0ZWQiKS5maWx0ZXIobG9vcHMoImEiKS5pcygwKSkpLmVtaXQoKSkuZW1pdCgpLnZhbHVlcygibGFuZyIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfZW1pdF9yZXBlYXRYYV9vdXRYa25vd3NfZmlsdGVyWGxvb3BzX2lzWDBYWF9sYW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmVtaXQoKS5yZXBlYXQoImEiLCBvdXQoImtub3dzIikuZmlsdGVyKGxvb3BzKCJhIikuaXMoMCkpKS52YWx1ZXMoImxhbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WWDZYX3JlcGVhdFhhX2JvdGhYY3JlYXRlZFhfc2ltcGxlUGF0aFhfZW1pdFhyZXBlYXRYYl9ib3RoWGtub3dzWFhfdW50aWxYbG9vcHNYYlhfYXNYYl93aGVyZVhsb29wc1hhWF9hc1hiWF9oYXNYbmFtZV92YWRhc1hYX2RlZHVwX25hbWUoZmluYWwgT2JqZWN0IHY2SWQpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYodjZJZCkucmVwZWF0KCJhIiwgYm90aCgiY3JlYXRlZCIpLnNpbXBsZVBhdGgoKSkuZW1pdChfXy5yZXBlYXQoImIiLCBfXy5ib3RoKCJrbm93cyIpKS51bnRpbChsb29wcygiYiIpLmFzKCJiIikud2hlcmUobG9vcHMoImEiKS5hcygiYiIpKSkuaGFzKCJuYW1lIiwgInZhZGFzIikpLmRlZHVwKCkudmFsdWVzKCJuYW1lIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVlgxWF9yZXBlYXRYcmVwZWF0WHVuaW9uWG91dF91c2VzX291dF90cmF2ZXJzZXNYWF93aGVyZVhsb29wc19pc1gwWF90aW1lc1gxWF90aW1lWDJYX25hbWUoZmluYWwgT2JqZWN0IHYxSWQpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYodjFJZCkucmVwZWF0KF9fLnJlcGVhdChfXy51bmlvbihvdXQoInVzZXMiKSwgb3V0KCJ0cmF2ZXJzZXMiKSkud2hlcmUoX18ubG9vcHMoKS5pcygwKSkpLnRpbWVzKDEpKS50aW1lcygyKS52YWx1ZXMoIm5hbWUiKTsKKyAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvVW5pb25UZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1VuaW9uVGVzdC5qYXZhCmluZGV4IGRlZjllYjguLmRkZjhhNjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvVW5pb25UZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9VbmlvblRlc3QuamF2YQpAQCAtMTQyLDcgKzE0Miw3IEBACiAgICAgcHVibGljIHZvaWQgZ19WWDFfMlhfbG9jYWxYdW5pb25Yb3V0RV9jb3VudF9faW5FX2NvdW50X19vdXRFX3dlaWdodF9zdW1YWCgpIHsKICAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDFfMlhfbG9jYWxYdW5pb25Yb3V0RV9jb3VudF9faW5FX2NvdW50X19vdXRFX3dlaWdodF9zdW1YWChjb252ZXJ0VG9WZXJ0ZXhJZCgibWFya28iKSwgY29udmVydFRvVmVydGV4SWQoInZhZGFzIikpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKLSAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoMGwsIDBsLCAwLCAzbCwgMWwsIDEuOWQpLCB0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQXJyYXlzLmFzTGlzdCgzTCwgMEwsIDEuOSwgMEwsIDFMKSwgdHJhdmVyc2FsKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9BbmRUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0FuZFRlc3QuamF2YQppbmRleCA1OWE4ZWM4Li43MTE5ZTJhIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0FuZFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0FuZFRlc3QuamF2YQpAQCAtMjksNiArMjksNyBAQAogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOwpAQCAtNTIsNiArNTMsOCBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9hc1hhWF9hbmRYc2VsZWN0WGFYX3NlbGVjdFhhWFgoKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX2FuZF9oYXNYbmFtZV9tYXJrb1hfYW5kX2hhc1huYW1lX21hcmtvWCgpOworCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX2FuZFhoYXNYYWdlX2d0XzI3WF9fb3V0RV9jb3VudF9ndGVfMlhfbmFtZSgpIHsKQEAgLTczLDcgKzc2LDcgQEAKICAgICBwdWJsaWMgdm9pZCBnX1ZfYXNYYVhfb3V0WGtub3dzWF9hbmRfb3V0WGNyZWF0ZWRYX2luWGNyZWF0ZWRYX2FzWGFYX25hbWUoKSB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9hc1hhWF9vdXRYa25vd3NYX2FuZF9vdXRYY3JlYXRlZFhfaW5YY3JlYXRlZFhfYXNYYVhfbmFtZSgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKLSAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoY29udmVydFRvVmVydGV4KGdyYXBoLCAibWFya28iKSksIHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGNvbnZlcnRUb1ZlcnRleChncmFwaCwgIm1hcmtvIikpLCB0cmF2ZXJzYWwpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC04NSw2ICs4OCwxNCBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoNiwgYWN0dWFsLnNpemUoKSk7CiAgICAgfQogCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX21hcmtvWF9hbmRfaGFzWG5hbWVfbWFya29YX2FuZF9oYXNYbmFtZV9tYXJrb1goKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfYW5kX2hhc1huYW1lX21hcmtvWF9hbmRfaGFzWG5hbWVfbWFya29YKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChjb252ZXJ0VG9WZXJ0ZXgoZ3JhcGgsICJtYXJrbyIpKSwgdHJhdmVyc2FsKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBBbmRUZXN0IHsKIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTEwNiw1ICsxMTcsMTAgQEAKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9hc1hhWF9hbmRYc2VsZWN0WGFYX3NlbGVjdFhhWFgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkuYXMoImEiKS5hbmQoc2VsZWN0KCJhIiksIHNlbGVjdCgiYSIpKTsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9hbmRfaGFzWG5hbWVfbWFya29YX2FuZF9oYXNYbmFtZV9tYXJrb1goKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIik7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0Ryb3BUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0Ryb3BUZXN0LmphdmEKaW5kZXggZjMzOTk3ZS4uMmI2YTlhZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9Ecm9wVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvRHJvcFRlc3QuamF2YQpAQCAtMjYsMTIgKzI2LDE0IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxFbmdpbmU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ1JFVzsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk47CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEZhbHNlOwpAQCAtNDgsNiArNTAsMTAgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXhQcm9wZXJ0eT4gZ2V0X2dfVl9wcm9wZXJ0aWVzX2Ryb3AoKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCA/IGV4dGVuZHMgUHJvcGVydHk8T2JqZWN0Pj4gZ2V0X2dfVl9wcm9wZXJ0aWVzX3Byb3BlcnRpZXNYc3RhcnRUaW1lWF9kcm9wKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPEVkZ2UsID8gZXh0ZW5kcyBQcm9wZXJ0eTxPYmplY3Q+PiBnZXRfZ19FX3Byb3BlcnRpZXNYd2VpZ2h0WF9kcm9wKCk7CisKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9SRU1PVkVfVkVSVElDRVMpCkBAIC04Miw2ICs4OCwyNyBAQAogICAgICAgICBnLlYoKS5mb3JFYWNoUmVtYWluaW5nKHZlcnRleCAtPiBhc3NlcnRFcXVhbHMoMCwgSXRlcmF0b3JVdGlscy5jb3VudCh2ZXJ0ZXgucHJvcGVydGllcygpKSkpOwogICAgIH0KIAorICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfUkVNT1ZFX1BST1BFUlRZKQorICAgIHB1YmxpYyB2b2lkIGdfRV9wcm9wZXJ0aWVzWHdlaWdodFhfZHJvcCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPEVkZ2UsID8gZXh0ZW5kcyBQcm9wZXJ0eTxPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19FX3Byb3BlcnRpZXNYd2VpZ2h0WF9kcm9wKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgZy5FKCkuZm9yRWFjaFJlbWFpbmluZyhlZGdlIC0+IGFzc2VydEVxdWFscygwLCBJdGVyYXRvclV0aWxzLmNvdW50KGVkZ2UucHJvcGVydGllcygpKSkpOworICAgIH0KKworCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChDUkVXKQorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfUkVNT1ZFX1BST1BFUlRZKQorICAgIHB1YmxpYyB2b2lkIGdfVl9wcm9wZXJ0aWVzX3Byb3BlcnRpZXNYc3RhcnRUaW1lWF9kcm9wKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCA/IGV4dGVuZHMgUHJvcGVydHk8T2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9wcm9wZXJ0aWVzX3Byb3BlcnRpZXNYc3RhcnRUaW1lWF9kcm9wKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgZy5WKCkuZm9yRWFjaFJlbWFpbmluZyh2ZXJ0ZXggLT4gYXNzZXJ0RXF1YWxzKDAsIEl0ZXJhdG9yVXRpbHMuY291bnQoSXRlcmF0b3JVdGlscy5mbGF0TWFwKHZlcnRleC5wcm9wZXJ0aWVzKCJsb2NhdGlvbiIpLCB2cCAtPiB2cC5wcm9wZXJ0aWVzKCJzdGFydFRpbWUiKSkpKSk7CisgICAgfQorCiAKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBEcm9wVGVzdCB7CiAKQEAgLTk5LDUgKzEyNiwxNSBAQAogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4UHJvcGVydHk+IGdldF9nX1ZfcHJvcGVydGllc19kcm9wKCkgewogICAgICAgICAgICAgcmV0dXJuIChUcmF2ZXJzYWwpIGcuVigpLnByb3BlcnRpZXMoKS5kcm9wKCk7CiAgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxFZGdlLCA/IGV4dGVuZHMgUHJvcGVydHk8T2JqZWN0Pj4gZ2V0X2dfRV9wcm9wZXJ0aWVzWHdlaWdodFhfZHJvcCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLkUoKS5wcm9wZXJ0aWVzKCJ3ZWlnaHQiKS5kcm9wKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsID8gZXh0ZW5kcyBQcm9wZXJ0eTxPYmplY3Q+PiBnZXRfZ19WX3Byb3BlcnRpZXNfcHJvcGVydGllc1hzdGFydFRpbWVYX2Ryb3AoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkucHJvcGVydGllcygpLnByb3BlcnRpZXMoInN0YXJ0VGltZSIpLmRyb3AoKTsKKyAgICAgICAgfQogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0hhc1Rlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvSGFzVGVzdC5qYXZhCmluZGV4IDg0ZDQ3YjkuLjMyY2NiNzUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvSGFzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvSGFzVGVzdC5qYXZhCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwpAQCAtNDMsNiArNDQsNyBAQAogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLmlzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3RFcXVhbHM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VGhhdDsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOwogCkBAIC0xMDMsNiArMTA1LDEwIEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9ib3RoX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WGFnZVhfaGFzVmFsdWVYZ3RYMzBYWF92YWx1ZSgpOwogCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gZ2V0X2dfVl9ib3RoRV9wcm9wZXJ0aWVzX2RlZHVwX2hhc0tleVh3ZWlnaHRYX3ZhbHVlKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiBnZXRfZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfaGFzVmFsdWVYbHRYMGQzWFhfdmFsdWUoKTsKKwogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfaGFzTm90WGFnZVhfbmFtZSgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNJZFgxWF9oYXNJZFgyWChmaW5hbCBPYmplY3QgdjFJZCwgZmluYWwgT2JqZWN0IHYySWQpOwpAQCAtMTI1LDYgKzEzMSwyNCBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIExvbmc+IGdldF9nX1ZfaGFzWGFnZV93aXRob3V0WDI3XzI5WF9jb3VudCgpOwogCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9jb250YWluaW5nWGFya1hYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX3N0YXJ0aW5nV2l0aFhtYXJYWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9lbmRpbmdXaXRoWGFzWFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfbm90X2NvbnRhaW5pbmdYYXJrWFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfbm90X3N0YXJ0aW5nV2l0aFhtYXJYWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9ub3RfZW5kaW5nV2l0aFhhc1hYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1hwZXJzb25fbmFtZV9jb250YWluaW5nWG9YX2FuZFhsdFhtWFhYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX2d0WG1YX2FuZFhjb250YWluaW5nWG9YWFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWHBfbmVxWHZYWCgpOworCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX291dFhjcmVhdGVkWF9oYXNYbmFtZV9fbWFwWGxlbmd0aFhfaXNYZ3RYM1hYWF9uYW1lKCkgewpAQCAtNDYwLDYgKzQ4NCwyMiBAQAogICAgIH0KIAogICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9ib3RoRV9wcm9wZXJ0aWVzX2RlZHVwX2hhc0tleVh3ZWlnaHRYX3ZhbHVlKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYm90aEVfcHJvcGVydGllc19kZWR1cF9oYXNLZXlYd2VpZ2h0WF92YWx1ZSgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoMC41LCAxLjAsIDAuNCwgMC4yKSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYm90aEVfcHJvcGVydGllc19kZWR1cF9oYXNLZXlYd2VpZ2h0WF9oYXNWYWx1ZVhsdFgwZDNYWF92YWx1ZSgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfaGFzVmFsdWVYbHRYMGQzWFhfdmFsdWUoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KDAuMiksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aAogICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNOb3RYYWdlWF9uYW1lKCkgewogICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTm90WGFnZVhfbmFtZSgpOwpAQCAtNTQ5LDYgKzU4OSwxMDQgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDJMLCB0cmF2ZXJzYWwubmV4dCgpLmxvbmdWYWx1ZSgpKTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfY29udGFpbmluZ1hhcmtYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX2NvbnRhaW5pbmdYYXJrWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpLmVxdWFscygibWFya28iKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9zdGFydGluZ1dpdGhYbWFyWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9zdGFydGluZ1dpdGhYbWFyWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpLmVxdWFscygibWFya28iKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9lbmRpbmdXaXRoWGFzWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9lbmRpbmdXaXRoWGFzWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpLmVxdWFscygidmFkYXMiKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9ub3RfY29udGFpbmluZ1hhcmtYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX25vdF9jb250YWluaW5nWGFya1hYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworCisgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIGFzc2VydE5vdEVxdWFscygibWFya28iLCB0cmF2ZXJzYWwubmV4dCgpLnZhbHVlKCJuYW1lIikpOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFscyg1LCBjb3VudGVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfbm90X3N0YXJ0aW5nV2l0aFhtYXJYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX25vdF9zdGFydGluZ1dpdGhYbWFyWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIGFzc2VydE5vdEVxdWFscygibWFya28iLCB0cmF2ZXJzYWwubmV4dCgpLnZhbHVlKCJuYW1lIikpOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFscyg1LCBjb3VudGVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfbm90X2VuZGluZ1dpdGhYYXNYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX25vdF9lbmRpbmdXaXRoWGFzWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIGFzc2VydE5vdEVxdWFscygidmFkYXMiLCB0cmF2ZXJzYWwubmV4dCgpLnZhbHVlKCJuYW1lIikpOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFscyg1LCBjb3VudGVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWHBlcnNvbl9uYW1lX2NvbnRhaW5pbmdYb1hfYW5kWGx0WG1YWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYcGVyc29uX25hbWVfY29udGFpbmluZ1hvWF9hbmRYbHRYbVhYWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwubmV4dCgpLnZhbHVlKCJuYW1lIikuZXF1YWxzKCJqb3NoIikpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfZ3RYbVhfYW5kWGNvbnRhaW5pbmdYb1hYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX2d0WG1YX2FuZFhjb250YWluaW5nWG9YWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpLmVxdWFscygibWFya28iKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYcF9uZXFYdlhYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWHBfbmVxWHZYWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh0cmF2ZXJzYWwuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOworICAgIH0KKwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIEhhc1Rlc3QgewogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxFZGdlLCBFZGdlPiBnZXRfZ19FWDExWF9vdXRWX291dEVfaGFzWGlkXzEwWChmaW5hbCBPYmplY3QgZTExSWQsIGZpbmFsIE9iamVjdCBlMTBJZCkgewpAQCAtNjc2LDYgKzgxNCwxNiBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IGdldF9nX1ZfYm90aEVfcHJvcGVydGllc19kZWR1cF9oYXNLZXlYd2VpZ2h0WF92YWx1ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5ib3RoRSgpLnByb3BlcnRpZXMoKS5kZWR1cCgpLmhhc0tleSgid2VpZ2h0IikudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiBnZXRfZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfaGFzVmFsdWVYbHRYMGQzWFhfdmFsdWUoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuYm90aEUoKS5wcm9wZXJ0aWVzKCkuZGVkdXAoKS5oYXNLZXkoIndlaWdodCIpLmhhc1ZhbHVlKFAubHQoMC4zKSkudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX2hhc05vdFhhZ2VYX25hbWUoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTm90KCJhZ2UiKS52YWx1ZXMoIm5hbWUiKTsKICAgICAgICAgfQpAQCAtNzI5LDUgKzg3Nyw1MCBAQAogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTG9uZz4gZ2V0X2dfVl9oYXNYYWdlX3dpdGhvdXRYMjdfMjlYX2NvdW50KCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygiYWdlIiwgUC53aXRob3V0KDI3LCAyOSkpLmNvdW50KCk7CiAgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9jb250YWluaW5nWGFya1hYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsIFRleHRQLmNvbnRhaW5pbmcoImFyayIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX3N0YXJ0aW5nV2l0aFhtYXJYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5zdGFydGluZ1dpdGgoIm1hciIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX2VuZGluZ1dpdGhYYXNYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5lbmRpbmdXaXRoKCJhcyIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX25vdF9jb250YWluaW5nWGFya1hYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsIFRleHRQLm5vdENvbnRhaW5pbmcoImFyayIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX25vdF9zdGFydGluZ1dpdGhYbWFyWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgVGV4dFAubm90U3RhcnRpbmdXaXRoKCJtYXIiKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9ub3RfZW5kaW5nV2l0aFhhc1hYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsIFRleHRQLm5vdEVuZGluZ1dpdGgoImFzIikpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWHBlcnNvbl9uYW1lX2NvbnRhaW5pbmdYb1hfYW5kWGx0WG1YWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJwZXJzb24iLCJuYW1lIiwgVGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmx0KCJtIikpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX2d0WG1YX2FuZFhjb250YWluaW5nWG9YWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgUC5ndCgibSIpLmFuZChUZXh0UC5jb250YWluaW5nKCJvIikpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1hwX25lcVh2WFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJwIiwgUC5uZXEoInYiKSk7CisgICAgICAgIH0KICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZFZlcnRleFRlc3QuamF2YQppbmRleCBmNzMyYTQ0Li4yMWZiYjhjIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZFZlcnRleFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZFZlcnRleFRlc3QuamF2YQpAQCAtMjQsNiArMjQsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKQEAgLTY1LDcgKzY2LDcgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfYWRkVlhhbmltYWxYX3Byb3BlcnR5WG5hbWVfdmFsdWVzWG5hbWVYWF9wcm9wZXJ0eVhuYW1lX2FuX2FuaW1hbFhfcHJvcGVydHlYdmFsdWVzWG5hbWVYX2xhYmVsWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4+IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfdGVzdFhfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfcHJvcGVydHlYdGVtcF9zZWxlY3RYYVhYX3ZhbHVlTWFwWG5hbWVfdGVtcFgoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxTdHJpbmc+Pj4gZ2V0X2dfd2l0aFNpZGVFZmZlY3RYYV90ZXN0WF9WX2hhc0xhYmVsWHNvZnR3YXJlWF9wcm9wZXJ0eVh0ZW1wX3NlbGVjdFhhWFhfdmFsdWVNYXBYbmFtZV90ZW1wWCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfd2l0aFNpZGVFZmZlY3RYYV9tYXJrb1hfYWRkVl9wcm9wZXJ0eVhuYW1lX3NlbGVjdFhhWFhfbmFtZSgpOwogCkBAIC03Myw3ICs3NCw3IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ193aXRoU2lkZUVmZmVjdFhhX25hbWVYX2FkZFZfcHJvcGVydHlYc2VsZWN0WGFYX21hcmtvWF9uYW1lKCk7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBYdHJ1ZVgoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBfd2l0aFh0b2tlbnNYKCk7CiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKQEAgLTIzNSwxMiArMjM2LDEyIEBACiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9QUk9QRVJUWSkKICAgICBwdWJsaWMgdm9pZCBnX3dpdGhTaWRlRWZmZWN0WGFfdGVzdFhfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfcHJvcGVydHlYdGVtcF9zZWxlY3RYYVhYX3ZhbHVlTWFwWG5hbWVfdGVtcFgoKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4+IHRyYXZlcnNhbCA9IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfdGVzdFhfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfcHJvcGVydHlYdGVtcF9zZWxlY3RYYVhYX3ZhbHVlTWFwWG5hbWVfdGVtcFgoKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxTdHJpbmc+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfd2l0aFNpZGVFZmZlY3RYYV90ZXN0WF9WX2hhc0xhYmVsWHNvZnR3YXJlWF9wcm9wZXJ0eVh0ZW1wX3NlbGVjdFhhWFhfdmFsdWVNYXBYbmFtZV90ZW1wWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgaW50IGNvdW50ZXIgPSAwOwogICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgewogICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+PiB2YWx1ZU1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBMaXN0PFN0cmluZz4+IHZhbHVlTWFwID0gdHJhdmVyc2FsLm5leHQoKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCB2YWx1ZU1hcC5zaXplKCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoInRlc3QiKSwgdmFsdWVNYXAuZ2V0KCJ0ZW1wIikpOwogICAgICAgICAgICAgYXNzZXJ0VHJ1ZSh2YWx1ZU1hcC5nZXQoIm5hbWUiKS5lcXVhbHMoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgicmlwcGxlIikpIHx8IHZhbHVlTWFwLmdldCgibmFtZSIpLmVxdWFscyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJsb3AiKSkpOwpAQCAtMjg1LDggKzI4Niw4IEBACiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9WRVJUSUNFUykKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9BRERfUFJPUEVSVFkpCi0gICAgcHVibGljIHZvaWQgZ19WX2FzWGFYX2hhc1huYW1lX21hcmtvWF9vdXRYY3JlYXRlZFhfYXNYYlhfYWRkVlhzZWxlY3RYYVhfbGFiZWxYX3Byb3BlcnR5WHRlc3Rfc2VsZWN0WGJYX2xhYmVsWF92YWx1ZU1hcFh0cnVlWCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCxPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FzWGFYX2hhc1huYW1lX21hcmtvWF9vdXRYY3JlYXRlZFhfYXNYYlhfYWRkVlhzZWxlY3RYYVhfbGFiZWxYX3Byb3BlcnR5WHRlc3Rfc2VsZWN0WGJYX2xhYmVsWF92YWx1ZU1hcFh0cnVlWCgpOworICAgIHB1YmxpYyB2b2lkIGdfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBfd2l0aFh0b2tlbnNYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYXNYYVhfaGFzWG5hbWVfbWFya29YX291dFhjcmVhdGVkWF9hc1hiWF9hZGRWWHNlbGVjdFhhWF9sYWJlbFhfcHJvcGVydHlYdGVzdF9zZWxlY3RYYlhfbGFiZWxYX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgZmluYWwgTWFwPE9iamVjdCxPYmplY3Q+IG1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwpAQCAtMzM5LDcgKzM0MCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4+IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfdGVzdFhfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfcHJvcGVydHlYdGVtcF9zZWxlY3RYYVhYX3ZhbHVlTWFwWG5hbWVfdGVtcFgoKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PFN0cmluZz4+PiBnZXRfZ193aXRoU2lkZUVmZmVjdFhhX3Rlc3RYX1ZfaGFzTGFiZWxYc29mdHdhcmVYX3Byb3BlcnR5WHRlbXBfc2VsZWN0WGFYWF92YWx1ZU1hcFhuYW1lX3RlbXBYKCkgewogICAgICAgICAgICAgcmV0dXJuIGcud2l0aFNpZGVFZmZlY3QoImEiLCAidGVzdCIpLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5wcm9wZXJ0eSgidGVtcCIsIHNlbGVjdCgiYSIpKS52YWx1ZU1hcCgibmFtZSIsICJ0ZW1wIik7CiAgICAgICAgIH0KIApAQCAtMzU5LDggKzM2MCw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfYXNYYVhfaGFzWG5hbWVfbWFya29YX291dFhjcmVhdGVkWF9hc1hiWF9hZGRWWHNlbGVjdFhhWF9sYWJlbFhfcHJvcGVydHlYdGVzdF9zZWxlY3RYYlhfbGFiZWxYX3ZhbHVlTWFwWHRydWVYKCkgewotICAgICAgICAgICAgcmV0dXJuIGcuVigpLmFzKCJhIikuaGFzKCJuYW1lIiwgIm1hcmtvIikub3V0KCJjcmVhdGVkIikuYXMoImIiKS5hZGRWKHNlbGVjdCgiYSIpLmxhYmVsKCkpLnByb3BlcnR5KCJ0ZXN0Iiwgc2VsZWN0KCJiIikubGFiZWwoKSkudmFsdWVNYXAodHJ1ZSk7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2FzWGFYX2hhc1huYW1lX21hcmtvWF9vdXRYY3JlYXRlZFhfYXNYYlhfYWRkVlhzZWxlY3RYYVhfbGFiZWxYX3Byb3BlcnR5WHRlc3Rfc2VsZWN0WGJYX2xhYmVsWF92YWx1ZU1hcF93aXRoWHRva2Vuc1goKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuYXMoImEiKS5oYXMoIm5hbWUiLCAibWFya28iKS5vdXQoImNyZWF0ZWQiKS5hcygiYiIpLmFkZFYoc2VsZWN0KCJhIikubGFiZWwoKSkucHJvcGVydHkoInRlc3QiLCBzZWxlY3QoImIiKS5sYWJlbCgpKS52YWx1ZU1hcCgpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKTsKICAgICAgICAgfQogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0Nvbm5lY3RlZENvbXBvbmVudFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQ29ubmVjdGVkQ29tcG9uZW50VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMGFhYmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0Nvbm5lY3RlZENvbXBvbmVudFRlc3QuamF2YQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuQ29ubmVjdGVkQ29tcG9uZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5ib3RoRTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0Tm90RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdE51bGw7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQ29ubmVjdGVkQ29tcG9uZW50VGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfY29ubmVjdGVkQ29tcG9uZW50X2hhc1hjb21wb25lbnRYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZyxPYmplY3Q+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9jb25uZWN0ZWRDb21wb25lbnRfcHJvamVjdF9ieVhuYW1lWF9ieVhjb21wb25lbnRYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2RlZHVwX2Nvbm5lY3RlZENvbXBvbmVudF9oYXNYY29tcG9uZW50WCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsT2JqZWN0Pj4gZ2V0X2dfVl9jb25uZWN0ZWRDb21wb25lbnRfd2l0aFhlZGdlc19ib3RoRVhrbm93c1hYX3dpdGhYcHJvcGVydHlOYW1lX2NsdXN0ZXJYX3Byb2plY3RfYnlYbmFtZVhfYnlYY2x1c3RlclgoKTsKKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEVxdWFscyg2LCBJdGVyYXRvclV0aWxzLmNvdW50KHRyYXZlcnNhbCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9kZWR1cF9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9kZWR1cF9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEVxdWFscyg2LCBJdGVyYXRvclV0aWxzLmNvdW50KHRyYXZlcnNhbCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfY29ubmVjdGVkQ29tcG9uZW50X3Byb2plY3RfYnlYbmFtZVhfYnlYY29tcG9uZW50WCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZyxPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9jb25uZWN0ZWRDb21wb25lbnRfcHJvamVjdF9ieVhuYW1lWF9ieVhjb21wb25lbnRYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBpbnQgY291bnRlciA9IDA7CisKKyAgICAgICAgU3RyaW5nIHNvZnR3YXJlQ29tcG9uZW50ID0gbnVsbDsKKworICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgeworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IG0gPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSBtLmdldCgibmFtZSIpLnRvU3RyaW5nKCk7CisKKyAgICAgICAgICAgIC8vIHNpbmNlIHRoZSB0d28gcmV0dXJuZWQgdmFsdWVzIGFyZSBpbiB0aGUgc2FtZSBjb21wb25lbnQganVzdCBuZWVkIHRvIGdyYWIgdGhlIGZpcnN0IG9uZSBhbmQgdXNlIHRoYXQKKyAgICAgICAgICAgIC8vIGFzIGEgY29tcGFyaXNvbiB0byB0aGUgb3RoZXIKKyAgICAgICAgICAgIGlmIChudWxsID09IHNvZnR3YXJlQ29tcG9uZW50KQorICAgICAgICAgICAgICAgIHNvZnR3YXJlQ29tcG9uZW50ID0gbS5nZXQoImNvbXBvbmVudCIpLnRvU3RyaW5nKCk7CisKKyAgICAgICAgICAgIGFzc2VydE5vdE51bGwoc29mdHdhcmVDb21wb25lbnQpOworCisgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJsb3AiOgorICAgICAgICAgICAgICAgIGNhc2UgInJpcHBsZSI6CisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHNvZnR3YXJlQ29tcG9uZW50LCBtLmdldCgiY29tcG9uZW50IikpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoMiwgY291bnRlcik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2Nvbm5lY3RlZENvbXBvbmVudF93aXRoWEVER0VTX2JvdGhFWGtub3dzWFhfd2l0aFhQUk9QRVJUWV9OQU1FX2NsdXN0ZXJYX3Byb2plY3RfYnlYbmFtZVhfYnlYY2x1c3RlclgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9jb25uZWN0ZWRDb21wb25lbnRfd2l0aFhlZGdlc19ib3RoRVhrbm93c1hYX3dpdGhYcHJvcGVydHlOYW1lX2NsdXN0ZXJYX3Byb2plY3RfYnlYbmFtZVhfYnlYY2x1c3RlclgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGludCBjb3VudGVyID0gMDsKKworICAgICAgICBTdHJpbmcgc29mdHdhcmVDb21wb25lbnQgPSBudWxsOworCisgICAgICAgIC8vIHNvcnQgdG8gbWFrZSBzdXJlIHRoYXQgInBldGVyIiBpcyBhbHdheXMgbGFzdAorICAgICAgICBmaW5hbCBJdGVyYXRvcjxNYXA8U3RyaW5nLE9iamVjdD4+IGl0dHkgPSB0cmF2ZXJzYWwudG9MaXN0KCkuc3RyZWFtKCkuc29ydGVkKChvMSwgbzIpIC0+IG8xLmdldCgibmFtZSIpLnRvU3RyaW5nKCkuZXF1YWxzKCJwZXRlciIpID8gMSA6IC0xKS5pdGVyYXRvcigpOworCisgICAgICAgIHdoaWxlIChpdHR5Lmhhc05leHQoKSkgeworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IG0gPSBpdHR5Lm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gbS5nZXQoIm5hbWUiKS50b1N0cmluZygpOworCisgICAgICAgICAgICAvLyBzaW5jZSB0aGUgdGhyZWUgb2YgdGhlIHJldHVybmVkIHZhbHVlcyBhcmUgaW4gdGhlIHNhbWUgY29tcG9uZW50IGp1c3QgbmVlZCB0byBncmFiIHRoZSBmaXJzdCBvbmUgYW5kCisgICAgICAgICAgICAvLyB1c2UgdGhhdCBhcyBhIGNvbXBhcmlzb24gdG8gdGhlIG90aGVycyBhbmQgdGhlbiBmb3IgdGhlIGZvdXJ0aCByZXR1cm5lZCBpdGVtICJwZXRlciIganVzdCBuZWVkcyB0byBub3QKKyAgICAgICAgICAgIC8vIGJlIGluIHRoZSBzYW1lIGNvbXBvbmVudAorICAgICAgICAgICAgaWYgKG51bGwgPT0gc29mdHdhcmVDb21wb25lbnQpCisgICAgICAgICAgICAgICAgc29mdHdhcmVDb21wb25lbnQgPSBtLmdldCgiY2x1c3RlciIpLnRvU3RyaW5nKCk7CisKKyAgICAgICAgICAgIGFzc2VydE5vdE51bGwoc29mdHdhcmVDb21wb25lbnQpOworCisgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJtYXJrbyI6CisgICAgICAgICAgICAgICAgY2FzZSAidmFkYXMiOgorICAgICAgICAgICAgICAgIGNhc2UgImpvc2giOgorICAgICAgICAgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhzb2Z0d2FyZUNvbXBvbmVudCwgbS5nZXQoImNsdXN0ZXIiKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInBldGVyIjoKKyAgICAgICAgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoc29mdHdhcmVDb21wb25lbnQsIG0uZ2V0KCJjbHVzdGVyIikpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoNCwgY291bnRlcik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgQ29ubmVjdGVkQ29tcG9uZW50VGVzdCB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2Nvbm5lY3RlZENvbXBvbmVudF9oYXNYY29tcG9uZW50WCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5jb25uZWN0ZWRDb21wb25lbnQoKS5oYXMoQ29ubmVjdGVkQ29tcG9uZW50LmNvbXBvbmVudCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9kZWR1cF9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuZGVkdXAoKS5jb25uZWN0ZWRDb21wb25lbnQoKS5oYXMoQ29ubmVjdGVkQ29tcG9uZW50LmNvbXBvbmVudCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsT2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfY29ubmVjdGVkQ29tcG9uZW50X3Byb2plY3RfYnlYbmFtZVhfYnlYY29tcG9uZW50WCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5jb25uZWN0ZWRDb21wb25lbnQoKS5wcm9qZWN0KCJuYW1lIiwiY29tcG9uZW50IikuYnkoIm5hbWUiKS5ieShDb25uZWN0ZWRDb21wb25lbnQuY29tcG9uZW50KTsKKyAgICAgICAgfQorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsT2JqZWN0Pj4gZ2V0X2dfVl9jb25uZWN0ZWRDb21wb25lbnRfd2l0aFhlZGdlc19ib3RoRVhrbm93c1hYX3dpdGhYcHJvcGVydHlOYW1lX2NsdXN0ZXJYX3Byb2plY3RfYnlYbmFtZVhfYnlYY2x1c3RlclgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLmNvbm5lY3RlZENvbXBvbmVudCgpLndpdGgoQ29ubmVjdGVkQ29tcG9uZW50LmVkZ2VzLCBib3RoRSgia25vd3MiKSkud2l0aChDb25uZWN0ZWRDb21wb25lbnQucHJvcGVydHlOYW1lLCAiY2x1c3RlciIpLnByb2plY3QoIm5hbWUiLCJjbHVzdGVyIikuYnkoIm5hbWUiKS5ieSgiY2x1c3RlciIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NWRlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0VsZW1lbnRNYXBUZXN0LmphdmEKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ1JFVzsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk47CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQuaWQ7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQubGFiZWw7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQ7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzLmlzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE51bGw7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BSdW5XaXRoKEdyZW1saW5Qcm9jZXNzUnVubmVyLmNsYXNzKQorcHVibGljIGFic3RyYWN0IGNsYXNzIEVsZW1lbnRNYXBUZXN0IGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QgeworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfZWxlbWVudE1hcCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfZWxlbWVudE1hcFhuYW1lX2FnZVgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8RWRnZSwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfRVgxMVhfZWxlbWVudE1hcChmaW5hbCBPYmplY3QgZTExSWQpOworCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2VsZW1lbnRNYXAoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZWxlbWVudE1hcCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgaW50IGNvdW50ZXIgPSAwOworICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgeworICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSB2YWx1ZXMuZ2V0KCJuYW1lIik7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoIm1hcmtvIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjksIHZhbHVlcy5nZXQoImFnZSIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImpvc2giKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzMiwgdmFsdWVzLmdldCgiYWdlIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygicGV0ZXIiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzNSwgdmFsdWVzLmdldCgiYWdlIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygidmFkYXMiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyNywgdmFsdWVzLmdldCgiYWdlIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygibG9wIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImphdmEiLCB2YWx1ZXMuZ2V0KCJsYW5nIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KGxhYmVsKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJyaXBwbGUiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiamF2YSIsIHZhbHVlcy5nZXQoImxhbmciKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlYWNoIGhlcmU6ICIgKyB2YWx1ZXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhc3NlcnRUaGF0KHZhbHVlcy5jb250YWluc0tleShULmlkKSwgaXModHJ1ZSkpOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFscyg2LCBjb3VudGVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfZWxlbWVudE1hcFhuYW1lX2FnZVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZWxlbWVudE1hcFhuYW1lX2FnZVgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gKFN0cmluZykgdmFsdWVzLmdldCgibmFtZSIpOworICAgICAgICAgICAgaWYgKG5hbWUuZXF1YWxzKCJtYXJrbyIpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCB2YWx1ZXMuZ2V0KCJhZ2UiKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KGxhYmVsKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygiam9zaCIpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMyLCB2YWx1ZXMuZ2V0KCJhZ2UiKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KGxhYmVsKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygicGV0ZXIiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzNSwgdmFsdWVzLmdldCgiYWdlIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInZhZGFzIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjcsIHZhbHVlcy5nZXQoImFnZSIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJsb3AiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydE51bGwodmFsdWVzLmdldCgibGFuZyIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInJpcHBsZSIpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0TnVsbCh2YWx1ZXMuZ2V0KCJsYW5nIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KGxhYmVsKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJJdCBpcyBub3QgcG9zc2libGUgdG8gcmVhY2ggaGVyZTogIiArIHZhbHVlcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFzc2VydFRoYXQodmFsdWVzLmNvbnRhaW5zS2V5KFQuaWQpLCBpcyh0cnVlKSk7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIGNvdW50ZXIpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfRVgxMVhfZWxlbWVudE1hcCgpIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IGVkZ2VJZCA9IGNvbnZlcnRUb0VkZ2VJZCgiam9zaCIsICJjcmVhdGVkIiwgImxvcCIpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8RWRnZSwgTWFwPE9iamVjdCxPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19FWDExWF9lbGVtZW50TWFwKGVkZ2VJZCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworCisgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsT2JqZWN0PiBtID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDUsIG0uc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAuNGQsIG0uZ2V0KCJ3ZWlnaHQiKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiY3JlYXRlZCIsIG0uZ2V0KGxhYmVsKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhlZGdlSWQsIG0uZ2V0KFQuaWQpKTsKKworICAgICAgICBmaW5hbCBWZXJ0ZXggdkpvc2ggPSBjb252ZXJ0VG9WZXJ0ZXgoImpvc2giKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHZKb3NoLmlkKCksICgoTWFwPE9iamVjdCxPYmplY3Q+KSBtLmdldChEaXJlY3Rpb24uT1VUKSkuZ2V0KFQuaWQpKTsKKworICAgICAgICBpZiAoIWhhc0dyYXBoQ29tcHV0ZXJSZXF1aXJlbWVudCgpKQorICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHZKb3NoLmxhYmVsKCksICgoTWFwPE9iamVjdCxPYmplY3Q+KSBtLmdldChEaXJlY3Rpb24uT1VUKSkuZ2V0KFQubGFiZWwpKTsKKworICAgICAgICBmaW5hbCBWZXJ0ZXggdkxvcCA9IGNvbnZlcnRUb1ZlcnRleCgibG9wIik7CisgICAgICAgIGFzc2VydEVxdWFscyh2TG9wLmlkKCksICgoTWFwPE9iamVjdCxPYmplY3Q+KSBtLmdldChEaXJlY3Rpb24uSU4pKS5nZXQoVC5pZCkpOworCisgICAgICAgIGlmICghaGFzR3JhcGhDb21wdXRlclJlcXVpcmVtZW50KCkpCisgICAgICAgICAgICBhc3NlcnRFcXVhbHModkxvcC5sYWJlbCgpLCAoKE1hcDxPYmplY3QsT2JqZWN0PikgbS5nZXQoRGlyZWN0aW9uLklOKSkuZ2V0KFQubGFiZWwpKTsKKworICAgICAgICBhc3NlcnRUaGF0KHRyYXZlcnNhbC5oYXNOZXh0KCksIGlzKGZhbHNlKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgRWxlbWVudE1hcFRlc3QgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfZWxlbWVudE1hcCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5lbGVtZW50TWFwKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfZWxlbWVudE1hcFhuYW1lX2FnZVgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuZWxlbWVudE1hcCgibmFtZSIsICJhZ2UiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPEVkZ2UsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX0VYMTFYX2VsZW1lbnRNYXAoZmluYWwgT2JqZWN0IGUxMUlkKSB7CisgICAgICAgICAgICByZXR1cm4gZy5FKGUxMUlkKS5lbGVtZW50TWFwKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0luZGV4VGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9JbmRleFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmVmMDc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9JbmRleFRlc3QuamF2YQpAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk47CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLnRhaWw7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEZhbHNlOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKKy8qKgorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqLworQFJ1bldpdGgoR3JlbWxpblByb2Nlc3NSdW5uZXIuY2xhc3MpCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgSW5kZXhUZXN0IGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QgeworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8T2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfaW5kZXhfdW5mb2xkKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPEludGVnZXIsIFZlcnRleD4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX29yZGVyX2J5WG5hbWVYX2luZGV4X3dpdGhYbWFwWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8T2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfbmFtZV9mb2xkX29yZGVyWGxvY2FsWF9pbmRleF91bmZvbGRfb3JkZXJfYnlYdGFpbFhsb2NhbF8xWFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8SW50ZWdlciwgU3RyaW5nPj4gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfd2l0aFhtYXBYKCk7CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2luZGV4KCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2luZGV4X3VuZm9sZCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdChjb252ZXJ0VG9WZXJ0ZXgoImxvcCIpLCAwKSwKKyAgICAgICAgICAgICAgICBBcnJheXMuYXNMaXN0KGNvbnZlcnRUb1ZlcnRleCgicmlwcGxlIiksIDApCisgICAgICAgICksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9vcmRlcl9ieVhuYW1lWF9pbmRleF93aXRoWG1hcFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxJbnRlZ2VyLCBWZXJ0ZXg+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9vcmRlcl9ieVhuYW1lWF9pbmRleF93aXRoWG1hcFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIE1hcDxJbnRlZ2VyLCBWZXJ0ZXg+IG1hcDEgPSBuZXcgTGlua2VkSGFzaE1hcDw+KCk7CisgICAgICAgIGZpbmFsIE1hcDxJbnRlZ2VyLCBWZXJ0ZXg+IG1hcDIgPSBuZXcgTGlua2VkSGFzaE1hcDw+KCk7CisgICAgICAgIG1hcDEucHV0KDAsIGNvbnZlcnRUb1ZlcnRleCgibG9wIikpOworICAgICAgICBtYXAyLnB1dCgwLCBjb252ZXJ0VG9WZXJ0ZXgoInJpcHBsZSIpKTsKKyAgICAgICAgY2hlY2tPcmRlcmVkUmVzdWx0cyhBcnJheXMuYXNMaXN0KG1hcDEsIG1hcDIpLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfbmFtZV9mb2xkX29yZGVyWGxvY2FsWF9pbmRleF91bmZvbGRfb3JkZXJfYnlYdGFpbFhsb2NhbF8xWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8T2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfbmFtZV9mb2xkX29yZGVyWGxvY2FsWF9pbmRleF91bmZvbGRfb3JkZXJfYnlYdGFpbFhsb2NhbF8xWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrT3JkZXJlZFJlc3VsdHMoQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBBcnJheXMuYXNMaXN0KCJsb3AiLCAwKSwKKyAgICAgICAgICAgICAgICBBcnJheXMuYXNMaXN0KCJyaXBwbGUiLCAxKSksIHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhwZXJzb25YX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfd2l0aFhtYXBYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8SW50ZWdlciwgU3RyaW5nPj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfd2l0aFhtYXBYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBNYXA8SW50ZWdlciwgU3RyaW5nPiBleHBlY3RlZCA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKKyAgICAgICAgZXhwZWN0ZWQucHV0KDAsICJqb3NoIik7CisgICAgICAgIGV4cGVjdGVkLnB1dCgxLCAibWFya28iKTsKKyAgICAgICAgZXhwZWN0ZWQucHV0KDIsICJwZXRlciIpOworICAgICAgICBleHBlY3RlZC5wdXQoMywgInZhZGFzIik7CisgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZCwgdHJhdmVyc2FsLm5leHQoKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIEluZGV4VGVzdCB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PE9iamVjdD4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2luZGV4X3VuZm9sZCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5pbmRleCgpLnVuZm9sZCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8SW50ZWdlciwgVmVydGV4Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfb3JkZXJfYnlYbmFtZVhfaW5kZXhfd2l0aFhtYXBYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLm9yZGVyKCkuYnkoIm5hbWUiKQorICAgICAgICAgICAgICAgICAgICAuPE1hcDxJbnRlZ2VyLCBWZXJ0ZXg+PiBpbmRleCgpLndpdGgoV2l0aE9wdGlvbnMuaW5kZXhlciwgV2l0aE9wdGlvbnMubWFwKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxPYmplY3Q+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYX2luZGV4X3VuZm9sZF9vcmRlcl9ieVh0YWlsWGxvY2FsXzFYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkub3JkZXIoU2NvcGUubG9jYWwpLmluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgLjxMaXN0PE9iamVjdD4+IHVuZm9sZCgpLm9yZGVyKCkuYnkodGFpbChTY29wZS5sb2NhbCwgMSkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8SW50ZWdlciwgU3RyaW5nPj4gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfd2l0aFhtYXBYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkub3JkZXIoU2NvcGUubG9jYWwpCisgICAgICAgICAgICAgICAgICAgIC48TWFwPEludGVnZXIsIFN0cmluZz4+IGluZGV4KCkud2l0aChXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5tYXApOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heFRlc3QuamF2YQppbmRleCAyNGExOWI1Li4xZGRkODU5IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heFRlc3QuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwpAQCAtNDQsNiArNDUsMTYgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiBnZXRfZ19WX2FnZV9tYXgoKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiBnZXRfZ19WX2FnZV9mb2xkX21heFhsb2NhbFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19tYXgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19mb2xkX21heFhsb2NhbFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfbmFtZV9tYXgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfbmFtZV9mb2xkX21heFhsb2NhbFgoKTsKKwogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiBnZXRfZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWF4KCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTnVtYmVyPj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfZ3JvdXBfYnlYbmFtZVhfYnlYYm90aEVfd2VpZ2h0X21heFgoKTsKQEAgLTU4LDYgKzY5LDQ2IEBACiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYWdlX2ZvbGRfbWF4WGxvY2FsWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9hZ2VfZm9sZF9tYXhYbG9jYWxYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQXJyYXlzLmFzTGlzdCgzNSksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2Zvb19tYXgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX21heCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2Zvb19mb2xkX21heFhsb2NhbFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX2ZvbGRfbWF4WGxvY2FsWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX25hbWVfbWF4KCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfbmFtZV9tYXgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KCJ2YWRhcyIpLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9uYW1lX2ZvbGRfbWF4WGxvY2FsWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX25hbWVfZm9sZF9tYXhYbG9jYWxYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQXJyYXlzLmFzTGlzdCgidmFkYXMiKSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9tYXgoKSB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IHRyYXZlcnNhbCA9IGdldF9nX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9tYXgoKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CkBAIC04NSw2ICsxMzYsMzEgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9hZ2VfZm9sZF9tYXhYbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygiYWdlIikuZm9sZCgpLm1heChTY29wZS5sb2NhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IGdldF9nX1ZfZm9vX21heCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImZvbyIpLm1heCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19mb2xkX21heFhsb2NhbFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5mb2xkKCkubWF4KFNjb3BlLmxvY2FsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfbWF4KCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygibmFtZSIpLm1heCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfbmFtZV9mb2xkX21heFhsb2NhbFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJuYW1lIikuZm9sZCgpLm1heChTY29wZS5sb2NhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9tYXgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkucmVwZWF0KGJvdGgoKSkudGltZXMoNSkudmFsdWVzKCJhZ2UiKS5tYXgoKTsKICAgICAgICAgfQpAQCAtOTQsNCArMTcwLDQgQEAKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS48U3RyaW5nLCBOdW1iZXI+Z3JvdXAoKS5ieSgibmFtZSIpLmJ5KGJvdGhFKCkudmFsdWVzKCJ3ZWlnaHQiKS5tYXgoKSk7CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuVGVzdC5qYXZhCmluZGV4IDgxYmU0NGYuLmNiMmFhYzQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhblRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01lYW5UZXN0LmphdmEKQEAgLTIxLDExICsyMSwxMyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKIAogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTjsKQEAgLTQyLDE2ICs0NCwzMiBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gZ2V0X2dfVl9hZ2VfbWVhbigpOwogCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gZ2V0X2dfVl9hZ2VfZm9sZF9tZWFuWGxvY2FsWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9mb29fbWVhbigpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9mb29fZm9sZF9tZWFuWGxvY2FsWCgpOworCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE51bWJlcj4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2dyb3VwX2J5WG5hbWVYX2J5WGJvdGhFX3dlaWdodF9tZWFuWCgpOwogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX2FnZV9tZWFuKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYWdlX21lYW4oKTsKLSAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7Ci0gICAgICAgIGZpbmFsIERvdWJsZSBtZWFuID0gdHJhdmVyc2FsLm5leHQoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDMwLjc1LCBtZWFuLCAwLjA1KTsKLSAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGZvciAoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiB0cmF2ZXJzYWwgOiBBcnJheXMuYXNMaXN0KGdldF9nX1ZfYWdlX21lYW4oKSwgZ2V0X2dfVl9hZ2VfZm9sZF9tZWFuWGxvY2FsWCgpKSkgeworICAgICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgICAgICBmaW5hbCBEb3VibGUgbWVhbiA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzAuNzUsIG1lYW4sIDAuMDUpOworICAgICAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfZm9vX21lYW4oKSB7CisgICAgICAgIGZvciAoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiB0cmF2ZXJzYWwgOiBBcnJheXMuYXNMaXN0KGdldF9nX1ZfZm9vX21lYW4oKSwgZ2V0X2dfVl9mb29fZm9sZF9tZWFuWGxvY2FsWCgpKSkgeworICAgICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEBUZXN0CkBAIC03NSw2ICs5MywyMSBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IGdldF9nX1ZfYWdlX2ZvbGRfbWVhblhsb2NhbFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJhZ2UiKS5mb2xkKCkubWVhbihTY29wZS5sb2NhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9mb29fbWVhbigpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImZvbyIpLm1lYW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2Zvb19mb2xkX21lYW5YbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygiZm9vIikuZm9sZCgpLm1lYW4oU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBOdW1iZXI+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9ncm91cF9ieVhuYW1lWF9ieVhib3RoRV93ZWlnaHRfbWVhblgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikuPFN0cmluZywgTnVtYmVyPmdyb3VwKCkuYnkoIm5hbWUiKS5ieShib3RoRSgpLnZhbHVlcygid2VpZ2h0IikubWVhbigpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5UZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pblRlc3QuamF2YQppbmRleCAzZjc4Mzk1Li5kNGExM2I4IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pblRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pblRlc3QuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwpAQCAtNDQsMTEgKzQ1LDIxIEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9hZ2VfbWluKCk7CiAKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9hZ2VfZm9sZF9taW5YbG9jYWxYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gZ2V0X2dfVl9mb29fbWluKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gZ2V0X2dfVl9mb29fZm9sZF9taW5YbG9jYWxYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfbWluKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfZm9sZF9taW5YbG9jYWxYKCk7CisKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9yZXBlYXRYYm90aFhfdGltZXNYNVhfYWdlX21pbigpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE51bWJlcj4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2dyb3VwX2J5WG5hbWVYX2J5WGJvdGhFX3dlaWdodF9taW5YKCk7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2Zvb19pbmplY3RYOTk5OTk5OTk5OVhfbWluKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IGdldF9nX1ZfZm9vX2luamVjdFg5OTk5OTk5OTk5WF9taW4oKTsKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQpAQCAtNjAsNiArNzEsNDYgQEAKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9hZ2VfZm9sZF9taW5YbG9jYWxYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FnZV9mb2xkX21pblhsb2NhbFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KDI3KSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfZm9vX21pbigpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gdHJhdmVyc2FsID0gZ2V0X2dfVl9mb29fbWluKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfZm9vX2ZvbGRfbWluWGxvY2FsWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gdHJhdmVyc2FsID0gZ2V0X2dfVl9mb29fZm9sZF9taW5YbG9jYWxYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfbmFtZV9taW4oKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVl9uYW1lX21pbigpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoImpvc2giKSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfbmFtZV9mb2xkX21pblhsb2NhbFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVl9uYW1lX2ZvbGRfbWluWGxvY2FsWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoImpvc2giKSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9taW4oKSB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IHRyYXZlcnNhbCA9IGdldF9nX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9taW4oKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CkBAIC04MiwxMCArMTMzLDEwIEBACiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX2Zvb19pbmplY3RYOTk5OTk5OTk5OVhfbWluKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX2luamVjdFg5OTk5OTk5OTk5WF9taW4oKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gdHJhdmVyc2FsID0gZ2V0X2dfVl9mb29faW5qZWN0WDk5OTk5OTk5OTlYX21pbigpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDk5OTk5OTk5OTlMLCB0cmF2ZXJzYWwubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDk5OTk5OTk5OTlMLCB0cmF2ZXJzYWwubmV4dCgpKTsKICAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CiAgICAgfQogCkBAIC05Nyw2ICsxNDgsMzEgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9hZ2VfZm9sZF9taW5YbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygiYWdlIikuZm9sZCgpLm1pbihTY29wZS5sb2NhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IGdldF9nX1ZfZm9vX21pbigpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImZvbyIpLm1pbigpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19mb2xkX21pblhsb2NhbFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5mb2xkKCkubWluKFNjb3BlLmxvY2FsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfbWluKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygibmFtZSIpLm1pbigpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfbmFtZV9mb2xkX21pblhsb2NhbFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJuYW1lIikuZm9sZCgpLm1pbihTY29wZS5sb2NhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9taW4oKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkucmVwZWF0KGJvdGgoKSkudGltZXMoNSkudmFsdWVzKCJhZ2UiKS5taW4oKTsKICAgICAgICAgfQpAQCAtMTA3LDcgKzE4Myw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9mb29faW5qZWN0WDk5OTk5OTk5OTlYX21pbigpIHsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IGdldF9nX1ZfZm9vX2luamVjdFg5OTk5OTk5OTk5WF9taW4oKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5pbmplY3QoOTk5OTk5OTk5OUwpLm1pbigpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9PcmRlclRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvT3JkZXJUZXN0LmphdmEKaW5kZXggYWFmODdhOS4uZWRjYTMxZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9PcmRlclRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL09yZGVyVGVzdC5qYXZhCkBAIC04NCw3ICs4NCw3IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxWZXJ0ZXg+Pj4gZ2V0X2dfVl9ncm91cF9ieVhsYWJlbFhfYnlYbmFtZV9vcmRlcl9ieVhkZXNjWF9mb2xkWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8RG91YmxlPj4gZ2V0X2dfVl9sb2NhbFhib3RoRV93ZWlnaHRfZm9sZFhfb3JkZXJfYnlYc3VtWGxvY2FsWF9kZXNjWCgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PERvdWJsZT4+IGdldF9nX1ZfbWFwWGJvdGhFX3dlaWdodF9mb2xkWF9vcmRlcl9ieVhzdW1YbG9jYWxYX2Rlc2NYKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgT2JqZWN0Pj4gZ2V0X2dfVl9hc1h2WF9tYXBYYm90aEVfd2VpZ2h0X2ZvbGRYX3N1bVhsb2NhbFhfYXNYc1hfc2VsZWN0WHZfc1hfb3JkZXJfYnlYc2VsZWN0WHNYX2Rlc2NYKCk7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcC5FbnRyeTxTdHJpbmcsIE51bWJlcj4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9ncm91cF9ieVhuYW1lWF9ieVhvdXRFX3dlaWdodF9zdW1YX3VuZm9sZF9vcmRlcl9ieVh2YWx1ZXNfZGVzY1goKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXAuRW50cnk8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WWDFYX3ZhbHVlTWFwWHRydWVYX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkKGZpbmFsIE9iamVjdCB2MUlkKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwLkVudHJ5PE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVlgxWF9lbGVtZW50TWFwX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkKGZpbmFsIE9iamVjdCB2MUlkKTsKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQpAQCAtMjcwLDggKzI3MCw4IEBACiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKLSAgICBwdWJsaWMgdm9pZCBnX1ZfbG9jYWxYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1goKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8RG91YmxlPj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9sb2NhbFhib3RoRV93ZWlnaHRfZm9sZFhfb3JkZXJfYnlYc3VtWGxvY2FsWF9kZXNjWCgpOworICAgIHB1YmxpYyB2b2lkIGdfVl9tYXBYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1goKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8RG91YmxlPj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9tYXBYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1goKTsKICAgICAgICAgZmluYWwgTGlzdDxMaXN0PERvdWJsZT4+IGxpc3QgPSB0cmF2ZXJzYWwudG9MaXN0KCk7CiAgICAgICAgIGFzc2VydEVxdWFscyhsaXN0LmdldCgwKS5zaXplKCksIDMpOwogICAgICAgICBhc3NlcnRFcXVhbHMobGlzdC5nZXQoMSkuc2l6ZSgpLCAzKTsKQEAgLTQxMiwxMiArNDEyLDkgQEAKICAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTnVtYmVyPiBtID0gdHJhdmVyc2FsLm5leHQoKTsKICAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscyg0LCBtLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygzLCBtLnNpemUoKSk7CiAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPE1hcC5FbnRyeTxTdHJpbmcsIE51bWJlcj4+IGl0ZXJhdG9yID0gbS5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CiAgICAgICAgIE1hcC5FbnRyeTxTdHJpbmcsIE51bWJlcj4gZW50cnkgPSBpdGVyYXRvci5uZXh0KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygidmFkYXMiLCBlbnRyeS5nZXRLZXkoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLjAsIGVudHJ5LmdldFZhbHVlKCkuZG91YmxlVmFsdWUoKSwgMC4wMDAxKTsKLSAgICAgICAgZW50cnkgPSBpdGVyYXRvci5uZXh0KCk7CiAgICAgICAgIGFzc2VydEVxdWFscygicGV0ZXIiLCBlbnRyeS5nZXRLZXkoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygwLjIsIGVudHJ5LmdldFZhbHVlKCkuZG91YmxlVmFsdWUoKSwgMC4wMDAxKTsKICAgICAgICAgZW50cnkgPSBpdGVyYXRvci5uZXh0KCk7CkBAIC00MzEsNyArNDI4LDcgQEAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTGFiZWxYcGVyc29uWF9ncm91cF9ieVhuYW1lWF9ieVhvdXRFX3dlaWdodF9zdW1YX3VuZm9sZF9vcmRlcl9ieVh2YWx1ZXNfZGVzY1goKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9ncm91cF9ieVhuYW1lWF9ieVhvdXRFX3dlaWdodF9zdW1YX3VuZm9sZF9vcmRlcl9ieVh2YWx1ZXNfZGVzY1goKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwLkVudHJ5PFN0cmluZywgTnVtYmVyPj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX2dyb3VwX2J5WG5hbWVYX2J5WG91dEVfd2VpZ2h0X3N1bVhfdW5mb2xkX29yZGVyX2J5WHZhbHVlc19kZXNjWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKIApAQCAtNDQ4LDE3ICs0NDUsMTMgQEAKICAgICAgICAgZW50cnkgPSBvIGluc3RhbmNlb2YgTWFwLkVudHJ5ID8gKE1hcC5FbnRyeSkgbyA6ICgoTWFwPFN0cmluZyxOdW1iZXI+KSBvKS5lbnRyeVNldCgpLml0ZXJhdG9yKCkubmV4dCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInBldGVyIiwgZW50cnkuZ2V0S2V5KCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMC4yLCBlbnRyeS5nZXRWYWx1ZSgpLmRvdWJsZVZhbHVlKCksIDAuMDAwMSk7Ci0gICAgICAgIG8gPSB0cmF2ZXJzYWwubmV4dCgpOwotICAgICAgICBlbnRyeSA9IG8gaW5zdGFuY2VvZiBNYXAuRW50cnkgPyAoTWFwLkVudHJ5KSBvIDogKChNYXA8U3RyaW5nLE51bWJlcj4pIG8pLmVudHJ5U2V0KCkuaXRlcmF0b3IoKS5uZXh0KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygidmFkYXMiLCBlbnRyeS5nZXRLZXkoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLjAsIGVudHJ5LmdldFZhbHVlKCkuZG91YmxlVmFsdWUoKSwgMC4wMDAxKTsKICAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CiAgICAgfQogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCi0gICAgcHVibGljIHZvaWQgZ19WWDFYX3ZhbHVlTWFwWHRydWVYX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCA/PiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDFYX3ZhbHVlTWFwWHRydWVYX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7CisgICAgcHVibGljIHZvaWQgZ19WWDFYX2VsZW1lbnRNYXBfb3JkZXJYbG9jYWxYX2J5WGtleXNfZGVzY1h1bmZvbGQoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHRyYXZlcnNhbCA9IGdldF9nX1ZYMVhfZWxlbWVudE1hcF9vcmRlclhsb2NhbFhfYnlYa2V5c19kZXNjWHVuZm9sZChjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKIAogICAgICAgICBmaW5hbCBPYmplY3QgbmFtZSA9IHRyYXZlcnNhbC5uZXh0KCk7CkBAIC01NTUsOCArNTQ4LDggQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxEb3VibGU+PiBnZXRfZ19WX2xvY2FsWGJvdGhFX3dlaWdodF9mb2xkWF9vcmRlcl9ieVhzdW1YbG9jYWxYX2Rlc2NYKCkgewotICAgICAgICAgICAgcmV0dXJuIGcuVigpLmxvY2FsKF9fLmJvdGhFKCkuPERvdWJsZT52YWx1ZXMoIndlaWdodCIpLmZvbGQoKSkub3JkZXIoKS5ieShfXy5zdW0oU2NvcGUubG9jYWwpLCBkZXNjKTsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8RG91YmxlPj4gZ2V0X2dfVl9tYXBYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1goKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkubWFwKF9fLmJvdGhFKCkuPERvdWJsZT52YWx1ZXMoIndlaWdodCIpLmZvbGQoKSkub3JkZXIoKS5ieShfXy5zdW0oU2NvcGUubG9jYWwpLCBPcmRlci5kZXNjKTsKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQpAQCAtNjE1LDggKzYwOCw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcC5FbnRyeTxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZYMVhfdmFsdWVNYXBYdHJ1ZVhfb3JkZXJYbG9jYWxYX2J5WGtleXNfZGVzY1h1bmZvbGQoZmluYWwgT2JqZWN0IHYxSWQpIHsKLSAgICAgICAgICAgIHJldHVybiBnLlYodjFJZCkudmFsdWVNYXAodHJ1ZSkub3JkZXIoU2NvcGUubG9jYWwpLmJ5KGtleXMsIGRlc2MpLnVuZm9sZCgpOworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwLkVudHJ5PE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVlgxWF9lbGVtZW50TWFwX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkKGZpbmFsIE9iamVjdCB2MUlkKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKHYxSWQpLmVsZW1lbnRNYXAoKS5vcmRlcihTY29wZS5sb2NhbCkuYnkoa2V5cywgZGVzYykudW5mb2xkKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFua1Rlc3QuamF2YQppbmRleCAzZWIwNmM0Li44NjRlYmIwIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUGFnZVJhbmtUZXN0LmphdmEKQEAgLTIzLDYgKzIzLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5yYW5raW5nLnBhZ2VyYW5rLlBhZ2VSYW5rVmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlBhZ2VSYW5rOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CkBAIC01MCw3ICs1MSw3IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX3BhZ2VSYW5rX2hhc1hwYWdlUmFua1goKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX291dFhjcmVhdGVkWF9wYWdlUmFua19ieVhib3RoRVhfYnlYcHJvamVjdFJhbmtYX3RpbWVzWDBYX3ZhbHVlTWFwWG5hbWVfcHJvamVjdFJhbmtYKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX3BhZ2VSYW5rX2J5WGJvdGhFWF9ieVhwcm9qZWN0UmFua1hfdGltZXNYMFhfdmFsdWVNYXBYbmFtZV9wcm9qZWN0UmFua1goKTsKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfcGFnZVJhbmtfb3JkZXJfYnlYcGFnZVJhbmtfZGVzY1hfYnlYbmFtZVhfbmFtZSgpOwogCkBAIC02Miw3ICs2Myw5IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgT2JqZWN0Pj4gZ2V0X2dfVl9wYWdlUmFua19ieVhwYWdlUmFua1hfYXNYYVhfb3V0WGtub3dzWF9wYWdlUmFua19hc1hiWF9zZWxlY3RYYV9iWF9ieV9ieVhtYXRoWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2hhc1huYW1lX3JpcHBsZVhfcGFnZVJhbmtYMVhfYnlYaW5FWGNyZWF0ZWRYWF90aW1lc1gxWF9ieVhwcmlvcnNYX2luWGNyZWF0ZWRYX3VuaW9uWGJvdGhfX2lkZW50aXR5WF92YWx1ZU1hcFhuYW1lX3ByaW9yc1goKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfaGFzWG5hbWVfcmlwcGxlWF9wYWdlUmFua1gxWF9ieVhpbkVYY3JlYXRlZFhYX3RpbWVzWDFYX2J5WHByaW9yc1hfaW5YY3JlYXRlZFhfdW5pb25YYm90aF9faWRlbnRpdHlYX3ZhbHVlTWFwWG5hbWVfcHJpb3JzWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8VmVydGV4Pj4+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX2dyb3VwWG1YX2J5WGxhYmVsWF9wYWdlUmFua1gxWF93aXRoWHByb3BlcnR5TmFtZV9wYWdlUmFua1hYX3dpdGhYZWRnZXNfaW5FWFhfd2l0aFh0aW1lc18xWF9pblhjcmVhdGVkWF9ncm91cFhtWF9ieVhwYWdlUmFua1hfY2FwWG1YKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxWZXJ0ZXg+Pj4gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfZ3JvdXBYbVhfYnlYbGFiZWxYX3BhZ2VSYW5rWDFYX2J5WHBhZ2VSYW5rWF9ieVhpbkVYX3RpbWVzWDFYX2luWGNyZWF0ZWRYX2dyb3VwWG1YX2J5WHBhZ2VSYW5rWF9jYXBYbVgoKTsKIApAQCAtNzcsOSArODAsOSBAQAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9vdXRYY3JlYXRlZFhfcGFnZVJhbmtfYnlYYm90aEVYX2J5WHByb2plY3RSYW5rWF92YWx1ZU1hcFhuYW1lX3Byb2plY3RSYW5rWCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfcGFnZVJhbmtfYnlYYm90aEVYX2J5WHByb2plY3RSYW5rWF90aW1lc1gwWF92YWx1ZU1hcFhuYW1lX3Byb2plY3RSYW5rWCgpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX291dFhjcmVhdGVkWF9wYWdlUmFua19ieVhib3RoRVhfYnlYcHJvamVjdFJhbmtYX3RpbWVzWDBYX3ZhbHVlTWFwWG5hbWVfcHJvamVjdFJhbmtYKCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwotICAgICAgICBmaW5hbCBMaXN0PE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IHJlc3VsdCA9IHRyYXZlcnNhbC50b0xpc3QoKTsKKyAgICAgICAgZmluYWwgTGlzdDxNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiByZXN1bHQgPSB0cmF2ZXJzYWwudG9MaXN0KCk7CiAgICAgICAgIGFzc2VydEVxdWFscyg0LCByZXN1bHQuc2l6ZSgpKTsKICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgRG91YmxlPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIHJlc3VsdC5mb3JFYWNoKG0gLT4gbWFwLnB1dCgoU3RyaW5nKSBtLmdldCgibmFtZSIpLmdldCgwKSwgKERvdWJsZSkgbS5nZXQoInByb2plY3RSYW5rIikuZ2V0KDApKSk7CkBAIC0xODEsMTEgKzE4NCwxMSBAQAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfaGFzWG5hbWVfcmlwcGxlWF9wYWdlUmFua1gxWF9ieVhpbkVYY3JlYXRlZFhYX3RpbWVzWDFYX2J5WHByaW9yc1hfaW5YY3JlYXRlZFhfdW5pb25YYm90aF9faWRlbnRpdHlYX3ZhbHVlTWFwWG5hbWVfcHJpb3JzWCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfaGFzWG5hbWVfcmlwcGxlWF9wYWdlUmFua1gxWF9ieVhpbkVYY3JlYXRlZFhYX3RpbWVzWDFYX2J5WHByaW9yc1hfaW5YY3JlYXRlZFhfdW5pb25YYm90aF9faWRlbnRpdHlYX3ZhbHVlTWFwWG5hbWVfcHJpb3JzWCgpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9oYXNYbmFtZV9yaXBwbGVYX3BhZ2VSYW5rWDFYX2J5WGluRVhjcmVhdGVkWFhfdGltZXNYMVhfYnlYcHJpb3JzWF9pblhjcmVhdGVkWF91bmlvblhib3RoX19pZGVudGl0eVhfdmFsdWVNYXBYbmFtZV9wcmlvcnNYKCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwogICAgICAgICBpbnQgY291bnRlciA9IDA7CiAgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+IG1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+IG1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgbWFwLnNpemUoKSk7CiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpIG1hcC5nZXQoIm5hbWUiKS5nZXQoMCk7CiAgICAgICAgICAgICBkb3VibGUgcGFnZVJhbmsgPSAoRG91YmxlKSBtYXAuZ2V0KCJwcmlvcnMiKS5nZXQoMCk7CkBAIC0yMzAsNiArMjMzLDM5IEBACiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9vdXRYY3JlYXRlZFhfZ3JvdXBYbVhfYnlYbGFiZWxYX3BhZ2VSYW5rWDFYX3dpdGhYUFJPUEVSVFlfTkFNRV9wYWdlUmFua1hYX3dpdGhYRURHRVNfaW5FWFhfd2l0aFhUSU1FU18xWF9pblhjcmVhdGVkWF9ncm91cFhtWF9ieVhwYWdlUmFua1hfY2FwWG1YKCkgeworICAgICAgICAvLyBbezIuMD1bdls0XSwgdls0XSwgdls0XSwgdls0XV0sIDEuMD1bdls2XSwgdls2XSwgdls2XSwgdlsxXSwgdlsxXSwgdlsxXV0sIHNvZnR3YXJlPVt2WzVdLCB2WzNdLCB2WzNdLCB2WzNdXX1dCisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8VmVydGV4Pj4+IHRyYXZlcnNhbCA9IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX2dyb3VwWG1YX2J5WGxhYmVsWF9wYWdlUmFua1gxWF93aXRoWHByb3BlcnR5TmFtZV9wYWdlUmFua1hYX3dpdGhYZWRnZXNfaW5FWFhfd2l0aFh0aW1lc18xWF9pblhjcmVhdGVkWF9ncm91cFhtWF9ieVhwYWdlUmFua1hfY2FwWG1YKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBMaXN0PFZlcnRleD4+IG1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMywgbWFwLnNpemUoKSk7CisgICAgICAgIGFzc2VydFRydWUobWFwLmNvbnRhaW5zS2V5KCJzb2Z0d2FyZSIpKTsKKyAgICAgICAgbWFwLmZvckVhY2goKGssIHYpIC0+IHsKKyAgICAgICAgICAgIGJvb2xlYW4gZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICghay5lcXVhbHMoInNvZnR3YXJlIikgJiYgdi5zaXplKCkgPT0gNCkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyLjBkLCAoKE51bWJlcikgaykuZG91YmxlVmFsdWUoKSwgMC4wMWQpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2LnN0cmVhbSgpLmZpbHRlcih2ZXJ0ZXggLT4gdmVydGV4LmlkKCkuZXF1YWxzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAiam9zaCIpKSkuY291bnQoKSk7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICh2LnNpemUoKSA9PSA2KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEuMGQsICgoTnVtYmVyKSBrKS5kb3VibGVWYWx1ZSgpLCAwLjAxZCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHYuc3RyZWFtKCkuZmlsdGVyKHZlcnRleCAtPiB2ZXJ0ZXguaWQoKS5lcXVhbHMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJwZXRlciIpKSkuY291bnQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHYuc3RyZWFtKCkuZmlsdGVyKHZlcnRleCAtPiB2ZXJ0ZXguaWQoKS5lcXVhbHMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKSkuY291bnQoKSk7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICh2LnNpemUoKSA9PSA0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIGspOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2LnN0cmVhbSgpLmZpbHRlcih2ZXJ0ZXggLT4gdmVydGV4LmlkKCkuZXF1YWxzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibG9wIikpKS5jb3VudCgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgdi5zdHJlYW0oKS5maWx0ZXIodmVydGV4IC0+IHZlcnRleC5pZCgpLmVxdWFscyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgInJpcHBsZSIpKSkuY291bnQoKSk7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZvdW5kKQorICAgICAgICAgICAgICAgIGZhaWwoIlRoZXJlIGFyZSB0b28gbWFueSBrZXkvdmFsdWVzOiAiICsgayArICItLSIgKyB2KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgUGFnZVJhbmtUZXN0IHsKIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTIzOCw3ICsyNzQsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX291dFhjcmVhdGVkWF9wYWdlUmFua19ieVhib3RoRVhfYnlYcHJvamVjdFJhbmtYX3RpbWVzWDBYX3ZhbHVlTWFwWG5hbWVfcHJvamVjdFJhbmtYKCkgeworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfcGFnZVJhbmtfYnlYYm90aEVYX2J5WHByb2plY3RSYW5rWF90aW1lc1gwWF92YWx1ZU1hcFhuYW1lX3Byb2plY3RSYW5rWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5vdXQoImNyZWF0ZWQiKS5wYWdlUmFuaygpLmJ5KF9fLmJvdGhFKCkpLmJ5KCJwcm9qZWN0UmFuayIpLnRpbWVzKDApLnZhbHVlTWFwKCJuYW1lIiwgInByb2plY3RSYW5rIik7CiAgICAgICAgIH0KIApAQCAtMjY4LDcgKzMwNCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2hhc1huYW1lX3JpcHBsZVhfcGFnZVJhbmtYMVhfYnlYaW5FWGNyZWF0ZWRYWF90aW1lc1gxWF9ieVhwcmlvcnNYX2luWGNyZWF0ZWRYX3VuaW9uWGJvdGhfX2lkZW50aXR5WF92YWx1ZU1hcFhuYW1lX3ByaW9yc1goKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9oYXNYbmFtZV9yaXBwbGVYX3BhZ2VSYW5rWDFYX2J5WGluRVhjcmVhdGVkWFhfdGltZXNYMVhfYnlYcHJpb3JzWF9pblhjcmVhdGVkWF91bmlvblhib3RoX19pZGVudGl0eVhfdmFsdWVNYXBYbmFtZV9wcmlvcnNYKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLmhhcygibmFtZSIsICJyaXBwbGUiKS5wYWdlUmFuaygxLjApLmJ5KF9fLmluRSgiY3JlYXRlZCIpKS50aW1lcygxKS5ieSgicHJpb3JzIikuaW4oImNyZWF0ZWQiKS51bmlvbihfXy5ib3RoKCksIF9fLmlkZW50aXR5KCkpLnZhbHVlTWFwKCJuYW1lIiwgInByaW9ycyIpOwogICAgICAgICB9CiAKQEAgLTI3Niw1ICszMTIsMTAgQEAKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8VmVydGV4Pj4+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX2dyb3VwWG1YX2J5WGxhYmVsWF9wYWdlUmFua1gxWF9ieVhwYWdlUmFua1hfYnlYaW5FWF90aW1lc1gxWF9pblhjcmVhdGVkWF9ncm91cFhtWF9ieVhwYWdlUmFua1hfY2FwWG1YKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLm91dCgiY3JlYXRlZCIpLmdyb3VwKCJtIikuYnkoVC5sYWJlbCkucGFnZVJhbmsoMS4wKS5ieSgicGFnZVJhbmsiKS5ieShfXy5pbkUoKSkudGltZXMoMSkuaW4oImNyZWF0ZWQiKS5ncm91cCgibSIpLmJ5KCJwYWdlUmFuayIpLmNhcCgibSIpOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PFZlcnRleD4+PiBnZXRfZ19WX291dFhjcmVhdGVkWF9ncm91cFhtWF9ieVhsYWJlbFhfcGFnZVJhbmtYMVhfd2l0aFhwcm9wZXJ0eU5hbWVfcGFnZVJhbmtYWF93aXRoWGVkZ2VzX2luRVhYX3dpdGhYdGltZXNfMVhfaW5YY3JlYXRlZFhfZ3JvdXBYbVhfYnlYcGFnZVJhbmtYX2NhcFhtWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5vdXQoImNyZWF0ZWQiKS5ncm91cCgibSIpLmJ5KFQubGFiZWwpLnBhZ2VSYW5rKDEuMCkud2l0aChQYWdlUmFuay5wcm9wZXJ0eU5hbWUsICJwYWdlUmFuayIpLndpdGgoUGFnZVJhbmsuZWRnZXMsIF9fLmluRSgpKS53aXRoKFBhZ2VSYW5rLnRpbWVzLCAxKS5pbigiY3JlYXRlZCIpLmdyb3VwKCJtIikuYnkoInBhZ2VSYW5rIikuY2FwKCJtIik7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhdGhUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhdGhUZXN0LmphdmEKaW5kZXggMzAxNDk5OC4uN2YyZDgwMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9QYXRoVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUGF0aFRlc3QuamF2YQpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgICBmaW5hbCBQYXRoIHBhdGggPSB0cmF2ZXJzYWwubmV4dCgpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHBhdGguc2l6ZSgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygibWFya28iLCAoKFZlcnRleCkgcGF0aC5nZXQoMCkpLjxTdHJpbmc+dmFsdWUoIm5hbWUiKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoY29udmVydFRvVmVydGV4ICgibWFya28iKSwgcGF0aC48VmVydGV4PmdldCgwKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImpvc2giLCBwYXRoLjxTdHJpbmc+Z2V0KDEpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygiamF2YSIsIHBhdGguPFN0cmluZz5nZXQoMikpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZVRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlVGVzdC5qYXZhCmluZGV4IGJlNGNlOWEuLjUwODc1MjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlVGVzdC5qYXZhCkBAIC0yNCw2ICsyNCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuY2x1c3RlcmluZy5wZWVycHJlc3N1cmUuUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlBlZXJQcmVzc3VyZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CkBAIC01Miw3ICs1Myw5IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTnVtYmVyPj4gZ2V0X2dfVl9wZWVyUHJlc3N1cmVfYnlYY2x1c3RlclhfYnlYb3V0RVhrbm93c1hYX3BhZ2VSYW5rWDFYX2J5WHJhbmtYX2J5WG91dEVYa25vd3NYWF90aW1lc1gyWF9ncm91cF9ieVhjbHVzdGVyWF9ieVhyYW5rX3N1bVhfbGltaXRYMTAwWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzWG5hbWVfcmlwcGxlWF9pblhjcmVhdGVkWF9wZWVyUHJlc3N1cmVfYnlYb3V0RVhfYnlYY2x1c3RlclhfcmVwZWF0WHVuaW9uWGlkZW50aXR5X19ib3RoWF90aW1lc1gyWF9kZWR1cF92YWx1ZU1hcFhuYW1lX2NsdXN0ZXJYKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzWG5hbWVfcmlwcGxlWF9pblhjcmVhdGVkWF9wZWVyUHJlc3N1cmVfYnlYb3V0RVhfYnlYY2x1c3RlclhfcmVwZWF0WHVuaW9uWGlkZW50aXR5X19ib3RoWF90aW1lc1gyWF9kZWR1cF92YWx1ZU1hcFhuYW1lX2NsdXN0ZXJYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV93aXRoWGVkZ2VzX291dEVYX3dpdGhYcHJvcGVydHlOYW1lX2NsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpOwogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCkBAIC04MCw5ICs4Myw5IEBACiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV9ieVhvdXRFWF9ieVhjbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKSB7CiAgICAgICAgIFRlc3RIZWxwZXIuYXNzdW1lTm9uRGV0ZXJtaW5pc3RpYygpOwotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX2J5WG91dEVYX2J5WGNsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX2J5WG91dEVYX2J5WGNsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKLSAgICAgICAgZmluYWwgTGlzdDxNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiByZXN1bHRzID0gdHJhdmVyc2FsLnRvTGlzdCgpOworICAgICAgICBmaW5hbCBMaXN0PE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IHJlc3VsdHMgPSB0cmF2ZXJzYWwudG9MaXN0KCk7CiAgICAgICAgIGFzc2VydEVxdWFscyg2LCByZXN1bHRzLnNpemUoKSk7CiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gY2x1c3RlcnMgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChtIC0+IGNsdXN0ZXJzLnB1dCgoU3RyaW5nKSBtLmdldCgibmFtZSIpLmdldCgwKSwgbS5nZXQoImNsdXN0ZXIiKS5nZXQoMCkpKTsKQEAgLTk3LDcgKzEwMCwyOSBAQAogICAgICAgICBhc3NlcnRUcnVlKGlkcy5jb250YWlucyhjb252ZXJ0VG9WZXJ0ZXhJZCgiam9zaCIpKSk7CiAgICAgICAgIGFzc2VydFRydWUoaWRzLmNvbnRhaW5zKGNvbnZlcnRUb1ZlcnRleElkKCJwZXRlciIpKSk7CiAgICAgfQotICAgIAorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX3dpdGhYRURHRVNfb3V0RVhfd2l0aFhQUk9QRVJUWV9OQU1FX2NsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpIHsKKyAgICAgICAgVGVzdEhlbHBlci5hc3N1bWVOb25EZXRlcm1pbmlzdGljKCk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfcmlwcGxlWF9pblhjcmVhdGVkWF9wZWVyUHJlc3N1cmVfd2l0aFhlZGdlc19vdXRFWF93aXRoWHByb3BlcnR5TmFtZV9jbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8TWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gcmVzdWx0cyA9IHRyYXZlcnNhbC50b0xpc3QoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIHJlc3VsdHMuc2l6ZSgpKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBjbHVzdGVycyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgcmVzdWx0cy5mb3JFYWNoKG0gLT4gY2x1c3RlcnMucHV0KChTdHJpbmcpIG0uZ2V0KCJuYW1lIikuZ2V0KDApLCBtLmdldCgiY2x1c3RlciIpLmdldCgwKSkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMiwgcmVzdWx0cy5nZXQoMCkuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIGNsdXN0ZXJzLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhjbHVzdGVycy5nZXQoImpvc2giKSwgY2x1c3RlcnMuZ2V0KCJyaXBwbGUiKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhjbHVzdGVycy5nZXQoImpvc2giKSwgY2x1c3RlcnMuZ2V0KCJsb3AiKSk7CisgICAgICAgIGZpbmFsIFNldDxPYmplY3Q+IGlkcyA9IG5ldyBIYXNoU2V0PD4oY2x1c3RlcnMudmFsdWVzKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoNCwgaWRzLnNpemUoKSk7CisgICAgICAgIGFzc2VydFRydWUoaWRzLmNvbnRhaW5zKGNvbnZlcnRUb1ZlcnRleElkKCJtYXJrbyIpKSk7CisgICAgICAgIGFzc2VydFRydWUoaWRzLmNvbnRhaW5zKGNvbnZlcnRUb1ZlcnRleElkKCJ2YWRhcyIpKSk7CisgICAgICAgIGFzc2VydFRydWUoaWRzLmNvbnRhaW5zKGNvbnZlcnRUb1ZlcnRleElkKCJqb3NoIikpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpZHMuY29udGFpbnMoY29udmVydFRvVmVydGV4SWQoInBldGVyIikpKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBQZWVyUHJlc3N1cmVUZXN0IHsKIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTExMSw4ICsxMzYsMTMgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV9ieVhvdXRFWF9ieVhjbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX2J5WG91dEVYX2J5WGNsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCAicmlwcGxlIikuaW4oImNyZWF0ZWQiKS5wZWVyUHJlc3N1cmUoKS5ieShfXy5vdXRFKCkpLmJ5KCJjbHVzdGVyIikucmVwZWF0KF9fLnVuaW9uKF9fLmlkZW50aXR5KCksIF9fLmJvdGgoKSkpLnRpbWVzKDIpLmRlZHVwKCkudmFsdWVNYXAoIm5hbWUiLCAiY2x1c3RlciIpOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX3dpdGhYZWRnZXNfb3V0RVhfd2l0aFhwcm9wZXJ0eU5hbWVfY2x1c3RlclhfcmVwZWF0WHVuaW9uWGlkZW50aXR5X19ib3RoWF90aW1lc1gyWF9kZWR1cF92YWx1ZU1hcFhuYW1lX2NsdXN0ZXJYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsICJyaXBwbGUiKS5pbigiY3JlYXRlZCIpLnBlZXJQcmVzc3VyZSgpLndpdGgoUGVlclByZXNzdXJlLmVkZ2VzLF9fLm91dEUoKSkud2l0aChQZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lLCAiY2x1c3RlciIpLnJlcGVhdChfXy51bmlvbihfXy5pZGVudGl0eSgpLCBfXy5ib3RoKCkpKS50aW1lcygyKS5kZWR1cCgpLnZhbHVlTWFwKCJuYW1lIiwgImNsdXN0ZXIiKTsKKyAgICAgICAgfQogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb2dyYW1UZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb2dyYW1UZXN0LmphdmEKaW5kZXggMTkyMzM1Mi4uYTBjNWIyMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9ncmFtVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvZ3JhbVRlc3QuamF2YQpAQCAtNzEsNyArNzEsNyBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9wcm9ncmFtWHBhZ2VSYW5rWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9wcm9ncmFtWHBhZ2VSYW5rX3JhbmtYX29yZGVyX2J5WHJhbmtfYXNjWF92YWx1ZU1hcFhuYW1lX3JhbmtYKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9wcm9ncmFtWHBhZ2VSYW5rX3JhbmtYX29yZGVyX2J5WHJhbmtfYXNjWF92YWx1ZU1hcFhuYW1lX3JhbmtYKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgT2JqZWN0Pj4gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfYWdncmVnYXRlWHhYX2J5WGxhbmdYX2dyb3VwQ291bnRfcHJvZ3JhbVhUZXN0UHJvZ3JhbVhfYXNYYVhfc2VsZWN0WGFfeFgoKTsKIApAQCAtOTIsMTIgKzkyLDEyIEBACiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX2hhc0xhYmVsWHBlcnNvblhfcHJvZ3JhbVhwYWdlUmFua19yYW5rWF9vcmRlcl9ieVhyYW5rX2FzY1hfdmFsdWVNYXBYbmFtZV9yYW5rWCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX3Byb2dyYW1YcGFnZVJhbmtfcmFua1hfb3JkZXJfYnlYcmFua19hc2NYX3ZhbHVlTWFwWG5hbWVfcmFua1goKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX3Byb2dyYW1YcGFnZVJhbmtfcmFua1hfb3JkZXJfYnlYcmFua19hc2NYX3ZhbHVlTWFwWG5hbWVfcmFua1goKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGludCBjb3VudGVyID0gMDsKICAgICAgICAgZG91YmxlIGxhc3RSYW5rID0gRG91YmxlLk1JTl9WQUxVRTsKICAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4gbWFwID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4gbWFwID0gdHJhdmVyc2FsLm5leHQoKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCBtYXAuc2l6ZSgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBtYXAuZ2V0KCJuYW1lIikuc2l6ZSgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBtYXAuZ2V0KCJyYW5rIikuc2l6ZSgpKTsKQEAgLTE0OCw3ICsxNDgsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfcHJvZ3JhbVhwYWdlUmFua19yYW5rWF9vcmRlcl9ieVhyYW5rX2FzY1hfdmFsdWVNYXBYbmFtZV9yYW5rWCgpIHsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9wcm9ncmFtWHBhZ2VSYW5rX3JhbmtYX29yZGVyX2J5WHJhbmtfYXNjWF92YWx1ZU1hcFhuYW1lX3JhbmtYKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS5wcm9ncmFtKFBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5idWlsZCgpLnByb3BlcnR5KCJyYW5rIikuY3JlYXRlKGdyYXBoKSkub3JkZXIoKS5ieSgicmFuayIsIE9yZGVyLmFzYykudmFsdWVNYXAoIm5hbWUiLCAicmFuayIpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvamVjdFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvamVjdFRlc3QuamF2YQppbmRleCA2YmZhZTkwLi5hZjcxNTAwIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb2plY3RUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9qZWN0VGVzdC5qYXZhCkBAIC0yNyw2ICsyNyw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CiAKQEAgLTQyLDYgKzQzLDggQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX3Byb2plY3RYYV9iWF9ieVhuYW1lWF9ieVhpblhjcmVhdGVkWF9jb3VudFhfb3JkZXJfYnlYc2VsZWN0WGJYX19kZXNjWF9zZWxlY3RYYVgoKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwX3Byb2plY3RYeFhfYnlYc2VsZWN0WG5hbWVYWCgpOworCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX2hhc0xhYmVsWHBlcnNvblhfcHJvamVjdFhhX2JYX2J5WG91dEVfY291bnRYX2J5WGFnZVgoKSB7CkBAIC02Nyw2ICs3MCwyMCBAQAogICAgICAgICBhc3NlcnRFcXVhbHMoInJpcHBsZSIsIG5hbWVzLmdldCgzKSk7CiAgICAgfQogCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3ZhbHVlTWFwX3Byb2plY3RYeFhfYnlYc2VsZWN0WG5hbWVYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZU1hcF9wcm9qZWN0WHhYX2J5WHNlbGVjdFhuYW1lWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhtYWtlTWFwTGlzdCgxLAorICAgICAgICAgICAgICAgICJ4IiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgibWFya28iKSwKKyAgICAgICAgICAgICAgICAieCIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoInZhZGFzIiksCisgICAgICAgICAgICAgICAgIngiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJsb3AiKSwKKyAgICAgICAgICAgICAgICAieCIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoImpvc2giKSwKKyAgICAgICAgICAgICAgICAieCIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoInJpcHBsZSIpLAorICAgICAgICAgICAgICAgICJ4IiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgicGV0ZXIiKSksIHRyYXZlcnNhbCk7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgUHJvamVjdFRlc3QgewogCiAgICAgICAgIEBPdmVycmlkZQpAQCAtNzgsNSArOTUsMTAgQEAKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfcHJvamVjdFhhX2JYX2J5WG5hbWVYX2J5WGluWGNyZWF0ZWRYX2NvdW50WF9vcmRlcl9ieVhzZWxlY3RYYlhfX2Rlc2NYX3NlbGVjdFhhWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5vdXQoImNyZWF0ZWQiKS5wcm9qZWN0KCJhIiwgImIiKS5ieSgibmFtZSIpLmJ5KF9fLmluKCJjcmVhdGVkIikuY291bnQoKSkub3JkZXIoKS5ieShfXy5zZWxlY3QoImIiKSwgT3JkZXIuZGVzYykuc2VsZWN0KCJhIik7CiAgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBfcHJvamVjdFh4WF9ieVhzZWxlY3RYbmFtZVhYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlTWFwKCkucHJvamVjdCgieCIpLmJ5KF9fLnNlbGVjdCgibmFtZSIpKTsKKyAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUmVhZFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUmVhZFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2I1M2M0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9SZWFkVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uRmVhdHVyZVJlcXVpcmVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU87CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9UZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBobWwuR3JhcGhNTFJlc291cmNlQWNjZXNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OUmVzb3VyY2VBY2Nlc3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVzb3VyY2VBY2Nlc3M7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BSdW5XaXRoKEdyZW1saW5Qcm9jZXNzUnVubmVyLmNsYXNzKQorcHVibGljIGFic3RyYWN0IGNsYXNzIFJlYWRUZXN0IGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QgeworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkWGtyeW9YKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyeW9YKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkWGpzb25YKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBoc29uWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZFh4bWxYKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBobWxYKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgQFRlc3QKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfSU9fUkVBRCkKKyAgICBwdWJsaWMgdm9pZCBnX2lvX3JlYWRYa3J5b1goKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShSZWFkVGVzdC5jbGFzcywgR3J5b1Jlc291cmNlQWNjZXNzLmNsYXNzLCAidGlua2VycG9wLW1vZGVybi12M2QwLmtyeW8iLCAiIikuZ2V0QWJzb2x1dGVQYXRoKCkucmVwbGFjZSgnXFwnLCAnLycpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gdHJhdmVyc2FsID0gZ2V0X2dfaW9fcmVhZFhrcnlvWChmaWxlVG9SZWFkKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIHRyYXZlcnNhbC5pdGVyYXRlKCk7CisKKyAgICAgICAgaWYgKGdyYXBoIGluc3RhbmNlb2YgUmVtb3RlR3JhcGgpIHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5WKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDZMLCBnLkUoKS5jb3VudCgpLm5leHQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJb1Rlc3QuYXNzZXJ0TW9kZXJuR3JhcGgoZ3JhcGgsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1JFQUQpCisgICAgcHVibGljIHZvaWQgZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyeW9YKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoUmVhZFRlc3QuY2xhc3MsIEdyeW9SZXNvdXJjZUFjY2Vzcy5jbGFzcywgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMC5rcnlvIiwgIiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3JlYWRfd2l0aFhyZWFkZXJfZ3J5b1goZmlsZVRvUmVhZCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGlmIChncmFwaCBpbnN0YW5jZW9mIFJlbW90ZUdyYXBoKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuVigpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5FKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW9UZXN0LmFzc2VydE1vZGVybkdyYXBoKGdyYXBoLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19SRUFEKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fcmVhZFhqc29uWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKFJlYWRUZXN0LmNsYXNzLCBHcmFwaFNPTlJlc291cmNlQWNjZXNzLmNsYXNzLCAidGlua2VycG9wLW1vZGVybi12M2QwLmpzb24iLCAiIikuZ2V0QWJzb2x1dGVQYXRoKCkucmVwbGFjZSgnXFwnLCAnLycpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gdHJhdmVyc2FsID0gZ2V0X2dfaW9fcmVhZFhqc29uWChmaWxlVG9SZWFkKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIHRyYXZlcnNhbC5pdGVyYXRlKCk7CisKKyAgICAgICAgaWYgKGdyYXBoIGluc3RhbmNlb2YgUmVtb3RlR3JhcGgpIHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5WKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDZMLCBnLkUoKS5jb3VudCgpLm5leHQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJb1Rlc3QuYXNzZXJ0TW9kZXJuR3JhcGgoZ3JhcGgsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1JFQUQpCisgICAgcHVibGljIHZvaWQgZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBoc29uWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKFJlYWRUZXN0LmNsYXNzLCBHcmFwaFNPTlJlc291cmNlQWNjZXNzLmNsYXNzLCAidGlua2VycG9wLW1vZGVybi12M2QwLmpzb24iLCAiIikuZ2V0QWJzb2x1dGVQYXRoKCkucmVwbGFjZSgnXFwnLCAnLycpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gdHJhdmVyc2FsID0gZ2V0X2dfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaHNvblgoZmlsZVRvUmVhZCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGlmIChncmFwaCBpbnN0YW5jZW9mIFJlbW90ZUdyYXBoKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuVigpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5FKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW9UZXN0LmFzc2VydE1vZGVybkdyYXBoKGdyYXBoLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19SRUFEKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fcmVhZFh4bWxYKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoUmVhZFRlc3QuY2xhc3MsIEdyYXBoTUxSZXNvdXJjZUFjY2Vzcy5jbGFzcywgInRpbmtlcnBvcC1tb2Rlcm4ueG1sIiwgIiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3JlYWRYeG1sWChmaWxlVG9SZWFkKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIHRyYXZlcnNhbC5pdGVyYXRlKCk7CisKKyAgICAgICAgaWYgKGdyYXBoIGluc3RhbmNlb2YgUmVtb3RlR3JhcGgpIHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5WKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDZMLCBnLkUoKS5jb3VudCgpLm5leHQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJb1Rlc3QuYXNzZXJ0TW9kZXJuR3JhcGgoZ3JhcGgsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1JFQUQpCisgICAgcHVibGljIHZvaWQgZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBobWxYKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoUmVhZFRlc3QuY2xhc3MsIEdyYXBoTUxSZXNvdXJjZUFjY2Vzcy5jbGFzcywgInRpbmtlcnBvcC1tb2Rlcm4ueG1sIiwgIiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3JlYWRfd2l0aFhyZWFkZXJfZ3JhcGhtbFgoZmlsZVRvUmVhZCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGlmIChncmFwaCBpbnN0YW5jZW9mIFJlbW90ZUdyYXBoKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuVigpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5FKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW9UZXN0LmFzc2VydE1vZGVybkdyYXBoKGdyYXBoLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBSZWFkVGVzdCB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3JlYWRYa3J5b1goZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9SZWFkKS5yZWFkKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyeW9YKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGcuaW8oZmlsZVRvUmVhZCkud2l0aChJTy5yZWFkZXIsIElPLmdyeW8pLnJlYWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3JlYWRYanNvblgoZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9SZWFkKS5yZWFkKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBoc29uWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnLmlvKGZpbGVUb1JlYWQpLndpdGgoSU8ucmVhZGVyLCBJTy5ncmFwaHNvbikucmVhZCgpOworICAgICAgICB9CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3JlYWRYeG1sWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnLmlvKGZpbGVUb1JlYWQpLnJlYWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3JlYWRfd2l0aFhyZWFkZXJfZ3JhcGhtbFgoZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9SZWFkKS53aXRoKElPLnJlYWRlciwgSU8uZ3JhcGhtbCkucmVhZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TZWxlY3RUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1NlbGVjdFRlc3QuamF2YQppbmRleCBjYjg3YmU4Li4wZjVhZmJkIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1NlbGVjdFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1NlbGVjdFRlc3QuamF2YQpAQCAtODMsNiArODMsOCBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9jaG9vc2VYb3V0RV9jb3VudF9pc1gwWF9fYXNYYVhfX2FzWGJYWF9jaG9vc2VYc2VsZWN0WGFYX19zZWxlY3RYYVhfX3NlbGVjdFhiWFgoKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZYMVhfZ3JvdXBYYVhfYnlYY29uc3RhbnRYYVhYX2J5WG5hbWVYX3NlbGVjdFhhWF9zZWxlY3RYYVgoZmluYWwgT2JqZWN0IHYxSWQpOworCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIExvbmc+IGdldF9nX1ZfYXNYYVhfZ3JvdXBYbVhfYnlfYnlYYm90aEVfY291bnRYX2JhcnJpZXJfc2VsZWN0WG1YX3NlbGVjdFhzZWxlY3RYYVhYKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiBnZXRfZ19WX2FzWGFYX2dyb3VwWG1YX2J5X2J5WGJvdGhFX2NvdW50WF9iYXJyaWVyX3NlbGVjdFhtWF9zZWxlY3RYc2VsZWN0WGFYWF9ieVhtYXRoWF9wbHVzX1hYKCk7CkBAIC0zNzUsNiArMzc3LDE2IEBACiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZYMVhfZ3JvdXBYYVhfYnlYY29uc3RhbnRYYVhYX2J5WG5hbWVYX3NlbGVjdFhhWF9zZWxlY3RYYVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVlgxWF9ncm91cFhhWF9ieVhjb25zdGFudFhhWFhfYnlYbmFtZVhfc2VsZWN0WGFYX3NlbGVjdFhhWChjb252ZXJ0VG9WZXJ0ZXhJZCgibWFya28iKSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgdHJhdmVyc2FsLm5leHQoKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9hc1hhWF9ncm91cFhtWF9ieV9ieVhib3RoRV9jb3VudFhfYmFycmllcl9zZWxlY3RYbVhfc2VsZWN0WHNlbGVjdFhhWFgoKSB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIExvbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYXNYYVhfZ3JvdXBYbVhfYnlfYnlYYm90aEVfY291bnRYX2JhcnJpZXJfc2VsZWN0WG1YX3NlbGVjdFhzZWxlY3RYYVhYKCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwpAQCAtODAxLDcgKzgxMyw2IEBACiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CiAgICAgfQotCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WWDFYX2FzWGFYX3JlcGVhdFhvdXRfYXNYYVhYX3RpbWVzWDJYX3NlbGVjdFhmaXJzdF9hWCgpIHsKQEAgLTg3OCw2ICs4ODksMTMgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WWDFYX2dyb3VwWGFYX2J5WGNvbnN0YW50WGFYWF9ieVhuYW1lWF9zZWxlY3RYYVhfc2VsZWN0WGFYKGZpbmFsIE9iamVjdCB2MUlkKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKHYxSWQpLmdyb3VwKCJhIikuYnkoX18uY29uc3RhbnQoImEiKSkuYnkoX18udmFsdWVzKCJuYW1lIikpCisgICAgICAgICAgICAgICAgICAgIC5iYXJyaWVyKCkgLy8gVE9ETzogdGhpcyBiYXJyaWVyKCkgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgLnNlbGVjdCgiYSIpLnNlbGVjdCgiYSIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBMb25nPiBnZXRfZ19WX2FzWGFYX2dyb3VwWG1YX2J5X2J5WGJvdGhFX2NvdW50WF9iYXJyaWVyX3NlbGVjdFhtWF9zZWxlY3RYc2VsZWN0WGFYWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5hcygiYSIpLmdyb3VwKCJtIikuYnkoKS5ieShfXy5ib3RoRSgpLmNvdW50KCkpLmJhcnJpZXIoKS5zZWxlY3QoIm0iKS5zZWxlY3QoX18uc2VsZWN0KCJhIikpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Nob3J0ZXN0UGF0aFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU2hvcnRlc3RQYXRoVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMGY1NjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Nob3J0ZXN0UGF0aFRlc3QuamF2YQpAQCAtMCwwICsxLDM1MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuc2VhcmNoLnBhdGguU2hvcnRlc3RQYXRoVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuanVuaXQuQmVmb3JlOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOworaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uU3RyZWFtOworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ1JFVzsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5HUkFURUZVTDsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk47CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aC5TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtVGVzdC5BTExfU0hPUlRFU1RfUEFUSFM7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuU2hvcnRlc3RQYXRoLio7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEZhbHNlOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKKy8qKgorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqLworQFJ1bldpdGgoR3JlbWxpblByb2Nlc3NSdW5uZXIuY2xhc3MpCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2hvcnRlc3RQYXRoVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKKworICAgIHByaXZhdGUgU2hvcnRlc3RQYXRoVGVzdEhlbHBlciBoZWxwZXI7CisKKyAgICBAQmVmb3JlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZUhlbHBlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0aGlzLmhlbHBlciA9IG5ldyBTaG9ydGVzdFBhdGhUZXN0SGVscGVyKHRoaXMsIGcpOworICAgIH0KKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfYm90aF9kZWR1cF9zaG9ydGVzdFBhdGgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc0luY2x1ZGVkKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZGlyZWN0aW9uWElOWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzWG91dEVYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZF9lZGdlc1hvdXRFWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9tYXJrb1hYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfdGFyZ2V0WHZhbHVlc1huYW1lWF9pc1htYXJrb1hYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNMYWJlbFhzb2Z0d2FyZVhYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9qb3NoWFhfZGlzdGFuY2VYd2VpZ2h0WCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfZGFuaWVsWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX3N0ZXBoZW5YWF9lZGdlc1hib3RoRVh1c2VzWFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1hzb25nX25hbWVfTUlHSFRfQVNfV0VMTFhfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYc29uZ19uYW1lX01BWUJFX1lPVV9LTk9XX0hPV19JX0ZFRUxYWF9lZGdlc1hvdXRFWGZvbGxvd2VkQnlYWF9kaXN0YW5jZVh3ZWlnaHRYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX21heERpc3RhbmNlWDFYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV92YWRhc1hfc2hvcnRlc3RQYXRoX2Rpc3RhbmNlWHdlaWdodFhfbWF4RGlzdGFuY2VYMV8zWCgpOworCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3Nob3J0ZXN0UGF0aCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9zaG9ydGVzdFBhdGgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykubWFwKGhlbHBlcjo6bWFrZVBhdGgpCisgICAgICAgICAgICAgICAgLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYm90aF9kZWR1cF9zaG9ydGVzdFBhdGgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYm90aF9kZWR1cF9zaG9ydGVzdFBhdGgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykubWFwKGhlbHBlcjo6bWFrZVBhdGgpCisgICAgICAgICAgICAgICAgLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWQoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWQoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykubWFwKHAgLT4gaGVscGVyLm1ha2VQYXRoKHRydWUsIHApKQorICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3Nob3J0ZXN0UGF0aF9kaXJlY3Rpb25YSU5YKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9kaXJlY3Rpb25YSU5YKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IChwWzBdLmVxdWFscygibWFya28iKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJ2YWRhcyIpICYmIEFycmF5cy5hc0xpc3QoIm1hcmtvIiwgInZhZGFzIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygibG9wIikgJiYgQXJyYXlzLmFzTGlzdCgibWFya28iLCAibG9wIiwgImpvc2giLCAicGV0ZXIiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJqb3NoIikgJiYgQXJyYXlzLmFzTGlzdCgibWFya28iLCAiam9zaCIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInJpcHBsZSIpICYmIEFycmF5cy5hc0xpc3QoIm1hcmtvIiwgImpvc2giLCAicmlwcGxlIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygicGV0ZXIiKSAmJiBwLmxlbmd0aCA9PSAxKSkKKyAgICAgICAgICAgICAgICAubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzWG91dEVYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc1hvdXRFWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tPdXREaXJlY3RlZFBhdGhzKGZhbHNlLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZF9lZGdlc1hvdXRFWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZF9lZGdlc1hvdXRFWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tPdXREaXJlY3RlZFBhdGhzKHRydWUsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrT3V0RGlyZWN0ZWRQYXRocyhmaW5hbCBib29sZWFuIGluY2x1ZGVFZGdlcywgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsKSB7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gKHBbMF0uZXF1YWxzKCJtYXJrbyIpICYmICFwW3AubGVuZ3RoIC0gMV0uZXF1YWxzKCJwZXRlciIpKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJ2YWRhcyIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoImxvcCIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoImpvc2giKSAmJiBBcnJheXMuYXNMaXN0KCJsb3AiLCAiam9zaCIsICJyaXBwbGUiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJyaXBwbGUiKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJwZXRlciIpICYmIEFycmF5cy5hc0xpc3QoImxvcCIsICJwZXRlciIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpKQorICAgICAgICAgICAgICAgIC5tYXAobmFtZXMgLT4gaGVscGVyLm1ha2VQYXRoKGluY2x1ZGVFZGdlcywgbmFtZXMpKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiBwWzBdLmVxdWFscygibWFya28iKSkubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9tYXJrb1hYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfbWFya29YWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tQYXRoc1RvTWFya28odHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFh2YWx1ZXNYbmFtZVhfaXNYbWFya29YWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfdGFyZ2V0WHZhbHVlc1huYW1lWF9pc1htYXJrb1hYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1BhdGhzVG9NYXJrbyh0cmF2ZXJzYWwpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjaGVja1BhdGhzVG9NYXJrbyhmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiBwW3AubGVuZ3RoIC0gMV0uZXF1YWxzKCJtYXJrbyIpKS5tYXAoaGVscGVyOjptYWtlUGF0aCkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNMYWJlbFhzb2Z0d2FyZVhYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc0xhYmVsWHNvZnR3YXJlWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBbMF0uZXF1YWxzKCJtYXJrbyIpICYmIEFycmF5cy5hc0xpc3QoImxvcCIsICJyaXBwbGUiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgIC5tYXAoaGVscGVyOjptYWtlUGF0aCkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9qb3NoWFhfZGlzdGFuY2VYd2VpZ2h0WCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9qb3NoWFhfZGlzdGFuY2VYd2VpZ2h0WCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGhlbHBlci5tYWtlUGF0aCgibWFya28iLCAibG9wIiwgImpvc2giKSwgdHJhdmVyc2FsLm5leHQoKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoQ1JFVykKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfZGFuaWVsWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX3N0ZXBoZW5YWF9lZGdlc1hib3RoRVh1c2VzWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfZGFuaWVsWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX3N0ZXBoZW5YWF9lZGdlc1hib3RoRVh1c2VzWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlUGF0aCgiZGFuaWVsIiwgImdyZW1saW4iLCAic3RlcGhlbiIpLAorICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlUGF0aCgiZGFuaWVsIiwgInRpbmtlcmdyYXBoIiwgInN0ZXBoZW4iKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKEdSQVRFRlVMKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYc29uZ19uYW1lX01JR0hUX0FTX1dFTExYX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWHNvbmdfbmFtZV9NQVlCRV9ZT1VfS05PV19IT1dfSV9GRUVMWFhfZWRnZXNYb3V0RVhmb2xsb3dlZEJ5WFhfZGlzdGFuY2VYd2VpZ2h0WCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYc29uZ19uYW1lX01JR0hUX0FTX1dFTExYX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWHNvbmdfbmFtZV9NQVlCRV9ZT1VfS05PV19IT1dfSV9GRUVMWFhfZWRnZXNYb3V0RVhmb2xsb3dlZEJ5WFhfZGlzdGFuY2VYd2VpZ2h0WCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VQYXRoKCJNSUdIVCBBUyBXRUxMIiwgIkRSVU1TIiwgIk1BWUJFIFlPVSBLTk9XIEhPVyBJIEZFRUwiKSwKKyAgICAgICAgICAgICAgICBoZWxwZXIubWFrZVBhdGgoIk1JR0hUIEFTIFdFTEwiLCAiU0hJUCBPRiBGT09MUyIsICJNQVlCRSBZT1UgS05PVyBIT1cgSSBGRUVMIikpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGhfbWF4RGlzdGFuY2VYMVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF9tYXhEaXN0YW5jZVgxWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiBwWzBdLmVxdWFscygibWFya28iKSAmJiBwLmxlbmd0aCA8PSAyKS5tYXAoaGVscGVyOjptYWtlUGF0aCkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV92YWRhc1hfc2hvcnRlc3RQYXRoX2Rpc3RhbmNlWHdlaWdodFhfbWF4RGlzdGFuY2VYMV8zWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV92YWRhc1hfc2hvcnRlc3RQYXRoX2Rpc3RhbmNlWHdlaWdodFhfbWF4RGlzdGFuY2VYMV8zWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IFN0cmVhbS5jb25jYXQoQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gcFswXS5lcXVhbHMoInZhZGFzIikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdCgidmFkYXMiLCAibWFya28iLCAibG9wIiwgInBldGVyIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoaGVscGVyOjptYWtlUGF0aCksCisgICAgICAgICAgICAgICAgU3RyZWFtLm9mKGhlbHBlci5tYWtlUGF0aCgidmFkYXMiLCAibWFya28iLCAibG9wIiwgImpvc2giKSkpCisgICAgICAgICAgICAgICAgLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBTaG9ydGVzdFBhdGhUZXN0IHsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnNob3J0ZXN0UGF0aCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2JvdGhfZGVkdXBfc2hvcnRlc3RQYXRoKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmJvdGgoKS5kZWR1cCgpLnNob3J0ZXN0UGF0aCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc0luY2x1ZGVkKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnNob3J0ZXN0UGF0aCgpLndpdGgoaW5jbHVkZUVkZ2VzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZGlyZWN0aW9uWElOWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKGVkZ2VzLCBEaXJlY3Rpb24uSU4pOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc1hvdXRFWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKGVkZ2VzLCBfXy5vdXRFKCkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc0luY2x1ZGVkX2VkZ2VzWG91dEVYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnNob3J0ZXN0UGF0aCgpLndpdGgoaW5jbHVkZUVkZ2VzKS53aXRoKGVkZ2VzLCBfXy5vdXRFKCkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuc2hvcnRlc3RQYXRoKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9tYXJrb1hYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnNob3J0ZXN0UGF0aCgpLndpdGgodGFyZ2V0LCBfXy5oYXMoIm5hbWUiLCAibWFya28iKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFh2YWx1ZXNYbmFtZVhfaXNYbWFya29YWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKHRhcmdldCwgX18uPFZlcnRleCwgU3RyaW5nPnZhbHVlcygibmFtZSIpLmlzKCJtYXJrbyIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNMYWJlbFhzb2Z0d2FyZVhYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLnNob3J0ZXN0UGF0aCgpLndpdGgodGFyZ2V0LCBfXy5oYXNMYWJlbCgic29mdHdhcmUiKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfam9zaFhYX2Rpc3RhbmNlWHdlaWdodFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuc2hvcnRlc3RQYXRoKCkKKyAgICAgICAgICAgICAgICAgICAgLndpdGgodGFyZ2V0LCBfXy5oYXMoIm5hbWUiLCJqb3NoIikpCisgICAgICAgICAgICAgICAgICAgIC53aXRoKGRpc3RhbmNlLCAid2VpZ2h0Iik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfZGFuaWVsWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX3N0ZXBoZW5YWF9lZGdlc1hib3RoRVh1c2VzWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgImRhbmllbCIpLnNob3J0ZXN0UGF0aCgpCisgICAgICAgICAgICAgICAgICAgIC53aXRoKHRhcmdldCwgX18uaGFzKCJuYW1lIiwic3RlcGhlbiIpKQorICAgICAgICAgICAgICAgICAgICAud2l0aChlZGdlcywgX18uYm90aEUoInVzZXMiKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWHNvbmdfbmFtZV9NSUdIVF9BU19XRUxMWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1hzb25nX25hbWVfTUFZQkVfWU9VX0tOT1dfSE9XX0lfRkVFTFhYX2VkZ2VzWG91dEVYZm9sbG93ZWRCeVhYX2Rpc3RhbmNlWHdlaWdodFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJzb25nIiwgIm5hbWUiLCAiTUlHSFQgQVMgV0VMTCIpCisgICAgICAgICAgICAgICAgICAgIC5zaG9ydGVzdFBhdGgoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoKHRhcmdldCwgX18uaGFzKCJzb25nIiwgIm5hbWUiLCAiTUFZQkUgWU9VIEtOT1cgSE9XIEkgRkVFTCIpKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoKGVkZ2VzLCBfXy5vdXRFKCJmb2xsb3dlZEJ5IikpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgoZGlzdGFuY2UsICJ3ZWlnaHQiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX21heERpc3RhbmNlWDFYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLnNob3J0ZXN0UGF0aCgpCisgICAgICAgICAgICAgICAgICAgIC53aXRoKG1heERpc3RhbmNlLCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV92YWRhc1hfc2hvcnRlc3RQYXRoX2Rpc3RhbmNlWHdlaWdodFhfbWF4RGlzdGFuY2VYMV8zWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCAidmFkYXMiKS5zaG9ydGVzdFBhdGgoKQorICAgICAgICAgICAgICAgICAgICAud2l0aChkaXN0YW5jZSwgIndlaWdodCIpCisgICAgICAgICAgICAgICAgICAgIC53aXRoKG1heERpc3RhbmNlLCAxLjMpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1UZXN0LmphdmEKaW5kZXggMGU5NTZkOS4uYmQ5ODFjMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1UZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1UZXN0LmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKQEAgLTQwLDE3ICs0MSw0OSBAQAogQFJ1bldpdGgoR3JlbWxpblByb2Nlc3NSdW5uZXIuY2xhc3MpCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU3VtVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IGdldF9nX1ZfdmFsdWVzWGFnZVhfc3VtKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9hZ2Vfc3VtKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2FnZV9mb2xkX3N1bVhsb2NhbFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX3N1bSgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9mb29fZm9sZF9zdW1YbG9jYWxYKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTnVtYmVyPj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfZ3JvdXBfYnlYbmFtZVhfYnlYYm90aEVfd2VpZ2h0X3N1bVgoKTsKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQotICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZXNYYWdlWF9zdW0oKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZXNYYWdlWF9zdW0oKTsKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYWdlX3N1bSgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FnZV9zdW0oKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGZpbmFsIE51bWJlciBzdW0gPSB0cmF2ZXJzYWwubmV4dCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMTIzTCwgc3VtKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEyMywgc3VtLmludFZhbHVlKCkpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYWdlX2ZvbGRfc3VtWGxvY2FsWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FnZV9mb2xkX3N1bVhsb2NhbFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIE51bWJlciBzdW0gPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRFcXVhbHMoMTIzLCBzdW0uaW50VmFsdWUoKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9mb29fc3VtKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX3N1bSgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2Zvb19mb2xkX3N1bVhsb2NhbFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9mb29fZm9sZF9zdW1YbG9jYWxYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwogICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKICAgICB9CiAKQEAgLTcwLDEzICsxMDMsMjggQEAKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBTdW1UZXN0IHsKIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gZ2V0X2dfVl92YWx1ZXNYYWdlWF9zdW0oKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfYWdlX3N1bSgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImFnZSIpLnN1bSgpOwogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfYWdlX2ZvbGRfc3VtWGxvY2FsWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImFnZSIpLmZvbGQoKS5zdW0oU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX3N1bSgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImZvbyIpLnN1bSgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX2ZvbGRfc3VtWGxvY2FsWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImZvbyIpLmZvbGQoKS5zdW0oU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBOdW1iZXI+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9ncm91cF9ieVhuYW1lWF9ieVhib3RoRV93ZWlnaHRfc3VtWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS48U3RyaW5nLCBOdW1iZXI+Z3JvdXAoKS5ieSgibmFtZSIpLmJ5KGJvdGhFKCkudmFsdWVzKCJ3ZWlnaHQiKS5zdW0oKSk7CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9WYWx1ZU1hcFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvVmFsdWVNYXBUZXN0LmphdmEKaW5kZXggNjk2MmNhZi4uMjE5YTZiMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9WYWx1ZU1hcFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1ZhbHVlTWFwVGVzdC5qYXZhCkBAIC0yMywxNCArMjMsMTcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ1JFVzsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk47CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzLmlzOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OwpAQCAtNDksMjcgKzUyLDM1IEBACiBAUnVuV2l0aChHcmVtbGluUHJvY2Vzc1J1bm5lci5jbGFzcykKIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBWYWx1ZU1hcFRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdD4+IGdldF9nX1ZfdmFsdWVNYXAoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdD4+IGdldF9nX1ZfdmFsdWVNYXAoKTsKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWHRydWVYKCk7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdD4+IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBfd2l0aFh0b2tlbnNYKCk7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX2ZpbHRlclhvdXRFWGNyZWF0ZWRYWF92YWx1ZU1hcFh0cnVlWCgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0Pj4gZ2V0X2dfVl92YWx1ZU1hcFhuYW1lX2FnZVgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfZmlsdGVyWG91dEVYY3JlYXRlZFhYX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBYdHJ1ZV9uYW1lX2FnZVgoKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+PiBnZXRfZ19WWDFYX291dFhjcmVhdGVkWF92YWx1ZU1hcChmaW5hbCBPYmplY3QgdjFJZCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zX2xhYmVsc1hfYnlYdW5mb2xkWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8U3RyaW5nPj4+IGdldF9nX1ZYMVhfb3V0WGNyZWF0ZWRYX3ZhbHVlTWFwKGZpbmFsIE9iamVjdCB2MUlkKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WWDFYX3ZhbHVlTWFwWG5hbWVfbG9jYXRpb25YX2J5WHVuZm9sZFhfYnkoZmluYWwgT2JqZWN0IHYxSWQpOwogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX3ZhbHVlTWFwKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZU1hcCgpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZU1hcCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgaW50IGNvdW50ZXIgPSAwOwogICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgewogICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTGlzdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIExpc3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IChTdHJpbmcpIHZhbHVlcy5nZXQoIm5hbWUiKS5nZXQoMCk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgdmFsdWVzLnNpemUoKSk7CiAgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoIm1hcmtvIikpIHsKQEAgLTkzLDUwICsxMDQsNTIgQEAKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQotICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcFh0cnVlWCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZU1hcFh0cnVlWCgpOwotICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKLSAgICAgICAgaW50IGNvdW50ZXIgPSAwOwotICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgewotICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSAoKExpc3QpIHZhbHVlcy5nZXQoIm5hbWUiKSkuZ2V0KDApOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdCh2YWx1ZXMuY29udGFpbnNLZXkoVC5pZCksIGlzKHRydWUpKTsKLSAgICAgICAgICAgIGlmIChuYW1lLmVxdWFscygibWFya28iKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyOSwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygiam9zaCIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMyLCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJwZXRlciIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDM1LCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJ2YWRhcyIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI3LCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJsb3AiKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiamF2YSIsICgoTGlzdCkgdmFsdWVzLmdldCgibGFuZyIpKS5nZXQoMCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInJpcHBsZSIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXZhIiwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJsYW5nIikpLmdldCgwKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJJdCBpcyBub3QgcG9zc2libGUgdG8gcmVhY2ggaGVyZTogIiArIHZhbHVlcyk7CisgICAgcHVibGljIHZvaWQgZ19WX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpIHsKKyAgICAgICAgZm9yIChmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWwgOgorICAgICAgICAgICAgICAgIEFycmF5cy5hc0xpc3QoZ2V0X2dfVl92YWx1ZU1hcFh0cnVlWCgpLCBnZXRfZ19WX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpKSkgeworICAgICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSAoKExpc3QpIHZhbHVlcy5nZXQoIm5hbWUiKSkuZ2V0KDApOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KHZhbHVlcy5jb250YWluc0tleShULmlkKSwgaXModHJ1ZSkpOworICAgICAgICAgICAgICAgIGlmIChuYW1lLmVxdWFscygibWFya28iKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjksICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygiam9zaCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzMiwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJwZXRlciIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzNSwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJ2YWRhcyIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyNywgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJsb3AiKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImphdmEiLCAoKExpc3QpIHZhbHVlcy5nZXQoImxhbmciKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInJpcHBsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiamF2YSIsICgoTGlzdCkgdmFsdWVzLmdldCgibGFuZyIpKS5nZXQoMCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlYWNoIGhlcmU6ICIgKyB2YWx1ZXMpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2LCBjb3VudGVyKTsKICAgICAgICAgfQotICAgICAgICBhc3NlcnRFcXVhbHMoNiwgY291bnRlcik7CiAgICAgfQogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYKCk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgaW50IGNvdW50ZXIgPSAwOwogICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgewogICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTGlzdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIExpc3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IChTdHJpbmcpIHZhbHVlcy5nZXQoIm5hbWUiKS5nZXQoMCk7CiAgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoIm1hcmtvIikpIHsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjksIHZhbHVlcy5nZXQoImFnZSIpLmdldCgwKSk7CkBAIC0xNjUsMzcgKzE3OCw4MSBAQAogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCi0gICAgcHVibGljIHZvaWQgZ19WX3ZhbHVlTWFwWHRydWVfbmFtZV9hZ2VYKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3ZhbHVlTWFwWHRydWVfbmFtZV9hZ2VYKCk7CisgICAgcHVibGljIHZvaWQgZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWF93aXRoWHRva2Vuc1goKSB7CisgICAgICAgIGZvciAoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FsIDoKKyAgICAgICAgICAgICAgICBBcnJheXMuYXNMaXN0KGdldF9nX1ZfdmFsdWVNYXBYdHJ1ZV9uYW1lX2FnZVgoKSwgZ2V0X2dfVl92YWx1ZU1hcFhuYW1lX2FnZVhfd2l0aFh0b2tlbnNYKCkpKSB7CisgICAgICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IChTdHJpbmcpICgoTGlzdCkgdmFsdWVzLmdldCgibmFtZSIpKS5nZXQoMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdCh2YWx1ZXMuY29udGFpbnNLZXkoVC5pZCksIGlzKHRydWUpKTsKKyAgICAgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoIm1hcmtvIikpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjksICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygiam9zaCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMyLCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInBldGVyIikpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzUsICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygidmFkYXMiKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyNywgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJsb3AiKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydE51bGwodmFsdWVzLmdldCgibGFuZyIpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInJpcHBsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TnVsbCh2YWx1ZXMuZ2V0KCJsYW5nIikpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlYWNoIGhlcmU6ICIgKyB2YWx1ZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2LCBjb3VudGVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcFhuYW1lX2FnZVhfd2l0aFh0b2tlbnNfbGFiZWxzWF9ieVh1bmZvbGRYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWF93aXRoWHRva2Vuc19sYWJlbHNYX2J5WHVuZm9sZFgoKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGludCBjb3VudGVyID0gMDsKICAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gKFN0cmluZykgKChMaXN0KSB2YWx1ZXMuZ2V0KCJuYW1lIikpLmdldCgwKTsKLSAgICAgICAgICAgIGFzc2VydFRoYXQodmFsdWVzLmNvbnRhaW5zS2V5KFQuaWQpLCBpcyh0cnVlKSk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IChTdHJpbmcpIHZhbHVlcy5nZXQoIm5hbWUiKTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQodmFsdWVzLmNvbnRhaW5zS2V5KFQuaWQpLCBpcyhmYWxzZSkpOwogICAgICAgICAgICAgaWYgKG5hbWUuZXF1YWxzKCJtYXJrbyIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyOSwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCB2YWx1ZXMuZ2V0KCJhZ2UiKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImpvc2giKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzIsICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzMiwgdmFsdWVzLmdldCgiYWdlIikpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJwZXRlciIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzNSwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDM1LCB2YWx1ZXMuZ2V0KCJhZ2UiKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInZhZGFzIikpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI3LCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjcsIHZhbHVlcy5nZXQoImFnZSIpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygibG9wIikpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHZhbHVlcy5zaXplKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydE51bGwodmFsdWVzLmdldCgibGFuZyIpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJyaXBwbGUiKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgdmFsdWVzLnNpemUoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0TnVsbCh2YWx1ZXMuZ2V0KCJsYW5nIikpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yMDgsMTUgKzI2NSwxNCBAQAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVlgxWF9vdXRYY3JlYXRlZFhfdmFsdWVNYXAoKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4+IHRyYXZlcnNhbCA9IGdldF9nX1ZYMVhfb3V0WGNyZWF0ZWRYX3ZhbHVlTWFwKGNvbnZlcnRUb1ZlcnRleElkKCJtYXJrbyIpKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxTdHJpbmc+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVlgxWF9vdXRYY3JlYXRlZFhfdmFsdWVNYXAoY29udmVydFRvVmVydGV4SWQoIm1hcmtvIikpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKLSAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBMaXN0PFN0cmluZz4+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImxvcCIsIHZhbHVlcy5nZXQoIm5hbWUiKS5nZXQoMCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImphdmEiLCB2YWx1ZXMuZ2V0KCJsYW5nIikuZ2V0KDApKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHZhbHVlcy5zaXplKCkpOwotCiAgICAgfQogCiAgICAgLyoqCkBAIC0yMjQsOCArMjgwLDggQEAKICAgICAgKi8KICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKLSAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTGFiZWxYcGVyc29uWF9maWx0ZXJYb3V0RVhjcmVhdGVkWFhfdmFsdWVNYXBYdHJ1ZVgoKSB7Ci0gICAgCWZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsTWFwPE9iamVjdCxPYmplY3Q+PiBndD1nZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfZmlsdGVyWG91dEVYY3JlYXRlZFhYX3ZhbHVlTWFwWHRydWVYKCk7CisgICAgcHVibGljIHZvaWQgZ19WX2hhc0xhYmVsWHBlcnNvblhfZmlsdGVyWG91dEVYY3JlYXRlZFhYX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpIHsKKyAgICAJZmluYWwgVHJhdmVyc2FsPFZlcnRleCxNYXA8T2JqZWN0LE9iamVjdD4+IGd0ID0gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX2ZpbHRlclhvdXRFWGNyZWF0ZWRYWF92YWx1ZU1hcF93aXRoWHRva2Vuc1goKTsKICAgICAJaW50IGNudCA9IDA7CiAgICAgCXdoaWxlKGd0Lmhhc05leHQoKSl7CiAgICAgCQlmaW5hbCBNYXA8T2JqZWN0LE9iamVjdD4gbSA9IGd0Lm5leHQoKTsKQEAgLTI0Miw5ICsyOTgsMjcgQEAKICAgICAJYXNzZXJ0VHJ1ZShjbnQgPiAwKTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKENSRVcpCisgICAgcHVibGljIHZvaWQgZ19WWDFYX3ZhbHVlTWFwWG5hbWVfbG9jYXRpb25YX2J5WHVuZm9sZFhfYnkoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsTWFwPE9iamVjdCxPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDFYX3ZhbHVlTWFwWG5hbWVfbG9jYXRpb25YX2J5WHVuZm9sZFhfYnkoY29udmVydFRvVmVydGV4SWQoIm1hcmtvIikpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSgibmFtZSB2YWx1ZSBzaG91bGQgYmUgYSBTdHJpbmciLCB2YWx1ZXMuY29udGFpbnNLZXkoIm5hbWUiKSAmJiBTdHJpbmcuY2xhc3MuZXF1YWxzKHZhbHVlcy5nZXQoIm5hbWUiKS5nZXRDbGFzcygpKSk7CisgICAgICAgIGFzc2VydFRydWUoImxvY2F0aW9uIHZhbHVlIHNob3VsZCBiZSBhIExpc3QiLCB2YWx1ZXMuY29udGFpbnNLZXkoImxvY2F0aW9uIikgJiYgTGlzdC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKHZhbHVlcy5nZXQoImxvY2F0aW9uIikuZ2V0Q2xhc3MoKSkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgdmFsdWVzLmdldCgibmFtZSIpKTsKKyAgICAgICAgZmluYWwgTGlzdCBsb2NhdGlvbnMgPSAoTGlzdCkgdmFsdWVzLmdldCgibG9jYXRpb24iKTsKKyAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgbG9jYXRpb24gOiBBcnJheXMuYXNMaXN0KCJzYW4gZGllZ28iLCAic2FudGEgY3J1eiIsICJicnVzc2VscyIsICJzYW50YSBmZSIpKSB7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGxvY2F0aW9ucy5jb250YWlucyhsb2NhdGlvbikpOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFscygyLCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBWYWx1ZU1hcFRlc3QgewogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q+PiBnZXRfZ19WX3ZhbHVlTWFwKCkgeworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdD4+IGdldF9nX1ZfdmFsdWVNYXAoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVNYXAoKTsKICAgICAgICAgfQogCkBAIC0yNTQsNyArMzI4LDEyIEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWCgpIHsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBfd2l0aFh0b2tlbnNYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0Pj4gZ2V0X2dfVl92YWx1ZU1hcFhuYW1lX2FnZVgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVNYXAoIm5hbWUiLCAiYWdlIik7CiAgICAgICAgIH0KIApAQCAtMjY0LDEzICszNDMsMjkgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+Pj4gZ2V0X2dfVlgxWF9vdXRYY3JlYXRlZFhfdmFsdWVNYXAoZmluYWwgT2JqZWN0IHYxSWQpIHsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZU1hcCgibmFtZSIsICJhZ2UiKS53aXRoKFdpdGhPcHRpb25zLnRva2Vucyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zX2xhYmVsc1hfYnlYdW5mb2xkWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZU1hcCgibmFtZSIsICJhZ2UiKS53aXRoKFdpdGhPcHRpb25zLnRva2VucywgV2l0aE9wdGlvbnMubGFiZWxzKS5ieShfXy51bmZvbGQoKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8U3RyaW5nPj4+IGdldF9nX1ZYMVhfb3V0WGNyZWF0ZWRYX3ZhbHVlTWFwKGZpbmFsIE9iamVjdCB2MUlkKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKHYxSWQpLm91dCgiY3JlYXRlZCIpLnZhbHVlTWFwKCk7CiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9maWx0ZXJYb3V0RVhjcmVhdGVkWFhfdmFsdWVNYXBYdHJ1ZVgoKSB7Ci0gICAgICAgIAlyZXR1cm4gZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLmZpbHRlcihfXy5vdXRFKCJjcmVhdGVkIikpLnZhbHVlTWFwKHRydWUpOworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX2ZpbHRlclhvdXRFWGNyZWF0ZWRYWF92YWx1ZU1hcF93aXRoWHRva2Vuc1goKSB7CisgICAgICAgIAlyZXR1cm4gZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLmZpbHRlcihfXy5vdXRFKCJjcmVhdGVkIikpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WWDFYX3ZhbHVlTWFwWG5hbWVfbG9jYXRpb25YX2J5WHVuZm9sZFhfYnkoZmluYWwgT2JqZWN0IHYxSWQpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYodjFJZCkudmFsdWVNYXAoIm5hbWUiLCJsb2NhdGlvbiIpLmJ5KF9fLnVuZm9sZCgpKS5ieSgpOworICAgICAgICB9CisKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1dyaXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Xcml0ZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk4MDk1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Xcml0ZVRlc3QuamF2YQpAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkZlYXR1cmVSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jcy5pczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUaGF0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworQFJ1bldpdGgoR3JlbWxpblByb2Nlc3NSdW5uZXIuY2xhc3MpCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgV3JpdGVUZXN0IGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QgeworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZVhrcnlvWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpICB0aHJvd3MgSU9FeGNlcHRpb247CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyeW9YKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVYanNvblgoZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaHNvblgoZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZVh4bWxYKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3JhcGhtbFgoZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1dSSVRFKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fd3JpdGVYa3J5b1goKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUoV3JpdGVUZXN0LmNsYXNzLCAidGlua2VycG9wLW1vZGVybi12M2QwIiwgIi5rcnlvIikuZ2V0QWJzb2x1dGVQYXRoKCkucmVwbGFjZSgnXFwnLCAnLycpOworCisgICAgICAgIGZpbmFsIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVUb1dyaXRlKTsKKyAgICAgICAgYXNzZXJ0VGhhdChmLmxlbmd0aCgpID09IDAsIGlzKHRydWUpKTsKKworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gdHJhdmVyc2FsID0gZ2V0X2dfaW9fd3JpdGVYa3J5b1goZmlsZVRvV3JpdGUpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKKworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPiAwLCBpcyh0cnVlKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1dSSVRFKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fd3JpdGVfd2l0aFh3cml0ZV9ncnlvWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZShXcml0ZVRlc3QuY2xhc3MsICJ0aW5rZXJwb3AtbW9kZXJuLXYzZDAiLCAiLmtyeW8iKS5nZXRBYnNvbHV0ZVBhdGgoKS5yZXBsYWNlKCdcXCcsICcvJyk7CisKKyAgICAgICAgZmluYWwgRmlsZSBmID0gbmV3IEZpbGUoZmlsZVRvV3JpdGUpOworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPT0gMCwgaXModHJ1ZSkpOworCisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiB0cmF2ZXJzYWwgPSBnZXRfZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncnlvWChmaWxlVG9Xcml0ZSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA+IDAsIGlzKHRydWUpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTikKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfSU9fV1JJVEUpCisgICAgcHVibGljIHZvaWQgZ19pb193cml0ZVhqc29uWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZShXcml0ZVRlc3QuY2xhc3MsInRpbmtlcnBvcC1tb2Rlcm4tdjNkMCIsICIuanNvbiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKworICAgICAgICBmaW5hbCBGaWxlIGYgPSBuZXcgRmlsZShmaWxlVG9Xcml0ZSk7CisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA9PSAwLCBpcyh0cnVlKSk7CisKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3dyaXRlWGpzb25YKGZpbGVUb1dyaXRlKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIHRyYXZlcnNhbC5pdGVyYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0VGhhdChmLmxlbmd0aCgpID4gMCwgaXModHJ1ZSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOKQorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19XUklURSkKKyAgICBwdWJsaWMgdm9pZCBnX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyYXBoc29uWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZShXcml0ZVRlc3QuY2xhc3MsInRpbmtlcnBvcC1tb2Rlcm4tdjNkMCIsICIuanNvbiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKworICAgICAgICBmaW5hbCBGaWxlIGYgPSBuZXcgRmlsZShmaWxlVG9Xcml0ZSk7CisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA9PSAwLCBpcyh0cnVlKSk7CisKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyYXBoc29uWChmaWxlVG9Xcml0ZSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA+IDAsIGlzKHRydWUpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTikKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfSU9fV1JJVEUpCisgICAgcHVibGljIHZvaWQgZ19pb193cml0ZVh4bWxYKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKFdyaXRlVGVzdC5jbGFzcywidGlua2VycG9wLW1vZGVybiIsICIueG1sIikuZ2V0QWJzb2x1dGVQYXRoKCkucmVwbGFjZSgnXFwnLCAnLycpOworCisgICAgICAgIGZpbmFsIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVUb1dyaXRlKTsKKyAgICAgICAgYXNzZXJ0VGhhdChmLmxlbmd0aCgpID09IDAsIGlzKHRydWUpKTsKKworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gdHJhdmVyc2FsID0gZ2V0X2dfaW9fd3JpdGVYeG1sWChmaWxlVG9Xcml0ZSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA+IDAsIGlzKHRydWUpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTikKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfSU9fV1JJVEUpCisgICAgcHVibGljIHZvaWQgZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaG1sWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZShXcml0ZVRlc3QuY2xhc3MsInRpbmtlcnBvcC1tb2Rlcm4iLCAiLnhtbCIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKworICAgICAgICBmaW5hbCBGaWxlIGYgPSBuZXcgRmlsZShmaWxlVG9Xcml0ZSk7CisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA9PSAwLCBpcyh0cnVlKSk7CisKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyYXBobWxYKGZpbGVUb1dyaXRlKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworCisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA+IDAsIGlzKHRydWUpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBXcml0ZVRlc3QgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZVhrcnlvWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9Xcml0ZSkud3JpdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyeW9YKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnLmlvKGZpbGVUb1dyaXRlKS53aXRoKElPLndyaXRlciwgSU8uZ3J5bykud3JpdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlWGpzb25YKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnLmlvKGZpbGVUb1dyaXRlKS53cml0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3JhcGhzb25YKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnLmlvKGZpbGVUb1dyaXRlKS53aXRoKElPLndyaXRlciwgSU8uZ3JhcGhzb24pLndyaXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVYeG1sWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9Xcml0ZSkud3JpdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyYXBobWxYKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnLmlvKGZpbGVUb1dyaXRlKS53aXRoKElPLndyaXRlciwgSU8uZ3JhcGhtbCkud3JpdGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0FnZ3JlZ2F0ZVRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0FnZ3JlZ2F0ZVRlc3QuamF2YQppbmRleCAyM2RmZjI2Li5mNzgwMDQ2IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9BZ2dyZWdhdGVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvQWdncmVnYXRlVGVzdC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5CdWxrU2V0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLk1hcEhlbHBlcjsKQEAgLTMxLDEwICszMiwxNCBAQAogCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5pbkU7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLm91dEU7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnMubm90OwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jcy5pczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CkBAIC01MCw2ICs1NSwxMCBAQAogQFJ1bldpdGgoR3JlbWxpblByb2Nlc3NSdW5uZXIuY2xhc3MpCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWdncmVnYXRlVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKIAorICAgIC8vLy8vLyBnbG9iYWwKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PFN0cmluZz4+IGdldF9nX1ZfbmFtZV9hZ2dyZWdhdGVYZ2xvYmFsX3hYX2NhcFh4WCgpOworCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8U3RyaW5nPj4gZ2V0X2dfVl9uYW1lX2FnZ3JlZ2F0ZVh4WF9jYXBYeFgoKTsKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PFN0cmluZz4+IGdldF9nX1ZfYWdncmVnYXRlWHhYX2J5WG5hbWVYX2NhcFh4WCgpOwpAQCAtNTgsNyArNjcsMjUgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPEludGVnZXI+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfYWdncmVnYXRlWHhYX2J5WGFnZVhfY2FwWHhYX2FzWHlYX3NlbGVjdFh5WCgpOwogCi0gICAgLy9wdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfdjFfYXNYeFhfYm90aEVfYXNYZVhfdmFsdWVYd2VpZ2h0WF9leGNlcHRYd1hfYWdncmVnYXRlWHdYX2JhY2tYZVhfb3RoZXJWX2p1bXBYeF90cnVlX3RydWVYX3BhdGgoZmluYWwgT2JqZWN0IHYxSWQpOworICAgIC8vLy8vLyBsb2NhbAorCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIENvbGxlY3Rpb24+IGdldF9nX1ZfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX291dF9jYXBYYVgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiBnZXRfZ19WWDFYX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9vdXRfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX25hbWVfY2FwWGFYKGZpbmFsIE9iamVjdCB2MUlkKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTZXQ8U3RyaW5nPj4gZ2V0X2dfd2l0aFNpZGVFZmZlY3RYYV9zZXRYX1ZfYm90aF9uYW1lX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9jYXBYYVgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiBnZXRfZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhvdXRFWGNyZWF0ZWRYX2NvdW50WF9vdXRfb3V0X2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhpbkVYY3JlYXRlZFhfd2VpZ2h0X3N1bVhfY2FwWGFYKCk7CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfdmFsdWVYbmFtZVhfYWdncmVnYXRlWGdsb2JhbF94WF9jYXBYeFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8U3RyaW5nPj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9uYW1lX2FnZ3JlZ2F0ZVhnbG9iYWxfeFhfY2FwWHhYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPFN0cmluZz4gbmFtZXMgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgY2hlY2tMaXN0T2ZOYW1lcyhuYW1lcyk7CisgICAgfQogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCkBAIC0xMzksOSArMTY2LDc2IEBACiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwogICAgIH0KIAorICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9hZ2dyZWdhdGVYbG9jYWxfYV9uYW1lWF9vdXRfY2FwWGFYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9vdXRfY2FwWGFYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uIG5hbWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIG5hbWVzLnNpemUoKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoIm1hcmtvIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJqb3NoIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJwZXRlciIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygibG9wIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJyaXBwbGUiKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoInZhZGFzIikpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZYMVhfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX291dF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYbmFtZVhfbmFtZV9jYXBYYVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbGxlY3Rpb24+IHRyYXZlcnNhbCA9IGdldF9nX1ZYMVhfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX291dF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYbmFtZVhfbmFtZV9jYXBYYVgoY29udmVydFRvVmVydGV4SWQoIm1hcmtvIikpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgQ29sbGVjdGlvbiBuYW1lcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyg0LCBuYW1lcy5zaXplKCkpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygiam9zaCIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygidmFkYXMiKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoImxvcCIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfYWdncmVnYXRlWGxvY2FsX2FYX2NhcFhhWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgU2V0PFN0cmluZz4+IHRyYXZlcnNhbCA9IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfc2V0WF9WX2JvdGhfbmFtZV9hZ2dyZWdhdGVYbG9jYWxfYVhfY2FwWGFYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBTZXQ8U3RyaW5nPiBuYW1lcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoNiwgbmFtZXMuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygibWFya28iKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoInZhZGFzIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJqb3NoIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJsb3AiKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoInJpcHBsZSIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygicGV0ZXIiKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhvdXRFWGNyZWF0ZWRYX2NvdW50WF9vdXRfb3V0X2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhpbkVYY3JlYXRlZFhfd2VpZ2h0X3N1bVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbGxlY3Rpb24+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG91dEVYY3JlYXRlZFhfY291bnRYX291dF9vdXRfYWdncmVnYXRlWGxvY2FsX2FYX2J5WGluRVhjcmVhdGVkWF93ZWlnaHRfc3VtWF9jYXBYYVgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGZpbmFsIENvbGxlY3Rpb24gc3RvcmUgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDgsIHN0b3JlLnNpemUoKSk7CisgICAgICAgIGFzc2VydFRydWUoc3RvcmUuY29udGFpbnMoMEwpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShzdG9yZS5jb250YWlucygxTCkpOworICAgICAgICBhc3NlcnRUcnVlKHN0b3JlLmNvbnRhaW5zKDJMKSk7CisgICAgICAgIGFzc2VydFRydWUoc3RvcmUuY29udGFpbnMoMS4wZCkpOworICAgICAgICBhc3NlcnRGYWxzZShzdG9yZS5pc0VtcHR5KCkpOworICAgIH0KKwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIEFnZ3JlZ2F0ZVRlc3QgewogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxTdHJpbmc+PiBnZXRfZ19WX25hbWVfYWdncmVnYXRlWGdsb2JhbF94WF9jYXBYeFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJuYW1lIikuYWdncmVnYXRlKFNjb3BlLmdsb2JhbCwgIngiKS5jYXAoIngiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxTdHJpbmc+PiBnZXRfZ19WX25hbWVfYWdncmVnYXRlWHhYX2NhcFh4WCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoIm5hbWUiKS5hZ2dyZWdhdGUoIngiKS5jYXAoIngiKTsKICAgICAgICAgfQpAQCAtMTYxLDggKzI1NSwyNCBAQAogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS5hZ2dyZWdhdGUoIngiKS5ieSgiYWdlIikuY2FwKCJ4IikuYXMoInkiKS5zZWxlY3QoInkiKTsKICAgICAgICAgfQogCi0gICAgICAgIC8qcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX3YxX2FzWHhYX2JvdGhFX2FzWGVYX3ZhbHVlWHdlaWdodFhfZXhjZXB0WHdYX2FnZ3JlZ2F0ZVh3WF9iYWNrWGVYX290aGVyVl9qdW1wWHhfdHJ1ZV90cnVlWF9wYXRoKGZpbmFsIE9iamVjdCB2MUlkKSB7Ci0gICAgICAgICAgICByZXR1cm4gZy5WKDEpLmFzKCJ4IikuYm90aEUoKS5hcygiZSIpLnZhbHVlKCJ3ZWlnaHQiKS5leGNlcHQoInciKS5hZ2dyZWdhdGUoInciKS5iYWNrKCJlIikub3RoZXJWKCkuanVtcCgieCIsIHQgLT4gdHJ1ZSwgdCAtPiB0cnVlKS5wYXRoKCk7Ci0gICAgICAgIH0qLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbGxlY3Rpb24+IGdldF9nX1ZfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX291dF9jYXBYYVgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCAiYSIpLmJ5KCJuYW1lIikub3V0KCkuY2FwKCJhIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbGxlY3Rpb24+IGdldF9nX1ZYMVhfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX291dF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYbmFtZVhfbmFtZV9jYXBYYVgoZmluYWwgT2JqZWN0IHYxSWQpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYodjFJZCkuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCAiYSIpLmJ5KCJuYW1lIikub3V0KCkuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCAiYSIpLmJ5KCJuYW1lIikudmFsdWVzKCJuYW1lIikuY2FwKCJhIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFNldDxTdHJpbmc+PiBnZXRfZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfYWdncmVnYXRlWGxvY2FsX2FYX2NhcFhhWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLndpdGhTaWRlRWZmZWN0KCJhIiwgbmV3IEhhc2hTZXQoKSkuVigpLmJvdGgoKS48U3RyaW5nPnZhbHVlcygibmFtZSIpLmFnZ3JlZ2F0ZShTY29wZS5sb2NhbCwgImEiKS5jYXAoImEiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgQ29sbGVjdGlvbj4gZ2V0X2dfVl9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYb3V0RVhjcmVhdGVkWF9jb3VudFhfb3V0X291dF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYaW5FWGNyZWF0ZWRYX3dlaWdodF9zdW1YX2NhcFhhWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsICJhIikuYnkob3V0RSgiY3JlYXRlZCIpLmNvdW50KCkpLm91dCgpLm91dCgpLmFnZ3JlZ2F0ZShTY29wZS5sb2NhbCwgImEiKS5ieShpbkUoImNyZWF0ZWQiKS52YWx1ZXMoIndlaWdodCIpLnN1bSgpKS5jYXAoImEiKTsKKyAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0dyb3VwVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvR3JvdXBUZXN0LmphdmEKaW5kZXggMzhiOWM5Zi4uNWIwY2YzMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvR3JvdXBUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvR3JvdXBUZXN0LmphdmEKQEAgLTIyMCw4ICsyMjAsNyBAQAogICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwogICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBOdW1iZXI+IG1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMiwgbWFwLnNpemUoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtYXAuZ2V0KCJzb2Z0d2FyZSIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1hcC5zaXplKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMy41ZCwgKGRvdWJsZSkgbWFwLmdldCgicGVyc29uIiksIDAuMDFkKTsKICAgICAgICAgY2hlY2tTaWRlRWZmZWN0cyh0cmF2ZXJzYWwuYXNBZG1pbigpLmdldFNpZGVFZmZlY3RzKCksICJhIiwgSGFzaE1hcC5jbGFzcyk7CiAgICAgfQpAQCAtNDI2LDE2ICs0MjUsMTIgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDE3OTM1MCwgc3ViTWFwLmdldCgiZm9sbG93ZWRCeSIpLmludFZhbHVlKCkpOwogICAgICAgICAvLwogICAgICAgICBzdWJNYXAgPSBtYXAuZ2V0KCJvcmlnaW5hbCIpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMywgc3ViTWFwLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBzdWJNYXAuc2l6ZSgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDIxODU2MTMsIHN1Yk1hcC5nZXQoImZvbGxvd2VkQnkiKS5pbnRWYWx1ZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHN1Yk1hcC5nZXQoIndyaXR0ZW5CeSIpLmludFZhbHVlKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgc3ViTWFwLmdldCgic3VuZ0J5IikuaW50VmFsdWUoKSk7CiAgICAgICAgIC8vCiAgICAgICAgIHN1Yk1hcCA9IG1hcC5nZXQoImNvdmVyIik7Ci0gICAgICAgIGFzc2VydEVxdWFscygzLCBzdWJNYXAuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHN1Yk1hcC5zaXplKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoNzc3OTgyLCBzdWJNYXAuZ2V0KCJmb2xsb3dlZEJ5IikuaW50VmFsdWUoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBzdWJNYXAuZ2V0KCJ3cml0dGVuQnkiKS5pbnRWYWx1ZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHN1Yk1hcC5nZXQoInN1bmdCeSIpLmludFZhbHVlKCkpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRWxlbWVudElkU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0VsZW1lbnRJZFN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQppbmRleCA5YWNhYTNmLi42OWZhNWNmIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRWxlbWVudElkU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FbGVtZW50SWRTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKQEAgLTIyLDcgKzIyLDYgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKaW5kZXggZTdhMzkyYy4uMDk5MmVhZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0V2ZW50U3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQpAQCAtMzEsOCArMzEsOSBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRFZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwua2V5ZWQuS2V5ZWRQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmtleWVkLktleWVkVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlRWRnZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VGYWN0b3J5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKQEAgLTYzNCw3ICs2MzUsNyBAQAogICAgICAgICAgICAgICAgIGFzc2VydFRoYXQoZWxlbWVudCwgaW5zdGFuY2VPZihEZXRhY2hlZFZlcnRleFByb3BlcnR5LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyh2YWx1ZSwgZWxlbWVudC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobnVsbCwgb2xkVmFsdWUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChvbGRWYWx1ZSwgaW5zdGFuY2VPZihLZXllZFByb3BlcnR5LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ5YXkhIiwgc2V0VmFsdWUpOwogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CkBAIC03NTIsNyArNzUzLDcgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGluSWQsIGVsZW1lbnQuaW5WZXJ0ZXgoKS5pZCgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMob3V0SWQsIGVsZW1lbnQub3V0VmVydGV4KCkuaWQoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQob2xkVmFsdWUsIGluc3RhbmNlT2YoS2V5ZWRQcm9wZXJ0eS5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmV3Iiwgb2xkVmFsdWUua2V5KCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygieWF5ISIsIHNldFZhbHVlKTsKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwpAQCAtOTI4LDQ0ICs5MjksOCBAQAogICAgICAgICAgICAgICAgIGFzc2VydFRoYXQoZWxlbWVudCwgaW5zdGFuY2VPZihEZXRhY2hlZFZlcnRleC5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhsYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoaWQsIGVsZW1lbnQuaWQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChvbGRWYWx1ZSwgaW5zdGFuY2VPZihLZXllZFZlcnRleFByb3BlcnR5LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiZGFoIiwgc2V0VmFsdWUpOwotICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKTsKLQotICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCi0gICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKLQotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5IGV2ZW50U3RyYXRlZ3kgPSBidWlsZGVyLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBndHMgPSBjcmVhdGUoZXZlbnRTdHJhdGVneSk7Ci0KLSAgICAgICAgZ3RzLlYodikucHJvcGVydHkoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuc2luZ2xlLCAibmV3IiwgImRhaCIpLml0ZXJhdGUoKTsKLSAgICAgICAgdHJ5Q29tbWl0KGdyYXBoKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMiwgSXRlcmF0b3JVdGlscy5jb3VudChnLlYodikucHJvcGVydGllcygpKSk7Ci0gICAgICAgIGFzc2VydFRoYXQodHJpZ2dlcmVkLmdldCgpLCBpcyh0cnVlKSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBARmVhdHVyZVJlcXVpcmVtZW50U2V0KEZlYXR1cmVSZXF1aXJlbWVudFNldC5QYWNrYWdlLlZFUlRJQ0VTX09OTFkpCi0gICAgcHVibGljIHZvaWQgc2hvdWxkRGV0YWNoVmVydGV4UHJvcGVydHlXaGVuTmV3RGVwcmVjYXRlZCgpIHsKLSAgICAgICAgZmluYWwgQXRvbWljQm9vbGVhbiB0cmlnZ2VyZWQgPSBuZXcgQXRvbWljQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IHYubGFiZWwoKTsKLSAgICAgICAgZmluYWwgT2JqZWN0IGlkID0gdi5pZCgpOwotICAgICAgICB2LnByb3BlcnR5KCJvbGQiLCJibGFoIik7Ci0KLSAgICAgICAgZmluYWwgTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciA9IG5ldyBBYnN0cmFjdE11dGF0aW9uTGlzdGVuZXIoKSB7Ci0gICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgUHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChlbGVtZW50LCBpbnN0YW5jZU9mKERldGFjaGVkVmVydGV4LmNsYXNzKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhpZCwgZWxlbWVudC5pZCgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobnVsbCwgb2xkVmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJkYWgiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KQEAgLTEwNjksNyArMTAzNCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTExMDksNyArMTA3NCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTExNDIsMTMgKzExMDcsMTMgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KGVsZW1lbnQsIGluc3RhbmNlT2YoUmVmZXJlbmNlVmVydGV4UHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHZhbHVlLCBlbGVtZW50LnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG9sZFZhbHVlLCBpbnN0YW5jZU9mKEtleWVkUHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInlheSEiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTExODcsNyArMTE1Miw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTEyMjcsNyArMTE5Miw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTEyNjAsMTMgKzEyMjUsMTMgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGluSWQsIGVsZW1lbnQuaW5WZXJ0ZXgoKS5pZCgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMob3V0SWQsIGVsZW1lbnQub3V0VmVydGV4KCkuaWQoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQob2xkVmFsdWUsIGluc3RhbmNlT2YoS2V5ZWRQcm9wZXJ0eS5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmV3Iiwgb2xkVmFsdWUua2V5KCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygieWF5ISIsIHNldFZhbHVlKTsKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTMwMiw3ICsxMjY3LDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTMzNSw3ICsxMzAwLDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTM2OSw3ICsxMzM0LDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTQwOCw3ICsxMzczLDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTQyNSw3ICsxMzkwLDcgQEAKIAogICAgIEBUZXN0CiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudFNldChGZWF0dXJlUmVxdWlyZW1lbnRTZXQuUGFja2FnZS5WRVJUSUNFU19PTkxZKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlZmVyZWNlVmVydGV4UHJvcGVydHlXaGVuTmV3KCkgeworICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlZmVyZW5jZVZlcnRleFByb3BlcnR5V2hlbk5ldygpIHsKICAgICAgICAgZmluYWwgQXRvbWljQm9vbGVhbiB0cmlnZ2VyZWQgPSBuZXcgQXRvbWljQm9vbGVhbihmYWxzZSk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7CiAgICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IHYubGFiZWwoKTsKQEAgLTE0MzgsNDkgKzE0MDMsMTMgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KGVsZW1lbnQsIGluc3RhbmNlT2YoUmVmZXJlbmNlVmVydGV4LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhpZCwgZWxlbWVudC5pZCgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG9sZFZhbHVlLCBpbnN0YW5jZU9mKEtleWVkVmVydGV4UHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobnVsbCwgb2xkVmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJkYWgiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKLQotICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCi0gICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKLQotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5IGV2ZW50U3RyYXRlZ3kgPSBidWlsZGVyLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBndHMgPSBjcmVhdGUoZXZlbnRTdHJhdGVneSk7Ci0KLSAgICAgICAgZ3RzLlYodikucHJvcGVydHkoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuc2luZ2xlLCAibmV3IiwgImRhaCIpLml0ZXJhdGUoKTsKLSAgICAgICAgdHJ5Q29tbWl0KGdyYXBoKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMiwgSXRlcmF0b3JVdGlscy5jb3VudChnLlYodikucHJvcGVydGllcygpKSk7Ci0gICAgICAgIGFzc2VydFRoYXQodHJpZ2dlcmVkLmdldCgpLCBpcyh0cnVlKSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBARmVhdHVyZVJlcXVpcmVtZW50U2V0KEZlYXR1cmVSZXF1aXJlbWVudFNldC5QYWNrYWdlLlZFUlRJQ0VTX09OTFkpCi0gICAgcHVibGljIHZvaWQgc2hvdWxkUmVmZXJlbmNlVmVydGV4UHJvcGVydHlXaGVuTmV3RGVwcmVjYXRlZCgpIHsKLSAgICAgICAgZmluYWwgQXRvbWljQm9vbGVhbiB0cmlnZ2VyZWQgPSBuZXcgQXRvbWljQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IHYubGFiZWwoKTsKLSAgICAgICAgZmluYWwgT2JqZWN0IGlkID0gdi5pZCgpOwotICAgICAgICB2LnByb3BlcnR5KCJvbGQiLCJibGFoIik7Ci0KLSAgICAgICAgZmluYWwgTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciA9IG5ldyBBYnN0cmFjdE11dGF0aW9uTGlzdGVuZXIoKSB7Ci0gICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgUHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChlbGVtZW50LCBpbnN0YW5jZU9mKFJlZmVyZW5jZVZlcnRleC5jbGFzcykpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhsYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoaWQsIGVsZW1lbnQuaWQoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiZGFoIiwgc2V0VmFsdWUpOwotICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNTEyLDcgKzE0NDEsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNTQxLDcgKzE0NzAsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNTc4LDcgKzE1MDcsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNjE4LDcgKzE1NDcsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNjUxLDEzICsxNTgwLDEzIEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHZwLCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHZhbHVlLCBlbGVtZW50LnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG9sZFZhbHVlLCBpbnN0YW5jZU9mKEtleWVkUHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInlheSEiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE2OTYsNyArMTYyNSw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE3MzYsNyArMTY2NSw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE3NjksMTMgKzE2OTgsMTMgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGluSWQsIGVsZW1lbnQuaW5WZXJ0ZXgoKS5pZCgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMob3V0SWQsIGVsZW1lbnQub3V0VmVydGV4KCkuaWQoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQob2xkVmFsdWUsIGluc3RhbmNlT2YoS2V5ZWRQcm9wZXJ0eS5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmV3Iiwgb2xkVmFsdWUua2V5KCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygieWF5ISIsIHNldFZhbHVlKTsKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTgxMSw3ICsxNzQwLDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTg0NSw3ICsxNzc0LDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTg4MCw3ICsxODA5LDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTkxNyw3ICsxODQ2LDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTk0Nyw0OSArMTg3NiwxMyBAQAogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyh2LCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGlkLCBlbGVtZW50LmlkKCkpOworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQob2xkVmFsdWUsIGluc3RhbmNlT2YoS2V5ZWRWZXJ0ZXhQcm9wZXJ0eS5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmV3Iiwgb2xkVmFsdWUua2V5KCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImRhaCIsIHNldFZhbHVlKTsKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOwotCi0gICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwotCi0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kgZXZlbnRTdHJhdGVneSA9IGJ1aWxkZXIuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGd0cyA9IGNyZWF0ZShldmVudFN0cmF0ZWd5KTsKLQotICAgICAgICBndHMuVih2KS5wcm9wZXJ0eShWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5zaW5nbGUsICJuZXciLCAiZGFoIikuaXRlcmF0ZSgpOwotICAgICAgICB0cnlDb21taXQoZ3JhcGgpOwotCi0gICAgICAgIGFzc2VydEVxdWFscygyLCBJdGVyYXRvclV0aWxzLmNvdW50KGcuVih2KS5wcm9wZXJ0aWVzKCkpKTsKLSAgICAgICAgYXNzZXJ0VGhhdCh0cmlnZ2VyZWQuZ2V0KCksIGlzKHRydWUpKTsKLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIEBGZWF0dXJlUmVxdWlyZW1lbnRTZXQoRmVhdHVyZVJlcXVpcmVtZW50U2V0LlBhY2thZ2UuVkVSVElDRVNfT05MWSkKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRVc2VBY3R1YWxWZXJ0ZXhQcm9wZXJ0eVdoZW5OZXdEZXByZWNhdGVkKCkgewotICAgICAgICBmaW5hbCBBdG9taWNCb29sZWFuIHRyaWdnZXJlZCA9IG5ldyBBdG9taWNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHYgPSBncmFwaC5hZGRWZXJ0ZXgoKTsKLSAgICAgICAgZmluYWwgU3RyaW5nIGxhYmVsID0gdi5sYWJlbCgpOwotICAgICAgICBmaW5hbCBPYmplY3QgaWQgPSB2LmlkKCk7Ci0gICAgICAgIHYucHJvcGVydHkoIm9sZCIsImJsYWgiKTsKLQotICAgICAgICBmaW5hbCBNdXRhdGlvbkxpc3RlbmVyIGxpc3RlbmVyID0gbmV3IEFic3RyYWN0TXV0YXRpb25MaXN0ZW5lcigpIHsKLSAgICAgICAgICAgIEBPdmVycmlkZQotICAgICAgICAgICAgcHVibGljIHZvaWQgdmVydGV4UHJvcGVydHlDaGFuZ2VkKGZpbmFsIFZlcnRleCBlbGVtZW50LCBmaW5hbCBQcm9wZXJ0eSBvbGRWYWx1ZSwgZmluYWwgT2JqZWN0IHNldFZhbHVlLCBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHModiwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhpZCwgZWxlbWVudC5pZCgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobnVsbCwgb2xkVmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJkYWgiLCBzZXRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTIwMjEsNyArMTkxNCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTIwNTEsNyArMTk0NCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTIwODMsNyArMTk3Niw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgdmVydGV4UHJvcGVydHlDaGFuZ2VkKGZpbmFsIFZlcnRleCBlbGVtZW50LCBmaW5hbCBQcm9wZXJ0eSBvbGRWYWx1ZSwgZmluYWwgT2JqZWN0IHNldFZhbHVlLCBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpIHsKKyAgICAgICAgcHVibGljIHZvaWQgdmVydGV4UHJvcGVydHlDaGFuZ2VkKGZpbmFsIFZlcnRleCBlbGVtZW50LCBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSBvbGRWYWx1ZSwgZmluYWwgT2JqZWN0IHNldFZhbHVlLCBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpIHsKIAogICAgICAgICB9CiAKQEAgLTIyMTEsMTEgKzIxMDQsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgUHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7Ci0gICAgICAgICAgICAvLyBkbyBub3RoaW5nIC0gZGVwcmVjYXRlZAotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgVmVydGV4UHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7CiAgICAgICAgICAgICB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWRFdmVudC5pbmNyZW1lbnRBbmRHZXQoKTsKICAgICAgICAgICAgIG9yZGVyLmFkZCgidi1wcm9wZXJ0eS1jaGFuZ2VkLSIgKyBlbGVtZW50LmlkKCkpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKaW5kZXggZWE5NzZkNC4uZjU1MjAyMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUGFydGl0aW9uU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCkBAIC0xMTcsMTUgKzExNywxNSBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEFwcGVuZFBhcnRpdGlvblRvQWxsVmVydGV4UHJvcGVydGllcygpIHsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ092ZXJBID0gZy53aXRoU3RyYXRlZ2llcyhQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCiAgICAgICAgICAgICAgICAgLmluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKSk7CiAKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ092ZXJCID0gZy53aXRoU3RyYXRlZ2llcyhQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCiAgICAgICAgICAgICAgICAgLmluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQiIpLmFkZFJlYWRQYXJ0aXRpb24oIkIiKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJCIikucmVhZFBhcnRpdGlvbnMoIkIiKS5jcmVhdGUoKSk7CiAKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ092ZXJBQiA9IGcud2l0aFN0cmF0ZWdpZXMoUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5pbmNsdWRlTWV0YVByb3BlcnRpZXModHJ1ZSkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkIiKS5hZGRSZWFkUGFydGl0aW9uKCJCIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkIiKS5yZWFkUGFydGl0aW9ucygiQiIsIkEiKS5jcmVhdGUoKSk7CiAKICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBnT3ZlckEuYWRkVigpLnByb3BlcnR5KCJhbnkiLCAidGhpbmciKS5wcm9wZXJ0eSgic29tZSIsICJ0aGluZyIpLm5leHQoKTsKICAgICAgICAgZmluYWwgVmVydGV4IGxhYmVsbGVkViA9IGdPdmVyQS5hZGRWKCJwZXJzb24iKS5wcm9wZXJ0eSgibmFtZSIsICJ0aGluZyIpLnByb3BlcnR5KCJ0aGF0IiwgInRoaW5nIikubmV4dCgpOwpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGlkZVBhcnRpdGlvbktleUZvclZhbHVlcygpIHsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ092ZXJBID0gZy53aXRoU3RyYXRlZ2llcyhQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCiAgICAgICAgICAgICAgICAgLmluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKSk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ092ZXJBLmFkZFYoKS5wcm9wZXJ0eSgiYW55IiwgInRoaW5nIikubmV4dCgpOwogCiAgICAgICAgIHRyeSB7CkBAIC0yMjAsNyArMjIwLDcgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIaWRlUGFydGl0aW9uS2V5Rm9yUHJvcGVydGllcygpIHsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ092ZXJBID0gZy53aXRoU3RyYXRlZ2llcyhQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCiAgICAgICAgICAgICAgICAgLmluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKSk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ092ZXJBLmFkZFYoKS5wcm9wZXJ0eSgiYW55IiwgInRoaW5nIikubmV4dCgpOwogCiAgICAgICAgIHRyeSB7CkBAIC0yNjIsNyArMjYyLDcgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIaWRlUGFydGl0aW9uS2V5Rm9yUHJvcGVydHlNYXBXaXRoRW1wdHlLZXlzKCkgewogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnT3ZlckEgPSBnLndpdGhTdHJhdGVnaWVzKFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKICAgICAgICAgICAgICAgICAuaW5jbHVkZU1ldGFQcm9wZXJ0aWVzKHRydWUpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5yZWFkUGFydGl0aW9ucygiQSIpLmNyZWF0ZSgpKTsKICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBnT3ZlckEuYWRkVigpLnByb3BlcnR5KCJhbnkiLCAidGhpbmciKS5uZXh0KCk7CiAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDFMLCAobG9uZykgZ092ZXJBLlYodikucHJvcGVydHlNYXAoKS5jb3VudCgpLm5leHQoKSk7CkBAIC0yNzUsNyArMjc1LDcgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIaWRlUGFydGl0aW9uS2V5Rm9yVmFsdWVNYXAoKSB7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGdPdmVyQSA9IGcud2l0aFN0cmF0ZWdpZXMoUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5pbmNsdWRlTWV0YVByb3BlcnRpZXModHJ1ZSkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCkpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdPdmVyQS5hZGRWKCkucHJvcGVydHkoImFueSIsICJ0aGluZyIpLm5leHQoKTsKIAogICAgICAgICB0cnkgewpAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGlkZVBhcnRpdGlvbktleUZvclZhbHVlTWFwV2l0aEVtcHR5S2V5cygpIHsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ092ZXJBID0gZy53aXRoU3RyYXRlZ2llcyhQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCiAgICAgICAgICAgICAgICAgLmluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKSk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ092ZXJBLmFkZFYoKS5wcm9wZXJ0eSgiYW55IiwgInRoaW5nIikubmV4dCgpOwogCiAgICAgICAgIGFzc2VydEVxdWFscygxTCwgKGxvbmcpIGdPdmVyQS5WKHYpLnZhbHVlTWFwKCkuY291bnQoKS5uZXh0KCkpOwpAQCAtMzAzLDcgKzMwMyw3IEBACiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudFNldChGZWF0dXJlUmVxdWlyZW1lbnRTZXQuUGFja2FnZS5TSU1QTEUpCiAgICAgcHVibGljIHZvaWQgc2hvdWxkQXBwZW5kUGFydGl0aW9uVG9FZGdlKCkgewogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneSA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc291cmNlID0gZy53aXRoU3RyYXRlZ2llcyhwYXJ0aXRpb25TdHJhdGVneSk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2MSA9IHNvdXJjZS5hZGRWKCkucHJvcGVydHkoImFueSIsICJ0aGluZyIpLm5leHQoKTsKICAgICAgICAgZmluYWwgVmVydGV4IHYyID0gc291cmNlLmFkZFYoKS5wcm9wZXJ0eSgic29tZSIsICJ0aGluZyIpLm5leHQoKTsKQEAgLTMzMywxNSArMzMzLDE1IEBACiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudFNldChGZWF0dXJlUmVxdWlyZW1lbnRTZXQuUGFja2FnZS5WRVJUSUNFU19PTkxZKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZFdyaXRlVmVydGljZXNUb011bHRpcGxlUGFydGl0aW9ucygpIHsKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3lBQSA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc291cmNlQUEgPSBnLndpdGhTdHJhdGVnaWVzKHBhcnRpdGlvblN0cmF0ZWd5QUEpOwogCiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5QkEgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJCIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQiIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNvdXJjZUJBID0gZy53aXRoU3RyYXRlZ2llcyhwYXJ0aXRpb25TdHJhdGVneUJBKTsKIAogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUJCID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQiIpLmFkZFJlYWRQYXJ0aXRpb24oIkIiKS5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkIiKS5yZWFkUGFydGl0aW9ucygiQiIpLmNyZWF0ZSgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzb3VyY2VCQiA9IGcud2l0aFN0cmF0ZWdpZXMocGFydGl0aW9uU3RyYXRlZ3lCQik7CiAKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3lCQUIgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCkBAIC0zNzAsNyArMzcwLDcgQEAKICAgICBARmVhdHVyZVJlcXVpcmVtZW50U2V0KEZlYXR1cmVSZXF1aXJlbWVudFNldC5QYWNrYWdlLlZFUlRJQ0VTX09OTFkpCiAgICAgcHVibGljIHZvaWQgc2hvdWxkVGhyb3dFeGNlcHRpb25PblZJbkRpZmZlcmVudFBhcnRpdGlvbigpIHsKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3lBQSA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc291cmNlQUEgPSBnLndpdGhTdHJhdGVnaWVzKHBhcnRpdGlvblN0cmF0ZWd5QUEpOwogCiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5QSA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKQEAgLTM5Miw3ICszOTIsNyBAQAogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnRTZXQoRmVhdHVyZVJlcXVpcmVtZW50U2V0LlBhY2thZ2UuU0lNUExFKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93RXhjZXB0aW9uT25FSW5EaWZmZXJlbnRQYXJ0aXRpb24oKSB7CiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5QUEgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNvdXJjZUFBID0gZy53aXRoU3RyYXRlZ2llcyhwYXJ0aXRpb25TdHJhdGVneUFBKTsKIAogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUEgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCkBAIC00MjMsNyArNDIzLDcgQEAKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc291cmNlQkEgPSBnLndpdGhTdHJhdGVnaWVzKHBhcnRpdGlvblN0cmF0ZWd5QkEpOwogCiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5Q0FCID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQyIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJCIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJDIikucmVhZFBhcnRpdGlvbnMoIkEiLCJCIikuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNvdXJjZUNBQiA9IGcud2l0aFN0cmF0ZWdpZXMocGFydGl0aW9uU3RyYXRlZ3lDQUIpOwogCiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5QyA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKQEAgLTQ0MSw3ICs0NDEsNyBAQAogICAgICAgICAgICAgcHV0KFBhcnRpdGlvblN0cmF0ZWd5LlJFQURfUEFSVElUSU9OUywgQXJyYXlzLmFzTGlzdCgiQSIsICJCIiwgIkMiKSk7CiAgICAgICAgIH19KSkpOwogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUNDID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQyIpLmFkZFJlYWRQYXJ0aXRpb24oIkMiKS5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkMiKS5yZWFkUGFydGl0aW9ucygiQyIpLmNyZWF0ZSgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzb3VyY2VDQyA9IGcud2l0aFN0cmF0ZWdpZXMocGFydGl0aW9uU3RyYXRlZ3lDQyk7CiAKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3lDQkMgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKaW5kZXggOTE1MjY1NS4uY2YxYzc5MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQpAQCAtMjIsNyArMjIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcmRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CkBAIC03NCw3ICs3NCw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkRmlsdGVyVmVydGV4Q3JpdGVyaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHZlcnRleENyaXRlcmlvbiA9IGhhcygibmFtZSIsIFAud2l0aGluKCJqb3NoIiwgImxvcCIsICJyaXBwbGUiKSk7CiAKLSAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc2cgPSBnLndpdGhTdHJhdGVnaWVzKFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS52ZXJ0ZXhDcml0ZXJpb24odmVydGV4Q3JpdGVyaW9uKS5jcmVhdGUoKSk7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNnID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5LmJ1aWxkKCkudmVydGljZXModmVydGV4Q3JpdGVyaW9uKS5jcmVhdGUoKSk7CiAKICAgICAgICAgLy8gdGhyZWUgdmVydGljZXMgYXJlIGluY2x1ZGVkIGluIHRoZSBzdWJncmFwaAogICAgICAgICBhc3NlcnRFcXVhbHMoNiwgZy5WKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOwpAQCAtMTYwLDcgKzE2MCw3IEBACiAgICAgICAgICAgICAgICAgaGFzKCJ3ZWlnaHQiLCAxLjBkKS5oYXNMYWJlbCgiY3JlYXRlZCIpIC8vIDEwCiAgICAgICAgICk7CiAKLSAgICAgICAgZmluYWwgU3ViZ3JhcGhTdHJhdGVneSBzdHJhdGVneSA9IFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS5lZGdlQ3JpdGVyaW9uKGVkZ2VDcml0ZXJpb24pLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBTdWJncmFwaFN0cmF0ZWd5IHN0cmF0ZWd5ID0gU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLmVkZ2VzKGVkZ2VDcml0ZXJpb24pLmNyZWF0ZSgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzZyA9IGcud2l0aFN0cmF0ZWdpZXMoc3RyYXRlZ3kpOwogCiAgICAgICAgIC8vIGFsbCB2ZXJ0aWNlcyBhcmUgaGVyZQpAQCAtNDI5LDcgKzQyOSw3IEBACiAgICAgICAgIC8vIHRoaXMgd2lsbCBleGNsdWRlICJwZXRlciIKICAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPz4gdmVydGV4Q3JpdGVyaW9uID0gaGFzKCJuYW1lIiwgUC53aXRoaW4oInJpcHBsZSIsICJqb3NoIiwgIm1hcmtvIikpOwogCi0gICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNnID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5LmJ1aWxkKCkudmVydGV4Q3JpdGVyaW9uKHZlcnRleENyaXRlcmlvbikuY3JlYXRlKCkpOworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzZyA9IGcud2l0aFN0cmF0ZWdpZXMoU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLnZlcnRpY2VzKHZlcnRleENyaXRlcmlvbikuY3JlYXRlKCkpOwogCiAgICAgICAgIGFzc2VydEVxdWFscyg5LCBnLlYoKS5hcygiYSIpLm91dCgpLmluKCkuYXMoImIiKS5kZWR1cCgiYSIsICJiIikuY291bnQoKS5uZXh0KCkuaW50VmFsdWUoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBzZy5WKCkuYXMoImEiKS5vdXQoKS5pbigpLmFzKCJiIikuZGVkdXAoImEiLCAiYiIpLmNvdW50KCkubmV4dCgpLmludFZhbHVlKCkpOwpAQCAtNDQzLDcgKzQ0Myw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkR2V0RXhjbHVkZWRWZXJ0ZXgoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPz4gdmVydGV4Q3JpdGVyaW9uID0gaGFzKCJuYW1lIiwgUC53aXRoaW4oImpvc2giLCAibG9wIiwgInJpcHBsZSIpKTsKIAotICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzZyA9IGcud2l0aFN0cmF0ZWdpZXMoU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLnZlcnRleENyaXRlcmlvbih2ZXJ0ZXhDcml0ZXJpb24pLmNyZWF0ZSgpKTsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc2cgPSBnLndpdGhTdHJhdGVnaWVzKFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS52ZXJ0aWNlcyh2ZXJ0ZXhDcml0ZXJpb24pLmNyZWF0ZSgpKTsKIAogICAgICAgICBzZy5WKGNvbnZlcnRUb1ZlcnRleElkKCJtYXJrbyIpKS5uZXh0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1RyYW5zbGF0aW9uU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9UcmFuc2xhdGlvblN0cmF0ZWd5LmphdmEKaW5kZXggNzdhZTg3OC4uZmNlY2Y5ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1RyYW5zbGF0aW9uU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVHJhbnNsYXRpb25TdHJhdGVneS5qYXZhCkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBzY3JpcHRFbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKICAgICAgICAgICAgICAgICBiaW5kaW5ncy5wdXRBbGwoc2NyaXB0RW5naW5lLmdldENvbnRleHQoKS5nZXRCaW5kaW5ncyhTY3JpcHRDb250ZXh0LkVOR0lORV9TQ09QRSkpOwogICAgICAgICAgICAgICAgIGJpbmRpbmdzLnB1dCh0aGlzLnRyYW5zbGF0b3IuZ2V0VHJhdmVyc2FsU291cmNlKCkudG9TdHJpbmcoKSwgdGhpcy50cmF2ZXJzYWxTb3VyY2UpOwotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRUcmF2ZXJzYWwgPSAoVHJhdmVyc2FsLkFkbWluPD8sID8+KSBzY3JpcHRFbmdpbmUuZXZhbChieXRlY29kZSwgYmluZGluZ3MpOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRUcmF2ZXJzYWwgPSAoVHJhdmVyc2FsLkFkbWluPD8sID8+KSBzY3JpcHRFbmdpbmUuZXZhbChieXRlY29kZSwgYmluZGluZ3MsIHRoaXMudHJhbnNsYXRvci5nZXRUcmF2ZXJzYWxTb3VyY2UoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9SZWFkT25seVN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1JlYWRPbmx5U3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCmluZGV4IDVkOTdiNmMuLjBmYTRiMGMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1JlYWRPbmx5U3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1JlYWRPbmx5U3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCkBAIC0yMCw3ICsyMCw3IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkZlYXR1cmVSZXF1aXJlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0dyYXBoVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvR3JhcGhUZXN0LmphdmEKaW5kZXggYTE0OTBjYy4uOTVkNWFkYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvR3JhcGhUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvR3JhcGhUZXN0LmphdmEKQEAgLTQ5LDEwICs0OSwxMCBAQAogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLmluc3RhbmNlT2Y7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnMuaXM7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnMubm90OworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOwotaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOwogCkBAIC0xMjMsMTEgKzEyMywxMiBAQAogICAgIEBUZXN0CiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfQUREX1ZFUlRJQ0VTKQogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX1VTRVJfU1VQUExJRURfSURTKQorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX1VQU0VSVCwgc3VwcG9ydGVkID0gZmFsc2UpCiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGF2ZUV4Y2VwdGlvbkNvbnNpc3RlbmN5V2hlbkFzc2lnbmluZ1NhbWVJZE9uVmVydGV4KCkgewogICAgICAgICBmaW5hbCBPYmplY3QgbyA9IGdyYXBoUHJvdmlkZXIuY29udmVydElkKCIxIiwgVmVydGV4LmNsYXNzKTsKLSAgICAgICAgZ3JhcGguYWRkVmVydGV4KFQuaWQsIG8pOworICAgICAgICBncmFwaC5hZGRWZXJ0ZXgoVC5pZCwgbywgIm5hbWUiLCAibWFya28iKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGdyYXBoLmFkZFZlcnRleChULmlkLCBvKTsKKyAgICAgICAgICAgIGdyYXBoLmFkZFZlcnRleChULmlkLCBvLCAibmFtZSIsICJzdGVwaGVuIik7CiAgICAgICAgICAgICBmYWlsKCJBc3NpZ25pbmcgdGhlIHNhbWUgSUQgdG8gYW4gRWxlbWVudCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIik7CiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgYXNzZXJ0VGhhdChleCwgaW5zdGFuY2VPZihHcmFwaC5FeGNlcHRpb25zLnZlcnRleFdpdGhJZEFscmVhZHlFeGlzdHMoMCkuZ2V0Q2xhc3MoKSkpOwpAQCAtMTM3LDYgKzEzOCwyOSBAQAogICAgIEBUZXN0CiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfQUREX1ZFUlRJQ0VTKQogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX1VTRVJfU1VQUExJRURfSURTKQorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX1VQU0VSVCkKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRVcHNlcnRXaGVuQXNzaWduaW5nU2FtZUlkT25WZXJ0ZXgoKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCBvID0gZ3JhcGhQcm92aWRlci5jb252ZXJ0SWQoIjEiLCBWZXJ0ZXguY2xhc3MpOworICAgICAgICBncmFwaC5hZGRWZXJ0ZXgoVC5pZCwgbywgIm5hbWUiLCAibWFya28iKTsKKyAgICAgICAgdHJ5Q29tbWl0KGdyYXBoLCBncmFwaCAtPiB7CisgICAgICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdyYXBoLnZlcnRpY2VzKG8pLm5leHQoKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhvLCB2LmlkKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIHYudmFsdWUoIm5hbWUiKSk7CisgICAgICAgICAgICBhc3NlcnRWZXJ0ZXhFZGdlQ291bnRzKGdyYXBoLCAxLCAwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZ3JhcGguYWRkVmVydGV4KFQuaWQsIG8sICJuYW1lIiwgInN0ZXBoZW4iKTsKKyAgICAgICAgdHJ5Q29tbWl0KGdyYXBoLCBncmFwaCAtPiB7CisgICAgICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdyYXBoLnZlcnRpY2VzKG8pLm5leHQoKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhvLCB2LmlkKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdi52YWx1ZSgibmFtZSIpKTsKKyAgICAgICAgICAgIGFzc2VydFZlcnRleEVkZ2VDb3VudHMoZ3JhcGgsIDEsIDApOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9WRVJUSUNFUykKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9VU0VSX1NVUFBMSUVEX0lEUykKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9OVU1FUklDX0lEUykKICAgICBwdWJsaWMgdm9pZCBzaG91bGRBZGRWZXJ0ZXhXaXRoVXNlclN1cHBsaWVkTnVtZXJpY0lkKCkgewogICAgICAgICBncmFwaC5hZGRWZXJ0ZXgoVC5pZCwgMTAwMGwpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvUmVtb3RlR3JhcGguamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL1JlbW90ZUdyYXBoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0MTE4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL1JlbW90ZUdyYXBoLmphdmEKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZTsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uUHJvcGVydGllc0NvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLkdyYXBoRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CisKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCisvKioKKyAqIHtAY29kZSBSZW1vdGVHcmFwaH0gaXMgb25seSByZXF1aXJlZCBmb3IgaW50ZWdyYXRpbmcgd2l0aCB0aGUgdGVzdCBzdWl0ZSBhcyB0aGVyZSBtdXN0IGJlIGEge0BsaW5rIEdyYXBofSBpbnN0YW5jZQorICogZm9yIHRoZSB0ZXN0IHN1aXRlIHRvIGJpbmQgdG8uIFRlc3Qgc3VpdGVzIHRoYXQgdXNlIHRoaXMgbXVzdCBlbnN1cmUgdGhhdCB0aGUge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gYmUKKyAqIGdlbmVyYXRlZCBmcm9tIHRoZWlyIHtAbGluayBHcmFwaFByb3ZpZGVyfSBpbiB2aWEge0BsaW5rIEFub255bW91c1RyYXZlcnNhbFNvdXJjZSN3aXRoUmVtb3RlKFJlbW90ZUNvbm5lY3Rpb24pfSBvcgorICogc2ltaWxhciBvdmVybG9hZC4gU2VlIHtAY29kZSBSZW1vdGVHcmFwaFByb3ZpZGVyfSBpbiB0aGUgZ3JlbWxpbi1zZXJ2ZXIgbW9kdWxlIGZvciBhbiBleGFtcGxlLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworQEdyYXBoLk9wdEluKEdyYXBoLk9wdEluLlNVSVRFX1BST0NFU1NfU1RBTkRBUkQpCitAR3JhcGguT3B0SW4oR3JhcGguT3B0SW4uU1VJVEVfUFJPQ0VTU19DT01QVVRFUikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TaG9ydGVzdFBhdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk3NiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQ29ubmVjdGVkQ29tcG9uZW50VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gImh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5NzYiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkNvcmVUcmF2ZXJzYWxUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiVGhlIHRlc3Qgc3VpdGUgZG9lcyBub3Qgc3VwcG9ydCBwcm9maWxpbmcgb3IgbGFtYmRhcyBhbmQgZm9yIGdyb292eSB0ZXN0czogJ0NvdWxkIG5vdCBsb2NhdGUgbWV0aG9kOiBHcmFwaFRyYXZlcnNhbFNvdXJjZS53aXRoU3RyYXRlZ2llcyhbe3RyYXZlcnNhbENhdGVnb3J5PWludGVyZmFjZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5JERlY29yYXRpb25TdHJhdGVneX1dKSciKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2dyYW1UZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggcmV0cmlldmVzIGRldGFjaGVkIHZlcnRpY2VzIHRoYXQgY2FuJ3QgYmUgYXR0YWNoZWQgdG8gYSByZW1vdGUgT0xBUCBncmFwaCIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FbGVtZW50SWRTdHJhdGVneVByb2Nlc3NUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBFbGVtZW50SWRTdHJhdGVneSBhdCB0aGlzIHRpbWUgLSBpdCByZXF1aXJlcyBhIGxhbWJkYSBpbiBjb25zdHJ1Y3Rpb24gd2hpY2ggaXMgbm90IHNlcmlhbGl6YWJsZSIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FdmVudFN0cmF0ZWd5UHJvY2Vzc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IEV2ZW50U3RyYXRlZ3kgYXQgdGhpcyB0aW1lIC0gc29tZSBvZiBpdHMgbWVtYmVycyBhcmUgbm90IHNlcmlhbGl6YWJsZSIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5QYXJ0aXRpb25TdHJhdGVneVByb2Nlc3NUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBQYXJ0aXRpb25TdHJhdGVneSBhdCB0aGlzIHRpbWUiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIucmFua2luZy5wYWdlcmFuay5QYWdlUmFua1ZlcnRleFByb2dyYW1UZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aC5TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuYnVsa2xvYWRpbmcuQnVsa0xvYWRlclZlcnRleFByb2dyYW1UZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5idWxrZHVtcGluZy5CdWxrRHVtcGVyVmVydGV4UHJvZ3JhbVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IGRpcmVjdCBHcmFwaC5jb21wdXRlKCkgYWNjZXNzIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsb25lLkNsb25lVmVydGV4UHJvZ3JhbVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IGRpcmVjdCBHcmFwaC5jb21wdXRlKCkgYWNjZXNzIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXJUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsSW50ZXJydXB0aW9uVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbnRlcnJ1cHRpb24gbW9kZWwgaW4gdGhlIHRlc3QgY2FuJ3QgZ3VhcmFudGVlIGludGVycnVwdGlvbiBhdCB0aGUgcmlnaHQgdGltZSB3aXRoIFJlbW90ZUdyYXBoLiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsSW50ZXJydXB0aW9uQ29tcHV0ZXJUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiVGhlIGludGVycnVwdGlvbiBtb2RlbCBpbiB0aGUgdGVzdCBjYW4ndCBndWFyYW50ZWUgaW50ZXJydXB0aW9uIGF0IHRoZSByaWdodCB0aW1lIHdpdGggUmVtb3RlR3JhcGguIikKK3B1YmxpYyBjbGFzcyBSZW1vdGVHcmFwaCBpbXBsZW1lbnRzIEdyYXBoIHsKKworICAgIHByaXZhdGUgZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uOworICAgIHByaXZhdGUgZmluYWwgQ29uZmlndXJhdGlvbiBjb25mOworCisgICAgcHJpdmF0ZSBSZW1vdGVHcmFwaChmaW5hbCBSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb24sIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZikgeworICAgICAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgICAgICB0aGlzLmNvbmYgPSBjb25mOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJlbW90ZUdyYXBofSBpbnN0YW5jZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGFsbG93cyB7QGxpbmsgUmVtb3RlR3JhcGh9CisgICAgICogdG8gYmUgY29tcGxpYW50IHdpdGgge0BsaW5rIEdyYXBoRmFjdG9yeX0uIEV4cGVjdHMga2V5IGZvciB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbiNHUkVNTElOX1JFTU9URV9DT05ORUNUSU9OX0NMQVNTfQorICAgICAqIGFzIHdlbGwgYXMgYW55IGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgYnkgdGhlIHVuZGVybHlpbmcge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IHdoaWNoIHdpbGwgYmUgaW5zdGFudGlhdGVkLgorICAgICAqIE5vdGUgdGhhdCB0aGUge0Bjb2RlIENvbmZpZ3VyYXRpb259IG9iamVjdCBpcyBwYXNzZWQgZG93biB3aXRob3V0IGNoYW5nZSB0byB0aGUgY3JlYXRpb24gb2YgdGhlCisgICAgICoge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IGluc3RhbmNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgUmVtb3RlR3JhcGggb3BlbihmaW5hbCBDb25maWd1cmF0aW9uIGNvbmYpIHsKKyAgICAgICAgaWYgKCFjb25mLmNvbnRhaW5zS2V5KFJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUykpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb25maWd1cmF0aW9uIG11c3QgY29udGFpbiB0aGUgJyIgKyBSZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MgKyAiJyBrZXkiKTsKKworICAgICAgICBmaW5hbCBSZW1vdGVDb25uZWN0aW9uIHJlbW90ZUNvbm5lY3Rpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgUmVtb3RlQ29ubmVjdGlvbj4gY2xhenogPSBDbGFzcy5mb3JOYW1lKGNvbmYuZ2V0U3RyaW5nKFJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUykpLmFzU3ViY2xhc3MoUmVtb3RlQ29ubmVjdGlvbi5jbGFzcyk7CisgICAgICAgICAgICBmaW5hbCBDb25zdHJ1Y3Rvcjw/IGV4dGVuZHMgUmVtb3RlQ29ubmVjdGlvbj4gY3RvciA9IGNsYXp6LmdldENvbnN0cnVjdG9yKENvbmZpZ3VyYXRpb24uY2xhc3MpOworICAgICAgICAgICAgcmVtb3RlQ29ubmVjdGlvbiA9IGN0b3IubmV3SW5zdGFuY2UoY29uZik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFJlbW90ZUdyYXBoKHJlbW90ZUNvbm5lY3Rpb24sIGNvbmYpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgUmVtb3RlR3JhcGggb3BlbihmaW5hbCBTdHJpbmcgY29uZmlnRmlsZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBvcGVuKG5ldyBQcm9wZXJ0aWVzQ29uZmlndXJhdGlvbihjb25maWdGaWxlKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUmVtb3RlR3JhcGh9IGluc3RhbmNlLiB7QGxpbmsgUmVtb3RlR3JhcGh9IHdpbGwgYXR0ZW1wdCB0byBjYWxsIHRoZQorICAgICAqIHtAbGluayBSZW1vdGVDb25uZWN0aW9uI2Nsb3NlKCl9IG1ldGhvZCB3aGVuIHRoZSB7QGxpbmsgI2Nsb3NlKCl9IG1ldGhvZCBpcyBjYWxsZWQgb24gdGhpcyBjbGFzcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb25uZWN0aW9uIHRoZSB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0gaW5zdGFuY2UgdG8gdXNlCisgICAgICogICAgICAgICAgICAgICAgICAge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBSZW1vdGVHcmFwaCBvcGVuKGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbiwgZmluYWwgQ29uZmlndXJhdGlvbiBjb25mKSB7CisgICAgICAgIHJldHVybiBuZXcgUmVtb3RlR3JhcGgoY29ubmVjdGlvbiwgY29uZik7CisgICAgfQorCisgICAgcHVibGljIFJlbW90ZUNvbm5lY3Rpb24gZ2V0Q29ubmVjdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb247CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufS4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFZlcnRleCBhZGRWZXJ0ZXgoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxDIGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gQyBjb21wdXRlKGZpbmFsIENsYXNzPEM+IGdyYXBoQ29tcHV0ZXJDbGFzcykgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJSZW1vdGVHcmFwaCBpcyBhIHByb3h5IHRvICVzIC0gdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIsIGNvbm5lY3Rpb24pKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGhDb21wdXRlciBjb21wdXRlKCkgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJSZW1vdGVHcmFwaCBpcyBhIHByb3h5IHRvICVzIC0gdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIsIGNvbm5lY3Rpb24pKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHtAbGluayBJdGVyYXRvcn0gLSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LgorICAgICAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBJdGVyYXRvcjxWZXJ0ZXg+IHZlcnRpY2VzKGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhJZHMpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5SXRlcmF0b3IoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHtAbGluayBJdGVyYXRvcn0gLSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LgorICAgICAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBJdGVyYXRvcjxFZGdlPiBlZGdlcyhmaW5hbCBPYmplY3QuLi4gZWRnZUlkcykgeworICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlJdGVyYXRvcigpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBUcmFuc2FjdGlvbiB0eCgpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlJlbW90ZUdyYXBoIGlzIGEgcHJveHkgdG8gJXMgLSB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIiwgY29ubmVjdGlvbikpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBWYXJpYWJsZXMgdmFyaWFibGVzKCkgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGNvbmY7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEZlYXR1cmVzIGZlYXR1cmVzKCkgeworICAgICAgICByZXR1cm4gUmVtb3RlRmVhdHVyZXMuSU5TVEFOQ0U7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkuZ3JhcGhTdHJpbmcodGhpcywgY29ubmVjdGlvbi50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlbW90ZUZlYXR1cmVzIGltcGxlbWVudHMgRmVhdHVyZXMgeworICAgICAgICBzdGF0aWMgUmVtb3RlRmVhdHVyZXMgSU5TVEFOQ0UgPSBuZXcgUmVtb3RlRmVhdHVyZXMoKTsKKworICAgICAgICBwcml2YXRlIFJlbW90ZUZlYXR1cmVzKCkgeworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBHcmFwaEZlYXR1cmVzIGdyYXBoKCkgeworICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoRmVhdHVyZXMuSU5TVEFOQ0U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlbW90ZUdyYXBoRmVhdHVyZXMgaW1wbGVtZW50cyBGZWF0dXJlcy5HcmFwaEZlYXR1cmVzIHsKKworICAgICAgICBzdGF0aWMgUmVtb3RlR3JhcGhGZWF0dXJlcyBJTlNUQU5DRSA9IG5ldyBSZW1vdGVHcmFwaEZlYXR1cmVzKCk7CisKKyAgICAgICAgcHJpdmF0ZSBSZW1vdGVHcmFwaEZlYXR1cmVzKCkgeworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzVHJhbnNhY3Rpb25zKCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzVGhyZWFkZWRUcmFuc2FjdGlvbnMoKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9WZXJ0ZXhUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9WZXJ0ZXhUZXN0LmphdmEKaW5kZXggMGM3NjNjYi4uYTBlM2Y3YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvVmVydGV4VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL1ZlcnRleFRlc3QuamF2YQpAQCAtNjYsMTAgKzY2LDEwIEBACiAgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfTlVNRVJJQ19JRFMpCiAgICAgICAgIHB1YmxpYyB2b2lkIHNob3VsZEFkZEVkZ2VXaXRoVXNlclN1cHBsaWVkTnVtZXJpY0lkKCkgewogICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBncmFwaC5hZGRWZXJ0ZXgoKTsKLSAgICAgICAgICAgIHYuYWRkRWRnZSgic2VsZiIsIHYsIFQuaWQsIDEwMDBsKTsKKyAgICAgICAgICAgIHYuYWRkRWRnZSgic2VsZiIsIHYsIFQuaWQsIDEwMDBMKTsKICAgICAgICAgICAgIHRyeUNvbW1pdChncmFwaCwgZ3JhcGggLT4gewotICAgICAgICAgICAgICAgIGZpbmFsIEVkZ2UgZSA9IGdyYXBoLmVkZ2VzKDEwMDBsKS5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEwMDBsLCBlLmlkKCkpOworICAgICAgICAgICAgICAgIGZpbmFsIEVkZ2UgZSA9IGdyYXBoLmVkZ2VzKDEwMDBMKS5uZXh0KCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEwMDBMLCBlLmlkKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIApAQCAtMjYxLDE4ICsyNjEsNDMgQEAKICAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9BRERfRURHRVMpCiAgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9WRVJUSUNFUykKICAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9VU0VSX1NVUFBMSUVEX0lEUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9VUFNFUlQsIHN1cHBvcnRlZCA9IGZhbHNlKQogICAgICAgICBwdWJsaWMgdm9pZCBzaG91bGRIYXZlRXhjZXB0aW9uQ29uc2lzdGVuY3lXaGVuQXNzaWduaW5nU2FtZUlkT25FZGdlKCkgewogICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBncmFwaC5hZGRWZXJ0ZXgoKTsKICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBvID0gZ3JhcGhQcm92aWRlci5jb252ZXJ0SWQoIjEiLCBFZGdlLmNsYXNzKTsKLSAgICAgICAgICAgIHYuYWRkRWRnZSgic2VsZiIsIHYsIFQuaWQsIG8pOworICAgICAgICAgICAgdi5hZGRFZGdlKCJzZWxmIiwgdiwgVC5pZCwgbywgIndlaWdodCIsIDEpOwogCiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHYuYWRkRWRnZSgic2VsZiIsIHYsIFQuaWQsIG8pOworICAgICAgICAgICAgICAgIHYuYWRkRWRnZSgic2VsZiIsIHYsIFQuaWQsIG8sICJ3ZWlnaHQiLCAxKTsKICAgICAgICAgICAgICAgICBmYWlsKCJBc3NpZ25pbmcgdGhlIHNhbWUgSUQgdG8gYW4gRWxlbWVudCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIik7CiAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZUV4Y2VwdGlvbihHcmFwaC5FeGNlcHRpb25zLmVkZ2VXaXRoSWRBbHJlYWR5RXhpc3RzKG8pLCBleCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0KIAorICAgICAgICBAVGVzdAorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX0FERF9FREdFUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfQUREX1ZFUlRJQ0VTKQorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX1VTRVJfU1VQUExJRURfSURTKQorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX1VQU0VSVCkKKyAgICAgICAgcHVibGljIHZvaWQgc2hvdWxkVXBzZXJ0V2hlbkFzc2lnbmluZ1NhbWVJZE9uRWRnZSgpIHsKKyAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7CisgICAgICAgICAgICBmaW5hbCBPYmplY3QgbyA9IGdyYXBoUHJvdmlkZXIuY29udmVydElkKCIxIiwgRWRnZS5jbGFzcyk7CisgICAgICAgICAgICB2LmFkZEVkZ2UoInNlbGYiLCB2LCBULmlkLCBvLCAid2VpZ2h0IiwgMSk7CisgICAgICAgICAgICB0cnlDb21taXQoZ3JhcGgsIGdyYXBoIC0+IHsKKyAgICAgICAgICAgICAgICBmaW5hbCBFZGdlIGUgPSBncmFwaC5lZGdlcyhvKS5uZXh0KCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG8sIGUuaWQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIChpbnQpIGUudmFsdWUoIndlaWdodCIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRWZXJ0ZXhFZGdlQ291bnRzKGdyYXBoLCAxLCAxKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB2LmFkZEVkZ2UoInNlbGYiLCB2LCBULmlkLCBvLCAid2VpZ2h0IiwgMik7CisgICAgICAgICAgICB0cnlDb21taXQoZ3JhcGgsIGdyYXBoIC0+IHsKKyAgICAgICAgICAgICAgICBmaW5hbCBFZGdlIGUgPSBncmFwaC5lZGdlcyhvKS5uZXh0KCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG8sIGUuaWQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIChpbnQpIGUudmFsdWUoIndlaWdodCIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRWZXJ0ZXhFZGdlQ291bnRzKGdyYXBoLCAxLCAxKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAgICAgICAgQFRlc3QKQEAgLTQ3Miw5ICs0OTcsOSBAQAogICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IFZlcnRleFByb3BlcnR5RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBGRUFUVVJFX0xPTkdfVkFMVUVTKQogICAgICAgICBwdWJsaWMgdm9pZCBzaG91bGRBdXRvdHlwZUxvbmdQcm9wZXJ0aWVzKCkgewogICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBncmFwaC5hZGRWZXJ0ZXgoKTsKLSAgICAgICAgICAgIHYucHJvcGVydHkoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuc2luZ2xlLCAibG9uZyIsIDFsKTsKKyAgICAgICAgICAgIHYucHJvcGVydHkoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuc2luZ2xlLCAibG9uZyIsIDFMKTsKICAgICAgICAgICAgIGZpbmFsIExvbmcgYmVzdCA9IHYudmFsdWUoImxvbmciKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhiZXN0LCBMb25nLnZhbHVlT2YoMWwpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhiZXN0LCBMb25nLnZhbHVlT2YoMUwpKTsKICAgICAgICAgfQogCiAgICAgICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb1Rlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvVGVzdC5qYXZhCmluZGV4IGIwZDFjOTYuLmY0YjIzZjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvVGVzdC5qYXZhCkBAIC0xMDksNyArMTA5LDg4IEBACiBwdWJsaWMgY2xhc3MgSW9UZXN0IHsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoSW9UZXN0LmNsYXNzKTsKIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDTEFTU0lDX0dSQVBIX1dJVEhfQ09MT1IgPSAiPD94bWwgdmVyc2lvbj1cIjEuMFwiID8+XG4iICsKKyAgICAgICAgICAgICI8Z3JhcGhtbCB4bWxucz1cImh0dHA6Ly9ncmFwaG1sLmdyYXBoZHJhd2luZy5vcmcveG1sbnNcIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIHhzaTpzY2hlbWFMb2NhdGlvbj1cImh0dHA6Ly9ncmFwaG1sLmdyYXBoZHJhd2luZy5vcmcveG1sbnMgaHR0cDovL2dyYXBobWwuZ3JhcGhkcmF3aW5nLm9yZy94bWxucy8xLjEvZ3JhcGhtbC54c2RcIj5cbiIgKworICAgICAgICAgICAgIiAgICA8a2V5IGlkPVwiYWdlXCIgZm9yPVwibm9kZVwiIGF0dHIubmFtZT1cImFnZVwiIGF0dHIudHlwZT1cImludFwiPjwva2V5PlxuIiArCisgICAgICAgICAgICAiICAgIDxrZXkgaWQ9XCJjb2xvclZcIiBmb3I9XCJub2RlXCIgYXR0ci5uYW1lPVwiY29sb3JcIiBhdHRyLnR5cGU9XCJzdHJpbmdcIj48L2tleT5cbiIgKworICAgICAgICAgICAgIiAgICA8a2V5IGlkPVwibGFiZWxWXCIgZm9yPVwibm9kZVwiIGF0dHIubmFtZT1cImxhYmVsVlwiIGF0dHIudHlwZT1cInN0cmluZ1wiPjwva2V5PlxuIiArCisgICAgICAgICAgICAiICAgIDxrZXkgaWQ9XCJsYW5nXCIgZm9yPVwibm9kZVwiIGF0dHIubmFtZT1cImxhbmdcIiBhdHRyLnR5cGU9XCJzdHJpbmdcIj48L2tleT5cbiIgKworICAgICAgICAgICAgIiAgICA8a2V5IGlkPVwibmFtZVwiIGZvcj1cIm5vZGVcIiBhdHRyLm5hbWU9XCJuYW1lXCIgYXR0ci50eXBlPVwic3RyaW5nXCI+PC9rZXk+XG4iICsKKyAgICAgICAgICAgICIgICAgPGtleSBpZD1cImNvbG9yRVwiIGZvcj1cImVkZ2VcIiBhdHRyLm5hbWU9XCJjb2xvclwiIGF0dHIudHlwZT1cInN0cmluZ1wiPjwva2V5PlxuIiArCisgICAgICAgICAgICAiICAgIDxrZXkgaWQ9XCJsYWJlbEVcIiBmb3I9XCJlZGdlXCIgYXR0ci5uYW1lPVwibGFiZWxFXCIgYXR0ci50eXBlPVwic3RyaW5nXCI+PC9rZXk+XG4iICsKKyAgICAgICAgICAgICIgICAgPGtleSBpZD1cIndlaWdodFwiIGZvcj1cImVkZ2VcIiBhdHRyLm5hbWU9XCJ3ZWlnaHRcIiBhdHRyLnR5cGU9XCJmbG9hdFwiPjwva2V5PlxuIiArCisgICAgICAgICAgICAiICAgIDxncmFwaCBpZD1cIkdcIiBlZGdlZGVmYXVsdD1cImRpcmVjdGVkXCI+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxub2RlIGlkPVwiMVwiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxWXCI+dmVydGV4PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiYWdlXCI+Mjk8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvclZcIj4jNjQ5NWVkPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibmFtZVwiPm1hcmtvPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L25vZGU+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxub2RlIGlkPVwiMlwiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxWXCI+dmVydGV4PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiYWdlXCI+Mjc8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvclZcIj4jNjQ5NWVkPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibmFtZVwiPnZhZGFzPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L25vZGU+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxub2RlIGlkPVwiM1wiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxWXCI+dmVydGV4PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFuZ1wiPmphdmE8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvclZcIj4jNjQ5NWVkPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibmFtZVwiPmxvcDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9ub2RlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8bm9kZSBpZD1cIjRcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsVlwiPnZlcnRleDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImFnZVwiPjMyPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JWXCI+IzY0OTVlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIm5hbWVcIj5qb3NoPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L25vZGU+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxub2RlIGlkPVwiNVwiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxWXCI+dmVydGV4PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFuZ1wiPmphdmE8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvclZcIj4jNjQ5NWVkPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibmFtZVwiPnJpcHBsZTwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9ub2RlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8bm9kZSBpZD1cIjZcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsVlwiPnZlcnRleDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImFnZVwiPjM1PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JWXCI+IzY0OTVlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIm5hbWVcIj5wZXRlcjwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9ub2RlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8ZWRnZSBpZD1cIjEwXCIgc291cmNlPVwiNFwiIHRhcmdldD1cIjVcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsRVwiPmNyZWF0ZWQ8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvckVcIj4jZWUwMDAwPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwid2VpZ2h0XCI+MS4wPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L2VkZ2U+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxlZGdlIGlkPVwiMTFcIiBzb3VyY2U9XCI0XCIgdGFyZ2V0PVwiM1wiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxFXCI+Y3JlYXRlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImNvbG9yRVwiPiNlZTAwMDA8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJ3ZWlnaHRcIj4wLjQ8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDwvZWRnZT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPGVkZ2UgaWQ9XCIxMlwiIHNvdXJjZT1cIjZcIiB0YXJnZXQ9XCIzXCI+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJsYWJlbEVcIj5jcmVhdGVkPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JFXCI+I2VlMDAwMDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIndlaWdodFwiPjAuMjwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9lZGdlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8ZWRnZSBpZD1cIjdcIiBzb3VyY2U9XCIxXCIgdGFyZ2V0PVwiMlwiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxFXCI+a25vd3M8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvckVcIj4jZWUwMDAwPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwid2VpZ2h0XCI+MC41PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L2VkZ2U+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxlZGdlIGlkPVwiOFwiIHNvdXJjZT1cIjFcIiB0YXJnZXQ9XCI0XCI+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJsYWJlbEVcIj5rbm93czwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImNvbG9yRVwiPiNlZTAwMDA8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJ3ZWlnaHRcIj4xLjA8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDwvZWRnZT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPGVkZ2UgaWQ9XCI5XCIgc291cmNlPVwiMVwiIHRhcmdldD1cIjNcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsRVwiPmNyZWF0ZWQ8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvckVcIj4jZWUwMDAwPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwid2VpZ2h0XCI+MC40PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L2VkZ2U+XG4iICsKKyAgICAgICAgICAgICIgICAgPC9ncmFwaD5cbiIgKworICAgICAgICAgICAgIjwvZ3JhcGhtbD4iOworCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBHcmFwaE1MVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblRlc3QgeworCiAgICAgICAgIEBUZXN0CiAgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfQUREX0VER0VTKQogICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9BRERfVkVSVElDRVMpCkBAIC0yMDcsNiArMjg4LDM5IEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgSXRlcmF0b3JVdGlscy5jb3VudChncmFwaC52ZXJ0aWNlcygpKSk7CiAgICAgICAgIH0KIAorICAgICAgICBAVGVzdAorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX0FERF9FREdFUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9SRU1PVkVfRURHRVMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9WRVJUSUNFUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfUkVNT1ZFX1ZFUlRJQ0VTKQorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IFZlcnRleFByb3BlcnR5RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBGRUFUVVJFX1NUUklOR19WQUxVRVMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gVmVydGV4UHJvcGVydHlGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEZFQVRVUkVfSU5URUdFUl9WQUxVRVMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gRWRnZVByb3BlcnR5RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBFZGdlUHJvcGVydHlGZWF0dXJlcy5GRUFUVVJFX0ZMT0FUX1ZBTFVFUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBFZGdlUHJvcGVydHlGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEVkZ2VQcm9wZXJ0eUZlYXR1cmVzLkZFQVRVUkVfU1RSSU5HX1ZBTFVFUykKKyAgICAgICAgcHVibGljIHZvaWQgc2hvdWxkUmVhZEdyYXBoTUxXaXRoQ29tbW9uVmVydGV4QW5kRWRnZVByb3BlcnR5TmFtZXMoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgZmluYWwgR3JhcGhSZWFkZXIgcmVhZGVyID0gR3JhcGhNTFJlYWRlci5idWlsZCgpLmNyZWF0ZSgpOworICAgICAgICAgICAgdHJ5IChmaW5hbCBJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oQ0xBU1NJQ19HUkFQSF9XSVRIX0NPTE9SLmdldEJ5dGVzKCJVVEYtOCIpKSkgeworICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkR3JhcGgoc3RyZWFtLCBncmFwaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRoZXJlIGlzIGFsc28gYSAiY29sb3IiIHByb3BlcnR5IG9uIHRoaXMgZGF0YXNldCB0aGF0IGlzIG9uIGJvdGggZWRnZXMgYW5kIHZlcnRpY2VzCisgICAgICAgICAgICBncmFwaC52ZXJ0aWNlcygpLmZvckVhY2hSZW1haW5pbmcodiAtPiBhc3NlcnRFcXVhbHMoIiM2NDk1ZWQiLCB2LnZhbHVlKCJjb2xvciIpKSk7CisgICAgICAgICAgICBncmFwaC5lZGdlcygpLmZvckVhY2hSZW1haW5pbmcoZSAtPiBhc3NlcnRFcXVhbHMoIiNlZTAwMDAiLCBlLnZhbHVlKCJjb2xvciIpKSk7CisKKyAgICAgICAgICAgIGZpbmFsIEdyYXBoV3JpdGVyIHdyaXRlciA9IEdyYXBoTUxXcml0ZXIuYnVpbGQoKS5jcmVhdGUoKTsKKyAgICAgICAgICAgIHRyeSAoZmluYWwgT3V0cHV0U3RyZWFtIG91dCA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKSkgeworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUdyYXBoKG91dCwgZ3JhcGgpOworCisgICAgICAgICAgICAgICAgZ3JhcGgudmVydGljZXMoKS5mb3JFYWNoUmVtYWluaW5nKEVsZW1lbnQ6OnJlbW92ZSk7CisgICAgICAgICAgICAgICAgdHJ5IChmaW5hbCBJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oKChCeXRlQXJyYXlPdXRwdXRTdHJlYW0pIG91dCkudG9CeXRlQXJyYXkoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRHcmFwaChzdHJlYW0sIGdyYXBoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBhbHNvIGEgImNvbG9yIiBwcm9wZXJ0eSBvbiB0aGlzIGRhdGFzZXQgdGhhdCBpcyBvbiBib3RoIGVkZ2VzIGFuZCB2ZXJ0aWNlcworICAgICAgICAgICAgICAgIGdyYXBoLnZlcnRpY2VzKCkuZm9yRWFjaFJlbWFpbmluZyh2IC0+IGFzc2VydEVxdWFscygiIzY0OTVlZCIsIHYudmFsdWUoImNvbG9yIikpKTsKKyAgICAgICAgICAgICAgICBncmFwaC5lZGdlcygpLmZvckVhY2hSZW1haW5pbmcoZSAtPiBhc3NlcnRFcXVhbHMoIiNlZTAwMDAiLCBlLnZhbHVlKCJjb2xvciIpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBAVGVzdChleHBlY3RlZCA9IE51bWJlckZvcm1hdEV4Y2VwdGlvbi5jbGFzcykKICAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9BRERfRURHRVMpCkBAIC0yNDEsNyArMzU1LDYgQEAKICAgICAgICAgICAgIHRyeSAoQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKSkgewogICAgICAgICAgICAgICAgIGZpbmFsIEdyYXBoTUxXcml0ZXIgdyA9IEdyYXBoTUxXcml0ZXIuYnVpbGQoKS5ub3JtYWxpemUodHJ1ZSkuY3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgdy53cml0ZUdyYXBoKGJvcywgZ3JhcGgpOwotCiAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGV4cGVjdGVkID0gc3RyZWFtVG9TdHJpbmcoZ2V0UmVzb3VyY2VBc1N0cmVhbShHcmFwaE1MUmVzb3VyY2VBY2Nlc3MuY2xhc3MsICJ0aW5rZXJwb3AtY2xhc3NpYy1ub3JtYWxpemVkLnhtbCIpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQucmVwbGFjZSgiXG4iLCAiIikucmVwbGFjZSgiXHIiLCAiIiksIGJvcy50b1N0cmluZygpLnJlcGxhY2UoIlxuIiwgIiIpLnJlcGxhY2UoIlxyIiwgIiIpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95SW9SZWdpc3RyeS5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lJb1JlZ2lzdHJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM5YTgzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95SW9SZWdpc3RyeS5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5bzsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkFic3RyYWN0SW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTklvOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLlRpbmtlclBvcEphY2tzb25Nb2R1bGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisvKioKKyAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVG95SW9SZWdpc3RyeSBleHRlbmRzIEFic3RyYWN0SW9SZWdpc3RyeSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBUb3lJb1JlZ2lzdHJ5IElOU1RBTkNFID0gbmV3IFRveUlvUmVnaXN0cnkoKTsKKworICAgIHByaXZhdGUgVG95SW9SZWdpc3RyeSgpIHsKKyAgICAgICAgc3VwZXIucmVnaXN0ZXIoR3J5b0lvLmNsYXNzLCBUb3lQb2ludC5jbGFzcywgbmV3IFRveVBvaW50LlRveVBvaW50U2VyaWFsaXplcigpKTsKKyAgICAgICAgc3VwZXIucmVnaXN0ZXIoR3J5b0lvLmNsYXNzLCBUb3lUcmlhbmdsZS5jbGFzcywgbmV3IFRveVRyaWFuZ2xlLlRveVRyaWFuZ2xlU2VyaWFsaXplcigpKTsKKyAgICAgICAgc3VwZXIucmVnaXN0ZXIoR3JhcGhTT05Jby5jbGFzcywgbnVsbCwgbmV3IFRveU1vZHVsZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveU1vZHVsZSBleHRlbmRzIFRpbmtlclBvcEphY2tzb25Nb2R1bGUgeworICAgICAgICBwdWJsaWMgVG95TW9kdWxlKCkgeworICAgICAgICAgICAgc3VwZXIoInRveSIpOworICAgICAgICAgICAgYWRkU2VyaWFsaXplcihUb3lQb2ludC5jbGFzcywgbmV3IFRveVBvaW50LlRveVBvaW50SmFja3NvblNlcmlhbGl6ZXIoKSk7CisgICAgICAgICAgICBhZGREZXNlcmlhbGl6ZXIoVG95UG9pbnQuY2xhc3MsIG5ldyBUb3lQb2ludC5Ub3lQb2ludEphY2tzb25EZVNlcmlhbGl6ZXIoKSk7CisgICAgICAgICAgICBhZGRTZXJpYWxpemVyKFRveVRyaWFuZ2xlLmNsYXNzLCBuZXcgVG95VHJpYW5nbGUuVG95VHJpYW5nbGVKYWNrc29uU2VyaWFsaXplcigpKTsKKyAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihUb3lUcmlhbmdsZS5jbGFzcywgbmV3IFRveVRyaWFuZ2xlLlRveVRyaWFuZ2xlSmFja3NvbkRlU2VyaWFsaXplcigpKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBNYXA8Q2xhc3MsIFN0cmluZz4gZ2V0VHlwZURlZmluaXRpb25zKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBIYXNoTWFwPENsYXNzLCBTdHJpbmc+KCkge3sKKyAgICAgICAgICAgICAgICBwdXQoVG95UG9pbnQuY2xhc3MsICJUb3lQb2ludCIpOworICAgICAgICAgICAgICAgIHB1dChUb3lUcmlhbmdsZS5jbGFzcywgIlRveVRyaWFuZ2xlIik7CisgICAgICAgICAgICB9fTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGVOYW1lc3BhY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gInRveSI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFRveUlvUmVnaXN0cnkgaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lQb2ludC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lQb2ludC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYWIwNzMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL1RveVBvaW50LmphdmEKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5bzsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkFic3RyYWN0T2JqZWN0RGVzZXJpYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8ua3J5b3NoaW0uSW5wdXRTaGltOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8ua3J5b3NoaW0uS3J5b1NoaW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5PdXRwdXRTaGltOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8ua3J5b3NoaW0uU2VyaWFsaXplclNoaW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5jb3JlLkpzb25HZW5lcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuU2VyaWFsaXplclByb3ZpZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLnNlci5zdGQuU3RkU2NhbGFyU2VyaWFsaXplcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworLyoqCisgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFRveVBvaW50IHsKKworICAgIHByaXZhdGUgZmluYWwgaW50IHg7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgeTsKKworICAgIHB1YmxpYyBUb3lQb2ludChmaW5hbCBpbnQgeCwgZmluYWwgaW50IHkpIHsKKyAgICAgICAgdGhpcy54ID0geDsKKyAgICAgICAgdGhpcy55ID0geTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFgoKSB7CisgICAgICAgIHJldHVybiB0aGlzLng7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRZKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnggKyB0aGlzLnk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBUb3lQb2ludCAmJiAoKFRveVBvaW50KSBvdGhlcikueCA9PSB0aGlzLnggJiYgKChUb3lQb2ludCkgb3RoZXIpLnkgPT0gdGhpcy55OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAiWyIgKyB0aGlzLnggKyAiLCIgKyB0aGlzLnkgKyAiXSI7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lQb2ludFNlcmlhbGl6ZXIgaW1wbGVtZW50cyBTZXJpYWxpemVyU2hpbTxUb3lQb2ludD4geworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIDxPIGV4dGVuZHMgT3V0cHV0U2hpbT4gdm9pZCB3cml0ZShmaW5hbCBLcnlvU2hpbTw/LCBPPiBrcnlvLCBmaW5hbCBPIG91dHB1dCwgZmluYWwgVG95UG9pbnQgdG95UG9pbnQpIHsKKyAgICAgICAgICAgIG91dHB1dC53cml0ZUludCh0b3lQb2ludC54KTsKKyAgICAgICAgICAgIG91dHB1dC53cml0ZUludCh0b3lQb2ludC55KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgPEkgZXh0ZW5kcyBJbnB1dFNoaW0+IFRveVBvaW50IHJlYWQoZmluYWwgS3J5b1NoaW08SSwgPz4ga3J5bywgZmluYWwgSSBpbnB1dCwgZmluYWwgQ2xhc3M8VG95UG9pbnQ+IHRveVBvaW50Q2xhc3MpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVG95UG9pbnQoaW5wdXQucmVhZEludCgpLCBpbnB1dC5yZWFkSW50KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lQb2ludEphY2tzb25TZXJpYWxpemVyIGV4dGVuZHMgU3RkU2NhbGFyU2VyaWFsaXplcjxUb3lQb2ludD4geworCisgICAgICAgIHB1YmxpYyBUb3lQb2ludEphY2tzb25TZXJpYWxpemVyKCkgeworICAgICAgICAgICAgc3VwZXIoVG95UG9pbnQuY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHNlcmlhbGl6ZShmaW5hbCBUb3lQb2ludCB0b3lQb2ludCwgZmluYWwgSnNvbkdlbmVyYXRvciBqc29uR2VuZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU2VyaWFsaXplclByb3ZpZGVyIHNlcmlhbGl6ZXJQcm92aWRlcikgdGhyb3dzIElPRXhjZXB0aW9uLCBKc29uR2VuZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlU3RhcnRPYmplY3QoKTsKKyAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVPYmplY3RGaWVsZCgieCIsIHRveVBvaW50LngpOworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdEZpZWxkKCJ5IiwgdG95UG9pbnQueSk7CisgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlRW5kT2JqZWN0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveVBvaW50SmFja3NvbkRlU2VyaWFsaXplciBleHRlbmRzIEFic3RyYWN0T2JqZWN0RGVzZXJpYWxpemVyPFRveVBvaW50PiB7CisKKyAgICAgICAgcHVibGljIFRveVBvaW50SmFja3NvbkRlU2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKFRveVBvaW50LmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVG95UG9pbnQgY3JlYXRlT2JqZWN0KGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gbWFwKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRveVBvaW50KChpbnQpIG1hcC5nZXQoIngiKSwgKGludCkgbWFwLmdldCgieSIpKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95VHJpYW5nbGUuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95VHJpYW5nbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTRhZTcwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lUcmlhbmdsZS5qYXZhCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqICB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW87CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5BYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLklucHV0U2hpbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLktyeW9TaGltOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8ua3J5b3NoaW0uT3V0cHV0U2hpbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLlNlcmlhbGl6ZXJTaGltOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLlNlcmlhbGl6ZXJQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5zZXIuc3RkLlN0ZFNjYWxhclNlcmlhbGl6ZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8qKgorICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUb3lUcmlhbmdsZSB7CisKKyAgICBwcml2YXRlIGZpbmFsIGludCB4OworICAgIHByaXZhdGUgZmluYWwgaW50IHk7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgejsKKworICAgIHB1YmxpYyBUb3lUcmlhbmdsZShmaW5hbCBpbnQgeCwgZmluYWwgaW50IHksIGZpbmFsIGludCB6KSB7CisgICAgICAgIHRoaXMueCA9IHg7CisgICAgICAgIHRoaXMueSA9IHk7CisgICAgICAgIHRoaXMueiA9IHo7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRYKCkgeworICAgICAgICByZXR1cm4gdGhpcy54OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0WSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFooKSB7CisgICAgICAgIHJldHVybiB0aGlzLno7CisgICAgfQorCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueCArIHRoaXMueSArIHRoaXMuejsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFRveVRyaWFuZ2xlICYmICgoVG95VHJpYW5nbGUpIG90aGVyKS54ID09IHRoaXMueCAmJiAoKFRveVRyaWFuZ2xlKSBvdGhlcikueSA9PSB0aGlzLnkgJiYgKChUb3lUcmlhbmdsZSkgb3RoZXIpLnogPT0gdGhpcy56OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAiWyIgKyB0aGlzLnggKyAiLCIgKyB0aGlzLnkgKyAiLCIgKyB0aGlzLnogKyAiXSI7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lUcmlhbmdsZVNlcmlhbGl6ZXIgaW1wbGVtZW50cyBTZXJpYWxpemVyU2hpbTxUb3lUcmlhbmdsZT4geworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIDxPIGV4dGVuZHMgT3V0cHV0U2hpbT4gdm9pZCB3cml0ZShmaW5hbCBLcnlvU2hpbTw/LCBPPiBrcnlvLCBmaW5hbCBPIG91dHB1dCwgZmluYWwgVG95VHJpYW5nbGUgdG95VHJpYW5nbGUpIHsKKyAgICAgICAgICAgIG91dHB1dC53cml0ZUludCh0b3lUcmlhbmdsZS54KTsKKyAgICAgICAgICAgIG91dHB1dC53cml0ZUludCh0b3lUcmlhbmdsZS55KTsKKyAgICAgICAgICAgIG91dHB1dC53cml0ZUludCh0b3lUcmlhbmdsZS56KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgPEkgZXh0ZW5kcyBJbnB1dFNoaW0+IFRveVRyaWFuZ2xlIHJlYWQoZmluYWwgS3J5b1NoaW08SSwgPz4ga3J5bywgZmluYWwgSSBpbnB1dCwgZmluYWwgQ2xhc3M8VG95VHJpYW5nbGU+IHRveVRyaWFuZ2xlQ2xhc3MpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVG95VHJpYW5nbGUoaW5wdXQucmVhZEludCgpLCBpbnB1dC5yZWFkSW50KCksIGlucHV0LnJlYWRJbnQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95VHJpYW5nbGVKYWNrc29uU2VyaWFsaXplciBleHRlbmRzIFN0ZFNjYWxhclNlcmlhbGl6ZXI8VG95VHJpYW5nbGU+IHsKKworICAgICAgICBwdWJsaWMgVG95VHJpYW5nbGVKYWNrc29uU2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKFRveVRyaWFuZ2xlLmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXJpYWxpemUoZmluYWwgVG95VHJpYW5nbGUgdG95VHJpYW5nbGUsIGZpbmFsIEpzb25HZW5lcmF0b3IganNvbkdlbmVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFNlcmlhbGl6ZXJQcm92aWRlciBzZXJpYWxpemVyUHJvdmlkZXIpIHRocm93cyBJT0V4Y2VwdGlvbiwgSnNvbkdlbmVyYXRpb25FeGNlcHRpb24geworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZVN0YXJ0T2JqZWN0KCk7CisgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0RmllbGQoIngiLCB0b3lUcmlhbmdsZS54KTsKKyAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVPYmplY3RGaWVsZCgieSIsIHRveVRyaWFuZ2xlLnkpOworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdEZpZWxkKCJ6IiwgdG95VHJpYW5nbGUueik7CisgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlRW5kT2JqZWN0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveVRyaWFuZ2xlSmFja3NvbkRlU2VyaWFsaXplciBleHRlbmRzIEFic3RyYWN0T2JqZWN0RGVzZXJpYWxpemVyPFRveVRyaWFuZ2xlPiB7CisKKyAgICAgICAgcHVibGljIFRveVRyaWFuZ2xlSmFja3NvbkRlU2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKFRveVRyaWFuZ2xlLmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVG95VHJpYW5nbGUgY3JlYXRlT2JqZWN0KGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gbWFwKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRveVRyaWFuZ2xlKChpbnQpIG1hcC5nZXQoIngiKSwgKGludCkgbWFwLmdldCgieSIpLCAoaW50KSBtYXAuZ2V0KCJ6IikpOworICAgICAgICB9CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby91dGlsL0N1c3RvbUlkLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby91dGlsL0N1c3RvbUlkLmphdmEKaW5kZXggZDUwM2FlOC4uMGFiM2I5MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vdXRpbC9DdXN0b21JZC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL3V0aWwvQ3VzdG9tSWQuamF2YQpAQCAtMTgsOSArMTgsMTQgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby51dGlsOwogCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQWJzdHJhY3RJb1JlZ2lzdHJ5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvUmVnaXN0cnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uQWJzdHJhY3RPYmplY3REZXNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05JbzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5UaW5rZXJQb3BKYWNrc29uTW9kdWxlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lvOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRpb25FeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvblBhcnNlcjsKQEAgLTMxLDExICszNiwxMyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLmpzb250eXBlLlR5cGVTZXJpYWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLnNlci5zdGQuU3RkU2NhbGFyU2VyaWFsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5zZXIuc3RkLlN0ZFNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmphdmF0dXBsZXMuUGFpcjsKIAogaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CiBpbXBvcnQgamF2YS51dGlsLlVVSUQ7CiAKQEAgLTY2LDYgKzczLDI0IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAobyA9PSBudWxsIHx8IGdldENsYXNzKCkgIT0gby5nZXRDbGFzcygpKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgQ3VzdG9tSWQgY3VzdG9tSWQgPSAoQ3VzdG9tSWQpIG87CisKKyAgICAgICAgaWYgKCFjbHVzdGVyLmVxdWFscyhjdXN0b21JZC5jbHVzdGVyKSkgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZWxlbWVudElkLmVxdWFscyhjdXN0b21JZC5lbGVtZW50SWQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSBjbHVzdGVyLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgZWxlbWVudElkLmhhc2hDb2RlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIGNsdXN0ZXIgKyAiOiIgKyBlbGVtZW50SWQ7CiAgICAgfQpAQCAtMjE5LDQgKzI0NCwxOCBAQAogICAgICAgICAgICAgcmV0dXJuICJzaW1wbGUiOwogICAgICAgICB9CiAgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDdXN0b21JZElvUmVnaXN0cnkgZXh0ZW5kcyBBYnN0cmFjdElvUmVnaXN0cnkgeworCisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEN1c3RvbUlkSW9SZWdpc3RyeSBJTlNUQU5DRSA9IG5ldyBDdXN0b21JZElvUmVnaXN0cnkoKTsKKworICAgICAgICBwcml2YXRlIEN1c3RvbUlkSW9SZWdpc3RyeSgpIHsKKyAgICAgICAgICAgIHJlZ2lzdGVyKEdyeW9Jby5jbGFzcywgQ3VzdG9tSWQuY2xhc3MsIG51bGwpOworICAgICAgICAgICAgcmVnaXN0ZXIoR3JhcGhTT05Jby5jbGFzcywgbnVsbCwgbmV3IEN1c3RvbUlkVGlua2VyUG9wSmFja3Nvbk1vZHVsZVYzZDAoKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIEN1c3RvbUlkSW9SZWdpc3RyeSBpbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICAgICAgfQorICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvZGV0YWNoZWQvRGV0YWNoZWRQcm9wZXJ0eVRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvZGV0YWNoZWQvRGV0YWNoZWRQcm9wZXJ0eVRlc3QuamF2YQppbmRleCA2YjE5MDM1Li5hNWEwMTFhIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2RldGFjaGVkL0RldGFjaGVkUHJvcGVydHlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9kZXRhY2hlZC9EZXRhY2hlZFByb3BlcnR5VGVzdC5qYXZhCkBAIC05NSw4ICs5NSwxNCBAQAogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCi0gICAgcHVibGljIHZvaWQgc2hvdWxkTm90QmVFcXVhbFByb3BlcnRpZXNBc1RoZXJlSXNEaWZmZXJlbnRJZCgpIHsKLSAgICAgICAgYXNzZXJ0RmFsc2UoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChnLkUoY29udmVydFRvRWRnZUlkKCJtYXJrbyIsICJjcmVhdGVkIiwgImxvcCIpKS5uZXh0KCkucHJvcGVydHkoIndlaWdodCIpKS5lcXVhbHMoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChnLkUoY29udmVydFRvRWRnZUlkKCJqb3NoIiwgImNyZWF0ZWQiLCAibG9wIikpLm5leHQoKS5wcm9wZXJ0eSgid2VpZ2h0IikpKSk7CisgICAgcHVibGljIHZvaWQgc2hvdWxkQmVFcXVhbFByb3BlcnRpZXNXaXRoU2FtZUtleVZhbHVlQW5kRGlmZmVyZW50RWxlbWVudCgpIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKGcuRShjb252ZXJ0VG9FZGdlSWQoIm1hcmtvIiwgImNyZWF0ZWQiLCAibG9wIikpLm5leHQoKS5wcm9wZXJ0eSgid2VpZ2h0IikpLmVxdWFscyhEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKGcuRShjb252ZXJ0VG9FZGdlSWQoImpvc2giLCAiY3JlYXRlZCIsICJsb3AiKSkubmV4dCgpLnByb3BlcnR5KCJ3ZWlnaHQiKSkpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGROb3RCZUVxdWFsUHJvcGVydGllc0FzVGhlcmVJc0RpZmZlcmVudFZhbHVlKCkgeworICAgICAgICBhc3NlcnRGYWxzZShEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKGcuRShjb252ZXJ0VG9FZGdlSWQoIm1hcmtvIiwgImNyZWF0ZWQiLCAibG9wIikpLm5leHQoKS5wcm9wZXJ0eSgid2VpZ2h0IikpLmVxdWFscyhEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKGcuRShjb252ZXJ0VG9FZGdlSWQoInBldGVyIiwgImNyZWF0ZWQiLCAibG9wIikpLm5leHQoKS5wcm9wZXJ0eSgid2VpZ2h0IikpKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTEwNSw3ICsxMTEsNyBAQAogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZVByb3BlcnR5RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlUHJvcGVydHlGZWF0dXJlcy5GRUFUVVJFX0RPVUJMRV9WQUxVRVMpCiAgICAgcHVibGljIHZvaWQgc2hvdWxkTm90QmVFcXVhbFByb3BlcnRpZXNBc1RoZXJlSXNEaWZmZXJlbnRLZXkoKSB7CiAgICAgICAgIGZpbmFsIE9iamVjdCBqb3NoQ3JlYXRlZExvcEVkZ2VJZCA9IGNvbnZlcnRUb0VkZ2VJZCgiam9zaCIsICJjcmVhdGVkIiwgImxvcCIpOwotICAgICAgICBmaW5hbCBFZGdlIGUgPSBnLlYoY29udmVydFRvVmVydGV4SWQoImpvc2giKSkubmV4dCgpLmFkZEVkZ2UoImNyZWF0ZWQiLCBnLlYoY29udmVydFRvVmVydGV4SWQoImxvcCIpKS5uZXh0KCksICJ3ZWlnaHQiLCAwLjRkKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChlLnByb3BlcnR5KCJ3ZWlnaHQiKSkuZXF1YWxzKERldGFjaGVkRmFjdG9yeS5kZXRhY2goZy5FKGpvc2hDcmVhdGVkTG9wRWRnZUlkKS5uZXh0KCkucHJvcGVydHkoIndlaWdodCIpKSkpOworICAgICAgICBmaW5hbCBFZGdlIGUgPSBnLlYoY29udmVydFRvVmVydGV4SWQoImpvc2giKSkubmV4dCgpLmFkZEVkZ2UoImNyZWF0ZWQiLCBnLlYoY29udmVydFRvVmVydGV4SWQoImxvcCIpKS5uZXh0KCksICJkb3VibGUiLCAwLjRkKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChlLnByb3BlcnR5KCJkb3VibGUiKSkuZXF1YWxzKERldGFjaGVkRmFjdG9yeS5kZXRhY2goZy5FKGpvc2hDcmVhdGVkTG9wRWRnZUlkKS5uZXh0KCkucHJvcGVydHkoIndlaWdodCIpKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9GZWF0dXJlQ292ZXJhZ2VUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvRmVhdHVyZUNvdmVyYWdlVGVzdC5qYXZhCmluZGV4IDJjY2E1MGIuLmUwOTE1NmIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9GZWF0dXJlQ292ZXJhZ2VUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0ZlYXR1cmVDb3ZlcmFnZVRlc3QuamF2YQpAQCAtNTgsMTEgKzU4LDEzIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5QZWVyUHJlc3N1cmVUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvamVjdFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Qcm9wZXJ0aWVzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlN1bVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5VbmZvbGRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVmFsdWVNYXBUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVmVydGV4VGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLldyaXRlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5BZ2dyZWdhdGVUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0Lkdyb3VwQ291bnRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0Lkdyb3VwVGVzdDsKQEAgLTE2MCwxMCArMTYyLDEyIEBACiAgICAgICAgICAgICAgICAgR3JvdXBDb3VudFRlc3QuY2xhc3MsCiAgICAgICAgICAgICAgICAgR3JvdXBUZXN0LmNsYXNzLAogICAgICAgICAgICAgICAgIEluamVjdFRlc3QuY2xhc3MsCisgICAgICAgICAgICAgICAgUmVhZFRlc3QuY2xhc3MsCiAgICAgICAgICAgICAgICAgU2Fja1Rlc3QuY2xhc3MsCiAgICAgICAgICAgICAgICAgU2lkZUVmZmVjdENhcFRlc3QuY2xhc3MsCiAgICAgICAgICAgICAgICAgLy9TaWRlRWZmZWN0VGVzdC5jbGFzcywKLSAgICAgICAgICAgICAgICBTdG9yZVRlc3QuY2xhc3MpOworICAgICAgICAgICAgICAgIFN0b3JlVGVzdC5jbGFzcywKKyAgICAgICAgICAgICAgICBXcml0ZVRlc3QuY2xhc3MpOwogICAgICAgICAgICAgICAgIC8vIFN1YmdyYXBoVGVzdC5jbGFzcywKICAgICAgICAgICAgICAgICAvLyBUcmVlVGVzdC5jbGFzcyk7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvcG9tLnhtbCBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvcG9tLnhtbAppbmRleCAzNmYxMjBkLi4xY2ZmY2JiIDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3BvbS54bWwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWJlbmNobWFyay9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi10b29sczwvYXJ0aWZhY3RJZD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAKICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWJlbmNobWFyazwvYXJ0aWZhY3RJZD4KQEAgLTU1LDYgKzU1LDExIEBACiAgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CiAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tZHJpdmVyPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLm9wZW5qZGsuam1oPC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+am1oLWNvcmU8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8dmVyc2lvbj4ke2ptaC52ZXJzaW9ufTwvdmVyc2lvbj4KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9HcmFwaEJpbmFyeVJlYWRlcldyaXRlckJlbmNobWFyay5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWJlbmNobWFyay9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0dyYXBoQmluYXJ5UmVhZGVyV3JpdGVyQmVuY2htYXJrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0NzQzNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9HcmFwaEJpbmFyeVJlYWRlcldyaXRlckJlbmNobWFyay5qYXZhCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXI7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmJlbmNobWFyay51dGlsLkFic3RyYWN0QmVuY2htYXJrQmFzZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuTmV0dHlCdWZmZXJGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckdyYXBoOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5CZW5jaG1hcms7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLkxldmVsOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5TY29wZTsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuU2V0dXA7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLlN0YXRlOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5UZWFyRG93bjsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuV2FybXVwOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLm5ldC5JbmV0QWRkcmVzczsKK2ltcG9ydCBqYXZhLnRpbWUuSW5zdGFudDsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworaW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdC5NSUxMSVNFQ09ORFM7CisKK0BXYXJtdXAodGltZSA9IDIwMCwgdGltZVVuaXQgPSBNSUxMSVNFQ09ORFMpCitwdWJsaWMgY2xhc3MgR3JhcGhCaW5hcnlSZWFkZXJXcml0ZXJCZW5jaG1hcmsgZXh0ZW5kcyBBYnN0cmFjdEJlbmNobWFya0Jhc2UgeworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoQmluYXJ5UmVhZGVyIHJlYWRlciA9IG5ldyBHcmFwaEJpbmFyeVJlYWRlcigpOworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoQmluYXJ5V3JpdGVyIHdyaXRlciA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcigpOworICAgIHByaXZhdGUgc3RhdGljIFVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvciBhbGxvY2F0b3IgPSBuZXcgVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yKGZhbHNlKTsKKyAgICBwcml2YXRlIHN0YXRpYyBOZXR0eUJ1ZmZlckZhY3RvcnkgYnVmZmVyRmFjdG9yeSA9IG5ldyBOZXR0eUJ1ZmZlckZhY3RvcnkoKTsKKworICAgIEBTdGF0ZShTY29wZS5UaHJlYWQpCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCZW5jaG1hcmtTdGF0ZSB7CisgICAgICAgIHB1YmxpYyBCdWZmZXIgYnl0ZWNvZGVCdWZmZXIxID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigyMDQ4KSk7CisgICAgICAgIHB1YmxpYyBCdWZmZXIgYnl0ZWNvZGVCdWZmZXIyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigyMDQ4KSk7CisgICAgICAgIHB1YmxpYyBCdWZmZXIgcEJ1ZmZlcjEgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShhbGxvY2F0b3IuYnVmZmVyKDIwNDgpKTsKKyAgICAgICAgcHVibGljIGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlMSA9IG5ldyBCeXRlY29kZSgpOworCisgICAgICAgIHB1YmxpYyBCdWZmZXIgYnVmZmVyV3JpdGUgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShhbGxvY2F0b3IuYnVmZmVyKDIwNDgpKTsKKworICAgICAgICBwdWJsaWMgQnl0ZWNvZGUgYnl0ZWNvZGUyOworCisgICAgICAgIEBTZXR1cChMZXZlbC5UcmlhbCkKKyAgICAgICAgcHVibGljIHZvaWQgZG9TZXR1cCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICBieXRlY29kZTEuYWRkU3RlcCgiViIpOworICAgICAgICAgICAgYnl0ZWNvZGUxLmFkZFN0ZXAoInZhbHVlcyIsICJuYW1lIik7CisgICAgICAgICAgICBieXRlY29kZTEuYWRkU3RlcCgidGFpbCIsIDUpOworCisgICAgICAgICAgICBHcmFwaCBnID0gVGlua2VyR3JhcGgub3BlbigpOworCisgICAgICAgICAgICBieXRlY29kZTIgPSBnLnRyYXZlcnNhbCgpCisgICAgICAgICAgICAgICAgICAgIC5hZGRWKCJwZXJzb24iKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWUxIiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lMiIsIFVVSUQucmFuZG9tVVVJRCgpKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWUzIiwgSW5ldEFkZHJlc3MuZ2V0QnlBZGRyZXNzKG5ldyBieXRlW10geyAxMjcsIDAsIDAsIDF9KSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lNCIsIEJpZ0ludGVnZXIudmFsdWVPZigzMzM0MzQ1NTM0MjI0NUwpKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWU1IiwgImtqbGtkbnZsa2RybnZsZG52bmRscmt2bmxoa2pka2drcnRubGtuZGJsa25sa25vbmJvaXJubGtibnJ0Ym9ucm9iaW5va2JucmtsbmJrcm5ibGt0ZW5nb3RybmdvdGtybmdsa3QiKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWU2IiwgSW5zdGFudC5ub3coKSkKKyAgICAgICAgICAgICAgICAgICAgLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpOworCisgICAgICAgICAgICB3cml0ZXIud3JpdGVWYWx1ZShieXRlY29kZTEsIGJ5dGVjb2RlQnVmZmVyMSwgZmFsc2UpOworICAgICAgICAgICAgd3JpdGVyLndyaXRlVmFsdWUoYnl0ZWNvZGUyLCBieXRlY29kZUJ1ZmZlcjIsIGZhbHNlKTsKKyAgICAgICAgICAgIHdyaXRlci53cml0ZVZhbHVlKFAuYmV0d2VlbigxLCAyKSwgcEJ1ZmZlcjEsIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIEBTZXR1cChMZXZlbC5JbnZvY2F0aW9uKQorICAgICAgICBwdWJsaWMgdm9pZCBzZXR1cEludm9jYXRpb24oKSB7CisgICAgICAgICAgICBieXRlY29kZUJ1ZmZlcjEucmVhZGVySW5kZXgoMCk7CisgICAgICAgICAgICBieXRlY29kZUJ1ZmZlcjIucmVhZGVySW5kZXgoMCk7CisgICAgICAgICAgICBwQnVmZmVyMS5yZWFkZXJJbmRleCgwKTsKKyAgICAgICAgICAgIGJ1ZmZlcldyaXRlLnJlYWRlckluZGV4KDApOworICAgICAgICAgICAgYnVmZmVyV3JpdGUud3JpdGVySW5kZXgoMCk7CisgICAgICAgIH0KKworICAgICAgICBAVGVhckRvd24oTGV2ZWwuVHJpYWwpCisgICAgICAgIHB1YmxpYyB2b2lkIGRvVGVhckRvd24oKSB7CisgICAgICAgICAgICBieXRlY29kZUJ1ZmZlcjEucmVsZWFzZSgpOworICAgICAgICAgICAgYnl0ZWNvZGVCdWZmZXIyLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJ1ZmZlcldyaXRlLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUJ5dGVjb2RlMShCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgd3JpdGVyLndyaXRlVmFsdWUoc3RhdGUuYnl0ZWNvZGUxLCBzdGF0ZS5idWZmZXJXcml0ZSwgZmFsc2UpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUJ5dGVjb2RlMihCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgd3JpdGVyLndyaXRlVmFsdWUoc3RhdGUuYnl0ZWNvZGUyLCBzdGF0ZS5idWZmZXJXcml0ZSwgZmFsc2UpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCByZWFkQnl0ZWNvZGUxKEJlbmNobWFya1N0YXRlIHN0YXRlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZWFkZXIucmVhZFZhbHVlKHN0YXRlLmJ5dGVjb2RlQnVmZmVyMSwgQnl0ZWNvZGUuY2xhc3MsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgcmVhZEJ5dGVjb2RlMihCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmVhZGVyLnJlYWRWYWx1ZShzdGF0ZS5ieXRlY29kZUJ1ZmZlcjIsIEJ5dGVjb2RlLmNsYXNzLCBmYWxzZSk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHJlYWRQMShCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmVhZGVyLnJlYWRWYWx1ZShzdGF0ZS5wQnVmZmVyMSwgUC5jbGFzcywgZmFsc2UpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9HcmFwaFNPTk1hcHBlckJlbmNobWFyay5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWJlbmNobWFyay9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0dyYXBoU09OTWFwcGVyQmVuY2htYXJrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4N2NhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9HcmFwaFNPTk1hcHBlckJlbmNobWFyay5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5iZW5jaG1hcmsudXRpbC5BYnN0cmFjdEJlbmNobWFya0Jhc2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTk1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlZlcnNpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05YTW9kdWxlVjNkMDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJHcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5PYmplY3RNYXBwZXI7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLkJlbmNobWFyazsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuTGV2ZWw7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLlNjb3BlOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5TZXR1cDsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuU3RhdGU7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLlRlYXJEb3duOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5XYXJtdXA7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEubmV0LkluZXRBZGRyZXNzOworaW1wb3J0IGphdmEudGltZS5JbnN0YW50OworaW1wb3J0IGphdmEudXRpbC5VVUlEOworCitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Lk1JTExJU0VDT05EUzsKKworQFdhcm11cCh0aW1lID0gMjAwLCB0aW1lVW5pdCA9IE1JTExJU0VDT05EUykKK3B1YmxpYyBjbGFzcyBHcmFwaFNPTk1hcHBlckJlbmNobWFyayBleHRlbmRzIEFic3RyYWN0QmVuY2htYXJrQmFzZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT2JqZWN0TWFwcGVyIG1hcHBlciA9IEdyYXBoU09OTWFwcGVyLmJ1aWxkKCkKKyAgICAgICAgICAgIC52ZXJzaW9uKEdyYXBoU09OVmVyc2lvbi5WM18wKQorICAgICAgICAgICAgLmFkZEN1c3RvbU1vZHVsZShHcmFwaFNPTlhNb2R1bGVWM2QwLmJ1aWxkKCkuY3JlYXRlKGZhbHNlKSkKKyAgICAgICAgICAgIC5jcmVhdGUoKS5jcmVhdGVNYXBwZXIoKTsKKworICAgIEBTdGF0ZShTY29wZS5UaHJlYWQpCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCZW5jaG1hcmtTdGF0ZSB7CisKKyAgICAgICAgcHVibGljIGJ5dGVbXSBieXRlY29kZUJ5dGVzMTsKKyAgICAgICAgcHJpdmF0ZSBieXRlW10gYnl0ZWNvZGVCeXRlczI7CisgICAgICAgIHByaXZhdGUgZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUxID0gbmV3IEJ5dGVjb2RlKCk7CisgICAgICAgIHByaXZhdGUgQnl0ZWNvZGUgYnl0ZWNvZGUyOworCisgICAgICAgIEBTZXR1cChMZXZlbC5UcmlhbCkKKyAgICAgICAgcHVibGljIHZvaWQgZG9TZXR1cCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICBieXRlY29kZTEuYWRkU3RlcCgiViIpOworICAgICAgICAgICAgYnl0ZWNvZGUxLmFkZFN0ZXAoInZhbHVlcyIsICJuYW1lIik7CisgICAgICAgICAgICBieXRlY29kZTEuYWRkU3RlcCgidGFpbCIsIDUpOworCisgICAgICAgICAgICBHcmFwaCBnID0gVGlua2VyR3JhcGgub3BlbigpOworCisgICAgICAgICAgICBieXRlY29kZTIgPSBnLnRyYXZlcnNhbCgpCisgICAgICAgICAgICAgICAgICAgIC5hZGRWKCJwZXJzb24iKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWUxIiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lMiIsIFVVSUQucmFuZG9tVVVJRCgpKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWUzIiwgSW5ldEFkZHJlc3MuZ2V0QnlBZGRyZXNzKG5ldyBieXRlW10geyAxMjcsIDAsIDAsIDF9KSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lNCIsIEJpZ0ludGVnZXIudmFsdWVPZigzMzM0MzQ1NTM0MjI0NUwpKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWU1IiwgImtqbGtkbnZsa2RybnZsZG52bmRscmt2bmxoa2pka2drcnRubGtuZGJsa25sa25vbmJvaXJubGtibnJ0Ym9ucm9iaW5va2JucmtsbmJrcm5ibGt0ZW5nb3RybmdvdGtybmdsa3QiKQorICAgICAgICAgICAgICAgICAgICAucHJvcGVydHkoIm5hbWU2IiwgSW5zdGFudC5ub3coKSkKKyAgICAgICAgICAgICAgICAgICAgLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpOworCisKKyAgICAgICAgICAgIGJ5dGVjb2RlQnl0ZXMxID0gbWFwcGVyLndyaXRlVmFsdWVBc0J5dGVzKGJ5dGVjb2RlMSk7CisgICAgICAgICAgICBieXRlY29kZUJ5dGVzMiA9IG1hcHBlci53cml0ZVZhbHVlQXNCeXRlcyhieXRlY29kZTIpOworICAgICAgICB9CisKKyAgICAgICAgQFRlYXJEb3duKExldmVsLlRyaWFsKQorICAgICAgICBwdWJsaWMgdm9pZCBkb1RlYXJEb3duKCkgeworICAgICAgICB9CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHJlYWRCeXRlY29kZTEoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIG1hcHBlci5yZWFkVmFsdWUoc3RhdGUuYnl0ZWNvZGVCeXRlczEsIEJ5dGVjb2RlLmNsYXNzKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgcmVhZEJ5dGVjb2RlMihCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgbWFwcGVyLnJlYWRWYWx1ZShzdGF0ZS5ieXRlY29kZUJ5dGVzMiwgQnl0ZWNvZGUuY2xhc3MpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUJ5dGVjb2RlMShCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgbWFwcGVyLndyaXRlVmFsdWVBc1N0cmluZyhzdGF0ZS5ieXRlY29kZTEpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUJ5dGVjb2RlMihCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgbWFwcGVyLndyaXRlVmFsdWVBc0J5dGVzKHN0YXRlLmJ5dGVjb2RlMik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWJlbmNobWFyay9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1NlcmlhbGl6YXRpb25CZW5jaG1hcmsuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9TZXJpYWxpemF0aW9uQmVuY2htYXJrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ0Y2U4NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9TZXJpYWxpemF0aW9uQmVuY2htYXJrLmphdmEKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlcjsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmOworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5VbnBvb2xlZDsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmJlbmNobWFyay51dGlsLkFic3RyYWN0QmVuY2htYXJrQmFzZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXNDb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjE7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5TZXJpYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleDsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuQmVuY2htYXJrOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5XYXJtdXA7CisKK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LlN0YW5kYXJkQ2hhcnNldHM7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQuTUlMTElTRUNPTkRTOworCitAV2FybXVwKHRpbWUgPSAyMDAsIHRpbWVVbml0ID0gTUlMTElTRUNPTkRTKQorcHVibGljIGNsYXNzIFNlcmlhbGl6YXRpb25CZW5jaG1hcmsgZXh0ZW5kcyBBYnN0cmFjdEJlbmNobWFya0Jhc2UgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IG5ldyBVbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3IoZmFsc2UpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZUJ1ZiBSZXF1ZXN0TWVzc2FnZUdyYXBoU09OQnVmZmVyMSA9IFVucG9vbGVkLndyYXBwZWRCdWZmZXIoCisgICAgICAgICAgICAoIntcInJlcXVlc3RJZFwiOntcIkB0eXBlXCI6XCJnOlVVSURcIixcIkB2YWx1ZVwiOlwiOWI2ZDE3YzAtYzVhOS00MThlLWJmZjYtYTI1ZmJiMWIxNzVlXCJ9LCIgKworICAgICAgICAgICAgICAgICAgICAiXCJvcFwiOlwiYVwiLFwicHJvY2Vzc29yXCI6XCJiXCIsXCJhcmdzXCI6e319IikKKyAgICAgICAgICAgICAgICAgICAgLmdldEJ5dGVzKFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEJ5dGVCdWYgUmVxdWVzdE1lc3NhZ2VHcmFwaFNPTkJ1ZmZlcjIgPSBVbnBvb2xlZC53cmFwcGVkQnVmZmVyKAorICAgICAgICAgICAgKCJ7XCJyZXF1ZXN0SWRcIjp7XCJAdHlwZVwiOlwiZzpVVUlEXCIsXCJAdmFsdWVcIjpcIjA0MmI4NDAwLWQ1ODYtNGZjYi1iMDg1LTJjZjJhYjJiZDVjYlwifSwiICsKKyAgICAgICAgICAgICAgICAgICAgIlwib3BcIjpcImJ5dGVjb2RlXCIsXCJwcm9jZXNzb3JcIjpcInRyYXZlcnNhbFwiLFwiYXJnc1wiOntcImdyZW1saW5cIjoiICsKKyAgICAgICAgICAgICAgICAgICAgIntcIkB0eXBlXCI6XCJnOkJ5dGVjb2RlXCIsXCJAdmFsdWVcIjp7XCJzdGVwXCI6W1tcIlZcIl0sW1widGFpbFwiXV19fSxcImFsaWFzZXNcIjp7XCJnXCI6XCJnXCJ9fX0iKQorICAgICAgICAgICAgICAgICAgICAuZ2V0Qnl0ZXMoU3RhbmRhcmRDaGFyc2V0cy5VVEZfOCkpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZUJ1ZiBSZXF1ZXN0TWVzc2FnZUJpbmFyeUJ1ZmZlcjEgPSBVbnBvb2xlZC53cmFwcGVkQnVmZmVyKG5ldyBieXRlW117CisgICAgICAgICAgICAvLyBmbGFnCisgICAgICAgICAgICAoYnl0ZSkweDgxLAorICAgICAgICAgICAgLy8gdXVpZAorICAgICAgICAgICAgKGJ5dGUpIDB4ZDMsIChieXRlKSAweGZkLCAweDM1LCAweDQwLCAweDY3LCAweDE4LCAweDQ2LCAoYnl0ZSkgMHg4NywoYnl0ZSkgMHg5NSwgMHg2YiwgKGJ5dGUpIDB4YzgsIDB4NjEsCisgICAgICAgICAgICAoYnl0ZSkgMHg4YSwgMHgyNiwgKGJ5dGUpIDB4ZTMsIDB4MzUsCisgICAgICAgICAgICAvLyBzdHJpbmcgbGVuZ3RoIGFuZCBzdHJpbmcgdmFsdWUgKGEpCisgICAgICAgICAgICAwLCAwLCAwLCAweDAxLCAweDYxLAorICAgICAgICAgICAgLy8gc3RyaW5nIGxlbmd0aCBhbmQgc3RyaW5nIHZhbHVlIChiKQorICAgICAgICAgICAgMCwgMCwgMCwgMHgwMSwgMHg2MiwKKyAgICAgICAgICAgIC8vIE1hcCAobm8gaXRlbXMpCisgICAgICAgICAgICAwLCAwLCAwLCAwCisgICAgfSk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCeXRlQnVmIFJlcXVlc3RNZXNzYWdlQmluYXJ5QnVmZmVyMiA9IFVucG9vbGVkLndyYXBwZWRCdWZmZXIobmV3IGJ5dGVbXXsKKyAgICAgICAgICAgIC8vIGZsYWcKKyAgICAgICAgICAgIChieXRlKTB4ODEsCisgICAgICAgICAgICAvLyB1dWlkCisgICAgICAgICAgICAoYnl0ZSkgMHhkMywgKGJ5dGUpIDB4ZmQsIDB4MzUsIDB4NDAsIDB4NjcsIDB4MTgsIDB4NDYsIChieXRlKSAweDg3LChieXRlKSAweDk1LCAweDZiLCAoYnl0ZSkgMHhjOCwgMHg2MSwKKyAgICAgICAgICAgIChieXRlKSAweDhhLCAweDI2LCAoYnl0ZSkgMHhlMywgMHgzNSwKKyAgICAgICAgICAgIC8vIHN0cmluZyBsZW5ndGggYW5kIHN0cmluZyB2YWx1ZSAoYSkKKyAgICAgICAgICAgIDAsIDAsIDAsIDB4MDEsIDB4NjEsCisgICAgICAgICAgICAvLyBzdHJpbmcgbGVuZ3RoIGFuZCBzdHJpbmcgdmFsdWUgKGIpCisgICAgICAgICAgICAwLCAwLCAwLCAweDAxLCAweDYyLAorICAgICAgICAgICAgLy8gTWFwICgyIGl0ZW1zKQorICAgICAgICAgICAgMCwgMCwgMCwgMHgyLAorICAgICAgICAgICAgLy8gImFsaWFzZXMiCisgICAgICAgICAgICBEYXRhVHlwZS5TVFJJTkcuZ2V0Q29kZUJ5dGUoKSwgMCwgMCwgMCwgMCwgMHgwNywgMHg2MSwgMHg2YywgMHg2OSwgMHg2MSwgMHg3MywgMHg2NSwgMHg3MywKKyAgICAgICAgICAgIC8vIG1hcCB7IGc6IGcgfQorICAgICAgICAgICAgRGF0YVR5cGUuTUFQLmdldENvZGVCeXRlKCksIDAsIDAsIDAsIDAsIDB4MSwKKyAgICAgICAgICAgIERhdGFUeXBlLlNUUklORy5nZXRDb2RlQnl0ZSgpLCAwLCAwLCAwLCAwLCAweDAxLCAweDY3LAorICAgICAgICAgICAgRGF0YVR5cGUuU1RSSU5HLmdldENvZGVCeXRlKCksIDAsIDAsIDAsIDAsIDB4MDEsIDB4NjcsCisgICAgICAgICAgICAvLyAiZ3JlbWxpbiIKKyAgICAgICAgICAgIERhdGFUeXBlLlNUUklORy5nZXRDb2RlQnl0ZSgpLCAwLCAwLCAwLCAwLCAweDA3LCAweDY3LCAweDcyLCAweDY1LCAweDZkLCAweDZjLCAweDY5LCAweDZlLAorICAgICAgICAgICAgLy8gQnl0ZWNvZGUgZm9yIFsnVicsICd0YWlsJ10KKyAgICAgICAgICAgIERhdGFUeXBlLkJZVEVDT0RFLmdldENvZGVCeXRlKCksIDAsIDAsIDAsIDAsIDB4MDIsCisgICAgICAgICAgICAvLyAiViIgKG5vIHZhbHVlcykKKyAgICAgICAgICAgIDAsIDAsIDAsIDB4MSwgMHg1NiwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgIC8vIHRhaWwgKG5vIHZhbHVlcykKKyAgICAgICAgICAgIDAsIDAsIDAsIDB4NCwgMHg3NCwgMHg2MSwgMHg2OSwgMHg2YywgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgIC8vIG5vIHNvdXJjZXMKKyAgICAgICAgICAgIDAsIDAsIDAsIDAKKyAgICB9KTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVVSUQgaWQgPSBVVUlELnJhbmRvbVVVSUQoKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSByZXNwb25zZSA9IFJlc3BvbnNlTWVzc2FnZQorICAgICAgICAgICAgLmJ1aWxkKFVVSUQucmFuZG9tVVVJRCgpKS5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5TVUNDRVNTKS5yZXN1bHQobmV3IFJlZmVyZW5jZVZlcnRleCgxLCAicGVyc29uIikpCisgICAgICAgICAgICAuY3JlYXRlKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCeXRlY29kZSBieXRlY29kZSA9IG5ldyBCeXRlY29kZSgpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3QgPSBSZXF1ZXN0TWVzc2FnZQorICAgICAgICAgICAgLmJ1aWxkKFRva2Vucy5PUFNfQllURUNPREUpLnByb2Nlc3NvcigidHJhdmVyc2FsIikub3ZlcnJpZGVSZXF1ZXN0SWQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0dSRU1MSU4sIGJ5dGVjb2RlKQorICAgICAgICAgICAgLmNyZWF0ZSgpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIGJpbmFyeVNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAgZ3JhcGhzb25TZXJpYWxpemVyID0gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKCk7CisKKyAgICBzdGF0aWMgeworICAgICAgICBieXRlY29kZS5hZGRTdGVwKCJWIik7CisgICAgICAgIGJ5dGVjb2RlLmFkZFN0ZXAoInZhbHVlcyIsICJuYW1lIik7CisgICAgICAgIGJ5dGVjb2RlLmFkZFN0ZXAoIm9yZGVyIik7CisgICAgICAgIGJ5dGVjb2RlLmFkZFN0ZXAoInRhaWwiLCA1KTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIFJlcXVlc3RNZXNzYWdlIHRlc3RSZWFkTWVzc2FnZTFCaW5hcnkoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIFJlcXVlc3RNZXNzYWdlQmluYXJ5QnVmZmVyMS5yZWFkZXJJbmRleCgwKTsKKworICAgICAgICByZXR1cm4gYmluYXJ5U2VyaWFsaXplci5kZXNlcmlhbGl6ZVJlcXVlc3QoUmVxdWVzdE1lc3NhZ2VCaW5hcnlCdWZmZXIxKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIFJlcXVlc3RNZXNzYWdlIHRlc3RSZWFkTWVzc2FnZTJCaW5hcnkoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIFJlcXVlc3RNZXNzYWdlQmluYXJ5QnVmZmVyMi5yZWFkZXJJbmRleCgwKTsKKyAgICAgICAgcmV0dXJuIGJpbmFyeVNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXF1ZXN0KFJlcXVlc3RNZXNzYWdlQmluYXJ5QnVmZmVyMik7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyBSZXF1ZXN0TWVzc2FnZSB0ZXN0UmVhZE1lc3NhZ2UxR3JhcGhTT04oKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIFJlcXVlc3RNZXNzYWdlR3JhcGhTT05CdWZmZXIxLnJlYWRlckluZGV4KDApOworICAgICAgICByZXR1cm4gZ3JhcGhzb25TZXJpYWxpemVyLmRlc2VyaWFsaXplUmVxdWVzdChSZXF1ZXN0TWVzc2FnZUdyYXBoU09OQnVmZmVyMSk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyBSZXF1ZXN0TWVzc2FnZSB0ZXN0UmVhZE1lc3NhZ2UyR3JhcGhTT04oKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIFJlcXVlc3RNZXNzYWdlR3JhcGhTT05CdWZmZXIyLnJlYWRlckluZGV4KDApOworICAgICAgICByZXR1cm4gZ3JhcGhzb25TZXJpYWxpemVyLmRlc2VyaWFsaXplUmVxdWVzdChSZXF1ZXN0TWVzc2FnZUdyYXBoU09OQnVmZmVyMik7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHRlc3RXcml0ZVJlc3BvbnNlQmluYXJ5KCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IGJpbmFyeVNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeShyZXNwb25zZSwgYWxsb2NhdG9yKTsKKyAgICAgICAgYnVmZmVyLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgdGVzdFdyaXRlUmVzcG9uc2VHcmFwaFNPTigpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBncmFwaHNvblNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeShyZXNwb25zZSwgYWxsb2NhdG9yKTsKKyAgICAgICAgYnVmZmVyLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgdGVzdFdyaXRlQnl0ZWNvZGVCaW5hcnkoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gYmluYXJ5U2VyaWFsaXplci5zZXJpYWxpemVSZXF1ZXN0QXNCaW5hcnkocmVxdWVzdCwgYWxsb2NhdG9yKTsKKyAgICAgICAgYnVmZmVyLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgdGVzdFdyaXRlQnl0ZWNvZGVHcmFwaFNPTigpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBncmFwaHNvblNlcmlhbGl6ZXIuc2VyaWFsaXplUmVxdWVzdEFzQmluYXJ5KHJlcXVlc3QsIGFsbG9jYXRvcik7CisgICAgICAgIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyBSZXF1ZXN0TWVzc2FnZSB0ZXN0SW5zdGFuY2VDcmVhdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIFJlcXVlc3RNZXNzYWdlLmJ1aWxkKCJhIikub3ZlcnJpZGVSZXF1ZXN0SWQoaWQpLnByb2Nlc3NvcigiYiIpLmNyZWF0ZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1jb3ZlcmFnZS9wb20ueG1sIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWNvdmVyYWdlL3BvbS54bWwKaW5kZXggY2Y3NmM0Yy4uZmJmYTEwNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWNvdmVyYWdlL3BvbS54bWwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWNvdmVyYWdlL3BvbS54bWwKQEAgLTYsNyArNiw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi10b29sczwvYXJ0aWZhY3RJZD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1jb3ZlcmFnZTwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gQ292ZXJhZ2U8L25hbWU+CmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9wb20ueG1sIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3QvcG9tLnhtbAppbmRleCA2ODI1ZWU0Li4wMWJkMjM3IDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9wb20ueG1sCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3BvbS54bWwKQEAgLTYsNyArNiw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi10b29sczwvYXJ0aWZhY3RJZD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1pby10ZXN0PC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbiBJTyBUZXN0PC9uYW1lPgpAQCAtODMsNiArODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuZ3Jvb3Z5PC9ncm91cElkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncm9vdnktYWxsPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4ke2dyb292eS52ZXJzaW9ufTwvdmVyc2lvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+cnVudGltZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5PgpAQCAtMTQ2LDYgKzE0NywzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmdlbmVyYXRlLWlvLWZpbGVzLWdyYXBoYmluYXJ5PC9pZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPmdlbmVyYXRlLXRlc3QtcmVzb3VyY2VzPC9waGFzZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+ZXhlY3V0ZTwvZ29hbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnByb2plY3RCdWlsZERpcjwvbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9PC92YWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+cHJvamVjdEJhc2VEaXI8L25hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4ke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fTwvdmFsdWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnByb2plY3RWZXJzaW9uPC9uYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+JHtwcm9qZWN0LnZlcnNpb259PC92YWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wcm9wZXJ0aWVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4ke3Byb2plY3QuYmFzZWRpcn0vc2NyaXB0cy9nZW5lcmF0ZS1ncmFwaGJpbmFyeS1yZXNvdXJjZXMuZ3Jvb3Z5PC9zY3JpcHQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+Z2VuZXJhdGUtaW8tbW9kZWwtY3N2PC9pZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPmdlbmVyYXRlLXRlc3QtcmVzb3VyY2VzPC9waGFzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1ncmFwaGJpbmFyeS1yZXNvdXJjZXMuZ3Jvb3Z5IGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1ncmFwaGJpbmFyeS1yZXNvdXJjZXMuZ3Jvb3Z5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZTU2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zY3JpcHRzL2dlbmVyYXRlLWdyYXBoYmluYXJ5LXJlc291cmNlcy5ncm9vdnkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcgoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcgoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5OZXR0eUJ1ZmZlckZhY3RvcnkKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS4qCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuKgoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLioKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5CYXNlQ29uZmlndXJhdGlvbgorCituZXcgRmlsZSgiJHtwcm9qZWN0QnVpbGREaXJ9L3Rlc3QtY2FzZS1kYXRhL2lvL2dyYXBoYmluYXJ5IikubWtkaXJzKCkKKworY29uZiA9IG5ldyBCYXNlQ29uZmlndXJhdGlvbigpCitjb25mLnNldFByb3BlcnR5KFRpbmtlckdyYXBoLkdSRU1MSU5fVElOS0VSR1JBUEhfREVGQVVMVF9WRVJURVhfUFJPUEVSVFlfQ0FSRElOQUxJVFksIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5Lmxpc3QubmFtZSgpKQorZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKGNvbmYpCitUaW5rZXJGYWN0b3J5LmdlbmVyYXRlVGhlQ3JldyhncmFwaCkKK2cgPSBncmFwaC50cmF2ZXJzYWwoKQorCittb2RlbCA9IE1vZGVsLmluc3RhbmNlKCkKKworYWxsb2NhdG9yID0gQnl0ZUJ1ZkFsbG9jYXRvci5ERUZBVUxUCitmYWN0b3J5ID0gbmV3IE5ldHR5QnVmZmVyRmFjdG9yeSgpCisKK3RvR3JhcGhCaW5hcnkgPSB7IG8sIHR5cGUsIG1hcHBlciwgc3VmZml4ID0gIiIgLT4KKyAgICBkZWYgZmlsZVRvV3JpdGVUbyA9IG5ldyBGaWxlKCIke3Byb2plY3RCdWlsZERpcn0vdGVzdC1jYXNlLWRhdGEvaW8vZ3JhcGhiaW5hcnkvIiArIHR5cGUudGl0bGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCIgIiwiIikgKyAiLSIgKyBzdWZmaXggKyAiLmdiaW4iKQorICAgIGlmIChmaWxlVG9Xcml0ZVRvLmV4aXN0cygpKSBmaWxlVG9Xcml0ZVRvLmRlbGV0ZSgpCisgICAgZmlsZXN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGVUb1dyaXRlVG8pCisgICAgdHJ5IHsKKyAgICAgICAgYnVmZmVyID0gZmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigpKQorICAgICAgICB3cml0ZXIud3JpdGUobywgYnVmZmVyKQorICAgICAgICBidWZmZXIucmVhZGVySW5kZXgoMCkKKyAgICAgICAgYnVmZmVyLnJlYWRCeXRlcyhmaWxlc3RyZWFtLCBidWZmZXIucmVhZGFibGVCeXRlcygpKQorICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICBpZiAoZXgubWVzc2FnZSA9PSAiU2VyaWFsaXplciBmb3IgdHlwZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlIG5vdCBmb3VuZCIgfHwKKyAgICAgICAgICAgICAgICBleC5tZXNzYWdlID09ICJTZXJpYWxpemVyIGZvciB0eXBlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlIG5vdCBmb3VuZCIgKQorICAgICAgICAgICAgZmlsZVRvV3JpdGVUby5kZWxldGUoKQorICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBleAorICAgIH0gZmluYWxseSB7CisgICAgICAgIGZpbGVzdHJlYW0uY2xvc2UoKQorICAgICAgICBidWZmZXIucmVsZWFzZSgpCisgICAgfQorfQorCit0b0dyYXBoQmluYXJ5VjFkMCA9IHsgbywgdHlwZSwgbWFwcGVyIC0+CisgICAgdG9HcmFwaEJpbmFyeShvLCB0eXBlLCBtYXBwZXIsICJ2MSIpCit9CisKK3dyaXRlU3VwcG9ydGVkT2JqZWN0cyA9IHsgbWFwcGVyLCB0b0dyYXBoQmluYXJ5RnVuY3Rpb24gLT4KKyAgICBtb2RlbC5lbnRyaWVzKCkuZmluZEFsbHtpdC5oYXNHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkoKX0uZWFjaCB7CisgICAgICAgIHRvR3JhcGhCaW5hcnlGdW5jdGlvbihpdC5nZXRPYmplY3QoKSwgaXQsIG1hcHBlcikKKyAgICB9Cit9CisKK3dyaXRlciA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcigpCisKK3dyaXRlU3VwcG9ydGVkT2JqZWN0cyh3cml0ZXIsIHRvR3JhcGhCaW5hcnlWMWQwKQorCitkZWYgdmVyID0gIl8iICsgIiR7cHJvamVjdFZlcnNpb259Ii5yZXBsYWNlKCIuIiwiXyIpLnJlcGxhY2UoIi1TTkFQU0hPVCIsIiIpCitkZWYgdGFyZ2V0ID0gIiR7cHJvamVjdEJhc2VEaXJ9L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS8iICsgdmVyCitkZWYgdGFyZ2V0RGlyID0gbmV3IEZpbGUodGFyZ2V0KQoraWYgKCF0YXJnZXREaXIuZXhpc3RzKCkpIHRhcmdldERpci5ta2RpcnMoKQorbmV3IEZpbGUoIiR7cHJvamVjdEJ1aWxkRGlyfS90ZXN0LWNhc2UtZGF0YS9pby9ncmFwaGJpbmFyeS8iKS5saXN0RmlsZXMoKS5lYWNoIHsKKyAgICBkZWYgY29weVRvID0gbmV3IEZpbGUodGFyZ2V0ICsgIi8iICsgaXQubmFtZSkKKyAgICBpZiAoY29weVRvLmV4aXN0cygpKSBjb3B5VG8uZGVsZXRlKCkKKyAgICBqYXZhLm5pby5maWxlLkZpbGVzLmNvcHkoaXQudG9QYXRoKCksIG5ldyBGaWxlKHRhcmdldCArICIvIiArIGl0Lm5hbWUpLnRvUGF0aCgpKQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1ncmFwaHNvbi1yZXNvdXJjZXMuZ3Jvb3Z5IGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1ncmFwaHNvbi1yZXNvdXJjZXMuZ3Jvb3Z5CmluZGV4IDU1YjRmYTYuLjAzMTEyZWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtZ3JhcGhzb24tcmVzb3VyY2VzLmdyb292eQorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zY3JpcHRzL2dlbmVyYXRlLWdyYXBoc29uLXJlc291cmNlcy5ncm9vdnkKQEAgLTU5LDE5ICs1OSwxOSBAQAogCiB3cml0ZVN1cHBvcnRlZFYxT2JqZWN0cyA9IHsgd3JpdGVyLCBtYXBwZXIgLT4KICAgICB3cml0ZXIud3JpdGUoIj09PSBHcmFwaCBTdHJ1Y3R1cmVcblxuIikKLSAgICBtb2RlbC5lbnRyaWVzKCJHcmFwaCBTdHJ1Y3R1cmUiKS5maW5kQWxse2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM18zXzApfS5lYWNoIHsKKyAgICBtb2RlbC5lbnRyaWVzKCJHcmFwaCBTdHJ1Y3R1cmUiKS5maW5kQWxse2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM180XzApfS5lYWNoIHsKICAgICAgICAgd3JpdGVyLndyaXRlKHRvSnNvblYxZDBOb1R5cGVzKGl0LmdldE9iamVjdCgpLCBpdC5nZXRUaXRsZSgpLCBtYXBwZXIsIGl0LmdldERlc2NyaXB0aW9uKCkpKQogICAgIH0KIAogICAgIHdyaXRlci53cml0ZSgiXG4iKQogICAgIHdyaXRlci53cml0ZSgiPT09IFJlcXVlc3RNZXNzYWdlXG5cbiIpCi0gICAgbW9kZWwuZW50cmllcygiUmVxdWVzdE1lc3NhZ2UiKS5maW5kQWxse2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM18zXzApfS5lYWNoIHsKKyAgICBtb2RlbC5lbnRyaWVzKCJSZXF1ZXN0TWVzc2FnZSIpLmZpbmRBbGx7aXQuaXNDb21wYXRpYmxlV2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzRfMCl9LmVhY2ggewogICAgICAgICB3cml0ZXIud3JpdGUodG9Kc29uVjFkME5vVHlwZXMoaXQuZ2V0T2JqZWN0KCksIGl0LmdldFRpdGxlKCksIG1hcHBlciwgaXQuZ2V0RGVzY3JpcHRpb24oKSkpCiAgICAgfQogCiAgICAgd3JpdGVyLndyaXRlKCJcbiIpCiAgICAgd3JpdGVyLndyaXRlKCI9PT0gUmVzcG9uc2VNZXNzYWdlXG5cbiIpCi0gICAgbW9kZWwuZW50cmllcygiUmVzcG9uc2VNZXNzYWdlIikuZmluZEFsbHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfM18wKX0uZWFjaCB7CisgICAgbW9kZWwuZW50cmllcygiUmVzcG9uc2VNZXNzYWdlIikuZmluZEFsbHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfNF8wKX0uZWFjaCB7CiAgICAgICAgIHdyaXRlci53cml0ZSh0b0pzb25WMWQwTm9UeXBlcyhpdC5nZXRPYmplY3QoKSwgaXQuZ2V0VGl0bGUoKSwgbWFwcGVyLCBpdC5nZXREZXNjcmlwdGlvbigpKSkKICAgICB9CiB9CkBAIC0xNTYsNyArMTU2LDcgQEAKIAogZmlsZSA9IG5ldyBGaWxlKCIke3Byb2plY3RCdWlsZERpcn0vZGV2LWRvY3Mvb3V0LWdyYXBoc29uLTJkMC1wYXJ0aWFsLnR4dCIpCiBpZiAoZmlsZS5leGlzdHMoKSkgZmlsZS5kZWxldGUoKQotZmlsZS53aXRoV3JpdGVyIHsgd3JpdGVTdXBwb3J0ZWRWMlYzT2JqZWN0cyhpdCwgbWFwcGVyLCB0b0pzb25WMmQwUGFydGlhbFR5cGVzLCB7aXQuaXNDb21wYXRpYmxlV2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfM18xKX0sIHYyRXh0ZW5kZWREZXNjcmlwdGlvbikgfQorZmlsZS53aXRoV3JpdGVyIHsgd3JpdGVTdXBwb3J0ZWRWMlYzT2JqZWN0cyhpdCwgbWFwcGVyLCB0b0pzb25WMmQwUGFydGlhbFR5cGVzLCB7aXQuaXNDb21wYXRpYmxlV2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF8wKX0sIHYyRXh0ZW5kZWREZXNjcmlwdGlvbikgfQogCiBtYXBwZXIgPSBHcmFwaFNPTk1hcHBlci5idWlsZCgpLgogICAgICAgICBhZGRSZWdpc3RyeShUaW5rZXJJb1JlZ2lzdHJ5VjJkMC5pbnN0YW5jZSgpKS4KQEAgLTE2Nyw3ICsxNjcsNyBAQAogCiBmaWxlID0gbmV3IEZpbGUoIiR7cHJvamVjdEJ1aWxkRGlyfS9kZXYtZG9jcy9vdXQtZ3JhcGhzb24tMmQwLW5vLXR5cGUudHh0IikKIGlmIChmaWxlLmV4aXN0cygpKSBmaWxlLmRlbGV0ZSgpCi1maWxlLndpdGhXcml0ZXIgeyB3cml0ZVN1cHBvcnRlZFYyVjNPYmplY3RzKGl0LCBtYXBwZXIsIHRvSnNvblYyZDBOb1R5cGVzLCB7aXQuaXNDb21wYXRpYmxlV2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfM18xKX0sIHYyRXh0ZW5kZWREZXNjcmlwdGlvbikgfQorZmlsZS53aXRoV3JpdGVyIHsgd3JpdGVTdXBwb3J0ZWRWMlYzT2JqZWN0cyhpdCwgbWFwcGVyLCB0b0pzb25WMmQwTm9UeXBlcywge2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfTk9fVFlQRV8zXzRfMCl9LCB2MkV4dGVuZGVkRGVzY3JpcHRpb24pIH0KIAogbWFwcGVyID0gR3JhcGhTT05NYXBwZXIuYnVpbGQoKS4KICAgICAgICAgYWRkUmVnaXN0cnkoVGlua2VySW9SZWdpc3RyeVYyZDAuaW5zdGFuY2UoKSkuCkBAIC0xODksNyArMTg5LDcgQEAKIAogZmlsZSA9IG5ldyBGaWxlKCIke3Byb2plY3RCdWlsZERpcn0vZGV2LWRvY3Mvb3V0LWdyYXBoc29uLTNkMC50eHQiKQogaWYgKGZpbGUuZXhpc3RzKCkpIGZpbGUuZGVsZXRlKCkKLWZpbGUud2l0aFdyaXRlciB7IHdyaXRlU3VwcG9ydGVkVjJWM09iamVjdHMoaXQsIG1hcHBlciwgdG9Kc29uVjNkMCwge2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYzRDBfUEFSVElBTF8zXzNfMSl9LCB2M0V4dGVuZGVkRGVzY3JpcHRpb24pIH0KK2ZpbGUud2l0aFdyaXRlciB7IHdyaXRlU3VwcG9ydGVkVjJWM09iamVjdHMoaXQsIG1hcHBlciwgdG9Kc29uVjNkMCwge2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYzRDBfUEFSVElBTF8zXzRfMCl9LCB2M0V4dGVuZGVkRGVzY3JpcHRpb24pIH0KIAogZGVmIHZlciA9ICJfIiArICIke3Byb2plY3RWZXJzaW9ufSIucmVwbGFjZSgiLiIsIl8iKS5yZXBsYWNlKCItU05BUFNIT1QiLCIiKQogZGVmIHRhcmdldCA9ICIke3Byb2plY3RCYXNlRGlyfS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vIiArIHZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Nb2RlbC5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Nb2RlbC5qYXZhCmluZGV4IDU3YTlmNjAuLmFmZjBmMWEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vTW9kZWwuamF2YQorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL01vZGVsLmphdmEKQEAgLTI5LDggKzI5LDEwIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Qb3A7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TYWNrRnVuY3Rpb25zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsT3B0aW9uUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkJ1bGtTZXQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWxNZXRyaWNzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5NdXRhYmxlTWV0cmljczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsTWV0cmljczsKQEAgLTM4LDYgKzQwLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaGJpbmFyeS5HcmFwaEJpbmFyeUNvbXBhdGliaWxpdHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05Db21wYXRpYmlsaXR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b0NvbXBhdGliaWxpdHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5zdGFyLlN0YXJHcmFwaDsKQEAgLTkwLDYgKzkzLDcgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMaXN0PENvbXBhdGliaWxpdHk+IEFMTCA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3QobmV3IEFycmF5TGlzdDxDb21wYXRpYmlsaXR5PigpIHt7CiAgICAgICAgIGFkZEFsbChBcnJheXMuYXNMaXN0KEdyYXBoU09OQ29tcGF0aWJpbGl0eS52YWx1ZXMoKSkpOwogICAgICAgICBhZGRBbGwoQXJyYXlzLmFzTGlzdChHcnlvQ29tcGF0aWJpbGl0eS52YWx1ZXMoKSkpOworICAgICAgICBhZGRBbGwoQXJyYXlzLmFzTGlzdChHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkudmFsdWVzKCkpKTsKICAgICB9fSk7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNb2RlbCBtb2RlbCA9IG5ldyBNb2RlbCgpOwpAQCAtMTAzLDkgKzEwNywyMSBAQAogICAgICAgICBUaW5rZXJGYWN0b3J5LmdlbmVyYXRlVGhlQ3JldyhncmFwaCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKIAorICAgICAgICAvLyBUT0RPOiBnb3R0YSBmaXggZ3JhcGhiaW5hcnkKKyAgICAgICAgZmluYWwgQ29tcGF0aWJpbGl0eVtdIG5vVHlwZUdyYXBoU09OUGx1c0Jyb2tlbkdyYXBoQmluYXJ5ID0gQ29tcGF0aWJpbGl0aWVzLndpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LmNsYXNzKQorICAgICAgICAgICAgICAgIC5jb25maWd1cmVkQXMoIi4qbm8tdHlwZXN8djFkMCIpLmpvaW4oQ29tcGF0aWJpbGl0aWVzLndpdGgoR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LmNsYXNzKSkubWF0Y2hUb0FycmF5KCk7CisKICAgICAgICAgZmluYWwgQ29tcGF0aWJpbGl0eVtdIG5vVHlwZUdyYXBoU09OUGx1c0dyeW8zXzJfMyA9IENvbXBhdGliaWxpdGllcy53aXRoKEdyeW9Db21wYXRpYmlsaXR5LmNsYXNzKS5iZWZvcmVSZWxlYXNlKCIzLjIuNCIpLmpvaW4oQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04pLm1hdGNoVG9BcnJheSgpOwogICAgICAgICBmaW5hbCBDb21wYXRpYmlsaXR5W10gbm9UeXBlR3JhcGhTT05QbHVzR3J5bzNfM18wID0gQ29tcGF0aWJpbGl0aWVzLndpdGgoR3J5b0NvbXBhdGliaWxpdHkuY2xhc3MpLmJlZm9yZVJlbGVhc2UoIjMuMy4wIikuam9pbihDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTikubWF0Y2hUb0FycmF5KCk7Ci0gICAgICAgIGZpbmFsIENvbXBhdGliaWxpdHlbXSBub0dyYXBoU09OQmVmb3JlVjMgPSBDb21wYXRpYmlsaXRpZXMud2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuY2xhc3MpLmNvbmZpZ3VyZWRBcygiLip2MmQwLXBhcnRpYWx8djFkMHx2MmQwLW5vLXR5cGVzIikuam9pbihDb21wYXRpYmlsaXRpZXMuR1JZT19PTkxZKS5tYXRjaFRvQXJyYXkoKTsKKworICAgICAgICAvLyB0aGUgaW52ZXJzZSBvZiB0aGlzIGRlZmluaXRpb24gaXMgYmFzaWNhbGx5IDMuNC4wIG9yIGJldHRlciBmb3IgYm90aCBHcmFwaFNPTiBhbmQgR3J5byB3aXRoIG5vIHN1cHBvcnQgZm9yCisgICAgICAgIC8vIHVudHlwZWQgR3JhcGhTT04gYW55d2hlcmUgYWxvbmcgdGhlIHdheQorICAgICAgICBmaW5hbCBDb21wYXRpYmlsaXR5W10gYmVmb3JlM180XzAgPSBDb21wYXRpYmlsaXRpZXMud2l0aChHcnlvQ29tcGF0aWJpbGl0eS5jbGFzcykuYmVmb3JlUmVsZWFzZSgiMy40LjAiKQorICAgICAgICAgICAgICAgIC5qb2luKENvbXBhdGliaWxpdGllcy53aXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5jbGFzcykuY29uZmlndXJlZEFzKCIuKm5vLXR5cGVzfHYxZDAiKQorICAgICAgICAgICAgICAgIC5qb2luKENvbXBhdGliaWxpdGllcy53aXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5jbGFzcykuYmVmb3JlUmVsZWFzZSgiMy40LjAiKSkpLm1hdGNoVG9BcnJheSgpOworCisgICAgICAgIC8vIHRoZXJlIGlzIG5vIHBvaW50IHRvIHRlc3RpbmcgZ3J5byBmb3IgbGlzdC9tYXAvc2V0IGFzIHRoZXkgYXJlIGtyeW8gcHJpbWl0aXZlcyBlc3NlbnRpYWxseQorICAgICAgICBmaW5hbCBDb21wYXRpYmlsaXR5W10gbm9HcmFwaFNPTkJlZm9yZVYzQW5kTm9HcnlvID0gQ29tcGF0aWJpbGl0aWVzLndpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LmNsYXNzKS5jb25maWd1cmVkQXMoIi4qdjJkMC1wYXJ0aWFsfHYxZDB8djJkMC1uby10eXBlcyIpLmpvaW4oQ29tcGF0aWJpbGl0aWVzLkdSWU9fT05MWSkubWF0Y2hUb0FycmF5KCk7CiAKICAgICAgICAgLy8gSU1QT1JUQU5UIC0gdGhlICJ0aXRsZSIgb3IgbmFtZSBvZiB0aGUgRW50cnkgbmVlZHMgdG8gYmUgdW5pcXVlCiAKQEAgLTExNSwxNCArMTMxLDE2IEBACiAgICAgICAgIGFkZENvcmVFbnRyeSgxMDAuMDBkLCAiRG91YmxlIik7CiAgICAgICAgIGFkZENvcmVFbnRyeSgxMDAuMDBmLCAiRmxvYXQiLCAiIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOwogICAgICAgICBhZGRDb3JlRW50cnkoMTAwLCAiSW50ZWdlciIpOwotICAgICAgICBhZGRDb3JlRW50cnkoQXJyYXlzLmFzTGlzdCgxLCJwZXJzb24iLCB0cnVlKSwgIkxpc3QiLCAiTGlzdCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IGNvbGxlY3Rpb24gdHlwZXMgYXMgSlNPTiBpcyBub3QgZXhwbGljaXQgZW5vdWdoIGZvciBhbGwgb2YgR3JlbWxpbidzIHJlcXVpcmVtZW50cy4iLCBub0dyYXBoU09OQmVmb3JlVjMpOworICAgICAgICBhZGRDb3JlRW50cnkoQXJyYXlzLmFzTGlzdCgxLCJwZXJzb24iLCB0cnVlKSwgIkxpc3QiLCAiTGlzdCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IGNvbGxlY3Rpb24gdHlwZXMgYXMgSlNPTiBpcyBub3QgZXhwbGljaXQgZW5vdWdoIGZvciBhbGwgb2YgR3JlbWxpbidzIHJlcXVpcmVtZW50cy4iLCBub0dyYXBoU09OQmVmb3JlVjNBbmROb0dyeW8pOwogICAgICAgICBhZGRDb3JlRW50cnkoMTAwTCwgIkxvbmciLCAiIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOworCiAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsT2JqZWN0PiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIG1hcC5wdXQoInRlc3QiLCAxMjMpOwogICAgICAgICBtYXAucHV0KG5ldyBEYXRlKDE0ODE3NTAwNzYyOTVMKSwgInJlZCIpOwogICAgICAgICBtYXAucHV0KEFycmF5cy5hc0xpc3QoMSwyLDMpLCBuZXcgRGF0ZSgxNDgxNzUwMDc2Mjk1TCkpOwotICAgICAgICBhZGRDb3JlRW50cnkobWFwLCAiTWFwIiwgIk1hcCBpcyByZWRlZmluZWQgc28gdGhhdCB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIGFsbG93IGZvciBub24tU3RyaW5nIGtleXMsIHdoaWNoIGlzIG5vdCBwb3NzaWJsZSBpbiBKU09OLiIsIG5vR3JhcGhTT05CZWZvcmVWMyk7Ci0gICAgICAgIGFkZENvcmVFbnRyeShuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoMSwicGVyc29uIiwgdHJ1ZSkpLCAiU2V0IiwgIkFsbG93cyBhIEpTT04gY29sbGVjdGlvbiB0byBiZWhhdmUgYXMgYSBTZXQuIiwgbm9HcmFwaFNPTkJlZm9yZVYzKTsKKyAgICAgICAgYWRkQ29yZUVudHJ5KG1hcCwgIk1hcCIsICJNYXAgaXMgcmVkZWZpbmVkIHNvIHRoYXQgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBhbGxvdyBmb3Igbm9uLVN0cmluZyBrZXlzLCB3aGljaCBpcyBub3QgcG9zc2libGUgaW4gSlNPTi4iLCBub0dyYXBoU09OQmVmb3JlVjNBbmROb0dyeW8pOworCisgICAgICAgIGFkZENvcmVFbnRyeShuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoMSwicGVyc29uIiwgdHJ1ZSkpLCAiU2V0IiwgIkFsbG93cyBhIEpTT04gY29sbGVjdGlvbiB0byBiZWhhdmUgYXMgYSBTZXQuIiwgbm9HcmFwaFNPTkJlZm9yZVYzQW5kTm9HcnlvKTsKICAgICAgICAgLy8gVGltZXN0YW1wIHdhcyBhZGRlZCB0byBHcnlvIDEuMCBhcyBvZiAzLjIuNC4gSXQgd2FzIG5vdCBzdXBwb3J0ZWQgaW4gMy4yLjMuCiAgICAgICAgIGFkZENvcmVFbnRyeShuZXcgamF2YS5zcWwuVGltZXN0YW1wKDE0ODE3NTAwNzYyOTVMKSwgIlRpbWVzdGFtcCIsICIiLCBub1R5cGVHcmFwaFNPTlBsdXNHcnlvM18yXzMpOwogICAgICAgICBhZGRDb3JlRW50cnkoVVVJRC5mcm9tU3RyaW5nKCI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiKSwgIlVVSUQiKTsKQEAgLTE0MCw2ICsxNTgsMTIgQEAKIAogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShTYWNrRnVuY3Rpb25zLkJhcnJpZXIubm9ybVNhY2ssICJCYXJyaWVyIiwgIiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKICAgICAgICAgYWRkR3JhcGhQcm9jZXNzRW50cnkobmV3IEJ5dGVjb2RlLkJpbmRpbmcoIngiLCAxKSwgIkJpbmRpbmciLCAiQSBcIkJpbmRpbmdcIiByZWZlcnMgdG8gYSBgQnl0ZWNvZGUuQmluZGluZ2AuIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOworCisgICAgICAgIGZpbmFsIEJ1bGtTZXQ8U3RyaW5nPiBidWxrU2V0ID0gbmV3IEJ1bGtTZXQ8PigpOworICAgICAgICBidWxrU2V0LmFkZCgibWFya28iLCAxKTsKKyAgICAgICAgYnVsa1NldC5hZGQoImpvc2giLCAyKTsKKyAgICAgICAgYWRkR3JhcGhQcm9jZXNzRW50cnkoYnVsa1NldCwgIkJ1bGtTZXQiLCAiIiwgYmVmb3JlM180XzApOworCiAgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS5vdXQoKS5pbigpLnRyZWUoKS5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSwgIkJ5dGVjb2RlIiwgIlRoZSBmb2xsb3dpbmcgYEJ5dGVjb2RlYCBleGFtcGxlIHJlcHJlc2VudHMgdGhlIHRyYXZlcnNhbCBvZiBgZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpLm91dCgpLmluKCkudHJlZSgpYC4gT2J2aW91c2x5IHRoZSBzZXJpYWxpemVkIGBCeXRlY29kZWAgd291ZGwgYmUgcXVpdGUgZGlmZmVyZW50IGZvciB0aGUgZW5kbGVzcyB2YXJpYXRpb25zIG9mIGNvbW1hbmRzIHRoYXQgY291bGQgYmUgdXNlZCB0b2dldGhlciBpbiB0aGUgR3JlbWxpbiBsYW5ndWFnZS4iLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CiAgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5Lmxpc3QsICJDYXJkaW5hbGl0eSIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CiAgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KENvbHVtbi5rZXlzLCAiQ29sdW1uIiwgIiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKQEAgLTE2Miw2ICsxODYsOCBAQAogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShQLmd0KDApLm9yKFAud2l0aGluKC0xLCAtMTAsIC0xMDApKSwgIlAgb3IiLCAiIiwgbm9UeXBlR3JhcGhTT05QbHVzR3J5bzNfMl8zKTsKICAgICAgICAgYWRkR3JhcGhQcm9jZXNzRW50cnkoU2NvcGUubG9jYWwsICJTY29wZSIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CiAgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KFQubGFiZWwsICJUIiwgIiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKKyAgICAgICAgLy8gVGV4dFAgd2FzIG9ubHkgYWRkZWQgYXQgMy40LjAgYW5kIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB1bnR5cGVkIEdyYXBoU09OIG9mIGFueSBzb3J0CisgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KFRleHRQLmNvbnRhaW5pbmcoImFyayIpLCAiVGV4dFAiLCAiIiwgYmVmb3JlM180XzApOwogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShjcmVhdGVTdGF0aWNUcmF2ZXJzYWxNZXRyaWNzKCksICJUcmF2ZXJzYWxNZXRyaWNzIiwgIiIsIG5vVHlwZUdyYXBoU09OUGx1c0dyeW8zXzNfMCk7CiAgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS5hc0FkbWluKCkubmV4dFRyYXZlcnNlcigpLCAiVHJhdmVyc2VyIiwgIiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKIApAQCAtMjMzLDcgKzI1OSw3IEBACiAgICAgICAgIGFkZEV4dGVuZGVkRW50cnkobmV3IFNob3J0KCIxMDAiKSwgIlNob3J0IiwgIiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKICAgICAgICAgYWRkRXh0ZW5kZWRFbnRyeShZZWFyLm9mKDIwMTYpLCAiWWVhciIsICJUaGUgZm9sbG93aW5nIGV4YW1wbGUgaXMgb2YgdGhlIGBZZWFyYCBcIjIwMTZcIi4iLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CiAgICAgICAgIGFkZEV4dGVuZGVkRW50cnkoWWVhck1vbnRoLm9mKDIwMTYsIDYpLCAiWWVhck1vbnRoIiwgIlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpcyBhIGBZZWFyTW9udGhgIG9mIFwiSnVuZSAyMDE2XCIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7Ci0gICAgICAgIGFkZEV4dGVuZGVkRW50cnkoWm9uZWREYXRlVGltZS5vZigyMDE2LCAxMiwgMjMsIDEyLCAxMiwgMjQsIDM2LCBab25lSWQub2YoIkdNVCsyIikpLCAiWm9uZWREYXRlVGltZSIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CisgICAgICAgIGFkZEV4dGVuZGVkRW50cnkoWm9uZWREYXRlVGltZS5vZigyMDE2LCAxMiwgMjMsIDEyLCAxMiwgMjQsIDM2LCBab25lSWQub2YoIkdNVCsyIikpLCAiWm9uZWREYXRlVGltZSIsICIiLCBub1R5cGVHcmFwaFNPTlBsdXNCcm9rZW5HcmFwaEJpbmFyeSk7CiAgICAgICAgIGFkZEV4dGVuZGVkRW50cnkoWm9uZU9mZnNldC5vZkhvdXJzTWludXRlc1NlY29uZHMoMywgNiwgOSksICJab25lT2Zmc2V0IiwgIlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpcyBhIGBab25lT2Zmc2V0YCBvZiB0aHJlZSBob3Vycywgc2l4IG1pbnV0ZXMsIGFuZCBuaW5lIHNlY29uZHMuIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOwogICAgIH0KIApAQCAtMzE4LDYgKzM0NCw3IEBACiAgICAgcHJpdmF0ZSB2b2lkIGFkZFJlcXVlc3RNZXNzYWdlRW50cnkoZmluYWwgT2JqZWN0IG9iaiwgZmluYWwgU3RyaW5nIHRpdGxlLCBmaW5hbCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKICAgICAgICAgZmluYWwgTGlzdDxDb21wYXRpYmlsaXR5PiBpbmNvbXBhdGliaWxpdHlMaXN0ID0gQ29tcGF0aWJpbGl0aWVzLndpdGgoR3J5b0NvbXBhdGliaWxpdHkuY2xhc3MpCiAgICAgICAgICAgICAgICAgLmJlZm9yZSgiMy4wIikKKyAgICAgICAgICAgICAgICAuam9pbihDb21wYXRpYmlsaXRpZXMud2l0aChHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuY2xhc3MpKQogICAgICAgICAgICAgICAgIC5tYXRjaCgpOwogCiAgICAgICAgIGZpbmFsIENvbXBhdGliaWxpdHlbXSBpbmNvbXBhdGliaWxpdGllcyA9IG5ldyBDb21wYXRpYmlsaXR5W2luY29tcGF0aWJpbGl0eUxpc3Quc2l6ZSgpXTsKQEAgLTMyOCw2ICszNTUsNyBAQAogICAgIHByaXZhdGUgdm9pZCBhZGRSZXNwb25zZU1lc3NhZ2VFbnRyeShmaW5hbCBPYmplY3Qgb2JqLCBmaW5hbCBTdHJpbmcgdGl0bGUsIGZpbmFsIFN0cmluZyBkZXNjcmlwdGlvbikgewogICAgICAgICBmaW5hbCBMaXN0PENvbXBhdGliaWxpdHk+IGluY29tcGF0aWJpbGl0eUxpc3QgPSBDb21wYXRpYmlsaXRpZXMud2l0aChHcnlvQ29tcGF0aWJpbGl0eS5jbGFzcykKICAgICAgICAgICAgICAgICAuYmVmb3JlKCIzLjAiKQorICAgICAgICAgICAgICAgIC5qb2luKENvbXBhdGliaWxpdGllcy53aXRoKEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eS5jbGFzcykpCiAgICAgICAgICAgICAgICAgLm1hdGNoKCk7CiAKICAgICAgICAgLy8gVE9ETzogdGVtcG9yYXJ5IHByb2JsZW0/IHNlZW1zIHRvIGJlIHNvbWV0aGluZyBicmVha2luZyBpbiB2ZXJ0ZXggc2VyaWFsaXphdGlvbgpAQCAtNDAxLDYgKzQyOSw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICJncnlvLSIgKyAoKEdyeW9Db21wYXRpYmlsaXR5KSBjKS5uYW1lKCk7CiAgICAgICAgICAgICBlbHNlIGlmIChjIGluc3RhbmNlb2YgR3JhcGhTT05Db21wYXRpYmlsaXR5KQogICAgICAgICAgICAgICAgIHJldHVybiAiZ3JhcGhzb24tIiArICgoR3JhcGhTT05Db21wYXRpYmlsaXR5KSBjKS5uYW1lKCk7CisgICAgICAgICAgICBlbHNlIGlmIChjIGluc3RhbmNlb2YgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KQorICAgICAgICAgICAgICAgIHJldHVybiAiZ3JhcGhiaW5hcnktIiArICgoR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KSBjKS5uYW1lKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiTm8gc3VwcG9ydCBmb3IgdGhlIHByb3ZpZGVkIENvbXBhdGliaWxpdHkgdHlwZSIpOwogICAgICAgICB9KS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpKTsKQEAgLTQ2NSw1ICs0OTUsOSBAQAogICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNHcmFwaFNPTkNvbXBhdGliaWxpdHkoKSB7CiAgICAgICAgICAgICByZXR1cm4gY29tcGF0aWJsZVdpdGguc3RyZWFtKCkuYW55TWF0Y2goYyAtPiBjIGluc3RhbmNlb2YgR3J5b0NvbXBhdGliaWxpdHkpOwogICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaGFzR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbXBhdGlibGVXaXRoLnN0cmVhbSgpLmFueU1hdGNoKGMgLT4gYyBpbnN0YW5jZW9mIEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eSk7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L0dyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eS5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9HcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDg0NTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9HcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuamF2YQpAQCAtMCwwICsxLDg5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhiaW5hcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uSU9VdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRGVmYXVsdFRyYXZlcnNhbE1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk11dGFibGVNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkNvbXBhdGliaWxpdHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZEVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFZlcnRleFByb3BlcnR5OworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgZW51bSBHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkgaW1wbGVtZW50cyBDb21wYXRpYmlsaXR5IHsKKyAgICBWMV8zXzRfMygiMy40LjMiLCAiMS4wIiwgInYxIiksCisgICAgVjFfM180XzQoIjMuNC40IiwgIjEuMCIsICJ2MSIpLAorICAgIFYxXzNfNF81KCIzLjQuNSIsICIxLjAiLCAidjEiKSwKKyAgICBWMV8zXzRfNigiMy40LjYiLCAiMS4wIiwgInYxIik7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VQID0gRmlsZS5zZXBhcmF0b3I7CisKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBncmFwaEJpbmFyeVZlcnNpb247CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdGlua2VycG9wVmVyc2lvbjsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBjb25maWd1cmF0aW9uOworCisgICAgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KGZpbmFsIFN0cmluZyB0aW5rZXJwb3BWZXJzaW9uLCBmaW5hbCBTdHJpbmcgZ3JhcGhCaW5hcnlWZXJzaW9uLCBmaW5hbCBTdHJpbmcgY29uZmlndXJhdGlvbikgeworICAgICAgICB0aGlzLnRpbmtlcnBvcFZlcnNpb24gPSB0aW5rZXJwb3BWZXJzaW9uOworICAgICAgICB0aGlzLmdyYXBoQmluYXJ5VmVyc2lvbiA9IGdyYXBoQmluYXJ5VmVyc2lvbjsKKyAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYnl0ZVtdIHJlYWRGcm9tUmVzb3VyY2UoZmluYWwgU3RyaW5nIHJlc291cmNlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgdGVzdFJlc291cmNlID0gIl8iICsgdGlua2VycG9wVmVyc2lvbi5yZXBsYWNlKCIuIiwgIl8iKSArIFNFUCArIHJlc291cmNlICsgIi0iICsgY29uZmlndXJhdGlvbiArICIuZ2JpbiI7CisgICAgICAgIHJldHVybiBJT1V0aWxzLnRvQnl0ZUFycmF5KGdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSh0ZXN0UmVzb3VyY2UpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIGdldFJlbGVhc2VWZXJzaW9uKCkgeworICAgICAgICByZXR1cm4gdGlua2VycG9wVmVyc2lvbjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIGdldFZlcnNpb24oKSB7CisgICAgICAgIHJldHVybiBncmFwaEJpbmFyeVZlcnNpb247CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyBnZXRDb25maWd1cmF0aW9uKCkgeworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gdGlua2VycG9wVmVyc2lvbiArICItIiArIGNvbmZpZ3VyYXRpb247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTkNvbXBhdGliaWxpdHkuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Db21wYXRpYmlsaXR5LmphdmEKaW5kZXggMDllYjk2OS4uNTMyZGFmNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTkNvbXBhdGliaWxpdHkuamF2YQorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OQ29tcGF0aWJpbGl0eS5qYXZhCkBAIC05OSw3ICs5OSwzNSBAQAogICAgIFYxRDBfM18zXzExKCIzLjMuMTEiLCAiMS4wIiwgInYxZDAiKSwKICAgICBWMkQwX1BBUlRJQUxfM18zXzExKCIzLjMuMTEiLCAiMi4wIiwgInYyZDAtcGFydGlhbCIpLAogICAgIFYyRDBfTk9fVFlQRV8zXzNfMTEoIjMuMy4xMSIsICIyLjAiLCAidjJkMC1uby10eXBlcyIpLAotICAgIFYzRDBfUEFSVElBTF8zXzNfMTEoIjMuMy4xMSIsICIzLjAiLCAidjNkMCIpOworICAgIFYzRDBfUEFSVElBTF8zXzNfMTEoIjMuMy4xMSIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzAoIjMuNC4wIiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjJEMF9QQVJUSUFMXzNfNF8wKCIzLjQuMCIsICIyLjAiLCAidjJkMC1wYXJ0aWFsIiksCisgICAgVjJEMF9OT19UWVBFXzNfNF8wKCIzLjQuMCIsICIyLjAiLCAidjJkMC1uby10eXBlcyIpLAorICAgIFYzRDBfUEFSVElBTF8zXzRfMCgiMy40LjAiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF8xKCIzLjQuMSIsICIxLjAiLCAidjFkMCIpLAorICAgIFYyRDBfUEFSVElBTF8zXzRfMSgiMy40LjEiLCAiMi4wIiwgInYyZDAtcGFydGlhbCIpLAorICAgIFYyRDBfTk9fVFlQRV8zXzRfMSgiMy40LjEiLCAiMi4wIiwgInYyZDAtbm8tdHlwZXMiKSwKKyAgICBWM0QwX1BBUlRJQUxfM180XzEoIjMuNC4xIiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfMigiMy40LjIiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWMkQwX1BBUlRJQUxfM180XzIoIjMuNC4yIiwgIjIuMCIsICJ2MmQwLXBhcnRpYWwiKSwKKyAgICBWMkQwX05PX1RZUEVfM180XzIoIjMuNC4yIiwgIjIuMCIsICJ2MmQwLW5vLXR5cGVzIiksCisgICAgVjNEMF9QQVJUSUFMXzNfNF8yKCIzLjQuMiIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzMoIjMuNC4zIiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjJEMF9QQVJUSUFMXzNfNF8zKCIzLjQuMyIsICIyLjAiLCAidjJkMC1wYXJ0aWFsIiksCisgICAgVjJEMF9OT19UWVBFXzNfNF8zKCIzLjQuMyIsICIyLjAiLCAidjJkMC1uby10eXBlcyIpLAorICAgIFYzRDBfUEFSVElBTF8zXzRfMygiMy40LjMiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF80KCIzLjQuNCIsICIxLjAiLCAidjFkMCIpLAorICAgIFYyRDBfUEFSVElBTF8zXzRfNCgiMy40LjQiLCAiMi4wIiwgInYyZDAtcGFydGlhbCIpLAorICAgIFYyRDBfTk9fVFlQRV8zXzRfNCgiMy40LjQiLCAiMi4wIiwgInYyZDAtbm8tdHlwZXMiKSwKKyAgICBWM0QwX1BBUlRJQUxfM180XzQoIjMuNC40IiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfNSgiMy40LjUiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWMkQwX1BBUlRJQUxfM180XzUoIjMuNC41IiwgIjIuMCIsICJ2MmQwLXBhcnRpYWwiKSwKKyAgICBWMkQwX05PX1RZUEVfM180XzUoIjMuNC41IiwgIjIuMCIsICJ2MmQwLW5vLXR5cGVzIiksCisgICAgVjNEMF9QQVJUSUFMXzNfNF81KCIzLjQuNSIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzYoIjMuNC42IiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjJEMF9QQVJUSUFMXzNfNF82KCIzLjQuNiIsICIyLjAiLCAidjJkMC1wYXJ0aWFsIiksCisgICAgVjJEMF9OT19UWVBFXzNfNF82KCIzLjQuNiIsICIyLjAiLCAidjJkMC1uby10eXBlcyIpLAorICAgIFYzRDBfUEFSVElBTF8zXzRfNigiMy40LjYiLCAiMy4wIiwgInYzZDAiKTsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVAgPSBGaWxlLnNlcGFyYXRvcjsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9Db21wYXRpYmlsaXR5LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b0NvbXBhdGliaWxpdHkuamF2YQppbmRleCBlYWNjZjBjLi5hNGMzMjZhIDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b0NvbXBhdGliaWxpdHkuamF2YQorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b0NvbXBhdGliaWxpdHkuamF2YQpAQCAtNzUsNyArNzUsMjEgQEAKICAgICBWMUQwXzNfM18xMCgiMy4zLjEwIiwgIjEuMCIsICJ2MWQwIiksCiAgICAgVjNEMF8zXzNfMTAoIjMuMy4xMCIsICIzLjAiLCAidjNkMCIpLAogICAgIFYxRDBfM18zXzExKCIzLjMuMTEiLCAiMS4wIiwgInYxZDAiKSwKLSAgICBWM0QwXzNfM18xMSgiMy4zLjExIiwgIjMuMCIsICJ2M2QwIik7CisgICAgVjNEMF8zXzNfMTEoIjMuMy4xMSIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzAoIjMuNC4wIiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjNEMF8zXzRfMCgiMy40LjAiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF8xKCIzLjQuMSIsICIxLjAiLCAidjFkMCIpLAorICAgIFYzRDBfM180XzEoIjMuNC4xIiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfMigiMy40LjIiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWM0QwXzNfNF8yKCIzLjQuMiIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzMoIjMuNC4zIiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjNEMF8zXzRfMygiMy40LjMiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF80KCIzLjQuNCIsICIxLjAiLCAidjFkMCIpLAorICAgIFYzRDBfM180XzQoIjMuNC40IiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfNSgiMy40LjUiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWM0QwXzNfNF81KCIzLjQuNSIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzYoIjMuNC42IiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjNEMF8zXzRfNigiMy40LjYiLCAiMy4wIiwgInYzZDAiKTsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVAgPSBGaWxlLnNlcGFyYXRvcjsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9BYnN0cmFjdENvbXBhdGliaWxpdHlUZXN0LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0Fic3RyYWN0Q29tcGF0aWJpbGl0eVRlc3QuamF2YQppbmRleCA5OWYyZGUwLi5iM2MyMjY2IDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0Fic3RyYWN0Q29tcGF0aWJpbGl0eVRlc3QuamF2YQorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0Fic3RyYWN0Q29tcGF0aWJpbGl0eVRlc3QuamF2YQpAQCAtMjIsNiArMjIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaGJpbmFyeS5HcmFwaEJpbmFyeUNvbXBhdGliaWxpdHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiAKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CkBAIC01MSwxNyArNTIsMjAgQEAKICAgICBwcm90ZWN0ZWQgdm9pZCBhc3NlcnRWZXJ0ZXgoZmluYWwgVmVydGV4IGV4cGVjdGVkLCBmaW5hbCBWZXJ0ZXggYWN0dWFsKSB7CiAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5pZCgpLCBhY3R1YWwuaWQoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5sYWJlbCgpLCBhY3R1YWwubGFiZWwoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscyhJdGVyYXRvclV0aWxzLmNvdW50KGV4cGVjdGVkLnByb3BlcnRpZXMoKSksIEl0ZXJhdG9yVXRpbHMuY291bnQoYWN0dWFsLnByb3BlcnRpZXMoKSkpOwotICAgICAgICBmb3IgKFN0cmluZyBrIDogZXhwZWN0ZWQua2V5cygpKSB7Ci0gICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjxWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+PiBleHBlY3RlZFZwcyA9IGV4cGVjdGVkLnByb3BlcnRpZXMoayk7Ci0gICAgICAgICAgICBmaW5hbCBMaXN0PFZlcnRleFByb3BlcnR5PE9iamVjdD4+IGFjdHVhbFZwcyA9IEl0ZXJhdG9yVXRpbHMubGlzdChhY3R1YWwucHJvcGVydGllcyhrKSk7Ci0gICAgICAgICAgICB3aGlsZSAoZXhwZWN0ZWRWcHMuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgVmVydGV4UHJvcGVydHkgZXhwZWN0ZWRWcCA9IGV4cGVjdGVkVnBzLm5leHQoKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+IGZvdW5kID0gYWN0dWFsVnBzLnN0cmVhbSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHZwIC0+IHZwLmlkKCkuZXF1YWxzKGV4cGVjdGVkVnAuaWQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAuZmluZEZpcnN0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIC5vckVsc2VUaHJvdygoKSAtPiBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgVmVydGV4UHJvcGVydHkgZm9yICIgKyBleHBlY3RlZFZwLmlkKCkpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRWZXJ0ZXhQcm9wZXJ0eShleHBlY3RlZFZwLCBmb3VuZCk7CisKKyAgICAgICAgaWYgKCEoZ2V0Q29tcGF0aWJpbGl0eSgpIGluc3RhbmNlb2YgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KSkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKEl0ZXJhdG9yVXRpbHMuY291bnQoZXhwZWN0ZWQucHJvcGVydGllcygpKSwgSXRlcmF0b3JVdGlscy5jb3VudChhY3R1YWwucHJvcGVydGllcygpKSk7CisgICAgICAgICAgICBmb3IgKFN0cmluZyBrIDogZXhwZWN0ZWQua2V5cygpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgSXRlcmF0b3I8VmVydGV4UHJvcGVydHk8T2JqZWN0Pj4gZXhwZWN0ZWRWcHMgPSBleHBlY3RlZC5wcm9wZXJ0aWVzKGspOworICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8VmVydGV4UHJvcGVydHk8T2JqZWN0Pj4gYWN0dWFsVnBzID0gSXRlcmF0b3JVdGlscy5saXN0KGFjdHVhbC5wcm9wZXJ0aWVzKGspKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoZXhwZWN0ZWRWcHMuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5IGV4cGVjdGVkVnAgPSBleHBlY3RlZFZwcy5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5PE9iamVjdD4gZm91bmQgPSBhY3R1YWxWcHMuc3RyZWFtKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHZwIC0+IHZwLmlkKCkuZXF1YWxzKGV4cGVjdGVkVnAuaWQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmRGaXJzdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9yRWxzZVRocm93KCgpIC0+IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCBWZXJ0ZXhQcm9wZXJ0eSBmb3IgIiArIGV4cGVjdGVkVnAuaWQoKSkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRWZXJ0ZXhQcm9wZXJ0eShleHBlY3RlZFZwLCBmb3VuZCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNjksMjYgKzczLDMxIEBACiAgICAgcHJvdGVjdGVkIHZvaWQgYXNzZXJ0RWRnZShmaW5hbCBFZGdlIGV4cGVjdGVkLCBmaW5hbCBFZGdlIGFjdHVhbCkgewogICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQuaWQoKSwgYWN0dWFsLmlkKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQubGFiZWwoKSwgYWN0dWFsLmxhYmVsKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoSXRlcmF0b3JVdGlscy5jb3VudChleHBlY3RlZC5wcm9wZXJ0aWVzKCkpLCBJdGVyYXRvclV0aWxzLmNvdW50KGFjdHVhbC5wcm9wZXJ0aWVzKCkpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmluVmVydGV4KCkuaWQoKSwgYWN0dWFsLmluVmVydGV4KCkuaWQoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5vdXRWZXJ0ZXgoKS5pZCgpLCBhY3R1YWwub3V0VmVydGV4KCkuaWQoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5pblZlcnRleCgpLmxhYmVsKCksIGFjdHVhbC5pblZlcnRleCgpLmxhYmVsKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQub3V0VmVydGV4KCkubGFiZWwoKSwgYWN0dWFsLm91dFZlcnRleCgpLmxhYmVsKCkpOwotICAgICAgICBmaW5hbCBJdGVyYXRvcjxQcm9wZXJ0eTxPYmplY3Q+PiBpdHR5ID0gZXhwZWN0ZWQucHJvcGVydGllcygpOwotICAgICAgICB3aGlsZShpdHR5Lmhhc05leHQoKSkgewotICAgICAgICAgICAgZmluYWwgUHJvcGVydHkgcCA9IGl0dHkubmV4dCgpOwotICAgICAgICAgICAgYXNzZXJ0UHJvcGVydHkocCwgYWN0dWFsLnByb3BlcnR5KHAua2V5KCkpKTsKKyAgICAgICAgaWYgKCEoZ2V0Q29tcGF0aWJpbGl0eSgpIGluc3RhbmNlb2YgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KSkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKEl0ZXJhdG9yVXRpbHMuY291bnQoZXhwZWN0ZWQucHJvcGVydGllcygpKSwgSXRlcmF0b3JVdGlscy5jb3VudChhY3R1YWwucHJvcGVydGllcygpKSk7CisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjxQcm9wZXJ0eTxPYmplY3Q+PiBpdHR5ID0gZXhwZWN0ZWQucHJvcGVydGllcygpOworICAgICAgICAgICAgd2hpbGUoaXR0eS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBQcm9wZXJ0eSBwID0gaXR0eS5uZXh0KCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0UHJvcGVydHkocCwgYWN0dWFsLnByb3BlcnR5KHAua2V5KCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIHByb3RlY3RlZCB2b2lkIGFzc2VydFZlcnRleFByb3BlcnR5KGZpbmFsIFZlcnRleFByb3BlcnR5IGV4cGVjdGVkLCBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSBhY3R1YWwpIHsKICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmlkKCksIGFjdHVhbC5pZCgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmxhYmVsKCksIGFjdHVhbC5sYWJlbCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKEl0ZXJhdG9yVXRpbHMuY291bnQoZXhwZWN0ZWQucHJvcGVydGllcygpKSwgSXRlcmF0b3JVdGlscy5jb3VudChhY3R1YWwucHJvcGVydGllcygpKSk7Ci0gICAgICAgIGZpbmFsIEl0ZXJhdG9yPFByb3BlcnR5PiBpdHR5ID0gZXhwZWN0ZWQucHJvcGVydGllcygpOwotICAgICAgICB3aGlsZShpdHR5Lmhhc05leHQoKSkgewotICAgICAgICAgICAgZmluYWwgUHJvcGVydHkgcCA9IGl0dHkubmV4dCgpOwotICAgICAgICAgICAgYXNzZXJ0UHJvcGVydHkocCwgYWN0dWFsLnByb3BlcnR5KHAua2V5KCkpKTsKKworICAgICAgICBpZiAoIShnZXRDb21wYXRpYmlsaXR5KCkgaW5zdGFuY2VvZiBHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkpKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoSXRlcmF0b3JVdGlscy5jb3VudChleHBlY3RlZC5wcm9wZXJ0aWVzKCkpLCBJdGVyYXRvclV0aWxzLmNvdW50KGFjdHVhbC5wcm9wZXJ0aWVzKCkpKTsKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFByb3BlcnR5PiBpdHR5ID0gZXhwZWN0ZWQucHJvcGVydGllcygpOworICAgICAgICAgICAgd2hpbGUgKGl0dHkuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUHJvcGVydHkgcCA9IGl0dHkubmV4dCgpOworICAgICAgICAgICAgICAgIGFzc2VydFByb3BlcnR5KHAsIGFjdHVhbC5wcm9wZXJ0eShwLmtleSgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RUeXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0Fic3RyYWN0VHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhCmluZGV4IDY3ZTU5MDEuLmYzNGE2YzQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RUeXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9BYnN0cmFjdFR5cGVkQ29tcGF0aWJpbGl0eVRlc3QuamF2YQpAQCAtMjgsNiArMjgsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuVHJlZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuTWV0cmljczsKQEAgLTg0MCw2ICs4NDEsMTkgQEAKICAgICB9CiAKICAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlYWRXcml0ZVRleHRQKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyByZXNvdXJjZU5hbWUgPSAidGV4dHAiOworICAgICAgICBhc3N1bWVDb21wYXRpYmlsaXR5KHJlc291cmNlTmFtZSk7CisKKyAgICAgICAgZmluYWwgVGV4dFAgcmVzb3VyY2UgPSBmaW5kTW9kZWxFbnRyeU9iamVjdChyZXNvdXJjZU5hbWUpOworICAgICAgICBmaW5hbCBUZXh0UCBmcm9tU3RhdGljID0gcmVhZChnZXRDb21wYXRpYmlsaXR5KCkucmVhZEZyb21SZXNvdXJjZShyZXNvdXJjZU5hbWUpLCBUZXh0UC5jbGFzcyk7CisgICAgICAgIGZpbmFsIFRleHRQIHJlY3ljbGVkID0gcmVhZCh3cml0ZShmcm9tU3RhdGljLCBUZXh0UC5jbGFzcyksIFRleHRQLmNsYXNzKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGZyb21TdGF0aWMsIHJlY3ljbGVkKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHJlc291cmNlLCBmcm9tU3RhdGljKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHJlc291cmNlLCByZWN5Y2xlZCk7CisgICAgfQorCisgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRSZWFkV3JpdGVUaW1lc3RhbXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgU3RyaW5nIHJlc291cmNlTmFtZSA9ICJ0aW1lc3RhbXAiOwogICAgICAgICBhc3N1bWVDb21wYXRpYmlsaXR5KHJlc291cmNlTmFtZSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L0dyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eVRlc3QuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MjkxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L0dyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eVRlc3QuamF2YQpAQCAtMCwwICsxLDg2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhiaW5hcnk7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8ub3V0cHV0LkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuTmV0dHlCdWZmZXJGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQWJzdHJhY3RUeXBlZENvbXBhdGliaWxpdHlUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Db21wYXRpYmlsaXR5OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5QYXJhbWV0ZXJpemVkOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BSdW5XaXRoKFBhcmFtZXRlcml6ZWQuY2xhc3MpCitwdWJsaWMgY2xhc3MgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5VGVzdCBleHRlbmRzIEFic3RyYWN0VHlwZWRDb21wYXRpYmlsaXR5VGVzdCB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IEJ5dGVCdWZBbGxvY2F0b3IuREVGQVVMVDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciB3cml0ZXJWMSA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIHJlYWRlclYxID0gbmV3IEdyYXBoQmluYXJ5UmVhZGVyKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXJzKG5hbWUgPSAiZXhwZWN0KHswfSkiKQorICAgIHB1YmxpYyBzdGF0aWMgSXRlcmFibGU8T2JqZWN0W10+IGRhdGEoKSB7CisgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgIHtHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuVjFfM180XzQsIHJlYWRlclYxLCB3cml0ZXJWMSB9LAorICAgICAgICAgICAgICAgIHtHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuVjFfM180XzQsIHJlYWRlclYxLCB3cml0ZXJWMSB9LAorICAgICAgICAgICAgICAgIHtHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuVjFfM180XzUsIHJlYWRlclYxLCB3cml0ZXJWMSB9LAorICAgICAgICAgICAgICAgIHtHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuVjFfM180XzYsIHJlYWRlclYxLCB3cml0ZXJWMSB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDApCisgICAgcHVibGljIENvbXBhdGliaWxpdHkgY29tcGF0aWJpbGl0eTsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDEpCisgICAgcHVibGljIEdyYXBoQmluYXJ5UmVhZGVyIHJlYWRlcjsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDIpCisgICAgcHVibGljIEdyYXBoQmluYXJ5V3JpdGVyIHdyaXRlcjsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8VD4gVCByZWFkKGZpbmFsIGJ5dGVbXSBieXRlcywgZmluYWwgQ2xhc3M8VD4gY2xhenopIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBCdWZmZXIgYnVmZmVyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigpKTsKKyAgICAgICAgYnVmZmVyLndyaXRlQnl0ZXMoYnl0ZXMpOworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoYnVmZmVyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYnl0ZVtdIHdyaXRlKGZpbmFsIE9iamVjdCBvLCBmaW5hbCBDbGFzczw/PiBjbGF6eikgdGhyb3dzIEV4Y2VwdGlvbiAgeworICAgICAgICBmaW5hbCBCdWZmZXIgYnVmZmVyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigpKTsKKyAgICAgICAgdHJ5IChCeXRlQXJyYXlPdXRwdXRTdHJlYW0gc3RyZWFtID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpKSB7CisgICAgICAgICAgICB3cml0ZXIud3JpdGUobywgYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFkZXJJbmRleCgwKTsKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFkQnl0ZXMoc3RyZWFtLCBidWZmZXIucmVhZGFibGVCeXRlcygpKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJlYW0udG9CeXRlQXJyYXkoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBDb21wYXRpYmlsaXR5IGdldENvbXBhdGliaWxpdHkoKSB7CisgICAgICAgIHJldHVybiBjb21wYXRpYmlsaXR5OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05UeXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhCmluZGV4IDQyZmJiMmMuLjg2ZDdlNGYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05UeXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlR5cGVkQ29tcGF0aWJpbGl0eVRlc3QuamF2YQpAQCAtODEsNyArODEsMjIgQEAKICAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfUEFSVElBTF8zXzNfMTAsIG1hcHBlclYyIH0sCiAgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM18zXzEwLCBtYXBwZXJWMyB9LAogICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfM18xMSwgbWFwcGVyVjIgfSwKLSAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYzRDBfUEFSVElBTF8zXzNfMTEsIG1hcHBlclYzIH19KTsKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYzRDBfUEFSVElBTF8zXzNfMTEsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM180XzAsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzAsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM180XzEsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzEsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM180XzIsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzIsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM180XzMsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzMsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM180XzQsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzQsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM180XzUsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzUsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM180XzYsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzYsIG1hcHBlclYzIH0KKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVyKHZhbHVlID0gMCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05VbnR5cGVkQ29tcGF0aWJpbGl0eVRlc3QuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05VbnR5cGVkQ29tcGF0aWJpbGl0eVRlc3QuamF2YQppbmRleCBlNjFjMzVlLi45N2Q0MzU5IDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVW50eXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlVudHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhCkBAIC04OSw3ICs4OSwyMSBAQAogICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzNfMTAsIG1hcHBlclYxIH0sCiAgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM18zXzEwLCBtYXBwZXJWMiB9LAogICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzNfMTEsIG1hcHBlclYxIH0sCi0gICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM18zXzExLCBtYXBwZXJWMiB9CisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM18zXzExLCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzRfMCwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfTk9fVFlQRV8zXzRfMCwgbWFwcGVyVjIgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM180XzEsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM180XzEsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfNF8yLCBtYXBwZXJWMSB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfNF8yLCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzRfMywgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfTk9fVFlQRV8zXzRfMywgbWFwcGVyVjIgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM180XzQsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM180XzQsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfNF81LCBtYXBwZXJWMSB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfNF81LCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzRfNiwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfTk9fVFlQRV8zXzRfNiwgbWFwcGVyVjIgfQogICAgICAgICB9KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvQ29tcGF0aWJpbGl0eVRlc3QuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvQ29tcGF0aWJpbGl0eVRlc3QuamF2YQppbmRleCBjYjA4ZDgyLi43NmI0OTgxIDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b0NvbXBhdGliaWxpdHlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9Db21wYXRpYmlsaXR5VGVzdC5qYXZhCkBAIC03OCw3ICs3OCwyMiBAQAogICAgICAgICAgICAgICAgIHtHcnlvQ29tcGF0aWJpbGl0eS5WMUQwXzNfM18xMCwgbWFwcGVyVjEgfSwKICAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzNfMTAsIG1hcHBlclYzIH0sCiAgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM18zXzExLCBtYXBwZXJWMSB9LAotICAgICAgICAgICAgICAgIHtHcnlvQ29tcGF0aWJpbGl0eS5WM0QwXzNfM18xMSwgbWFwcGVyVjMgfX0pOworICAgICAgICAgICAgICAgIHtHcnlvQ29tcGF0aWJpbGl0eS5WM0QwXzNfM18xMSwgbWFwcGVyVjMgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzRfMCwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzRfMCwgbWFwcGVyVjMgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzRfMSwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzRfMSwgbWFwcGVyVjMgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzRfMiwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzRfMiwgbWFwcGVyVjMgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzRfMywgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzRfMywgbWFwcGVyVjMgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzRfNCwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzRfNCwgbWFwcGVyVjMgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzRfNSwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzRfNSwgbWFwcGVyVjMgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzRfNiwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzRfNiwgbWFwcGVyVjMgfQorICAgICAgICB9KTsKICAgICB9CiAKICAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAwKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iYXJyaWVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2JhcnJpZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTA1ODYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iYXJyaWVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaWdkZWNpbWFsLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2JpZ2RlY2ltYWwtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjFkOTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaWdkZWNpbWFsLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaWdpbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2JpZ2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODQxZmJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaWdpbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaW5kaW5nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2JpbmRpbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTYyMGViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaW5kaW5nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9idWxrc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2J1bGtzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQyOTA2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9idWxrc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2J5dGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk1NDRmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlYnVmZmVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2J5dGVidWZmZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTc5M2QyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlYnVmZmVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlY29kZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlY29kZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzZjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2J5dGVjb2RlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jYXJkaW5hbGl0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jYXJkaW5hbGl0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjODc1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2NhcmRpbmFsaXR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jaGFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2NoYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQ5N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jaGFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jbGFzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jbGFzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZTI3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2NsYXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jb2x1bW4tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY29sdW1uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MDVjOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY29sdW1uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2RhdGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhlMTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kaXJlY3Rpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZGlyZWN0aW9uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhYWJhMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZGlyZWN0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kb3VibGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZG91YmxlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzOGE2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZG91YmxlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kdXJhdGlvbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kdXJhdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZmEzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2R1cmF0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9lZGdlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2VkZ2UtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlODVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9lZGdlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9mbG9hdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9mbG9hdC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMjc3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2Zsb2F0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbmV0YWRkcmVzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbmV0YWRkcmVzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MTNkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2luZXRhZGRyZXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbnN0YW50LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2luc3RhbnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzM1NTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbnN0YW50LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGMyNDZhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sYW1iZGEtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbGFtYmRhLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlOThmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbGFtYmRhLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9saXN0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xpc3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWE0MDVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9saXN0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb2NhbGRhdGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWxkYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM5ZTIxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWxkYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb2NhbGRhdGV0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xvY2FsZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTBjODNjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb2NhbHRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWx0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU3ODVjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWx0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb25nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xvbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWUwMDgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb25nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9tYXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbWFwLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjZDllMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbWFwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9tZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL21ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE3N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9tZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9tb250aGRheS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9tb250aGRheS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMjgyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL21vbnRoZGF5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vZmZzZXRkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vZmZzZXRkYXRldGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL29mZnNldGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vZmZzZXR0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL29mZnNldHRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGM4YzViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vZmZzZXR0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vcGVyYXRvci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vcGVyYXRvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NzE3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL29wZXJhdG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vcmRlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vcmRlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMWI2YWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL29yZGVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3AtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYwNzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wYW5kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3BhbmQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjM3Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wYW5kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wYXRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3BhdGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTA3NWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wYXRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wZXJpb2QtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGVyaW9kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkYWIzNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGVyaW9kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9waWNrLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3BpY2stdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2FjYTJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9waWNrLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wb3AtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcG9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5OGM5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcG9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wb3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcG9yLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwYjNhYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzM0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3Byb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wd2l0aGluLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3B3aXRoaW4tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWQzMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wd2l0aGluLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wd2l0aG91dC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wd2l0aG91dC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTk1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3B3aXRob3V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9zY29wZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9zY29wZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNGI5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3Njb3BlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9zZXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkZjA1OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9zaG9ydC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9zaG9ydC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZDJkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3Nob3J0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjM3NmRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90ZXh0cC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90ZXh0cC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OTY0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3RleHRwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90aW1lc3RhbXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdGltZXN0YW1wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjNGU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdGltZXN0YW1wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90aW5rZXJncmFwaC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90aW5rZXJncmFwaC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYTc2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3RpbmtlcmdyYXBoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3RyYXZlcnNhbG1ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTQ3ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90cmF2ZXJzZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdHJhdmVyc2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU0N2NjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdHJhdmVyc2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy91dWlkLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3V1aWQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjE3NzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy91dWlkLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy92ZXJ0ZXgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdmVydGV4LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiOWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdmVydGV4LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZjAzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy95ZWFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3llYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmUwYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy95ZWFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy95ZWFybW9udGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMveWVhcm1vbnRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxYTEyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMveWVhcm1vbnRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy96b25lZGRhdGV0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmUyZThiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy96b25lZGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy96b25lb2Zmc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3pvbmVvZmZzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODY3Yzk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy96b25lb2Zmc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iYXJyaWVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2JhcnJpZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTA1ODYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iYXJyaWVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaWdkZWNpbWFsLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2JpZ2RlY2ltYWwtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjFkOTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaWdkZWNpbWFsLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaWdpbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2JpZ2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODQxZmJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaWdpbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaW5kaW5nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2JpbmRpbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTYyMGViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaW5kaW5nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9idWxrc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2J1bGtzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQyOTA2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9idWxrc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2J5dGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk1NDRmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlYnVmZmVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2J5dGVidWZmZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTc5M2QyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlYnVmZmVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlY29kZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlY29kZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzZjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2J5dGVjb2RlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jYXJkaW5hbGl0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jYXJkaW5hbGl0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjODc1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2NhcmRpbmFsaXR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jaGFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2NoYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQ5N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jaGFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jbGFzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jbGFzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZTI3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2NsYXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jb2x1bW4tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY29sdW1uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MDVjOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY29sdW1uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2RhdGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhlMTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kaXJlY3Rpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZGlyZWN0aW9uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhYWJhMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZGlyZWN0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kb3VibGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZG91YmxlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzOGE2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZG91YmxlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kdXJhdGlvbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kdXJhdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZmEzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2R1cmF0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9lZGdlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2VkZ2UtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlODVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9lZGdlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9mbG9hdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9mbG9hdC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMjc3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2Zsb2F0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbmV0YWRkcmVzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbmV0YWRkcmVzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MTNkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2luZXRhZGRyZXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbnN0YW50LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2luc3RhbnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzM1NTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbnN0YW50LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGMyNDZhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sYW1iZGEtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbGFtYmRhLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlOThmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbGFtYmRhLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9saXN0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xpc3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWE0MDVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9saXN0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb2NhbGRhdGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWxkYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM5ZTIxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWxkYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb2NhbGRhdGV0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTBjODNjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb2NhbHRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWx0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU3ODVjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWx0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb25nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xvbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWUwMDgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb25nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9tYXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbWFwLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjZDllMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbWFwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9tZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L21ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE3N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9tZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9tb250aGRheS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9tb250aGRheS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMjgyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L21vbnRoZGF5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vZmZzZXRkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vZmZzZXRkYXRldGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L29mZnNldGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vZmZzZXR0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L29mZnNldHRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGM4YzViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vZmZzZXR0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vcGVyYXRvci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vcGVyYXRvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NzE3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L29wZXJhdG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vcmRlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vcmRlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMWI2YWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L29yZGVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3AtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYwNzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wYW5kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3BhbmQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjM3Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wYW5kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wYXRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3BhdGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTA3NWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wYXRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wZXJpb2QtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGVyaW9kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkYWIzNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGVyaW9kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9waWNrLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3BpY2stdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2FjYTJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9waWNrLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wb3AtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcG9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5OGM5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcG9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wb3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcG9yLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwYjNhYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzM0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3Byb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wd2l0aGluLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3B3aXRoaW4tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWQzMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wd2l0aGluLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wd2l0aG91dC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wd2l0aG91dC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTk1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3B3aXRob3V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9zY29wZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9zY29wZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNGI5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3Njb3BlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9zZXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkZjA1OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9zaG9ydC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9zaG9ydC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZDJkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3Nob3J0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjM3NmRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90ZXh0cC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90ZXh0cC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OTY0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3RleHRwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90aW1lc3RhbXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdGltZXN0YW1wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjNGU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdGltZXN0YW1wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90aW5rZXJncmFwaC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90aW5rZXJncmFwaC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYTc2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3RpbmtlcmdyYXBoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTQ3ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90cmF2ZXJzZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdHJhdmVyc2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU0N2NjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdHJhdmVyc2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC91dWlkLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3V1aWQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjE3NzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC91dWlkLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC92ZXJ0ZXgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdmVydGV4LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiOWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdmVydGV4LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZjAzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3ZlcnRleHByb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC95ZWFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3llYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmUwYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC95ZWFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC95ZWFybW9udGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQveWVhcm1vbnRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxYTEyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQveWVhcm1vbnRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC96b25lb2Zmc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3pvbmVvZmZzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODY3Yzk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC96b25lb2Zmc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iYXJyaWVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2JhcnJpZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTA1ODYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iYXJyaWVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaWdkZWNpbWFsLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2JpZ2RlY2ltYWwtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjFkOTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaWdkZWNpbWFsLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaWdpbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2JpZ2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODQxZmJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaWdpbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaW5kaW5nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2JpbmRpbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTYyMGViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaW5kaW5nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9idWxrc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2J1bGtzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQyOTA2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9idWxrc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2J5dGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk1NDRmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlYnVmZmVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2J5dGVidWZmZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTc5M2QyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlYnVmZmVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlY29kZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlY29kZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzZjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2J5dGVjb2RlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jYXJkaW5hbGl0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jYXJkaW5hbGl0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjODc1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2NhcmRpbmFsaXR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jaGFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2NoYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQ5N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jaGFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jbGFzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jbGFzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZTI3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2NsYXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jb2x1bW4tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY29sdW1uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MDVjOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY29sdW1uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2RhdGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhlMTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kaXJlY3Rpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZGlyZWN0aW9uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhYWJhMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZGlyZWN0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kb3VibGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZG91YmxlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzOGE2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZG91YmxlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kdXJhdGlvbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kdXJhdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZmEzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2R1cmF0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9lZGdlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2VkZ2UtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlODVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9lZGdlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9mbG9hdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9mbG9hdC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMjc3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2Zsb2F0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbmV0YWRkcmVzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbmV0YWRkcmVzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MTNkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2luZXRhZGRyZXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbnN0YW50LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2luc3RhbnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzM1NTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbnN0YW50LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGMyNDZhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sYW1iZGEtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbGFtYmRhLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlOThmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbGFtYmRhLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9saXN0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xpc3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWE0MDVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9saXN0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb2NhbGRhdGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWxkYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM5ZTIxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWxkYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb2NhbGRhdGV0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTBjODNjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb2NhbHRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWx0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU3ODVjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWx0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb25nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xvbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWUwMDgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb25nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9tYXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbWFwLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjZDllMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbWFwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9tZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L21ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE3N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9tZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9tb250aGRheS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9tb250aGRheS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMjgyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L21vbnRoZGF5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vZmZzZXRkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vZmZzZXRkYXRldGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L29mZnNldGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vZmZzZXR0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L29mZnNldHRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGM4YzViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vZmZzZXR0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vcGVyYXRvci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vcGVyYXRvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NzE3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L29wZXJhdG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vcmRlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vcmRlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMWI2YWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L29yZGVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3AtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYwNzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wYW5kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3BhbmQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjM3Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wYW5kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wYXRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3BhdGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTA3NWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wYXRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wZXJpb2QtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGVyaW9kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkYWIzNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGVyaW9kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9waWNrLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3BpY2stdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2FjYTJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9waWNrLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wb3AtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcG9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5OGM5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcG9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wb3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcG9yLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwYjNhYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzM0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3Byb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wd2l0aGluLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3B3aXRoaW4tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWQzMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wd2l0aGluLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wd2l0aG91dC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wd2l0aG91dC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTk1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3B3aXRob3V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9zY29wZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9zY29wZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNGI5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3Njb3BlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9zZXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkZjA1OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9zaG9ydC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9zaG9ydC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZDJkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3Nob3J0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjM3NmRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90ZXh0cC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90ZXh0cC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OTY0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3RleHRwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90aW1lc3RhbXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdGltZXN0YW1wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjNGU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdGltZXN0YW1wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90aW5rZXJncmFwaC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90aW5rZXJncmFwaC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYTc2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3RpbmtlcmdyYXBoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTQ3ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90cmF2ZXJzZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdHJhdmVyc2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU0N2NjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdHJhdmVyc2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS91dWlkLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3V1aWQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjE3NzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS91dWlkLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS92ZXJ0ZXgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdmVydGV4LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiOWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdmVydGV4LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZjAzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3ZlcnRleHByb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS95ZWFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3llYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmUwYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS95ZWFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS95ZWFybW9udGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUveWVhcm1vbnRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxYTEyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUveWVhcm1vbnRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS96b25lb2Zmc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3pvbmVvZmZzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODY3Yzk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS96b25lb2Zmc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iYXJyaWVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2JhcnJpZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTA1ODYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iYXJyaWVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaWdkZWNpbWFsLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2JpZ2RlY2ltYWwtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjFkOTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaWdkZWNpbWFsLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaWdpbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2JpZ2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODQxZmJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaWdpbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaW5kaW5nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2JpbmRpbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTYyMGViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaW5kaW5nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9idWxrc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2J1bGtzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQyOTA2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9idWxrc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2J5dGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk1NDRmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlYnVmZmVyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2J5dGVidWZmZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTc5M2QyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlYnVmZmVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlY29kZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlY29kZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzZjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2J5dGVjb2RlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jYXJkaW5hbGl0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jYXJkaW5hbGl0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjODc1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2NhcmRpbmFsaXR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jaGFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2NoYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQ5N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jaGFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jbGFzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jbGFzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZTI3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2NsYXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jb2x1bW4tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY29sdW1uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MDVjOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY29sdW1uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2RhdGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhlMTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kaXJlY3Rpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZGlyZWN0aW9uLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhYWJhMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZGlyZWN0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kb3VibGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZG91YmxlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzOGE2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZG91YmxlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kdXJhdGlvbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kdXJhdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZmEzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2R1cmF0aW9uLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9lZGdlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2VkZ2UtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlODVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9lZGdlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9mbG9hdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9mbG9hdC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMjc3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2Zsb2F0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbmV0YWRkcmVzcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbmV0YWRkcmVzcy12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MTNkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2luZXRhZGRyZXNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbnN0YW50LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2luc3RhbnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzM1NTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbnN0YW50LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbnRlZ2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2ludGVnZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGMyNDZhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbnRlZ2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sYW1iZGEtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbGFtYmRhLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlOThmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbGFtYmRhLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9saXN0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xpc3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWE0MDVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9saXN0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb2NhbGRhdGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWxkYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM5ZTIxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWxkYXRlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb2NhbGRhdGV0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xvY2FsZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTBjODNjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb2NhbHRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWx0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU3ODVjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWx0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb25nLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xvbmctdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWUwMDgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb25nLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9tYXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbWFwLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjZDllMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbWFwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9tZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L21ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE3N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9tZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9tb250aGRheS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9tb250aGRheS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMjgyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L21vbnRoZGF5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vZmZzZXRkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vZmZzZXRkYXRldGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L29mZnNldGRhdGV0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vZmZzZXR0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L29mZnNldHRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGM4YzViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vZmZzZXR0aW1lLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vcGVyYXRvci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vcGVyYXRvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NzE3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L29wZXJhdG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vcmRlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vcmRlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMWI2YWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L29yZGVyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3AtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYwNzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wYW5kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3BhbmQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjM3Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wYW5kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wYXRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3BhdGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTA3NWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wYXRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wZXJpb2QtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGVyaW9kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkYWIzNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGVyaW9kLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9waWNrLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3BpY2stdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2FjYTJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9waWNrLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wb3AtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcG9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5OGM5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcG9wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wb3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcG9yLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwYjNhYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcG9yLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzM0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3Byb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wd2l0aGluLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3B3aXRoaW4tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWQzMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wd2l0aGluLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wd2l0aG91dC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wd2l0aG91dC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTk1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3B3aXRob3V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9zY29wZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9zY29wZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNGI5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3Njb3BlLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9zZXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkZjA1OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9zaG9ydC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9zaG9ydC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZDJkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3Nob3J0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3QtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjM3NmRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90ZXh0cC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90ZXh0cC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OTY0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3RleHRwLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90aW1lc3RhbXAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdGltZXN0YW1wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjNGU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdGltZXN0YW1wLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90aW5rZXJncmFwaC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90aW5rZXJncmFwaC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYTc2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3RpbmtlcmdyYXBoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3RyYXZlcnNhbG1ldHJpY3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTQ3ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90cmF2ZXJzZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdHJhdmVyc2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU0N2NjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdHJhdmVyc2VyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi91dWlkLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3V1aWQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjE3NzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi91dWlkLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi92ZXJ0ZXgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdmVydGV4LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiOWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdmVydGV4LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZjAzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3ZlcnRleHByb3BlcnR5LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi95ZWFyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3llYXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmUwYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi95ZWFyLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi95ZWFybW9udGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYveWVhcm1vbnRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxYTEyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYveWVhcm1vbnRoLXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi96b25lb2Zmc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3pvbmVvZmZzZXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODY3Yzk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi96b25lb2Zmc2V0LXYxLmdiaW4KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTczNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjZWNhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJzYXNsTWVjaGFuaXNtIiwgIlBMQUlOIiwgInNhc2wiLCAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JhcnJpZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iYXJyaWVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmFycmllci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmFycmllci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpZ2RlY2ltYWwtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdkZWNpbWFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnZGVjaW1hbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MzM3YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnZGVjaW1hbC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpZ2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdpbnRlZ2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnaW50ZWdlci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNjExNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnaW50ZWdlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpbmRpbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaW5kaW5nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmluZGluZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjhjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmluZGluZy12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9idWxrc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnVsa3NldC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnVsa3NldC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QnVsa1NldCIsCisgICJAdmFsdWUiIDogWyAibWFya28iLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgImpvc2giLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZSIsCisgICJAdmFsdWUiIDogMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyNDExNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWJ1ZmZlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWJ1ZmZlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVidWZmZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVidWZmZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGVCdWZmZXIiLAorICAiQHZhbHVlIiA6ICJjMjl0WlNCaWVYUmxjeUJtYjNJZ2VXOTEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlY29kZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw2IEBACit7CisgICJAdHlwZSIgOiAiZzpCeXRlY29kZSIsCisgICJAdmFsdWUiIDogeworICAgICJzdGVwIiA6IFsgWyAiViIgXSwgWyAiaGFzTGFiZWwiLCAicGVyc29uIiBdLCBbICJvdXQiIF0sIFsgImluIiBdLCBbICJ0cmVlIiBdIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWNvZGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlY29kZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWNvZGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NhcmRpbmFsaXR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NhcmRpbmFsaXR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2FyZGluYWxpdHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2hhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NoYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jaGFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jaGFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NsYXNzLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2xhc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jbGFzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2xhc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q2xhc3MiLAorICAiQHZhbHVlIiA6ICJqYXZhLmlvLkZpbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NvbHVtbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDb2x1bW4iLAorICAiQHZhbHVlIiA6ICJrZXlzIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY29sdW1uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY29sdW1uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jb2x1bW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RhdGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2I3MWEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxNDgxNzUwMDc2Mjk1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RhdGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGF0ZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MDA3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RpcmVjdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kaXJlY3Rpb24tdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kaXJlY3Rpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Y2I3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RpcmVjdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzJlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RvdWJsZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTAwLjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZG91YmxlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RvdWJsZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RvdWJsZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlNDk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZG91YmxlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2R1cmF0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2R1cmF0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZHVyYXRpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzBjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2R1cmF0aW9uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2VkZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9lZGdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdmMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9lZGdlLXYxZDAuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJpZCIgOiAxMywKKyAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICJ0eXBlIiA6ICJlZGdlIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogMjAwOQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9lZGdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlNzNkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNCBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgImluViIgOiAxMCwKKyAgIm91dFYiIDogMSwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJzaW5jZSIgOiB7CisgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAidmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFjNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9lZGdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9lZGdlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12M2QwLmpzb24KQEAgLTAsMCArMSwzMiBAQAoreworICAiQHR5cGUiIDogImc6RWRnZSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMworICAgIH0sCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEwCisgICAgfSwKKyAgICAib3V0ViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2Zsb2F0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc5YWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZmxvYXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9mbG9hdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZmxvYXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RmxvYXQiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbmV0YWRkcmVzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbmV0YWRkcmVzcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2luZXRhZGRyZXNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbmV0YWRkcmVzcy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDk3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2luc3RhbnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2luc3RhbnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnN0YW50LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnN0YW50LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnN0YW50IiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0xNFQxNjozOToxOS4zNDlaIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW50ZWdlci12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGNlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sYW1iZGEtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbGFtYmRhLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbGFtYmRhLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmUxNzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sYW1iZGEtdjNkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbGlzdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xpc3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTRlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xpc3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6TGlzdCIsCisgICJAdmFsdWUiIDogWyB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgInBlcnNvbiIsIHRydWUgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDgzNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWx0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsdGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsdGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNjVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWx0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9uZy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvbmctdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb25nLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGI5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb25nLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21hcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21hcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTljOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbWFwLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpNYXAiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInJlZCIsIHsKKyAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMworICAgIH0gXQorICB9LCB7CisgICAgIkB0eXBlIiA6ICJnOkRhdGUiLAorICAgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorICB9LCAidGVzdCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMTIzCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFlOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNTQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiZHVyIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sCisgICAgImNvdW50cyIgOiB7CisgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0sCisgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfSwKKyAgICAibmFtZSIgOiAiVGlua2VyR3JhcGhTdGVwKHZlcnRleCxbfmxhYmVsLmVxKHBlcnNvbildKSIsCisgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfQorICAgIH0sCisgICAgImlkIiA6ICI3LjAuMCgpIiwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJWZXJ0ZXhTdGVwKE9VVCx2ZXJ0ZXgpIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICIzLjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlNjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSw1MiBAQAoreworICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0gXQorICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfSBdCisgICAgfSwgImlkIiwgIjcuMC4wKCkiLCAibWV0cmljcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbW9udGhkYXktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok1vbnRoRGF5IiwKKyAgIkB2YWx1ZSIgOiAiLS0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21vbnRoZGF5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbW9udGhkYXktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21vbnRoZGF5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vZmZzZXRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0RGF0ZVRpbWUiLAorICAiQHZhbHVlIiA6ICIyMDA3LTEyLTAzVDEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vZmZzZXRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0dGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXRUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vZmZzZXR0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0dGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0dGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb3BlcmF0b3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzE0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcGVyYXRvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29wZXJhdG9yLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcGVyYXRvci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcGVyYXRvciIsCisgICJAdmFsdWUiIDogInN1bSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29yZGVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29yZGVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb3JkZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTA0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29yZGVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGFuZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYW5kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGFuZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhbmQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhbmQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGF0aC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjFkMC5qc29uCkBAIC0wLDAgKzEsNjIgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiCisgICAgICB9IF0KKyAgICB9CisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGF0aC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTJkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iCisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjYWEwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGF0aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQYXRoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgICAib2JqZWN0cyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYXRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGF0aC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YjM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGF0aC12M2QwLmpzb24KQEAgLTAsMCArMSw0OSBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm9iamVjdHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInBlcnNvbiIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wZXJpb2QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGVyaW9kLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGVyaW9kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQzOGExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wZXJpb2QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGljay12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGljay12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9waWNrLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UGljayIsCisgICJAdmFsdWUiIDogImFueSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BpY2stdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9waWNrLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9waWNrLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BvcC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3AtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BvcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Bvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IFsgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMQorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMAorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMDAKKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Bvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Bvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcG9yLXYzZDAuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAib3IiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjFkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Byb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUxYzBhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJrZXkiIDogInNpbmNlIiwKKyAgInZhbHVlIiA6IDIwMDkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Byb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZmZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImtleSIgOiAic2luY2UiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTM4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRoaW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wd2l0aGluLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhpbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmOTljYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhpbi12M2QwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wd2l0aG91dC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMjkxYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRob3V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhvdXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRob3V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAid2l0aG91dCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2NvcGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6U2NvcGUiLAorICAiQHZhbHVlIiA6ICJsb2NhbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Njb3BlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2NvcGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Njb3BlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25jbG9zZS12MWQwLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25jbG9zZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25jbG9zZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25jbG9zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2U4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWwtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjhiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12M2QwLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0ZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJzb2NpYWwuVih4KSIsICJsYW5ndWFnZSIsICJncmVtbGluLWdyb292eSIsICJhbGlhc2VzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgImciLCAic29jaWFsIiBdCisgICAgfSwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5YTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3NldC12M2QwLmpzb24KQEAgLTAsMCArMSw3IEBACit7CisgICJAdHlwZSIgOiAiZzpTZXQiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nob3J0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnQxNiIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zaG9ydC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nob3J0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zaG9ydC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zdGFuZGFyZHJlc3VsdC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCkBAIC0wLDAgKzEsNTAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJpZCIgOiAxLAorICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICJpZCIgOiAwLAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICAgIH0gXSwKKyAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICJpZCIgOiA2LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDcsCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDgsCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA5LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zdGFuZGFyZHJlc3VsdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3YzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMTEgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3N0YW5kYXJkcmVzdWx0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmNhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KQEAgLTAsMCArMSwxMjAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0sCisgICAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTM5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGV4dHAtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGV4dHAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90ZXh0cC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMDk4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGV4dHAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW1lc3RhbXAtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMGUxNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW1lc3RhbXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW1lc3RhbXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbWVzdGFtcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpUaW1lc3RhbXAiLAorICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbmtlcmdyYXBoLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzE5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpAQCAtMCwwICsxLDMxMyBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5MCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAwCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDExLAorICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDcKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTQsCisgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDksCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMywKKyAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxNywKKyAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwOQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0sCisgICJlZGdlcyIgOiBbIHsKKyAgICAiaWQiIDogMTMsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDA5CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDExCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE5LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA1CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA0CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMgorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEwCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMzUyIEBACit7CisgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAiaWQiIDogMSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAwLAorICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDEyLAorICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA3LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTEKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTUsCisgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5ODIsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxOCwKKyAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTQsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDQKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE3LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjAsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTIKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIzLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA5LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI2LAorICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbmtlcmdyYXBoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDgyOSBAQAoreworICAiQHR5cGUiIDogInRpbmtlcjpncmFwaCIsCisgICJAdmFsdWUiIDogeworICAgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTkwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5ODIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJhYWNoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImdyZW1saW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0sCisgICAgImVkZ2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjIKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbmtlcmdyYXBoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12M2QwLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGQxOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTE0IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzYWxNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMC4wMDQKKyAgICB9LAorICAgICJtZXRyaWNzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjcuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMi4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVHJlZVN0ZXAiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjQuMC4wKCkiCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmY3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjcuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMi4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVHJlZVN0ZXAiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjQuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2VyIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImJ1bGsiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RyYXZlcnNlci12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdXVpZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmZmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKyI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC91dWlkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC91dWlkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3V1aWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpVVUlEIiwKKyAgIkB2YWx1ZSIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdXVpZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3V1aWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3V1aWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NWY1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYxZDAuanNvbgpAQCAtMCwwICsxLDM5IEBACit7CisgICJpZCIgOiAxLAorICAibGFiZWwiIDogInBlcnNvbiIsCisgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgfSBdLAorICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICJpZCIgOiA2LAorICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA5LAorICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0MyBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDgsCisgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgIH0KKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4cHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDUgQEAKK3sKKyAgImlkIiA6IDAsCisgICJ2YWx1ZSIgOiAibWFya28iLAorICAibGFiZWwiIDogIm5hbWUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4cHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4cHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC95ZWFyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC95ZWFybW9udGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhNWUyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC95ZWFybW9udGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC95ZWFybW9udGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXJtb250aC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6WWVhck1vbnRoIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvem9uZWRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvem9uZW9mZnNldC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvem9uZW9mZnNldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVvZmZzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVvZmZzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlpvbmVPZmZzZXQiLAorICAiQHZhbHVlIiA6ICIrMDM6MDY6MDkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTczNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjZWNhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJzYXNsTWVjaGFuaXNtIiwgIlBMQUlOIiwgInNhc2wiLCAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JhcnJpZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iYXJyaWVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmFycmllci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmFycmllci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpZ2RlY2ltYWwtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdkZWNpbWFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnZGVjaW1hbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MzM3YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnZGVjaW1hbC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpZ2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdpbnRlZ2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnaW50ZWdlci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNjExNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnaW50ZWdlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpbmRpbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaW5kaW5nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmluZGluZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjhjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmluZGluZy12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDQ5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J1bGtzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSBAQAorWyAibWFya28iLCAiam9zaCIsICJqb3NoIiBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9idWxrc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnVsa3NldC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnVsa3NldC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QnVsa1NldCIsCisgICJAdmFsdWUiIDogWyAibWFya28iLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgImpvc2giLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZSIsCisgICJAdmFsdWUiIDogMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyNDExNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWJ1ZmZlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWJ1ZmZlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVidWZmZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVidWZmZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGVCdWZmZXIiLAorICAiQHZhbHVlIiA6ICJjMjl0WlNCaWVYUmxjeUJtYjNJZ2VXOTEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlY29kZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw2IEBACit7CisgICJAdHlwZSIgOiAiZzpCeXRlY29kZSIsCisgICJAdmFsdWUiIDogeworICAgICJzdGVwIiA6IFsgWyAiViIgXSwgWyAiaGFzTGFiZWwiLCAicGVyc29uIiBdLCBbICJvdXQiIF0sIFsgImluIiBdLCBbICJ0cmVlIiBdIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWNvZGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlY29kZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWNvZGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NhcmRpbmFsaXR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NhcmRpbmFsaXR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2FyZGluYWxpdHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2hhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NoYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jaGFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jaGFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NsYXNzLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2xhc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jbGFzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2xhc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q2xhc3MiLAorICAiQHZhbHVlIiA6ICJqYXZhLmlvLkZpbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NvbHVtbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDb2x1bW4iLAorICAiQHZhbHVlIiA6ICJrZXlzIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY29sdW1uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY29sdW1uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jb2x1bW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RhdGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2I3MWEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxNDgxNzUwMDc2Mjk1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RhdGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGF0ZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MDA3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RpcmVjdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kaXJlY3Rpb24tdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kaXJlY3Rpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Y2I3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RpcmVjdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzJlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RvdWJsZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTAwLjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZG91YmxlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RvdWJsZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RvdWJsZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlNDk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZG91YmxlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2R1cmF0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2R1cmF0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZHVyYXRpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzBjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2R1cmF0aW9uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2VkZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9lZGdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdmMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9lZGdlLXYxZDAuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJpZCIgOiAxMywKKyAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICJ0eXBlIiA6ICJlZGdlIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogMjAwOQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9lZGdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlNzNkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNCBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgImluViIgOiAxMCwKKyAgIm91dFYiIDogMSwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJzaW5jZSIgOiB7CisgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAidmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFjNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9lZGdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9lZGdlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12M2QwLmpzb24KQEAgLTAsMCArMSwzMiBAQAoreworICAiQHR5cGUiIDogImc6RWRnZSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMworICAgIH0sCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEwCisgICAgfSwKKyAgICAib3V0ViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2Zsb2F0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc5YWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZmxvYXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9mbG9hdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZmxvYXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RmxvYXQiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbmV0YWRkcmVzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbmV0YWRkcmVzcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2luZXRhZGRyZXNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbmV0YWRkcmVzcy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDk3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2luc3RhbnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2luc3RhbnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnN0YW50LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnN0YW50LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnN0YW50IiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0xNFQxNjozOToxOS4zNDlaIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW50ZWdlci12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGNlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sYW1iZGEtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbGFtYmRhLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbGFtYmRhLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmUxNzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sYW1iZGEtdjNkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbGlzdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xpc3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTRlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xpc3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6TGlzdCIsCisgICJAdmFsdWUiIDogWyB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgInBlcnNvbiIsIHRydWUgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDgzNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWx0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsdGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsdGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNjVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWx0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9uZy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvbmctdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb25nLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGI5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb25nLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21hcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21hcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTljOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbWFwLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpNYXAiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInJlZCIsIHsKKyAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMworICAgIH0gXQorICB9LCB7CisgICAgIkB0eXBlIiA6ICJnOkRhdGUiLAorICAgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorICB9LCAidGVzdCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMTIzCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFlOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNTQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiZHVyIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sCisgICAgImNvdW50cyIgOiB7CisgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0sCisgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfSwKKyAgICAibmFtZSIgOiAiVGlua2VyR3JhcGhTdGVwKHZlcnRleCxbfmxhYmVsLmVxKHBlcnNvbildKSIsCisgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfQorICAgIH0sCisgICAgImlkIiA6ICI3LjAuMCgpIiwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJWZXJ0ZXhTdGVwKE9VVCx2ZXJ0ZXgpIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICIzLjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlNjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSw1MiBAQAoreworICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0gXQorICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfSBdCisgICAgfSwgImlkIiwgIjcuMC4wKCkiLCAibWV0cmljcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbW9udGhkYXktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok1vbnRoRGF5IiwKKyAgIkB2YWx1ZSIgOiAiLS0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21vbnRoZGF5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbW9udGhkYXktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21vbnRoZGF5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vZmZzZXRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0RGF0ZVRpbWUiLAorICAiQHZhbHVlIiA6ICIyMDA3LTEyLTAzVDEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vZmZzZXRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0dGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXRUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vZmZzZXR0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0dGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0dGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb3BlcmF0b3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzE0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcGVyYXRvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29wZXJhdG9yLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcGVyYXRvci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcGVyYXRvciIsCisgICJAdmFsdWUiIDogInN1bSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29yZGVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29yZGVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb3JkZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTA0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29yZGVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGFuZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYW5kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGFuZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhbmQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhbmQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGF0aC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjFkMC5qc29uCkBAIC0wLDAgKzEsNjIgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiCisgICAgICB9IF0KKyAgICB9CisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGF0aC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTJkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iCisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjYWEwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGF0aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQYXRoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgICAib2JqZWN0cyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYXRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGF0aC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YjM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGF0aC12M2QwLmpzb24KQEAgLTAsMCArMSw0OSBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm9iamVjdHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInBlcnNvbiIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wZXJpb2QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGVyaW9kLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGVyaW9kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQzOGExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wZXJpb2QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGljay12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGljay12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9waWNrLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UGljayIsCisgICJAdmFsdWUiIDogImFueSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BpY2stdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9waWNrLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9waWNrLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BvcC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3AtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BvcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Bvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IFsgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMQorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMAorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMDAKKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Bvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Bvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcG9yLXYzZDAuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAib3IiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjFkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Byb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUxYzBhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJrZXkiIDogInNpbmNlIiwKKyAgInZhbHVlIiA6IDIwMDkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Byb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZmZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImtleSIgOiAic2luY2UiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTM4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRoaW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wd2l0aGluLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhpbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmOTljYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhpbi12M2QwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wd2l0aG91dC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMjkxYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRob3V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhvdXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRob3V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAid2l0aG91dCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2NvcGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6U2NvcGUiLAorICAiQHZhbHVlIiA6ICJsb2NhbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Njb3BlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2NvcGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Njb3BlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25jbG9zZS12MWQwLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25jbG9zZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25jbG9zZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25jbG9zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2U4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWwtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjhiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12M2QwLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0ZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJzb2NpYWwuVih4KSIsICJsYW5ndWFnZSIsICJncmVtbGluLWdyb292eSIsICJhbGlhc2VzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgImciLCAic29jaWFsIiBdCisgICAgfSwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5YTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3NldC12M2QwLmpzb24KQEAgLTAsMCArMSw3IEBACit7CisgICJAdHlwZSIgOiAiZzpTZXQiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nob3J0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnQxNiIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zaG9ydC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nob3J0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zaG9ydC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zdGFuZGFyZHJlc3VsdC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCkBAIC0wLDAgKzEsNTAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJpZCIgOiAxLAorICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICJpZCIgOiAwLAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICAgIH0gXSwKKyAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICJpZCIgOiA2LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDcsCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDgsCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA5LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zdGFuZGFyZHJlc3VsdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3YzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMTEgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmNhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KQEAgLTAsMCArMSwxMjAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0sCisgICAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTM5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGV4dHAtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGV4dHAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90ZXh0cC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMDk4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGV4dHAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW1lc3RhbXAtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMGUxNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW1lc3RhbXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW1lc3RhbXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbWVzdGFtcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpUaW1lc3RhbXAiLAorICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbmtlcmdyYXBoLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzE5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpAQCAtMCwwICsxLDMxMyBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5MCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAwCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDExLAorICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDcKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTQsCisgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDksCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMywKKyAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxNywKKyAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwOQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0sCisgICJlZGdlcyIgOiBbIHsKKyAgICAiaWQiIDogMTMsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDA5CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDExCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE5LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA1CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA0CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMgorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEwCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMzUyIEBACit7CisgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAiaWQiIDogMSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAwLAorICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDEyLAorICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA3LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTEKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTUsCisgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5ODIsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxOCwKKyAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTQsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDQKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE3LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjAsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTIKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIzLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA5LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI2LAorICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbmtlcmdyYXBoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDgyOSBAQAoreworICAiQHR5cGUiIDogInRpbmtlcjpncmFwaCIsCisgICJAdmFsdWUiIDogeworICAgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTkwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5ODIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJhYWNoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImdyZW1saW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0sCisgICAgImVkZ2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjIKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbmtlcmdyYXBoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12M2QwLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGQxOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzYWxtZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTE0IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzYWxNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMC4wMDQKKyAgICB9LAorICAgICJtZXRyaWNzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjcuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMi4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVHJlZVN0ZXAiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjQuMC4wKCkiCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmY3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjcuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMi4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVHJlZVN0ZXAiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjQuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2VyIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImJ1bGsiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RyYXZlcnNlci12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdXVpZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmZmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKyI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS91dWlkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS91dWlkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3V1aWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpVVUlEIiwKKyAgIkB2YWx1ZSIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdXVpZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3V1aWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3V1aWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NWY1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYxZDAuanNvbgpAQCAtMCwwICsxLDM5IEBACit7CisgICJpZCIgOiAxLAorICAibGFiZWwiIDogInBlcnNvbiIsCisgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgfSBdLAorICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICJpZCIgOiA2LAorICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA5LAorICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0MyBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDgsCisgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgIH0KKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4cHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDUgQEAKK3sKKyAgImlkIiA6IDAsCisgICJ2YWx1ZSIgOiAibWFya28iLAorICAibGFiZWwiIDogIm5hbWUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4cHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4cHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS95ZWFyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS95ZWFybW9udGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhNWUyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS95ZWFybW9udGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS95ZWFybW9udGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXJtb250aC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6WWVhck1vbnRoIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvem9uZWRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvem9uZW9mZnNldC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvem9uZW9mZnNldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVvZmZzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVvZmZzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlpvbmVPZmZzZXQiLAorICAiQHZhbHVlIiA6ICIrMDM6MDY6MDkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTczNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjZWNhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJzYXNsTWVjaGFuaXNtIiwgIlBMQUlOIiwgInNhc2wiLCAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JhcnJpZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iYXJyaWVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmFycmllci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmFycmllci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpZ2RlY2ltYWwtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdkZWNpbWFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnZGVjaW1hbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MzM3YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnZGVjaW1hbC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpZ2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdpbnRlZ2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnaW50ZWdlci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNjExNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnaW50ZWdlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpbmRpbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaW5kaW5nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmluZGluZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjhjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmluZGluZy12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDQ5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J1bGtzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSBAQAorWyAibWFya28iLCAiam9zaCIsICJqb3NoIiBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9idWxrc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnVsa3NldC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnVsa3NldC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QnVsa1NldCIsCisgICJAdmFsdWUiIDogWyAibWFya28iLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgImpvc2giLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZSIsCisgICJAdmFsdWUiIDogMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyNDExNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWJ1ZmZlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWJ1ZmZlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVidWZmZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVidWZmZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGVCdWZmZXIiLAorICAiQHZhbHVlIiA6ICJjMjl0WlNCaWVYUmxjeUJtYjNJZ2VXOTEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlY29kZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw2IEBACit7CisgICJAdHlwZSIgOiAiZzpCeXRlY29kZSIsCisgICJAdmFsdWUiIDogeworICAgICJzdGVwIiA6IFsgWyAiViIgXSwgWyAiaGFzTGFiZWwiLCAicGVyc29uIiBdLCBbICJvdXQiIF0sIFsgImluIiBdLCBbICJ0cmVlIiBdIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWNvZGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlY29kZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWNvZGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NhcmRpbmFsaXR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NhcmRpbmFsaXR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2FyZGluYWxpdHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2hhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NoYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jaGFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jaGFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NsYXNzLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2xhc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jbGFzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2xhc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q2xhc3MiLAorICAiQHZhbHVlIiA6ICJqYXZhLmlvLkZpbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NvbHVtbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDb2x1bW4iLAorICAiQHZhbHVlIiA6ICJrZXlzIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY29sdW1uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY29sdW1uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jb2x1bW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RhdGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2I3MWEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxNDgxNzUwMDc2Mjk1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RhdGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGF0ZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MDA3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RpcmVjdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kaXJlY3Rpb24tdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kaXJlY3Rpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Y2I3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RpcmVjdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzJlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RvdWJsZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTAwLjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZG91YmxlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RvdWJsZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RvdWJsZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlNDk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZG91YmxlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2R1cmF0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2R1cmF0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZHVyYXRpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzBjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2R1cmF0aW9uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2VkZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9lZGdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdmMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9lZGdlLXYxZDAuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJpZCIgOiAxMywKKyAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICJ0eXBlIiA6ICJlZGdlIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogMjAwOQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9lZGdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlNzNkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNCBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgImluViIgOiAxMCwKKyAgIm91dFYiIDogMSwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJzaW5jZSIgOiB7CisgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAidmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFjNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9lZGdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9lZGdlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12M2QwLmpzb24KQEAgLTAsMCArMSwzMiBAQAoreworICAiQHR5cGUiIDogImc6RWRnZSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMworICAgIH0sCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEwCisgICAgfSwKKyAgICAib3V0ViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2Zsb2F0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc5YWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZmxvYXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9mbG9hdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZmxvYXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RmxvYXQiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbmV0YWRkcmVzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbmV0YWRkcmVzcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2luZXRhZGRyZXNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbmV0YWRkcmVzcy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDk3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2luc3RhbnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2luc3RhbnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnN0YW50LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnN0YW50LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnN0YW50IiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0xNFQxNjozOToxOS4zNDlaIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW50ZWdlci12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGNlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sYW1iZGEtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbGFtYmRhLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbGFtYmRhLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmUxNzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sYW1iZGEtdjNkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbGlzdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xpc3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTRlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xpc3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6TGlzdCIsCisgICJAdmFsdWUiIDogWyB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgInBlcnNvbiIsIHRydWUgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDgzNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWx0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsdGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsdGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNjVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWx0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9uZy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvbmctdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb25nLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGI5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb25nLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21hcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21hcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTljOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbWFwLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpNYXAiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInJlZCIsIHsKKyAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMworICAgIH0gXQorICB9LCB7CisgICAgIkB0eXBlIiA6ICJnOkRhdGUiLAorICAgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorICB9LCAidGVzdCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMTIzCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFlOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNTQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiZHVyIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sCisgICAgImNvdW50cyIgOiB7CisgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0sCisgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfSwKKyAgICAibmFtZSIgOiAiVGlua2VyR3JhcGhTdGVwKHZlcnRleCxbfmxhYmVsLmVxKHBlcnNvbildKSIsCisgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfQorICAgIH0sCisgICAgImlkIiA6ICI3LjAuMCgpIiwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJWZXJ0ZXhTdGVwKE9VVCx2ZXJ0ZXgpIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICIzLjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlNjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSw1MiBAQAoreworICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0gXQorICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfSBdCisgICAgfSwgImlkIiwgIjcuMC4wKCkiLCAibWV0cmljcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbW9udGhkYXktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok1vbnRoRGF5IiwKKyAgIkB2YWx1ZSIgOiAiLS0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21vbnRoZGF5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbW9udGhkYXktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21vbnRoZGF5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vZmZzZXRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0RGF0ZVRpbWUiLAorICAiQHZhbHVlIiA6ICIyMDA3LTEyLTAzVDEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vZmZzZXRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0dGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXRUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vZmZzZXR0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0dGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0dGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb3BlcmF0b3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzE0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcGVyYXRvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29wZXJhdG9yLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcGVyYXRvci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcGVyYXRvciIsCisgICJAdmFsdWUiIDogInN1bSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29yZGVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29yZGVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb3JkZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTA0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29yZGVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGFuZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYW5kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGFuZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhbmQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhbmQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGF0aC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjFkMC5qc29uCkBAIC0wLDAgKzEsNjIgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiCisgICAgICB9IF0KKyAgICB9CisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGF0aC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTJkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iCisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjYWEwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGF0aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQYXRoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgICAib2JqZWN0cyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYXRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGF0aC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YjM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGF0aC12M2QwLmpzb24KQEAgLTAsMCArMSw0OSBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm9iamVjdHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInBlcnNvbiIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wZXJpb2QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGVyaW9kLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGVyaW9kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQzOGExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wZXJpb2QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGljay12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGljay12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9waWNrLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UGljayIsCisgICJAdmFsdWUiIDogImFueSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BpY2stdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9waWNrLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9waWNrLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BvcC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3AtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BvcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Bvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IFsgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMQorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMAorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMDAKKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Bvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Bvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcG9yLXYzZDAuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAib3IiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjFkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Byb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUxYzBhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJrZXkiIDogInNpbmNlIiwKKyAgInZhbHVlIiA6IDIwMDkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Byb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZmZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImtleSIgOiAic2luY2UiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTM4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRoaW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wd2l0aGluLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhpbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmOTljYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhpbi12M2QwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wd2l0aG91dC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMjkxYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRob3V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhvdXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRob3V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAid2l0aG91dCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2NvcGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6U2NvcGUiLAorICAiQHZhbHVlIiA6ICJsb2NhbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Njb3BlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2NvcGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Njb3BlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25jbG9zZS12MWQwLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25jbG9zZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25jbG9zZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25jbG9zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2U4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWwtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjhiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12M2QwLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0ZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJzb2NpYWwuVih4KSIsICJsYW5ndWFnZSIsICJncmVtbGluLWdyb292eSIsICJhbGlhc2VzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgImciLCAic29jaWFsIiBdCisgICAgfSwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5YTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3NldC12M2QwLmpzb24KQEAgLTAsMCArMSw3IEBACit7CisgICJAdHlwZSIgOiAiZzpTZXQiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nob3J0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnQxNiIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zaG9ydC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nob3J0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zaG9ydC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCkBAIC0wLDAgKzEsNTAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJpZCIgOiAxLAorICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICJpZCIgOiAwLAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICAgIH0gXSwKKyAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICJpZCIgOiA2LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDcsCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDgsCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA5LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3YzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMTEgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3N0YW5kYXJkcmVzdWx0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmNhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KQEAgLTAsMCArMSwxMjAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0sCisgICAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTM5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGV4dHAtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGV4dHAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90ZXh0cC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMDk4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGV4dHAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW1lc3RhbXAtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMGUxNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW1lc3RhbXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW1lc3RhbXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbWVzdGFtcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpUaW1lc3RhbXAiLAorICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbmtlcmdyYXBoLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzE5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpAQCAtMCwwICsxLDMxMyBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5MCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAwCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDExLAorICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDcKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTQsCisgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDksCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMywKKyAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxNywKKyAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwOQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0sCisgICJlZGdlcyIgOiBbIHsKKyAgICAiaWQiIDogMTMsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDA5CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDExCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE5LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA1CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA0CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMgorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEwCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMzUyIEBACit7CisgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAiaWQiIDogMSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAwLAorICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDEyLAorICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA3LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTEKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTUsCisgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5ODIsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxOCwKKyAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTQsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDQKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE3LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjAsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTIKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIzLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA5LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI2LAorICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbmtlcmdyYXBoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDgyOSBAQAoreworICAiQHR5cGUiIDogInRpbmtlcjpncmFwaCIsCisgICJAdmFsdWUiIDogeworICAgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTkwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5ODIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJhYWNoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImdyZW1saW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0sCisgICAgImVkZ2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjIKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbmtlcmdyYXBoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12M2QwLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGQxOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTE0IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzYWxNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMC4wMDQKKyAgICB9LAorICAgICJtZXRyaWNzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjcuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMi4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVHJlZVN0ZXAiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjQuMC4wKCkiCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmY3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjcuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMi4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVHJlZVN0ZXAiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjQuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2VyIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImJ1bGsiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RyYXZlcnNlci12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdXVpZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmZmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKyI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi91dWlkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi91dWlkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3V1aWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpVVUlEIiwKKyAgIkB2YWx1ZSIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdXVpZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3V1aWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3V1aWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NWY1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYxZDAuanNvbgpAQCAtMCwwICsxLDM5IEBACit7CisgICJpZCIgOiAxLAorICAibGFiZWwiIDogInBlcnNvbiIsCisgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgfSBdLAorICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICJpZCIgOiA2LAorICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA5LAorICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0MyBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDgsCisgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgIH0KKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4cHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDUgQEAKK3sKKyAgImlkIiA6IDAsCisgICJ2YWx1ZSIgOiAibWFya28iLAorICAibGFiZWwiIDogIm5hbWUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4cHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4cHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi95ZWFyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi95ZWFybW9udGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhNWUyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi95ZWFybW9udGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi95ZWFybW9udGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXJtb250aC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6WWVhck1vbnRoIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvem9uZWRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVkZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvem9uZW9mZnNldC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvem9uZW9mZnNldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVvZmZzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVvZmZzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlpvbmVPZmZzZXQiLAorICAiQHZhbHVlIiA6ICIrMDM6MDY6MDkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTczNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjZWNhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJzYXNsTWVjaGFuaXNtIiwgIlBMQUlOIiwgInNhc2wiLCAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JhcnJpZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iYXJyaWVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmFycmllci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmFycmllci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpZ2RlY2ltYWwtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdkZWNpbWFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnZGVjaW1hbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MzM3YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnZGVjaW1hbC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpZ2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdpbnRlZ2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnaW50ZWdlci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNjExNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnaW50ZWdlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpbmRpbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaW5kaW5nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmluZGluZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjhjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmluZGluZy12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDQ5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J1bGtzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSBAQAorWyAibWFya28iLCAiam9zaCIsICJqb3NoIiBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9idWxrc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnVsa3NldC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnVsa3NldC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QnVsa1NldCIsCisgICJAdmFsdWUiIDogWyAibWFya28iLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgImpvc2giLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZSIsCisgICJAdmFsdWUiIDogMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyNDExNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWJ1ZmZlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWJ1ZmZlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVidWZmZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVidWZmZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGVCdWZmZXIiLAorICAiQHZhbHVlIiA6ICJjMjl0WlNCaWVYUmxjeUJtYjNJZ2VXOTEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlY29kZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw2IEBACit7CisgICJAdHlwZSIgOiAiZzpCeXRlY29kZSIsCisgICJAdmFsdWUiIDogeworICAgICJzdGVwIiA6IFsgWyAiViIgXSwgWyAiaGFzTGFiZWwiLCAicGVyc29uIiBdLCBbICJvdXQiIF0sIFsgImluIiBdLCBbICJ0cmVlIiBdIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWNvZGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlY29kZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWNvZGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NhcmRpbmFsaXR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NhcmRpbmFsaXR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2FyZGluYWxpdHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2hhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NoYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jaGFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jaGFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NsYXNzLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2xhc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jbGFzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2xhc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q2xhc3MiLAorICAiQHZhbHVlIiA6ICJqYXZhLmlvLkZpbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NvbHVtbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDb2x1bW4iLAorICAiQHZhbHVlIiA6ICJrZXlzIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY29sdW1uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY29sdW1uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jb2x1bW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RhdGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2I3MWEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxNDgxNzUwMDc2Mjk1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RhdGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGF0ZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MDA3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RpcmVjdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kaXJlY3Rpb24tdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kaXJlY3Rpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Y2I3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RpcmVjdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzJlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RvdWJsZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTAwLjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZG91YmxlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RvdWJsZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RvdWJsZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlNDk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZG91YmxlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2R1cmF0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2R1cmF0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZHVyYXRpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzBjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2R1cmF0aW9uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2VkZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9lZGdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdmMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9lZGdlLXYxZDAuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJpZCIgOiAxMywKKyAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICJ0eXBlIiA6ICJlZGdlIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogMjAwOQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9lZGdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlNzNkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNCBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgImluViIgOiAxMCwKKyAgIm91dFYiIDogMSwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJzaW5jZSIgOiB7CisgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAidmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFjNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9lZGdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9lZGdlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12M2QwLmpzb24KQEAgLTAsMCArMSwzMiBAQAoreworICAiQHR5cGUiIDogImc6RWRnZSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMworICAgIH0sCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEwCisgICAgfSwKKyAgICAib3V0ViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2Zsb2F0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc5YWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZmxvYXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9mbG9hdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZmxvYXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RmxvYXQiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbmV0YWRkcmVzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbmV0YWRkcmVzcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2luZXRhZGRyZXNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbmV0YWRkcmVzcy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDk3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2luc3RhbnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2luc3RhbnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnN0YW50LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnN0YW50LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnN0YW50IiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0xNFQxNjozOToxOS4zNDlaIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW50ZWdlci12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGNlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sYW1iZGEtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbGFtYmRhLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbGFtYmRhLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmUxNzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sYW1iZGEtdjNkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbGlzdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xpc3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTRlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xpc3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6TGlzdCIsCisgICJAdmFsdWUiIDogWyB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgInBlcnNvbiIsIHRydWUgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDgzNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWx0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsdGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsdGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNjVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWx0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9uZy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvbmctdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb25nLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGI5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb25nLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21hcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21hcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTljOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbWFwLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpNYXAiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInJlZCIsIHsKKyAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMworICAgIH0gXQorICB9LCB7CisgICAgIkB0eXBlIiA6ICJnOkRhdGUiLAorICAgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorICB9LCAidGVzdCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMTIzCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFlOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNTQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiZHVyIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sCisgICAgImNvdW50cyIgOiB7CisgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0sCisgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfSwKKyAgICAibmFtZSIgOiAiVGlua2VyR3JhcGhTdGVwKHZlcnRleCxbfmxhYmVsLmVxKHBlcnNvbildKSIsCisgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfQorICAgIH0sCisgICAgImlkIiA6ICI3LjAuMCgpIiwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJWZXJ0ZXhTdGVwKE9VVCx2ZXJ0ZXgpIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICIzLjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlNjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSw1MiBAQAoreworICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0gXQorICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfSBdCisgICAgfSwgImlkIiwgIjcuMC4wKCkiLCAibWV0cmljcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbW9udGhkYXktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok1vbnRoRGF5IiwKKyAgIkB2YWx1ZSIgOiAiLS0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21vbnRoZGF5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbW9udGhkYXktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21vbnRoZGF5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vZmZzZXRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0RGF0ZVRpbWUiLAorICAiQHZhbHVlIiA6ICIyMDA3LTEyLTAzVDEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vZmZzZXRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0dGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXRUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vZmZzZXR0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0dGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0dGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb3BlcmF0b3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzE0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcGVyYXRvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29wZXJhdG9yLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcGVyYXRvci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcGVyYXRvciIsCisgICJAdmFsdWUiIDogInN1bSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29yZGVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29yZGVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb3JkZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTA0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29yZGVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGFuZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYW5kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGFuZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhbmQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhbmQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGF0aC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjFkMC5qc29uCkBAIC0wLDAgKzEsNjIgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiCisgICAgICB9IF0KKyAgICB9CisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGF0aC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTJkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iCisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjYWEwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGF0aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQYXRoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgICAib2JqZWN0cyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYXRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGF0aC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YjM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGF0aC12M2QwLmpzb24KQEAgLTAsMCArMSw0OSBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm9iamVjdHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInBlcnNvbiIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wZXJpb2QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGVyaW9kLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGVyaW9kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQzOGExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wZXJpb2QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGljay12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGljay12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9waWNrLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UGljayIsCisgICJAdmFsdWUiIDogImFueSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BpY2stdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9waWNrLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9waWNrLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BvcC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3AtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BvcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Bvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IFsgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMQorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMAorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMDAKKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Bvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Bvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcG9yLXYzZDAuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAib3IiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjFkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Byb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUxYzBhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJrZXkiIDogInNpbmNlIiwKKyAgInZhbHVlIiA6IDIwMDkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Byb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZmZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImtleSIgOiAic2luY2UiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTM4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRoaW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wd2l0aGluLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhpbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmOTljYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhpbi12M2QwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wd2l0aG91dC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMjkxYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRob3V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhvdXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRob3V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAid2l0aG91dCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2NvcGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6U2NvcGUiLAorICAiQHZhbHVlIiA6ICJsb2NhbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Njb3BlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2NvcGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Njb3BlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25jbG9zZS12MWQwLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25jbG9zZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25jbG9zZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25jbG9zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2U4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWwtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjhiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12M2QwLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0ZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJzb2NpYWwuVih4KSIsICJsYW5ndWFnZSIsICJncmVtbGluLWdyb292eSIsICJhbGlhc2VzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgImciLCAic29jaWFsIiBdCisgICAgfSwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5YTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3NldC12M2QwLmpzb24KQEAgLTAsMCArMSw3IEBACit7CisgICJAdHlwZSIgOiAiZzpTZXQiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nob3J0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnQxNiIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zaG9ydC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nob3J0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zaG9ydC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zdGFuZGFyZHJlc3VsdC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCkBAIC0wLDAgKzEsNTAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJpZCIgOiAxLAorICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICJpZCIgOiAwLAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICAgIH0gXSwKKyAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICJpZCIgOiA2LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDcsCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDgsCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA5LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zdGFuZGFyZHJlc3VsdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3YzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMTEgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3N0YW5kYXJkcmVzdWx0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmNhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KQEAgLTAsMCArMSwxMjAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0sCisgICAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTM5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGV4dHAtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RleHRwLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGV4dHAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90ZXh0cC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMDk4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGV4dHAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW1lc3RhbXAtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMGUxNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW1lc3RhbXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW1lc3RhbXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbWVzdGFtcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpUaW1lc3RhbXAiLAorICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbmtlcmdyYXBoLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzE5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpAQCAtMCwwICsxLDMxMyBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5MCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAwCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDExLAorICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDcKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTQsCisgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDksCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMywKKyAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxNywKKyAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwOQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0sCisgICJlZGdlcyIgOiBbIHsKKyAgICAiaWQiIDogMTMsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDA5CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDExCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE5LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA1CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA0CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMgorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEwCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMzUyIEBACit7CisgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAiaWQiIDogMSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAwLAorICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDEyLAorICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA3LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTEKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTUsCisgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5ODIsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxOCwKKyAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTQsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDQKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE3LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjAsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTIKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIzLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA5LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI2LAorICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbmtlcmdyYXBoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDgyOSBAQAoreworICAiQHR5cGUiIDogInRpbmtlcjpncmFwaCIsCisgICJAdmFsdWUiIDogeworICAgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTkwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5ODIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJhYWNoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImdyZW1saW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0sCisgICAgImVkZ2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjIKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbmtlcmdyYXBoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12M2QwLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGQxOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTE0IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzYWxNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMC4wMDQKKyAgICB9LAorICAgICJtZXRyaWNzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjcuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMi4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVHJlZVN0ZXAiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjQuMC4wKCkiCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmY3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjcuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMi4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVHJlZVN0ZXAiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjQuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2VyIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImJ1bGsiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RyYXZlcnNlci12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdXVpZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmZmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3V1aWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKyI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy91dWlkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy91dWlkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3V1aWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpVVUlEIiwKKyAgIkB2YWx1ZSIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdXVpZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3V1aWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3V1aWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NWY1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYxZDAuanNvbgpAQCAtMCwwICsxLDM5IEBACit7CisgICJpZCIgOiAxLAorICAibGFiZWwiIDogInBlcnNvbiIsCisgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgfSBdLAorICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICJpZCIgOiA2LAorICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA5LAorICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0MyBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDgsCisgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgIH0KKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4cHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDUgQEAKK3sKKyAgImlkIiA6IDAsCisgICJ2YWx1ZSIgOiAibWFya28iLAorICAibGFiZWwiIDogIm5hbWUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4cHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4cHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy95ZWFyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy95ZWFybW9udGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhNWUyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy95ZWFybW9udGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy95ZWFybW9udGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXJtb250aC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6WWVhck1vbnRoIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvem9uZWRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvem9uZW9mZnNldC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvem9uZW9mZnNldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVvZmZzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVvZmZzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlpvbmVPZmZzZXQiLAorICAiQHZhbHVlIiA6ICIrMDM6MDY6MDkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTczNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjZWNhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJzYXNsTWVjaGFuaXNtIiwgIlBMQUlOIiwgInNhc2wiLCAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JhcnJpZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iYXJyaWVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmFycmllci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmFycmllci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpZ2RlY2ltYWwtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdkZWNpbWFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnZGVjaW1hbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MzM3YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnZGVjaW1hbC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpZ2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdpbnRlZ2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnaW50ZWdlci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNjExNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnaW50ZWdlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpbmRpbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaW5kaW5nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmluZGluZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjhjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmluZGluZy12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDQ5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J1bGtzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSBAQAorWyAibWFya28iLCAiam9zaCIsICJqb3NoIiBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9idWxrc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnVsa3NldC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnVsa3NldC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QnVsa1NldCIsCisgICJAdmFsdWUiIDogWyAibWFya28iLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgImpvc2giLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZSIsCisgICJAdmFsdWUiIDogMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyNDExNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWJ1ZmZlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWJ1ZmZlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVidWZmZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVidWZmZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGVCdWZmZXIiLAorICAiQHZhbHVlIiA6ICJjMjl0WlNCaWVYUmxjeUJtYjNJZ2VXOTEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlY29kZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw2IEBACit7CisgICJAdHlwZSIgOiAiZzpCeXRlY29kZSIsCisgICJAdmFsdWUiIDogeworICAgICJzdGVwIiA6IFsgWyAiViIgXSwgWyAiaGFzTGFiZWwiLCAicGVyc29uIiBdLCBbICJvdXQiIF0sIFsgImluIiBdLCBbICJ0cmVlIiBdIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWNvZGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlY29kZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWNvZGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NhcmRpbmFsaXR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NhcmRpbmFsaXR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2FyZGluYWxpdHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NhcmRpbmFsaXR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2hhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NoYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jaGFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jaGFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NsYXNzLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2xhc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jbGFzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2xhc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q2xhc3MiLAorICAiQHZhbHVlIiA6ICJqYXZhLmlvLkZpbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NvbHVtbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDb2x1bW4iLAorICAiQHZhbHVlIiA6ICJrZXlzIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY29sdW1uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY29sdW1uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jb2x1bW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RhdGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2I3MWEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxNDgxNzUwMDc2Mjk1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RhdGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGF0ZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MDA3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RpcmVjdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kaXJlY3Rpb24tdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kaXJlY3Rpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Y2I3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RpcmVjdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzJlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RvdWJsZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTAwLjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZG91YmxlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RvdWJsZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RvdWJsZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlNDk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZG91YmxlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2R1cmF0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2R1cmF0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZHVyYXRpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzBjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2R1cmF0aW9uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2VkZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9lZGdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdmMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9lZGdlLXYxZDAuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJpZCIgOiAxMywKKyAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICJ0eXBlIiA6ICJlZGdlIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogMjAwOQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9lZGdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlNzNkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNCBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgImluViIgOiAxMCwKKyAgIm91dFYiIDogMSwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJzaW5jZSIgOiB7CisgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAidmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFjNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9lZGdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9lZGdlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12M2QwLmpzb24KQEAgLTAsMCArMSwzMiBAQAoreworICAiQHR5cGUiIDogImc6RWRnZSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMworICAgIH0sCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEwCisgICAgfSwKKyAgICAib3V0ViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2Zsb2F0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc5YWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZmxvYXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9mbG9hdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZmxvYXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RmxvYXQiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbmV0YWRkcmVzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbmV0YWRkcmVzcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2luZXRhZGRyZXNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbmV0YWRkcmVzcy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDk3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2luc3RhbnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2luc3RhbnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnN0YW50LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnN0YW50LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnN0YW50IiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0xNFQxNjozOToxOS4zNDlaIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW50ZWdlci12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGNlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sYW1iZGEtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbGFtYmRhLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbGFtYmRhLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmUxNzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sYW1iZGEtdjNkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbGlzdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xpc3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTRlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xpc3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6TGlzdCIsCisgICJAdmFsdWUiIDogWyB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgInBlcnNvbiIsIHRydWUgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDgzNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWx0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsdGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsdGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNjVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWx0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9uZy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvbmctdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb25nLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGI5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb25nLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21hcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21hcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTljOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbWFwLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpNYXAiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInJlZCIsIHsKKyAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMworICAgIH0gXQorICB9LCB7CisgICAgIkB0eXBlIiA6ICJnOkRhdGUiLAorICAgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorICB9LCAidGVzdCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMTIzCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFlOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNTQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiZHVyIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sCisgICAgImNvdW50cyIgOiB7CisgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0sCisgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfSwKKyAgICAibmFtZSIgOiAiVGlua2VyR3JhcGhTdGVwKHZlcnRleCxbfmxhYmVsLmVxKHBlcnNvbildKSIsCisgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfQorICAgIH0sCisgICAgImlkIiA6ICI3LjAuMCgpIiwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJWZXJ0ZXhTdGVwKE9VVCx2ZXJ0ZXgpIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICIzLjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlNjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSw1MiBAQAoreworICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0gXQorICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfSBdCisgICAgfSwgImlkIiwgIjcuMC4wKCkiLCAibWV0cmljcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbW9udGhkYXktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok1vbnRoRGF5IiwKKyAgIkB2YWx1ZSIgOiAiLS0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21vbnRoZGF5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbW9udGhkYXktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21vbnRoZGF5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vZmZzZXRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0RGF0ZVRpbWUiLAorICAiQHZhbHVlIiA6ICIyMDA3LTEyLTAzVDEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vZmZzZXRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0dGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXRUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vZmZzZXR0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0dGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0dGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb3BlcmF0b3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzE0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcGVyYXRvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29wZXJhdG9yLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcGVyYXRvci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcGVyYXRvciIsCisgICJAdmFsdWUiIDogInN1bSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29yZGVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29yZGVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb3JkZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTA0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29yZGVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGFuZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYW5kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGFuZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhbmQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhbmQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGF0aC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjFkMC5qc29uCkBAIC0wLDAgKzEsNjIgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiCisgICAgICB9IF0KKyAgICB9CisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGF0aC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTJkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iCisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjYWEwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGF0aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQYXRoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgICAib2JqZWN0cyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYXRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGF0aC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YjM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGF0aC12M2QwLmpzb24KQEAgLTAsMCArMSw0OSBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm9iamVjdHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInBlcnNvbiIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wZXJpb2QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGVyaW9kLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGVyaW9kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQzOGExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wZXJpb2QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGljay12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGljay12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9waWNrLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UGljayIsCisgICJAdmFsdWUiIDogImFueSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BpY2stdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9waWNrLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9waWNrLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BvcC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3AtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BvcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Bvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IFsgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMQorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMAorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMDAKKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Bvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Bvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcG9yLXYzZDAuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAib3IiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjFkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Byb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUxYzBhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJrZXkiIDogInNpbmNlIiwKKyAgInZhbHVlIiA6IDIwMDkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Byb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZmZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImtleSIgOiAic2luY2UiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTM4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRoaW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wd2l0aGluLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhpbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmOTljYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhpbi12M2QwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wd2l0aG91dC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMjkxYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRob3V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhvdXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRob3V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAid2l0aG91dCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2NvcGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6U2NvcGUiLAorICAiQHZhbHVlIiA6ICJsb2NhbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Njb3BlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2NvcGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Njb3BlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25jbG9zZS12MWQwLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25jbG9zZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25jbG9zZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25jbG9zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2U4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYxZDAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWwtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjhiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12M2QwLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0ZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJzb2NpYWwuVih4KSIsICJsYW5ndWFnZSIsICJncmVtbGluLWdyb292eSIsICJhbGlhc2VzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgImciLCAic29jaWFsIiBdCisgICAgfSwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5YTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3NldC12M2QwLmpzb24KQEAgLTAsMCArMSw3IEBACit7CisgICJAdHlwZSIgOiAiZzpTZXQiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nob3J0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnQxNiIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zaG9ydC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nob3J0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zaG9ydC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zdGFuZGFyZHJlc3VsdC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCkBAIC0wLDAgKzEsNTAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJpZCIgOiAxLAorICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICJpZCIgOiAwLAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICAgIH0gXSwKKyAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICJpZCIgOiA2LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDcsCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDgsCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA5LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zdGFuZGFyZHJlc3VsdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3YzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMTEgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmNhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KQEAgLTAsMCArMSwxMjAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0sCisgICAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTM5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGV4dHAtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RleHRwLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RleHRwLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGV4dHAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90ZXh0cC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMDk4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGV4dHAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW1lc3RhbXAtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMGUxNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW1lc3RhbXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW1lc3RhbXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbWVzdGFtcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpUaW1lc3RhbXAiLAorICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbmtlcmdyYXBoLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzE5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbmtlcmdyYXBoLXYxZDAuanNvbgpAQCAtMCwwICsxLDMxMyBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5MCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAwCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDExLAorICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDcKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTQsCisgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDksCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMywKKyAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxNywKKyAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwOQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0sCisgICJlZGdlcyIgOiBbIHsKKyAgICAiaWQiIDogMTMsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDA5CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDExCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE5LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA1CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA0CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMgorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEwCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMzUyIEBACit7CisgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAiaWQiIDogMSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAwLAorICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDEyLAorICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA3LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTEKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTUsCisgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5ODIsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxOCwKKyAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTQsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDQKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE3LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjAsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTIKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIzLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA5LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI2LAorICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbmtlcmdyYXBoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDgyOSBAQAoreworICAiQHR5cGUiIDogInRpbmtlcjpncmFwaCIsCisgICJAdmFsdWUiIDogeworICAgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTkwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5ODIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJhYWNoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImdyZW1saW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0sCisgICAgImVkZ2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjIKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbmtlcmdyYXBoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12M2QwLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGQxOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTE0IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzYWxNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMC4wMDQKKyAgICB9LAorICAgICJtZXRyaWNzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjcuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMi4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVHJlZVN0ZXAiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjQuMC4wKCkiCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmY3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjcuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMi4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVHJlZVN0ZXAiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjQuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2VyIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImJ1bGsiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RyYXZlcnNlci12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdXVpZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3V1aWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmZmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3V1aWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKyI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC91dWlkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC91dWlkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3V1aWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpVVUlEIiwKKyAgIkB2YWx1ZSIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdXVpZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3V1aWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3V1aWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NWY1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYxZDAuanNvbgpAQCAtMCwwICsxLDM5IEBACit7CisgICJpZCIgOiAxLAorICAibGFiZWwiIDogInBlcnNvbiIsCisgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgfSBdLAorICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICJpZCIgOiA2LAorICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA5LAorICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0MyBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDgsCisgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgIH0KKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4cHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDUgQEAKK3sKKyAgImlkIiA6IDAsCisgICJ2YWx1ZSIgOiAibWFya28iLAorICAibGFiZWwiIDogIm5hbWUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4cHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4cHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC95ZWFyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC95ZWFybW9udGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhNWUyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC95ZWFybW9udGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC95ZWFybW9udGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXJtb250aC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6WWVhck1vbnRoIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvem9uZWRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvem9uZW9mZnNldC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvem9uZW9mZnNldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVvZmZzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVvZmZzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlpvbmVPZmZzZXQiLAorICAiQHZhbHVlIiA6ICIrMDM6MDY6MDkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTczNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjZWNhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJzYXNsTWVjaGFuaXNtIiwgIlBMQUlOIiwgInNhc2wiLCAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JhcnJpZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iYXJyaWVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmFycmllci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmFycmllci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpZ2RlY2ltYWwtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdkZWNpbWFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnZGVjaW1hbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MzM3YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnZGVjaW1hbC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpZ2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdpbnRlZ2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnaW50ZWdlci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNjExNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnaW50ZWdlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpbmRpbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaW5kaW5nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmluZGluZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjhjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmluZGluZy12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDQ5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J1bGtzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSBAQAorWyAibWFya28iLCAiam9zaCIsICJqb3NoIiBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9idWxrc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnVsa3NldC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnVsa3NldC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QnVsa1NldCIsCisgICJAdmFsdWUiIDogWyAibWFya28iLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgImpvc2giLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZSIsCisgICJAdmFsdWUiIDogMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyNDExNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWJ1ZmZlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWJ1ZmZlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVidWZmZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVidWZmZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGVCdWZmZXIiLAorICAiQHZhbHVlIiA6ICJjMjl0WlNCaWVYUmxjeUJtYjNJZ2VXOTEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlY29kZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw2IEBACit7CisgICJAdHlwZSIgOiAiZzpCeXRlY29kZSIsCisgICJAdmFsdWUiIDogeworICAgICJzdGVwIiA6IFsgWyAiViIgXSwgWyAiaGFzTGFiZWwiLCAicGVyc29uIiBdLCBbICJvdXQiIF0sIFsgImluIiBdLCBbICJ0cmVlIiBdIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWNvZGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlY29kZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWNvZGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NhcmRpbmFsaXR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NhcmRpbmFsaXR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2FyZGluYWxpdHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NhcmRpbmFsaXR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2hhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NoYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jaGFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jaGFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NsYXNzLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2xhc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jbGFzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2xhc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q2xhc3MiLAorICAiQHZhbHVlIiA6ICJqYXZhLmlvLkZpbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NvbHVtbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDb2x1bW4iLAorICAiQHZhbHVlIiA6ICJrZXlzIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY29sdW1uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY29sdW1uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jb2x1bW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RhdGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2I3MWEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxNDgxNzUwMDc2Mjk1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RhdGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGF0ZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MDA3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RpcmVjdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kaXJlY3Rpb24tdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kaXJlY3Rpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Y2I3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RpcmVjdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzJlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RvdWJsZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTAwLjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZG91YmxlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RvdWJsZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RvdWJsZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlNDk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZG91YmxlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2R1cmF0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2R1cmF0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZHVyYXRpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzBjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2R1cmF0aW9uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2VkZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9lZGdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdmMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9lZGdlLXYxZDAuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJpZCIgOiAxMywKKyAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICJ0eXBlIiA6ICJlZGdlIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogMjAwOQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9lZGdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlNzNkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNCBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgImluViIgOiAxMCwKKyAgIm91dFYiIDogMSwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJzaW5jZSIgOiB7CisgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAidmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFjNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9lZGdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9lZGdlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12M2QwLmpzb24KQEAgLTAsMCArMSwzMiBAQAoreworICAiQHR5cGUiIDogImc6RWRnZSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMworICAgIH0sCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEwCisgICAgfSwKKyAgICAib3V0ViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2Zsb2F0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc5YWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZmxvYXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9mbG9hdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZmxvYXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RmxvYXQiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbmV0YWRkcmVzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbmV0YWRkcmVzcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2luZXRhZGRyZXNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbmV0YWRkcmVzcy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDk3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2luc3RhbnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2luc3RhbnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnN0YW50LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnN0YW50LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnN0YW50IiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0xNFQxNjozOToxOS4zNDlaIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW50ZWdlci12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGNlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sYW1iZGEtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbGFtYmRhLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbGFtYmRhLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmUxNzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sYW1iZGEtdjNkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbGlzdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xpc3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTRlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xpc3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6TGlzdCIsCisgICJAdmFsdWUiIDogWyB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgInBlcnNvbiIsIHRydWUgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDgzNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWx0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsdGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsdGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNjVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWx0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9uZy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvbmctdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb25nLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGI5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb25nLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21hcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21hcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTljOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbWFwLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpNYXAiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInJlZCIsIHsKKyAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMworICAgIH0gXQorICB9LCB7CisgICAgIkB0eXBlIiA6ICJnOkRhdGUiLAorICAgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorICB9LCAidGVzdCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMTIzCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFlOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNTQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiZHVyIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sCisgICAgImNvdW50cyIgOiB7CisgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0sCisgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfSwKKyAgICAibmFtZSIgOiAiVGlua2VyR3JhcGhTdGVwKHZlcnRleCxbfmxhYmVsLmVxKHBlcnNvbildKSIsCisgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfQorICAgIH0sCisgICAgImlkIiA6ICI3LjAuMCgpIiwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJWZXJ0ZXhTdGVwKE9VVCx2ZXJ0ZXgpIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICIzLjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlNjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSw1MiBAQAoreworICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0gXQorICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfSBdCisgICAgfSwgImlkIiwgIjcuMC4wKCkiLCAibWV0cmljcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbW9udGhkYXktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok1vbnRoRGF5IiwKKyAgIkB2YWx1ZSIgOiAiLS0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21vbnRoZGF5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbW9udGhkYXktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21vbnRoZGF5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vZmZzZXRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0RGF0ZVRpbWUiLAorICAiQHZhbHVlIiA6ICIyMDA3LTEyLTAzVDEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vZmZzZXRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0dGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXRUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vZmZzZXR0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0dGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0dGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb3BlcmF0b3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzE0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcGVyYXRvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29wZXJhdG9yLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcGVyYXRvci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcGVyYXRvciIsCisgICJAdmFsdWUiIDogInN1bSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29yZGVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29yZGVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb3JkZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTA0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29yZGVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGFuZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYW5kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGFuZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhbmQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhbmQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGF0aC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjFkMC5qc29uCkBAIC0wLDAgKzEsNjIgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiCisgICAgICB9IF0KKyAgICB9CisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGF0aC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTJkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iCisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjYWEwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGF0aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQYXRoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgICAib2JqZWN0cyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYXRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGF0aC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YjM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGF0aC12M2QwLmpzb24KQEAgLTAsMCArMSw0OSBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm9iamVjdHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInBlcnNvbiIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wZXJpb2QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGVyaW9kLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGVyaW9kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQzOGExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wZXJpb2QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGljay12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGljay12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9waWNrLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UGljayIsCisgICJAdmFsdWUiIDogImFueSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BpY2stdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9waWNrLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9waWNrLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BvcC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3AtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BvcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Bvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IFsgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMQorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMAorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMDAKKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Bvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Bvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcG9yLXYzZDAuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAib3IiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjFkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Byb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUxYzBhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJrZXkiIDogInNpbmNlIiwKKyAgInZhbHVlIiA6IDIwMDkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Byb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZmZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImtleSIgOiAic2luY2UiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTM4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRoaW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wd2l0aGluLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhpbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmOTljYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhpbi12M2QwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wd2l0aG91dC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMjkxYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRob3V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhvdXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRob3V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAid2l0aG91dCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2NvcGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6U2NvcGUiLAorICAiQHZhbHVlIiA6ICJsb2NhbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Njb3BlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2NvcGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Njb3BlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25jbG9zZS12MWQwLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25jbG9zZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25jbG9zZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25jbG9zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2U4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYxZDAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWwtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjhiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12M2QwLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0ZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJzb2NpYWwuVih4KSIsICJsYW5ndWFnZSIsICJncmVtbGluLWdyb292eSIsICJhbGlhc2VzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgImciLCAic29jaWFsIiBdCisgICAgfSwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5YTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3NldC12M2QwLmpzb24KQEAgLTAsMCArMSw3IEBACit7CisgICJAdHlwZSIgOiAiZzpTZXQiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nob3J0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnQxNiIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zaG9ydC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nob3J0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zaG9ydC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCkBAIC0wLDAgKzEsNTAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJpZCIgOiAxLAorICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICJpZCIgOiAwLAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICAgIH0gXSwKKyAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICJpZCIgOiA2LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDcsCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDgsCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA5LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3YzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMTEgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3N0YW5kYXJkcmVzdWx0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmNhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KQEAgLTAsMCArMSwxMjAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0sCisgICAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTM5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGV4dHAtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RleHRwLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RleHRwLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGV4dHAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90ZXh0cC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMDk4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGV4dHAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW1lc3RhbXAtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMGUxNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW1lc3RhbXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW1lc3RhbXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbWVzdGFtcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpUaW1lc3RhbXAiLAorICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbmtlcmdyYXBoLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzE5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbmtlcmdyYXBoLXYxZDAuanNvbgpAQCAtMCwwICsxLDMxMyBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5MCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAwCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDExLAorICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDcKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTQsCisgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDksCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMywKKyAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxNywKKyAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwOQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0sCisgICJlZGdlcyIgOiBbIHsKKyAgICAiaWQiIDogMTMsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDA5CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDExCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE5LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA1CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA0CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMgorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEwCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMzUyIEBACit7CisgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAiaWQiIDogMSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAwLAorICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDEyLAorICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA3LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTEKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTUsCisgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5ODIsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxOCwKKyAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTQsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDQKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE3LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjAsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTIKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIzLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA5LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI2LAorICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbmtlcmdyYXBoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDgyOSBAQAoreworICAiQHR5cGUiIDogInRpbmtlcjpncmFwaCIsCisgICJAdmFsdWUiIDogeworICAgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTkwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5ODIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJhYWNoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImdyZW1saW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0sCisgICAgImVkZ2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjIKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbmtlcmdyYXBoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12M2QwLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGQxOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTE0IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzYWxNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMC4wMDQKKyAgICB9LAorICAgICJtZXRyaWNzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjcuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMi4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVHJlZVN0ZXAiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjQuMC4wKCkiCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmY3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjcuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMi4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVHJlZVN0ZXAiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjQuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2VyIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImJ1bGsiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RyYXZlcnNlci12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdXVpZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3V1aWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmZmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3V1aWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKyI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS91dWlkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS91dWlkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3V1aWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpVVUlEIiwKKyAgIkB2YWx1ZSIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdXVpZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3V1aWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3V1aWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NWY1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYxZDAuanNvbgpAQCAtMCwwICsxLDM5IEBACit7CisgICJpZCIgOiAxLAorICAibGFiZWwiIDogInBlcnNvbiIsCisgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgfSBdLAorICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICJpZCIgOiA2LAorICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA5LAorICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0MyBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDgsCisgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgIH0KKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4cHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDUgQEAKK3sKKyAgImlkIiA6IDAsCisgICJ2YWx1ZSIgOiAibWFya28iLAorICAibGFiZWwiIDogIm5hbWUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4cHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4cHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS95ZWFyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS95ZWFybW9udGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhNWUyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS95ZWFybW9udGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS95ZWFybW9udGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXJtb250aC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6WWVhck1vbnRoIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvem9uZWRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVkZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvem9uZW9mZnNldC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvem9uZW9mZnNldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVvZmZzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVvZmZzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlpvbmVPZmZzZXQiLAorICAiQHZhbHVlIiA6ICIrMDM6MDY6MDkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNWI4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTczNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4ZTFmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjZWNhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJzYXNsTWVjaGFuaXNtIiwgIlBMQUlOIiwgInNhc2wiLCAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JhcnJpZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iYXJyaWVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmFycmllci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmFycmllci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpCYXJyaWVyIiwKKyAgIkB2YWx1ZSIgOiAibm9ybVNhY2siCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpZ2RlY2ltYWwtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdkZWNpbWFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnZGVjaW1hbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MzM3YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnZGVjaW1hbC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnRGVjaW1hbCIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpZ2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdpbnRlZ2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnaW50ZWdlci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNjExNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnaW50ZWdlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6QmlnSW50ZWdlciIsCisgICJAdmFsdWUiIDogMTIzNDU2Nzg5OTg3NjU0MzIxMTIzNDU2Nzg5OTg3NjU0MzIxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpbmRpbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaW5kaW5nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmluZGluZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5YjhjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmluZGluZy12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QmluZGluZyIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogIngiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDQ5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J1bGtzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSBAQAorWyAibWFya28iLCAiam9zaCIsICJqb3NoIiBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9idWxrc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnVsa3NldC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnVsa3NldC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6QnVsa1NldCIsCisgICJAdmFsdWUiIDogWyAibWFya28iLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgImpvc2giLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAiQHZhbHVlIiA6IDIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZSIsCisgICJAdmFsdWUiIDogMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyNDExNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWJ1ZmZlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWJ1ZmZlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVidWZmZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVidWZmZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGVCdWZmZXIiLAorICAiQHZhbHVlIiA6ICJjMjl0WlNCaWVYUmxjeUJtYjNJZ2VXOTEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlY29kZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw2IEBACit7CisgICJAdHlwZSIgOiAiZzpCeXRlY29kZSIsCisgICJAdmFsdWUiIDogeworICAgICJzdGVwIiA6IFsgWyAiViIgXSwgWyAiaGFzTGFiZWwiLCAicGVyc29uIiBdLCBbICJvdXQiIF0sIFsgImluIiBdLCBbICJ0cmVlIiBdIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWNvZGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlY29kZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5ZDI3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWNvZGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NhcmRpbmFsaXR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NhcmRpbmFsaXR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2FyZGluYWxpdHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NhcmRpbmFsaXR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNhcmRpbmFsaXR5IiwKKyAgIkB2YWx1ZSIgOiAibGlzdCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2hhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NoYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jaGFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jaGFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpDaGFyIiwKKyAgIkB2YWx1ZSIgOiAieCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NsYXNzLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jbGFzcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2xhc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jbGFzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2xhc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q2xhc3MiLAorICAiQHZhbHVlIiA6ICJqYXZhLmlvLkZpbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NvbHVtbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDb2x1bW4iLAorICAiQHZhbHVlIiA6ICJrZXlzIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY29sdW1uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY29sdW1uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNhNTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jb2x1bW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RhdGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2I3MWEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxNDgxNzUwMDc2Mjk1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RhdGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGF0ZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MDA3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RpcmVjdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kaXJlY3Rpb24tdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kaXJlY3Rpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Y2I3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RpcmVjdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEaXJlY3Rpb24iLAorICAiQHZhbHVlIiA6ICJPVVQiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzJlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RvdWJsZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTAwLjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZG91YmxlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RvdWJsZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RvdWJsZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlNDk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZG91YmxlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2R1cmF0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2R1cmF0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZHVyYXRpb24tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzBjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2R1cmF0aW9uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpEdXJhdGlvbiIsCisgICJAdmFsdWUiIDogIlBUMTIwSCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2VkZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9lZGdlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdmMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9lZGdlLXYxZDAuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJpZCIgOiAxMywKKyAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICJ0eXBlIiA6ICJlZGdlIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogMjAwOQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9lZGdlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlNzNkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNCBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgImluViIgOiAxMCwKKyAgIm91dFYiIDogMSwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJzaW5jZSIgOiB7CisgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAidmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFjNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9lZGdlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9lZGdlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12M2QwLmpzb24KQEAgLTAsMCArMSwzMiBAQAoreworICAiQHR5cGUiIDogImc6RWRnZSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMworICAgIH0sCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEwCisgICAgfSwKKyAgICAib3V0ViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2Zsb2F0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc5YWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9mbG9hdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZmxvYXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9mbG9hdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZmxvYXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RmxvYXQiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbmV0YWRkcmVzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbmV0YWRkcmVzcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2luZXRhZGRyZXNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbmV0YWRkcmVzcy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5ldEFkZHJlc3MiLAorICAiQHZhbHVlIiA6ICJsb2NhbGhvc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDk3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2luc3RhbnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2luc3RhbnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnN0YW50LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnN0YW50LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnN0YW50IiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0xNFQxNjozOToxOS4zNDlaIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW50ZWdlci12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGNlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6SW50MzIiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sYW1iZGEtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbGFtYmRhLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbGFtYmRhLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmUxNzliCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sYW1iZGEtdjNkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAiQHR5cGUiIDogImc6TGFtYmRhIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInNjcmlwdCIgOiAieyBpdC5nZXQoKSB9IiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYXJndW1lbnRzIiA6IDEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbGlzdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xpc3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTRlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xpc3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6TGlzdCIsCisgICJAdmFsdWUiIDogWyB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEKKyAgfSwgInBlcnNvbiIsIHRydWUgXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsZGF0ZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDgzNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wMS0wMVQxMjozMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWx0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsdGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsdGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNjVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWx0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMjozMDo0NSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9uZy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvbmctdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb25nLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGI5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb25nLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21hcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21hcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTljOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbWFwLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpNYXAiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInJlZCIsIHsKKyAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMworICAgIH0gXQorICB9LCB7CisgICAgIkB0eXBlIiA6ICJnOkRhdGUiLAorICAgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorICB9LCAidGVzdCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMTIzCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFlOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNTQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiZHVyIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sCisgICAgImNvdW50cyIgOiB7CisgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0sCisgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfSwKKyAgICAibmFtZSIgOiAiVGlua2VyR3JhcGhTdGVwKHZlcnRleCxbfmxhYmVsLmVxKHBlcnNvbildKSIsCisgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfQorICAgIH0sCisgICAgImlkIiA6ICI3LjAuMCgpIiwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJWZXJ0ZXhTdGVwKE9VVCx2ZXJ0ZXgpIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICIzLjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlNjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSw1MiBAQAoreworICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgIH0gXQorICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgfSBdCisgICAgfSwgImlkIiwgIjcuMC4wKCkiLCAibWV0cmljcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbW9udGhkYXktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok1vbnRoRGF5IiwKKyAgIkB2YWx1ZSIgOiAiLS0wMS0wMSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21vbnRoZGF5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbW9udGhkYXktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTU5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21vbnRoZGF5LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vZmZzZXRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0RGF0ZVRpbWUiLAorICAiQHZhbHVlIiA6ICIyMDA3LTEyLTAzVDEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vZmZzZXRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0dGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXRUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vZmZzZXR0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0dGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyNDk1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0dGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb3BlcmF0b3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzE0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcGVyYXRvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29wZXJhdG9yLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcGVyYXRvci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcGVyYXRvciIsCisgICJAdmFsdWUiIDogInN1bSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29yZGVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcmRlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29yZGVyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb3JkZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTA0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29yZGVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9yZGVyIiwKKyAgIkB2YWx1ZSIgOiAic2h1ZmZsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcC12M2QwLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGFuZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYW5kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGFuZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhbmQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhbmQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJhbmQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJsdCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGF0aC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjFkMC5qc29uCkBAIC0wLDAgKzEsNjIgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiCisgICAgICB9IF0KKyAgICB9CisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGF0aC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTJkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgIm9iamVjdHMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iCisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjYWEwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGF0aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQYXRoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImxhYmVscyIgOiBbIFsgXSwgWyBdLCBbIF0gXSwKKyAgICAib2JqZWN0cyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYXRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGF0aC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YjM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGF0aC12M2QwLmpzb24KQEAgLTAsMCArMSw0OSBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm9iamVjdHMiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInBlcnNvbiIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wZXJpb2QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGVyaW9kLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGVyaW9kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQzOGExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wZXJpb2QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlBlcmlvZCIsCisgICJAdmFsdWUiIDogIlAxWTZNMTVEIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGljay12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGljay12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9waWNrLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UGljayIsCisgICJAdmFsdWUiIDogImFueSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BpY2stdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9waWNrLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2EyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9waWNrLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3AtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BvcC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3AtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BvcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQb3AiLAorICAiQHZhbHVlIiA6ICJhbGwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3ItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Bvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IFsgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMQorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMAorICAgICAgICB9LCB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IC0xMDAKKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Bvci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Bvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcG9yLXYzZDAuanNvbgpAQCAtMCwwICsxLDM0IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAib3IiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpQIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjFkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Byb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUxYzBhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJrZXkiIDogInNpbmNlIiwKKyAgInZhbHVlIiA6IDIwMDkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Byb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZmZTMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImtleSIgOiAic2luY2UiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTM4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRoaW4tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wd2l0aGluLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhpbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmOTljYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhpbi12M2QwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wd2l0aG91dC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMjkxYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAyCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRob3V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhvdXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRob3V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAid2l0aG91dCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2NvcGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6U2NvcGUiLAorICAiQHZhbHVlIiA6ICJsb2NhbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Njb3BlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2NvcGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNzRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Njb3BlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25jbG9zZS12MWQwLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODI1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25jbG9zZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25jbG9zZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25jbG9zZS12M2QwLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiY2xvc2UiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2U4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYxZDAuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWwtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjhiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12M2QwLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAic2Vzc2lvbiIsICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0ZWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJzb2NpYWwuVih4KSIsICJsYW5ndWFnZSIsICJncmVtbGluLWdyb292eSIsICJhbGlhc2VzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgImciLCAic29jaWFsIiBdCisgICAgfSwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5YTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZ3JlbWxpbiIsICJnLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGM2YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxNSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGVlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3NldC12M2QwLmpzb24KQEAgLTAsMCArMSw3IEBACit7CisgICJAdHlwZSIgOiAiZzpTZXQiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nob3J0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zaG9ydC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpJbnQxNiIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zaG9ydC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nob3J0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhmNWNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zaG9ydC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zdGFuZGFyZHJlc3VsdC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCkBAIC0wLDAgKzEsNTAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJpZCIgOiAxLAorICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICJpZCIgOiAwLAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICAgIH0gXSwKKyAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICJpZCIgOiA2LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDcsCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgICAgfQorICAgICAgICB9LCB7CisgICAgICAgICAgImlkIiA6IDgsCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA5LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICAgIH0KKyAgICAgICAgfSBdCisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zdGFuZGFyZHJlc3VsdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3YzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMTEgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3N0YW5kYXJkcmVzdWx0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmNhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KQEAgLTAsMCArMSwxMjAgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogMjAwLAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0sCisgICAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0sCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3QtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTM5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3QtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VCIsCisgICJAdmFsdWUiIDogImxhYmVsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGV4dHAtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RleHRwLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RleHRwLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGV4dHAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90ZXh0cC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMDk4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGV4dHAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW1lc3RhbXAtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMGUxNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW1lc3RhbXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW1lc3RhbXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbWVzdGFtcC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpUaW1lc3RhbXAiLAorICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbmtlcmdyYXBoLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzE5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbmtlcmdyYXBoLXYxZDAuanNvbgpAQCAtMCwwICsxLDMxMyBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA4LAorICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5MCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAwCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDExLAorICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDcKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTQsCisgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDksCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMywKKyAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxNywKKyAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwOQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0sCisgICJlZGdlcyIgOiBbIHsKKyAgICAiaWQiIDogMTMsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDA5CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDExCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE5LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA1CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiA0CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMgorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMiwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogMworICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEwCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMzUyIEBACit7CisgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAiaWQiIDogMSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAwLAorICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk5NywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDcsCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA3LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEsCisgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDEwLAorICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDEyLAorICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA2CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA4LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDIsCisgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMywKKyAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA3LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTEKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTUsCisgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDExLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMTQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTYsCisgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5ODIsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxOCwKKyAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA1LAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTksCisgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTQsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDQKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE3LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTgsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAidmFsdWUiIDogMjAxMQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjAsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIxLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTIKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIzLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA5LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDUKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiAzCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI2LAorICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbmtlcmdyYXBoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDgyOSBAQAoreworICAiQHR5cGUiIDogInRpbmtlcjpncmFwaCIsCisgICJAdmFsdWUiIDogeworICAgICJ2ZXJ0aWNlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTkwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImR1bGxlcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAwCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInB1cmNlbGx2aWxsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA2CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWF0dGhpYXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicmVtZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2VhdHRsZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5ODIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJhYWNoZW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImdyZW1saW4iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0sCisgICAgImVkZ2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjAKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEyCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjIKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIzCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidHJhdmVyc2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbmtlcmdyYXBoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5NWVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12M2QwLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGQxOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTE0IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzYWxNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMC4wMDQKKyAgICB9LAorICAgICJtZXRyaWNzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjcuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMi4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVHJlZVN0ZXAiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjQuMC4wKCkiCisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmY3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjcuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMi4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsICJhbm5vdGF0aW9ucyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJwZXJjZW50RHVyIiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAiaWQiLCAiMy4wLjAoKSIgXQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbICJkdXIiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgICB9LCAiY291bnRzIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInRyYXZlcnNlckNvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgIm5hbWUiLCAiVHJlZVN0ZXAiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjQuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2VyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEwOSBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2VyIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImJ1bGsiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RyYXZlcnNlci12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdXVpZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3V1aWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmZmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3V1aWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKyI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi91dWlkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi91dWlkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3V1aWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpVVUlEIiwKKyAgIkB2YWx1ZSIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdXVpZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3V1aWQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjA5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3V1aWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleC12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NWY1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYxZDAuanNvbgpAQCAtMCwwICsxLDM5IEBACit7CisgICJpZCIgOiAxLAorICAibGFiZWwiIDogInBlcnNvbiIsCisgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgfSBdLAorICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICJpZCIgOiA2LAorICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA5LAorICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw0MyBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAicHJvcGVydGllcyIgOiB7CisgICAgIm5hbWUiIDogWyB7CisgICAgICAiaWQiIDogMCwKKyAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDEKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogNywKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDgsCisgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgIH0KKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTAyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4cHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDUgQEAKK3sKKyAgImlkIiA6IDAsCisgICJ2YWx1ZSIgOiAibWFya28iLAorICAibGFiZWwiIDogIm5hbWUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4cHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4cHJvcGVydHktdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxODRiMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9LAorICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICJsYWJlbCIgOiAibmFtZSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi95ZWFyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXIiLAorICAiQHZhbHVlIiA6ICIyMDE2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi95ZWFybW9udGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhNWUyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi95ZWFybW9udGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi95ZWFybW9udGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXJtb250aC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6WWVhck1vbnRoIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0wNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvem9uZWRkYXRldGltZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjdmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lZGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lZERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNi0xMi0yM1QxMjoxMjoyNC4wMDAwMDAwMzYrMDI6MDBbR01UKzAyOjAwXSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5MTc5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvem9uZW9mZnNldC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvem9uZW9mZnNldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVvZmZzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVvZmZzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlpvbmVPZmZzZXQiLAorICAiQHZhbHVlIiA6ICIrMDM6MDY6MDkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmOTFhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOTlmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXgWF1dGhlbnRpY2F0aW/uAQIDAXNhc2xNZWNoYW5pc+0DAVBMQUnOAwFzYXPsAwFBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT29ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JhcnJpZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JhcnJpZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmFycmllci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmFycmllci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmFycmllci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iYXJyaWVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdkZWNpbWFsLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdkZWNpbWFsLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpZ2RlY2ltYWwtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdkZWNpbWFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdkZWNpbWFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpZ2RlY2ltYWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdpbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdpbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpZ2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpZ2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpZ2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmlnaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmluZGluZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmluZGluZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaW5kaW5nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaW5kaW5nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaW5kaW5nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpbmRpbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J1bGtzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J1bGtzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnVsa3NldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnVsa3NldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnVsa3NldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9idWxrc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVidWZmZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVidWZmZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVidWZmZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVidWZmZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVjb2RlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlY29kZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlY29kZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVjb2RlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlY29kZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlY29kZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NhcmRpbmFsaXR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jYXJkaW5hbGl0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jYXJkaW5hbGl0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2FyZGluYWxpdHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NhcmRpbmFsaXR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NhcmRpbmFsaXR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jaGFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jaGFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NoYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jaGFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jaGFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NoYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jbGFzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2xhc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2xhc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2xhc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NsYXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NsYXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NvbHVtbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY29sdW1uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NvbHVtbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY29sdW1uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jb2x1bW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY29sdW1uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RhdGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kYXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RpcmVjdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGlyZWN0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RpcmVjdGlvbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGlyZWN0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kaXJlY3Rpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGlyZWN0aW9uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kb3VibGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RvdWJsZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kb3VibGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kb3VibGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RvdWJsZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kb3VibGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kdXJhdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZHVyYXRpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZHVyYXRpb24tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kdXJhdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZHVyYXRpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZHVyYXRpb24tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9lZGdlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9lZGdlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEyNDkyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2VkZ2UtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9lZGdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9lZGdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZiZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2VkZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9mbG9hdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZmxvYXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZmxvYXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9mbG9hdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZmxvYXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZmxvYXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbmV0YWRkcmVzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW5ldGFkZHJlc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luZXRhZGRyZXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luZXRhZGRyZXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luc3RhbnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luc3RhbnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW5zdGFudC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luc3RhbnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luc3RhbnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW5zdGFudC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sYW1iZGEtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xhbWJkYS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sYW1iZGEtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sYW1iZGEtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xhbWJkYS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sYW1iZGEtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvY2FsZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvY2FsZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvY2FsdGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvY2FsdGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb25nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb25nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9uZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0Y2QyNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9tZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1ZGQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9tZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbW9udGhkYXktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21vbnRoZGF5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21vbnRoZGF5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbW9udGhkYXktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21vbnRoZGF5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21vbnRoZGF5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0dGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0dGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vZmZzZXR0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0dGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0dGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vZmZzZXR0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb3BlcmF0b3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29wZXJhdG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29wZXJhdG9yLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcGVyYXRvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb3BlcmF0b3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb3BlcmF0b3ItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29yZGVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcmRlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcmRlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb3JkZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29yZGVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29yZGVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3AtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3AtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYW5kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYW5kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BhbmQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYW5kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYW5kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BhbmQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYXRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYXRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BhdGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYXRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYXRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BhdGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wZXJpb2QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BlcmlvZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wZXJpb2QtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wZXJpb2QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BlcmlvZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wZXJpb2QtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9waWNrLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9waWNrLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BpY2stdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BpY2stdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BpY2stdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGljay12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcG9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcG9wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3AtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Bvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Bvci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Bvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Bvci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Byb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzYWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wcm9wZXJ0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARQBAXNpbmPlArIfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Byb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkOWMyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wcm9wZXJ0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAXNpbmPlArIfAhpkZXZlbG9w8wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aGluLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aGluLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3B3aXRoaW4tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aGluLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aGluLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3B3aXRoaW4tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aG91dC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhvdXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhvdXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aG91dC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhvdXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhvdXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zY29wZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2NvcGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2NvcGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Njb3BlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zY29wZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zY29wZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmNsb3NlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYWQ2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5dzZXNzaW/uY2xvc+UBAQMBc2Vzc2lv7gMBdW5pcXVlLXNlc3Npb24taWRlbnRpZmll8gpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9uZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTFiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4NGUyMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzc0NWJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zaG9ydC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2hvcnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2hvcnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zaG9ydC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2hvcnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2hvcnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzVkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zdGFyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3N0YXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zdGFyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zdGFyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3N0YXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zdGFyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3QtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGV4dHAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RleHRwLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RleHRwLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGV4dHAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RleHRwLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RleHRwLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGltZXN0YW1wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90aW1lc3RhbXAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGltZXN0YW1wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbWVzdGFtcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGltZXN0YW1wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbWVzdGFtcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90aW5rZXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90aW5rZXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWViMDdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWM0NGZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RyYXZlcnNlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwMTlmMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RyYXZlcnNlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxZmIwZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmVlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmVlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODI1MjlmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RyZWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmVlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmVlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE5ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RyZWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC91dWlkLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC91dWlkLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3V1aWQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3V1aWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3V1aWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdXVpZC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC92ZXJ0ZXgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OGFjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC92ZXJ0ZXgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NjQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc0ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWY4YmUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC95ZWFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC95ZWFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhcm1vbnRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC95ZWFybW9udGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhcm1vbnRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhcm1vbnRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC95ZWFybW9udGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhcm1vbnRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZWRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZWRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZWRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZWRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZW9mZnNldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZW9mZnNldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC96b25lb2Zmc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVvZmZzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVvZmZzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZW9mZnNldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjkxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjk5ZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl4FhdXRoZW50aWNhdGlv7gECAwFzYXNsTWVjaGFuaXPtAwFQTEFJzgMBc2Fz7AMBQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9vQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iYXJyaWVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iYXJyaWVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JhcnJpZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JhcnJpZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JhcnJpZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmFycmllci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnZGVjaW1hbC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnZGVjaW1hbC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaWdkZWNpbWFsLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnZGVjaW1hbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnZGVjaW1hbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaWdkZWNpbWFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaWdpbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaWdpbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaWdpbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpZ2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpbmRpbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpbmRpbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmluZGluZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmluZGluZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmluZGluZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaW5kaW5nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9idWxrc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9idWxrc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J1bGtzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J1bGtzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J1bGtzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnVsa3NldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlYnVmZmVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlYnVmZmVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGVidWZmZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlYnVmZmVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlYnVmZmVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGVidWZmZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlY29kZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWNvZGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWNvZGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlY29kZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWNvZGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWNvZGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jYXJkaW5hbGl0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2FyZGluYWxpdHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2FyZGluYWxpdHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NhcmRpbmFsaXR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jYXJkaW5hbGl0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jYXJkaW5hbGl0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2hhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2hhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jaGFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2hhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2hhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jaGFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2xhc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NsYXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NsYXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NsYXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jbGFzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jbGFzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jb2x1bW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NvbHVtbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jb2x1bW4tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NvbHVtbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY29sdW1uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NvbHVtbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kYXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZGF0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kaXJlY3Rpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RpcmVjdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kaXJlY3Rpb24tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RpcmVjdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZGlyZWN0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RpcmVjdGlvbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZG91YmxlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kb3VibGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZG91YmxlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZG91YmxlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kb3VibGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZG91YmxlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZHVyYXRpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2R1cmF0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2R1cmF0aW9uLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZHVyYXRpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2R1cmF0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2R1cmF0aW9uLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZWRnZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZWRnZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMjQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9lZGdlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZWRnZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZWRnZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmYmVmYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9lZGdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZmxvYXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2Zsb2F0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2Zsb2F0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZmxvYXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2Zsb2F0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2Zsb2F0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW5ldGFkZHJlc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2luZXRhZGRyZXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2luZXRhZGRyZXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2luZXRhZGRyZXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbmV0YWRkcmVzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbmV0YWRkcmVzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnN0YW50LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnN0YW50LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2luc3RhbnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnN0YW50LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnN0YW50LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2luc3RhbnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbGFtYmRhLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sYW1iZGEtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbGFtYmRhLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbGFtYmRhLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sYW1iZGEtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbGFtYmRhLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb2NhbGRhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb2NhbGRhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWx0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb2NhbHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWx0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWx0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb2NhbHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWx0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9uZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9uZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb25nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb25nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb25nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGNkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NWRkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21vbnRoZGF5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tb250aGRheS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tb250aGRheS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21vbnRoZGF5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tb250aGRheS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tb250aGRheS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb2Zmc2V0dGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb2Zmc2V0dGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29wZXJhdG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcGVyYXRvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcGVyYXRvci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3BlcmF0b3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29wZXJhdG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29wZXJhdG9yLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcmRlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3JkZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3JkZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29yZGVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcmRlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcmRlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGFuZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGFuZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wYW5kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGFuZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGFuZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wYW5kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGF0aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGF0aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wYXRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGF0aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGF0aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wYXRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGVyaW9kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wZXJpb2QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGVyaW9kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGVyaW9kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wZXJpb2QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGVyaW9kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGljay12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGljay12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9waWNrLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9waWNrLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9waWNrLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BpY2stdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BvcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Bvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3ItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Bvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3ItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzM2FjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHJvcGVydHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEUAQFzaW5j5QKyHwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZDljMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHJvcGVydHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFzaW5j5QKyHwIaZGV2ZWxvcPMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhpbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhpbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wd2l0aGluLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhpbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhpbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wd2l0aGluLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhvdXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRob3V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRob3V0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhvdXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRob3V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRob3V0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2NvcGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Njb3BlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Njb3BlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zY29wZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2NvcGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2NvcGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFkNmExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXc2Vzc2lv7mNsb3PlAQEDAXNlc3Npb+4DAXVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZfIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25ldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTUxYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25ldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjU4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkODRlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3NDViZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2hvcnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nob3J0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nob3J0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2hvcnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nob3J0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nob3J0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM1ZDhhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc3RhcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zdGFyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc3RhcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc3RhcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zdGFyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc3RhcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3QtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RleHRwLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90ZXh0cC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90ZXh0cC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RleHRwLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90ZXh0cC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90ZXh0cC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbWVzdGFtcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGltZXN0YW1wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbWVzdGFtcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW1lc3RhbXAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbWVzdGFtcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW1lc3RhbXAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGlua2VyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbmtlcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbmtlcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGlua2VyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbmtlcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbmtlcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmOGI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVjNDRmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90cmF2ZXJzZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDE5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2VyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90cmF2ZXJzZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWZiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2VyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJlZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJlZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyNTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90cmVlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJlZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJlZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhOWRkOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90cmVlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdXVpZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdXVpZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS91dWlkLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS91dWlkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS91dWlkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3V1aWQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdmVydGV4LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThhYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdmVydGV4LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDY0MDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3NGRhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEveWVhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEveWVhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXJtb250aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEveWVhcm1vbnRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXJtb250aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXJtb250aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEveWVhcm1vbnRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXJtb250aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvem9uZWRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvem9uZWRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVvZmZzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVvZmZzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvem9uZW9mZnNldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lb2Zmc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lb2Zmc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVvZmZzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWY5MWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY5OWYyYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5eBYXV0aGVudGljYXRpb+4BAgMBc2FzbE1lY2hhbmlz7QMBUExBSc4DAXNhc+wDAUFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPb0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmFycmllci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmFycmllci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iYXJyaWVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iYXJyaWVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iYXJyaWVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JhcnJpZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2RlY2ltYWwtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2RlY2ltYWwtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmlnZGVjaW1hbC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2RlY2ltYWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2RlY2ltYWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmlnZGVjaW1hbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmlnaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmlnaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmlnaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaWdpbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaW5kaW5nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaW5kaW5nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpbmRpbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpbmRpbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpbmRpbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmluZGluZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnVsa3NldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnVsa3NldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9idWxrc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9idWxrc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9idWxrc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J1bGtzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWJ1ZmZlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlYnVmZmVyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWJ1ZmZlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlYnVmZmVyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWNvZGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVjb2RlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVjb2RlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWNvZGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVjb2RlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVjb2RlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2FyZGluYWxpdHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NhcmRpbmFsaXR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NhcmRpbmFsaXR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jYXJkaW5hbGl0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2FyZGluYWxpdHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2FyZGluYWxpdHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NoYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NoYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2hhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NoYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NoYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2hhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NsYXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jbGFzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jbGFzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jbGFzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2xhc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2xhc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY29sdW1uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jb2x1bW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY29sdW1uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jb2x1bW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NvbHVtbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jb2x1bW4tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGF0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RhdGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGlyZWN0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kaXJlY3Rpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGlyZWN0aW9uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kaXJlY3Rpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RpcmVjdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kaXJlY3Rpb24tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RvdWJsZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZG91YmxlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RvdWJsZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RvdWJsZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZG91YmxlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RvdWJsZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2R1cmF0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kdXJhdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kdXJhdGlvbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2R1cmF0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kdXJhdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kdXJhdGlvbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2VkZ2UtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2VkZ2UtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYTI0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZWRnZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2VkZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2VkZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZmJlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZWRnZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2Zsb2F0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9mbG9hdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9mbG9hdC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2Zsb2F0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9mbG9hdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9mbG9hdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2luZXRhZGRyZXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbmV0YWRkcmVzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbmV0YWRkcmVzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbmV0YWRkcmVzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5zdGFudC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5zdGFudC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbnN0YW50LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5zdGFudC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5zdGFudC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbnN0YW50LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xhbWJkYS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbGFtYmRhLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xhbWJkYS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xhbWJkYS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbGFtYmRhLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xhbWJkYS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9jYWxkYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9jYWxkYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsdGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9jYWx0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsdGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsdGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9jYWx0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsdGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9uZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9uZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9uZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb25nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTRjZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL21ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjVkZDYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL21ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tb250aGRheS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbW9udGhkYXktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbW9udGhkYXktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tb250aGRheS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbW9udGhkYXktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbW9udGhkYXktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXR0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXR0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29mZnNldHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXR0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXR0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29mZnNldHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vcGVyYXRvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3BlcmF0b3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3BlcmF0b3ItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29wZXJhdG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vcGVyYXRvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vcGVyYXRvci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3JkZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29yZGVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29yZGVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vcmRlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3JkZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3JkZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhbmQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhbmQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGFuZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhbmQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhbmQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGFuZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhdGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhdGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGF0aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhdGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhdGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGF0aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BlcmlvZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGVyaW9kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BlcmlvZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BlcmlvZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGVyaW9kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BlcmlvZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BpY2stdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BpY2stdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGljay12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGljay12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGljay12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9waWNrLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wb3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wb3AtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BvcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wb3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9yLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wb3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9yLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Byb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNhYzZmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Byb3BlcnR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBFAEBc2luY+UCsh8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Byb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Q5YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Byb3BlcnR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBc2luY+UCsh8CGmRldmVsb3DzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRoaW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRoaW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHdpdGhpbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRoaW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRoaW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHdpdGhpbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRob3V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aG91dC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aG91dC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRob3V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aG91dC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aG91dC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Njb3BlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zY29wZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zY29wZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2NvcGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Njb3BlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Njb3BlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhZDZhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl3Nlc3Npb+5jbG9z5QEBAwFzZXNzaW/uAwF1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWXyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25ldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MWI5NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmI1ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDg0ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzQ1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nob3J0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zaG9ydC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zaG9ydC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nob3J0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zaG9ydC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zaG9ydC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZjNWQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3N0YXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc3RhcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3N0YXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3N0YXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc3RhcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3N0YXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90ZXh0cC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGV4dHAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGV4dHAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90ZXh0cC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGV4dHAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGV4dHAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW1lc3RhbXAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RpbWVzdGFtcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW1lc3RhbXAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGltZXN0YW1wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW1lc3RhbXAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGltZXN0YW1wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RpbmtlcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW5rZXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW5rZXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RpbmtlcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW5rZXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW5rZXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZjhiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYzQ0ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdHJhdmVyc2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzAxOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdHJhdmVyc2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzFmYjBkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyZWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyZWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MjUyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdHJlZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyZWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyZWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdHJlZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3V1aWQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3V1aWQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdXVpZC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdXVpZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdXVpZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi91dWlkLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3ZlcnRleC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4YWM0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3ZlcnRleC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ2NDAzOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNzRkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjhiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3llYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3llYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFybW9udGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3llYXJtb250aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFybW9udGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFybW9udGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3llYXJtb250aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFybW9udGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lZGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lZGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lb2Zmc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lb2Zmc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3pvbmVvZmZzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZW9mZnNldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZW9mZnNldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lb2Zmc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmOTFhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOTlmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXgWF1dGhlbnRpY2F0aW/uAQIDAXNhc2xNZWNoYW5pc+0DAVBMQUnOAwFzYXPsAwFBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT29ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JhcnJpZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JhcnJpZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmFycmllci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmFycmllci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmFycmllci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iYXJyaWVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdkZWNpbWFsLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdkZWNpbWFsLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpZ2RlY2ltYWwtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdkZWNpbWFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdkZWNpbWFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpZ2RlY2ltYWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdpbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdpbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpZ2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpZ2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpZ2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmlnaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmluZGluZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmluZGluZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaW5kaW5nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaW5kaW5nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaW5kaW5nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpbmRpbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J1bGtzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J1bGtzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnVsa3NldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnVsa3NldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnVsa3NldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9idWxrc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVidWZmZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVidWZmZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVidWZmZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVidWZmZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVjb2RlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlY29kZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlY29kZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVjb2RlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlY29kZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlY29kZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NhcmRpbmFsaXR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jYXJkaW5hbGl0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jYXJkaW5hbGl0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2FyZGluYWxpdHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NhcmRpbmFsaXR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NhcmRpbmFsaXR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jaGFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jaGFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NoYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jaGFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jaGFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NoYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jbGFzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2xhc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2xhc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2xhc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NsYXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NsYXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NvbHVtbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY29sdW1uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NvbHVtbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY29sdW1uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jb2x1bW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY29sdW1uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RhdGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kYXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RpcmVjdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGlyZWN0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RpcmVjdGlvbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGlyZWN0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kaXJlY3Rpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGlyZWN0aW9uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kb3VibGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RvdWJsZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kb3VibGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kb3VibGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RvdWJsZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kb3VibGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kdXJhdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZHVyYXRpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZHVyYXRpb24tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kdXJhdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZHVyYXRpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZHVyYXRpb24tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9lZGdlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9lZGdlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEyNDkyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2VkZ2UtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9lZGdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9lZGdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZiZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2VkZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9mbG9hdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZmxvYXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZmxvYXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9mbG9hdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZmxvYXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZmxvYXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbmV0YWRkcmVzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW5ldGFkZHJlc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luZXRhZGRyZXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luZXRhZGRyZXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luc3RhbnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luc3RhbnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW5zdGFudC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luc3RhbnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luc3RhbnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW5zdGFudC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sYW1iZGEtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xhbWJkYS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sYW1iZGEtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sYW1iZGEtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xhbWJkYS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sYW1iZGEtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvY2FsZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvY2FsZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvY2FsdGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvY2FsdGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb25nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb25nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9uZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0Y2QyNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9tZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1ZGQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9tZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbW9udGhkYXktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21vbnRoZGF5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21vbnRoZGF5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbW9udGhkYXktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21vbnRoZGF5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21vbnRoZGF5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0dGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0dGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vZmZzZXR0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0dGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0dGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vZmZzZXR0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb3BlcmF0b3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29wZXJhdG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29wZXJhdG9yLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcGVyYXRvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb3BlcmF0b3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb3BlcmF0b3ItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29yZGVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcmRlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcmRlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb3JkZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29yZGVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29yZGVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3AtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3AtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYW5kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYW5kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BhbmQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYW5kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYW5kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BhbmQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYXRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYXRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BhdGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYXRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYXRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BhdGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wZXJpb2QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BlcmlvZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wZXJpb2QtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wZXJpb2QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BlcmlvZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wZXJpb2QtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9waWNrLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9waWNrLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BpY2stdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BpY2stdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BpY2stdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGljay12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcG9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcG9wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3AtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Bvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Bvci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Bvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Bvci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Byb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzYWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wcm9wZXJ0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARQBAXNpbmPlArIfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Byb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkOWMyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wcm9wZXJ0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAXNpbmPlArIfAhpkZXZlbG9w8wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aGluLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aGluLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3B3aXRoaW4tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aGluLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aGluLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3B3aXRoaW4tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aG91dC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhvdXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhvdXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aG91dC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhvdXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhvdXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zY29wZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2NvcGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2NvcGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Njb3BlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zY29wZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zY29wZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmNsb3NlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYWQ2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5dzZXNzaW/uY2xvc+UBAQMBc2Vzc2lv7gMBdW5pcXVlLXNlc3Npb24taWRlbnRpZmll8gpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9uZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTFiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4NGUyMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzc0NWJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zaG9ydC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2hvcnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2hvcnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zaG9ydC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2hvcnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2hvcnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzVkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zdGFyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3N0YXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zdGFyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zdGFyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3N0YXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zdGFyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3QtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGV4dHAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RleHRwLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RleHRwLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGV4dHAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RleHRwLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RleHRwLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGltZXN0YW1wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90aW1lc3RhbXAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGltZXN0YW1wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbWVzdGFtcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGltZXN0YW1wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbWVzdGFtcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90aW5rZXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90aW5rZXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWY4YjVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWM0NGZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RyYXZlcnNlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwMTlmMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RyYXZlcnNlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxZmIwZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmVlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmVlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODI1MjlmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RyZWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmVlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmVlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE5ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RyZWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy91dWlkLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy91dWlkLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3V1aWQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3V1aWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3V1aWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdXVpZC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy92ZXJ0ZXgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OGFjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy92ZXJ0ZXgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NjQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc0ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWY4YmUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy95ZWFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy95ZWFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhcm1vbnRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy95ZWFybW9udGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhcm1vbnRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhcm1vbnRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy95ZWFybW9udGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhcm1vbnRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZWRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZWRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZWRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZWRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZW9mZnNldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZW9mZnNldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy96b25lb2Zmc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVvZmZzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVvZmZzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZW9mZnNldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjkxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjk5ZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl4FhdXRoZW50aWNhdGlv7gECAwFzYXNsTWVjaGFuaXPtAwFQTEFJzgMBc2Fz7AMBQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9vQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iYXJyaWVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iYXJyaWVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JhcnJpZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JhcnJpZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JhcnJpZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmFycmllci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnZGVjaW1hbC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnZGVjaW1hbC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaWdkZWNpbWFsLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnZGVjaW1hbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnZGVjaW1hbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaWdkZWNpbWFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaWdpbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaWdpbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaWdpbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpZ2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpbmRpbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpbmRpbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmluZGluZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmluZGluZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmluZGluZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaW5kaW5nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9idWxrc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9idWxrc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J1bGtzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J1bGtzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J1bGtzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnVsa3NldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlYnVmZmVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlYnVmZmVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGVidWZmZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlYnVmZmVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlYnVmZmVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGVidWZmZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlY29kZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWNvZGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWNvZGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlY29kZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWNvZGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWNvZGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jYXJkaW5hbGl0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2FyZGluYWxpdHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2FyZGluYWxpdHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NhcmRpbmFsaXR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jYXJkaW5hbGl0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jYXJkaW5hbGl0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2hhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2hhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jaGFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2hhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2hhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jaGFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2xhc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NsYXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NsYXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NsYXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jbGFzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jbGFzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jb2x1bW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NvbHVtbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jb2x1bW4tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NvbHVtbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY29sdW1uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NvbHVtbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kYXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZGF0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kaXJlY3Rpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RpcmVjdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kaXJlY3Rpb24tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RpcmVjdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZGlyZWN0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RpcmVjdGlvbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZG91YmxlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kb3VibGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZG91YmxlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZG91YmxlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kb3VibGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZG91YmxlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZHVyYXRpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2R1cmF0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2R1cmF0aW9uLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZHVyYXRpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2R1cmF0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2R1cmF0aW9uLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZWRnZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZWRnZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMjQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9lZGdlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZWRnZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZWRnZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmYmVmYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9lZGdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZmxvYXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2Zsb2F0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2Zsb2F0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZmxvYXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2Zsb2F0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2Zsb2F0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW5ldGFkZHJlc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2luZXRhZGRyZXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2luZXRhZGRyZXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2luZXRhZGRyZXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbmV0YWRkcmVzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbmV0YWRkcmVzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnN0YW50LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnN0YW50LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2luc3RhbnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnN0YW50LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnN0YW50LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2luc3RhbnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbGFtYmRhLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sYW1iZGEtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbGFtYmRhLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbGFtYmRhLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sYW1iZGEtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbGFtYmRhLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb2NhbGRhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb2NhbGRhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWx0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb2NhbHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWx0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWx0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb2NhbHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWx0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9uZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9uZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb25nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb25nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb25nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGNkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NWRkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21vbnRoZGF5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tb250aGRheS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tb250aGRheS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21vbnRoZGF5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tb250aGRheS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tb250aGRheS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb2Zmc2V0dGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb2Zmc2V0dGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29wZXJhdG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcGVyYXRvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcGVyYXRvci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3BlcmF0b3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29wZXJhdG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29wZXJhdG9yLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcmRlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3JkZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3JkZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29yZGVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcmRlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcmRlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGFuZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGFuZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wYW5kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGFuZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGFuZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wYW5kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGF0aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGF0aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wYXRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGF0aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGF0aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wYXRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGVyaW9kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wZXJpb2QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGVyaW9kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGVyaW9kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wZXJpb2QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGVyaW9kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGljay12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGljay12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9waWNrLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9waWNrLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9waWNrLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BpY2stdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BvcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Bvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3ItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Bvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3ItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzM2FjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHJvcGVydHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEUAQFzaW5j5QKyHwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZDljMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHJvcGVydHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFzaW5j5QKyHwIaZGV2ZWxvcPMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhpbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhpbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wd2l0aGluLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhpbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhpbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wd2l0aGluLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhvdXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRob3V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRob3V0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhvdXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRob3V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRob3V0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2NvcGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Njb3BlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Njb3BlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zY29wZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2NvcGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2NvcGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25jbG9zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFkNmExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXc2Vzc2lv7mNsb3PlAQEDAXNlc3Npb+4DAXVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZfIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25ldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTUxYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25ldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjU4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkODRlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3NDViZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2hvcnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nob3J0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nob3J0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2hvcnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nob3J0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nob3J0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM1ZDhhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc3RhcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zdGFyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc3RhcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc3RhcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zdGFyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc3RhcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3QtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RleHRwLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90ZXh0cC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90ZXh0cC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RleHRwLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90ZXh0cC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90ZXh0cC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbWVzdGFtcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGltZXN0YW1wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbWVzdGFtcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW1lc3RhbXAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbWVzdGFtcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW1lc3RhbXAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGlua2VyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbmtlcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbmtlcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGlua2VyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbmtlcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbmtlcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmOGI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVjNDRmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90cmF2ZXJzZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDE5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2VyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90cmF2ZXJzZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWZiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2VyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJlZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJlZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyNTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90cmVlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJlZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJlZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhOWRkOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90cmVlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdXVpZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdXVpZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC91dWlkLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC91dWlkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC91dWlkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3V1aWQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdmVydGV4LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThhYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdmVydGV4LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDY0MDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3NGRhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQveWVhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQveWVhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXJtb250aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQveWVhcm1vbnRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXJtb250aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXJtb250aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQveWVhcm1vbnRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXJtb250aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvem9uZWRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvem9uZWRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVvZmZzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVvZmZzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvem9uZW9mZnNldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lb2Zmc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lb2Zmc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVvZmZzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWY5MWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY5OWYyYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5eBYXV0aGVudGljYXRpb+4BAgMBc2FzbE1lY2hhbmlz7QMBUExBSc4DAXNhc+wDAUFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPb0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmFycmllci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmFycmllci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iYXJyaWVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iYXJyaWVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iYXJyaWVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JhcnJpZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2RlY2ltYWwtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2RlY2ltYWwtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmlnZGVjaW1hbC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2RlY2ltYWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2RlY2ltYWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmlnZGVjaW1hbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmlnaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmlnaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmlnaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaWdpbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaW5kaW5nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaW5kaW5nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpbmRpbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpbmRpbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpbmRpbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmluZGluZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnVsa3NldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnVsa3NldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9idWxrc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9idWxrc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9idWxrc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J1bGtzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWJ1ZmZlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlYnVmZmVyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWJ1ZmZlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlYnVmZmVyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWNvZGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVjb2RlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVjb2RlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWNvZGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVjb2RlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVjb2RlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2FyZGluYWxpdHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NhcmRpbmFsaXR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NhcmRpbmFsaXR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jYXJkaW5hbGl0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2FyZGluYWxpdHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2FyZGluYWxpdHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NoYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NoYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2hhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NoYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NoYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2hhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NsYXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jbGFzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jbGFzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jbGFzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2xhc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2xhc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY29sdW1uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jb2x1bW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY29sdW1uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jb2x1bW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NvbHVtbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jb2x1bW4tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGF0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RhdGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGlyZWN0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kaXJlY3Rpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGlyZWN0aW9uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kaXJlY3Rpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RpcmVjdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kaXJlY3Rpb24tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RvdWJsZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZG91YmxlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RvdWJsZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RvdWJsZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZG91YmxlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RvdWJsZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2R1cmF0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kdXJhdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kdXJhdGlvbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2R1cmF0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kdXJhdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kdXJhdGlvbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2VkZ2UtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2VkZ2UtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYTI0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZWRnZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2VkZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2VkZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZmJlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZWRnZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2Zsb2F0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9mbG9hdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9mbG9hdC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2Zsb2F0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9mbG9hdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9mbG9hdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2luZXRhZGRyZXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbmV0YWRkcmVzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbmV0YWRkcmVzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbmV0YWRkcmVzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5zdGFudC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5zdGFudC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbnN0YW50LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5zdGFudC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5zdGFudC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbnN0YW50LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xhbWJkYS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbGFtYmRhLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xhbWJkYS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xhbWJkYS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbGFtYmRhLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xhbWJkYS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9jYWxkYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9jYWxkYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsdGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9jYWx0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsdGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsdGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9jYWx0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsdGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9uZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9uZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9uZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb25nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTRjZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L21ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjVkZDYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L21ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tb250aGRheS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbW9udGhkYXktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbW9udGhkYXktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tb250aGRheS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbW9udGhkYXktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbW9udGhkYXktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXR0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXR0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29mZnNldHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXR0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXR0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29mZnNldHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vcGVyYXRvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3BlcmF0b3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3BlcmF0b3ItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29wZXJhdG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vcGVyYXRvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vcGVyYXRvci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3JkZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29yZGVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29yZGVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vcmRlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3JkZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3JkZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhbmQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhbmQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGFuZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhbmQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhbmQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGFuZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhdGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhdGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGF0aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhdGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhdGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGF0aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BlcmlvZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGVyaW9kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BlcmlvZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BlcmlvZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGVyaW9kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BlcmlvZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BpY2stdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BpY2stdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGljay12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGljay12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGljay12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9waWNrLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wb3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wb3AtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BvcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wb3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9yLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wb3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9yLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Byb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNhYzZmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Byb3BlcnR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBFAEBc2luY+UCsh8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Byb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Q5YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Byb3BlcnR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBc2luY+UCsh8CGmRldmVsb3DzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRoaW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRoaW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHdpdGhpbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRoaW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRoaW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHdpdGhpbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRob3V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aG91dC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aG91dC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRob3V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aG91dC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aG91dC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Njb3BlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zY29wZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zY29wZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2NvcGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Njb3BlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Njb3BlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhZDZhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl3Nlc3Npb+5jbG9z5QEBAwFzZXNzaW/uAwF1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWXyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25ldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MWI5NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmI1ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDg0ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzQ1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nob3J0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zaG9ydC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zaG9ydC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nob3J0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zaG9ydC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zaG9ydC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZjNWQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3N0YXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc3RhcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3N0YXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3N0YXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc3RhcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3N0YXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90ZXh0cC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGV4dHAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGV4dHAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90ZXh0cC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGV4dHAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGV4dHAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW1lc3RhbXAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RpbWVzdGFtcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW1lc3RhbXAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGltZXN0YW1wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW1lc3RhbXAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGltZXN0YW1wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RpbmtlcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW5rZXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW5rZXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RpbmtlcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW5rZXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW5rZXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZjhiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYzQ0ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdHJhdmVyc2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzAxOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdHJhdmVyc2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzFmYjBkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyZWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyZWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MjUyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdHJlZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyZWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyZWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdHJlZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3V1aWQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3V1aWQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdXVpZC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdXVpZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdXVpZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS91dWlkLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3ZlcnRleC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4YWM0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3ZlcnRleC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ2NDAzOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNzRkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjhiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3llYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3llYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFybW9udGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3llYXJtb250aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFybW9udGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFybW9udGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3llYXJtb250aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFybW9udGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lZGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lZGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lb2Zmc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lb2Zmc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3pvbmVvZmZzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZW9mZnNldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZW9mZnNldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lb2Zmc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmOTFhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOTlmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXgWF1dGhlbnRpY2F0aW/uAQIDAXNhc2xNZWNoYW5pc+0DAVBMQUnOAwFzYXPsAwFBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT29ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JhcnJpZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JhcnJpZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmFycmllci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmFycmllci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmFycmllci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iYXJyaWVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdkZWNpbWFsLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdkZWNpbWFsLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpZ2RlY2ltYWwtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdkZWNpbWFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdkZWNpbWFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpZ2RlY2ltYWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdpbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdpbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpZ2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpZ2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpZ2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmlnaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmluZGluZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmluZGluZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaW5kaW5nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaW5kaW5nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaW5kaW5nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpbmRpbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J1bGtzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J1bGtzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnVsa3NldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnVsa3NldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnVsa3NldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9idWxrc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVidWZmZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVidWZmZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVidWZmZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVidWZmZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVjb2RlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlY29kZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlY29kZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVjb2RlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlY29kZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlY29kZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NhcmRpbmFsaXR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jYXJkaW5hbGl0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jYXJkaW5hbGl0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2FyZGluYWxpdHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NhcmRpbmFsaXR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NhcmRpbmFsaXR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jaGFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jaGFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NoYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jaGFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jaGFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NoYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jbGFzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2xhc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2xhc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2xhc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NsYXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NsYXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NvbHVtbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY29sdW1uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NvbHVtbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY29sdW1uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jb2x1bW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY29sdW1uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RhdGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kYXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RpcmVjdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGlyZWN0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RpcmVjdGlvbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGlyZWN0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kaXJlY3Rpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGlyZWN0aW9uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kb3VibGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RvdWJsZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kb3VibGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kb3VibGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RvdWJsZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kb3VibGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kdXJhdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZHVyYXRpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZHVyYXRpb24tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kdXJhdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZHVyYXRpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZHVyYXRpb24tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9lZGdlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9lZGdlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEyNDkyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2VkZ2UtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9lZGdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9lZGdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZiZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2VkZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9mbG9hdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZmxvYXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZmxvYXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9mbG9hdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZmxvYXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZmxvYXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbmV0YWRkcmVzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW5ldGFkZHJlc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luZXRhZGRyZXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luZXRhZGRyZXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luc3RhbnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luc3RhbnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW5zdGFudC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luc3RhbnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luc3RhbnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW5zdGFudC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sYW1iZGEtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xhbWJkYS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sYW1iZGEtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sYW1iZGEtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xhbWJkYS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sYW1iZGEtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvY2FsZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvY2FsZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvY2FsdGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvY2FsdGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb25nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb25nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9uZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0Y2QyNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9tZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1ZGQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9tZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbW9udGhkYXktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21vbnRoZGF5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21vbnRoZGF5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbW9udGhkYXktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21vbnRoZGF5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21vbnRoZGF5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0dGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0dGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vZmZzZXR0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0dGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0dGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vZmZzZXR0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb3BlcmF0b3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29wZXJhdG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29wZXJhdG9yLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcGVyYXRvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb3BlcmF0b3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb3BlcmF0b3ItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29yZGVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcmRlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcmRlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb3JkZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29yZGVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29yZGVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3AtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3AtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYW5kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYW5kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BhbmQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYW5kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYW5kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BhbmQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYXRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYXRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BhdGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYXRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYXRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BhdGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wZXJpb2QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BlcmlvZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wZXJpb2QtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wZXJpb2QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BlcmlvZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wZXJpb2QtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9waWNrLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9waWNrLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BpY2stdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BpY2stdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BpY2stdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGljay12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcG9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcG9wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3AtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Bvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Bvci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Bvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Bvci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Byb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzYWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wcm9wZXJ0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARQBAXNpbmPlArIfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Byb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkOWMyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wcm9wZXJ0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAXNpbmPlArIfAhpkZXZlbG9w8wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aGluLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aGluLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3B3aXRoaW4tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aGluLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aGluLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3B3aXRoaW4tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aG91dC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhvdXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhvdXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aG91dC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhvdXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhvdXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zY29wZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2NvcGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2NvcGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Njb3BlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zY29wZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zY29wZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmNsb3NlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYWQ2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5dzZXNzaW/uY2xvc+UBAQMBc2Vzc2lv7gMBdW5pcXVlLXNlc3Npb24taWRlbnRpZmll8gpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9uZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTFiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4NGUyMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzc0NWJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zaG9ydC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2hvcnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2hvcnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zaG9ydC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2hvcnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2hvcnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzVkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zdGFyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3N0YXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zdGFyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zdGFyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3N0YXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zdGFyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3QtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGV4dHAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RleHRwLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RleHRwLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGV4dHAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RleHRwLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RleHRwLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGltZXN0YW1wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90aW1lc3RhbXAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGltZXN0YW1wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbWVzdGFtcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGltZXN0YW1wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbWVzdGFtcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90aW5rZXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90aW5rZXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWY4YjVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWM0NGZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RyYXZlcnNlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwMTlmMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RyYXZlcnNlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxZmIwZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmVlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmVlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODI1MjlmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RyZWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmVlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmVlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE5ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RyZWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi91dWlkLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi91dWlkLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3V1aWQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3V1aWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3V1aWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdXVpZC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi92ZXJ0ZXgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OGFjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi92ZXJ0ZXgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NjQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc0ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWY4YmUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi95ZWFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi95ZWFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhcm1vbnRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi95ZWFybW9udGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhcm1vbnRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhcm1vbnRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi95ZWFybW9udGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhcm1vbnRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZWRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZWRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZWRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZWRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZW9mZnNldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZW9mZnNldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi96b25lb2Zmc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVvZmZzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVvZmZzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZW9mZnNldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvcG9tLnhtbCBiL2dyZW1saW4tdG9vbHMvcG9tLnhtbAppbmRleCAzM2E3ZWFlLi4wYWY4NjAzIDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL3BvbS54bWwKKysrIGIvZ3JlbWxpbi10b29scy9wb20ueG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAKICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLXRvb2xzPC9hcnRpZmFjdElkPgpkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3JhcGhzb24ucHJvcGVydGllcyBiL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyYXBoc29uLnByb3BlcnRpZXMKaW5kZXggYzM3Y2YyOC4uYzJmNjYwYiAxMDA2NDQKLS0tIGEvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3JhcGhzb24ucHJvcGVydGllcworKysgYi9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1ncmFwaHNvbi5wcm9wZXJ0aWVzCkBAIC0zMywxMiArMzMsNiBAQAogc3Bhcmsuc2VyaWFsaXplcj1vcmcuYXBhY2hlLnNwYXJrLnNlcmlhbGl6ZXIuS3J5b1NlcmlhbGl6ZXIKIHNwYXJrLmtyeW8ucmVnaXN0cmF0b3I9b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVnaXN0cmF0b3IKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBHaXJhcGhHcmFwaENvbXB1dGVyIENvbmZpZ3VyYXRpb24gIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotZ2lyYXBoLm1pbldvcmtlcnM9MgotZ2lyYXBoLm1heFdvcmtlcnM9MgotCiAKIAogCmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1ncmF0ZWZ1bC1ncnlvLnByb3BlcnRpZXMgYi9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1ncmF0ZWZ1bC1ncnlvLnByb3BlcnRpZXMKaW5kZXggOTJlZDk0Mi4uZjI4Y2U5ZCAxMDA2NDQKLS0tIGEvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3JhdGVmdWwtZ3J5by5wcm9wZXJ0aWVzCisrKyBiL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyYXRlZnVsLWdyeW8ucHJvcGVydGllcwpAQCAtMzAsMTUgKzMwLDMgQEAKIHNwYXJrLnNlcmlhbGl6ZXI9b3JnLmFwYWNoZS5zcGFyay5zZXJpYWxpemVyLktyeW9TZXJpYWxpemVyCiBzcGFyay5rcnlvLnJlZ2lzdHJhdG9yPW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3Bhcmsuc3RydWN0dXJlLmlvLmdyeW8uR3J5b1JlZ2lzdHJhdG9yCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgR2lyYXBoR3JhcGhDb21wdXRlciBDb25maWd1cmF0aW9uICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWdpcmFwaC5taW5Xb3JrZXJzPTEKLWdpcmFwaC5tYXhXb3JrZXJzPTEKLWdpcmFwaC51c2VPdXRPZkNvcmVHcmFwaD10cnVlCi1naXJhcGgudXNlT3V0T2ZDb3JlTWVzc2FnZXM9dHJ1ZQotbWFwcmVkLm1hcC5jaGlsZC5qYXZhLm9wdHM9LVhteDEwMjRtCi1tYXByZWQucmVkdWNlLmNoaWxkLmphdmEub3B0cz0tWG14MTAyNG0KLWdpcmFwaC5udW1JbnB1dFRocmVhZHM9NAotZ2lyYXBoLm51bUNvbXB1dGVUaHJlYWRzPTQKLWdpcmFwaC5tYXhNZXNzYWdlc0luTWVtb3J5PTEwMDAwMApkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3J5by5wcm9wZXJ0aWVzIGIvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3J5by5wcm9wZXJ0aWVzCmluZGV4IGMxNTZhOTguLjMxMjg2ZDggMTAwNjQ0Ci0tLSBhL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyeW8ucHJvcGVydGllcworKysgYi9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1ncnlvLnByb3BlcnRpZXMKQEAgLTQyLDIxICs0Miw1IEBACiAjIHNwYXJrLmV2ZW50TG9nLmRpcj0vdG1wL3NwYXJrLWV2ZW50LWxvZ3MKICMgc3BhcmsudWkua2lsbEVuYWJsZWQ9dHJ1ZQogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEdpcmFwaEdyYXBoQ29tcHV0ZXIgQ29uZmlndXJhdGlvbiAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1naXJhcGgubWluV29ya2Vycz0yCi1naXJhcGgubWF4V29ya2Vycz0yCi1naXJhcGgudXNlT3V0T2ZDb3JlR3JhcGg9dHJ1ZQotZ2lyYXBoLnVzZU91dE9mQ29yZU1lc3NhZ2VzPXRydWUKLW1hcHJlZHVjZS5tYXAuamF2YS5vcHRzPS1YbXgxMDI0bQotbWFwcmVkdWNlLnJlZHVjZS5qYXZhLm9wdHM9LVhteDEwMjRtCi1naXJhcGgubnVtSW5wdXRUaHJlYWRzPTIKLWdpcmFwaC5udW1Db21wdXRlVGhyZWFkcz0yCi0jIGdpcmFwaC5tYXhQYXJ0aXRpb25zSW5NZW1vcnk9MQotIyBnaXJhcGgudXNlclBhcnRpdGlvbkNvdW50PTIKLSMjIE1hcFJlZHVjZSBvZiBHaXJhcGhHcmFwaENvbXB1dGVyICMjCi0jIG1hcHJlZHVjZS5qb2IubWFwcz0yCi0jIG1hcHJlZHVjZS5qb2IucmVkdWNlcz0xCiAKIApkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3Atc2NyaXB0LnByb3BlcnRpZXMgYi9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1zY3JpcHQucHJvcGVydGllcwppbmRleCA4OGJmNmQ5Li4yNGQ4NDdiIDEwMDY0NAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1zY3JpcHQucHJvcGVydGllcworKysgYi9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1zY3JpcHQucHJvcGVydGllcwpAQCAtMzgsMjEgKzM4LDUgQEAKICMgc3BhcmsuZXZlbnRMb2cuZGlyPS90bXAvc3BhcmstZXZlbnQtbG9ncwogIyBzcGFyay51aS5raWxsRW5hYmxlZD10cnVlCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgR2lyYXBoR3JhcGhDb21wdXRlciBDb25maWd1cmF0aW9uICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWdpcmFwaC5taW5Xb3JrZXJzPTIKLWdpcmFwaC5tYXhXb3JrZXJzPTIKLWdpcmFwaC51c2VPdXRPZkNvcmVHcmFwaD10cnVlCi1naXJhcGgudXNlT3V0T2ZDb3JlTWVzc2FnZXM9dHJ1ZQotbWFwcmVkdWNlLm1hcC5qYXZhLm9wdHM9LVhteDEwMjRtCi1tYXByZWR1Y2UucmVkdWNlLmphdmEub3B0cz0tWG14MTAyNG0KLWdpcmFwaC5udW1JbnB1dFRocmVhZHM9MgotZ2lyYXBoLm51bUNvbXB1dGVUaHJlYWRzPTIKLSMgZ2lyYXBoLm1heFBhcnRpdGlvbnNJbk1lbW9yeT0xCi0jIGdpcmFwaC51c2VyUGFydGl0aW9uQ291bnQ9MgotIyMgTWFwUmVkdWNlIG9mIEdpcmFwaEdyYXBoQ29tcHV0ZXIgIyMKLSMgbWFwcmVkdWNlLmpvYi5tYXBzPTIKLSMgbWFwcmVkdWNlLmpvYi5yZWR1Y2VzPTEKIAogCmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9wb20ueG1sIGIvaGFkb29wLWdyZW1saW4vcG9tLnhtbAppbmRleCA1YjJkYTRiLi5lNTFiNWZjIDEwMDY0NAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9wb20ueG1sCisrKyBiL2hhZG9vcC1ncmVtbGluL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmhhZG9vcC1ncmVtbGluPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogSGFkb29wIEdyZW1saW48L25hbWU+CkBAIC02OCw2ICs2OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvZGVjPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgogICAgICAgICAgICAgICAgIDxleGNsdXNpb24+CisgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUuY29tbW9uczwvZ3JvdXBJZD4KKyAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1jb21wcmVzczwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KKyAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgogICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZ29vZ2xlLmd1YXZhPC9ncm91cElkPgogICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ndWF2YTwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KQEAgLTExNyw2ICsxMjEsMTEgQEAKICAgICAgICAgICAgIDx2ZXJzaW9uPjEuMS4zPC92ZXJzaW9uPgogICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5jb21tb25zPC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1jb21wcmVzczwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx2ZXJzaW9uPjEuMTk8L3ZlcnNpb24+CisgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgPGRlcGVuZGVuY3k+CiAgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZ29vZ2xlLmd1YXZhPC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3VhdmE8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8dmVyc2lvbj4xNi4wLjE8L3ZlcnNpb24+CkBAIC0xOTAsMTQgKzE5OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L21hbmlmZXN0RW50cmllcz4KICAgICAgICAgICAgICAgICAgICAgPC9hcmNoaXZlPgogICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4KLSAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxpZD50ZXN0LWphci1pdC11cDwvaWQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+dGVzdC1qYXI8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgotICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KLSAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+CiAgICAgICAgICAgICA8L3BsdWdpbj4KICAgICAgICAgICAgIDxwbHVnaW4+CiAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgpAQCAtMjU5LDQgKzI2MCw0IEBACiAgICAgICAgICAgICA8L3BsdWdpbj4KICAgICAgICAgPC9wbHVnaW5zPgogICAgIDwvYnVpbGQ+Ci08L3Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9Db25zdGFudHMuamF2YSBiL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvQ29uc3RhbnRzLmphdmEKaW5kZXggNWE2NDMzNC4uNzUxOWI4ZiAxMDA2NDQKLS0tIGEvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9Db25zdGFudHMuamF2YQorKysgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL0NvbnN0YW50cy5qYXZhCkBAIC01OCw3ICs1OCw2IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFTUxJTl9IQURPT1BfSkFSU19JTl9ESVNUUklCVVRFRF9DQUNIRSA9ICJncmVtbGluLmhhZG9vcC5qYXJzSW5EaXN0cmlidXRlZENhY2hlIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBISURERU5fRyA9IEdyYXBoLkhpZGRlbi5oaWRlKCJnIik7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFTUxJTl9IQURPT1BfSk9CX1BSRUZJWCA9ICJIYWRvb3BHcmVtbGluOiAiOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fSEFET09QX0dJUkFQSF9KT0JfUFJFRklYID0gIkhhZG9vcEdyZW1saW4oR2lyYXBoKTogIjsKICAgICAvLyBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUkVNTElOX0hBRE9PUF9NQVBfUkVEVUNFX0pPQl9QUkVGSVggPSAiSGFkb29wR3JlbWxpbihNYXBSZWR1Y2UpOiAiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fSEFET09QX1NQQVJLX0pPQl9QUkVGSVggPSAiSGFkb29wR3JlbWxpbihTcGFyayk6ICI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEFET09QX0dSRU1MSU5fTElCUyA9ICJIQURPT1BfR1JFTUxJTl9MSUJTIjsKZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0hhZG9vcElvU3RlcC5qYXZhIGIvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvSGFkb29wSW9TdGVwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU5NjI3NgotLS0gL2Rldi9udWxsCisrKyBiL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0hhZG9vcElvU3RlcC5qYXZhCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTklucHV0Rm9ybWF0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTk91dHB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvSW5wdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b091dHB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhGaWx0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuY2xvbmUuQ2xvbmVWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuVmVydGV4UHJvZ3JhbVN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuUmVhZFdyaXRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CisKKy8qKgorICogQW4gT0xBUCBvcmllbnRlZCBzdGVwIGZvciBkb2luZyBJTyBvcGVyYXRpb25zIHdpdGgge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9IHdoaWNoIHVzZXMgdGhlCisgKiB7QGxpbmsgQ2xvbmVWZXJ0ZXhQcm9ncmFtfSBmb3IgaXRzIGltcGxlbWVudGF0aW9uLiBTdGFuZGFyZCBIYWRvb3AgT0xBUCBjb25maWd1cmF0aW9ucyBjYW4gYmUgcGFzc2VkIHVzaW5nIHRoZQorICoge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfSBzdGVwIG1vZHVsYXRvciBhcyBhbGwgb3B0aW9ucyBhc2lkZSBmcm9tIHRob3NlIGluIHtAbGluayBJT30gd2lsbCBiZQorICogdHJhbnNmZXJyZWQuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgSGFkb29wSW9TdGVwIGV4dGVuZHMgVmVydGV4UHJvZ3JhbVN0ZXAgaW1wbGVtZW50cyBSZWFkV3JpdGluZyB7CisKKyAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CisgICAgcHJpdmF0ZSBNb2RlIG1vZGUgPSBNb2RlLlVOU0VUOworICAgIHByaXZhdGUgU3RyaW5nIGZpbGU7CisKKyAgICBwdWJsaWMgSGFkb29wSW9TdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwsIGZpbmFsIFN0cmluZyBmaWxlKSB7CisgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CisgICAgICAgIHRoaXMuZmlsZSA9IGZpbGU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0TW9kZShmaW5hbCBNb2RlIG1vZGUpIHsKKyAgICAgICAgdGhpcy5tb2RlID0gbW9kZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgTW9kZSBnZXRNb2RlKCkgeworICAgICAgICByZXR1cm4gbW9kZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIGdldEZpbGUoKSB7CisgICAgICAgIHJldHVybiBmaWxlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQobnVsbCwga2V5VmFsdWVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS5zdGVwU3RyaW5nKHRoaXMsIG5ldyBHcmFwaEZpbHRlcih0aGlzLmNvbXB1dGVyKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIENsb25lVmVydGV4UHJvZ3JhbSBnZW5lcmF0ZVByb2dyYW0oZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgaWYgKG1vZGUgPT0gTW9kZS5VTlNFVCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIklPIG1vZGUgd2FzIG5vdCBzZXQgdG8gcmVhZCgpIG9yIHdyaXRlKCkiKTsKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBNb2RlLlJFQURJTkcpCisgICAgICAgICAgICBjb25maWd1cmVGb3JSZWFkKGdyYXBoKTsKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBNb2RlLldSSVRJTkcpCisgICAgICAgICAgICBjb25maWd1cmVGb3JXcml0ZShncmFwaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkludmFsaWQgUmVhZFdyaXRpbmcuTW9kZSBjb25maWd1cmVkIGluIElvU3RlcDogIiArIG1vZGUubmFtZSgpKTsKKworICAgICAgICByZXR1cm4gQ2xvbmVWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuY3JlYXRlKGdyYXBoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgSGFkb29wSW9TdGVwIGNsb25lKCkgeworICAgICAgICByZXR1cm4gKEhhZG9vcElvU3RlcCkgc3VwZXIuY2xvbmUoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuaGFzaENvZGUoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY29uZmlndXJlRm9yUmVhZChmaW5hbCBHcmFwaCBncmFwaCkgeworICAgICAgICBmaW5hbCBTdHJpbmcgaW5wdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQgPSBwYXJhbWV0ZXJzLmdldChJTy5yZWFkZXIsIHRoaXM6OmRldGVjdFJlYWRlcikuZ2V0KDApOworICAgICAgICBTdHJpbmcgaW5wdXRGb3JtYXRDbGFzc05hbWU7CisgICAgICAgIGlmIChpbnB1dEZvcm1hdENsYXNzTmFtZU9yS2V5d29yZC5lcXVhbHMoSU8uZ3JhcGhzb24pKQorICAgICAgICAgICAgaW5wdXRGb3JtYXRDbGFzc05hbWUgPSBHcmFwaFNPTklucHV0Rm9ybWF0LmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgZWxzZSBpZiAoaW5wdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQuZXF1YWxzKElPLmdyeW8pKQorICAgICAgICAgICAgaW5wdXRGb3JtYXRDbGFzc05hbWUgPSBHcnlvSW5wdXRGb3JtYXQuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBlbHNlIGlmIChpbnB1dEZvcm1hdENsYXNzTmFtZU9yS2V5d29yZC5lcXVhbHMoSU8uZ3JhcGhtbCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJHcmFwaE1MIGlzIG5vdCBhIHN1cHBvcnRlZCBmaWxlIGZvcm1hdCBmb3IgT0xBUCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnB1dEZvcm1hdENsYXNzTmFtZSA9IGlucHV0Rm9ybWF0Q2xhc3NOYW1lT3JLZXl3b3JkOworCisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSLCBpbnB1dEZvcm1hdENsYXNzTmFtZSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04sIGZpbGUpOworCisgICAgICAgIGFkZFBhcmFtZXRlcnNUb0NvbmZpZ3VyYXRpb24oZ3JhcGgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjb25maWd1cmVGb3JXcml0ZShmaW5hbCBHcmFwaCBncmFwaCkgeworICAgICAgICBmaW5hbCBTdHJpbmcgb3V0cHV0Rm9ybWF0Q2xhc3NOYW1lT3JLZXl3b3JkID0gcGFyYW1ldGVycy5nZXQoSU8ud3JpdGVyLCB0aGlzOjpkZXRlY3RXcml0ZXIpLmdldCgwKTsKKyAgICAgICAgU3RyaW5nIG91dHB1dEZvcm1hdENsYXNzTmFtZTsKKyAgICAgICAgaWYgKG91dHB1dEZvcm1hdENsYXNzTmFtZU9yS2V5d29yZC5lcXVhbHMoSU8uZ3JhcGhzb24pKQorICAgICAgICAgICAgb3V0cHV0Rm9ybWF0Q2xhc3NOYW1lID0gR3JhcGhTT05PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBlbHNlIGlmIChvdXRwdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQuZXF1YWxzKElPLmdyeW8pKQorICAgICAgICAgICAgb3V0cHV0Rm9ybWF0Q2xhc3NOYW1lID0gR3J5b091dHB1dEZvcm1hdC5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgIGVsc2UgaWYgKG91dHB1dEZvcm1hdENsYXNzTmFtZU9yS2V5d29yZC5lcXVhbHMoSU8uZ3JhcGhtbCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJHcmFwaE1MIGlzIG5vdCBhIHN1cHBvcnRlZCBmaWxlIGZvcm1hdCBmb3IgT0xBUCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXRwdXRGb3JtYXRDbGFzc05hbWUgPSBvdXRwdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQ7CisgICAgICAgIAorICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgb3V0cHV0Rm9ybWF0Q2xhc3NOYW1lKTsKKyAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04sIGZpbGUpOworCisgICAgICAgIGFkZFBhcmFtZXRlcnNUb0NvbmZpZ3VyYXRpb24oZ3JhcGgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJ3cml0ZXMgYWxsIGNvbmZpZ3VyYXRpb25zIGZyb20gdmFsdWVzIHBhc3NlZCB1c2luZyB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhZGRQYXJhbWV0ZXJzVG9Db25maWd1cmF0aW9uKGZpbmFsIEdyYXBoIGdyYXBoKSB7CisgICAgICAgIHBhcmFtZXRlcnMuZ2V0UmF3KElPLndyaXRlciwgSU8ud3JpdGVyLCBJTy5yZWdpc3RyeSkuZW50cnlTZXQoKS5mb3JFYWNoKGt2IC0+IHsKKyAgICAgICAgICAgIGlmIChrdi5nZXRWYWx1ZSgpLnNpemUoKSA9PSAxKQorICAgICAgICAgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShrdi5nZXRLZXkoKS50b1N0cmluZygpLCBrdi5nZXRWYWx1ZSgpLmdldCgwKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyByZXNldCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpdGggdGhlIGZpcnN0IG9wdGlvbiB0aGVuIGFkZCB0byB0aGF0IGZvciBMaXN0IG9wdGlvbnMKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpeCA9IDA7IGl4IDwga3YuZ2V0VmFsdWUoKS5zaXplKCk7IGl4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl4ID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoa3YuZ2V0S2V5KCkudG9TdHJpbmcoKSwga3YuZ2V0VmFsdWUoKS5nZXQoaXgpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLmFkZFByb3BlcnR5KGt2LmdldEtleSgpLnRvU3RyaW5nKCksIGt2LmdldFZhbHVlKCkuZ2V0KGl4KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBkZXRlY3RSZWFkZXIoKSB7CisgICAgICAgIGlmIChmaWxlLmVuZHNXaXRoKCIua3J5byIpKQorICAgICAgICAgICAgcmV0dXJuIEdyeW9JbnB1dEZvcm1hdC5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgIGVsc2UgaWYgKGZpbGUuZW5kc1dpdGgoIi5qc29uIikpCisgICAgICAgICAgICByZXR1cm4gR3JhcGhTT05JbnB1dEZvcm1hdC5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgIGVsc2UgaWYgKGZpbGUuZW5kc1dpdGgoIi54bWwiKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkdyYXBoTUwgaXMgbm90IGEgc3VwcG9ydGVkIGZpbGUgZm9ybWF0IGZvciBPTEFQIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkNvdWxkIG5vdCBkZXRlY3QgdGhlIGZpbGUgZm9ybWF0IC0gc3BlY2lmeSB0aGUgcmVhZGVyIGV4cGxpY2l0bHkgb3IgcmVuYW1lIGZpbGUgd2l0aCBhIHN0YW5kYXJkIGV4dGVuc2lvbiIpOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIGRldGVjdFdyaXRlcigpIHsKKyAgICAgICAgaWYgKGZpbGUuZW5kc1dpdGgoIi5rcnlvIikpCisgICAgICAgICAgICByZXR1cm4gR3J5b091dHB1dEZvcm1hdC5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgIGVsc2UgaWYgKGZpbGUuZW5kc1dpdGgoIi5qc29uIikpCisgICAgICAgICAgICByZXR1cm4gR3JhcGhTT05PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBlbHNlIGlmIChmaWxlLmVuZHNXaXRoKCIueG1sIikpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJHcmFwaE1MIGlzIG5vdCBhIHN1cHBvcnRlZCBmaWxlIGZvcm1hdCBmb3IgT0xBUCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJDb3VsZCBub3QgZGV0ZWN0IHRoZSBmaWxlIGZvcm1hdCAtIHNwZWNpZnkgdGhlIHJlYWRlciBleHBsaWNpdGx5IG9yIHJlbmFtZSBmaWxlIHdpdGggYSBzdGFuZGFyZCBleHRlbnNpb24iKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L0hhZG9vcElvU3RyYXRlZ3kuamF2YSBiL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RyYXRlZ3kvSGFkb29wSW9TdHJhdGVneS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MTQ3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L0hhZG9vcElvU3RyYXRlZ3kuamF2YQpAQCAtMCwwICsxLDgzIEBACisvKgorICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqICB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkhhZG9vcElvU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuY2xvbmUuQ2xvbmVWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5WZXJ0ZXhQcm9ncmFtU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuUmVhZFdyaXRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW9TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5WZXJpZmljYXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKKy8qKgorICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIHtAbGluayBJb1N0ZXB9IGlzIGEgc2luZ2xlIHRocmVhZGVkIG9wZXJhdGlvbiBhbmQgZG9lc24ndCBwcm9wZXJseSB0YWtlIGludG8KKyAqIGFjY291bnQgdGhlIG1ldGhvZCBieSB3aGljaCBPTEFQIHJlYWQvd3JpdGVzIHRha2UgcGxhY2Ugd2l0aCBIYWRvb3AuIFRoaXMgc3RyYXRlZ3kgcmVtb3ZlcyB0aGF0IHN0ZXAgYW5kIHJlcGxhY2VzCisgKiBpdCB3aXRoIHRoZSB7QGxpbmsgSGFkb29wSW9TdGVwfSB3aGljaCBpcyBhIHtAbGluayBWZXJ0ZXhQcm9ncmFtU3RlcH0gdGhhdCB1c2VzIHRoZSB7QGxpbmsgQ2xvbmVWZXJ0ZXhQcm9ncmFtfSB0bworICogZXhlY3V0ZSB0aGUgSU8gb3BlcmF0aW9uIGluIGFuIE9MQVAgZmFzaGlvbi4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBIYWRvb3BJb1N0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5Qcm92aWRlck9wdGltaXphdGlvblN0cmF0ZWd5PgorICAgICAgICBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5LlByb3ZpZGVyT3B0aW1pemF0aW9uU3RyYXRlZ3kgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSGFkb29wSW9TdHJhdGVneSBJTlNUQU5DRSA9IG5ldyBIYWRvb3BJb1N0cmF0ZWd5KCk7CisKKyAgICBwcml2YXRlIEhhZG9vcElvU3RyYXRlZ3koKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgYXBwbHkoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCkgeworICAgICAgICAvLyBzaW5jZSBoYWRvb3BncmFwaCBjYW4ndCBiZSBtb2RpZmllZCB3ZSBjYW4ndCB0cnkgdG8gdXNlIHRoZSBleGlzdGluZyBJb1N0ZXAgZm9yIHN0YW5kYXJkIHByb2Nlc3NpbmcKKyAgICAgICAgLy8gd2l0aG91dCBncmFwaGNvbXB1dGVyCisgICAgICAgIGlmICh0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkgaW5zdGFuY2VvZiBJb1N0ZXApCisgICAgICAgICAgICB0aHJvdyBuZXcgVmVyaWZpY2F0aW9uRXhjZXB0aW9uKCJIYWRvb3BHcmFwaCByZXF1aXJlcyBhIEdyYXBoQ29tcHV0ZXIgZm9yIGlvKCkgc3RlcCIsIHRyYXZlcnNhbCk7CisKKyAgICAgICAgLy8gVmVydGV4UHJvZ3JhbVN0cmF0ZWd5IHNob3VsZCB3cmFwIHVwIHRoZSBJb1N0ZXAgaW4gYSBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcC4gdXNlIHRoYXQgdG8gZ3JhYiB0aGUKKyAgICAgICAgLy8gR3JhcGhDb21wdXRlciB0aGF0IHdhcyBpbmplY3RlZCBpbiB0aGVyZSBhbmQgcHVzaCB0aGF0IGluIHRvIHRoZSBIYWRvb3BJb1N0ZXAuIHRoaXMgc3RlcCBwYXR0ZXJuIG1hdGNoCisgICAgICAgIC8vIGlzIGZhaXJseSBzcGVjaWZpYyBhbmQgc2luY2UgeW91IHJlYWxseSBjYW4ndCBjaGFpbiB0b2dldGhlciBzdGVwcyBhZnRlciBpbygpIHRoaXMgYXBwcm9hY2ggc2hvdWxkIHdvcmsKKyAgICAgICAgaWYgKHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSBpbnN0YW5jZW9mIFRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwKSB7CisgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCB0dnAgPSAoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXApIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKTsKKyAgICAgICAgICAgIGlmICh0dnAuY29tcHV0ZXJUcmF2ZXJzYWwuZ2V0KCkuZ2V0U3RhcnRTdGVwKCkgaW5zdGFuY2VvZiBSZWFkV3JpdGluZykgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlYWRXcml0aW5nIHJlYWRXcml0aW5nID0gKFJlYWRXcml0aW5nKSB0dnAuY29tcHV0ZXJUcmF2ZXJzYWwuZ2V0KCkuZ2V0U3RhcnRTdGVwKCk7CisgICAgICAgICAgICAgICAgZmluYWwgSGFkb29wSW9TdGVwIGhhZG9vcElvU3RlcCA9IG5ldyBIYWRvb3BJb1N0ZXAodHJhdmVyc2FsLCByZWFkV3JpdGluZy5nZXRGaWxlKCkpOworICAgICAgICAgICAgICAgIGhhZG9vcElvU3RlcC5zZXRNb2RlKHJlYWRXcml0aW5nLmdldE1vZGUoKSk7CisgICAgICAgICAgICAgICAgaGFkb29wSW9TdGVwLnNldENvbXB1dGVyKHR2cC5nZXRDb21wdXRlcigpKTsKKyAgICAgICAgICAgICAgICByZWFkV3JpdGluZy5nZXRQYXJhbWV0ZXJzKCkuZ2V0UmF3KCkuZm9yRWFjaCgoa2V5LCB2YWx1ZSkgLT4gdmFsdWUuZm9yRWFjaCh2IC0+IGhhZG9vcElvU3RlcC5jb25maWd1cmUoa2V5LCB2KSkpOworCisgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLnJlcGxhY2VTdGVwKHR2cCwgaGFkb29wSW9TdGVwLCB0cmF2ZXJzYWwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBIYWRvb3BJb1N0cmF0ZWd5IGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvSGFkb29wQ29uZmlndXJhdGlvbi5qYXZhIGIvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvSGFkb29wQ29uZmlndXJhdGlvbi5qYXZhCmluZGV4IDllMzEyMjUuLmE4MTI1ZWEgMTAwNjQ0Ci0tLSBhL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL0hhZG9vcENvbmZpZ3VyYXRpb24uamF2YQorKysgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9IYWRvb3BDb25maWd1cmF0aW9uLmphdmEKQEAgLTk4LDMwICs5OCw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLCByZXBsYWNlZCBieSB7QGxpbmsgSGFkb29wQ29uZmlndXJhdGlvbiNnZXRHcmFwaFJlYWRlcigpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBDbGFzczxJbnB1dEZvcm1hdDxOdWxsV3JpdGFibGUsIFZlcnRleFdyaXRhYmxlPj4gZ2V0R3JhcGhJbnB1dEZvcm1hdCgpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiAoQ2xhc3MpIENsYXNzLmZvck5hbWUodGhpcy5nZXRTdHJpbmcoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1JFQURFUikpOwotICAgICAgICB9IGNhdGNoIChmaW5hbCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAsIHJlcGxhY2VkIGJ5IHtAbGluayBIYWRvb3BDb25maWd1cmF0aW9uI2dldEdyYXBoV3JpdGVyKCl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIENsYXNzPE91dHB1dEZvcm1hdDxOdWxsV3JpdGFibGUsIFZlcnRleFdyaXRhYmxlPj4gZ2V0R3JhcGhPdXRwdXRGb3JtYXQoKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gKENsYXNzKSBDbGFzcy5mb3JOYW1lKHRoaXMuZ2V0U3RyaW5nKENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIpKTsKLSAgICAgICAgfSBjYXRjaCAoZmluYWwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBwdWJsaWMgU3RyaW5nIGdldElucHV0TG9jYXRpb24oKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmdldFN0cmluZyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04pOwogICAgIH0KZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL0hhZG9vcEdyYXBoLmphdmEgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9IYWRvb3BHcmFwaC5qYXZhCmluZGV4IDcyZWVlNzMuLjllYzBjZmQgMTAwNjQ0Ci0tLSBhL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL0hhZG9vcEdyYXBoLmphdmEKKysrIGIvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvSGFkb29wR3JhcGguamF2YQpAQCAtMjQsOSArMjQsMTEgQEAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci5BYnN0cmFjdEhhZG9vcEdyYXBoQ29tcHV0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuSGFkb29wSW9TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uSGFkb29wRWRnZUl0ZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5IYWRvb3BWZXJ0ZXhJdGVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UcmFuc2FjdGlvbjsKQEAgLTY5LDIxICs3MSw2IEBACiAgICAgICAgIHJlYXNvbiA9ICJIYWRvb3AtR3JlbWxpbiBpcyBPTEFQLW9yaWVudGVkIGFuZCBmb3IgT0xUUCBvcGVyYXRpb25zLCBsaW5lYXItc2NhbiBqb2lucyBhcmUgcmVxdWlyZWQuIFRoaXMgcGFydGljdWxhciB0ZXN0cyB0YWtlcyBtYW55IG1pbnV0ZXMgdG8gZXhlY3V0ZS4iLAogICAgICAgICBjb21wdXRlcnMgPSB7IkFMTCJ9KQogQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCRUcmF2ZXJzYWxzIiwKLSAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2tub3dzX2JfX2Nfa25vd3NfYlgiLAotICAgICAgICByZWFzb24gPSAiR2lyYXBoIGRvZXMgYSBoYXJkIGtpbGwgb24gZmFpbHVyZSBhbmQgc3RvcHMgdGhyZWFkcyB3aGljaCBzdG9wcyB0ZXN0IGNhc2VzLiBFeGNlcHRpb24gaGFuZGxpbmcgc2VtYW50aWNzIGFyZSBjb3JyZWN0IHRob3VnaC4iLAotICAgICAgICBjb21wdXRlcnMgPSB7Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXIuR2lyYXBoR3JhcGhDb21wdXRlciJ9KQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCRUcmF2ZXJzYWxzIiwKLSAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2NyZWF0ZWRfYl9fY19jcmVhdGVkX2JYX3NlbGVjdFhhX2JfY1hfYnlYbmFtZVgiLAotICAgICAgICByZWFzb24gPSAiR2lyYXBoIGRvZXMgYSBoYXJkIGtpbGwgb24gZmFpbHVyZSBhbmQgc3RvcHMgdGhyZWFkcyB3aGljaCBzdG9wcyB0ZXN0IGNhc2VzLiBFeGNlcHRpb24gaGFuZGxpbmcgc2VtYW50aWNzIGFyZSBjb3JyZWN0IHRob3VnaC4iLAotICAgICAgICBjb21wdXRlcnMgPSB7Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXIuR2lyYXBoR3JhcGhDb21wdXRlciJ9KQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCRUcmF2ZXJzYWxzIiwKLSAgICAgICAgbWV0aG9kID0gImdfVl9vdXRfYXNYY1hfbWF0Y2hYYl9rbm93c19hX19jX2NyZWF0ZWRfZVhfc2VsZWN0WGNYIiwKLSAgICAgICAgcmVhc29uID0gIkdpcmFwaCBkb2VzIGEgaGFyZCBraWxsIG9uIGZhaWx1cmUgYW5kIHN0b3BzIHRocmVhZHMgd2hpY2ggc3RvcHMgdGVzdCBjYXNlcy4gRXhjZXB0aW9uIGhhbmRsaW5nIHNlbWFudGljcyBhcmUgY29ycmVjdCB0aG91Z2guIiwKLSAgICAgICAgY29tcHV0ZXJzID0geyJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaEdyYXBoQ29tcHV0ZXIifSkKLUBHcmFwaC5PcHRPdXQoCiAgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db3VudFRlc3QkVHJhdmVyc2FscyIsCiAgICAgICAgIG1ldGhvZCA9ICJnX1ZfYm90aF9ib3RoX2NvdW50IiwKICAgICAgICAgcmVhc29uID0gIkhhZG9vcC1HcmVtbGluIGlzIE9MQVAtb3JpZW50ZWQgYW5kIGZvciBPTFRQIG9wZXJhdGlvbnMsIGxpbmVhci1zY2FuIGpvaW5zIGFyZSByZXF1aXJlZC4gVGhpcyBwYXJ0aWN1bGFyIHRlc3RzIHRha2VzIG1hbnkgbWludXRlcyB0byBleGVjdXRlLiIsCkBAIC0xNDQsNyArMTMxLDcgQEAKICAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEludGVycnVwdGlvbkNvbXB1dGVyVGVzdCIsCiAgICAgICAgIG1ldGhvZCA9ICIqIiwKICAgICAgICAgcmVhc29uID0gIlRoaXMgdGVzdCBtYWtlcyB1c2Ugb2YgYSBzaWRlRWZmZWN0IHRvIGVuZm9yY2Ugd2hlbiBhIHRocmVhZCBpbnRlcnJ1cHRpb24gaXMgdHJpZ2dlcmVkIGFuZCB0aHVzIGlzbid0IGFwcGxpY2FibGUgdG8gSGFkb29wR3JhcGgiLAotICAgICAgICBjb21wdXRlcnMgPSB7Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcmsucHJvY2Vzcy5jb21wdXRlci5TcGFya0dyYXBoQ29tcHV0ZXIiLCAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhHcmFwaENvbXB1dGVyIn0pCisgICAgICAgIGNvbXB1dGVycyA9IHsib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay5wcm9jZXNzLmNvbXB1dGVyLlNwYXJrR3JhcGhDb21wdXRlciJ9KQogQEdyYXBoLk9wdE91dCgKICAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCRDb3VudE1hdGNoVHJhdmVyc2FscyIsCiAgICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYYV9mb2xsb3dlZEJ5X2NvdW50X2lzWGd0WDEwWFhfYl9fYV8wZm9sbG93ZWRCeV9jb3VudF9pc1hndFgxMFhYX2JYX2NvdW50IiwKQEAgLTE1NSw2ICsxNDIsMjIgQEAKICAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2ZvbGxvd2VkQnlfY291bnRfaXNYZ3RYMTBYWF9iX19hXzBmb2xsb3dlZEJ5X2NvdW50X2lzWGd0WDEwWFhfYlhfY291bnQiLAogICAgICAgICByZWFzb24gPSAiSGFkb29wLUdyZW1saW4gaXMgT0xBUC1vcmllbnRlZCBhbmQgZm9yIE9MVFAgb3BlcmF0aW9ucywgbGluZWFyLXNjYW4gam9pbnMgYXJlIHJlcXVpcmVkLiBUaGlzIHBhcnRpY3VsYXIgdGVzdHMgdGFrZXMgbWFueSBtaW51dGVzIHRvIGV4ZWN1dGUuIiwKICAgICAgICAgY29tcHV0ZXJzID0geyJBTEwifSkKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdCRUcmF2ZXJzYWxzIiwKKyAgICAgICAgbWV0aG9kID0gImdfaW9fcmVhZFh4bWxYIiwKKyAgICAgICAgcmVhc29uID0gIkhhZG9vcC1HcmVtbGluIGRvZXMgbm90IHN1cHBvcnQgcmVhZHMvd3JpdGVzIHdpdGggR3JhcGhNTC4iKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0JFRyYXZlcnNhbHMiLAorICAgICAgICBtZXRob2QgPSAiZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBobWxYIiwKKyAgICAgICAgcmVhc29uID0gIkhhZG9vcC1HcmVtbGluIGRvZXMgbm90IHN1cHBvcnQgcmVhZHMvd3JpdGVzIHdpdGggR3JhcGhNTC4iKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLldyaXRlVGVzdCRUcmF2ZXJzYWxzIiwKKyAgICAgICAgbWV0aG9kID0gImdfaW9fd3JpdGVYeG1sWCIsCisgICAgICAgIHJlYXNvbiA9ICJIYWRvb3AtR3JlbWxpbiBkb2VzIG5vdCBzdXBwb3J0IHJlYWRzL3dyaXRlcyB3aXRoIEdyYXBoTUwuIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QkVHJhdmVyc2FscyIsCisgICAgICAgIG1ldGhvZCA9ICJnX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyYXBobWxYIiwKKyAgICAgICAgcmVhc29uID0gIkhhZG9vcC1HcmVtbGluIGRvZXMgbm90IHN1cHBvcnQgcmVhZHMvd3JpdGVzIHdpdGggR3JhcGhNTC4iKQogcHVibGljIGZpbmFsIGNsYXNzIEhhZG9vcEdyYXBoIGltcGxlbWVudHMgR3JhcGggewogCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBMb2dnZXIgTE9HR0VSID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoSGFkb29wR3JhcGguY2xhc3MpOwpAQCAtMTYzLDYgKzE2NiwxMiBAQAogICAgICAgICB0aGlzLnNldFByb3BlcnR5KEdyYXBoLkdSQVBILCBIYWRvb3BHcmFwaC5jbGFzcy5nZXROYW1lKCkpOwogICAgIH19OwogCisgICAgc3RhdGljIHsKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ2llcy5HbG9iYWxDYWNoZS5yZWdpc3RlclN0cmF0ZWdpZXMoSGFkb29wR3JhcGguY2xhc3MsCisgICAgICAgICAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ2llcy5HbG9iYWxDYWNoZS5nZXRTdHJhdGVnaWVzKEdyYXBoLmNsYXNzKS5jbG9uZSgpLmFkZFN0cmF0ZWdpZXMoCisgICAgICAgICAgICAgICAgICAgICAgICBIYWRvb3BJb1N0cmF0ZWd5Lmluc3RhbmNlKCkpKTsKKyAgICB9CisKICAgICBwcm90ZWN0ZWQgZmluYWwgSGFkb29wQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogCiAgICAgcHJpdmF0ZSBIYWRvb3BHcmFwaChmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIHsKZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JhcGhQcm92aWRlci5qYXZhIGIvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9IYWRvb3BHcmFwaFByb3ZpZGVyLmphdmEKaW5kZXggNjdhMWMyNy4uNjQ3ZTAwNCAxMDA2NDQKLS0tIGEvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9IYWRvb3BHcmFwaFByb3ZpZGVyLmphdmEKKysrIGIvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9IYWRvb3BHcmFwaFByb3ZpZGVyLmphdmEKQEAgLTE4LDEwICsxOCw4IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3A7CiAKLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQWJzdHJhY3RHcmFwaFByb3ZpZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQWJzdHJhY3RGaWxlR3JhcGhQcm92aWRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BFZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BFbGVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKQEAgLTMzLDE5ICszMSwxMSBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9PdXRwdXRGb3JtYXQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuQ29tcHV0ZXJHcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5TdG9yYWdlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OUmVzb3VyY2VBY2Nlc3M7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVzb3VyY2VBY2Nlc3M7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uc2NyaXB0LlNjcmlwdFJlc291cmNlQWNjZXNzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5UZXN0U3VwcG9ydDsKIAotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKQEAgLTUzLDEzICs0Myw5IEBACiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQogICovCi1wdWJsaWMgY2xhc3MgSGFkb29wR3JhcGhQcm92aWRlciBleHRlbmRzIEFic3RyYWN0R3JhcGhQcm92aWRlciB7CitwdWJsaWMgY2xhc3MgSGFkb29wR3JhcGhQcm92aWRlciBleHRlbmRzIEFic3RyYWN0RmlsZUdyYXBoUHJvdmlkZXIgewogCi0gICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBSYW5kb20gUkFORE9NID0gVGVzdEhlbHBlci5SQU5ET007Ci0gICAgcHJpdmF0ZSBib29sZWFuIGdyYXBoU09OSW5wdXQgPSBmYWxzZTsKLQotICAgIHB1YmxpYyBzdGF0aWMgTWFwPFN0cmluZywgU3RyaW5nPiBQQVRIUyA9IG5ldyBIYXNoTWFwPD4oKTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNldDxDbGFzcz4gSU1QTEVNRU5UQVRJT04gPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVTZXQobmV3IEhhc2hTZXQ8Q2xhc3M+KCkge3sKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8Q2xhc3M+IElNUExFTUVOVEFUSU9OID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KG5ldyBIYXNoU2V0PENsYXNzPigpIHt7CiAgICAgICAgIGFkZChIYWRvb3BFZGdlLmNsYXNzKTsKICAgICAgICAgYWRkKEhhZG9vcEVsZW1lbnQuY2xhc3MpOwogICAgICAgICBhZGQoSGFkb29wR3JhcGguY2xhc3MpOwpAQCAtNzUsNTAgKzYxLDYgQEAKICAgICAgICAgYWRkKENvbXB1dGVyR3JhcGguQ29tcHV0ZXJQcm9wZXJ0eS5jbGFzcyk7CiAgICAgfX0pOwogCi0gICAgc3RhdGljIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBrcnlvUmVzb3VyY2VzID0gQXJyYXlzLmFzTGlzdCgKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMC5rcnlvIiwKLSAgICAgICAgICAgICAgICAgICAgImdyYXRlZnVsLWRlYWQtdjNkMC5rcnlvIiwKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jbGFzc2ljLXYzZDAua3J5byIsCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY3Jldy12M2QwLmtyeW8iLAotICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLXNpbmstdjNkMC5rcnlvIik7Ci0gICAgICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBmaWxlTmFtZSA6IGtyeW9SZXNvdXJjZXMpIHsKLSAgICAgICAgICAgICAgICBQQVRIUy5wdXQoZmlsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UudG9QYXRoKFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShHcnlvUmVzb3VyY2VBY2Nlc3MuY2xhc3MsIGZpbGVOYW1lLCAiIikpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGdyYXBoc29uUmVzb3VyY2VzID0gQXJyYXlzLmFzTGlzdCgKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1tb2Rlcm4tdHlwZWQtdjJkMC5qc29uIiwKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMC5qc29uIiwKLSAgICAgICAgICAgICAgICAgICAgImdyYXRlZnVsLWRlYWQtdHlwZWQtdjJkMC5qc29uIiwKLSAgICAgICAgICAgICAgICAgICAgImdyYXRlZnVsLWRlYWQtdjNkMC5qc29uIiwKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jbGFzc2ljLXR5cGVkLXYyZDAuanNvbiIsCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY2xhc3NpYy12M2QwLmpzb24iLAotICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNyZXctdHlwZWQtdjJkMC5qc29uIiwKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jcmV3LXYzZDAuanNvbiIsCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3Atc2luay12M2QwLmpzb24iKTsKLSAgICAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIGZpbGVOYW1lIDogZ3JhcGhzb25SZXNvdXJjZXMpIHsKLSAgICAgICAgICAgICAgICBQQVRIUy5wdXQoZmlsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UudG9QYXRoKFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShHcmFwaFNPTlJlc291cmNlQWNjZXNzLmNsYXNzLCBmaWxlTmFtZSwgIiIpKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBzY3JpcHRSZXNvdXJjZXMgPSBBcnJheXMuYXNMaXN0KAotICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNsYXNzaWMudHh0IiwKLSAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1pbnB1dC5ncm9vdnkiLAotICAgICAgICAgICAgICAgICAgICAic2NyaXB0LW91dHB1dC5ncm9vdnkiLAotICAgICAgICAgICAgICAgICAgICAiZ3JhdGVmdWwtZGVhZC50eHQiLAotICAgICAgICAgICAgICAgICAgICAic2NyaXB0LWlucHV0LWdyYXRlZnVsLWRlYWQuZ3Jvb3Z5IiwKLSAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1vdXRwdXQtZ3JhdGVmdWwtZGVhZC5ncm9vdnkiKTsKLSAgICAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIGZpbGVOYW1lIDogc2NyaXB0UmVzb3VyY2VzKSB7Ci0gICAgICAgICAgICAgICAgUEFUSFMucHV0KGZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLnRvUGF0aChUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoU2NyaXB0UmVzb3VyY2VBY2Nlc3MuY2xhc3MsIGZpbGVOYW1lLCAiIikpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgTWFwPFN0cmluZywgT2JqZWN0PiBnZXRCYXNlQ29uZmlndXJhdGlvbihmaW5hbCBTdHJpbmcgZ3JhcGhOYW1lLCBmaW5hbCBDbGFzczw/PiB0ZXN0LCBmaW5hbCBTdHJpbmcgdGVzdE1ldGhvZE5hbWUsIGZpbmFsIExvYWRHcmFwaFdpdGguR3JhcGhEYXRhIGxvYWRHcmFwaFdpdGgpIHsKICAgICAgICAgdGhpcy5ncmFwaFNPTklucHV0ID0gUkFORE9NLm5leHRCb29sZWFuKCk7CkBAIC0xMzIsMzYgKzc0LDEyIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2xlYXIoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGlmIChncmFwaCAhPSBudWxsKQotICAgICAgICAgICAgZ3JhcGguY2xvc2UoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBsb2FkR3JhcGhEYXRhKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBMb2FkR3JhcGhXaXRoIGxvYWRHcmFwaFdpdGgsIGZpbmFsIENsYXNzIHRlc3RDbGFzcywgZmluYWwgU3RyaW5nIHRlc3ROYW1lKSB7Ci0gICAgICAgIGlmIChsb2FkR3JhcGhXaXRoICE9IG51bGwpIHRoaXMubG9hZEdyYXBoRGF0YVZpYUhhZG9vcENvbmZpZyhncmFwaCwgbG9hZEdyYXBoV2l0aC52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGxvYWRHcmFwaFdpdGggIT0gbnVsbCkgKChIYWRvb3BHcmFwaCkgZ3JhcGgpLmNvbmZpZ3VyYXRpb24oKS5zZXRJbnB1dExvY2F0aW9uKGdldElucHV0TG9jYXRpb24oZ3JhcGgsIGxvYWRHcmFwaFdpdGgudmFsdWUoKSkpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTZXQ8Q2xhc3M+IGdldEltcGxlbWVudGF0aW9ucygpIHsKICAgICAgICAgcmV0dXJuIElNUExFTUVOVEFUSU9OOwogICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGxvYWRHcmFwaERhdGFWaWFIYWRvb3BDb25maWcoZmluYWwgR3JhcGggZywgZmluYWwgTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEgZ3JhcGhEYXRhKSB7Ci0gICAgICAgIGZpbmFsIFN0cmluZyB0eXBlID0gdGhpcy5ncmFwaFNPTklucHV0ID8gIi12M2QwLmpzb24iIDogIi12M2QwLmtyeW8iOwotCi0gICAgICAgIGlmIChncmFwaERhdGEuZXF1YWxzKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkdSQVRFRlVMKSkgewotICAgICAgICAgICAgKChIYWRvb3BHcmFwaCkgZykuY29uZmlndXJhdGlvbigpLnNldElucHV0TG9jYXRpb24oUEFUSFMuZ2V0KCJncmF0ZWZ1bC1kZWFkIiArIHR5cGUpKTsKLSAgICAgICAgfSBlbHNlIGlmIChncmFwaERhdGEuZXF1YWxzKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTikpIHsKLSAgICAgICAgICAgICgoSGFkb29wR3JhcGgpIGcpLmNvbmZpZ3VyYXRpb24oKS5zZXRJbnB1dExvY2F0aW9uKFBBVEhTLmdldCgidGlua2VycG9wLW1vZGVybiIgKyB0eXBlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5DTEFTU0lDKSkgewotICAgICAgICAgICAgKChIYWRvb3BHcmFwaCkgZykuY29uZmlndXJhdGlvbigpLnNldElucHV0TG9jYXRpb24oUEFUSFMuZ2V0KCJ0aW5rZXJwb3AtY2xhc3NpYyIgKyB0eXBlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5DUkVXKSkgewotICAgICAgICAgICAgKChIYWRvb3BHcmFwaCkgZykuY29uZmlndXJhdGlvbigpLnNldElucHV0TG9jYXRpb24oUEFUSFMuZ2V0KCJ0aW5rZXJwb3AtY3JldyIgKyB0eXBlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5TSU5LKSkgewotICAgICAgICAgICAgKChIYWRvb3BHcmFwaCkgZykuY29uZmlndXJhdGlvbigpLnNldElucHV0TG9jYXRpb24oUEFUSFMuZ2V0KCJ0aW5rZXJwb3Atc2luayIgKyB0eXBlKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGxvYWQgZ3JhcGggd2l0aCAiICsgZ3JhcGhEYXRhKTsKLSAgICAgICAgfQotICAgIH0KIH0KZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL0Fic3RyYWN0SW9SZWdpc3RyeUNoZWNrLmphdmEgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdElvUmVnaXN0cnlDaGVjay5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDZhNzJiLi4wMDAwMDAwCi0tLSBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL0Fic3RyYWN0SW9SZWdpc3RyeUNoZWNrLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotLyoKLSAqICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiAgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW87Ci0KLQotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuUmVjb3JkV3JpdGVyOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5UYXNrQXR0ZW1wdElEOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS50YXNrLlRhc2tBdHRlbXB0Q29udGV4dEltcGw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5BYnN0cmFjdEdyZW1saW5UZXN0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcEdyYXBoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTklucHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTk91dHB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05SZWNvcmRXcml0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lucHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9PdXRwdXRGb3JtYXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b1JlY29yZFdyaXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5Ub3lJb1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLlRveVBvaW50OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLlRveVRyaWFuZ2xlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS51dGlsLkNvbmZVdGlsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uU3RvcmFnZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9Qb29sOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1ZlcnNpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5zdGFyLlN0YXJHcmFwaDsKLQotaW1wb3J0IGphdmEuaW8uRGF0YU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOwotCi1pbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwotaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdElvUmVnaXN0cnlDaGVjayBleHRlbmRzIEFic3RyYWN0R3JlbWxpblRlc3QgewotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5VTUJFUl9PRl9WRVJUSUNFUyA9IDEwMDA7Ci0KLSAgICBwdWJsaWMgdm9pZCBjaGVja0dyeW9WMWQwSW9SZWdpc3RyeUNvbXBsaWFuY2UoZmluYWwgSGFkb29wR3JhcGggZ3JhcGgsIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBGaWxlIGlucHV0ID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKHRoaXMuZ2V0Q2xhc3MoKSwgImdyeW8taW8tcmVnaXN0cnkiLCAiLmtyeW8iKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIEdyeW9JbnB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgR3J5b091dHB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoR3J5b1Bvb2wuQ09ORklHX0lPX0dSWU9fVkVSU0lPTiwgR3J5b1ZlcnNpb24uVjFfMC5uYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCBTdG9yYWdlLnRvUGF0aChpbnB1dCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoSW9SZWdpc3RyeS5JT19SRUdJU1RSWSwgVG95SW9SZWdpc3RyeS5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBmaW5hbCBHcnlvUmVjb3JkV3JpdGVyIHdyaXRlciA9IG5ldyBHcnlvUmVjb3JkV3JpdGVyKG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGlucHV0KSksIENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSkpOwotICAgICAgICB2YWxpZGF0ZUlvUmVnaXN0cnlHcmFwaChncmFwaCwgZ3JhcGhDb21wdXRlckNsYXNzLCB3cml0ZXIpOwotICAgICAgICBhc3NlcnRUcnVlKGlucHV0LmRlbGV0ZSgpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBjaGVja0dyeW9WM2QwSW9SZWdpc3RyeUNvbXBsaWFuY2UoZmluYWwgSGFkb29wR3JhcGggZ3JhcGgsIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBGaWxlIGlucHV0ID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKHRoaXMuZ2V0Q2xhc3MoKSwgImdyeW8taW8tcmVnaXN0cnkiLCAiLmtyeW8iKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIEdyeW9JbnB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgR3J5b091dHB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCBTdG9yYWdlLnRvUGF0aChpbnB1dCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoR3J5b1Bvb2wuQ09ORklHX0lPX0dSWU9fVkVSU0lPTiwgR3J5b1ZlcnNpb24uVjNfMC5uYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoSW9SZWdpc3RyeS5JT19SRUdJU1RSWSwgVG95SW9SZWdpc3RyeS5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBmaW5hbCBHcnlvUmVjb3JkV3JpdGVyIHdyaXRlciA9IG5ldyBHcnlvUmVjb3JkV3JpdGVyKG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGlucHV0KSksIENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSkpOwotICAgICAgICB2YWxpZGF0ZUlvUmVnaXN0cnlHcmFwaChncmFwaCwgZ3JhcGhDb21wdXRlckNsYXNzLCB3cml0ZXIpOwotICAgICAgICBhc3NlcnRUcnVlKGlucHV0LmRlbGV0ZSgpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBjaGVja0dyYXBoU09OSW9SZWdpc3RyeUNvbXBsaWFuY2UoZmluYWwgSGFkb29wR3JhcGggZ3JhcGgsIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBGaWxlIGlucHV0ID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKHRoaXMuZ2V0Q2xhc3MoKSwgImdyYXBoc29uLWlvLXJlZ2lzdHJ5IiwgIi5qc29uIik7Ci0gICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSLCBHcmFwaFNPTklucHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7Ci0gICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBHcmFwaFNPTk91dHB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCBTdG9yYWdlLnRvUGF0aChpbnB1dCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoSW9SZWdpc3RyeS5JT19SRUdJU1RSWSwgVG95SW9SZWdpc3RyeS5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBmaW5hbCBHcmFwaFNPTlJlY29yZFdyaXRlciB3cml0ZXIgPSBuZXcgR3JhcGhTT05SZWNvcmRXcml0ZXIobmV3IERhdGFPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0oaW5wdXQpKSwgQ29uZlV0aWwubWFrZUhhZG9vcENvbmZpZ3VyYXRpb24oZ3JhcGguY29uZmlndXJhdGlvbigpKSk7Ci0gICAgICAgIHZhbGlkYXRlSW9SZWdpc3RyeUdyYXBoKGdyYXBoLCBncmFwaENvbXB1dGVyQ2xhc3MsIHdyaXRlcik7Ci0gICAgICAgIGFzc2VydFRydWUoaW5wdXQuZGVsZXRlKCkpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZUlvUmVnaXN0cnlHcmFwaChmaW5hbCBIYWRvb3BHcmFwaCBncmFwaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8PyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IGdyYXBoQ29tcHV0ZXJDbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVjb3JkV3JpdGVyPE51bGxXcml0YWJsZSwgVmVydGV4V3JpdGFibGU+IHdyaXRlcikgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0KLQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTUJFUl9PRl9WRVJUSUNFUzsgaSsrKSB7Ci0gICAgICAgICAgICBmaW5hbCBTdGFyR3JhcGggc3RhckdyYXBoID0gU3RhckdyYXBoLm9wZW4oKTsKLSAgICAgICAgICAgIFZlcnRleCB2ZXJ0ZXggPSBzdGFyR3JhcGguYWRkVmVydGV4KFQubGFiZWwsICJwbGFjZSIsIFQuaWQsIGksICJwb2ludCIsIG5ldyBUb3lQb2ludChpLCBpICogMTApLCAibWVzc2FnZSIsICJJJ20gIiArIGksICJ0cmlhbmdsZSIsIG5ldyBUb3lUcmlhbmdsZShpLCBpICogMTAsIGkgKiAxMDApKTsKLSAgICAgICAgICAgIHZlcnRleC5hZGRFZGdlKCJjb25uZWN0aW9uIiwgc3RhckdyYXBoLmFkZFZlcnRleChULmlkLCBpID4gMCA/IGkgLSAxIDogTlVNQkVSX09GX1ZFUlRJQ0VTIC0gMSkpOwotICAgICAgICAgICAgd3JpdGVyLndyaXRlKE51bGxXcml0YWJsZS5nZXQoKSwgbmV3IFZlcnRleFdyaXRhYmxlKHN0YXJHcmFwaC5nZXRTdGFyVmVydGV4KCkpKTsKLSAgICAgICAgfQotICAgICAgICB3cml0ZXIuY2xvc2UobmV3IFRhc2tBdHRlbXB0Q29udGV4dEltcGwoQ29uZlV0aWwubWFrZUhhZG9vcENvbmZpZ3VyYXRpb24oZ3JhcGguY29uZmlndXJhdGlvbigpKSwgbmV3IFRhc2tBdHRlbXB0SUQoKSkpOwotCi0gICAgICAgIC8vIE9MQVAgVEVTVElORyAvLwotICAgICAgICB2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihncmFwaENvbXB1dGVyQ2xhc3MpLlYoKS5wcm9qZWN0KCJwb2ludCIsICJ0cmlhbmdsZSIpLmJ5KCJwb2ludCIpLmJ5KCJ0cmlhbmdsZSIpLnRvTGlzdCgpKTsKLSAgICAgICAgdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoZ3JhcGhDb21wdXRlckNsYXNzKS5WKCkub3V0KCkucHJvamVjdCgicG9pbnQiLCAidHJpYW5nbGUiKS5ieSgicG9pbnQiKS5ieSgidHJpYW5nbGUiKS50b0xpc3QoKSk7Ci0gICAgICAgIHZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKGdyYXBoQ29tcHV0ZXJDbGFzcykuVigpLm91dCgpLm91dCgpLnByb2plY3QoInBvaW50IiwgInRyaWFuZ2xlIikuYnkoInBvaW50IikuYnkoInRyaWFuZ2xlIikudG9MaXN0KCkpOwotICAgICAgICAvLyBPTFRQIFRFU1RJTkcgLy8KLSAgICAgICAgdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhncmFwaC50cmF2ZXJzYWwoKS5WKCkucHJvamVjdCgicG9pbnQiLCAidHJpYW5nbGUiKS5ieSgicG9pbnQiKS5ieSgidHJpYW5nbGUiKS50b0xpc3QoKSk7Ci0gICAgICAgIC8vIEhERlMgVEVTVElORyAvLwotICAgICAgICAvKnZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoSXRlcmF0b3JVdGlscy48TWFwPFN0cmluZywgT2JqZWN0Pj5hc0xpc3QoSXRlcmF0b3JVdGlscy48VmVydGV4LCBNYXA8U3RyaW5nLCBPYmplY3Q+Pm1hcChGaWxlU3lzdGVtU3RvcmFnZS5vcGVuKENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSkpLmhlYWQoZ3JhcGguY29uZmlndXJhdGlvbigpLmdldElucHV0TG9jYXRpb24oKSwgZ3JhcGguY29uZmlndXJhdGlvbigpLmdldEdyYXBoUmVhZGVyKCkpLAotICAgICAgICAgICAgICAgIHZlcnRleCAtPiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKSB7ewotICAgICAgICAgICAgICAgICAgICAgICAgcHV0KCJwb2ludCIsIHZlcnRleC52YWx1ZSgicG9pbnQiKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXQoInRyaWFuZ2xlIiwgdmVydGV4LnZhbHVlKCJ0cmlhbmdsZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAgICAgfSkpKTsqLwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKGZpbmFsIExpc3Q8TWFwPFN0cmluZywgT2JqZWN0Pj4gdmFsdWVzKSB7Ci0gICAgICAgIGFzc2VydEVxdWFscyhOVU1CRVJfT0ZfVkVSVElDRVMsIHZhbHVlcy5zaXplKCkpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTUJFUl9PRl9WRVJUSUNFUzsgaSsrKSB7Ci0gICAgICAgICAgICBhc3NlcnRUcnVlKHZhbHVlcy5zdHJlYW0oKS5tYXAobSAtPiBtLjxUb3lQb2ludD5nZXQoInBvaW50IikpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSkuY29udGFpbnMobmV3IFRveVBvaW50KGksIGkgKiAxMCkpKTsKLSAgICAgICAgICAgIGFzc2VydFRydWUodmFsdWVzLnN0cmVhbSgpLm1hcChtIC0+IG0uPFRveVRyaWFuZ2xlPmdldCgidHJpYW5nbGUiKSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKS5jb250YWlucyhuZXcgVG95VHJpYW5nbGUoaSwgaSAqIDEwLCBpICogMTAwKSkpOwotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lJb1JlZ2lzdHJ5LmphdmEgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9ncnlvL1RveUlvUmVnaXN0cnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZkODdhOS4uMDAwMDAwMAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9ncnlvL1RveUlvUmVnaXN0cnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW87Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5BYnN0cmFjdElvUmVnaXN0cnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05JbzsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5UaW5rZXJQb3BKYWNrc29uTW9kdWxlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lvOwotCi1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIFRveUlvUmVnaXN0cnkgZXh0ZW5kcyBBYnN0cmFjdElvUmVnaXN0cnkgewotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVG95SW9SZWdpc3RyeSBJTlNUQU5DRSA9IG5ldyBUb3lJb1JlZ2lzdHJ5KCk7Ci0KLSAgICBwcml2YXRlIFRveUlvUmVnaXN0cnkoKSB7Ci0gICAgICAgIHN1cGVyLnJlZ2lzdGVyKEdyeW9Jby5jbGFzcywgVG95UG9pbnQuY2xhc3MsIG5ldyBUb3lQb2ludC5Ub3lQb2ludFNlcmlhbGl6ZXIoKSk7Ci0gICAgICAgIHN1cGVyLnJlZ2lzdGVyKEdyeW9Jby5jbGFzcywgVG95VHJpYW5nbGUuY2xhc3MsIG5ldyBUb3lUcmlhbmdsZS5Ub3lUcmlhbmdsZVNlcmlhbGl6ZXIoKSk7Ci0gICAgICAgIHN1cGVyLnJlZ2lzdGVyKEdyYXBoU09OSW8uY2xhc3MsIG51bGwsIG5ldyBUb3lNb2R1bGUoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lNb2R1bGUgZXh0ZW5kcyBUaW5rZXJQb3BKYWNrc29uTW9kdWxlIHsKLSAgICAgICAgcHVibGljIFRveU1vZHVsZSgpIHsKLSAgICAgICAgICAgIHN1cGVyKCJ0b3kiKTsKLSAgICAgICAgICAgIGFkZFNlcmlhbGl6ZXIoVG95UG9pbnQuY2xhc3MsIG5ldyBUb3lQb2ludC5Ub3lQb2ludEphY2tzb25TZXJpYWxpemVyKCkpOwotICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFRveVBvaW50LmNsYXNzLCBuZXcgVG95UG9pbnQuVG95UG9pbnRKYWNrc29uRGVTZXJpYWxpemVyKCkpOwotICAgICAgICAgICAgYWRkU2VyaWFsaXplcihUb3lUcmlhbmdsZS5jbGFzcywgbmV3IFRveVRyaWFuZ2xlLlRveVRyaWFuZ2xlSmFja3NvblNlcmlhbGl6ZXIoKSk7Ci0gICAgICAgICAgICBhZGREZXNlcmlhbGl6ZXIoVG95VHJpYW5nbGUuY2xhc3MsIG5ldyBUb3lUcmlhbmdsZS5Ub3lUcmlhbmdsZUphY2tzb25EZVNlcmlhbGl6ZXIoKSk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgTWFwPENsYXNzLCBTdHJpbmc+IGdldFR5cGVEZWZpbml0aW9ucygpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgSGFzaE1hcDxDbGFzcywgU3RyaW5nPigpIHt7Ci0gICAgICAgICAgICAgICAgcHV0KFRveVBvaW50LmNsYXNzLCAiVG95UG9pbnQiKTsKLSAgICAgICAgICAgICAgICBwdXQoVG95VHJpYW5nbGUuY2xhc3MsICJUb3lUcmlhbmdsZSIpOwotICAgICAgICAgICAgfX07Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFN0cmluZyBnZXRUeXBlTmFtZXNwYWNlKCkgewotICAgICAgICAgICAgcmV0dXJuICJ0b3kiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBUb3lJb1JlZ2lzdHJ5IGluc3RhbmNlKCkgewotICAgICAgICByZXR1cm4gSU5TVEFOQ0U7Ci0gICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL2dyeW8vVG95UG9pbnQuamF2YSBiL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL2dyeW8vVG95UG9pbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhNWNhMy4uMDAwMDAwMAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9ncnlvL1RveVBvaW50LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoKLSAqICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiAgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5bzsKLQotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5BYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlRva2VuczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLklucHV0U2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLktyeW9TaGltOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8ua3J5b3NoaW0uT3V0cHV0U2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLlNlcmlhbGl6ZXJTaGltOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5jb3JlLkpzb25HZW5lcmF0b3I7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuU2VyaWFsaXplclByb3ZpZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLnNlci5zdGQuU3RkU2NhbGFyU2VyaWFsaXplcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5zZXIuc3RkLlN0ZFNlcmlhbGl6ZXI7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBUb3lQb2ludCB7Ci0KLSAgICBwcml2YXRlIGZpbmFsIGludCB4OwotICAgIHByaXZhdGUgZmluYWwgaW50IHk7Ci0KLSAgICBwdWJsaWMgVG95UG9pbnQoZmluYWwgaW50IHgsIGZpbmFsIGludCB5KSB7Ci0gICAgICAgIHRoaXMueCA9IHg7Ci0gICAgICAgIHRoaXMueSA9IHk7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRYKCkgewotICAgICAgICByZXR1cm4gdGhpcy54OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0WSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMueTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICByZXR1cm4gdGhpcy54ICsgdGhpcy55OwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgVG95UG9pbnQgJiYgKChUb3lQb2ludCkgb3RoZXIpLnggPT0gdGhpcy54ICYmICgoVG95UG9pbnQpIG90aGVyKS55ID09IHRoaXMueTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gIlsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIl0iOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95UG9pbnRTZXJpYWxpemVyIGltcGxlbWVudHMgU2VyaWFsaXplclNoaW08VG95UG9pbnQ+IHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyA8TyBleHRlbmRzIE91dHB1dFNoaW0+IHZvaWQgd3JpdGUoZmluYWwgS3J5b1NoaW08PywgTz4ga3J5bywgZmluYWwgTyBvdXRwdXQsIGZpbmFsIFRveVBvaW50IHRveVBvaW50KSB7Ci0gICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95UG9pbnQueCk7Ci0gICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95UG9pbnQueSk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIDxJIGV4dGVuZHMgSW5wdXRTaGltPiBUb3lQb2ludCByZWFkKGZpbmFsIEtyeW9TaGltPEksID8+IGtyeW8sIGZpbmFsIEkgaW5wdXQsIGZpbmFsIENsYXNzPFRveVBvaW50PiB0b3lQb2ludENsYXNzKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFRveVBvaW50KGlucHV0LnJlYWRJbnQoKSwgaW5wdXQucmVhZEludCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95UG9pbnRKYWNrc29uU2VyaWFsaXplciBleHRlbmRzIFN0ZFNjYWxhclNlcmlhbGl6ZXI8VG95UG9pbnQ+IHsKLQotICAgICAgICBwdWJsaWMgVG95UG9pbnRKYWNrc29uU2VyaWFsaXplcigpIHsKLSAgICAgICAgICAgIHN1cGVyKFRveVBvaW50LmNsYXNzKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBzZXJpYWxpemUoZmluYWwgVG95UG9pbnQgdG95UG9pbnQsIGZpbmFsIEpzb25HZW5lcmF0b3IganNvbkdlbmVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFNlcmlhbGl6ZXJQcm92aWRlciBzZXJpYWxpemVyUHJvdmlkZXIpIHRocm93cyBJT0V4Y2VwdGlvbiwgSnNvbkdlbmVyYXRpb25FeGNlcHRpb24gewotICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZVN0YXJ0T2JqZWN0KCk7Ci0gICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0RmllbGQoIngiLCB0b3lQb2ludC54KTsKLSAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVPYmplY3RGaWVsZCgieSIsIHRveVBvaW50LnkpOwotICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZUVuZE9iamVjdCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lQb2ludEphY2tzb25EZVNlcmlhbGl6ZXIgZXh0ZW5kcyBBYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjxUb3lQb2ludD4gewotCi0gICAgICAgIHB1YmxpYyBUb3lQb2ludEphY2tzb25EZVNlcmlhbGl6ZXIoKSB7Ci0gICAgICAgICAgICBzdXBlcihUb3lQb2ludC5jbGFzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRveVBvaW50IGNyZWF0ZU9iamVjdChmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG1hcCkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBUb3lQb2ludCgoaW50KSBtYXAuZ2V0KCJ4IiksIChpbnQpIG1hcC5nZXQoInkiKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9ncnlvL1RveVRyaWFuZ2xlLmphdmEgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9ncnlvL1RveVRyaWFuZ2xlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MGNkMDEuLjAwMDAwMDAKLS0tIGEvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lUcmlhbmdsZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW87Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5BYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLklucHV0U2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLktyeW9TaGltOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8ua3J5b3NoaW0uT3V0cHV0U2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLlNlcmlhbGl6ZXJTaGltOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLlNlcmlhbGl6ZXJQcm92aWRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5zZXIuc3RkLlN0ZFNjYWxhclNlcmlhbGl6ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuc2VyLnN0ZC5TdGRTZXJpYWxpemVyOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgVG95VHJpYW5nbGUgewotCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgeDsKLSAgICBwcml2YXRlIGZpbmFsIGludCB5OwotICAgIHByaXZhdGUgZmluYWwgaW50IHo7Ci0KLSAgICBwdWJsaWMgVG95VHJpYW5nbGUoZmluYWwgaW50IHgsIGZpbmFsIGludCB5LCBmaW5hbCBpbnQgeikgewotICAgICAgICB0aGlzLnggPSB4OwotICAgICAgICB0aGlzLnkgPSB5OwotICAgICAgICB0aGlzLnogPSB6OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0WCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMueDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldFkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnk7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRaKCkgewotICAgICAgICByZXR1cm4gdGhpcy56OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnggKyB0aGlzLnkgKyB0aGlzLno7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgewotICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBUb3lUcmlhbmdsZSAmJiAoKFRveVRyaWFuZ2xlKSBvdGhlcikueCA9PSB0aGlzLnggJiYgKChUb3lUcmlhbmdsZSkgb3RoZXIpLnkgPT0gdGhpcy55ICYmICgoVG95VHJpYW5nbGUpIG90aGVyKS56ID09IHRoaXMuejsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gIlsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIiwiICsgdGhpcy56ICsgIl0iOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95VHJpYW5nbGVTZXJpYWxpemVyIGltcGxlbWVudHMgU2VyaWFsaXplclNoaW08VG95VHJpYW5nbGU+IHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyA8TyBleHRlbmRzIE91dHB1dFNoaW0+IHZvaWQgd3JpdGUoZmluYWwgS3J5b1NoaW08PywgTz4ga3J5bywgZmluYWwgTyBvdXRwdXQsIGZpbmFsIFRveVRyaWFuZ2xlIHRveVRyaWFuZ2xlKSB7Ci0gICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95VHJpYW5nbGUueCk7Ci0gICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95VHJpYW5nbGUueSk7Ci0gICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95VHJpYW5nbGUueik7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIDxJIGV4dGVuZHMgSW5wdXRTaGltPiBUb3lUcmlhbmdsZSByZWFkKGZpbmFsIEtyeW9TaGltPEksID8+IGtyeW8sIGZpbmFsIEkgaW5wdXQsIGZpbmFsIENsYXNzPFRveVRyaWFuZ2xlPiB0b3lUcmlhbmdsZUNsYXNzKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFRveVRyaWFuZ2xlKGlucHV0LnJlYWRJbnQoKSwgaW5wdXQucmVhZEludCgpLCBpbnB1dC5yZWFkSW50KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveVRyaWFuZ2xlSmFja3NvblNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGRTY2FsYXJTZXJpYWxpemVyPFRveVRyaWFuZ2xlPiB7Ci0KLSAgICAgICAgcHVibGljIFRveVRyaWFuZ2xlSmFja3NvblNlcmlhbGl6ZXIoKSB7Ci0gICAgICAgICAgICBzdXBlcihUb3lUcmlhbmdsZS5jbGFzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgc2VyaWFsaXplKGZpbmFsIFRveVRyaWFuZ2xlIHRveVRyaWFuZ2xlLCBmaW5hbCBKc29uR2VuZXJhdG9yIGpzb25HZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXJpYWxpemVyUHJvdmlkZXIgc2VyaWFsaXplclByb3ZpZGVyKSB0aHJvd3MgSU9FeGNlcHRpb24sIEpzb25HZW5lcmF0aW9uRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVTdGFydE9iamVjdCgpOwotICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdEZpZWxkKCJ4IiwgdG95VHJpYW5nbGUueCk7Ci0gICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0RmllbGQoInkiLCB0b3lUcmlhbmdsZS55KTsKLSAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVPYmplY3RGaWVsZCgieiIsIHRveVRyaWFuZ2xlLnopOwotICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZUVuZE9iamVjdCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lUcmlhbmdsZUphY2tzb25EZVNlcmlhbGl6ZXIgZXh0ZW5kcyBBYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjxUb3lUcmlhbmdsZT4gewotCi0gICAgICAgIHB1YmxpYyBUb3lUcmlhbmdsZUphY2tzb25EZVNlcmlhbGl6ZXIoKSB7Ci0gICAgICAgICAgICBzdXBlcihUb3lUcmlhbmdsZS5jbGFzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRveVRyaWFuZ2xlIGNyZWF0ZU9iamVjdChmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG1hcCkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBUb3lUcmlhbmdsZSgoaW50KSBtYXAuZ2V0KCJ4IiksIChpbnQpIG1hcC5nZXQoInkiKSwgKGludCkgbWFwLmdldCgieiIpKTsKLSAgICAgICAgfQotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvbmVvNGotZ3JlbWxpbi9wb20ueG1sIGIvbmVvNGotZ3JlbWxpbi9wb20ueG1sCmluZGV4IDJjMWQ2ZTAuLjllMzY5M2MgMTAwNjQ0Ci0tLSBhL25lbzRqLWdyZW1saW4vcG9tLnhtbAorKysgYi9uZW80ai1ncmVtbGluL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPm5lbzRqLWdyZW1saW48L2FydGlmYWN0SWQ+CiAgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBOZW80aiBHcmVtbGluPC9uYW1lPgpkaWZmIC0tZ2l0IGEvbmVvNGotZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vbmVvNGovQWJzdHJhY3ROZW80akdyYXBoUHJvdmlkZXIuamF2YSBiL25lbzRqLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL25lbzRqL0Fic3RyYWN0TmVvNGpHcmFwaFByb3ZpZGVyLmphdmEKaW5kZXggYjAxODkzOC4uOThlMWY1YiAxMDA2NDQKLS0tIGEvbmVvNGotZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vbmVvNGovQWJzdHJhY3ROZW80akdyYXBoUHJvdmlkZXIuamF2YQorKysgYi9uZW80ai1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9uZW80ai9BYnN0cmFjdE5lbzRqR3JhcGhQcm92aWRlci5qYXZhCkBAIC0zMyw2ICszMyw3IEBACiAKIGltcG9ydCBqYXZhLmlvLkZpbGU7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwogaW1wb3J0IGphdmEudXRpbC5SYW5kb207CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIApAQCAtNTAsNiArNTEsMjYgQEAKICAgICAgICAgYWRkKE5lbzRqVmVydGV4UHJvcGVydHkuY2xhc3MpOwogICAgIH19OwogCisgICAgcHJvdGVjdGVkIEdyYXBoLkZlYXR1cmVzIGZlYXR1cmVzID0gbnVsbDsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBHcmFwaCBvcGVuVGVzdEdyYXBoKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CisgICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gc3VwZXIub3BlblRlc3RHcmFwaChjb25maWcpOworCisgICAgICAgIC8vIHdlIGNhbiBqdXN0IHVzZSB0aGUgaW5pdGlhbCBzZXQgb2YgZmVhdHVyZXMgdGFrZW4gZnJvbSB0aGUgZmlyc3QgZ3JhcGggZ2VuZXJhdGVkIGZyb20gdGhlIHByb3ZpZGVyIGJlY2F1c2UKKyAgICAgICAgLy8gbmVvNGogZmVhdHVyZSB3b24ndCBldmVyIGNoYW5nZS4gZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYW55IGRhbmdlciBvZiBrZWVwaW5nIHRoaXMgaW5zdGFuY2UgYWJvdXQgZXZlbiBpZgorICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZ3JhcGggaW5zdGFuY2UgZ29lcyBvdXQgb2Ygc2NvcGUuCisgICAgICAgIGlmIChudWxsID09IGZlYXR1cmVzKSB7CisgICAgICAgICAgICB0aGlzLmZlYXR1cmVzID0gZ3JhcGguZmVhdHVyZXMoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZ3JhcGg7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE9wdGlvbmFsPEdyYXBoLkZlYXR1cmVzPiBnZXRTdGF0aWNGZWF0dXJlcygpIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsLm9mTnVsbGFibGUoZmVhdHVyZXMpOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIGNsZWFyKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBpZiAobnVsbCAhPSBncmFwaCkgewpkaWZmIC0tZ2l0IGEvcG9tLnhtbCBiL3BvbS54bWwKaW5kZXggYTBhOTdmNC4uYmJiNGNhZCAxMDA2NDQKLS0tIGEvcG9tLnhtbAorKysgYi9wb20ueG1sCkBAIC0yNSw3ICsyNSw3IEBACiAgICAgPC9wYXJlbnQ+CiAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8cGFja2FnaW5nPnBvbTwvcGFja2FnaW5nPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3A8L25hbWU+CiAgICAgPGRlc2NyaXB0aW9uPkEgR3JhcGggQ29tcHV0aW5nIEZyYW1ld29yazwvZGVzY3JpcHRpb24+CkBAIC0xMDgsNiArMTA4LDE4IEBACiAgICAgICAgICAgICA8ZW1haWw+dHdpbG1lc0BnbWFpbC5jb208L2VtYWlsPgogICAgICAgICAgICAgPHVybD5odHRwczovL2dpdGh1Yi5jb20vdHdpbG1lczwvdXJsPgogICAgICAgICA8L2NvbnRyaWJ1dG9yPgorICAgICAgICA8Y29udHJpYnV0b3I+CisgICAgICAgICAgICA8bmFtZT5IYXJzaCBUaGFra2FyPC9uYW1lPgorICAgICAgICAgICAgPGVtYWlsPmhhcnNoOXRAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgIDxvcmdhbml6YXRpb24+VW5pdmVyc2l0eSBvZiBCb25uPC9vcmdhbml6YXRpb24+CisgICAgICAgICAgICA8b3JnYW5pemF0aW9uVXJsPmh0dHA6Ly9oYXJzaHRoYWtrYXIuaW48L29yZ2FuaXphdGlvblVybD4KKyAgICAgICAgPC9jb250cmlidXRvcj4KKyAgICAgICAgPGNvbnRyaWJ1dG9yPgorICAgICAgICAgICAgPG5hbWU+RGhhcm1lbiBQdW5qYW5pPC9uYW1lPgorICAgICAgICAgICAgPGVtYWlsPmRoYXJtZW4ucHVuamFuaUBnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5OYXRpb25hbCBhbmQgS2Fwb2Rpc3RyaWFuIFVuaXZlcnNpdHkgb2YgQXRoZW5zPC9vcmdhbml6YXRpb24+CisgICAgICAgICAgICA8b3JnYW5pemF0aW9uVXJsPmh0dHA6Ly93ZGFxdWEuZXUvc3R1ZGVudHMvZGhhcm1lbi1wdW5qYW5pPC9vcmdhbml6YXRpb25Vcmw+CisgICAgICAgIDwvY29udHJpYnV0b3I+CiAgICAgPC9jb250cmlidXRvcnM+CiAgICAgPG1vZHVsZXM+CiAgICAgICAgIDxtb2R1bGU+Z3JlbWxpbi1zaGFkZWQ8L21vZHVsZT4KQEAgLTEyMCw4ICsxMzIsOCBAQAogICAgICAgICA8bW9kdWxlPmdyZW1saW4tZG90bmV0PC9tb2R1bGU+CiAgICAgICAgIDxtb2R1bGU+aGFkb29wLWdyZW1saW48L21vZHVsZT4KICAgICAgICAgPG1vZHVsZT5zcGFyay1ncmVtbGluPC9tb2R1bGU+Ci0gICAgICAgIDxtb2R1bGU+Z2lyYXBoLWdyZW1saW48L21vZHVsZT4KICAgICAgICAgPG1vZHVsZT5uZW80ai1ncmVtbGluPC9tb2R1bGU+CisgICAgICAgIDxtb2R1bGU+c3BhcnFsLWdyZW1saW48L21vZHVsZT4KICAgICAgICAgPG1vZHVsZT5ncmVtbGluLWRyaXZlcjwvbW9kdWxlPgogICAgICAgICA8bW9kdWxlPmdyZW1saW4tY29uc29sZTwvbW9kdWxlPgogICAgICAgICA8bW9kdWxlPmdyZW1saW4tc2VydmVyPC9tb2R1bGU+CkBAIC0xMzcsMTcgKzE0OSwxNyBAQAogICAgICAgICA8Y29tbW9ucy5jb25maWd1cmF0aW9uLnZlcnNpb24+MS4xMDwvY29tbW9ucy5jb25maWd1cmF0aW9uLnZlcnNpb24+CiAgICAgICAgIDxjb21tb25zLmxhbmcudmVyc2lvbj4yLjY8L2NvbW1vbnMubGFuZy52ZXJzaW9uPgogICAgICAgICA8Y29tbW9ucy5sYW5nMy52ZXJzaW9uPjMuOC4xPC9jb21tb25zLmxhbmczLnZlcnNpb24+Ci0gICAgICAgIDxncm9vdnkudmVyc2lvbj4yLjQuMTc8L2dyb292eS52ZXJzaW9uPgorICAgICAgICA8Z3Jvb3Z5LnZlcnNpb24+Mi41LjExPC9ncm9vdnkudmVyc2lvbj4KICAgICAgICAgPGhhZG9vcC52ZXJzaW9uPjIuNy4yPC9oYWRvb3AudmVyc2lvbj4KICAgICAgICAgPGphdmEudHVwbGVzLnZlcnNpb24+MS4yPC9qYXZhLnR1cGxlcy52ZXJzaW9uPgogICAgICAgICA8amF2YWRvYy1wbHVnaW4udmVyc2lvbj4yLjEwLjQ8L2phdmFkb2MtcGx1Z2luLnZlcnNpb24+CiAgICAgICAgIDxqY2FiaS52ZXJzaW9uPjEuMTwvamNhYmkudmVyc2lvbj4KICAgICAgICAgPGxvZzRqLnZlcnNpb24+MS4yLjE3PC9sb2c0ai52ZXJzaW9uPgogICAgICAgICA8bWV0cmljcy52ZXJzaW9uPjMuMC4yPC9tZXRyaWNzLnZlcnNpb24+Ci0gICAgICAgIDxuZXR0eS52ZXJzaW9uPjQuMC41Ni5GaW5hbDwvbmV0dHkudmVyc2lvbj4KKyAgICAgICAgPG5ldHR5LnZlcnNpb24+NC4xLjQyLkZpbmFsPC9uZXR0eS52ZXJzaW9uPgogICAgICAgICA8c2xmNGoudmVyc2lvbj4xLjcuMjU8L3NsZjRqLnZlcnNpb24+CiAgICAgICAgIDxzbmFrZXlhbWwudmVyc2lvbj4xLjE1PC9zbmFrZXlhbWwudmVyc2lvbj4KLSAgICAgICAgPHNwYXJrLnZlcnNpb24+Mi4yLjA8L3NwYXJrLnZlcnNpb24+CisgICAgICAgIDxzcGFyay52ZXJzaW9uPjIuNC4wPC9zcGFyay52ZXJzaW9uPgogCiAgICAgICAgIDxwcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nPlVURi04PC9wcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nPgogICAgICAgICA8cHJvamVjdC5yZXBvcnRpbmcub3V0cHV0RW5jb2Rpbmc+VVRGLTg8L3Byb2plY3QucmVwb3J0aW5nLm91dHB1dEVuY29kaW5nPgpAQCAtMzQ2LDYgKzM1OCw3IEBACiAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlU3ViUHJvamVjdHM+ZmFsc2U8L2V4Y2x1ZGVTdWJQcm9qZWN0cz4KICAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+Lm1haWxtYXA8L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4udHJhdmlzLnltbDwvZXhjbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPi50cmF2aXMuKi5zaDwvZXhjbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPi5kb2NrZXJpZ25vcmU8L2V4Y2x1ZGU+CkBAIC0zNTksNiArMzcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPioqL3RhcmdldC8qKjwvZXhjbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPmRhdGEvKi50eHQ8L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4qKi8qLmtyeW88L2V4Y2x1ZGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4qKi8qLmdiaW48L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4qKi8qLmltbDwvZXhjbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPioqLyouanNvbjwvZXhjbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPioqLyoueG1sPC9leGNsdWRlPgpAQCAtNjA1LDE1ICs2MTksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sb2dnaW5nPC9ncm91cElkPgogICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1sb2dnaW5nPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPCEtLSBjb25mbGljdHMgd2l0aCBnaXJhcGgtY29yZSAod2hpY2ggYXBwZWFycyB0byBoYXZlIG1vcmUgY29uc2lzdGVudCBkZXBlbmRlbmNpZXMpIC0tPgotICAgICAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLmphY2tzb248L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWNvcmUtYXNsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5qYWNrc29uPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1tYXBwZXItYXNsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KICAgICAgICAgICAgICAgICAgICAgPCEtLSBjb25mbGljdCB3aXRoIFRpbmtlclBvcCB0ZXN0cyAtLT4KICAgICAgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgpAQCAtMTIwMyw3ICsxMjA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvdmVydmlldz4ke2Jhc2VkaXJ9L2RvY3MvamF2YWRvYy9vdmVydmlldy5odG1sPC9vdmVydmlldz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdWlldD50cnVlPC9xdWlldD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VwYXRoPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmE6Z3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmE6Z3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YTpncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhOmdyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmE6Z3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YTpncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YTpoYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhOm5lbzRqLWdyZW1saW4vc3JjL21haW4vamF2YTpzcGFyay1ncmVtbGluL3NyYy9tYWluL2phdmE6dGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmE6Z3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YTpncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhOmdyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmE6Z3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YTpncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YTpoYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhOm5lbzRqLWdyZW1saW4vc3JjL21haW4vamF2YTpzcGFyay1ncmVtbGluL3NyYy9tYWluL2phdmE6dGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZXBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KQEAgLTEyNjQsMTIgKzEyNjksMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT5vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvKi5qYXZhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbmNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvY2x1c3RlcmluZy9jb25uZWN0ZWQvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5qYXZhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbmNsdWRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvY2x1c3RlcmluZy9wZWVycHJlc3N1cmUvUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbS5qYXZhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbmNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvcmFua2luZy9wYWdlcmFuay9QYWdlUmFua1ZlcnRleFByb2dyYW0uamF2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5jbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uamF2YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5jbHVkZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLmphdmEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2luY2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB0cmF2ZXJzYWwgLS0+CmRpZmYgLS1naXQgYS9zcGFyay1ncmVtbGluL3BvbS54bWwgYi9zcGFyay1ncmVtbGluL3BvbS54bWwKaW5kZXggZGYzNGMzZC4uOGU4NmY2NiAxMDA2NDQKLS0tIGEvc3BhcmstZ3JlbWxpbi9wb20ueG1sCisrKyBiL3NwYXJrLWdyZW1saW4vcG9tLnhtbApAQCAtMjQsNyArMjQsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+c3BhcmstZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IFNwYXJrIEdyZW1saW48L25hbWU+CkBAIC0xMzUsNiArMTM1LDEwIEBACiAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CiAgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmNvcmU8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tY29yZTwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KKyAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgorICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZmFzdGVyeG1sLmphY2tzb24uY29yZTwvZ3JvdXBJZD4KICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1kYXRhYmluZDwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KICAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgpAQCAtMjYwLDcgKzI2NCw3IEBACiAgICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmNvcmU8L2dyb3VwSWQ+CiAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWRhdGFiaW5kPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+Mi42LjU8L3ZlcnNpb24+CisgICAgICAgICAgICA8dmVyc2lvbj4yLjYuNzwvdmVyc2lvbj4KICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtbGFuZzwvZ3JvdXBJZD4KQEAgLTI4MCw3ICsyODQsNyBAQAogICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPmlvLm5ldHR5PC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHktYWxsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+NC4wLjQzLkZpbmFsPC92ZXJzaW9uPgorICAgICAgICAgICAgPHZlcnNpb24+NC4xLjMyLkZpbmFsPC92ZXJzaW9uPgogICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgPGdyb3VwSWQ+aW8ubmV0dHk8L2dyb3VwSWQ+CkBAIC0zMTEsNjMgKzMxNSw2IEBACiAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgPGRlcGVuZGVuY3k+CiAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmhhZG9vcC1ncmVtbGluPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgotICAgICAgICAgICAgPHR5cGU+dGVzdC1qYXI8L3R5cGU+Ci0gICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgICAgICA8ZXhjbHVzaW9ucz4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5qYXZheC5zZXJ2bGV0PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zZXJ2bGV0LWFwaTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb20uc3VuLmplcnNleTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+amVyc2V5LWNvcmU8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLnN1bi5qZXJzZXk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmplcnNleS1zZXJ2ZXI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1uZXQ8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbmV0PC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtaW88L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtaW88L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdvb2dsZS5ndWF2YTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3VhdmE8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnhlcmlhbC5zbmFwcHk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnNuYXBweS1qYXZhPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUuYXZybzwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+YXZybzwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmNvbW1vbnM8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbWF0aDM8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+aW8ubmV0dHk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm5ldHR5PC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmlvLm5ldHR5PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5uZXR0eS1hbGw8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLnRob3VnaHR3b3Jrcy5wYXJhbmFtZXI8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnBhcmFuYW1lcjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VyZ3JhcGgtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KICAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KQEAgLTQ1Nyw0ICs0MDQsNCBAQAogICAgICAgICAgICAgPC9wbHVnaW4+CiAgICAgICAgIDwvcGx1Z2lucz4KICAgICA8L2J1aWxkPgotPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL3NwYXJrLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9pbnRlcmNlcHRvci9TcGFya1N0YXJCYXJyaWVySW50ZXJjZXB0b3IuamF2YSBiL3NwYXJrLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9pbnRlcmNlcHRvci9TcGFya1N0YXJCYXJyaWVySW50ZXJjZXB0b3IuamF2YQppbmRleCAzYzc0ZTVhLi5kZTQyNTI1IDEwMDY0NAotLS0gYS9zcGFyay1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vaW50ZXJjZXB0b3IvU3BhcmtTdGFyQmFycmllckludGVyY2VwdG9yLmphdmEKKysrIGIvc3BhcmstZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL2ludGVyY2VwdG9yL1NwYXJrU3RhckJhcnJpZXJJbnRlcmNlcHRvci5qYXZhCkBAIC00NSw2ICs0NSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uQ29tcHV0ZXJWZXJpZmljYXRpb25TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLlRyYXZlcnNlclNldDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJrLnByb2Nlc3MuY29tcHV0ZXIuU3BhcmtNZW1vcnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5TcGFya1ZlcnRleFByb2dyYW1JbnRlcmNlcHRvcjsKQEAgLTUyLDYgKzUzLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLkVsZW1lbnRIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLk51bWJlckhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuZnVuY3Rpb24uQXJyYXlMaXN0U3VwcGxpZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLk1lYW5OdW1iZXJTdXBwbGllcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CkBAIC05NiwyNSArOTgsMjUgQEAKICAgICAgICAgLy8gVVNFIFNQQVJLIERTTCBGT1IgVEhFIFJFU1BFQ1RJVkUgRU5EIFJFRFVDSU5HIEJBUlJJRVIgU1RFUCBPRiBUSEUgVFJBVkVSU0FMCiAgICAgICAgIGZpbmFsIE9iamVjdCByZXN1bHQ7CiAgICAgICAgIGlmIChlbmRTdGVwIGluc3RhbmNlb2YgQ291bnRHbG9iYWxTdGVwKQotICAgICAgICAgICAgcmVzdWx0ID0gbmV4dFJERC5tYXAoVHJhdmVyc2VyOjpidWxrKS5mb2xkKDBsLCAoYSwgYikgLT4gYSArIGIpOwotICAgICAgICBlbHNlIGlmIChlbmRTdGVwIGluc3RhbmNlb2YgU3VtR2xvYmFsU3RlcCkKLSAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQKKyAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQubWFwKFRyYXZlcnNlcjo6YnVsaykuZm9sZCgwTCwgKGEsIGIpIC0+IGEgKyBiKTsKKyAgICAgICAgZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIFN1bUdsb2JhbFN0ZXApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQuaXNFbXB0eSgpID8gbnVsbCA6IG5leHRSREQKICAgICAgICAgICAgICAgICAgICAgLm1hcCh0cmF2ZXJzZXIgLT4gTnVtYmVySGVscGVyLm11bCh0cmF2ZXJzZXIuYnVsaygpLCAoTnVtYmVyKSB0cmF2ZXJzZXIuZ2V0KCkpKQogICAgICAgICAgICAgICAgICAgICAuZm9sZCgwLCBOdW1iZXJIZWxwZXI6OmFkZCk7Ci0gICAgICAgIGVsc2UgaWYgKGVuZFN0ZXAgaW5zdGFuY2VvZiBNZWFuR2xvYmFsU3RlcCkKLSAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQKKyAgICAgICAgfSBlbHNlIGlmIChlbmRTdGVwIGluc3RhbmNlb2YgTWVhbkdsb2JhbFN0ZXApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQuaXNFbXB0eSgpID8gbnVsbCA6IG5leHRSREQKICAgICAgICAgICAgICAgICAgICAgLm1hcCh0cmF2ZXJzZXIgLT4gbmV3IE1lYW5HbG9iYWxTdGVwLk1lYW5OdW1iZXIoKE51bWJlcikgdHJhdmVyc2VyLmdldCgpLCB0cmF2ZXJzZXIuYnVsaygpKSkKLSAgICAgICAgICAgICAgICAgICAgLmZvbGQobmV3IE1lYW5HbG9iYWxTdGVwLk1lYW5OdW1iZXIoKSwgTWVhbkdsb2JhbFN0ZXAuTWVhbk51bWJlcjo6YWRkKQorICAgICAgICAgICAgICAgICAgICAuZm9sZChNZWFuTnVtYmVyU3VwcGxpZXIuaW5zdGFuY2UoKS5nZXQoKSwgTWVhbkdsb2JhbFN0ZXAuTWVhbk51bWJlcjo6YWRkKQogICAgICAgICAgICAgICAgICAgICAuZ2V0RmluYWwoKTsKLSAgICAgICAgZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIE1pbkdsb2JhbFN0ZXApCi0gICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRECi0gICAgICAgICAgICAgICAgICAgIC5tYXAodHJhdmVyc2VyIC0+IChOdW1iZXIpIHRyYXZlcnNlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgLmZvbGQoSW50ZWdlci5NQVhfVkFMVUUsIE51bWJlckhlbHBlcjo6bWluKTsKLSAgICAgICAgZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIE1heEdsb2JhbFN0ZXApCi0gICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRECi0gICAgICAgICAgICAgICAgICAgIC5tYXAodHJhdmVyc2VyIC0+IChOdW1iZXIpIHRyYXZlcnNlci5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgLmZvbGQoSW50ZWdlci5NSU5fVkFMVUUsIE51bWJlckhlbHBlcjo6bWF4KTsKLSAgICAgICAgZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIEZvbGRTdGVwKSB7CisgICAgICAgIH0gZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIE1pbkdsb2JhbFN0ZXApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQuaXNFbXB0eSgpID8gbnVsbCA6IG5leHRSREQKKyAgICAgICAgICAgICAgICAgICAgLm1hcCh0cmF2ZXJzZXIgLT4gKENvbXBhcmFibGUpIHRyYXZlcnNlci5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgLmZvbGQoRG91YmxlLk5hTiwgTnVtYmVySGVscGVyOjptaW4pOworICAgICAgICB9IGVsc2UgaWYgKGVuZFN0ZXAgaW5zdGFuY2VvZiBNYXhHbG9iYWxTdGVwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRELmlzRW1wdHkoKSA/IG51bGwgOiBuZXh0UkRECisgICAgICAgICAgICAgICAgICAgIC5tYXAodHJhdmVyc2VyIC0+IChDb21wYXJhYmxlKSB0cmF2ZXJzZXIuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgIC5mb2xkKERvdWJsZS5OYU4sIE51bWJlckhlbHBlcjo6bWF4KTsKKyAgICAgICAgfSBlbHNlIGlmIChlbmRTdGVwIGluc3RhbmNlb2YgRm9sZFN0ZXApIHsKICAgICAgICAgICAgIGZpbmFsIEJpbmFyeU9wZXJhdG9yIGJpT3BlcmF0b3IgPSBlbmRTdGVwLmdldEJpT3BlcmF0b3IoKTsKICAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQubWFwKHRyYXZlcnNlciAtPiB7CiAgICAgICAgICAgICAgICAgaWYgKGVuZFN0ZXAuZ2V0U2VlZFN1cHBsaWVyKCkgaW5zdGFuY2VvZiBBcnJheUxpc3RTdXBwbGllcikgewpAQCAtMTQ4LDkgKzE1MCwxMSBAQAogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKICAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIEhBTFRFRF9UUkFWRVJTRVJTIGZvciB0aGUgbWVtb3J5Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDxMb25nPiBoYWx0ZWRUcmF2ZXJzZXJzID0gbmV3IFRyYXZlcnNlclNldDw+KCk7Ci0gICAgICAgIGhhbHRlZFRyYXZlcnNlcnMuYWRkKHRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJHZW5lcmF0b3IoKS5nZW5lcmF0ZShyZXN1bHQsIGVuZFN0ZXAsIDFsKSk7IC8vIGFsbCByZWR1Y2luZyBiYXJyaWVyIHN0ZXBzIHByb2R1Y2UgYSByZXN1bHQgb2YgYnVsayAxCi0gICAgICAgIG1lbW9yeS5zZXQoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgaGFsdGVkVHJhdmVyc2Vycyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyU2V0PExvbmc+IGhhbHRlZFRyYXZlcnNlcnMgPSBuZXcgVHJhdmVyc2VyU2V0PD4oKTsKKyAgICAgICAgICAgIGhhbHRlZFRyYXZlcnNlcnMuYWRkKHRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJHZW5lcmF0b3IoKS5nZW5lcmF0ZShyZXN1bHQsIGVuZFN0ZXAsIDFsKSk7IC8vIGFsbCByZWR1Y2luZyBiYXJyaWVyIHN0ZXBzIHByb2R1Y2UgYSByZXN1bHQgb2YgYnVsayAxCisgICAgICAgICAgICBtZW1vcnkuc2V0KFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMsIGhhbHRlZFRyYXZlcnNlcnMpOworICAgICAgICB9CiAgICAgICAgIG1lbW9yeS5pbmNySXRlcmF0aW9uKCk7IC8vIGFueSBsb2NhbCBzdGFyIGdyYXBoIHJlZHVjdGlvbiB0YWtlcyBhIHNpbmdsZSBpdGVyYXRpb24KICAgICAgICAgcmV0dXJuIGlucHV0UkREOwogICAgIH0KZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JlbWxpblN1aXRlLmphdmEgYi9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JlbWxpblN1aXRlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGhhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JlbWxpblN1aXRlLmphdmEKcmVuYW1lIHRvIHNwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9IYWRvb3BHcmVtbGluU3VpdGUuamF2YQpkaWZmIC0tZ2l0IGEvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdElvUmVnaXN0cnlDaGVjay5qYXZhIGIvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdElvUmVnaXN0cnlDaGVjay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNzMwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL0Fic3RyYWN0SW9SZWdpc3RyeUNoZWNrLmphdmEKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvOworCitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uTnVsbFdyaXRhYmxlOworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5SZWNvcmRXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLlRhc2tBdHRlbXB0SUQ7CitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLnRhc2suVGFza0F0dGVtcHRDb250ZXh0SW1wbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFic3RyYWN0R3JlbWxpblRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW5wdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OT3V0cHV0Rm9ybWF0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlJlY29yZFdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvSW5wdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b091dHB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVjb3JkV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uVG95SW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLlRveVBvaW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uVG95VHJpYW5nbGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLnV0aWwuQ29uZlV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5TdG9yYWdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1Bvb2w7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvVmVyc2lvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnN0YXIuU3RhckdyYXBoOworCitpbXBvcnQgamF2YS5pby5EYXRhT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKKworLyoqCisgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SW9SZWdpc3RyeUNoZWNrIGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluVGVzdCB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTlVNQkVSX09GX1ZFUlRJQ0VTID0gMTAwMDsKKworICAgIHB1YmxpYyB2b2lkIGNoZWNrR3J5b1YxZDBJb1JlZ2lzdHJ5Q29tcGxpYW5jZShmaW5hbCBIYWRvb3BHcmFwaCBncmFwaCwgZmluYWwgQ2xhc3M8PyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IGdyYXBoQ29tcHV0ZXJDbGFzcykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEZpbGUgaW5wdXQgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUodGhpcy5nZXRDbGFzcygpLCAiZ3J5by1pby1yZWdpc3RyeSIsICIua3J5byIpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1JFQURFUiwgR3J5b0lucHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBHcnlvT3V0cHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShHcnlvUG9vbC5DT05GSUdfSU9fR1JZT19WRVJTSU9OLCBHcnlvVmVyc2lvbi5WMV8wLm5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04sIFN0b3JhZ2UudG9QYXRoKGlucHV0KSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShJb1JlZ2lzdHJ5LklPX1JFR0lTVFJZLCBUb3lJb1JlZ2lzdHJ5LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGZpbmFsIEdyeW9SZWNvcmRXcml0ZXIgd3JpdGVyID0gbmV3IEdyeW9SZWNvcmRXcml0ZXIobmV3IERhdGFPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0oaW5wdXQpKSwgQ29uZlV0aWwubWFrZUhhZG9vcENvbmZpZ3VyYXRpb24oZ3JhcGguY29uZmlndXJhdGlvbigpKSk7CisgICAgICAgIHZhbGlkYXRlSW9SZWdpc3RyeUdyYXBoKGdyYXBoLCBncmFwaENvbXB1dGVyQ2xhc3MsIHdyaXRlcik7CisgICAgICAgIGFzc2VydFRydWUoaW5wdXQuZGVsZXRlKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNoZWNrR3J5b1YzZDBJb1JlZ2lzdHJ5Q29tcGxpYW5jZShmaW5hbCBIYWRvb3BHcmFwaCBncmFwaCwgZmluYWwgQ2xhc3M8PyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IGdyYXBoQ29tcHV0ZXJDbGFzcykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEZpbGUgaW5wdXQgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUodGhpcy5nZXRDbGFzcygpLCAiZ3J5by1pby1yZWdpc3RyeSIsICIua3J5byIpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1JFQURFUiwgR3J5b0lucHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBHcnlvT3V0cHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04sIFN0b3JhZ2UudG9QYXRoKGlucHV0KSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShHcnlvUG9vbC5DT05GSUdfSU9fR1JZT19WRVJTSU9OLCBHcnlvVmVyc2lvbi5WM18wLm5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShJb1JlZ2lzdHJ5LklPX1JFR0lTVFJZLCBUb3lJb1JlZ2lzdHJ5LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGZpbmFsIEdyeW9SZWNvcmRXcml0ZXIgd3JpdGVyID0gbmV3IEdyeW9SZWNvcmRXcml0ZXIobmV3IERhdGFPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0oaW5wdXQpKSwgQ29uZlV0aWwubWFrZUhhZG9vcENvbmZpZ3VyYXRpb24oZ3JhcGguY29uZmlndXJhdGlvbigpKSk7CisgICAgICAgIHZhbGlkYXRlSW9SZWdpc3RyeUdyYXBoKGdyYXBoLCBncmFwaENvbXB1dGVyQ2xhc3MsIHdyaXRlcik7CisgICAgICAgIGFzc2VydFRydWUoaW5wdXQuZGVsZXRlKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNoZWNrR3JhcGhTT05Jb1JlZ2lzdHJ5Q29tcGxpYW5jZShmaW5hbCBIYWRvb3BHcmFwaCBncmFwaCwgZmluYWwgQ2xhc3M8PyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IGdyYXBoQ29tcHV0ZXJDbGFzcykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEZpbGUgaW5wdXQgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUodGhpcy5nZXRDbGFzcygpLCAiZ3JhcGhzb24taW8tcmVnaXN0cnkiLCAiLmpzb24iKTsKKyAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIEdyYXBoU09OSW5wdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKKyAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIEdyYXBoU09OT3V0cHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04sIFN0b3JhZ2UudG9QYXRoKGlucHV0KSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShJb1JlZ2lzdHJ5LklPX1JFR0lTVFJZLCBUb3lJb1JlZ2lzdHJ5LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGZpbmFsIEdyYXBoU09OUmVjb3JkV3JpdGVyIHdyaXRlciA9IG5ldyBHcmFwaFNPTlJlY29yZFdyaXRlcihuZXcgRGF0YU91dHB1dFN0cmVhbShuZXcgRmlsZU91dHB1dFN0cmVhbShpbnB1dCkpLCBDb25mVXRpbC5tYWtlSGFkb29wQ29uZmlndXJhdGlvbihncmFwaC5jb25maWd1cmF0aW9uKCkpKTsKKyAgICAgICAgdmFsaWRhdGVJb1JlZ2lzdHJ5R3JhcGgoZ3JhcGgsIGdyYXBoQ29tcHV0ZXJDbGFzcywgd3JpdGVyKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpbnB1dC5kZWxldGUoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHZhbGlkYXRlSW9SZWdpc3RyeUdyYXBoKGZpbmFsIEhhZG9vcEdyYXBoIGdyYXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gZ3JhcGhDb21wdXRlckNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZWNvcmRXcml0ZXI8TnVsbFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZT4gd3JpdGVyKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNQkVSX09GX1ZFUlRJQ0VTOyBpKyspIHsKKyAgICAgICAgICAgIGZpbmFsIFN0YXJHcmFwaCBzdGFyR3JhcGggPSBTdGFyR3JhcGgub3BlbigpOworICAgICAgICAgICAgVmVydGV4IHZlcnRleCA9IHN0YXJHcmFwaC5hZGRWZXJ0ZXgoVC5sYWJlbCwgInBsYWNlIiwgVC5pZCwgaSwgInBvaW50IiwgbmV3IFRveVBvaW50KGksIGkgKiAxMCksICJtZXNzYWdlIiwgIkknbSAiICsgaSwgInRyaWFuZ2xlIiwgbmV3IFRveVRyaWFuZ2xlKGksIGkgKiAxMCwgaSAqIDEwMCkpOworICAgICAgICAgICAgdmVydGV4LmFkZEVkZ2UoImNvbm5lY3Rpb24iLCBzdGFyR3JhcGguYWRkVmVydGV4KFQuaWQsIGkgPiAwID8gaSAtIDEgOiBOVU1CRVJfT0ZfVkVSVElDRVMgLSAxKSk7CisgICAgICAgICAgICB3cml0ZXIud3JpdGUoTnVsbFdyaXRhYmxlLmdldCgpLCBuZXcgVmVydGV4V3JpdGFibGUoc3RhckdyYXBoLmdldFN0YXJWZXJ0ZXgoKSkpOworICAgICAgICB9CisgICAgICAgIHdyaXRlci5jbG9zZShuZXcgVGFza0F0dGVtcHRDb250ZXh0SW1wbChDb25mVXRpbC5tYWtlSGFkb29wQ29uZmlndXJhdGlvbihncmFwaC5jb25maWd1cmF0aW9uKCkpLCBuZXcgVGFza0F0dGVtcHRJRCgpKSk7CisKKyAgICAgICAgLy8gT0xBUCBURVNUSU5HIC8vCisgICAgICAgIHZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKGdyYXBoQ29tcHV0ZXJDbGFzcykuVigpLnByb2plY3QoInBvaW50IiwgInRyaWFuZ2xlIikuYnkoInBvaW50IikuYnkoInRyaWFuZ2xlIikudG9MaXN0KCkpOworICAgICAgICB2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihncmFwaENvbXB1dGVyQ2xhc3MpLlYoKS5vdXQoKS5wcm9qZWN0KCJwb2ludCIsICJ0cmlhbmdsZSIpLmJ5KCJwb2ludCIpLmJ5KCJ0cmlhbmdsZSIpLnRvTGlzdCgpKTsKKyAgICAgICAgdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoZ3JhcGhDb21wdXRlckNsYXNzKS5WKCkub3V0KCkub3V0KCkucHJvamVjdCgicG9pbnQiLCAidHJpYW5nbGUiKS5ieSgicG9pbnQiKS5ieSgidHJpYW5nbGUiKS50b0xpc3QoKSk7CisgICAgICAgIC8vIE9MVFAgVEVTVElORyAvLworICAgICAgICB2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKGdyYXBoLnRyYXZlcnNhbCgpLlYoKS5wcm9qZWN0KCJwb2ludCIsICJ0cmlhbmdsZSIpLmJ5KCJwb2ludCIpLmJ5KCJ0cmlhbmdsZSIpLnRvTGlzdCgpKTsKKyAgICAgICAgLy8gSERGUyBURVNUSU5HIC8vCisgICAgICAgIC8qdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhJdGVyYXRvclV0aWxzLjxNYXA8U3RyaW5nLCBPYmplY3Q+PmFzTGlzdChJdGVyYXRvclV0aWxzLjxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE9iamVjdD4+bWFwKEZpbGVTeXN0ZW1TdG9yYWdlLm9wZW4oQ29uZlV0aWwubWFrZUhhZG9vcENvbmZpZ3VyYXRpb24oZ3JhcGguY29uZmlndXJhdGlvbigpKSkuaGVhZChncmFwaC5jb25maWd1cmF0aW9uKCkuZ2V0SW5wdXRMb2NhdGlvbigpLCBncmFwaC5jb25maWd1cmF0aW9uKCkuZ2V0R3JhcGhSZWFkZXIoKSksCisgICAgICAgICAgICAgICAgdmVydGV4IC0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpIHt7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXQoInBvaW50IiwgdmVydGV4LnZhbHVlKCJwb2ludCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dCgidHJpYW5nbGUiLCB2ZXJ0ZXgudmFsdWUoInRyaWFuZ2xlIikpOworICAgICAgICAgICAgICAgICAgICB9fTsKKyAgICAgICAgICAgICAgICB9KSkpOyovCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoZmluYWwgTGlzdDxNYXA8U3RyaW5nLCBPYmplY3Q+PiB2YWx1ZXMpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKE5VTUJFUl9PRl9WRVJUSUNFUywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNQkVSX09GX1ZFUlRJQ0VTOyBpKyspIHsKKyAgICAgICAgICAgIGFzc2VydFRydWUodmFsdWVzLnN0cmVhbSgpLm1hcChtIC0+IG0uPFRveVBvaW50PmdldCgicG9pbnQiKSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKS5jb250YWlucyhuZXcgVG95UG9pbnQoaSwgaSAqIDEwKSkpOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZSh2YWx1ZXMuc3RyZWFtKCkubWFwKG0gLT4gbS48VG95VHJpYW5nbGU+Z2V0KCJ0cmlhbmdsZSIpKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpLmNvbnRhaW5zKG5ldyBUb3lUcmlhbmdsZShpLCBpICogMTAsIGkgKiAxMDApKSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdFN0b3JhZ2VDaGVjay5qYXZhIGIvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdFN0b3JhZ2VDaGVjay5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBoYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdFN0b3JhZ2VDaGVjay5qYXZhCnJlbmFtZSB0byBzcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL0Fic3RyYWN0U3RvcmFnZUNoZWNrLmphdmEKZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL0ZpbGVTeXN0ZW1TdG9yYWdlQ2hlY2suamF2YSBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vRmlsZVN5c3RlbVN0b3JhZ2VDaGVjay5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBoYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9GaWxlU3lzdGVtU3RvcmFnZUNoZWNrLmphdmEKcmVuYW1lIHRvIHNwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vRmlsZVN5c3RlbVN0b3JhZ2VDaGVjay5qYXZhCmRpZmYgLS1naXQgYS9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL0xvY2FsUHJvcGVydHlUZXN0LmphdmEgYi9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL0xvY2FsUHJvcGVydHlUZXN0LmphdmEKaW5kZXggYTE1MGFiYi4uYzZiNmU4YSAxMDA2NDQKLS0tIGEvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci9Mb2NhbFByb3BlcnR5VGVzdC5qYXZhCisrKyBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3Byb2Nlc3MvY29tcHV0ZXIvTG9jYWxQcm9wZXJ0eVRlc3QuamF2YQpAQCAtODQsNyArODQsMTIgQEAKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04sIHJkZE5hbWUpOwogICAgICAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIG51bGwpOwogICAgICAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04sIG51bGwpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX1NQQVJLX1BFUlNJU1RfQ09OVEVYVCwgZmFsc2UpOworCisgICAgICAgIC8vIGp1c3QgYSBub3RlIHRoYXQgdGhpcyB2YWx1ZSBzaG91bGQgaGF2ZSBhbHdheXMgYmVlbiBzZXQgdG8gdHJ1ZSwgYnV0IGZyb20gdGhlIGluaXRpYWwgY29tbWl0IHdhcyBmYWxzZS4KKyAgICAgICAgLy8gaW50ZXJlc3RpbmdseSB0aGUgbGFzdCBhc3NlcnRpb24gaGFkIGFsd2F5cyBwYXNzZWQgdXAgdG8gc3BhcmsgMi4zLnggd2hlbiBpdCBzdGFydGVkIHRvIGZhaWwuIGFwcGFyZW50bHkKKyAgICAgICAgLy8gdGhhdCBhc3NlcnRpb24gc2hvdWxkIGxpa2VseSBoYXZlIG5ldmVyIHBhc3NlZCwgc28gaXQgc3RhbmRzIHRvIHJlYXNvbiB0aGF0IHRoZXJlIHdhcyBhIGJ1ZyBpbiBzcGFyayBpbgorICAgICAgICAvLyAyLjIueCB0aGF0IHdhcyByZXNvbHZlZCBmb3IgMi4zLnguLi4udGhhdCdzIG15IHN0b3J5IGFuZCBpJ20gc3RpY2tpbmcgdG8gaXQuCisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fU1BBUktfUEVSU0lTVF9DT05URVhULCB0cnVlKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eSgic3Bhcmsuam9iR3JvdXAuaWQiLCAiNDQiKTsKICAgICAgICAgZ3JhcGggPSBHcmFwaEZhY3Rvcnkub3Blbihjb25maWd1cmF0aW9uKTsKICAgICAgICAgZ3JhcGguY29tcHV0ZShTcGFya0dyYXBoQ29tcHV0ZXIuY2xhc3MpCmRpZmYgLS1naXQgYS9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL1NwYXJrSGFkb29wR3JhcGhQcm92aWRlci5qYXZhIGIvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci9TcGFya0hhZG9vcEdyYXBoUHJvdmlkZXIuamF2YQppbmRleCA2NDQ0ODRmLi42YzFlZmIxIDEwMDY0NAotLS0gYS9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL1NwYXJrSGFkb29wR3JhcGhQcm92aWRlci5qYXZhCisrKyBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3Byb2Nlc3MvY29tcHV0ZXIvU3BhcmtIYWRvb3BHcmFwaFByb3ZpZGVyLmphdmEKQEAgLTIwLDE4ICsyMCwzMCBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS5zcGFyay5sYXVuY2hlci5TcGFya0xhdW5jaGVyOwogaW1wb3J0IG9yZy5hcGFjaGUuc3Bhcmsuc2VyaWFsaXplci5LcnlvU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFic3RyYWN0RmlsZUdyYXBoUHJvdmlkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuSGFkb29wR3JhcGhQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wRWRnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wRWxlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BWZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcFZlcnRleFByb3BlcnR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5GaWxlU3lzdGVtU3RvcmFnZUNoZWNrOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5IYWRvb3BQb29sczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05JbnB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvSW5wdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b091dHB1dEZvcm1hdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuQ29tcHV0ZXJHcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvbm5lY3RlZENvbXBvbmVudFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5QYWdlUmFua1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5QZWVyUHJlc3N1cmVUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvZ3JhbVRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TaG9ydGVzdFBhdGhUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3Bhcmsuc3RydWN0dXJlLlNwYXJrOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3Bhcmsuc3RydWN0dXJlLmlvLlBlcnNpc3RlZE91dHB1dFJERDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJrLnN0cnVjdHVyZS5pby5TcGFya0NvbnRleHRTdG9yYWdlQ2hlY2s7CkBAIC00MCwxOSArNTIsNTEgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLktyeW9TaGltU2VydmljZUxvYWRlcjsKIAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KIEBHcmFwaFByb3ZpZGVyLkRlc2NyaXB0b3IoY29tcHV0ZXIgPSBTcGFya0dyYXBoQ29tcHV0ZXIuY2xhc3MpCi1wdWJsaWMgY2xhc3MgU3BhcmtIYWRvb3BHcmFwaFByb3ZpZGVyIGV4dGVuZHMgSGFkb29wR3JhcGhQcm92aWRlciB7CitwdWJsaWMgY2xhc3MgU3BhcmtIYWRvb3BHcmFwaFByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RGaWxlR3JhcGhQcm92aWRlciB7CiAKLSAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVWSU9VU19TUEFSS19QUk9WSURFUiA9ICJwcmV2aW91cy5zcGFyay5wcm92aWRlciI7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVWSU9VU19TUEFSS19QUk9WSURFUiA9ICJwcmV2aW91cy5zcGFyay5wcm92aWRlciI7CiAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgQVZBSUxBQkxFX1BST0NFU1NPUlMgPSBSdW50aW1lLmdldFJ1bnRpbWUoKS5hdmFpbGFibGVQcm9jZXNzb3JzKCk7CiAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNldDxDbGFzcz4gSU1QTEVNRU5UQVRJT04gPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVTZXQobmV3IEhhc2hTZXQ8Q2xhc3M+KCkge3sKKyAgICAgICAgYWRkKEhhZG9vcEVkZ2UuY2xhc3MpOworICAgICAgICBhZGQoSGFkb29wRWxlbWVudC5jbGFzcyk7CisgICAgICAgIGFkZChIYWRvb3BHcmFwaC5jbGFzcyk7CisgICAgICAgIGFkZChIYWRvb3BQcm9wZXJ0eS5jbGFzcyk7CisgICAgICAgIGFkZChIYWRvb3BWZXJ0ZXguY2xhc3MpOworICAgICAgICBhZGQoSGFkb29wVmVydGV4UHJvcGVydHkuY2xhc3MpOworICAgICAgICBhZGQoQ29tcHV0ZXJHcmFwaC5jbGFzcyk7CisgICAgICAgIGFkZChDb21wdXRlckdyYXBoLkNvbXB1dGVyRWxlbWVudC5jbGFzcyk7CisgICAgICAgIGFkZChDb21wdXRlckdyYXBoLkNvbXB1dGVyVmVydGV4LmNsYXNzKTsKKyAgICAgICAgYWRkKENvbXB1dGVyR3JhcGguQ29tcHV0ZXJFZGdlLmNsYXNzKTsKKyAgICAgICAgYWRkKENvbXB1dGVyR3JhcGguQ29tcHV0ZXJWZXJ0ZXhQcm9wZXJ0eS5jbGFzcyk7CisgICAgICAgIGFkZChDb21wdXRlckdyYXBoLkNvbXB1dGVyQWRqYWNlbnRWZXJ0ZXguY2xhc3MpOworICAgICAgICBhZGQoQ29tcHV0ZXJHcmFwaC5Db21wdXRlclByb3BlcnR5LmNsYXNzKTsKKyAgICB9fSk7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBsb2FkR3JhcGhEYXRhKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBMb2FkR3JhcGhXaXRoIGxvYWRHcmFwaFdpdGgsIGZpbmFsIENsYXNzIHRlc3RDbGFzcywgZmluYWwgU3RyaW5nIHRlc3ROYW1lKSB7CisgICAgICAgIGlmIChsb2FkR3JhcGhXaXRoICE9IG51bGwpICgoSGFkb29wR3JhcGgpIGdyYXBoKS5jb25maWd1cmF0aW9uKCkuc2V0SW5wdXRMb2NhdGlvbihnZXRJbnB1dExvY2F0aW9uKGdyYXBoLCBsb2FkR3JhcGhXaXRoLnZhbHVlKCkpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PENsYXNzPiBnZXRJbXBsZW1lbnRhdGlvbnMoKSB7CisgICAgICAgIHJldHVybiBJTVBMRU1FTlRBVElPTjsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgTWFwPFN0cmluZywgT2JqZWN0PiBnZXRCYXNlQ29uZmlndXJhdGlvbihmaW5hbCBTdHJpbmcgZ3JhcGhOYW1lLCBmaW5hbCBDbGFzczw/PiB0ZXN0LCBmaW5hbCBTdHJpbmcgdGVzdE1ldGhvZE5hbWUsIGZpbmFsIExvYWRHcmFwaFdpdGguR3JhcGhEYXRhIGxvYWRHcmFwaFdpdGgpIHsKKyAgICAgICAgdGhpcy5ncmFwaFNPTklucHV0ID0gUkFORE9NLm5leHRCb29sZWFuKCk7CiAgICAgICAgIGlmICh0aGlzLmdldENsYXNzKCkuZXF1YWxzKFNwYXJrSGFkb29wR3JhcGhQcm92aWRlci5jbGFzcykgJiYgIVNwYXJrSGFkb29wR3JhcGhQcm92aWRlci5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkuZXF1YWxzKFN5c3RlbS5nZXRQcm9wZXJ0eShQUkVWSU9VU19TUEFSS19QUk9WSURFUiwgbnVsbCkpKSB7CiAgICAgICAgICAgICBTcGFyay5jbG9zZSgpOwogICAgICAgICAgICAgSGFkb29wUG9vbHMuY2xvc2UoKTsKQEAgLTYwLDEzICsxMDQsMjIgQEAKICAgICAgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eShQUkVWSU9VU19TUEFSS19QUk9WSURFUiwgU3BhcmtIYWRvb3BHcmFwaFByb3ZpZGVyLmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGNvbmZpZyA9IHN1cGVyLmdldEJhc2VDb25maWd1cmF0aW9uKGdyYXBoTmFtZSwgdGVzdCwgdGVzdE1ldGhvZE5hbWUsIGxvYWRHcmFwaFdpdGgpOwotICAgICAgICBjb25maWcucHV0KENvbnN0YW50cy5HUkVNTElOX1NQQVJLX1BFUlNJU1RfQ09OVEVYVCwgdHJ1ZSk7ICAvLyB0aGlzIG1ha2VzIHRoZSB0ZXN0IHN1aXRlIGdvIHJlYWxseSBmYXN0CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBjb25maWcgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKSB7eworICAgICAgICAgICAgcHV0KEdyYXBoLkdSQVBILCBIYWRvb3BHcmFwaC5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICAgICAgcHV0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIGdyYXBoU09OSW5wdXQgPyBHcmFwaFNPTklucHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSA6IEdyeW9JbnB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICAgICAgcHV0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIEdyeW9PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIHB1dChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfT1VUUFVUX0xPQ0FUSU9OLCBnZXRXb3JraW5nRGlyZWN0b3J5KCkpOworICAgICAgICAgICAgcHV0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9KQVJTX0lOX0RJU1RSSUJVVEVEX0NBQ0hFLCBmYWxzZSk7CisKKyAgICAgICAgICAgIHB1dChDb25zdGFudHMuR1JFTUxJTl9TUEFSS19QRVJTSVNUX0NPTlRFWFQsIHRydWUpOyAgLy8gdGhpcyBtYWtlcyB0aGUgdGVzdCBzdWl0ZSBnbyByZWFsbHkgZmFzdAorICAgICAgICB9fTsKIAogICAgICAgICAvLyB0b3kgZ3JhcGggaW5wdXRSREQgZG9lcyBub3QgaGF2ZSBjb3JyZXNwb25kaW5nIG91dHB1dFJERCBzbyB3aGVyZSBqb2JzIGNoYWluLCBpdCBmYWlscyAoZmFpbGluZyBtYWtlcyBzZW5zZSkKICAgICAgICAgaWYgKG51bGwgIT0gbG9hZEdyYXBoV2l0aCAmJgogICAgICAgICAgICAgICAgICF0ZXN0LmVxdWFscyhQcm9ncmFtVGVzdC5UcmF2ZXJzYWxzLmNsYXNzKSAmJgogICAgICAgICAgICAgICAgICF0ZXN0LmVxdWFscyhQYWdlUmFua1Rlc3QuVHJhdmVyc2Fscy5jbGFzcykgJiYKKyAgICAgICAgICAgICAgICAhdGVzdC5lcXVhbHMoQ29ubmVjdGVkQ29tcG9uZW50VGVzdC5UcmF2ZXJzYWxzLmNsYXNzKSAmJgorICAgICAgICAgICAgICAgICF0ZXN0LmVxdWFscyhTaG9ydGVzdFBhdGhUZXN0LlRyYXZlcnNhbHMuY2xhc3MpICYmCiAgICAgICAgICAgICAgICAgIXRlc3QuZXF1YWxzKFBlZXJQcmVzc3VyZVRlc3QuVHJhdmVyc2Fscy5jbGFzcykgJiYKICAgICAgICAgICAgICAgICAhdGVzdC5lcXVhbHMoRmlsZVN5c3RlbVN0b3JhZ2VDaGVjay5jbGFzcykgJiYKICAgICAgICAgICAgICAgICAhdGVzdE1ldGhvZE5hbWUuZXF1YWxzKCJzaG91bGRTdXBwb3J0Sm9iQ2hhaW5pbmciKSAmJiAgLy8gR3JhcGhDb21wdXRlclRlc3Quc2hvdWxkU3VwcG9ydEpvYkNoYWluaW5nCmRpZmYgLS1naXQgYS9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay91dGlsL1N1Z2FyVGVzdEhlbHBlci5qYXZhIGIvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvdXRpbC9TdWdhclRlc3RIZWxwZXIuamF2YQppbmRleCA4ZDdhOTc1Li5hYzE0ZmMwIDEwMDY0NAotLS0gYS9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay91dGlsL1N1Z2FyVGVzdEhlbHBlci5qYXZhCisrKyBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3V0aWwvU3VnYXJUZXN0SGVscGVyLmphdmEKQEAgLTE5LDcgKzE5LDYgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay51dGlsOwogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkudXRpbC5NZXRhUmVnaXN0cnlVdGlsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLkhhZG9vcEdyYXBoUHJvdmlkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguRGVmYXVsdEdyYXBoVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOwpAQCAtMjgsNiArMjcsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX09fVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLk9fVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcmsucHJvY2Vzcy5jb21wdXRlci5TcGFya0hhZG9vcEdyYXBoUHJvdmlkZXI7CiAKIGltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwpAQCAtNTMsNyArNTMsNyBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjbGVhclJlZ2lzdHJ5KCkgewogICAgICAgICBmaW5hbCBTZXQ8Q2xhc3M+IGltcGxlbWVudGF0aW9uc1RvQ2xlYXIgPSBuZXcgSGFzaFNldDw+KENPUkVfSU1QTEVNRU5UQVRJT05TKTsKLSAgICAgICAgaW1wbGVtZW50YXRpb25zVG9DbGVhci5hZGRBbGwoSGFkb29wR3JhcGhQcm92aWRlci5JTVBMRU1FTlRBVElPTik7CisgICAgICAgIGltcGxlbWVudGF0aW9uc1RvQ2xlYXIuYWRkQWxsKFNwYXJrSGFkb29wR3JhcGhQcm92aWRlci5JTVBMRU1FTlRBVElPTik7CiAKICAgICAgICAgTWV0YVJlZ2lzdHJ5VXRpbC5jbGVhclJlZ2lzdHJ5KGltcGxlbWVudGF0aW9uc1RvQ2xlYXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3BvbS54bWwgYi9zcGFycWwtZ3JlbWxpbi9wb20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZmU0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9wb20ueG1sCkBAIC0wLDAgKzEsNDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgorICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKyAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9tYXZlbi00LjAuMC54c2QiPgorICAgIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KKyAgICA8cGFyZW50PgorICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+CisgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICA8L3BhcmVudD4KKyAgICA8YXJ0aWZhY3RJZD5zcGFycWwtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KKyAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IFNQQVJRTCBHcmVtbGluPC9uYW1lPgorCisgICAgPGRlcGVuZGVuY2llcz4KKyAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmplbmE8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5hcGFjaGUtamVuYS1saWJzPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgorICAgICAgICAgICAgPHZlcnNpb24+My4xMi4wPC92ZXJzaW9uPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWNvcmU8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuc2xmNGo8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1sb2c0ajEyPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJncmFwaC1ncmVtbGluPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPm9yZy5oYW1jcmVzdDwvZ3JvdXBJZD4KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmhhbWNyZXN0LWFsbDwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgIDwvZGVwZW5kZW5jaWVzPgorPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvUHJlZml4ZXMuamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvUHJlZml4ZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjU0NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9QcmVmaXhlcy5qYXZhCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIEhlbHBlciBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggcHJlZml4IGxpbmVzIGluIFNQQVJRTCBxdWVyaWVzLgorICovCitjbGFzcyBQcmVmaXhlcyB7CisKKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIEJBU0VfVVJJID0gImh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy90cmF2ZXJzYWwvIjsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIExpc3Q8U3RyaW5nPiBQUkVGSVhFUyA9IEFycmF5cy5hc0xpc3QoImVkZ2UiLCAicHJvcGVydHkiLCAidmFsdWUiKTsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBQUkVGSVhfREVGSU5JVElPTlM7CisKKyAgICBzdGF0aWMgeworICAgICAgICBmaW5hbCBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBwcmVmaXggOiBQUkVGSVhFUykgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlBSRUZJWCAiKS5hcHBlbmQocHJlZml4LCAwLCAxKS5hcHBlbmQoIjogPCIpLmFwcGVuZChnZXRVUkkocHJlZml4KSkuCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgiPiIpLmFwcGVuZChTeXN0ZW0ubGluZVNlcGFyYXRvcigpKTsKKyAgICAgICAgfQorICAgICAgICBQUkVGSVhfREVGSU5JVElPTlMgPSBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBnZXRVUkkoZmluYWwgU3RyaW5nIHByZWZpeCkgeworICAgICAgICByZXR1cm4gQkFTRV9VUkkgKyBwcmVmaXggKyAiIyI7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBnZXRVUklWYWx1ZShmaW5hbCBTdHJpbmcgdXJpKSB7CisgICAgICAgIHJldHVybiB1cmkuc3Vic3RyaW5nKHVyaS5pbmRleE9mKCIjIikgKyAxKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RyaW5nIGdldFByZWZpeChmaW5hbCBTdHJpbmcgdXJpKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyB0bXAgPSB1cmkuc3Vic3RyaW5nKDAsIHVyaS5pbmRleE9mKCIjIikpOworICAgICAgICByZXR1cm4gdG1wLnN1YnN0cmluZyh0bXAubGFzdEluZGV4T2YoIi8iKSArIDEpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgcHJlcGVuZChmaW5hbCBTdHJpbmcgc2NyaXB0KSB7CisgICAgICAgIHJldHVybiBQUkVGSVhfREVGSU5JVElPTlMgKyBzY3JpcHQ7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZ0J1aWxkZXIgcHJlcGVuZChmaW5hbCBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXIpIHsKKyAgICAgICAgcmV0dXJuIHNjcmlwdEJ1aWxkZXIuaW5zZXJ0KDAsIFBSRUZJWF9ERUZJTklUSU9OUyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9TcGFycWxUb0dyZW1saW5Db21waWxlci5qYXZhIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9TcGFycWxUb0dyZW1saW5Db21waWxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYmIxNzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1NwYXJxbFRvR3JlbWxpbkNvbXBpbGVyLmphdmEKQEAgLTAsMCArMSwzMTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5xdWVyeS5RdWVyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEucXVlcnkuUXVlcnlGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5xdWVyeS5Tb3J0Q29uZGl0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5xdWVyeS5TeW50YXg7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5hbGdlYnJhLkFsZ2VicmE7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5hbGdlYnJhLk9wOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5PcFZpc2l0b3JCYXNlOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5PcFdhbGtlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmFsZ2VicmEub3AuT3BCR1A7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5hbGdlYnJhLm9wLk9wRmlsdGVyOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5vcC5PcExlZnRKb2luOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5vcC5PcFVuaW9uOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuY29yZS5WYXI7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5jb3JlLlZhckV4cHJMaXN0OworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FeHByOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FeHByQWdncmVnYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9yZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworCisvKioKKyAqIFRoZSBlbmdpbmUgdGhhdCBjb21waWxlcyBTUEFSUUwgdG8gR3JlbWxpbiB0cmF2ZXJzYWxzIHRodXMgZW5hYmxpbmcgU1BBUlFMIHRvIGJlIGV4ZWN1dGVkIG9uIGFueSBUaW5rZXJQb3AtZW5hYmxlZAorICogZ3JhcGggc3lzdGVtLgorICovCitwdWJsaWMgY2xhc3MgU3BhcnFsVG9HcmVtbGluQ29tcGlsZXIgeworCisgICAgcHJpdmF0ZSBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHRyYXZlcnNhbDsKKworICAgIHByaXZhdGUgTGlzdDxUcmF2ZXJzYWw+IHRyYXZlcnNhbExpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgICAgIExpc3Q8VHJhdmVyc2FsPiBvcHRpb25hbFRyYXZlcnNhbHMgPSBuZXcgQXJyYXlMaXN0PFRyYXZlcnNhbD4oKTsKKyAgICAgICAgICAgIExpc3Q8U3RyaW5nPiBvcHRpb25hbFZhcmlhYmxlID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgICAgICAgICBib29sZWFuIG9wdGlvbmFsRmxhZyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBTcGFycWxUb0dyZW1saW5Db21waWxlcihmaW5hbCBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHRyYXZlcnNhbCkgeworICAgICAgICB0aGlzLnRyYXZlcnNhbCA9IHRyYXZlcnNhbDsKKyAgICB9CisKKyAgICBwcml2YXRlIFNwYXJxbFRvR3JlbWxpbkNvbXBpbGVyKGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcpIHsKKyAgICAgICAgdGhpcyhnLlYoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgU1BBUlFMIHRvIGEgR3JlbWxpbiB0cmF2ZXJzYWwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZ3JhcGggICAgICAgdGhlIHtAbGluayBHcmFwaH0gaW5zdGFuY2UgdG8gZXhlY3V0ZSB0aGUgdHJhdmVyc2FsIGZyb20KKyAgICAgKiBAcGFyYW0gc3BhcnFsUXVlcnkgdGhlIHF1ZXJ5IHRvIGNvbXBpbGUgdG8gR3JlbWxpbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCA/PiBjb21waWxlKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBTdHJpbmcgc3BhcnFsUXVlcnkpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGUoZ3JhcGgudHJhdmVyc2FsKCksIHNwYXJxbFF1ZXJ5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyBTUEFSUUwgdG8gYSBHcmVtbGluIHRyYXZlcnNhbC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBnICAgICAgICAgICB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlfSBpbnN0YW5jZSB0byBleGVjdXRlIHRoZSB0cmF2ZXJzYWwgZnJvbQorICAgICAqIEBwYXJhbSBzcGFycWxRdWVyeSB0aGUgcXVlcnkgdG8gY29tcGlsZSB0byBHcmVtbGluCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsID8+IGNvbXBpbGUoZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZywgZmluYWwgU3RyaW5nIHNwYXJxbFF1ZXJ5KSB7CisgICAgICAgIHJldHVybiBjb21waWxlKGcsIFF1ZXJ5RmFjdG9yeS5jcmVhdGUoUHJlZml4ZXMucHJlcGVuZChzcGFycWxRdWVyeSksIFN5bnRheC5zeW50YXhTUEFSUUwpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgPz4gY29tcGlsZShmaW5hbCBRdWVyeSBxdWVyeSkgeworICAgICAgICBmaW5hbCBPcCBvcCA9IEFsZ2VicmEuY29tcGlsZShxdWVyeSk7CisgICAgICAgIE9wV2Fsa2VyLndhbGsob3AsIG5ldyBHcmVtbGluT3BWaXNpdG9yKCkpOworCisgICAgICAgIGludCB0cmF2ZXJzYWxJbmRleCA9IDA7CisgICAgICAgIGZpbmFsIGludCBudW1iZXJPZlRyYXZlcnNhbCA9IHRyYXZlcnNhbExpc3Quc2l6ZSgpOworICAgICAgICBmaW5hbCBpbnQgbnVtYmVyT2ZPcHRpb25hbFRyYXZlcnNhbCA9IG9wdGlvbmFsVHJhdmVyc2Fscy5zaXplKCk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbFtdIGFycmF5T2ZBbGxUcmF2ZXJzYWxzID0gKG51bWJlck9mT3B0aW9uYWxUcmF2ZXJzYWwgPiAwKSA/CisgICAgICAgICAgICBuZXcgVHJhdmVyc2FsW251bWJlck9mVHJhdmVyc2FsIC0gbnVtYmVyT2ZPcHRpb25hbFRyYXZlcnNhbCArIDFdIDoKKyAgICAgICAgICAgIG5ldyBUcmF2ZXJzYWxbbnVtYmVyT2ZUcmF2ZXJzYWwgLSBudW1iZXJPZk9wdGlvbmFsVHJhdmVyc2FsXTsKKworICAgICAgICBmaW5hbCBUcmF2ZXJzYWxbXSBhcnJheU9mT3B0aW9uYWxUcmF2ZXJzYWxzID0gbmV3IFRyYXZlcnNhbFtudW1iZXJPZk9wdGlvbmFsVHJhdmVyc2FsXTsKKworICAgICAgICBmb3IgKFRyYXZlcnNhbCB0ZW1wVHJhdiA6IHRyYXZlcnNhbExpc3QpIHsKKyAgICAgICAgICAgIGFycmF5T2ZBbGxUcmF2ZXJzYWxzW3RyYXZlcnNhbEluZGV4KytdID0gdGVtcFRyYXY7CisgICAgICAgIH0KKworICAgICAgICB0cmF2ZXJzYWxJbmRleCA9IDA7CisgICAgICAgIGZvciAoVHJhdmVyc2FsIHRlbXBUcmF2IDogb3B0aW9uYWxUcmF2ZXJzYWxzKSAKKyAgICAgICAgICAgIGFycmF5T2ZPcHRpb25hbFRyYXZlcnNhbHNbdHJhdmVyc2FsSW5kZXgrK10gPSB0ZW1wVHJhdjsKKyAKKyAgICAgICAgIC8vIGNyZWF0ZXMgYSBtYXAgb2Ygb3JkZXJpbmcga2V5cyBhbmQgdGhlaXIgb3JkZXJpbmcgZGlyZWN0aW9uCisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9yZGVyPiBvcmRlcmluZ0luZGV4ID0gY3JlYXRlT3JkZXJJbmRleEZyb21RdWVyeShxdWVyeSk7CisKKyAgICAgICAgaWYgKHRyYXZlcnNhbExpc3Quc2l6ZSgpID4gMCkKKyAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5tYXRjaChhcnJheU9mQWxsVHJhdmVyc2Fscyk7CisKKyAgICAgICAgaWYgKG9wdGlvbmFsVHJhdmVyc2Fscy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuY29hbGVzY2UoX18ubWF0Y2goYXJyYXlPZk9wdGlvbmFsVHJhdmVyc2FscyksIChUcmF2ZXJzYWwpIF9fLmNvbnN0YW50KCJOL0EiKSk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wdGlvbmFsVmFyaWFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuYXMob3B0aW9uYWxWYXJpYWJsZS5nZXQoaSkuc3Vic3RyaW5nKDEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiB2YXJzID0gcXVlcnkuZ2V0UmVzdWx0VmFycygpOworICAgICAgICBpZiAoIXF1ZXJ5LmlzUXVlcnlSZXN1bHRTdGFyKCkgJiYgIXF1ZXJ5Lmhhc0dyb3VwQnkoKSkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nW10gYWxsID0gbmV3IFN0cmluZ1t2YXJzLnNpemUoKV07CisgICAgICAgICAgICB2YXJzLnRvQXJyYXkoYWxsKTsKKyAgICAgICAgICAgIGlmIChxdWVyeS5pc0Rpc3RpbmN0KCkpIHsKKyAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuZGVkdXAoYWxsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gYXBwbHkgb3JkZXJpbmcgZnJvbSBPUkRFUiBCWQorICAgICAgICAgICAgb3JkZXJpbmdJbmRleC5mb3JFYWNoKChrLCB2KSAtPiB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwub3JkZXIoKS5ieShfXy5zZWxlY3QoayksIHYpKTsKKworICAgICAgICAgICAgLy8gdGhlIHJlc3VsdCBzaXplcyBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgdG8gZ2V0IHRoZSByaWdodCBzaWduYXR1cmVzIG9mIHNlbGVjdCgpIGNhbGxlZC4KKyAgICAgICAgICAgIHN3aXRjaCAoYWxsLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLnNlbGVjdChhbGxbMF0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5zZWxlY3QoYWxsWzBdLCBhbGxbMV0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXSBvdGhlcnMgPSBBcnJheXMuY29weU9mUmFuZ2UoYWxsLCAyLCB2YXJzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5zZWxlY3QoYWxsWzBdLCBhbGxbMV0sIG90aGVycyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHF1ZXJ5Lmhhc0dyb3VwQnkoKSkgeworICAgICAgICAgICAgZmluYWwgVmFyRXhwckxpc3QgbHN0RXhwciA9IHF1ZXJ5LmdldEdyb3VwQnkoKTsKKyAgICAgICAgICAgIFN0cmluZyBncnBWYXIgPSAiIjsKKyAgICAgICAgICAgIGZvciAoVmFyIGV4cHIgOiBsc3RFeHByLmdldFZhcnMoKSkgeworICAgICAgICAgICAgICAgIGdycFZhciA9IGV4cHIuZ2V0TmFtZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdycFZhci5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLnNlbGVjdChncnBWYXIpOworICAgICAgICAgICAgaWYgKHF1ZXJ5Lmhhc0FnZ3JlZ2F0b3JzKCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PEV4cHJBZ2dyZWdhdG9yPiBleHByQWdnID0gcXVlcnkuZ2V0QWdncmVnYXRvcnMoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEV4cHJBZ2dyZWdhdG9yIGV4cHIgOiBleHByQWdnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChleHByLmdldEFnZ3JlZ2F0b3IoKS5nZXROYW1lKCkuY29udGFpbnMoIkNPVU5UIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnkudG9TdHJpbmcoKS5jb250YWlucygiR1JPVVAiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByLmdldEFnZ3JlZ2F0b3IoKS50b1N0cmluZygpLmNvbnRhaW5zKCJESVNUSU5DVCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuZGVkdXAoZXhwci5nZXRBZ2dyZWdhdG9yKCkuZ2V0RXhwckxpc3QoKS5nZXQoMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLnNlbGVjdChleHByLmdldEFnZ3JlZ2F0b3IoKS5nZXRFeHByTGlzdCgpLmdldCgwKS50b1N0cmluZygpLnN1YnN0cmluZygxKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuY291bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmdyb3VwQ291bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoZXhwci5nZXRBZ2dyZWdhdG9yKCkuZ2V0TmFtZSgpLmNvbnRhaW5zKCJNQVgiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLm1heCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuZ3JvdXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChxdWVyeS5oYXNPcmRlckJ5KCkgJiYgcXVlcnkuaGFzR3JvdXBCeSgpKQorICAgICAgICAgICAgb3JkZXJpbmdJbmRleC5mb3JFYWNoKChrLCB2KSAtPiB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwub3JkZXIoKS5ieShfXy5zZWxlY3QoayksIHYpKTsKKworICAgICAgICBpZiAocXVlcnkuaGFzTGltaXQoKSkgeworICAgICAgICAgICAgbG9uZyBsaW1pdCA9IHF1ZXJ5LmdldExpbWl0KCksIG9mZnNldCA9IDA7CisKKyAgICAgICAgICAgIGlmIChxdWVyeS5oYXNPZmZzZXQoKSkKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBxdWVyeS5nZXRPZmZzZXQoKTsKKworICAgICAgICAgICAgaWYgKHF1ZXJ5Lmhhc0dyb3VwQnkoKSAmJiBxdWVyeS5oYXNPcmRlckJ5KCkpCisgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLnJhbmdlKFNjb3BlLmxvY2FsLCBvZmZzZXQsIG9mZnNldCArIGxpbWl0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwucmFuZ2Uob2Zmc2V0LCBvZmZzZXQgKyBsaW1pdCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJhdmVyc2FsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEV4dHJhY3RzIGFueSB7QGNvZGUgU29ydENvbmRpdGlvbn0gaW5zdGFuY2VzIGZyb20gdGhlIFNQQVJRTCBxdWVyeSBhbmQgaG9sZHMgdGhlbSBpbiBhbiBpbmRleCBvZiB0aGVpciBrZXlzCisgICAgICogd2hlcmUgdGhlIHZhbHVlIGlzIHRoYXQga2V5cyBzb3J0aW5nIGRpcmVjdGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBNYXA8U3RyaW5nLCBPcmRlcj4gY3JlYXRlT3JkZXJJbmRleEZyb21RdWVyeShmaW5hbCBRdWVyeSBxdWVyeSkgeworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPcmRlcj4gb3JkZXJpbmdJbmRleCA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgaWYgKHF1ZXJ5Lmhhc09yZGVyQnkoKSkgeworICAgICAgICAgICAgZmluYWwgTGlzdDxTb3J0Q29uZGl0aW9uPiBzb3J0aW5nQ29uZGl0aW9ucyA9IHF1ZXJ5LmdldE9yZGVyQnkoKTsKKworICAgICAgICAgICAgZm9yIChTb3J0Q29uZGl0aW9uIHNvcnRDb25kaXRpb24gOiBzb3J0aW5nQ29uZGl0aW9ucykgeworICAgICAgICAgICAgICAgIGZpbmFsIEV4cHIgZXhwciA9IHNvcnRDb25kaXRpb24uZ2V0RXhwcmVzc2lvbigpOworCisgICAgICAgICAgICAgICAgLy8gYnkgZGVmYXVsdCwgdGhlIHNvcnQgd2lsbCBiZSBhc2NlbmRpbmcuIGdldERpcmVjdGlvbigpIHJldHVybnMgLTIgaWYgdGhlIERFU0MvQVNDIGlzbid0CisgICAgICAgICAgICAgICAgLy8gc3VwcGxpZWQgLSB3ZWlyZAorICAgICAgICAgICAgICAgIG9yZGVyaW5nSW5kZXgucHV0KGV4cHIuZ2V0VmFyTmFtZSgpLCBzb3J0Q29uZGl0aW9uLmdldERpcmVjdGlvbigpID09IC0xID8gT3JkZXIuZGVjciA6IE9yZGVyLmluY3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG9yZGVyaW5nSW5kZXg7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCA/PiBjb21waWxlKGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcsIGZpbmFsIFF1ZXJ5IHF1ZXJ5KSB7CisgICAgICAgIHJldHVybiBuZXcgU3BhcnFsVG9HcmVtbGluQ29tcGlsZXIoZykuY29tcGlsZShxdWVyeSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQW4ge0Bjb2RlIE9wVmlzaXRvcn0gaW1wbGVtZW50YXRpb24gdGhhdCByZWFkcyBTUEFSUUwgYWxnZWJyYSBvcGVyYXRpb25zIGludG8gR3JlbWxpbiB0cmF2ZXJzYWxzLgorICAgICAqLworICAgIHByaXZhdGUgY2xhc3MgR3JlbWxpbk9wVmlzaXRvciBleHRlbmRzIE9wVmlzaXRvckJhc2UgeworCisgICAgICAgIC8qKgorICAgICAgICAgKiBWaXNpdGluZyB0cmlwbGUgcGF0dGVybnMgaW4gU1BBUlFMIGFsZ2VicmEuCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgdmlzaXQoZmluYWwgT3BCR1Agb3BCR1ApIHsKKyAgICAgICAgaWYob3B0aW9uYWxGbGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG9wQkdQLmdldFBhdHRlcm4oKS5nZXRMaXN0KCkuZm9yRWFjaCh0cmlwbGUgLT4gb3B0aW9uYWxUcmF2ZXJzYWxzLmFkZChUcmF2ZXJzYWxCdWlsZGVyLnRyYW5zZm9ybSh0cmlwbGUpKSk7CisgICAgICAgICAgICAgICAgb3BCR1AuZ2V0UGF0dGVybigpLmdldExpc3QoKS5mb3JFYWNoKHRyaXBsZSAtPiBvcHRpb25hbFZhcmlhYmxlLmFkZCh0cmlwbGUuZ2V0T2JqZWN0KCkudG9TdHJpbmcoKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAgICAgICAgCisgICAgICAgICAgICAgICAgb3BCR1AuZ2V0UGF0dGVybigpLmdldExpc3QoKS5mb3JFYWNoKHRyaXBsZSAtPiB0cmF2ZXJzYWxMaXN0LmFkZChUcmF2ZXJzYWxCdWlsZGVyLnRyYW5zZm9ybSh0cmlwbGUpKSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVmlzaXRpbmcgZmlsdGVycyBpbiBTUEFSUUwgYWxnZWJyYS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCB2aXNpdChmaW5hbCBPcEZpbHRlciBvcEZpbHRlcikgeworICAgICAgICAgICAgVHJhdmVyc2FsIHRyYXZlcnNhbDsKKyAgICAgICAgICAgIGZvciAoRXhwciBleHByIDogb3BGaWx0ZXIuZ2V0RXhwcnMoKS5nZXRMaXN0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IF9fLndoZXJlKFdoZXJlVHJhdmVyc2FsQnVpbGRlci50cmFuc2Zvcm0oZXhwcikpOworICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxMaXN0LmFkZCh0cmF2ZXJzYWwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogVmlzaXRpbmcgTGVmdEpvaW4oT3B0aW9uYWwpIGluIFNQQVJRTCBhbGdlYnJhLgorICAgICAgICAgKi8KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHZpc2l0KGZpbmFsIE9wTGVmdEpvaW4gb3BMZWZ0Sm9pbikgeworICAgICAgICAgICAgb3B0aW9uYWxGbGFnID0gdHJ1ZTsKKyAgICAgICAgICAgIG9wdGlvbmFsVmlzaXQob3BMZWZ0Sm9pbi5nZXRSaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChvcExlZnRKb2luLmdldEV4cHJzKCkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZvciAoRXhwciBleHByIDogb3BMZWZ0Sm9pbi5nZXRFeHBycygpLmdldExpc3QoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhwciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uYWxGbGFnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsVHJhdmVyc2Fscy5hZGQoX18ud2hlcmUoV2hlcmVUcmF2ZXJzYWxCdWlsZGVyLnRyYW5zZm9ybShleHByKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogV2Fsa2luZyBPUCBmb3IgT3B0aW9uYWwgaW4gU1BBUlFMIGFsZ2VicmEuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgb3B0aW9uYWxWaXNpdChmaW5hbCBPcCBvcCkgeworCisgICAgICAgICAgICBPcFdhbGtlci53YWxrKG9wLCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBWaXNpdGluZyB1bmlvbnMgaW4gU1BBUlFMIGFsZ2VicmEuCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgdmlzaXQoZmluYWwgT3BVbmlvbiBvcFVuaW9uKSB7CisgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWwgdW5pb25UZW1wW10gPSBuZXcgVHJhdmVyc2FsWzJdOworICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsIHVuaW9uVGVtcDFbXSA9IG5ldyBUcmF2ZXJzYWxbdHJhdmVyc2FsTGlzdC5zaXplKCkgLyAyXTsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbCB1bmlvblRlbXAyW10gPSBuZXcgVHJhdmVyc2FsW3RyYXZlcnNhbExpc3Quc2l6ZSgpIC8gMl07CisKKyAgICAgICAgICAgIGludCBjb3VudCA9IDA7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHJhdmVyc2FsTGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChpIDwgdHJhdmVyc2FsTGlzdC5zaXplKCkgLyAyKQorICAgICAgICAgICAgICAgICAgICB1bmlvblRlbXAxW2ldID0gdHJhdmVyc2FsTGlzdC5nZXQoaSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB1bmlvblRlbXAyW2NvdW50KytdID0gdHJhdmVyc2FsTGlzdC5nZXQoaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVuaW9uVGVtcFsxXSA9IF9fLm1hdGNoKHVuaW9uVGVtcDIpOworICAgICAgICAgICAgdW5pb25UZW1wWzBdID0gX18ubWF0Y2godW5pb25UZW1wMSk7CisKKyAgICAgICAgICAgIHRyYXZlcnNhbExpc3QuY2xlYXIoKTsKKyAgICAgICAgICAgIHRyYXZlcnNhbCA9IChHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsID8+KSB0cmF2ZXJzYWwudW5pb24odW5pb25UZW1wKTsKKyAgICAgICAgfQorCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9UcmF2ZXJzYWxCdWlsZGVyLmphdmEgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1RyYXZlcnNhbEJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDMxNWViCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9UcmF2ZXJzYWxCdWlsZGVyLmphdmEKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbDsKKworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5ncmFwaC5Ob2RlOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5ncmFwaC5UcmlwbGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHlUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKKworLyoqCisgKiBDb252ZXJ0cyB0cmlwbGUgcGF0dGVybnMgaW50byB7QGxpbmsgR3JhcGhUcmF2ZXJzYWx9IGluc3RhbmNlcy4KKyAqLworY2xhc3MgVHJhdmVyc2FsQnVpbGRlciB7CisKKyAgICBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIFRyaXBsZSB0cmlwbGUpIHsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCA/PiBtYXRjaFRyYXZlcnNhbCA9IF9fLmFzKHRyaXBsZS5nZXRTdWJqZWN0KCkuZ2V0TmFtZSgpKTsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIE5vZGUgcHJlZGljYXRlID0gdHJpcGxlLmdldFByZWRpY2F0ZSgpOworICAgICAgICBmaW5hbCBTdHJpbmcgdXJpID0gcHJlZGljYXRlLmdldFVSSSgpOworICAgICAgICBmaW5hbCBTdHJpbmcgdXJpVmFsdWUgPSBQcmVmaXhlcy5nZXRVUklWYWx1ZSh1cmkpOworICAgICAgICBmaW5hbCBTdHJpbmcgcHJlZml4ID0gUHJlZml4ZXMuZ2V0UHJlZml4KHVyaSk7CisKKyAgICAgICAgc3dpdGNoIChwcmVmaXgpIHsKKyAgICAgICAgICAgIGNhc2UgImVkZ2UiOgorICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFRyYXZlcnNhbC5vdXQodXJpVmFsdWUpLmFzKHRyaXBsZS5nZXRPYmplY3QoKS5nZXROYW1lKCkpOworICAgICAgICAgICAgY2FzZSAicHJvcGVydHkiOgorICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFByb3BlcnR5KG1hdGNoVHJhdmVyc2FsLCB1cmlWYWx1ZSwgUHJvcGVydHlUeXBlLlBST1BFUlRZLCB0cmlwbGUuZ2V0T2JqZWN0KCkpOworICAgICAgICAgICAgY2FzZSAidmFsdWUiOgorICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFByb3BlcnR5KG1hdGNoVHJhdmVyc2FsLCB1cmlWYWx1ZSwgUHJvcGVydHlUeXBlLlZBTFVFLCB0cmlwbGUuZ2V0T2JqZWN0KCkpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlVuZXhwZWN0ZWQgcHJlZGljYXRlOiAlcyIsIHByZWRpY2F0ZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gbWF0Y2hQcm9wZXJ0eShmaW5hbCBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmF2ZXJzYWwsIGZpbmFsIFN0cmluZyBwcm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBQcm9wZXJ0eVR5cGUgdHlwZSwgZmluYWwgTm9kZSBvYmplY3QpIHsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgImlkIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LmlzQ29uY3JldGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgPyB0cmF2ZXJzYWwuaGFzSWQob2JqZWN0LmdldExpdGVyYWxWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgOiB0cmF2ZXJzYWwuaWQoKS5hcyhvYmplY3QuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIGNhc2UgImxhYmVsIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LmlzQ29uY3JldGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgPyB0cmF2ZXJzYWwuaGFzTGFiZWwob2JqZWN0LmdldExpdGVyYWxWYWx1ZSgpLnRvU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgICAgICAgICA6IHRyYXZlcnNhbC5sYWJlbCgpLmFzKG9iamVjdC5nZXROYW1lKCkpOworICAgICAgICAgICAgY2FzZSAia2V5IjoKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0LmlzQ29uY3JldGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgPyB0cmF2ZXJzYWwuaGFzS2V5KG9iamVjdC5nZXRMaXRlcmFsVmFsdWUoKS50b1N0cmluZygpKQorICAgICAgICAgICAgICAgICAgICAgICAgOiB0cmF2ZXJzYWwua2V5KCkuYXMob2JqZWN0LmdldE5hbWUoKSk7CisgICAgICAgICAgICBjYXNlICJ2YWx1ZSI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0NvbmNyZXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gdHJhdmVyc2FsLmhhc1ZhbHVlKG9iamVjdC5nZXRMaXRlcmFsVmFsdWUoKS50b1N0cmluZygpKQorICAgICAgICAgICAgICAgICAgICAgICAgOiB0cmF2ZXJzYWwudmFsdWUoKS5hcyhvYmplY3QuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKFByb3BlcnR5VHlwZS5QUk9QRVJUWSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbC5wcm9wZXJ0aWVzKHByb3BlcnR5TmFtZSkuYXMob2JqZWN0LmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0NvbmNyZXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRyYXZlcnNhbC5oYXMocHJvcGVydHlOYW1lLCBvYmplY3QuZ2V0TGl0ZXJhbFZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0cmF2ZXJzYWwudmFsdWVzKHByb3BlcnR5TmFtZSkuYXMob2JqZWN0LmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9XaGVyZVRyYXZlcnNhbEJ1aWxkZXIuamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvV2hlcmVUcmF2ZXJzYWxCdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5OWE2ZQotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvV2hlcmVUcmF2ZXJzYWxCdWlsZGVyLmphdmEKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5ncmFwaC5UcmlwbGU7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5hbGdlYnJhLm9wLk9wQkdQOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FX0VxdWFsczsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRV9FeGlzdHM7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5leHByLkVfR3JlYXRlclRoYW47CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5leHByLkVfR3JlYXRlclRoYW5PckVxdWFsOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FX0xlc3NUaGFuOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FX0xlc3NUaGFuT3JFcXVhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRV9Mb2dpY2FsQW5kOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FX0xvZ2ljYWxPcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRV9Ob3RFcXVhbHM7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5leHByLkVfTm90RXhpc3RzOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FeHByOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CisKKy8qKgorICogQ29udmVydHMgU1BBUlFMICJ3aGVyZSIgZXhwcmVzc2lvbnMgdG8gR3JlbWxpbiBwcmVkaWNhdGVzLgorICovCitjbGFzcyBXaGVyZVRyYXZlcnNhbEJ1aWxkZXIgeworCisgICAgLyoqCisgICAgICogQ29udmVydHMgYSBnZW5lcmFsIHtAY29kZSBFeHByfSB0byBhbiBhbm9ueW1vdXMge0BsaW5rIEdyYXBoVHJhdmVyc2FsfS4KKyAgICAgKi8KKyAgICBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEV4cHIgZXhwcmVzc2lvbikgeworICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEVfRXF1YWxzKSByZXR1cm4gdHJhbnNmb3JtKChFX0VxdWFscykgZXhwcmVzc2lvbik7CisgICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgRV9Ob3RFcXVhbHMpIHJldHVybiB0cmFuc2Zvcm0oKEVfTm90RXF1YWxzKSBleHByZXNzaW9uKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBFX0xlc3NUaGFuKSByZXR1cm4gdHJhbnNmb3JtKChFX0xlc3NUaGFuKSBleHByZXNzaW9uKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBFX0xlc3NUaGFuT3JFcXVhbCkgcmV0dXJuIHRyYW5zZm9ybSgoRV9MZXNzVGhhbk9yRXF1YWwpIGV4cHJlc3Npb24pOworICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEVfR3JlYXRlclRoYW4pIHJldHVybiB0cmFuc2Zvcm0oKEVfR3JlYXRlclRoYW4pIGV4cHJlc3Npb24pOworICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEVfR3JlYXRlclRoYW5PckVxdWFsKSByZXR1cm4gdHJhbnNmb3JtKChFX0dyZWF0ZXJUaGFuT3JFcXVhbCkgZXhwcmVzc2lvbik7CisgICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgRV9Mb2dpY2FsQW5kKSByZXR1cm4gdHJhbnNmb3JtKChFX0xvZ2ljYWxBbmQpIGV4cHJlc3Npb24pOworICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEVfTG9naWNhbE9yKSByZXR1cm4gdHJhbnNmb3JtKChFX0xvZ2ljYWxPcikgZXhwcmVzc2lvbik7CisgICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgRV9FeGlzdHMpIHJldHVybiB0cmFuc2Zvcm0oKEVfRXhpc3RzKSBleHByZXNzaW9uKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBFX05vdEV4aXN0cykgcmV0dXJuIHRyYW5zZm9ybSgoRV9Ob3RFeGlzdHMpIGV4cHJlc3Npb24pOworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlVuaGFuZGxlZCBleHByZXNzaW9uOiAlcyIsIGV4cHJlc3Npb24pKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmFuc2Zvcm0oZmluYWwgRV9FcXVhbHMgZXhwcmVzc2lvbikgeworICAgICAgICBmaW5hbCBPYmplY3QgdmFsdWUgPSBleHByZXNzaW9uLmdldEFyZzIoKS5nZXRDb25zdGFudCgpLmdldE5vZGUoKS5nZXRMaXRlcmFsVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIF9fLmFzKGV4cHJlc3Npb24uZ2V0QXJnMSgpLmdldFZhck5hbWUoKSkuaXMoUC5lcSh2YWx1ZSkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYW5zZm9ybShmaW5hbCBFX05vdEVxdWFscyBleHByZXNzaW9uKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCB2YWx1ZSA9IGV4cHJlc3Npb24uZ2V0QXJnMigpLmdldENvbnN0YW50KCkuZ2V0Tm9kZSgpLmdldExpdGVyYWxWYWx1ZSgpOworICAgICAgICByZXR1cm4gX18uYXMoZXhwcmVzc2lvbi5nZXRBcmcxKCkuZ2V0VmFyTmFtZSgpKS5pcyhQLm5lcSh2YWx1ZSkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYW5zZm9ybShmaW5hbCBFX0xlc3NUaGFuIGV4cHJlc3Npb24pIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IHZhbHVlID0gZXhwcmVzc2lvbi5nZXRBcmcyKCkuZ2V0Q29uc3RhbnQoKS5nZXROb2RlKCkuZ2V0TGl0ZXJhbFZhbHVlKCk7CisgICAgICAgIHJldHVybiBfXy5hcyhleHByZXNzaW9uLmdldEFyZzEoKS5nZXRWYXJOYW1lKCkpLmlzKFAubHQodmFsdWUpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmFuc2Zvcm0oZmluYWwgRV9MZXNzVGhhbk9yRXF1YWwgZXhwcmVzc2lvbikgeworICAgICAgICBmaW5hbCBPYmplY3QgdmFsdWUgPSBleHByZXNzaW9uLmdldEFyZzIoKS5nZXRDb25zdGFudCgpLmdldE5vZGUoKS5nZXRMaXRlcmFsVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIF9fLmFzKGV4cHJlc3Npb24uZ2V0QXJnMSgpLmdldFZhck5hbWUoKSkuaXMoUC5sdGUodmFsdWUpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmFuc2Zvcm0oZmluYWwgRV9HcmVhdGVyVGhhbiBleHByZXNzaW9uKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCB2YWx1ZSA9IGV4cHJlc3Npb24uZ2V0QXJnMigpLmdldENvbnN0YW50KCkuZ2V0Tm9kZSgpLmdldExpdGVyYWxWYWx1ZSgpOworICAgICAgICByZXR1cm4gX18uYXMoZXhwcmVzc2lvbi5nZXRBcmcxKCkuZ2V0VmFyTmFtZSgpKS5pcyhQLmd0KHZhbHVlKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfR3JlYXRlclRoYW5PckVxdWFsIGV4cHJlc3Npb24pIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IHZhbHVlID0gZXhwcmVzc2lvbi5nZXRBcmcyKCkuZ2V0Q29uc3RhbnQoKS5nZXROb2RlKCkuZ2V0TGl0ZXJhbFZhbHVlKCk7CisgICAgICAgIHJldHVybiBfXy5hcyhleHByZXNzaW9uLmdldEFyZzEoKS5nZXRWYXJOYW1lKCkpLmlzKFAuZ3RlKHZhbHVlKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfTG9naWNhbEFuZCBleHByZXNzaW9uKSB7CisgICAgICAgIHJldHVybiBfXy5hbmQoCisgICAgICAgICAgICAgICAgdHJhbnNmb3JtKGV4cHJlc3Npb24uZ2V0QXJnMSgpKSwKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0oZXhwcmVzc2lvbi5nZXRBcmcyKCkpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmFuc2Zvcm0oZmluYWwgRV9Mb2dpY2FsT3IgZXhwcmVzc2lvbikgeworICAgICAgICByZXR1cm4gX18ub3IoCisgICAgICAgICAgICAgICAgdHJhbnNmb3JtKGV4cHJlc3Npb24uZ2V0QXJnMSgpKSwKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0oZXhwcmVzc2lvbi5nZXRBcmcyKCkpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmFuc2Zvcm0oZmluYWwgRV9FeGlzdHMgZXhwcmVzc2lvbikgeworICAgICAgICBmaW5hbCBPcEJHUCBvcEJHUCA9IChPcEJHUCkgZXhwcmVzc2lvbi5nZXRHcmFwaFBhdHRlcm4oKTsKKyAgICAgICAgZmluYWwgTGlzdDxUcmlwbGU+IHRyaXBsZXMgPSBvcEJHUC5nZXRQYXR0ZXJuKCkuZ2V0TGlzdCgpOworICAgICAgICBpZiAodHJpcGxlcy5zaXplKCkgIT0gMSkgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVW5oYW5kbGVkIEVYSVNUUyBwYXR0ZXJuIik7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYXZlcnNhbCA9IFRyYXZlcnNhbEJ1aWxkZXIudHJhbnNmb3JtKHRyaXBsZXMuZ2V0KDApKTsKKyAgICAgICAgZmluYWwgU3RlcCBlbmRTdGVwID0gdHJhdmVyc2FsLmFzQWRtaW4oKS5nZXRFbmRTdGVwKCk7CisgICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IChTdHJpbmcpIGVuZFN0ZXAuZ2V0TGFiZWxzKCkuaXRlcmF0b3IoKS5uZXh0KCk7CisgICAgICAgIGVuZFN0ZXAucmVtb3ZlTGFiZWwobGFiZWwpOworICAgICAgICByZXR1cm4gdHJhdmVyc2FsOworICAgIH0KKworCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfTm90RXhpc3RzIGV4cHJlc3Npb24pIHsKKyAgICAgICAgZmluYWwgT3BCR1Agb3BCR1AgPSAoT3BCR1ApIGV4cHJlc3Npb24uZ2V0R3JhcGhQYXR0ZXJuKCk7CisgICAgICAgIGZpbmFsIExpc3Q8VHJpcGxlPiB0cmlwbGVzID0gb3BCR1AuZ2V0UGF0dGVybigpLmdldExpc3QoKTsKKyAgICAgICAgaWYgKHRyaXBsZXMuc2l6ZSgpICE9IDEpIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVuaGFuZGxlZCBOT1QgRVhJU1RTIHBhdHRlcm4iKTsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhdmVyc2FsID0gVHJhdmVyc2FsQnVpbGRlci50cmFuc2Zvcm0odHJpcGxlcy5nZXQoMCkpOworICAgICAgICBmaW5hbCBTdGVwIGVuZFN0ZXAgPSB0cmF2ZXJzYWwuYXNBZG1pbigpLmdldEVuZFN0ZXAoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGxhYmVsID0gKFN0cmluZykgZW5kU3RlcC5nZXRMYWJlbHMoKS5pdGVyYXRvcigpLm5leHQoKTsKKyAgICAgICAgZW5kU3RlcC5yZW1vdmVMYWJlbChsYWJlbCk7CisgICAgICAgIHJldHVybiBfXy5ub3QodHJhdmVyc2FsKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9qc3IyMjMvU3BhcnFsR3JlbWxpblBsdWdpbi5qYXZhIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9qc3IyMjMvU3BhcnFsR3JlbWxpblBsdWdpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMDExNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL2pzcjIyMy9TcGFycWxHcmVtbGluUGx1Z2luLmphdmEKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLmpzcjIyMzsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkFic3RyYWN0R3JlbWxpblBsdWdpbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5EZWZhdWx0SW1wb3J0Q3VzdG9taXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5HcmVtbGluUGx1Z2luOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkltcG9ydEN1c3RvbWl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLnNwYXJxbC5EZWZhdWx0U3BhcnFsVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWwuU3BhcnFsVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWwuU3BhcnFsVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LlNwYXJxbFN0cmF0ZWd5OworCisvKioKKyAqIHtAbGluayBHcmVtbGluUGx1Z2lufSBpbXBsZW1lbnRhdGlvbiBmb3Ige0Bjb2RlIHNwYXJxbC1ncmVtbGlufSB0aGF0IGltcG9ydHMgdGhlIGtleSBjbGFzc2VzIGFuZCBpbnRlcmZhY2VzIHJlcXVpcmVkCisgKiB0byB1c2UgU1BBUlFMIGluIFRpbmtlclBvcC4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBTcGFycWxHcmVtbGluUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUGx1Z2luIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FID0gInRpbmtlcnBvcC5zcGFycWwiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSW1wb3J0Q3VzdG9taXplciBpbXBvcnRzOworCisgICAgc3RhdGljIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGltcG9ydHMgPSBEZWZhdWx0SW1wb3J0Q3VzdG9taXplci5idWlsZCgpLmFkZENsYXNzSW1wb3J0cygKKyAgICAgICAgICAgICAgICAgICAgU3BhcnFsVHJhdmVyc2FsU291cmNlLmNsYXNzLAorICAgICAgICAgICAgICAgICAgICBTcGFycWxUcmF2ZXJzYWwuY2xhc3MsCisgICAgICAgICAgICAgICAgICAgIERlZmF1bHRTcGFycWxUcmF2ZXJzYWwuY2xhc3MsCisgICAgICAgICAgICAgICAgICAgIFNwYXJxbFN0cmF0ZWd5LmNsYXNzKS5jcmVhdGUoKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTcGFycWxHcmVtbGluUGx1Z2luIGluc3RhbmNlID0gbmV3IFNwYXJxbEdyZW1saW5QbHVnaW4oKTsKKworICAgIHB1YmxpYyBTcGFycWxHcmVtbGluUGx1Z2luKCkgeworICAgICAgICBzdXBlcihOQU1FLCBpbXBvcnRzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFNwYXJxbEdyZW1saW5QbHVnaW4gaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9zcGFycWwvRGVmYXVsdFNwYXJxbFRyYXZlcnNhbC5qYXZhIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL0RlZmF1bHRTcGFycWxUcmF2ZXJzYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNkNGJlCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL0RlZmF1bHRTcGFycWxUcmF2ZXJzYWwuamF2YQpAQCAtMCwwICsxLDU1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLnNwYXJxbDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIERlZmF1bHRTcGFycWxUcmF2ZXJzYWw8UywgRT4gZXh0ZW5kcyBEZWZhdWx0VHJhdmVyc2FsPFMsIEU+IGltcGxlbWVudHMgU3BhcnFsVHJhdmVyc2FsLkFkbWluPFMsIEU+IHsKKworICAgIHB1YmxpYyBEZWZhdWx0U3BhcnFsVHJhdmVyc2FsKCkgeworICAgICAgICBzdXBlcigpOworICAgIH0KKworICAgIHB1YmxpYyBEZWZhdWx0U3BhcnFsVHJhdmVyc2FsKGZpbmFsIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSBzcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHsKKyAgICAgICAgc3VwZXIoc3BhcnFsVHJhdmVyc2FsU291cmNlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGVmYXVsdFNwYXJxbFRyYXZlcnNhbChmaW5hbCBHcmFwaCBncmFwaCkgeworICAgICAgICBzdXBlcihncmFwaCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbC5BZG1pbjxTLCBFPiBhc0FkbWluKCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsPFMsIEU+IGl0ZXJhdGUoKSB7CisgICAgICAgIHJldHVybiBTcGFycWxUcmF2ZXJzYWwuQWRtaW4uc3VwZXIuaXRlcmF0ZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBEZWZhdWx0U3BhcnFsVHJhdmVyc2FsPFMsIEU+IGNsb25lKCkgeworICAgICAgICByZXR1cm4gKERlZmF1bHRTcGFycWxUcmF2ZXJzYWw8UywgRT4pIHN1cGVyLmNsb25lKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL1NwYXJxbFRyYXZlcnNhbC5qYXZhIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL1NwYXJxbFRyYXZlcnNhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MzI2N2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9zcGFycWwvU3BhcnFsVHJhdmVyc2FsLmphdmEKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CisKKy8qKgorICogVGhlIHtAY29kZSBTcGFycWxUcmF2ZXJzYWx9IGhhcyBubyBhZGRpdGlvbmFsIHRyYXZlcnNhbCBzdGVwcy4gVGhlIG9ubHkgc3RlcCBhdmFpbGFibGUgZm9yICJTUEFSUUwiIGlzIHRoZQorICoge0BsaW5rIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSNzcGFycWwoU3RyaW5nKX0gc3RhcnQgc3RlcC4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgU3BhcnFsVHJhdmVyc2FsPFMsIEU+IGV4dGVuZHMgVHJhdmVyc2FsPFMsIEU+IHsKKyAgICBwdWJsaWMgaW50ZXJmYWNlIEFkbWluPFMsIEU+IGV4dGVuZHMgVHJhdmVyc2FsLkFkbWluPFMsIEU+LCBTcGFycWxUcmF2ZXJzYWw8UywgRT4geworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgZGVmYXVsdCA8RTI+IFNwYXJxbFRyYXZlcnNhbC5BZG1pbjxTLCBFMj4gYWRkU3RlcChmaW5hbCBTdGVwPD8sIEUyPiBzdGVwKSB7CisgICAgICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbC5BZG1pbjxTLCBFMj4pIFRyYXZlcnNhbC5BZG1pbi5zdXBlci5hZGRTdGVwKChTdGVwKSBzdGVwKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgZGVmYXVsdCBTcGFycWxUcmF2ZXJzYWw8UywgRT4gaXRlcmF0ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBTcGFycWxUcmF2ZXJzYWwuc3VwZXIuaXRlcmF0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWwuQWRtaW48UywgRT4gY2xvbmUoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZGVmYXVsdCBTcGFycWxUcmF2ZXJzYWwuQWRtaW48UywgRT4gYXNBZG1pbigpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWwuQWRtaW48UywgRT4pIHRoaXM7CisgICAgfQorCisgICAgLy8vLworCisgICAgLyoqCisgICAgICogSXRlcmF0ZXMgdGhlIHRyYXZlcnNhbCBwcmVzdW1hYmx5IGZvciB0aGUgZ2VuZXJhdGlvbiBvZiBzaWRlLWVmZmVjdHMuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGRlZmF1bHQgU3BhcnFsVHJhdmVyc2FsPFMsIEU+IGl0ZXJhdGUoKSB7CisgICAgICAgIFRyYXZlcnNhbC5zdXBlci5pdGVyYXRlKCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9TcGFycWxUcmF2ZXJzYWxTb3VyY2UuamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9TcGFycWxUcmF2ZXJzYWxTb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTgxMmJiCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL1NwYXJxbFRyYXZlcnNhbFNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLnNwYXJxbDsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlJlbW90ZVN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVnaWVzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguRGVmYXVsdEdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkluamVjdFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuU3BhcnFsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVHJhbnNhY3Rpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaDsKKworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaW5hcnlPcGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uU3VwcGxpZXI7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlVuYXJ5T3BlcmF0b3I7CisKKy8qKgorICogQSB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBpbXBsZW1lbnRhdGlvbiB0aGF0IHNwYXducyB7QGxpbmsgU3BhcnFsVHJhdmVyc2FsfSBpbnN0YW5jZXMuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgU3BhcnFsVHJhdmVyc2FsU291cmNlIGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgeworCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZShmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgVHJhdmVyc2FsU3RyYXRlZ2llcyB0cmF2ZXJzYWxTdHJhdGVnaWVzKSB7CisgICAgICAgIHN1cGVyKGdyYXBoLCB0cmF2ZXJzYWxTdHJhdGVnaWVzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlKGZpbmFsIEdyYXBoIGdyYXBoKSB7CisgICAgICAgIHN1cGVyKGdyYXBoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlKGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBzdXBlcihjb25uZWN0aW9uKTsKKyAgICB9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiQ2xvbmVEb2VzbnREZWNsYXJlQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iKQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2UgY2xvbmUoKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci5jbG9uZSgpOworICAgIH0KKworICAgIC8vLy8gQ09ORklHVVJBVElPTlMKKworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoKGZpbmFsIFN0cmluZyBrZXkpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGgoa2V5KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGgoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoKGtleSwgdmFsdWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aENvbXB1dGVyKGZpbmFsIENvbXB1dGVyIGNvbXB1dGVyKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoQ29tcHV0ZXIoY29tcHV0ZXIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aENvbXB1dGVyKGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhDb21wdXRlcihncmFwaENvbXB1dGVyQ2xhc3MpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aENvbXB1dGVyKCkgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aENvbXB1dGVyKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxBPiBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFNpZGVFZmZlY3QoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgU3VwcGxpZXI8QT4gaW5pdGlhbFZhbHVlLCBmaW5hbCBCaW5hcnlPcGVyYXRvcjxBPiByZWR1Y2VyKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2lkZUVmZmVjdChrZXksIGluaXRpYWxWYWx1ZSwgcmVkdWNlcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxBPiBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFNpZGVFZmZlY3QoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgQSBpbml0aWFsVmFsdWUsIGZpbmFsIEJpbmFyeU9wZXJhdG9yPEE+IHJlZHVjZXIpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhTaWRlRWZmZWN0KGtleSwgaW5pdGlhbFZhbHVlLCByZWR1Y2VyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPEE+IFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU2lkZUVmZmVjdChmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBBIGluaXRpYWxWYWx1ZSkgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNpZGVFZmZlY3Qoa2V5LCBpbml0aWFsVmFsdWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTaWRlRWZmZWN0KGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSkgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNpZGVFZmZlY3Qoa2V5LCBpbml0aWFsVmFsdWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSwgZmluYWwgVW5hcnlPcGVyYXRvcjxBPiBzcGxpdE9wZXJhdG9yLCBmaW5hbCBCaW5hcnlPcGVyYXRvcjxBPiBtZXJnZU9wZXJhdG9yKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUsIHNwbGl0T3BlcmF0b3IsIG1lcmdlT3BlcmF0b3IpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIEEgaW5pdGlhbFZhbHVlLCBmaW5hbCBVbmFyeU9wZXJhdG9yPEE+IHNwbGl0T3BlcmF0b3IsIGZpbmFsIEJpbmFyeU9wZXJhdG9yPEE+IG1lcmdlT3BlcmF0b3IpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhTYWNrKGluaXRpYWxWYWx1ZSwgc3BsaXRPcGVyYXRvciwgbWVyZ2VPcGVyYXRvcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxBPiBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFNhY2soZmluYWwgQSBpbml0aWFsVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhTYWNrKGluaXRpYWxWYWx1ZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxBPiBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFNhY2soZmluYWwgU3VwcGxpZXI8QT4gaW5pdGlhbFZhbHVlKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSwgZmluYWwgVW5hcnlPcGVyYXRvcjxBPiBzcGxpdE9wZXJhdG9yKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUsIHNwbGl0T3BlcmF0b3IpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIEEgaW5pdGlhbFZhbHVlLCBmaW5hbCBVbmFyeU9wZXJhdG9yPEE+IHNwbGl0T3BlcmF0b3IpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhTYWNrKGluaXRpYWxWYWx1ZSwgc3BsaXRPcGVyYXRvcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxBPiBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFNhY2soZmluYWwgU3VwcGxpZXI8QT4gaW5pdGlhbFZhbHVlLCBmaW5hbCBCaW5hcnlPcGVyYXRvcjxBPiBtZXJnZU9wZXJhdG9yKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUsIG1lcmdlT3BlcmF0b3IpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIEEgaW5pdGlhbFZhbHVlLCBmaW5hbCBCaW5hcnlPcGVyYXRvcjxBPiBtZXJnZU9wZXJhdG9yKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUsIG1lcmdlT3BlcmF0b3IpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aEJ1bGsoZmluYWwgYm9vbGVhbiB1c2VCdWxrKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoQnVsayh1c2VCdWxrKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhQYXRoKCkgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFBhdGgoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTdHJhdGVnaWVzKGZpbmFsIFRyYXZlcnNhbFN0cmF0ZWd5Li4uIHRyYXZlcnNhbFN0cmF0ZWdpZXMpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhTdHJhdGVnaWVzKHRyYXZlcnNhbFN0cmF0ZWdpZXMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIEBTdXBwcmVzc1dhcm5pbmdzKHsidW5jaGVja2VkIn0pCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRob3V0U3RyYXRlZ2llcyhmaW5hbCBDbGFzczw/IGV4dGVuZHMgVHJhdmVyc2FsU3RyYXRlZ3k+Li4uIHRyYXZlcnNhbFN0cmF0ZWd5Q2xhc3NlcykgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aG91dFN0cmF0ZWdpZXModHJhdmVyc2FsU3RyYXRlZ3lDbGFzc2VzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhSZW1vdGUoZmluYWwgQ29uZmlndXJhdGlvbiBjb25mKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoUmVtb3RlKGNvbmYpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFJlbW90ZShmaW5hbCBTdHJpbmcgY29uZmlnRmlsZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoUmVtb3RlKGNvbmZpZ0ZpbGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFJlbW90ZShmaW5hbCBSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhSZW1vdGUoY29ubmVjdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIHN0YXJ0IHN0ZXAgZm9yIGEgU1BBUlFMIGJhc2VkIHRyYXZlcnNhbCB0aGF0IGFjY2VwdHMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHF1ZXJ5IHRvIGV4ZWN1dGUuCisgICAgICovCisgICAgcHVibGljIDxTPiBHcmFwaFRyYXZlcnNhbDxTLD8+IHNwYXJxbChmaW5hbCBTdHJpbmcgcXVlcnkpIHsKKyAgICAgICAgZmluYWwgU3BhcnFsVHJhdmVyc2FsU291cmNlIGNsb25lID0gdGhpcy53aXRoU3RyYXRlZ2llcyhTcGFycWxTdHJhdGVneS5pbnN0YW5jZSgpKS5jbG9uZSgpOworCisgICAgICAgIC8vIHRoZSBpbmplY3QoKSBob2xkcyB0aGUgc3BhcnFsIHdoaWNoIHRoZSBTcGFycWxTdHJhdGVneSB0aGVuIGRldGVjdHMgYW5kIGNvbnZlcnRzIHRvIGEgdHJhdmVyc2FsCisgICAgICAgIGNsb25lLmJ5dGVjb2RlLmFkZFN0ZXAoR3JhcGhUcmF2ZXJzYWwuU3ltYm9scy5pbmplY3QsIHF1ZXJ5KTsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWwuQWRtaW48UywgUz4gdHJhdmVyc2FsID0gbmV3IERlZmF1bHRHcmFwaFRyYXZlcnNhbChjbG9uZSk7CisgICAgICAgIHJldHVybiB0cmF2ZXJzYWwuYWRkU3RlcChuZXcgSW5qZWN0U3RlcDw+KHRyYXZlcnNhbCwgcXVlcnkpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L1NwYXJxbFN0cmF0ZWd5LmphdmEgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L1NwYXJxbFN0cmF0ZWd5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E2MmUzMQotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvU3BhcnFsU3RyYXRlZ3kuamF2YQpAQCAtMCwwICsxLDg5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3k7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlJlbW90ZVN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW5qZWN0U3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5FbXB0eVN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5BYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwuU3BhcnFsVG9HcmVtbGluQ29tcGlsZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLnNwYXJxbC5TcGFycWxUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKKy8qKgorICogVGhpcyB7QGxpbmsgVHJhdmVyc2FsU3RyYXRlZ3l9IGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUge0BsaW5rIFNwYXJxbFRyYXZlcnNhbFNvdXJjZX0gd2hpY2ggaGFzIGEgc2luZ2xlCisgKiB7QGNvZGUgc3BhcnFsKCl9IHN0YXJ0IHN0ZXAuIFRoYXQgc3RlcCBhZGRzIGEge0BsaW5rIEluamVjdFN0ZXB9IHRvIHRoZSB0cmF2ZXJzYWwgd2l0aCB0aGUgU1BBUlFMIHF1ZXJ5IHdpdGhpbgorICogaXQgYXMgYSBzdHJpbmcgdmFsdWUuIFRoaXMgc3RyYXRlZ3kgZmluZHMgdGhhdCBzdGVwIGFuZCBjb21waWxlcyBpdCB0byBhIEdyZW1saW4gdHJhdmVyc2FsIHdoaWNoIHRoZW4gcmVwbGFjZXMKKyAqIHRoZSB7QGxpbmsgSW5qZWN0U3RlcH0uCisgKgorICogRm9yIHJlbW90ZSBieXRlY29kZSBleGVjdXRpb24sIG5vdGUgdGhhdCB0aGUge0Bjb2RlIHNwYXJxbC1ncmVtbGlufSBkZXBlbmRlbmNpZXMgbmVlZCB0byBiZSBvbiB0aGUgc2VydmVyLiBUaGUKKyAqIHdheSByZW1vdGluZyB3b3JrcyAtIHNlZSB7QGNvZGUgUmVtb3RlU3RlcH0gLSBwcmV2ZW50cyBtb2RpZmllZCBieXRlY29kZSBmcm9tIGJlaW5nIHN1Ym1pdHRlZCB0byB0aGUgc2VydmVyLCBzbworICogdGVjaG5pY2FsbHksIHRoaXMgc3RyYXRlZ3kgY2FuJ3QgYmUgYXBwbGllZCBmaXJzdCBvbiB0aGUgY2xpZW50LgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFNwYXJxbFN0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5EZWNvcmF0aW9uU3RyYXRlZ3k+CisgICAgICAgIGltcGxlbWVudHMgVHJhdmVyc2FsU3RyYXRlZ3kuRGVjb3JhdGlvblN0cmF0ZWd5IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTcGFycWxTdHJhdGVneSBJTlNUQU5DRSA9IG5ldyBTcGFycWxTdHJhdGVneSgpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PENsYXNzPD8gZXh0ZW5kcyBEZWNvcmF0aW9uU3RyYXRlZ3k+PiBQUklPUlMgPSBDb2xsZWN0aW9ucy5zaW5nbGV0b24oUmVtb3RlU3RyYXRlZ3kuY2xhc3MpOworCisgICAgcHJpdmF0ZSBTcGFycWxTdHJhdGVneSgpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIFNwYXJxbFN0cmF0ZWd5IGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxDbGFzczw/IGV4dGVuZHMgRGVjb3JhdGlvblN0cmF0ZWd5Pj4gYXBwbHlQcmlvcigpIHsKKyAgICAgICAgcmV0dXJuIFBSSU9SUzsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBhcHBseShmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdHJhdmVyc2FsKSB7CisgICAgICAgIGlmICghKHRyYXZlcnNhbC5nZXRQYXJlbnQoKSBpbnN0YW5jZW9mIEVtcHR5U3RlcCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gYXNzdW1lcyB0aGF0IHRoZSB0cmF2ZXJzYWwgc3RhcnRzIHdpdGggdGhlIHNpbmdsZSBpbmplY3Qgc3RlcCB0aGF0IGhvbGRzIHRoZSBzcGFycWwgcXVlcnkKKyAgICAgICAgaWYgKHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSBpbnN0YW5jZW9mIEluamVjdFN0ZXApIHsKKyAgICAgICAgICAgIGZpbmFsIEluamVjdFN0ZXAgc3RlcFdpdGhTcGFycWwgPSAoSW5qZWN0U3RlcCkgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpOworICAgICAgICAgICAgZmluYWwgT2JqZWN0W10gaW5qZWN0aW9ucyA9IHN0ZXBXaXRoU3BhcnFsLmdldEluamVjdGlvbnMoKTsKKworICAgICAgICAgICAgLy8gZnVydGhlciBhc3N1bWVzIHRoYXQgdGhlcmUgaXMganVzdCBvbmUgYXJndW1lbnQgdG8gdGhhdCBpbmplY3Rpb24gd2hpY2ggaXMgYSBzdHJpbmcgKGkuZS4gc3BhcnFsIHF1ZXJ5KQorICAgICAgICAgICAgaWYgKGluamVjdGlvbnMubGVuZ3RoID09IDEgJiYgaW5qZWN0aW9uc1swXSBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBzcGFycWwgPSAoU3RyaW5nKSBpbmplY3Rpb25zWzBdOworCisgICAgICAgICAgICAgICAgLy8gdHJ5IHRvIGdyYWIgdGhlIFRyYXZlcnNhbFNvdXJjZSBmcm9tIHRoZSBUcmF2ZXJzYWwsIGJ1dCBpZiBpdCdzIG5vdCB0aGVyZSB0aGVuIHRyeSB0byB0aGUgR3JhcGgKKyAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBhbmQgc3Bhd24gb25lIG9mZiBmcm9tIHRoZXJlLgorICAgICAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHNwYXJxbFRyYXZlcnNhbCA9IFNwYXJxbFRvR3JlbWxpbkNvbXBpbGVyLmNvbXBpbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAoR3JhcGhUcmF2ZXJzYWxTb3VyY2UpIHRyYXZlcnNhbC5nZXRUcmF2ZXJzYWxTb3VyY2UoKS5vckVsc2VHZXQoKCkgLT4gdHJhdmVyc2FsLmdldEdyYXBoKCkubWFwKEdyYXBoOjp0cmF2ZXJzYWwpLmdldCgpKSwgc3BhcnFsKTsKKyAgICAgICAgICAgICAgICBUcmF2ZXJzYWxIZWxwZXIuaW5zZXJ0VHJhdmVyc2FsKHN0ZXBXaXRoU3BhcnFsLCBzcGFycWxUcmF2ZXJzYWwuYXNBZG1pbigpLCB0cmF2ZXJzYWwpOworICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5yZW1vdmVTdGVwKHN0ZXBXaXRoU3BhcnFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9zZXJ2aWNlcy9vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5HcmVtbGluUGx1Z2luIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL3NlcnZpY2VzL29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkdyZW1saW5QbHVnaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgyMDU0YwotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9zZXJ2aWNlcy9vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5HcmVtbGluUGx1Z2luCkBAIC0wLDAgKzEgQEAKK29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLmpzcjIyMy5TcGFycWxHcmVtbGluUGx1Z2luClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9QcmVmaXhlc1Rlc3QuamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvUHJlZml4ZXNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU1NjgwYgotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvUHJlZml4ZXNUZXN0LmphdmEKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbDsKKworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitwdWJsaWMgY2xhc3MgUHJlZml4ZXNUZXN0IHsKKworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgVEVTVF9RVUVSWSA9IFN0cmluZy5qb2luKFN5c3RlbS5saW5lU2VwYXJhdG9yKCksICJTRUxFQ1QgKiIsICJXSEVSRSB7fSIpOworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJFRklYRURfUVVFUlkgPSBTdHJpbmcuam9pbihTeXN0ZW0ubGluZVNlcGFyYXRvcigpLAorICAgICAgICAgICAgIlBSRUZJWCBlOiA8IiArIFByZWZpeGVzLkJBU0VfVVJJICsgImVkZ2UjPiIsCisgICAgICAgICAgICAiUFJFRklYIHA6IDwiICsgUHJlZml4ZXMuQkFTRV9VUkkgKyAicHJvcGVydHkjPiIsCisgICAgICAgICAgICAiUFJFRklYIHY6IDwiICsgUHJlZml4ZXMuQkFTRV9VUkkgKyAidmFsdWUjPiIsCisgICAgICAgICAgICBURVNUX1FVRVJZKTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEdldFVSSSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgcHJlZml4ID0gInRlc3QiOworICAgICAgICBmaW5hbCBTdHJpbmcgdXJpID0gUHJlZml4ZXMuQkFTRV9VUkkgKyBwcmVmaXggKyAiIyI7CisgICAgICAgIGFzc2VydEVxdWFscyh1cmksIFByZWZpeGVzLmdldFVSSShwcmVmaXgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RHZXRVUklWYWx1ZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgcHJlZml4ID0gInRlc3QiOworICAgICAgICBmaW5hbCBTdHJpbmcgdmFsdWUgPSAidmFsdWUiOworICAgICAgICBmaW5hbCBTdHJpbmcgdXJpID0gUHJlZml4ZXMuZ2V0VVJJKHByZWZpeCkgKyB2YWx1ZTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHZhbHVlLCBQcmVmaXhlcy5nZXRVUklWYWx1ZSh1cmkpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RHZXRQcmVmaXgoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHByZWZpeCA9ICJ0ZXN0IjsKKyAgICAgICAgZmluYWwgU3RyaW5nIHVyaSA9IFByZWZpeGVzLmdldFVSSShwcmVmaXgpOworICAgICAgICBhc3NlcnRFcXVhbHMocHJlZml4LCBQcmVmaXhlcy5nZXRQcmVmaXgodXJpKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UHJlcGVuZFN0cmluZygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBhc3NlcnRFcXVhbHMoUFJFRklYRURfUVVFUlksIFByZWZpeGVzLnByZXBlbmQoVEVTVF9RVUVSWSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFByZXBlbmRTdHJpbmdCdWlsZGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKFRFU1RfUVVFUlkpOworICAgICAgICBhc3NlcnRFcXVhbHMoUFJFRklYRURfUVVFUlksIFByZWZpeGVzLnByZXBlbmQoYnVpbGRlcikudG9TdHJpbmcoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9TcGFycWxUcmF2ZXJzYWxTb3VyY2VUZXN0LmphdmEgYi9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9zcGFycWwvU3BhcnFsVHJhdmVyc2FsU291cmNlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYjMzNGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9zcGFycWwvU3BhcnFsVHJhdmVyc2FsU291cmNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTg5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLnNwYXJxbDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJGYWN0b3J5OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yLm11bHQ7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLm91dEU7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQ7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb2xsZWN0aW9uLklzSXRlcmFibGVDb250YWluaW5nSW5BbnlPcmRlci5jb250YWluc0luQW55T3JkZXI7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb2xsZWN0aW9uLklzSXRlcmFibGVDb250YWluaW5nSW5PcmRlci5jb250YWluczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgU3BhcnFsVHJhdmVyc2FsU291cmNlVGVzdCB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3BhcnFsVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoU3BhcnFsVHJhdmVyc2FsU291cmNlLmNsYXNzKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBfZyA9IGdyYXBoLnRyYXZlcnNhbCgpOworCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTdGFydFdpdGhTcGFycWxSZXR1cm5pbmdNYXBBbmRFbmRXaXRoR3JlbWxpbigpIHsKKyAgICAgICAgZmluYWwgTGlzdDw/PiB4ID0gZy5zcGFycWwoIlNFTEVDVCA/bmFtZSA/YWdlIFdIRVJFIHsgP3BlcnNvbiB2Om5hbWUgP25hbWUgLiA/cGVyc29uIHY6YWdlID9hZ2UgfSIpLnNlbGVjdCgibmFtZSIpLnRvTGlzdCgpOworICAgICAgICBhc3NlcnRUaGF0KHgsIGNvbnRhaW5zSW5BbnlPcmRlcigibWFya28iLCAidmFkYXMiLCAiam9zaCIsICJwZXRlciIpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFN0YXJ0V2l0aFNwYXJxbFJldHVybmluZ1ZlcnRleEFuZEVuZFdpdGhHcmVtbGluKCkgeworICAgICAgICBmaW5hbCBMaXN0PD8+IHggPSBnLnNwYXJxbCgiU0VMRUNUICogV0hFUkUgeyB9Iikub3V0KCJrbm93cyIpLnZhbHVlcygibmFtZSIpLnRvTGlzdCgpOworICAgICAgICBhc3NlcnRUaGF0KHgsIGNvbnRhaW5zSW5BbnlPcmRlcigidmFkYXMiLCAiam9zaCIpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFN0YXJ0V2l0aFNwYXJxbFVzaW5nU2Fja3NBbmRFbmRXaXRoR3JlbWxpbigpIHsKKyAgICAgICAgZmluYWwgTGlzdDw/PiB4ID0gZy53aXRoU2FjaygxLjBmKS5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLnJlcGVhdCgKKyAgICAgICAgICAgICAgICAoVHJhdmVyc2FsKSBvdXRFKCkuc2FjayhtdWx0KS5ieSgid2VpZ2h0IikuaW5WKCkpLnRpbWVzKDIpLnNhY2soKS50b0xpc3QoKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh4LCBjb250YWluc0luQW55T3JkZXIoMS4wLCAwLjQpKTsKKyAgICB9CisgICAgCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kQWxsUGVyc29uc05hbWVzQW5kQWdlcygpIHsKKyAgICAgICAgZmluYWwgTGlzdDw/PiB4ID0gZy5zcGFycWwoIlNFTEVDVCA/bmFtZSA/YWdlIFdIRVJFIHsgP3BlcnNvbiB2Om5hbWUgP25hbWUgLiA/cGVyc29uIHY6YWdlID9hZ2UgfSIpLnRvTGlzdCgpOworICAgICAgICBhc3NlcnRUaGF0KHgsIGNvbnRhaW5zSW5BbnlPcmRlcigKKyAgICAgICAgICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJuYW1lIiwgIm1hcmtvIik7CisgICAgICAgICAgICAgICAgICAgIHB1dCgiYWdlIiwgMjkpOworICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgIG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCl7eworICAgICAgICAgICAgICAgICAgICBwdXQoIm5hbWUiLCAidmFkYXMiKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJhZ2UiLCAyNyk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKXt7CisgICAgICAgICAgICAgICAgICAgIHB1dCgibmFtZSIsICJqb3NoIik7CisgICAgICAgICAgICAgICAgICAgIHB1dCgiYWdlIiwgMzIpOworICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgIG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCl7eworICAgICAgICAgICAgICAgICAgICBwdXQoIm5hbWUiLCAicGV0ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJhZ2UiLCAzNSk7CisgICAgICAgICAgICAgICAgfX0KKyAgICAgICAgKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kQWxsUGVyc29uc05hbWVzQW5kQWdlc09yZGVyZWQoKSB7CisgICAgICAgIGZpbmFsIExpc3Q8Pz4geCA9IGcuc3BhcnFsKCJTRUxFQ1QgP25hbWUgP2FnZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0gT1JERVIgQlkgQVNDKD9hZ2UpIikudG9MaXN0KCk7CisgICAgICAgIGFzc2VydFRoYXQoeCwgY29udGFpbnMoCisgICAgICAgICAgICAgICAgbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKXt7CisgICAgICAgICAgICAgICAgICAgIHB1dCgibmFtZSIsICJ2YWRhcyIpOworICAgICAgICAgICAgICAgICAgICBwdXQoImFnZSIsIDI3KTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJuYW1lIiwgIm1hcmtvIik7CisgICAgICAgICAgICAgICAgICAgIHB1dCgiYWdlIiwgMjkpOworICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgIG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCl7eworICAgICAgICAgICAgICAgICAgICBwdXQoIm5hbWUiLCAiam9zaCIpOworICAgICAgICAgICAgICAgICAgICBwdXQoImFnZSIsIDMyKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJuYW1lIiwgInBldGVyIik7CisgICAgICAgICAgICAgICAgICAgIHB1dCgiYWdlIiwgMzUpOworICAgICAgICAgICAgICAgIH19CisgICAgICAgICkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZEFsbE5hbWVzT3JkZXJlZCgpIHsKKyAgICAgICAgZmluYWwgTGlzdDw/PiB4ID0gZy5zcGFycWwoIlNFTEVDVCA/bmFtZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIH0gT1JERVIgQlkgREVTQyg/bmFtZSkiKS50b0xpc3QoKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh4LCBjb250YWlucygidmFkYXMiLCAicmlwcGxlIiwgInBldGVyIiwgIm1hcmtvIiwgImxvcCIsICJqb3NoIikpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRmlsdGVyKCkgeworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLFZlcnRleD4geCA9IChNYXApIGcuc3BhcnFsKCAgIlNFTEVDVCA/YSA/YiA/Y1xuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0hFUkUge1xuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICA/YSB2OmxhYmVsIFwicGVyc29uXCIgLlxuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICA/YSBlOmtub3dzID9iIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgP2EgZTpjcmVhdGVkID9jIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgP2IgZTpjcmVhdGVkID9jIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgP2EgdjphZ2UgP2QgLlxuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIEZJTFRFUiAoP2QgPCAzMClcbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn0iKS5uZXh0KCk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHguZ2V0KCJhIiksIF9nLlYoMSkubmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHguZ2V0KCJiIiksIF9nLlYoNCkubmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHguZ2V0KCJjIiksIF9nLlYoMykubmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHguc2l6ZSgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbHRlck11bHRpKCkgeworICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gbmFtZXMgPSAoTGlzdDxTdHJpbmc+KSBnLnNwYXJxbCggICJTRUxFQ1QgRElTVElOQ1QgP25hbWVcbiIgKworICAgICAgICAgICAgICAgICJXSEVSRSB7XG4iICsKKyAgICAgICAgICAgICAgICAiP3BlcnNvbiB2OmxhYmVsIFwicGVyc29uXCIgLlxuIiArCisgICAgICAgICAgICAgICAgIj9wZXJzb24gdjphZ2UgP2FnZSAuXG4iICsKKyAgICAgICAgICAgICAgICAiP3BlcnNvbiBlOmNyZWF0ZWQgP3Byb2plY3QgLlxuIiArCisgICAgICAgICAgICAgICAgIj9wcm9qZWN0IHY6bmFtZSA/bmFtZSAuXG4iICsKKyAgICAgICAgICAgICAgICAiP3Byb2plY3QgdjpsYW5nID9sYW5nIC5cbiIgKworICAgICAgICAgICAgICAgICJGSUxURVIgKD9hZ2UgPiAzMCAgJiYgP2xhbmcgPSBcImphdmFcIikgfSIpLnRvTGlzdCgpOworCisgICAgICAgIGFzc2VydFRoYXQobmFtZXMsIGNvbnRhaW5zSW5BbnlPcmRlcigicmlwcGxlIiwgImxvcCIpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZERpc3RpbmN0KCkgeworICAgICAgICBmaW5hbCBMaXN0PD8+IHggPSBnLnNwYXJxbCgKKyAgICAgICAgICAgICAgICAiU0VMRUNUIERJU1RJTkNUID9uYW1lXG4iICsKKyAgICAgICAgICAgICAgICAiV0hFUkUge1xuIiArCisgICAgICAgICAgICAgICAgIiAgICA/YSBlOmNyZWF0ZWQgP2IgLlxuIiArCisgICAgICAgICAgICAgICAgIiAgICA/YSB2Om5hbWUgP25hbWUgLlxuIiArCisgICAgICAgICAgICAgICAgIn0iKS50b0xpc3QoKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh4LCBjb250YWluc0luQW55T3JkZXIoIm1hcmtvIiwgImpvc2giLCAicGV0ZXIiKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGREaXN0aW5jdEFuZE9yZGVyKCkgeworICAgICAgICBmaW5hbCBMaXN0PD8+IHggPSBnLnNwYXJxbCgKKyAgICAgICAgICAgICAgICAiU0VMRUNUIERJU1RJTkNUID9uYW1lXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICJXSEVSRSB7XG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgP2EgZTpjcmVhdGVkID9iIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA/YSB2Om5hbWUgP25hbWUgLlxuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAifSIgKworICAgICAgICAgICAgICAgICAgICAgICAgIk9SREVSIEJZID9uYW1lIikudG9MaXN0KCk7CisgICAgICAgIGFzc2VydFRoYXQoeCwgY29udGFpbnMoImpvc2giLCAibWFya28iLCAicGV0ZXIiKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRHcm91cCgpIHsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxMb25nPiB4ID0gKE1hcCkgZy5zcGFycWwoCisgICAgICAgICAgICAgICAgIlNFTEVDVCA/bmFtZSAoQ09VTlQoP25hbWUpIEFTID9uYW1lX2NvdW50KVxuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiV0hFUkUge1xuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiICAgID9hIGU6Y3JlYXRlZCA/YiAuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgP2EgdjpuYW1lID9uYW1lIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIn0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICJHUk9VUCBCWSA/bmFtZSIpLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5ldyBMb25nKDIpLCB4LmdldCgiam9zaCIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5ldyBMb25nKDEpLCB4LmdldCgicGV0ZXIiKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhuZXcgTG9uZygxKSwgeC5nZXQoIm1hcmtvIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoMywgeC5zaXplKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai1zaWxlbnQucHJvcGVydGllcyBiL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai1zaWxlbnQucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODI1YmIwCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXNpbGVudC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMjMgQEAKKyMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisjICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCisjIHRoaXMgZmlsZSBzaG91bGQgYWx3YXlzIGhhdmUgbG9nZ2luZyBzZXQgdG8gT0ZGLiAgaXQgc2VlbXMsIGhvd2V2ZXIsIHRoYXQgYW4gYXBwZW5kZXIgb2Ygc29tZSBzb3J0IGlzCisjIHJlcXVpcmVkIG9yIGVsc2Ugc29tZSBsb2dzIHRocm93IGVycm9yIGFuZCB1c2Ugb3RoZXIgbG9nNGoucHJvcGVydGllcyBmaWxlcyBvbiB0aGUgcGF0aC4KK2xvZzRqLnJvb3RMb2dnZXI9T0ZGLCBzdGRvdXQKK2xvZzRqLmFwcGVuZGVyLnN0ZG91dD1vcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlcgorbG9nNGouYXBwZW5kZXIuc3Rkb3V0LmxheW91dD1vcmcuYXBhY2hlLmxvZzRqLlBhdHRlcm5MYXlvdXQKK2xvZzRqLmFwcGVuZGVyLnN0ZG91dC5sYXlvdXQuQ29udmVyc2lvblBhdHRlcm49WyVwXSAlQyAtICVtJW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9yZXNvdXJjZXMvbG9nNGotdGVzdC5wcm9wZXJ0aWVzIGIvc3BhcnFsLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXRlc3QucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTAzOGIxCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXRlc3QucHJvcGVydGllcwpAQCAtMCwwICsxLDIzIEBACisjCisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCitsb2c0ai5yb290TG9nZ2VyPVdBUk4sIHN0ZG91dAorbG9nNGouYXBwZW5kZXIuc3Rkb3V0PW9yZy5hcGFjaGUubG9nNGouQ29uc29sZUFwcGVuZGVyCitsb2c0ai5hcHBlbmRlci5zdGRvdXQubGF5b3V0PW9yZy5hcGFjaGUubG9nNGouUGF0dGVybkxheW91dAorbG9nNGouYXBwZW5kZXIuc3Rkb3V0LmxheW91dC5Db252ZXJzaW9uUGF0dGVybj1bJXBdICVDIC0gJW0lbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3RpbmtlcmdyYXBoLWdyZW1saW4vcG9tLnhtbCBiL3RpbmtlcmdyYXBoLWdyZW1saW4vcG9tLnhtbAppbmRleCBhMjM0OTZhLi4wOWUxYTY5IDEwMDY0NAotLS0gYS90aW5rZXJncmFwaC1ncmVtbGluL3BvbS54bWwKKysrIGIvdGlua2VyZ3JhcGgtZ3JlbWxpbi9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD50aW5rZXJncmFwaC1ncmVtbGluPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogVGlua2VyR3JhcGggR3JlbWxpbjwvbmFtZT4KZGlmZiAtLWdpdCBhL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9UaW5rZXJHcmFwaElvU3RlcFRlc3QuamF2YSBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9UaW5rZXJHcmFwaElvU3RlcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmFiN2RhCi0tLSAvZGV2L251bGwKKysrIGIvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L1RpbmtlckdyYXBoSW9TdGVwVGVzdC5qYXZhCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLklPOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLnV0aWwuQ3VzdG9tSWQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyR3JhcGg7CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOworCisvKioKKyAqIEl0IHdhcyBoYXJkIHRvIHRlc3QgdGhlIHtAbGluayBJTyNyZWdpc3RyeX0gY29uZmlndXJhdGlvbiBhcyBhIGdlbmVyaWMgdGVzdC4gT3B0ZWQgdG8gdGVzdCBpdCBhcyBhIGJpdCBvZiBhCisgKiBzdGFuZGFsb25lIHRlc3Qgd2l0aCBUaW5rZXJHcmFwaC4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBUaW5rZXJHcmFwaElvU3RlcFRlc3QgeworCisgICAgcHJpdmF0ZSBHcmFwaCBncmFwaDsKKyAgICBwcml2YXRlIEdyYXBoVHJhdmVyc2FsU291cmNlIGc7CisKKyAgICBAQmVmb3JlCisgICAgcHVibGljIHZvaWQgc2V0dXAoKSB7CisgICAgICAgIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOworICAgICAgICBnID0gZ3JhcGgudHJhdmVyc2FsKCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRXcml0ZVJlYWRXaXRoQ3VzdG9tSW9SZWdpc3RyeUdyeW8oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgVVVJRCB1dWlkID0gVVVJRC5yYW5kb21VVUlEKCk7CisgICAgICAgIGcuYWRkVigicGVyc29uIikucHJvcGVydHkoIm5hbWUiLCJzdGVwaGVuIikucHJvcGVydHkoImN1c3RvbSIsIG5ldyBDdXN0b21JZCgiYSIsIHV1aWQpKS5pdGVyYXRlKCk7CisKKyAgICAgICAgZmluYWwgRmlsZSBmaWxlID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKFRpbmtlckdyYXBoSW9TdGVwVGVzdC5jbGFzcywgInNob3VsZFdyaXRlUmVhZFdpdGhDdXN0b21Jb1JlZ2lzdHJ5R3J5byIsICIua3J5byIpOworICAgICAgICBnLmlvKGZpbGUuZ2V0QWJzb2x1dGVQYXRoKCkpLndpdGgoSU8ucmVnaXN0cnksIEN1c3RvbUlkLkN1c3RvbUlkSW9SZWdpc3RyeS5jbGFzcy5nZXROYW1lKCkpLndyaXRlKCkuaXRlcmF0ZSgpOworCisgICAgICAgIGZpbmFsIEdyYXBoIGVtcHR5R3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGVtcHR5RyA9IGVtcHR5R3JhcGgudHJhdmVyc2FsKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGVtcHR5Ry5pbyhmaWxlLmdldEFic29sdXRlUGF0aCgpKS5yZWFkKCkuaXRlcmF0ZSgpOworICAgICAgICAgICAgZmFpbCgiQ2FuJ3QgcmVhZCB3aXRob3V0IGEgcmVnaXN0cnkiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGlnbm9yZWQpIHsKKyAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcKKyAgICAgICAgfQorCisgICAgICAgIGVtcHR5Ry5pbyhmaWxlLmdldEFic29sdXRlUGF0aCgpKS53aXRoKElPLnJlZ2lzdHJ5LCBDdXN0b21JZC5DdXN0b21JZElvUmVnaXN0cnkuaW5zdGFuY2UoKSkucmVhZCgpLml0ZXJhdGUoKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZW1wdHlHLlYoKS5oYXMoImN1c3RvbSIsIG5ldyBDdXN0b21JZCgiYSIsIHV1aWQpKS5jb3VudCgpLm5leHQoKS5pbnRWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFdyaXRlUmVhZFdpdGhDdXN0b21Jb1JlZ2lzdHJ5R3JhcGhTT04oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgVVVJRCB1dWlkID0gVVVJRC5yYW5kb21VVUlEKCk7CisgICAgICAgIGcuYWRkVigicGVyc29uIikucHJvcGVydHkoIm5hbWUiLCJzdGVwaGVuIikucHJvcGVydHkoImN1c3RvbSIsIG5ldyBDdXN0b21JZCgiYSIsIHV1aWQpKS5pdGVyYXRlKCk7CisKKyAgICAgICAgZmluYWwgRmlsZSBmaWxlID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKFRpbmtlckdyYXBoSW9TdGVwVGVzdC5jbGFzcywgInNob3VsZFdyaXRlUmVhZFdpdGhDdXN0b21Jb1JlZ2lzdHJ5R3JhcGhTT04iLCAiLmpzb24iKTsKKyAgICAgICAgZy5pbyhmaWxlLmdldEFic29sdXRlUGF0aCgpKS53aXRoKElPLnJlZ2lzdHJ5LCBDdXN0b21JZC5DdXN0b21JZElvUmVnaXN0cnkuY2xhc3MuZ2V0TmFtZSgpKS53cml0ZSgpLml0ZXJhdGUoKTsKKworICAgICAgICBmaW5hbCBHcmFwaCBlbXB0eUdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBlbXB0eUcgPSBlbXB0eUdyYXBoLnRyYXZlcnNhbCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBlbXB0eUcuaW8oZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSkucmVhZCgpLml0ZXJhdGUoKTsKKyAgICAgICAgICAgIGZhaWwoIkNhbid0IHJlYWQgd2l0aG91dCBhIHJlZ2lzdHJ5Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CisgICAgICAgICAgICAvLyBkbyBub3RoaW5nCisgICAgICAgIH0KKworICAgICAgICBlbXB0eUcuaW8oZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSkud2l0aChJTy5yZWdpc3RyeSwgQ3VzdG9tSWQuQ3VzdG9tSWRJb1JlZ2lzdHJ5Lmluc3RhbmNlKCkpLnJlYWQoKS5pdGVyYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGVtcHR5Ry5WKCkuaGFzKCJjdXN0b20iLCBuZXcgQ3VzdG9tSWQoImEiLCB1dWlkKSkuY291bnQoKS5uZXh0KCkuaW50VmFsdWUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9PcHRpb25zU3RyYXRlZ3lUZXN0LmphdmEgYi90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTM5OTUzCi0tLSAvZGV2L251bGwKKysrIGIvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9PcHRpb25zU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGgucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWFwU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uT3B0aW9uc1N0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckdyYXBoOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlcnMuY29udGFpbnM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VGhhdDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBPcHRpb25zU3RyYXRlZ3lUZXN0IHsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkQWRkT3B0aW9uc1RvVHJhdmVyc2FsKCkgeworICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugb3B0aW9uZWRHID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoT3B0aW9uc1N0cmF0ZWd5LmJ1aWxkKCkud2l0aCgiYSIsICJ0ZXN0Iikud2l0aCgiYiIpLmNyZWF0ZSgpKTsKKyAgICAgICAgYXNzZXJ0T3B0aW9ucyhvcHRpb25lZEcpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkQWRkT3B0aW9uc1RvVHJhdmVyc2FsVXNpbmdXaXRoKCkgeworICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugb3B0aW9uZWRHID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aCgiYSIsICJ0ZXN0Iikud2l0aCgiYiIpOworICAgICAgICBhc3NlcnRPcHRpb25zKG9wdGlvbmVkRyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBhc3NlcnRPcHRpb25zKGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIG9wdGlvbmVkRykgeworICAgICAgICBHcmFwaFRyYXZlcnNhbCB0ID0gb3B0aW9uZWRHLmluamVjdCgxKTsKKyAgICAgICAgdCA9IHQuYXNBZG1pbigpLmFkZFN0ZXAobmV3IE1hcFN0ZXA8T2JqZWN0LCBPYmplY3Q+KHQuYXNBZG1pbigpKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHByb3RlY3RlZCBPYmplY3QgbWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxPYmplY3Q+IHRyYXZlcnNlcikgeworICAgICAgICAgICAgICAgIGZpbmFsIE9wdGlvbnNTdHJhdGVneSBzdHJhdGVneSA9IHRyYXZlcnNhbC5hc0FkbWluKCkuZ2V0U3RyYXRlZ2llcygpLmdldFN0cmF0ZWd5KE9wdGlvbnNTdHJhdGVneS5jbGFzcykuZ2V0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3Qoc3RyYXRlZ3kuZ2V0T3B0aW9ucygpLmdldCgiYSIpLCBzdHJhdGVneS5nZXRPcHRpb25zKCkuZ2V0KCJiIikpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0VGhhdCgoQ29sbGVjdGlvbjxPYmplY3Q+KSB0Lm5leHQoKSwgY29udGFpbnMoInRlc3QiLCB0cnVlKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvc3RydWN0dXJlL1RpbmtlckdyYXBoUGxheVRlc3QuamF2YSBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9UaW5rZXJHcmFwaFBsYXlUZXN0LmphdmEKaW5kZXggN2Y2NzZhYy4uZjRhMGEwYSAxMDA2NDQKLS0tIGEvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvc3RydWN0dXJlL1RpbmtlckdyYXBoUGxheVRlc3QuamF2YQorKysgYi90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvVGlua2VyR3JhcGhQbGF5VGVzdC5qYXZhCkBAIC0xOSwxNCArMTksMTIgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmU7CiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcmRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5ldmVudC5Db25zb2xlTXV0YXRpb25MaXN0ZW5lcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRXZlbnRTdHJhdGVneTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5FYXJseUxpbWl0U3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uUGF0aFJldHJhY3Rpb25TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwpAQCAtNDUsMTQgKzQzLDkgQEAKIGltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uU3VwcGxpZXI7CiAKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvci5zdW07Ci1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC5iZXR3ZWVuOwotaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAuZ3Q7Ci1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC5ndGU7Ci1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC5sdDsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QLm5lcTsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uYXM7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmJvdGg7Ci1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmJyYW5jaDsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uY2hvb3NlOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5jb25zdGFudDsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uaGFzOwpAQCAtNjIsNyArNTUsNiBAQAogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5zZWxlY3Q7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLnVuaW9uOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy52YWx1ZU1hcDsKLWltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18udmFsdWVzOwogCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKQEAgLTEzOSw3ICsxMzEsNiBAQAogICAgIEBUZXN0CiAgICAgQElnbm9yZQogICAgIHB1YmxpYyB2b2lkIHRlc3RQbGF5REsoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLQogICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKICAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneSBzdHJhdGVneSA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihuZXcgQ29uc29sZU11dGF0aW9uTGlzdGVuZXIoZ3JhcGgpKS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKHN0cmF0ZWd5KTsKZGlmZiAtLWdpdCBhL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9BYnN0cmFjdFRpbmtlckdyYXBoR3JhcGhTT05UcmFuc2xhdG9yUHJvdmlkZXIuamF2YSBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9BYnN0cmFjdFRpbmtlckdyYXBoR3JhcGhTT05UcmFuc2xhdG9yUHJvdmlkZXIuamF2YQppbmRleCAzMGI5MDYyLi40ZDRlZTAwIDEwMDY0NAotLS0gYS90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vQWJzdHJhY3RUaW5rZXJHcmFwaEdyYXBoU09OVHJhbnNsYXRvclByb3ZpZGVyLmphdmEKKysrIGIvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvc3RydWN0dXJlL2lvL2dyYXBoc29uL0Fic3RyYWN0VGlua2VyR3JhcGhHcmFwaFNPTlRyYW5zbGF0b3JQcm92aWRlci5qYXZhCkBAIC0yMTcsOSArMjE3LDIxIEBACiAgICAgICAgIG1ldGhvZCA9ICJzaG91bGROZXZlclByb3BhZ2F0ZUFOdWxsVmFsdWVkVHJhdmVyc2VyIiwKICAgICAgICAgcmVhc29uID0gIlJlYXNvbiByZXF1aXJlcyBpbnZlc3RpZ2F0aW9uIikKIEBHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gInJlYWQgYW5kIHdyaXRlIHRlc3RzIGRvbid0IHRyYW5zbGF0ZSBsb2NhbGx5IHdlbGwgYmVjYXVzZSBvZiBjYWxsaW5nIGl0ZXJhdGUoKSBpbnNpZGUgcmVhZCgpL3dyaXRlKCkgYWRkIGEgbm9uZSgpIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJyZWFkIGFuZCB3cml0ZSB0ZXN0cyBkb24ndCB0cmFuc2xhdGUgbG9jYWxseSB3ZWxsIGJlY2F1c2Ugb2YgY2FsbGluZyBpdGVyYXRlKCkgaW5zaWRlIHJlYWQoKS93cml0ZSgpIGFkZCBhIG5vbmUoKSIpCitAR3JhcGguT3B0T3V0KAogICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlN0b3JlVGVzdCIsCiAgICAgICAgIG1ldGhvZCA9ICJnX3dpdGhTaWRlRWZmZWN0WGFfc2V0WF9WX2JvdGhfbmFtZV9zdG9yZVhhWF9jYXBYYVgiLAogICAgICAgICByZWFzb24gPSAiVGhpcyB0ZXN0IHJldHVybnMgQnVsa1NldCB3aGljaCBpc24ndCBzdXBwb3J0ZWQgaW4gR3JhcGhTT04gMy4wIHVudGlsIDMuNC4wLiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkFnZ3JlZ2F0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfYWdncmVnYXRlWGxvY2FsX2FYX2NhcFhhWCIsCisgICAgICAgIHJlYXNvbiA9ICJUaGlzIHRlc3QgcmV0dXJucyBCdWxrU2V0IHdoaWNoIGlzbid0IHN1cHBvcnRlZCBpbiBHcmFwaFNPTiAzLjAgdW50aWwgMy40LjAuIikKIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRpbmtlckdyYXBoR3JhcGhTT05UcmFuc2xhdG9yUHJvdmlkZXIgZXh0ZW5kcyBUaW5rZXJHcmFwaFByb3ZpZGVyIHsKIAogICAgIHByaXZhdGUgZmluYWwgR3JhcGhTT05WZXJzaW9uIHZlcnNpb247CmRpZmYgLS1naXQgYS90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvaW8vZ3J5by9UaW5rZXJHcmFwaEdyeW9UcmFuc2xhdG9yUHJvdmlkZXIuamF2YSBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9pby9ncnlvL1RpbmtlckdyYXBoR3J5b1RyYW5zbGF0b3JQcm92aWRlci5qYXZhCmluZGV4IDdhN2Q2ZWMuLmQ2ZDkzYTAgMTAwNjQ0Ci0tLSBhL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9pby9ncnlvL1RpbmtlckdyYXBoR3J5b1RyYW5zbGF0b3JQcm92aWRlci5qYXZhCisrKyBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9pby9ncnlvL1RpbmtlckdyYXBoR3J5b1RyYW5zbGF0b3JQcm92aWRlci5qYXZhCkBAIC0yMTIsNiArMjEyLDE0IEBACiAgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Db3JlVHJhdmVyc2FsVGVzdCIsCiAgICAgICAgIG1ldGhvZCA9ICJzaG91bGROZXZlclByb3BhZ2F0ZUFOdWxsVmFsdWVkVHJhdmVyc2VyIiwKICAgICAgICAgcmVhc29uID0gIlJlYXNvbiByZXF1aXJlcyBpbnZlc3RpZ2F0aW9uIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gInJlYWQgYW5kIHdyaXRlIHRlc3RzIGRvbid0IHRyYW5zbGF0ZSBsb2NhbGx5IHdlbGwgYmVjYXVzZSBvZiBjYWxsaW5nIGl0ZXJhdGUoKSBpbnNpZGUgcmVhZCgpL3dyaXRlKCkgYWRkIGEgbm9uZSgpIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJyZWFkIGFuZCB3cml0ZSB0ZXN0cyBkb24ndCB0cmFuc2xhdGUgbG9jYWxseSB3ZWxsIGJlY2F1c2Ugb2YgY2FsbGluZyBpdGVyYXRlKCkgaW5zaWRlIHJlYWQoKS93cml0ZSgpIGFkZCBhIG5vbmUoKSIpCiBwdWJsaWMgY2xhc3MgVGlua2VyR3JhcGhHcnlvVHJhbnNsYXRvclByb3ZpZGVyIGV4dGVuZHMgVGlua2VyR3JhcGhQcm92aWRlciB7CiAKICAgICBAT3ZlcnJpZGUK