public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: doparsons@rev.net To: gcc-gnats@gcc.gnu.org Subject: libgcj/9696: read fail on gij or compiled when object contains user objects Date: Thu, 13 Feb 2003 19:16:00 -0000 [thread overview] Message-ID: <20030213191512.1120.qmail@sources.redhat.com> (raw) >Number: 9696 >Category: libgcj >Synopsis: read fail on gij or compiled when object contains user objects >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Feb 13 19:16:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Doug Parsons >Release: gcc 3.2.2 >Organization: >Environment: Linux Debian Potato 2.2 libc 2.3.1 Pent 200MMX >Description: After writing a object to file that contains a user defined object reference, in this case Printer pnt = new Printer(); cannot be read back in by GIJ or compiled code. I have worked around the problem by having a class that only contains primitive types and arrays of primitive types. >How-To-Repeat: Open files and run in ibm jvm. Run twice. Requires directory usr/local to be present. On first run error message will indicate that file cannot be read. On second run no message. Reads file written on first run. Erase file created in usr/local called "info" (bad choice of name). Run program in GIJ twice. Will give error on all runs. Follow by running ibm jvm without removing file. Gives no error, indicating that the file was written properly but failing to read. When tracing the problem the object in SetupIO that was read in is not null, but upon returning to the main the assignment produces a null object. By removing the reference to the user object in Settings.java, remove line Printer pnt = new Printer();, the program will run with no error message. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-tar; name="Tst.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Tst.tar" dXNyL3RzdC9Uc3QvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NTUAMDAwMDAw MAAwMDAwMDAwADAwMDAwMDAwMDAwADA3NjIwMTA1NDM2ADAxMTc2MAAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 c3IvdHN0L1RzdC9GaXNoRHVtcC5jbGFzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAw ADAwMDAwMDAAMDAwMDAwMDE0MDUAMDc2MjAxMDM1MzcAMDE0NTIzACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMr+ ur4AAwAtADEBAAxUc3QvRmlzaER1bXAHAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAEaW5mbwEA DkxUc3QvU2V0dGluZ3M7AQAEbWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlCAAF AQALVHN0L1NldHVwSU8HAAsBAApvcGVuSW5GaWxlAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2 YS9sYW5nL09iamVjdDsMAA0ADgoADAAPAQAMVHN0L1NldHRpbmdzBwARDAAFAAYJAAIAEwEAEGph dmEvbGFuZy9TeXN0ZW0HABUBAANvdXQBABVMamF2YS9pby9QcmludFN0cmVhbTsMABcAGAkAFgAZ AQAwRXJyb3IgbG9hZGluZyBTZXR0aW5ncy4gRGVmYXVsdCBzZXR0aW5ncyBsb2FkZWQuCAAbAQAT amF2YS9pby9QcmludFN0cmVhbQcAHQEAB3ByaW50bG4BABUoTGphdmEvbGFuZy9TdHJpbmc7KVYM AB8AIAoAHgAhAQAGPGluaXQ+AQADKClWDAAjACQKABIAJQEAC29wZW5PdXRGaWxlAQAnKExqYXZh L2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvU3RyaW5nOylJDAAnACgKAAwAKQEAHmphdmEvbGFuZy9O dWxsUG9pbnRlckV4Y2VwdGlvbgcAKwEAD0xpbmVOdW1iZXJUYWJsZQoABAAlAQAKU291cmNlRmls ZQEADUZpc2hEdW1wLmphdmEAIQACAAQAAAABAAgABQAGAAAAAgAJAAcACAABAAkAAABtAAIAAgAA ADUSCrgAEMAAErMAFKcACEwBswAUsgAUxwAesgAaEhy2ACK7ABJZtwAmswAUsgAUEgq4ACo8sQAB AAAACwAOACwAAQAtAAAAHgAHAAAADgAOAA8ADwAQABMAFAAZABYAIQAXACsAGAABACMAJAABAAkA AAARAAEAAQAAAAUqtwAusQAAAAAAAQAvAAAAAgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3Iv dHN0L1RzdC9Db25zb2xlLmphdmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDQ0NAAwMDAwMDAwADAw MDAwMDAAMDAwMDAwMTAxMDQAMDc2MTc2MzA3MTYAMDE0MjI2ACAwAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhY2th Z2UgVHN0Ow0KcHVibGljIGNsYXNzIENvbnNvbGUNCnsgIC8qKg0KCSogcHJpbnQgYSBwcm9tcHQg b24gdGhlIGNvbnNvbGUgYnV0IGRvbid0IHByaW50IGEgbmV3bGluZQ0KCSogQHBhcmFtIHByb21w dCB0aGUgcHJvbXB0IHN0cmluZyB0byBkaXNwbGF5DQoJKi8NCg0KICAgcHVibGljIHN0YXRpYyB2 b2lkIHByaW50UHJvbXB0KFN0cmluZyBwcm9tcHQpDQogICB7ICBTeXN0ZW0ub3V0LnByaW50KHBy b21wdCArICIgIik7DQoJICBTeXN0ZW0ub3V0LmZsdXNoKCk7DQogICB9ICAgICAgICAgDQogICAN CiAgIC8qKg0KCSogcmVhZCBhIGNoYXIgb3Igc3RyaW5nIGZyb20gdGhlIGNvbnNvbGUuIFRoZSBz dHJpbmcgaXMgDQoJKiB0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZQ0KCSogQHJldHVybiB0aGUgZmly c3QgY2hhcmFjdGVyIGFzIGEgY2hhciAod2l0aG91dCB0aGUgbmV3bGluZSkNCgkqLw0KCQ0KDQog ICBwdWJsaWMgc3RhdGljIGNoYXIgcmVhZENoYXIoKQ0KICAgew0KCWNoYXIgY2g9JyAnOw0KCXRy eQ0KCQkgeyAgDQoJCWNoID0gKGNoYXIpIFN5c3RlbS5pbi5yZWFkKCk7DQoJCQkNCgkJIH0NCgkJ IGNhdGNoKGphdmEuaW8uSU9FeGNlcHRpb24gZSkNCgkJIHsgIA0KCQkNCgkJIH0NCglyZXR1cm4g Y2g7DQogICB9ICAgICAgICAgCQ0KICAgDQogICBwdWJsaWMgc3RhdGljIGNoYXIgcmVhZENoYXIo U3RyaW5nIHByb21wdCkNCiAgIHsNCgkJcHJpbnRQcm9tcHQocHJvbXB0KTsNCgkJcmV0dXJuIHJl YWRDaGFyKCk7DQogICB9ICAgICAgICAgDQoNCg0KDQogICAvKioNCgkqIHJlYWQgYSBjaGFyIG9y IHN0cmluZyBmcm9tIHRoZSBjb25zb2xlLiBJdCBtdXN0IHN0YXJ0IHdpdGggVCBvciBGLg0KCSog IFRoZSBzdHJpbmcgaXMgdGVybWluYXRlZCBieSBhIG5ld2xpbmUuICBJZiB0aGUgZmlyc3QgY2hh cmFjdGVyDQoJKiAgaXMgYW4gZiwgdGhlIGJvb2xlYW4gZmFsc2UgaXMgcmV0dXJuZWQgb3IgdHJ1 ZSBmb3IgYSBULg0KCSogDQoJKi8NCg0KCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiByZWFkQm9vbGVh bigpDQogICB7DQoJYm9vbGVhbiBkb25lID0gZmFsc2U7DQoJICBjaGFyIGNoPScgJzsgDQoJCWRv IHsNCgkJCQ0KCQkgICANCgkJCXRyeQ0KCQkJeyAgDQoJCQkJY2ggPSAoY2hhcikgU3lzdGVtLmlu LnJlYWQoKTsNCgkJCQkNCgkJCX0NCgkJCWNhdGNoIChqYXZhLmlvLklPRXhjZXB0aW9uIGUpDQoJ CQl7DQoJCQl9DQoJCSANCgkJCWlmIChjaD09J1QnIHx8IGNoID09ICd0JyB8fCBjaCA9PSAnRicg fHwgY2ggPT0gJ2YnKQ0KCQkJCSBkb25lID0gdHJ1ZTsNCgkJCQ0KCQl9IHdoaWxlICghZG9uZSk7 DQoNCgkgICAgaWYgKGNoPT0nVCcgfHwgY2ggPT0gJ3QnKQ0KCSAgICAgICAgcmV0dXJuIHRydWU7 DQoJICAgIGVsc2UNCgkgICAgICAgIHJldHVybiBmYWxzZTsgICAgDQoNCg0KICAgfSAgICAgDQog ICAvKiogcmVhZHMgYSBCb29sZWFuIGZyb20gdGhlIGtleWJvYXJkDQoJKiAgIHJldHVybnMgdGhl IEJvb2xlYW4NCgkqLyAgCQ0KICAgDQogICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVhZEJvb2xl YW4oU3RyaW5nIHByb21wdCkNCiAgIHsNCgkJcHJpbnRQcm9tcHQocHJvbXB0KTsNCgkJcmV0dXJu IHJlYWRCb29sZWFuKCk7DQogICB9ICAgICAgICAgDQoNCg0KDQogICANCgkNCiAgIA0KICAgLyoq DQoJKiByZWFkIGEgc3RyaW5nIGZyb20gdGhlIGNvbnNvbGUuIFRoZSBzdHJpbmcgaXMgDQoJKiB0 ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZQ0KCSogQHJldHVybiB0aGUgaW5wdXQgc3RyaW5nICh3aXRo b3V0IHRoZSBuZXdsaW5lKQ0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIFN0cmluZyByZWFkU3Ry aW5nKCkNCiAgIHsgIGludCBjaDsNCgkgIFN0cmluZyByID0gIiI7DQoJICBib29sZWFuIGRvbmUg PSBmYWxzZTsNCgkgIHdoaWxlICghZG9uZSkNCgkgIHsgIHRyeQ0KCQkgeyAgY2ggPSBTeXN0ZW0u aW4ucmVhZCgpOw0KCQkJaWYgKGNoIDwgMCB8fCAoY2hhciljaCA9PSAnXG4nKQ0KCQkJICAgZG9u ZSA9IHRydWU7DQoJCQllbHNlIGlmICgoY2hhciljaCAhPSAnXHInKSAvLyB3ZWlyZC0taXQgdXNl ZCB0byBkbyBcclxuIHRyYW5zbGF0aW9uDQoJCQkgICByID0gciArIChjaGFyKSBjaDsNCgkJIH0N CgkJIGNhdGNoKGphdmEuaW8uSU9FeGNlcHRpb24gZSkNCgkJIHsgIGRvbmUgPSB0cnVlOw0KCQkg fQ0KCSAgfQ0KCSAgcmV0dXJuIHI7DQogICB9ICAgICAgICAgDQoNCiAgIC8qKg0KCSogcmVhZCBh IHN0cmluZyBmcm9tIHRoZSBjb25zb2xlLiBUaGUgc3RyaW5nIGlzIA0KCSogdGVybWluYXRlZCBi eSBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQgdGhlIHByb21wdCBzdHJpbmcgdG8gZGlzcGxh eQ0KCSogQHJldHVybiB0aGUgaW5wdXQgc3RyaW5nICh3aXRob3V0IHRoZSBuZXdsaW5lKQ0KCSov DQoJDQogICBwdWJsaWMgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nKFN0cmluZyBwcm9tcHQpDQog ICB7ICBwcmludFByb21wdChwcm9tcHQpOw0KCSAgcmV0dXJuIHJlYWRTdHJpbmcoKTsNCiAgIH0g ICAgICAgICANCg0KICAgLyoqDQoJKiByZWFkIGEgd29yZCBmcm9tIHRoZSBjb25zb2xlLiBUaGUg d29yZCBpcyANCgkqIGFueSBzZXQgb2YgY2hhcmFjdGVycyB0ZXJtaW5hdGVkIGJ5IHdoaXRlc3Bh Y2UNCgkqIEByZXR1cm4gdGhlICd3b3JkJyBlbnRlcmVkDQoJKi8NCgkNCiAgIHB1YmxpYyBzdGF0 aWMgU3RyaW5nIHJlYWRXb3JkKCkNCiAgIHsgIGludCBjaDsNCgkgIFN0cmluZyByID0gIiI7DQoJ ICBib29sZWFuIGRvbmUgPSBmYWxzZTsNCgkgIHdoaWxlICghZG9uZSkNCgkgIHsgIHRyeQ0KCQkg eyAgY2ggPSBTeXN0ZW0uaW4ucmVhZCgpOw0KCQkJaWYgKGNoIDwgMCANCgkJCSAgIHx8IGphdmEu bGFuZy5DaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKChjaGFyKWNoKSkNCgkJCSAgIGRvbmUgPSB0cnVl Ow0KCQkJZWxzZQ0KCQkJICAgciA9IHIgKyAoY2hhcikgY2g7DQoJCSB9DQoJCSBjYXRjaChqYXZh LmlvLklPRXhjZXB0aW9uIGUpDQoJCSB7ICBkb25lID0gdHJ1ZTsNCgkJIH0NCgkgIH0NCgkgIHJl dHVybiByOw0KICAgfSAgICAgICAgIA0KDQogICAvKioNCgkqIHJlYWQgYW4gaW50ZWdlciBmcm9t IHRoZSBjb25zb2xlLiBUaGUgaW5wdXQgaXMgDQoJKiB0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZQ0K CSogQHBhcmFtIHByb21wdCB0aGUgcHJvbXB0IHN0cmluZyB0byBkaXNwbGF5DQoJKiBAcmV0dXJu IHRoZSBpbnB1dCB2YWx1ZSBhcyBhbiBpbnQNCgkqIEBleGNlcHRpb24gTnVtYmVyRm9ybWF0RXhj ZXB0aW9uIGlmIGJhZCBpbnB1dA0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIGludCByZWFkSW50 KFN0cmluZyBwcm9tcHQpDQogICB7ICB3aGlsZSh0cnVlKQ0KCSAgeyAgcHJpbnRQcm9tcHQocHJv bXB0KTsNCgkJIHRyeQ0KCQkgeyAgcmV0dXJuIEludGVnZXIudmFsdWVPZg0KCQkJICAgKHJlYWRT dHJpbmcoKS50cmltKCkpLmludFZhbHVlKCk7DQoJCSB9IGNhdGNoKE51bWJlckZvcm1hdEV4Y2Vw dGlvbiBlKQ0KCQkgeyAgU3lzdGVtLm91dC5wcmludGxuDQoJCQkgICAoIk5vdCBhbiBpbnRlZ2Vy LiBQbGVhc2UgdHJ5IGFnYWluISIpOw0KCQkgfQ0KCSAgfQ0KICAgfSAgICAgICAgIA0KDQogICAv KioNCgkqIHJlYWQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgZnJvbSB0aGUgY29uc29sZS4gDQoJ KiBUaGUgaW5wdXQgaXMgdGVybWluYXRlZCBieSBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQg dGhlIHByb21wdCBzdHJpbmcgdG8gZGlzcGxheQ0KCSogQHJldHVybiB0aGUgaW5wdXQgdmFsdWUg YXMgYSBkb3VibGUNCgkqIEBleGNlcHRpb24gTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIGJhZCBp bnB1dA0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIGRvdWJsZSByZWFkRG91YmxlKFN0cmluZyBw cm9tcHQpDQogICB7ICB3aGlsZSh0cnVlKQ0KCSAgeyAgcHJpbnRQcm9tcHQocHJvbXB0KTsNCgkJ IHRyeQ0KCQkgeyAgcmV0dXJuIERvdWJsZS52YWx1ZU9mDQoJCQkgICAocmVhZFN0cmluZygpLnRy aW0oKSkuZG91YmxlVmFsdWUoKTsNCgkJIH0gY2F0Y2goTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUp DQoJCSB7ICBTeXN0ZW0ub3V0LnByaW50bG4NCgkJICgiTm90IGEgZmxvYXRpbmcgcG9pbnQgbnVt YmVyLiBQbGVhc2UgdHJ5IGFnYWluISIpOw0KCQkgfQ0KCSAgfQ0KICAgfSAgICAgICAgIA0KfQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1Nl dHRpbmdzLmNsYXNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAw MDAwMjU2MgAwNzYyMDEwNTAyNwAwMTQ2MDUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJv b3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyv66vgADAC0ASwEADFRz dC9TZXR0aW5ncwcAAQEAEGphdmEvbGFuZy9PYmplY3QHAAMBABRqYXZhL2lvL1NlcmlhbGl6YWJs ZQcABQEACHBvcnROYW1lAQASTGphdmEvbGFuZy9TdHJpbmc7AQAHaG9tZURpcgEABnF1ZURpcgEA B3F1ZUZpbGUBAAlxdWVJZ25vcmUBAAFaAQAKZmllbGROYW1lcwEAEkxqYXZhL3V0aWwvVmVjdG9y OwEACGZpZWxkRW5kAQALZkhlYWRlclRlcm0BAApmaWVsZENvdW50AQABSQEADmZpZWxkU2VwYXJh dG9yAQAFc3RhcnQBAARzdG9wAQAFbW9kZWwBAAY8aW5pdD4BAAMoKVYBAARDb2RlDAAYABkKAAQA GwEAEGphdmEvdXRpbC9WZWN0b3IHAB0KAB4AGwwAFQAPCQACACABAANzZGYIACIBAAphZGRFbGVt ZW50AQAVKExqYXZhL2xhbmcvT2JqZWN0OylWDAAkACUKAB4AJgEACy9kZXYvdGVybS9hCAAoDAAH AAgJAAIAKgEACy91c3IvbG9jYWwvCAAsDAAJAAgJAAIALgwACgAICQACADABAANxdWUIADIMAAsA CAkAAgA0DAAMAA0JAAIANgEAD0xpbmVOdW1iZXJUYWJsZQEABGluaXQBAAtUc3QvUHJpbnRlcgcA OgoAOwAbAQAKZ2V0SG9tZURpcgEAFCgpTGphdmEvbGFuZy9TdHJpbmc7AQAKc2V0SG9tZURpcgEA FShMamF2YS9sYW5nL1N0cmluZzspVgEACWdldFF1ZURpcgEACXNldFF1ZURpcgEACmdldFF1ZUZp bGUBAApzZXRRdWVGaWxlAQAMZ2V0UXVlSWdub3JlAQADKClaAQAMc2V0UXVlSWdub3JlAQAEKFop VgEAClNvdXJjZUZpbGUBAA1TZXR0aW5ncy5qYXZhACEAAgAEAAEABgANAAIABwAIAAAAAgAJAAgA AAACAAoACAAAAAIACwAIAAAAAgAMAA0AAAAAAA4ADwAAAAAAEAAPAAAAAAARAA8AAAAAABIAEwAA AAAAFAAPAAAAAAAVAA8AAAAAABYADwAAAAAAFwAIAAAACgABABgAGQABABoAAACAAAMAAgAAAEQq twAcKrsAHlm3AB+1ACEDPBsQGKIAEiq0ACESI7YAJ4QBAaf/7ioSKbUAKyoSLbUALyoSLbUAMSoS M7UANSoEtQA3sQAAAAEAOAAAACoACgAEACMADwAkABEAJAAXACUAIAAkACYAJgAsACcAMgAoADgA KQA+ACoAAQA5ABkAAQAaAAAAIQACAAIAAAAJuwA7WbcAPEyxAAAAAQA4AAAABgABAAAALgABAD0A PgABABoAAAAdAAEAAQAAAAUqtAAvsAAAAAEAOAAAAAYAAQAAAEIAAQA/AEAAAQAaAAAAHgACAAIA AAAGKiu1AC+xAAAAAQA4AAAABgABAAAASQABAEEAPgABABoAAAAdAAEAAQAAAAUqtAAxsAAAAAEA OAAAAAYAAQAAAFIAAQBCAEAAAQAaAAAAHgACAAIAAAAGKiu1ADGxAAAAAQA4AAAABgABAAAAWQAB AEMAPgABABoAAAAdAAEAAQAAAAUqtAA1sAAAAAEAOAAAAAYAAQAAAGIAAQBEAEAAAQAaAAAAHgAC AAIAAAAGKiu1ADWxAAAAAQA4AAAABgABAAAAaQABAEUARgABABoAAAAdAAEAAQAAAAUqtAA3rAAA AAEAOAAAAAYAAQAAAHIAAQBHAEgAAQAaAAAAHgACAAIAAAAGKhu1ADexAAAAAQA4AAAABgABAAAA eQABAEkAAAACAEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNyL3RzdC9Uc3QvRmlzaER1 bXAuamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAw NzA1ADA3NjIwMTAzNDU2ADAxNDMzNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsKCmltcG9y dCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuKjsKCnB1YmxpYyBjbGFzcyBGaXNoRHVtcCB7 CglzdGF0aWMgU2V0dGluZ3MgaW5mbzsKCgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5n W10gYXJncykgewoKCQoJCXRyeXsKCQlpbmZvID0gKFNldHRpbmdzKSBTZXR1cElPLm9wZW5JbkZp bGUoImluZm8iKTsKCQl9Y2F0Y2goTnVsbFBvaW50ZXJFeGNlcHRpb24gZSl7CgkJCWluZm89bnVs bDsKCQl9CgkJCgkJCgkJaWYgKGluZm8gPT0gbnVsbCkgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4o CgkJCQkiRXJyb3IgbG9hZGluZyBTZXR0aW5ncy4gRGVmYXVsdCBzZXR0aW5ncyBsb2FkZWQuIik7 CgkJCWluZm8gPSBuZXcgU2V0dGluZ3MoKTsKCQkJaW50IGhvbGQgPSBTZXR1cElPLm9wZW5PdXRG aWxlKGluZm8sICJpbmZvIik7CgkJfQoJCgoJCQoJfQoKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L0NvbnNvbGUu Y2xhc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDA3NDAw MAAwNzYyMDEwNTcxMQAwMTQ0MDMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ29uc29sZS5qYXZhAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDEwMTA0 ADA3NjE3NjMwNzE2ADAxMjAzMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsNCnB1YmxpYyBj bGFzcyBDb25zb2xlDQp7ICAvKioNCgkqIHByaW50IGEgcHJvbXB0IG9uIHRoZSBjb25zb2xlIGJ1 dCBkb24ndCBwcmludCBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQgdGhlIHByb21wdCBzdHJp bmcgdG8gZGlzcGxheQ0KCSovDQoNCiAgIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludFByb21wdChT dHJpbmcgcHJvbXB0KQ0KICAgeyAgU3lzdGVtLm91dC5wcmludChwcm9tcHQgKyAiICIpOw0KCSAg U3lzdGVtLm91dC5mbHVzaCgpOw0KICAgfSAgICAgICAgIA0KICAgDQogICAvKioNCgkqIHJlYWQg YSBjaGFyIG9yIHN0cmluZyBmcm9tIHRoZSBjb25zb2xlLiBUaGUgc3RyaW5nIGlzIA0KCSogdGVy bWluYXRlZCBieSBhIG5ld2xpbmUNCgkqIEByZXR1cm4gdGhlIGZpcnN0IGNoYXJhY3RlciBhcyBh IGNoYXIgKHdpdGhvdXQgdGhlIG5ld2xpbmUpDQoJKi8NCgkNCg0KICAgcHVibGljIHN0YXRpYyBj aGFyIHJlYWRDaGFyKCkNCiAgIHsNCgljaGFyIGNoPScgJzsNCgl0cnkNCgkJIHsgIA0KCQljaCA9 IChjaGFyKSBTeXN0ZW0uaW4ucmVhZCgpOw0KCQkJDQoJCSB9DQoJCSBjYXRjaChqYXZhLmlvLklP RXhjZXB0aW9uIGUpDQoJCSB7ICANCgkJDQoJCSB9DQoJcmV0dXJuIGNoOw0KICAgfSAgICAgICAg IAkNCiAgIA0KICAgcHVibGljIHN0YXRpYyBjaGFyIHJlYWRDaGFyKFN0cmluZyBwcm9tcHQpDQog ICB7DQoJCXByaW50UHJvbXB0KHByb21wdCk7DQoJCXJldHVybiByZWFkQ2hhcigpOw0KICAgfSAg ICAgICAgIA0KDQoNCg0KICAgLyoqDQoJKiByZWFkIGEgY2hhciBvciBzdHJpbmcgZnJvbSB0aGUg Y29uc29sZS4gSXQgbXVzdCBzdGFydCB3aXRoIFQgb3IgRi4NCgkqICBUaGUgc3RyaW5nIGlzIHRl cm1pbmF0ZWQgYnkgYSBuZXdsaW5lLiAgSWYgdGhlIGZpcnN0IGNoYXJhY3Rlcg0KCSogIGlzIGFu IGYsIHRoZSBib29sZWFuIGZhbHNlIGlzIHJldHVybmVkIG9yIHRydWUgZm9yIGEgVC4NCgkqIA0K CSovDQoNCglwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVhZEJvb2xlYW4oKQ0KICAgew0KCWJvb2xl YW4gZG9uZSA9IGZhbHNlOw0KCSAgY2hhciBjaD0nICc7IA0KCQlkbyB7DQoJCQkNCgkJICAgDQoJ CQl0cnkNCgkJCXsgIA0KCQkJCWNoID0gKGNoYXIpIFN5c3RlbS5pbi5yZWFkKCk7DQoJCQkJDQoJ CQl9DQoJCQljYXRjaCAoamF2YS5pby5JT0V4Y2VwdGlvbiBlKQ0KCQkJew0KCQkJfQ0KCQkgDQoJ CQlpZiAoY2g9PSdUJyB8fCBjaCA9PSAndCcgfHwgY2ggPT0gJ0YnIHx8IGNoID09ICdmJykNCgkJ CQkgZG9uZSA9IHRydWU7DQoJCQkNCgkJfSB3aGlsZSAoIWRvbmUpOw0KDQoJICAgIGlmIChjaD09 J1QnIHx8IGNoID09ICd0JykNCgkgICAgICAgIHJldHVybiB0cnVlOw0KCSAgICBlbHNlDQoJICAg ICAgICByZXR1cm4gZmFsc2U7ICAgIA0KDQoNCiAgIH0gICAgIA0KICAgLyoqIHJlYWRzIGEgQm9v bGVhbiBmcm9tIHRoZSBrZXlib2FyZA0KCSogICByZXR1cm5zIHRoZSBCb29sZWFuDQoJKi8gIAkN CiAgIA0KICAgcHVibGljIHN0YXRpYyBib29sZWFuIHJlYWRCb29sZWFuKFN0cmluZyBwcm9tcHQp DQogICB7DQoJCXByaW50UHJvbXB0KHByb21wdCk7DQoJCXJldHVybiByZWFkQm9vbGVhbigpOw0K ICAgfSAgICAgICAgIA0KDQoNCg0KICAgDQoJDQogICANCiAgIC8qKg0KCSogcmVhZCBhIHN0cmlu ZyBmcm9tIHRoZSBjb25zb2xlLiBUaGUgc3RyaW5nIGlzIA0KCSogdGVybWluYXRlZCBieSBhIG5l d2xpbmUNCgkqIEByZXR1cm4gdGhlIGlucHV0IHN0cmluZyAod2l0aG91dCB0aGUgbmV3bGluZSkN CgkqLw0KCQ0KICAgcHVibGljIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZygpDQogICB7ICBpbnQg Y2g7DQoJICBTdHJpbmcgciA9ICIiOw0KCSAgYm9vbGVhbiBkb25lID0gZmFsc2U7DQoJICB3aGls ZSAoIWRvbmUpDQoJICB7ICB0cnkNCgkJIHsgIGNoID0gU3lzdGVtLmluLnJlYWQoKTsNCgkJCWlm IChjaCA8IDAgfHwgKGNoYXIpY2ggPT0gJ1xuJykNCgkJCSAgIGRvbmUgPSB0cnVlOw0KCQkJZWxz ZSBpZiAoKGNoYXIpY2ggIT0gJ1xyJykgLy8gd2VpcmQtLWl0IHVzZWQgdG8gZG8gXHJcbiB0cmFu c2xhdGlvbg0KCQkJICAgciA9IHIgKyAoY2hhcikgY2g7DQoJCSB9DQoJCSBjYXRjaChqYXZhLmlv LklPRXhjZXB0aW9uIGUpDQoJCSB7ICBkb25lID0gdHJ1ZTsNCgkJIH0NCgkgIH0NCgkgIHJldHVy biByOw0KICAgfSAgICAgICAgIA0KDQogICAvKioNCgkqIHJlYWQgYSBzdHJpbmcgZnJvbSB0aGUg Y29uc29sZS4gVGhlIHN0cmluZyBpcyANCgkqIHRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lDQoJKiBA cGFyYW0gcHJvbXB0IHRoZSBwcm9tcHQgc3RyaW5nIHRvIGRpc3BsYXkNCgkqIEByZXR1cm4gdGhl IGlucHV0IHN0cmluZyAod2l0aG91dCB0aGUgbmV3bGluZSkNCgkqLw0KCQ0KICAgcHVibGljIHN0 YXRpYyBTdHJpbmcgcmVhZFN0cmluZyhTdHJpbmcgcHJvbXB0KQ0KICAgeyAgcHJpbnRQcm9tcHQo cHJvbXB0KTsNCgkgIHJldHVybiByZWFkU3RyaW5nKCk7DQogICB9ICAgICAgICAgDQoNCiAgIC8q Kg0KCSogcmVhZCBhIHdvcmQgZnJvbSB0aGUgY29uc29sZS4gVGhlIHdvcmQgaXMgDQoJKiBhbnkg c2V0IG9mIGNoYXJhY3RlcnMgdGVybWluYXRlZCBieSB3aGl0ZXNwYWNlDQoJKiBAcmV0dXJuIHRo ZSAnd29yZCcgZW50ZXJlZA0KCSovDQoJDQogICBwdWJsaWMgc3RhdGljIFN0cmluZyByZWFkV29y ZCgpDQogICB7ICBpbnQgY2g7DQoJICBTdHJpbmcgciA9ICIiOw0KCSAgYm9vbGVhbiBkb25lID0g ZmFsc2U7DQoJICB3aGlsZSAoIWRvbmUpDQoJICB7ICB0cnkNCgkJIHsgIGNoID0gU3lzdGVtLmlu LnJlYWQoKTsNCgkJCWlmIChjaCA8IDAgDQoJCQkgICB8fCBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlz V2hpdGVzcGFjZSgoY2hhciljaCkpDQoJCQkgICBkb25lID0gdHJ1ZTsNCgkJCWVsc2UNCgkJCSAg IHIgPSByICsgKGNoYXIpIGNoOw0KCQkgfQ0KCQkgY2F0Y2goamF2YS5pby5JT0V4Y2VwdGlvbiBl KQ0KCQkgeyAgZG9uZSA9IHRydWU7DQoJCSB9DQoJICB9DQoJICByZXR1cm4gcjsNCiAgIH0gICAg ICAgICANCg0KICAgLyoqDQoJKiByZWFkIGFuIGludGVnZXIgZnJvbSB0aGUgY29uc29sZS4gVGhl IGlucHV0IGlzIA0KCSogdGVybWluYXRlZCBieSBhIG5ld2xpbmUNCgkqIEBwYXJhbSBwcm9tcHQg dGhlIHByb21wdCBzdHJpbmcgdG8gZGlzcGxheQ0KCSogQHJldHVybiB0aGUgaW5wdXQgdmFsdWUg YXMgYW4gaW50DQoJKiBAZXhjZXB0aW9uIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBpZiBiYWQgaW5w dXQNCgkqLw0KCQ0KICAgcHVibGljIHN0YXRpYyBpbnQgcmVhZEludChTdHJpbmcgcHJvbXB0KQ0K ICAgeyAgd2hpbGUodHJ1ZSkNCgkgIHsgIHByaW50UHJvbXB0KHByb21wdCk7DQoJCSB0cnkNCgkJ IHsgIHJldHVybiBJbnRlZ2VyLnZhbHVlT2YNCgkJCSAgIChyZWFkU3RyaW5nKCkudHJpbSgpKS5p bnRWYWx1ZSgpOw0KCQkgfSBjYXRjaChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkNCgkJIHsgIFN5 c3RlbS5vdXQucHJpbnRsbg0KCQkJICAgKCJOb3QgYW4gaW50ZWdlci4gUGxlYXNlIHRyeSBhZ2Fp biEiKTsNCgkJIH0NCgkgIH0NCiAgIH0gICAgICAgICANCg0KICAgLyoqDQoJKiByZWFkIGEgZmxv YXRpbmcgcG9pbnQgbnVtYmVyIGZyb20gdGhlIGNvbnNvbGUuIA0KCSogVGhlIGlucHV0IGlzIHRl cm1pbmF0ZWQgYnkgYSBuZXdsaW5lDQoJKiBAcGFyYW0gcHJvbXB0IHRoZSBwcm9tcHQgc3RyaW5n IHRvIGRpc3BsYXkNCgkqIEByZXR1cm4gdGhlIGlucHV0IHZhbHVlIGFzIGEgZG91YmxlDQoJKiBA ZXhjZXB0aW9uIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBpZiBiYWQgaW5wdXQNCgkqLw0KCQ0KICAg cHVibGljIHN0YXRpYyBkb3VibGUgcmVhZERvdWJsZShTdHJpbmcgcHJvbXB0KQ0KICAgeyAgd2hp bGUodHJ1ZSkNCgkgIHsgIHByaW50UHJvbXB0KHByb21wdCk7DQoJCSB0cnkNCgkJIHsgIHJldHVy biBEb3VibGUudmFsdWVPZg0KCQkJICAgKHJlYWRTdHJpbmcoKS50cmltKCkpLmRvdWJsZVZhbHVl KCk7DQoJCSB9IGNhdGNoKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKQ0KCQkgeyAgU3lzdGVtLm91 dC5wcmludGxuDQoJCSAoIk5vdCBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4gUGxlYXNlIHRyeSBh Z2FpbiEiKTsNCgkJIH0NCgkgIH0NCiAgIH0gICAgICAgICANCn0AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGaXNoRHVtcC5jbGFzcwAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDE0MDUAMDc2MjAxMDM1 MzcAMDEyMzI2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVz dGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMr+ur4AAwAtADEBAAxUc3QvRmlzaER1bXAHAAEBABBq YXZhL2xhbmcvT2JqZWN0BwADAQAEaW5mbwEADkxUc3QvU2V0dGluZ3M7AQAEbWFpbgEAFihbTGph dmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlCAAFAQALVHN0L1NldHVwSU8HAAsBAApvcGVuSW5GaWxl AQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL09iamVjdDsMAA0ADgoADAAPAQAMVHN0 L1NldHRpbmdzBwARDAAFAAYJAAIAEwEAEGphdmEvbGFuZy9TeXN0ZW0HABUBAANvdXQBABVMamF2 YS9pby9QcmludFN0cmVhbTsMABcAGAkAFgAZAQAwRXJyb3IgbG9hZGluZyBTZXR0aW5ncy4gRGVm YXVsdCBzZXR0aW5ncyBsb2FkZWQuCAAbAQATamF2YS9pby9QcmludFN0cmVhbQcAHQEAB3ByaW50 bG4BABUoTGphdmEvbGFuZy9TdHJpbmc7KVYMAB8AIAoAHgAhAQAGPGluaXQ+AQADKClWDAAjACQK ABIAJQEAC29wZW5PdXRGaWxlAQAnKExqYXZhL2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvU3RyaW5n OylJDAAnACgKAAwAKQEAHmphdmEvbGFuZy9OdWxsUG9pbnRlckV4Y2VwdGlvbgcAKwEAD0xpbmVO dW1iZXJUYWJsZQoABAAlAQAKU291cmNlRmlsZQEADUZpc2hEdW1wLmphdmEAIQACAAQAAAABAAgA BQAGAAAAAgAJAAcACAABAAkAAABtAAIAAgAAADUSCrgAEMAAErMAFKcACEwBswAUsgAUxwAesgAa Ehy2ACK7ABJZtwAmswAUsgAUEgq4ACo8sQABAAAACwAOACwAAQAtAAAAHgAHAAAADgAOAA8ADwAQ ABMAFAAZABYAIQAXACsAGAABACMAJAABAAkAAAARAAEAAQAAAAUqtwAusQAAAAAAAQAvAAAAAgAw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGaXNoRHVtcC5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAMDEwMDQ0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDA3MDUAMDc2MjAxMDM0NTYA MDEyMTQyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy ICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhY2thZ2UgVHN0OwoKaW1wb3J0IGphdmEuaW8uKjsKaW1w b3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIEZpc2hEdW1wIHsKCXN0YXRpYyBTZXR0aW5n cyBpbmZvOwoKCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgoJCgkJ dHJ5ewoJCWluZm8gPSAoU2V0dGluZ3MpIFNldHVwSU8ub3BlbkluRmlsZSgiaW5mbyIpOwoJCX1j YXRjaChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKXsKCQkJaW5mbz1udWxsOwoJCX0KCQkKCQkKCQlp ZiAoaW5mbyA9PSBudWxsKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigKCQkJCSJFcnJvciBsb2Fk aW5nIFNldHRpbmdzLiBEZWZhdWx0IHNldHRpbmdzIGxvYWRlZC4iKTsKCQkJaW5mbyA9IG5ldyBT ZXR0aW5ncygpOwoJCQlpbnQgaG9sZCA9IFNldHVwSU8ub3Blbk91dEZpbGUoaW5mbywgImluZm8i KTsKCQl9CgkKCgkJCgl9Cgp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAUHJpbnRlci5jbGFzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADAxMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA0NTM2ADA3NjIwMTA1NDM2ADAx MjI0MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg AHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAADK/rq+AAMALQBaAQALVHN0L1ByaW50ZXIHAAEBABBqYXZhL2xh bmcvT2JqZWN0BwADAQAUamF2YS9pby9TZXJpYWxpemFibGUHAAUBAApmaWVsZE5hbWVzAQASTGph dmEvdXRpbC9WZWN0b3I7AQAIZmllbGRFbmQBAAtmSGVhZGVyVGVybQEACmZpZWxkQ291bnQBAAFJ AQAOZmllbGRTZXBhcmF0b3IBAA1wYWdlU2VwYXJhdG9yAQAFc3RhcnQBAARzdG9wAQAFbW9kZWwB ABJMamF2YS9sYW5nL1N0cmluZzsBAAhXSUxEQ0FSRAEABmZpbml0JAEAAygpVgEACVN5bnRoZXRp YwEABENvZGUMABMADAkAAgAYAQAPTGluZU51bWJlclRhYmxlAQAFc2V0dXABAAMoKUkBAAY8aW5p dD4MAB0AFQoABAAeDAAUABUKAAIAIAEAEGphdmEvdXRpbC9WZWN0b3IHACIKACMAHgwABwAICQAC ACUBABFqYXZhL2xhbmcvSW50ZWdlcgcAJwEABChJKVYMAB0AKQoAKAAqAQAKYWRkRWxlbWVudAEA FShMamF2YS9sYW5nL09iamVjdDspVgwALAAtCgAjAC4MAAkACAkAAgAwDAAKAAgJAAIAMgwACwAM CQACADQMAA0ACAkAAgA2DAAOAAgJAAIAOAwADwAICQACADoMABAACAkAAgA8AQAEZm91cggAPgwA EQASCQACAEABAA1nZXRGaWVsZE5hbWVzAQAUKClMamF2YS91dGlsL1ZlY3RvcjsBAA1zZXRGaWVs ZE5hbWVzAQAVKExqYXZhL3V0aWwvVmVjdG9yOylWAQARZ2V0RmllbGRTZXBhcmF0b3IBABFzZXRG aWVsZFNlcGFyYXRvcgEAEGdldFBhZ2VTZXBhcmF0b3IBABBzZXRQYWdlU2VwYXJhdG9yAQAIZ2V0 TW9kZWwBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwEACHNldE1vZGVsAQAVKExqYXZhL2xhbmcvU3Ry aW5nOylWAQAIZ2V0U3RhcnQBAAhzZXRTdGFydAEAB2dldFN0b3ABAAdzZXRTdG9wAQANZ2V0Rmll bGRDb3VudAEADXNldEZpZWxkQ291bnQBAAtnZXRGaWVsZEVuZAEAC3NldEZpZWxkRW5kAQANZ2V0 SGVhZGVyVGVybQEADXNldEhlYWRlclRlcm0BAApTb3VyY2VGaWxlAQAMUHJpbnRlci5qYXZhACEA AgAEAAEABgAKAAAABwAIAAAAAAAJAAgAAAAAAAoACAAAAAAACwAMAAAAAAANAAgAAAAAAA4ACAAA AAAADwAIAAAAAAAQAAgAAAAAABEAEgAAABAAEwAMAAAAFQACABQAFQACABYAAAAAABcAAAAgAAIA AQAAAAgqEQPntQAZsQAAAAEAGgAAAAYAAQAAABIAAQAbABwAAQAXAAAAGgABAAEAAAACA6wAAAAB ABoAAAAGAAEAAAAaAAEAHQAVAAEAFwAAAcsABAABAAABVyq3AB8qtwAhKrsAI1m3ACS1ACYqtAAm uwAoWREA87cAK7YALyq0ACa7AChZEQCJtwArtgAvKrQAJrsAKFkRAVm3ACu2AC8quwAjWbcAJLUA MSq0ADG7AChZEQFNtwArtgAvKrQAMbsAKFkRAw+3ACu2AC8quwAjWbcAJLUAMyq0ADO7AChZEBi3 ACu2AC8qEEy1ADUquwAjWbcAJLUANyq0ADe7AChZECK3ACu2AC8qtAA3uwAoWRArtwArtgAvKrsA I1m3ACS1ADkqtAA5uwAoWRAKtwArtgAvKrQAObsAKFkQCrcAK7YALyq7ACNZtwAktQA7KrQAO7sA KFkQIbcAK7YALyq0ADu7AChZEFi3ACu2AC8qtAA7uwAoWRBFtwArtgAvKrsAI1m3ACS1AD0qtAA9 uwAoWRAttwArtgAvKrQAPbsAKFkQTbcAK7YALyoSP7UAQbEAAAABABoAAABiABgACAAlABMAJgAk ACcANQAoAEYAKwBRACwAYgAtAHMALwB+ADAAjgAzAJQANgCfADgArwA5AL8AOwDKAD0A2gA+AOoA QAD1AEEBBQBCARUAQwElAEYBMABHAUAASAFQAEsAAQBCAEMAAQAXAAAAHQABAAEAAAAFKrQAJrAA AAABABoAAAAGAAEAAABYAAEARABFAAEAFwAAAB4AAgACAAAABiortQAmsQAAAAEAGgAAAAYAAQAA AF8AAQBGAEMAAQAXAAAAHQABAAEAAAAFKrQAN7AAAAABABoAAAAGAAEAAABoAAEARwBFAAEAFwAA AB4AAgACAAAABiortQA3sQAAAAEAGgAAAAYAAQAAAG8AAQBIAEMAAQAXAAAAHQABAAEAAAAFKrQA ObAAAAABABoAAAAGAAEAAAB4AAEASQBFAAEAFwAAAB4AAgACAAAABiortQA5sQAAAAEAGgAAAAYA AQAAAH8AAQBKAEsAAQAXAAAAHQABAAEAAAAFKrQAQbAAAAABABoAAAAGAAEAAACIAAEATABNAAEA FwAAAB4AAgACAAAABiortQBBsQAAAAEAGgAAAAYAAQAAAI8AAQBOAEMAAQAXAAAAHQABAAEAAAAF KrQAO7AAAAABABoAAAAGAAEAAACYAAEATwBFAAEAFwAAAB4AAgACAAAABiortQA7sQAAAAEAGgAA AAYAAQAAAJ8AAQBQAEMAAQAXAAAAHQABAAEAAAAFKrQAPbAAAAABABoAAAAGAAEAAACoAAEAUQBF AAEAFwAAAB4AAgACAAAABiortQA9sQAAAAEAGgAAAAYAAQAAAK8AAQBSABwAAQAXAAAAHQABAAEA AAAFKrQANawAAAABABoAAAAGAAEAAAC4AAEAUwApAAEAFwAAAB4AAgACAAAABiobtQA1sQAAAAEA GgAAAAYAAQAAAL8AAQBUAEMAAQAXAAAAHQABAAEAAAAFKrQAMbAAAAABABoAAAAGAAEAAADIAAEA VQBFAAEAFwAAAB4AAgACAAAABiortQAxsQAAAAEAGgAAAAYAAQAAAM8AAQBWAEMAAQAXAAAAHQAB AAEAAAAFKrQAM7AAAAABABoAAAAGAAEAAADYAAEAVwBFAAEAFwAAAB4AAgACAAAABiortQAzsQAA AAEAGgAAAAYAAQAAAN8AAQBYAAAAAgBZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAUHJpbnRlci5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA3NDA0ADA3NjIwMTA1NDI0ADAxMjA0NgAg MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsKaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CglpbXBv cnQgamF2YS5pby5TZXJpYWxpemFibGU7CgoKcHVibGljIGNsYXNzIFByaW50ZXIgaW1wbGVtZW50 cyBTZXJpYWxpemFibGV7CgoKCVZlY3RvciBmaWVsZE5hbWVzOyAgICAKCVZlY3RvciBmaWVsZEVu ZDsJCglWZWN0b3IgZkhlYWRlclRlcm07ICAgIC8vCglpbnQgZmllbGRDb3VudDsJCQoJVmVjdG9y IGZpZWxkU2VwYXJhdG9yOyAvLwoJVmVjdG9yIHBhZ2VTZXBhcmF0b3I7ICAvLwoJVmVjdG9yIHN0 YXJ0OyAgICAgICAgICAvLwoJVmVjdG9yIHN0b3A7ICAgICAgICAgICAvLwoJU3RyaW5nIG1vZGVs OwkJCglmaW5hbCBpbnQgV0lMRENBUkQgPSA5OTk7IC8vRGVzaWduYXRlcyBhIHZhbHVlIGZvciBz a2lwcGluZyBjb21wYXJlcy4KCgoKCglwdWJsaWMgaW50IHNldHVwKCl7CgkJCgkKCXJldHVybiAw OwkKCX0KCgoKCgkvKioKCSAqIENvbnN0cnVjdG9yIGZvciBQcmludGVyCgkgKi8KCXB1YmxpYyBQ cmludGVyKCkgewoJCXN1cGVyKCk7CgkJZmllbGROYW1lcyA9IG5ldyBWZWN0b3IoKTsKCQlmaWVs ZE5hbWVzLmFkZEVsZW1lbnQobmV3IEludGVnZXIoMjQzKSk7CgkJZmllbGROYW1lcy5hZGRFbGVt ZW50KG5ldyBJbnRlZ2VyKDEzNykpOwoJCWZpZWxkTmFtZXMuYWRkRWxlbWVudChuZXcgSW50ZWdl cigzNDUpKTsKCgoJCWZpZWxkRW5kID0gbmV3IFZlY3RvcigpOwoJCWZpZWxkRW5kLmFkZEVsZW1l bnQobmV3IEludGVnZXIoMzMzKSk7CgkJZmllbGRFbmQuYWRkRWxlbWVudChuZXcgSW50ZWdlcig3 ODMpKTsKCQkKCQlmSGVhZGVyVGVybSA9IG5ldyBWZWN0b3IoKTsKCQlmSGVhZGVyVGVybS5hZGRF bGVtZW50KG5ldyBJbnRlZ2VyKDI0KSk7CgoKCQlmaWVsZENvdW50ID0gNzY7CgoKCQlmaWVsZFNl cGFyYXRvciA9IG5ldyBWZWN0b3IoKTsKCQl7CgkJCWZpZWxkU2VwYXJhdG9yLmFkZEVsZW1lbnQo bmV3IEludGVnZXIoMzQpKTsKCQkJZmllbGRTZXBhcmF0b3IuYWRkRWxlbWVudChuZXcgSW50ZWdl cig0MykpOwoJCX0KCQlwYWdlU2VwYXJhdG9yID0gbmV3IFZlY3RvcigpOwoJCXsKCQkJcGFnZVNl cGFyYXRvci5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDEwKSk7CgkJCXBhZ2VTZXBhcmF0b3IuYWRk RWxlbWVudChuZXcgSW50ZWdlcigxMCkpOwoJCX0KCQlzdGFydCA9IG5ldyBWZWN0b3IoKTsKCQlz dGFydC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDMzKSk7CgkJc3RhcnQuYWRkRWxlbWVudChuZXcg SW50ZWdlcig4OCkpOwoJCXN0YXJ0LmFkZEVsZW1lbnQobmV3IEludGVnZXIoNjkpKTsKCgoJCXN0 b3AgPSBuZXcgVmVjdG9yKCk7CgkJc3RvcC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDQ1KSk7CgkJ c3RvcC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDc3KSk7CgoKCQltb2RlbCA9ICJmb3VyIjsKCX0K CgoKCgoKCS8qKgoJICogR2V0cyB0aGUgZmllbGROYW1lcwoJICogQHJldHVybiBSZXR1cm5zIGEg VmVjdG9yCgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0RmllbGROYW1lcygpIHsKCQlyZXR1cm4gZmll bGROYW1lczsKCX0KCS8qKgoJICogU2V0cyB0aGUgZmllbGROYW1lcwoJICogQHBhcmFtIGZpZWxk TmFtZXMgVGhlIGZpZWxkTmFtZXMgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldEZpZWxkTmFt ZXMoVmVjdG9yIGZpZWxkTmFtZXMpIHsKCQl0aGlzLmZpZWxkTmFtZXMgPSBmaWVsZE5hbWVzOwoJ fQoKCgkvKioKCSAqIEdldHMgdGhlIGZpZWxkU2VwYXJhdG9yCgkgKiBAcmV0dXJuIFJldHVybnMg YSBWZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRGaWVsZFNlcGFyYXRvcigpIHsKCQlyZXR1 cm4gZmllbGRTZXBhcmF0b3I7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkU2VwYXJhdG9yCgkg KiBAcGFyYW0gZmllbGRTZXBhcmF0b3IgVGhlIGZpZWxkU2VwYXJhdG9yIHRvIHNldAoJICovCglw dWJsaWMgdm9pZCBzZXRGaWVsZFNlcGFyYXRvcihWZWN0b3IgZmllbGRTZXBhcmF0b3IpIHsKCQl0 aGlzLmZpZWxkU2VwYXJhdG9yID0gZmllbGRTZXBhcmF0b3I7Cgl9CgoKCS8qKgoJICogR2V0cyB0 aGUgcGFnZVNlcGFyYXRvcgoJICogQHJldHVybiBSZXR1cm5zIGEgVmVjdG9yCgkgKi8KCXB1Ymxp YyBWZWN0b3IgZ2V0UGFnZVNlcGFyYXRvcigpIHsKCQlyZXR1cm4gcGFnZVNlcGFyYXRvcjsKCX0K CS8qKgoJICogU2V0cyB0aGUgcGFnZVNlcGFyYXRvcgoJICogQHBhcmFtIHBhZ2VTZXBhcmF0b3Ig VGhlIHBhZ2VTZXBhcmF0b3IgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFBhZ2VTZXBhcmF0 b3IoVmVjdG9yIHBhZ2VTZXBhcmF0b3IpIHsKCQl0aGlzLnBhZ2VTZXBhcmF0b3IgPSBwYWdlU2Vw YXJhdG9yOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIG1vZGVsCgkgKiBAcmV0dXJuIFJldHVybnMg YSBTdHJpbmcKCSAqLwoJcHVibGljIFN0cmluZyBnZXRNb2RlbCgpIHsKCQlyZXR1cm4gbW9kZWw7 Cgl9CgkvKioKCSAqIFNldHMgdGhlIG1vZGVsCgkgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRv IHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRNb2RlbChTdHJpbmcgbW9kZWwpIHsKCQl0aGlzLm1v ZGVsID0gbW9kZWw7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgc3RhcnQKCSAqIEByZXR1cm4gUmV0 dXJucyBhIFZlY3RvcgoJICovCglwdWJsaWMgVmVjdG9yIGdldFN0YXJ0KCkgewoJCXJldHVybiBz dGFydDsKCX0KCS8qKgoJICogU2V0cyB0aGUgc3RhcnQKCSAqIEBwYXJhbSBzdGFydCBUaGUgc3Rh cnQgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFN0YXJ0KFZlY3RvciBzdGFydCkgewoJCXRo aXMuc3RhcnQgPSBzdGFydDsKCX0KCgoJLyoqCgkgKiBHZXRzIHRoZSBzdG9wCgkgKiBAcmV0dXJu IFJldHVybnMgYSBWZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRTdG9wKCkgewoJCXJldHVy biBzdG9wOwoJfQoJLyoqCgkgKiBTZXRzIHRoZSBzdG9wCgkgKiBAcGFyYW0gc3RvcCBUaGUgc3Rv cCB0byBzZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0U3RvcChWZWN0b3Igc3RvcCkgewoJCXRoaXMu c3RvcCA9IHN0b3A7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgZmllbGRDb3VudAoJICogQHJldHVy biBSZXR1cm5zIGEgaW50CgkgKi8KCXB1YmxpYyBpbnQgZ2V0RmllbGRDb3VudCgpIHsKCQlyZXR1 cm4gZmllbGRDb3VudDsKCX0KCS8qKgoJICogU2V0cyB0aGUgZmllbGRDb3VudAoJICogQHBhcmFt IGZpZWxkQ291bnQgVGhlIGZpZWxkQ291bnQgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldEZp ZWxkQ291bnQoaW50IGZpZWxkQ291bnQpIHsKCQl0aGlzLmZpZWxkQ291bnQgPSBmaWVsZENvdW50 OwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIGZpZWxkRW5kCgkgKiBAcmV0dXJuIFJldHVybnMgYSBW ZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRGaWVsZEVuZCgpIHsKCQlyZXR1cm4gZmllbGRF bmQ7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkRW5kCgkgKiBAcGFyYW0gZmllbGRFbmQgVGhl IGZpZWxkRW5kIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRGaWVsZEVuZChWZWN0b3IgZmll bGRFbmQpIHsKCQl0aGlzLmZpZWxkRW5kID0gZmllbGRFbmQ7Cgl9CgoKCS8qKgoJICogR2V0cyB0 aGUgaGVhZGVyVGVybQoJICogQHJldHVybiBSZXR1cm5zIGEgVmVjdG9yCgkgKi8KCXB1YmxpYyBW ZWN0b3IgZ2V0SGVhZGVyVGVybSgpIHsKCQlyZXR1cm4gZkhlYWRlclRlcm07Cgl9CgkvKioKCSAq IFNldHMgdGhlIGhlYWRlclRlcm0KCSAqIEBwYXJhbSBoZWFkZXJUZXJtIFRoZSBoZWFkZXJUZXJt IHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRIZWFkZXJUZXJtKFZlY3RvciBoZWFkZXJUZXJt KSB7CgkJZkhlYWRlclRlcm0gPSBoZWFkZXJUZXJtOwoJfQoKCn0KAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAU2V0dGluZ3MuY2xhc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQA MDAwMDAwMAAwMDAwMDAwADAwMDAwMDAyNTYyADA3NjIwMTA1MDI3ADAxMjQxMAAgMAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAADK/rq+AAMALQBLAQAMVHN0L1NldHRpbmdzBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEA FGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAIcG9ydE5hbWUBABJMamF2YS9sYW5nL1N0cmluZzsB AAdob21lRGlyAQAGcXVlRGlyAQAHcXVlRmlsZQEACXF1ZUlnbm9yZQEAAVoBAApmaWVsZE5hbWVz AQASTGphdmEvdXRpbC9WZWN0b3I7AQAIZmllbGRFbmQBAAtmSGVhZGVyVGVybQEACmZpZWxkQ291 bnQBAAFJAQAOZmllbGRTZXBhcmF0b3IBAAVzdGFydAEABHN0b3ABAAVtb2RlbAEABjxpbml0PgEA AygpVgEABENvZGUMABgAGQoABAAbAQAQamF2YS91dGlsL1ZlY3RvcgcAHQoAHgAbDAAVAA8JAAIA IAEAA3NkZggAIgEACmFkZEVsZW1lbnQBABUoTGphdmEvbGFuZy9PYmplY3Q7KVYMACQAJQoAHgAm AQALL2Rldi90ZXJtL2EIACgMAAcACAkAAgAqAQALL3Vzci9sb2NhbC8IACwMAAkACAkAAgAuDAAK AAgJAAIAMAEAA3F1ZQgAMgwACwAICQACADQMAAwADQkAAgA2AQAPTGluZU51bWJlclRhYmxlAQAE aW5pdAEAC1RzdC9QcmludGVyBwA6CgA7ABsBAApnZXRIb21lRGlyAQAUKClMamF2YS9sYW5nL1N0 cmluZzsBAApzZXRIb21lRGlyAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAJZ2V0UXVlRGlyAQAJ c2V0UXVlRGlyAQAKZ2V0UXVlRmlsZQEACnNldFF1ZUZpbGUBAAxnZXRRdWVJZ25vcmUBAAMoKVoB AAxzZXRRdWVJZ25vcmUBAAQoWilWAQAKU291cmNlRmlsZQEADVNldHRpbmdzLmphdmEAIQACAAQA AQAGAA0AAgAHAAgAAAACAAkACAAAAAIACgAIAAAAAgALAAgAAAACAAwADQAAAAAADgAPAAAAAAAQ AA8AAAAAABEADwAAAAAAEgATAAAAAAAUAA8AAAAAABUADwAAAAAAFgAPAAAAAAAXAAgAAAAKAAEA GAAZAAEAGgAAAIAAAwACAAAARCq3ABwquwAeWbcAH7UAIQM8GxAYogASKrQAIRIjtgAnhAEBp//u KhIptQArKhIttQAvKhIttQAxKhIztQA1KgS1ADexAAAAAQA4AAAAKgAKAAQAIwAPACQAEQAkABcA JQAgACQAJgAmACwAJwAyACgAOAApAD4AKgABADkAGQABABoAAAAhAAIAAgAAAAm7ADtZtwA8TLEA AAABADgAAAAGAAEAAAAuAAEAPQA+AAEAGgAAAB0AAQABAAAABSq0AC+wAAAAAQA4AAAABgABAAAA QgABAD8AQAABABoAAAAeAAIAAgAAAAYqK7UAL7EAAAABADgAAAAGAAEAAABJAAEAQQA+AAEAGgAA AB0AAQABAAAABSq0ADGwAAAAAQA4AAAABgABAAAAUgABAEIAQAABABoAAAAeAAIAAgAAAAYqK7UA MbEAAAABADgAAAAGAAEAAABZAAEAQwA+AAEAGgAAAB0AAQABAAAABSq0ADWwAAAAAQA4AAAABgAB AAAAYgABAEQAQAABABoAAAAeAAIAAgAAAAYqK7UANbEAAAABADgAAAAGAAEAAABpAAEARQBGAAEA GgAAAB0AAQABAAAABSq0ADesAAAAAQA4AAAABgABAAAAcgABAEcASAABABoAAAAeAAIAAgAAAAYq G7UAN7EAAAABADgAAAAGAAEAAAB5AAEASQAAAAIASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABTZXR0aW5ncy5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDQ0NAAwMDAw MDAwADAwMDAwMDAAMDAwMDAwMDM3NTAAMDc2MjAxMDUwMjAAMDEyMjEzACAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHBhY2thZ2UgVHN0OwppbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CmltcG9ydCBqYXZhLmlv Lio7CmltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwoKCi8qIENsYXNzIHRvIGhvbGQgdGhlIHNlbGVj dGlvbnMgZW50ZXJlZCBpbiBieSB0aGUgY29uZmlnIGNsYXNzLgoqICBEYXRhIHN1Y2ggYXMgdGhl IHNldHRpbmdzIGZvciB0aGUgbW9kZW0uCiovCgpwdWJsaWMgY2xhc3MgU2V0dGluZ3MgaW1wbGVt ZW50cyBTZXJpYWxpemFibGUgewoKCgkKCXByaXZhdGUgU3RyaW5nIHBvcnROYW1lOwoJcHJpdmF0 ZSBTdHJpbmcgaG9tZURpcjsKCXByaXZhdGUgU3RyaW5nIHF1ZURpcjsKCXByaXZhdGUgU3RyaW5n IHF1ZUZpbGU7Cglwcml2YXRlIGJvb2xlYW4gcXVlSWdub3JlOwoJVmVjdG9yIGZpZWxkTmFtZXM7 IAoJVmVjdG9yIGZpZWxkRW5kOwoJVmVjdG9yIGZIZWFkZXJUZXJtOyAKCWludCBmaWVsZENvdW50 OwkKCVZlY3RvciBmaWVsZFNlcGFyYXRvcjsKCVZlY3RvciBzdGFydDsgICAgICAgICAKCVZlY3Rv ciBzdG9wOyAgICAgICAgICAKCVN0cmluZyBtb2RlbDsJCgoJLyoqCgkgKiBDb25zdHJ1Y3RvciBm b3IgU2V0dGluZ3MKCSAqLwoJcHVibGljIFNldHRpbmdzKCkgewoJCXN1cGVyKCk7CgoJCXN0YXJ0 ID0gbmV3IFZlY3RvcigpOwoJCWZvciAoaW50IGk9MDtpPDI0O2krKykKCQlzdGFydC5hZGRFbGVt ZW50KCJzZGYiKTsKCQlwb3J0TmFtZSA9ICgiL2Rldi90ZXJtL2EiKTsKCQlob21lRGlyID0gIi91 c3IvbG9jYWwvIjsKCQlxdWVEaXIgPSAiL3Vzci9sb2NhbC8iOwoJCXF1ZUZpbGUgPSAicXVlIjsK CQlxdWVJZ25vcmUgPSB0cnVlOwoJfQoKCXB1YmxpYyB2b2lkIGluaXQoKXsKCVByaW50ZXIgcG50 ID0gbmV3IFByaW50ZXIoKTsKCX0KCgkvKioKCSAqIEdldHMgdGhlIHBvcnQKCSAqIEByZXR1cm4g UmV0dXJucyBhIFBvcnRzCgkgKi8KCgoJLyoqCgkgKiBHZXRzIHRoZSBwcmludGVyCgkgKiBAcmV0 dXJuIFJldHVybnMgYSBQcmludGVyCgkgKi8KCgoJLyoqCgkgKiBHZXRzIHRoZSBob21lRGlyCgkg KiBAcmV0dXJuIFJldHVybnMgYSBTdHJpbmcKCSAqLwoJcHVibGljIFN0cmluZyBnZXRIb21lRGly KCkgewoJCXJldHVybiBob21lRGlyOwoJfQoJLyoqCgkgKiBTZXRzIHRoZSBob21lRGlyCgkgKiBA cGFyYW0gaG9tZURpciBUaGUgaG9tZURpciB0byBzZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0SG9t ZURpcihTdHJpbmcgaG9tZURpcikgewoJCXRoaXMuaG9tZURpciA9IGhvbWVEaXI7Cgl9CgoKCS8q KgoJICogR2V0cyB0aGUgcXVlRGlyCgkgKiBAcmV0dXJuIFJldHVybnMgYSBTdHJpbmcKCSAqLwoJ cHVibGljIFN0cmluZyBnZXRRdWVEaXIoKSB7CgkJcmV0dXJuIHF1ZURpcjsKCX0KCS8qKgoJICog U2V0cyB0aGUgcXVlRGlyCgkgKiBAcGFyYW0gcXVlRGlyIFRoZSBxdWVEaXIgdG8gc2V0CgkgKi8K CXB1YmxpYyB2b2lkIHNldFF1ZURpcihTdHJpbmcgcXVlRGlyKSB7CgkJdGhpcy5xdWVEaXIgPSBx dWVEaXI7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgcXVlRmlsZQoJICogQHJldHVybiBSZXR1cm5z IGEgU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0UXVlRmlsZSgpIHsKCQlyZXR1cm4gcXVl RmlsZTsKCX0KCS8qKgoJICogU2V0cyB0aGUgcXVlRmlsZQoJICogQHBhcmFtIHF1ZUZpbGUgVGhl IHF1ZUZpbGUgdG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFF1ZUZpbGUoU3RyaW5nIHF1ZUZp bGUpIHsKCQl0aGlzLnF1ZUZpbGUgPSBxdWVGaWxlOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHF1 ZUlnbm9yZQoJICogQHJldHVybiBSZXR1cm5zIGEgYm9vbGVhbgoJICovCglwdWJsaWMgYm9vbGVh biBnZXRRdWVJZ25vcmUoKSB7CgkJcmV0dXJuIHF1ZUlnbm9yZTsKCX0KCS8qKgoJICogU2V0cyB0 aGUgcXVlSWdub3JlCgkgKiBAcGFyYW0gcXVlSWdub3JlIFRoZSBxdWVJZ25vcmUgdG8gc2V0Cgkg Ki8KCXB1YmxpYyB2b2lkIHNldFF1ZUlnbm9yZShib29sZWFuIHF1ZUlnbm9yZSkgewoJCXRoaXMu cXVlSWdub3JlID0gcXVlSWdub3JlOwoJfQoKCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU2V0 dXBJTy5jbGFzcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMDAwMAAw MDAwMDAwADAwMDAwMDA0MzY1ADA3NjIwMTAzNjEzADAxMjE0MgAgMAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK/rq+ AAMALQB3AQALVHN0L1NldHVwSU8HAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAGPGluaXQ+AQAD KClWAQAEQ29kZQwABQAGCgAEAAgBAAtvcGVuT3V0RmlsZQEAJyhMamF2YS9sYW5nL09iamVjdDtM amF2YS9sYW5nL1N0cmluZzspSQEAB29zLm5hbWUIAAwBABBqYXZhL2xhbmcvU3lzdGVtBwAOAQAL Z2V0UHJvcGVydHkBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwwAEAAR CgAPABIBAAVMaW51eAgAFAEAEGphdmEvbGFuZy9TdHJpbmcHABYBAAZlcXVhbHMBABUoTGphdmEv bGFuZy9PYmplY3Q7KVoMABgAGQoAFwAaAQAMamF2YS9pby9GaWxlBwAcAQAWamF2YS9sYW5nL1N0 cmluZ0J1ZmZlcgcAHgEACy91c3IvbG9jYWwvCAAgAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWDAAF ACIKAB8AIwEABmFwcGVuZAEALChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdC dWZmZXI7DAAlACYKAB8AJwEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsMACkAKgoA HwArCgAdACMBABhqYXZhL2lvL0ZpbGVPdXRwdXRTdHJlYW0HAC4BABEoTGphdmEvaW8vRmlsZTsp VgwABQAwCgAvADEBAANvdXQBABVMamF2YS9pby9QcmludFN0cmVhbTsMADMANAkADwA1AQATamF2 YS9pby9QcmludFN0cmVhbQcANwEAB3ByaW50bG4BABUoTGphdmEvbGFuZy9PYmplY3Q7KVYMADkA OgoAOAA7AQAaamF2YS9pby9PYmplY3RPdXRwdXRTdHJlYW0HAD0BABkoTGphdmEvaW8vT3V0cHV0 U3RyZWFtOylWDAAFAD8KAD4AQAEAC3dyaXRlT2JqZWN0DABCADoKAD4AQwEAE0Vycm9yIHdyaXRp bmcgZmlsZSAIAEUBACogLiBQbGVhc2UgY2hlY2sgc3lzdGVtIGFuZCByZXJ1biBwcm9ncmFtLgoI AEcBACwoTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwwAJQBJCgAf AEoMADkAIgoAOABMAQAFY2xvc2UMAE4ABgoALwBPCgA+AE8BAA9FcnJvciBjbG9zaW5nLgoIAFIB AB1qYXZhL2lvL0ZpbGVOb3RGb3VuZEV4Y2VwdGlvbgcAVAEAE2phdmEvaW8vSU9FeGNlcHRpb24H AFYBAA9MaW5lTnVtYmVyVGFibGUBAApvcGVuSW5GaWxlAQAmKExqYXZhL2xhbmcvU3RyaW5nOylM amF2YS9sYW5nL09iamVjdDsBABdqYXZhL2lvL0ZpbGVJbnB1dFN0cmVhbQcAWwoAXAAxAQAZamF2 YS9pby9PYmplY3RJbnB1dFN0cmVhbQcAXgEAGChMamF2YS9pby9JbnB1dFN0cmVhbTspVgwABQBg CgBfAGEBAApyZWFkT2JqZWN0AQAUKClMamF2YS9sYW5nL09iamVjdDsMAGMAZAoAXwBlAQAqVGhl IGNvbmZpZ3VyYXRpb24gZmlsZSBoYXMgYmVlbiBjb3JydXB0ZWQuCABnAQAoQ29uZmlndXJhdGlv biBmaWxlIGluZm8gY2Fubm90IGJlIGZvdW5kLggAaQEAJlRoZSBjb25maWd1cmF0aW9uIGZpbGUg Y2Fubm90IGJlIHJlYWQuCABrCgBfAE8KAFwATwEAHWphdmEvaW8vT3B0aW9uYWxEYXRhRXhjZXB0 aW9uBwBvAQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24HAHEBACBqYXZhL2lvL1N0 cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbgcAcwEAClNvdXJjZUZpbGUBAAxTZXR1cElPLmphdmEAIQAC AAQAAAAAAAMAAQAFAAYAAQAHAAAAEQABAAEAAAAFKrcACbEAAAAAAAkACgALAAEABwAAAUUABQAH AAAAvRINuAATTQFOAToEAToFLBIVtgAbmQAfuwAdWbsAH1kSIbcAJCu2ACi2ACy3AC06BacADbsA HVkrtwAtOgW7AC9ZGQW3ADJOpwAaOgayADYZBrYAPKcADToGsgA2GQa2ADy7AD5ZLbcAQToEGQQq tgBEpwAlOgayADa7AB9ZEka3ACQrtgAoEki2ACgZBrYAS7YALLYATS22AFAZBLYAUacAHDoGsgA2 uwAfWRJTtwAkGQa2AEu2ACy2AE0ErAAEAD0ARwBKAFUAPQBHAFcAVwBhAHEAdABXAJYAnwCiAFcA AQBYAAAAVgAVAAAAGAAGABkACAAaAAsAGwAOAB0AFwAfADMAIwA9ACcASgAoAEwAKABXACkAWQAp AGEAKwBrACwAdAAtAHYALgCWADEAmgAyAKIAMwCkADMAuwA0AAkAWQBaAAEABwAAAVwABQAHAAAA uBINuAATTAFNAU4BOgQBOgUrEhW2ABuZAB+7AB1ZuwAfWRIhtwAkKrYAKLYALLcALToFpwANuwAd WSq3AC06BbsAXFkZBbcAXU67AF9ZLbcAYjoEGQS2AGZNpwA0OgayADYSaLYATacAJzoGsgA2Emq2 AE2nABo6BrIANhJstgBNpwANOgayADYSbLYATacABFcZBLYAbS22AG6nABw6BrIANrsAH1kSU7cA JBkGtgBLtgAstgBNLLAABgA/AFkAXABwAD8AWQBpAHIAPwBZAHYAdAA/AFkAgwBXAD8AjQCQAAAA kQCaAJ0AVwABAFgAAABiABgAAABAAAYAQQAIAEIACgBDAA0ARAAQAEUAGQBGADUASAA/AEoASQBL AFMATABcAE0AXgBOAGkATwBrAFAAdgBRAHgAUgCDAFMAhQBUAJEAVwCWAFgAnQBZAJ8AWQC2AFoA AQB1AAAAAgB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU2V0dXBJTy5q YXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAw ADAwMDAwMDA0MjIxADA3NjE3NjMwNzE2ADAxMTc2MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRz dDsNCmltcG9ydCBqYXZhLmlvLio7DQoNDQpwdWJsaWMgY2xhc3MgU2V0dXBJTyB7DQoJLy8gTVVT VCBjYXRjaCBhbnkgZXhjZXB0aW9uIHRoYXQgbWlnaHQgYmUgdGhyb3duISENCglwdWJsaWMgU2V0 dXBJTygpIHsNCgl9DQoNDQoNDQoNDQoJLyoqDQoJKiBPcGVucyBhbiBvdXRwdXQgZmlsZSBmb3Ig d3JpdGluZyBvYmplY3RzDQoJKiByZXR1cm5zIGFuIE9iamVjdE91dHB1dFN0cmVhbSBvYmplY3QN CgkqLw0KDQ0KCXB1YmxpYyBzdGF0aWMgaW50IG9wZW5PdXRGaWxlKE9iamVjdCBvYmosIFN0cmlu ZyBzKSB7DQoNDQoJCVN0cmluZyBvc05hbWU9U3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIik7 DQoJCUZpbGVPdXRwdXRTdHJlYW0gT1MgPSBudWxsOw0KCQlPYmplY3RPdXRwdXRTdHJlYW0gT09T ID0gbnVsbDsNCgkJRmlsZSBvdXRGaWxlID0gbnVsbDsNCgkJDQoJCWlmKG9zTmFtZS5lcXVhbHMo IkxpbnV4IikpDQoJCXsNCgkJb3V0RmlsZSA9IG5ldyBGaWxlKCIvdXNyL2xvY2FsLyIgKyBzKTsN CgkJfQ0KCQllbHNlDQoJCXsNCgkJb3V0RmlsZSA9IG5ldyBGaWxlKHMpOw0KCQl9DQoJCQ0KCQl0 cnl7DQoJCU9TID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0RmlsZSk7DQoJCX1jYXRjaChGaWxl Tm90Rm91bmRFeGNlcHRpb24gZmUpe1N5c3RlbS5vdXQucHJpbnRsbihmZSk7IH0NCgkJY2F0Y2gg KElPRXhjZXB0aW9uIGlvZSl7U3lzdGVtLm91dC5wcmludGxuKGlvZSk7IH0NCgkJdHJ5ew0KCQlP T1MgPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKE9TKTsNCgkJT09TLndyaXRlT2JqZWN0KG9iaik7 DQoJCX1jYXRjaChJT0V4Y2VwdGlvbiBpZSl7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9y IHdyaXRpbmcgZmlsZSAiK3MrIiAuIFBsZWFzZSBjaGVjayBzeXN0ZW0gYW5kIHJlcnVuIHByb2dy YW0uXG4iK2llKTsNCgkJfQ0KCQl0cnl7DQoJCU9TLmNsb3NlKCk7DQoJCU9PUy5jbG9zZSgpOw0K CQl9Y2F0Y2goSU9FeGNlcHRpb24gZSl7U3lzdGVtLm91dC5wcmludGxuKCJFcnJvciBjbG9zaW5n LlxuIitlKTt9DQoJCXJldHVybiAxOw0KCX0NCg0NCgkvKioNCgkqIE9wZW5zIGFuIGlucHV0IGZp bGUgZm9yIHJlYWRpbmcgb2JqZWN0cw0KCSogcmV0dXJucyBhbiBPYmplY3RJbnB1dFN0cmVhbSBv YmplY3QNCgkqLw0KDQ0KCXB1YmxpYyBzdGF0aWMgT2JqZWN0IG9wZW5JbkZpbGUoU3RyaW5nIHMp IC8vdGhyb3dzIEV4Y2VwdGlvbg0KCXsNCgkJU3RyaW5nIG9zTmFtZT1TeXN0ZW0uZ2V0UHJvcGVy dHkoIm9zLm5hbWUiKTsNCgkJT2JqZWN0IG9iaiA9IG51bGw7DQoJCUZpbGVJbnB1dFN0cmVhbSBJ UyA9IG51bGw7DQoJCU9iamVjdElucHV0U3RyZWFtIE9JUyA9IG51bGw7DQoJCUZpbGUgaW5GaWxl ID0gbnVsbDsNCgkJaWYob3NOYW1lLmVxdWFscygiTGludXgiKSkNCgkJaW5GaWxlID0gbmV3IEZp bGUoIi91c3IvbG9jYWwvIiArIHMpOw0KCQllbHNlDQoJCWluRmlsZSA9IG5ldyBGaWxlKHMpOw0K CQl0cnkgew0KCQkJSVMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGluRmlsZSk7DQoJCQlPSVMgPSBu ZXcgT2JqZWN0SW5wdXRTdHJlYW0oSVMpOw0KCQkJb2JqID0gKE9iamVjdCkgT0lTLnJlYWRPYmpl Y3QoKTsNCgkJfSBjYXRjaCAoT3B0aW9uYWxEYXRhRXhjZXB0aW9uIG9lKSB7DQoJCQlTeXN0ZW0u b3V0LnByaW50bG4oIlRoZSBjb25maWd1cmF0aW9uIGZpbGUgaGFzIGJlZW4gY29ycnVwdGVkLiIp Ow0KCQl9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsNCgkJCVN5c3RlbS5vdXQu cHJpbnRsbigiQ29uZmlndXJhdGlvbiBmaWxlIGluZm8gY2Fubm90IGJlIGZvdW5kLiIpOw0KCQl9 IGNhdGNoIChTdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24gc2UpIHsNCgkJCVN5c3RlbS5vdXQucHJp bnRsbigiVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjYW5ub3QgYmUgcmVhZC4iKTsNCgkJfSBjYXRj aCAoSU9FeGNlcHRpb24gaWUpIHsNCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiVGhlIGNvbmZpZ3Vy YXRpb24gZmlsZSBjYW5ub3QgYmUgcmVhZC4iKTsNCgkJfSBmaW5hbGx5IHsNCgkJCXRyeXsNCgkJ CSBPSVMuY2xvc2UoKTsNCgkJCSBJUy5jbG9zZSgpOw0KCQkJfWNhdGNoKElPRXhjZXB0aW9uIGUp e1N5c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgY2xvc2luZy5cbiIrZSk7fQ0KCQkJcmV0dXJuIG9i ajsNCgkJfQ0KCX0NCg0NCn0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNyL3RzdC9Uc3QvU2V0dGluZ3MuamF2 YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAADAxMDA0NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAzNzUwADA3 NjIwMTA1MDIwADAxNDQxMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIFRzdDsKaW1wb3J0IGphdmEu aW8uU2VyaWFsaXphYmxlOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS51dGlsLlZlY3Rv cjsKCgovKiBDbGFzcyB0byBob2xkIHRoZSBzZWxlY3Rpb25zIGVudGVyZWQgaW4gYnkgdGhlIGNv bmZpZyBjbGFzcy4KKiAgRGF0YSBzdWNoIGFzIHRoZSBzZXR0aW5ncyBmb3IgdGhlIG1vZGVtLgoq LwoKcHVibGljIGNsYXNzIFNldHRpbmdzIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKCgoJCglw cml2YXRlIFN0cmluZyBwb3J0TmFtZTsKCXByaXZhdGUgU3RyaW5nIGhvbWVEaXI7Cglwcml2YXRl IFN0cmluZyBxdWVEaXI7Cglwcml2YXRlIFN0cmluZyBxdWVGaWxlOwoJcHJpdmF0ZSBib29sZWFu IHF1ZUlnbm9yZTsKCVZlY3RvciBmaWVsZE5hbWVzOyAKCVZlY3RvciBmaWVsZEVuZDsKCVZlY3Rv ciBmSGVhZGVyVGVybTsgCglpbnQgZmllbGRDb3VudDsJCglWZWN0b3IgZmllbGRTZXBhcmF0b3I7 CglWZWN0b3Igc3RhcnQ7ICAgICAgICAgCglWZWN0b3Igc3RvcDsgICAgICAgICAgCglTdHJpbmcg bW9kZWw7CQoKCS8qKgoJICogQ29uc3RydWN0b3IgZm9yIFNldHRpbmdzCgkgKi8KCXB1YmxpYyBT ZXR0aW5ncygpIHsKCQlzdXBlcigpOwoKCQlzdGFydCA9IG5ldyBWZWN0b3IoKTsKCQlmb3IgKGlu dCBpPTA7aTwyNDtpKyspCgkJc3RhcnQuYWRkRWxlbWVudCgic2RmIik7CgkJcG9ydE5hbWUgPSAo Ii9kZXYvdGVybS9hIik7CgkJaG9tZURpciA9ICIvdXNyL2xvY2FsLyI7CgkJcXVlRGlyID0gIi91 c3IvbG9jYWwvIjsKCQlxdWVGaWxlID0gInF1ZSI7CgkJcXVlSWdub3JlID0gdHJ1ZTsKCX0KCglw dWJsaWMgdm9pZCBpbml0KCl7CglQcmludGVyIHBudCA9IG5ldyBQcmludGVyKCk7Cgl9CgoJLyoq CgkgKiBHZXRzIHRoZSBwb3J0CgkgKiBAcmV0dXJuIFJldHVybnMgYSBQb3J0cwoJICovCgoKCS8q KgoJICogR2V0cyB0aGUgcHJpbnRlcgoJICogQHJldHVybiBSZXR1cm5zIGEgUHJpbnRlcgoJICov CgoKCS8qKgoJICogR2V0cyB0aGUgaG9tZURpcgoJICogQHJldHVybiBSZXR1cm5zIGEgU3RyaW5n CgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0SG9tZURpcigpIHsKCQlyZXR1cm4gaG9tZURpcjsKCX0K CS8qKgoJICogU2V0cyB0aGUgaG9tZURpcgoJICogQHBhcmFtIGhvbWVEaXIgVGhlIGhvbWVEaXIg dG8gc2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldEhvbWVEaXIoU3RyaW5nIGhvbWVEaXIpIHsKCQl0 aGlzLmhvbWVEaXIgPSBob21lRGlyOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHF1ZURpcgoJICog QHJldHVybiBSZXR1cm5zIGEgU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0UXVlRGlyKCkg ewoJCXJldHVybiBxdWVEaXI7Cgl9CgkvKioKCSAqIFNldHMgdGhlIHF1ZURpcgoJICogQHBhcmFt IHF1ZURpciBUaGUgcXVlRGlyIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRRdWVEaXIoU3Ry aW5nIHF1ZURpcikgewoJCXRoaXMucXVlRGlyID0gcXVlRGlyOwoJfQoKCgkvKioKCSAqIEdldHMg dGhlIHF1ZUZpbGUKCSAqIEByZXR1cm4gUmV0dXJucyBhIFN0cmluZwoJICovCglwdWJsaWMgU3Ry aW5nIGdldFF1ZUZpbGUoKSB7CgkJcmV0dXJuIHF1ZUZpbGU7Cgl9CgkvKioKCSAqIFNldHMgdGhl IHF1ZUZpbGUKCSAqIEBwYXJhbSBxdWVGaWxlIFRoZSBxdWVGaWxlIHRvIHNldAoJICovCglwdWJs aWMgdm9pZCBzZXRRdWVGaWxlKFN0cmluZyBxdWVGaWxlKSB7CgkJdGhpcy5xdWVGaWxlID0gcXVl RmlsZTsKCX0KCgoJLyoqCgkgKiBHZXRzIHRoZSBxdWVJZ25vcmUKCSAqIEByZXR1cm4gUmV0dXJu cyBhIGJvb2xlYW4KCSAqLwoJcHVibGljIGJvb2xlYW4gZ2V0UXVlSWdub3JlKCkgewoJCXJldHVy biBxdWVJZ25vcmU7Cgl9CgkvKioKCSAqIFNldHMgdGhlIHF1ZUlnbm9yZQoJICogQHBhcmFtIHF1 ZUlnbm9yZSBUaGUgcXVlSWdub3JlIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRRdWVJZ25v cmUoYm9vbGVhbiBxdWVJZ25vcmUpIHsKCQl0aGlzLnF1ZUlnbm9yZSA9IHF1ZUlnbm9yZTsKCX0K Cgp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1NldHVwSU8uY2xhc3MAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDM2NQAwNzYyMDEw MzYxMwAwMTQzMzcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA dXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyv66vgADAC0AdwEAC1RzdC9TZXR1cElPBwABAQAQ amF2YS9sYW5nL09iamVjdAcAAwEABjxpbml0PgEAAygpVgEABENvZGUMAAUABgoABAAIAQALb3Bl bk91dEZpbGUBACcoTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9TdHJpbmc7KUkBAAdvcy5u YW1lCAAMAQAQamF2YS9sYW5nL1N5c3RlbQcADgEAC2dldFByb3BlcnR5AQAmKExqYXZhL2xhbmcv U3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsMABAAEQoADwASAQAFTGludXgIABQBABBqYXZhL2xh bmcvU3RyaW5nBwAWAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaDAAYABkKABcAGgEA DGphdmEvaW8vRmlsZQcAHAEAFmphdmEvbGFuZy9TdHJpbmdCdWZmZXIHAB4BAAsvdXNyL2xvY2Fs LwgAIAEAFShMamF2YS9sYW5nL1N0cmluZzspVgwABQAiCgAfACMBAAZhcHBlbmQBACwoTGphdmEv bGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nQnVmZmVyOwwAJQAmCgAfACcBAAh0b1N0cmlu ZwEAFCgpTGphdmEvbGFuZy9TdHJpbmc7DAApACoKAB8AKwoAHQAjAQAYamF2YS9pby9GaWxlT3V0 cHV0U3RyZWFtBwAuAQARKExqYXZhL2lvL0ZpbGU7KVYMAAUAMAoALwAxAQADb3V0AQAVTGphdmEv aW8vUHJpbnRTdHJlYW07DAAzADQJAA8ANQEAE2phdmEvaW8vUHJpbnRTdHJlYW0HADcBAAdwcmlu dGxuAQAVKExqYXZhL2xhbmcvT2JqZWN0OylWDAA5ADoKADgAOwEAGmphdmEvaW8vT2JqZWN0T3V0 cHV0U3RyZWFtBwA9AQAZKExqYXZhL2lvL091dHB1dFN0cmVhbTspVgwABQA/CgA+AEABAAt3cml0 ZU9iamVjdAwAQgA6CgA+AEMBABNFcnJvciB3cml0aW5nIGZpbGUgCABFAQAqIC4gUGxlYXNlIGNo ZWNrIHN5c3RlbSBhbmQgcmVydW4gcHJvZ3JhbS4KCABHAQAsKExqYXZhL2xhbmcvT2JqZWN0OylM amF2YS9sYW5nL1N0cmluZ0J1ZmZlcjsMACUASQoAHwBKDAA5ACIKADgATAEABWNsb3NlDABOAAYK AC8ATwoAPgBPAQAPRXJyb3IgY2xvc2luZy4KCABSAQAdamF2YS9pby9GaWxlTm90Rm91bmRFeGNl cHRpb24HAFQBABNqYXZhL2lvL0lPRXhjZXB0aW9uBwBWAQAPTGluZU51bWJlclRhYmxlAQAKb3Bl bkluRmlsZQEAJihMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9PYmplY3Q7AQAXamF2YS9p by9GaWxlSW5wdXRTdHJlYW0HAFsKAFwAMQEAGWphdmEvaW8vT2JqZWN0SW5wdXRTdHJlYW0HAF4B ABgoTGphdmEvaW8vSW5wdXRTdHJlYW07KVYMAAUAYAoAXwBhAQAKcmVhZE9iamVjdAEAFCgpTGph dmEvbGFuZy9PYmplY3Q7DABjAGQKAF8AZQEAKlRoZSBjb25maWd1cmF0aW9uIGZpbGUgaGFzIGJl ZW4gY29ycnVwdGVkLggAZwEAKENvbmZpZ3VyYXRpb24gZmlsZSBpbmZvIGNhbm5vdCBiZSBmb3Vu ZC4IAGkBACZUaGUgY29uZmlndXJhdGlvbiBmaWxlIGNhbm5vdCBiZSByZWFkLggAawoAXwBPCgBc AE8BAB1qYXZhL2lvL09wdGlvbmFsRGF0YUV4Y2VwdGlvbgcAbwEAIGphdmEvbGFuZy9DbGFzc05v dEZvdW5kRXhjZXB0aW9uBwBxAQAgamF2YS9pby9TdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24HAHMB AApTb3VyY2VGaWxlAQAMU2V0dXBJTy5qYXZhACEAAgAEAAAAAAADAAEABQAGAAEABwAAABEAAQAB AAAABSq3AAmxAAAAAAAJAAoACwABAAcAAAFFAAUABwAAAL0SDbgAE00BTgE6BAE6BSwSFbYAG5kA H7sAHVm7AB9ZEiG3ACQrtgAotgAstwAtOgWnAA27AB1ZK7cALToFuwAvWRkFtwAyTqcAGjoGsgA2 GQa2ADynAA06BrIANhkGtgA8uwA+WS23AEE6BBkEKrYARKcAJToGsgA2uwAfWRJGtwAkK7YAKBJI tgAoGQa2AEu2ACy2AE0ttgBQGQS2AFGnABw6BrIANrsAH1kSU7cAJBkGtgBLtgAstgBNBKwABAA9 AEcASgBVAD0ARwBXAFcAYQBxAHQAVwCWAJ8AogBXAAEAWAAAAFYAFQAAABgABgAZAAgAGgALABsA DgAdABcAHwAzACMAPQAnAEoAKABMACgAVwApAFkAKQBhACsAawAsAHQALQB2AC4AlgAxAJoAMgCi ADMApAAzALsANAAJAFkAWgABAAcAAAFcAAUABwAAALgSDbgAE0wBTQFOAToEAToFKxIVtgAbmQAf uwAdWbsAH1kSIbcAJCq2ACi2ACy3AC06BacADbsAHVkqtwAtOgW7AFxZGQW3AF1OuwBfWS23AGI6 BBkEtgBmTacANDoGsgA2Emi2AE2nACc6BrIANhJqtgBNpwAaOgayADYSbLYATacADToGsgA2Emy2 AE2nAARXGQS2AG0ttgBupwAcOgayADa7AB9ZElO3ACQZBrYAS7YALLYATSywAAYAPwBZAFwAcAA/ AFkAaQByAD8AWQB2AHQAPwBZAIMAVwA/AI0AkAAAAJEAmgCdAFcAAQBYAAAAYgAYAAAAQAAGAEEA CABCAAoAQwANAEQAEABFABkARgA1AEgAPwBKAEkASwBTAEwAXABNAF4ATgBpAE8AawBQAHYAUQB4 AFIAgwBTAIUAVACRAFcAlgBYAJ0AWQCfAFkAtgBaAAEAdQAAAAIAdgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1NldHVwSU8uamF2YQAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMTAwNDQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDIyMQAwNzYxNzYzMDcxNgAw MTQxNTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIg IAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAcGFja2FnZSBUc3Q7DQppbXBvcnQgamF2YS5pby4qOw0KDQ0K cHVibGljIGNsYXNzIFNldHVwSU8gew0KCS8vIE1VU1QgY2F0Y2ggYW55IGV4Y2VwdGlvbiB0aGF0 IG1pZ2h0IGJlIHRocm93biEhDQoJcHVibGljIFNldHVwSU8oKSB7DQoJfQ0KDQ0KDQ0KDQ0KCS8q Kg0KCSogT3BlbnMgYW4gb3V0cHV0IGZpbGUgZm9yIHdyaXRpbmcgb2JqZWN0cw0KCSogcmV0dXJu cyBhbiBPYmplY3RPdXRwdXRTdHJlYW0gb2JqZWN0DQoJKi8NCg0NCglwdWJsaWMgc3RhdGljIGlu dCBvcGVuT3V0RmlsZShPYmplY3Qgb2JqLCBTdHJpbmcgcykgew0KDQ0KCQlTdHJpbmcgb3NOYW1l PVN5c3RlbS5nZXRQcm9wZXJ0eSgib3MubmFtZSIpOw0KCQlGaWxlT3V0cHV0U3RyZWFtIE9TID0g bnVsbDsNCgkJT2JqZWN0T3V0cHV0U3RyZWFtIE9PUyA9IG51bGw7DQoJCUZpbGUgb3V0RmlsZSA9 IG51bGw7DQoJCQ0KCQlpZihvc05hbWUuZXF1YWxzKCJMaW51eCIpKQ0KCQl7DQoJCW91dEZpbGUg PSBuZXcgRmlsZSgiL3Vzci9sb2NhbC8iICsgcyk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCW91dEZp bGUgPSBuZXcgRmlsZShzKTsNCgkJfQ0KCQkNCgkJdHJ5ew0KCQlPUyA9IG5ldyBGaWxlT3V0cHV0 U3RyZWFtKG91dEZpbGUpOw0KCQl9Y2F0Y2goRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGZlKXtTeXN0 ZW0ub3V0LnByaW50bG4oZmUpOyB9DQoJCWNhdGNoIChJT0V4Y2VwdGlvbiBpb2Upe1N5c3RlbS5v dXQucHJpbnRsbihpb2UpOyB9DQoJCXRyeXsNCgkJT09TID0gbmV3IE9iamVjdE91dHB1dFN0cmVh bShPUyk7DQoJCU9PUy53cml0ZU9iamVjdChvYmopOw0KCQl9Y2F0Y2goSU9FeGNlcHRpb24gaWUp ew0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJFcnJvciB3cml0aW5nIGZpbGUgIitzKyIgLiBQbGVh c2UgY2hlY2sgc3lzdGVtIGFuZCByZXJ1biBwcm9ncmFtLlxuIitpZSk7DQoJCX0NCgkJdHJ5ew0K CQlPUy5jbG9zZSgpOw0KCQlPT1MuY2xvc2UoKTsNCgkJfWNhdGNoKElPRXhjZXB0aW9uIGUpe1N5 c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgY2xvc2luZy5cbiIrZSk7fQ0KCQlyZXR1cm4gMTsNCgl9 DQoNDQoJLyoqDQoJKiBPcGVucyBhbiBpbnB1dCBmaWxlIGZvciByZWFkaW5nIG9iamVjdHMNCgkq IHJldHVybnMgYW4gT2JqZWN0SW5wdXRTdHJlYW0gb2JqZWN0DQoJKi8NCg0NCglwdWJsaWMgc3Rh dGljIE9iamVjdCBvcGVuSW5GaWxlKFN0cmluZyBzKSAvL3Rocm93cyBFeGNlcHRpb24NCgl7DQoJ CVN0cmluZyBvc05hbWU9U3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIik7DQoJCU9iamVjdCBv YmogPSBudWxsOw0KCQlGaWxlSW5wdXRTdHJlYW0gSVMgPSBudWxsOw0KCQlPYmplY3RJbnB1dFN0 cmVhbSBPSVMgPSBudWxsOw0KCQlGaWxlIGluRmlsZSA9IG51bGw7DQoJCWlmKG9zTmFtZS5lcXVh bHMoIkxpbnV4IikpDQoJCWluRmlsZSA9IG5ldyBGaWxlKCIvdXNyL2xvY2FsLyIgKyBzKTsNCgkJ ZWxzZQ0KCQlpbkZpbGUgPSBuZXcgRmlsZShzKTsNCgkJdHJ5IHsNCgkJCUlTID0gbmV3IEZpbGVJ bnB1dFN0cmVhbShpbkZpbGUpOw0KCQkJT0lTID0gbmV3IE9iamVjdElucHV0U3RyZWFtKElTKTsN CgkJCW9iaiA9IChPYmplY3QpIE9JUy5yZWFkT2JqZWN0KCk7DQoJCX0gY2F0Y2ggKE9wdGlvbmFs RGF0YUV4Y2VwdGlvbiBvZSkgew0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJUaGUgY29uZmlndXJh dGlvbiBmaWxlIGhhcyBiZWVuIGNvcnJ1cHRlZC4iKTsNCgkJfSBjYXRjaCAoQ2xhc3NOb3RGb3Vu ZEV4Y2VwdGlvbiBlKSB7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvbmZpZ3VyYXRpb24gZmls ZSBpbmZvIGNhbm5vdCBiZSBmb3VuZC4iKTsNCgkJfSBjYXRjaCAoU3RyZWFtQ29ycnVwdGVkRXhj ZXB0aW9uIHNlKSB7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBjb25maWd1cmF0aW9uIGZp bGUgY2Fubm90IGJlIHJlYWQuIik7DQoJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGllKSB7DQoJCQlT eXN0ZW0ub3V0LnByaW50bG4oIlRoZSBjb25maWd1cmF0aW9uIGZpbGUgY2Fubm90IGJlIHJlYWQu Iik7DQoJCX0gZmluYWxseSB7DQoJCQl0cnl7DQoJCQkgT0lTLmNsb3NlKCk7DQoJCQkgSVMuY2xv c2UoKTsNCgkJCX1jYXRjaChJT0V4Y2VwdGlvbiBlKXtTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9y IGNsb3NpbmcuXG4iK2UpO30NCgkJCXJldHVybiBvYmo7DQoJCX0NCgl9DQoNDQp9AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAHVzci90c3QvVHN0L1ByaW50ZXIuY2xhc3MAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAwMTAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDUzNgAwNzYyMDEwNTQzNgAwMTQ0MzcA IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAyv66vgADAC0AWgEAC1RzdC9QcmludGVyBwABAQAQamF2YS9sYW5nL09i amVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAKZmllbGROYW1lcwEAEkxqYXZhL3V0 aWwvVmVjdG9yOwEACGZpZWxkRW5kAQALZkhlYWRlclRlcm0BAApmaWVsZENvdW50AQABSQEADmZp ZWxkU2VwYXJhdG9yAQANcGFnZVNlcGFyYXRvcgEABXN0YXJ0AQAEc3RvcAEABW1vZGVsAQASTGph dmEvbGFuZy9TdHJpbmc7AQAIV0lMRENBUkQBAAZmaW5pdCQBAAMoKVYBAAlTeW50aGV0aWMBAARD b2RlDAATAAwJAAIAGAEAD0xpbmVOdW1iZXJUYWJsZQEABXNldHVwAQADKClJAQAGPGluaXQ+DAAd ABUKAAQAHgwAFAAVCgACACABABBqYXZhL3V0aWwvVmVjdG9yBwAiCgAjAB4MAAcACAkAAgAlAQAR amF2YS9sYW5nL0ludGVnZXIHACcBAAQoSSlWDAAdACkKACgAKgEACmFkZEVsZW1lbnQBABUoTGph dmEvbGFuZy9PYmplY3Q7KVYMACwALQoAIwAuDAAJAAgJAAIAMAwACgAICQACADIMAAsADAkAAgA0 DAANAAgJAAIANgwADgAICQACADgMAA8ACAkAAgA6DAAQAAgJAAIAPAEABGZvdXIIAD4MABEAEgkA AgBAAQANZ2V0RmllbGROYW1lcwEAFCgpTGphdmEvdXRpbC9WZWN0b3I7AQANc2V0RmllbGROYW1l cwEAFShMamF2YS91dGlsL1ZlY3RvcjspVgEAEWdldEZpZWxkU2VwYXJhdG9yAQARc2V0RmllbGRT ZXBhcmF0b3IBABBnZXRQYWdlU2VwYXJhdG9yAQAQc2V0UGFnZVNlcGFyYXRvcgEACGdldE1vZGVs AQAUKClMamF2YS9sYW5nL1N0cmluZzsBAAhzZXRNb2RlbAEAFShMamF2YS9sYW5nL1N0cmluZzsp VgEACGdldFN0YXJ0AQAIc2V0U3RhcnQBAAdnZXRTdG9wAQAHc2V0U3RvcAEADWdldEZpZWxkQ291 bnQBAA1zZXRGaWVsZENvdW50AQALZ2V0RmllbGRFbmQBAAtzZXRGaWVsZEVuZAEADWdldEhlYWRl clRlcm0BAA1zZXRIZWFkZXJUZXJtAQAKU291cmNlRmlsZQEADFByaW50ZXIuamF2YQAhAAIABAAB AAYACgAAAAcACAAAAAAACQAIAAAAAAAKAAgAAAAAAAsADAAAAAAADQAIAAAAAAAOAAgAAAAAAA8A CAAAAAAAEAAIAAAAAAARABIAAAAQABMADAAAABUAAgAUABUAAgAWAAAAAAAXAAAAIAACAAEAAAAI KhED57UAGbEAAAABABoAAAAGAAEAAAASAAEAGwAcAAEAFwAAABoAAQABAAAAAgOsAAAAAQAaAAAA BgABAAAAGgABAB0AFQABABcAAAHLAAQAAQAAAVcqtwAfKrcAISq7ACNZtwAktQAmKrQAJrsAKFkR APO3ACu2AC8qtAAmuwAoWREAibcAK7YALyq0ACa7AChZEQFZtwArtgAvKrsAI1m3ACS1ADEqtAAx uwAoWREBTbcAK7YALyq0ADG7AChZEQMPtwArtgAvKrsAI1m3ACS1ADMqtAAzuwAoWRAYtwArtgAv KhBMtQA1KrsAI1m3ACS1ADcqtAA3uwAoWRAitwArtgAvKrQAN7sAKFkQK7cAK7YALyq7ACNZtwAk tQA5KrQAObsAKFkQCrcAK7YALyq0ADm7AChZEAq3ACu2AC8quwAjWbcAJLUAOyq0ADu7AChZECG3 ACu2AC8qtAA7uwAoWRBYtwArtgAvKrQAO7sAKFkQRbcAK7YALyq7ACNZtwAktQA9KrQAPbsAKFkQ LbcAK7YALyq0AD27AChZEE23ACu2AC8qEj+1AEGxAAAAAQAaAAAAYgAYAAgAJQATACYAJAAnADUA KABGACsAUQAsAGIALQBzAC8AfgAwAI4AMwCUADYAnwA4AK8AOQC/ADsAygA9ANoAPgDqAEAA9QBB AQUAQgEVAEMBJQBGATAARwFAAEgBUABLAAEAQgBDAAEAFwAAAB0AAQABAAAABSq0ACawAAAAAQAa AAAABgABAAAAWAABAEQARQABABcAAAAeAAIAAgAAAAYqK7UAJrEAAAABABoAAAAGAAEAAABfAAEA RgBDAAEAFwAAAB0AAQABAAAABSq0ADewAAAAAQAaAAAABgABAAAAaAABAEcARQABABcAAAAeAAIA AgAAAAYqK7UAN7EAAAABABoAAAAGAAEAAABvAAEASABDAAEAFwAAAB0AAQABAAAABSq0ADmwAAAA AQAaAAAABgABAAAAeAABAEkARQABABcAAAAeAAIAAgAAAAYqK7UAObEAAAABABoAAAAGAAEAAAB/ AAEASgBLAAEAFwAAAB0AAQABAAAABSq0AEGwAAAAAQAaAAAABgABAAAAiAABAEwATQABABcAAAAe AAIAAgAAAAYqK7UAQbEAAAABABoAAAAGAAEAAACPAAEATgBDAAEAFwAAAB0AAQABAAAABSq0ADuw AAAAAQAaAAAABgABAAAAmAABAE8ARQABABcAAAAeAAIAAgAAAAYqK7UAO7EAAAABABoAAAAGAAEA AACfAAEAUABDAAEAFwAAAB0AAQABAAAABSq0AD2wAAAAAQAaAAAABgABAAAAqAABAFEARQABABcA AAAeAAIAAgAAAAYqK7UAPbEAAAABABoAAAAGAAEAAACvAAEAUgAcAAEAFwAAAB0AAQABAAAABSq0 ADWsAAAAAQAaAAAABgABAAAAuAABAFMAKQABABcAAAAeAAIAAgAAAAYqG7UANbEAAAABABoAAAAG AAEAAAC/AAEAVABDAAEAFwAAAB0AAQABAAAABSq0ADGwAAAAAQAaAAAABgABAAAAyAABAFUARQAB ABcAAAAeAAIAAgAAAAYqK7UAMbEAAAABABoAAAAGAAEAAADPAAEAVgBDAAEAFwAAAB0AAQABAAAA BSq0ADOwAAAAAQAaAAAABgABAAAA2AABAFcARQABABcAAAAeAAIAAgAAAAYqK7UAM7EAAAABABoA AAAGAAEAAADfAAEAWAAAAAIAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHVzci90c3QvVHN0L1ByaW50ZXIuamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAw NDQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNzQwNAAwNzYyMDEwNTQyNAAwMTQyNDMAIDAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAcGFja2FnZSBUc3Q7CmltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOwoJaW1wb3J0IGph dmEuaW8uU2VyaWFsaXphYmxlOwoKCnB1YmxpYyBjbGFzcyBQcmludGVyIGltcGxlbWVudHMgU2Vy aWFsaXphYmxlewoKCglWZWN0b3IgZmllbGROYW1lczsgICAgCglWZWN0b3IgZmllbGRFbmQ7CQoJ VmVjdG9yIGZIZWFkZXJUZXJtOyAgICAvLwoJaW50IGZpZWxkQ291bnQ7CQkKCVZlY3RvciBmaWVs ZFNlcGFyYXRvcjsgLy8KCVZlY3RvciBwYWdlU2VwYXJhdG9yOyAgLy8KCVZlY3RvciBzdGFydDsg ICAgICAgICAgLy8KCVZlY3RvciBzdG9wOyAgICAgICAgICAgLy8KCVN0cmluZyBtb2RlbDsJCQoJ ZmluYWwgaW50IFdJTERDQVJEID0gOTk5OyAvL0Rlc2lnbmF0ZXMgYSB2YWx1ZSBmb3Igc2tpcHBp bmcgY29tcGFyZXMuCgoKCgoJcHVibGljIGludCBzZXR1cCgpewoJCQoJCglyZXR1cm4gMDsJCgl9 CgoKCgoJLyoqCgkgKiBDb25zdHJ1Y3RvciBmb3IgUHJpbnRlcgoJICovCglwdWJsaWMgUHJpbnRl cigpIHsKCQlzdXBlcigpOwoJCWZpZWxkTmFtZXMgPSBuZXcgVmVjdG9yKCk7CgkJZmllbGROYW1l cy5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDI0MykpOwoJCWZpZWxkTmFtZXMuYWRkRWxlbWVudChu ZXcgSW50ZWdlcigxMzcpKTsKCQlmaWVsZE5hbWVzLmFkZEVsZW1lbnQobmV3IEludGVnZXIoMzQ1 KSk7CgoKCQlmaWVsZEVuZCA9IG5ldyBWZWN0b3IoKTsKCQlmaWVsZEVuZC5hZGRFbGVtZW50KG5l dyBJbnRlZ2VyKDMzMykpOwoJCWZpZWxkRW5kLmFkZEVsZW1lbnQobmV3IEludGVnZXIoNzgzKSk7 CgkJCgkJZkhlYWRlclRlcm0gPSBuZXcgVmVjdG9yKCk7CgkJZkhlYWRlclRlcm0uYWRkRWxlbWVu dChuZXcgSW50ZWdlcigyNCkpOwoKCgkJZmllbGRDb3VudCA9IDc2OwoKCgkJZmllbGRTZXBhcmF0 b3IgPSBuZXcgVmVjdG9yKCk7CgkJewoJCQlmaWVsZFNlcGFyYXRvci5hZGRFbGVtZW50KG5ldyBJ bnRlZ2VyKDM0KSk7CgkJCWZpZWxkU2VwYXJhdG9yLmFkZEVsZW1lbnQobmV3IEludGVnZXIoNDMp KTsKCQl9CgkJcGFnZVNlcGFyYXRvciA9IG5ldyBWZWN0b3IoKTsKCQl7CgkJCXBhZ2VTZXBhcmF0 b3IuYWRkRWxlbWVudChuZXcgSW50ZWdlcigxMCkpOwoJCQlwYWdlU2VwYXJhdG9yLmFkZEVsZW1l bnQobmV3IEludGVnZXIoMTApKTsKCQl9CgkJc3RhcnQgPSBuZXcgVmVjdG9yKCk7CgkJc3RhcnQu YWRkRWxlbWVudChuZXcgSW50ZWdlcigzMykpOwoJCXN0YXJ0LmFkZEVsZW1lbnQobmV3IEludGVn ZXIoODgpKTsKCQlzdGFydC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKDY5KSk7CgoKCQlzdG9wID0g bmV3IFZlY3RvcigpOwoJCXN0b3AuYWRkRWxlbWVudChuZXcgSW50ZWdlcig0NSkpOwoJCXN0b3Au YWRkRWxlbWVudChuZXcgSW50ZWdlcig3NykpOwoKCgkJbW9kZWwgPSAiZm91ciI7Cgl9CgoKCgoK CgkvKioKCSAqIEdldHMgdGhlIGZpZWxkTmFtZXMKCSAqIEByZXR1cm4gUmV0dXJucyBhIFZlY3Rv cgoJICovCglwdWJsaWMgVmVjdG9yIGdldEZpZWxkTmFtZXMoKSB7CgkJcmV0dXJuIGZpZWxkTmFt ZXM7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkTmFtZXMKCSAqIEBwYXJhbSBmaWVsZE5hbWVz IFRoZSBmaWVsZE5hbWVzIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRGaWVsZE5hbWVzKFZl Y3RvciBmaWVsZE5hbWVzKSB7CgkJdGhpcy5maWVsZE5hbWVzID0gZmllbGROYW1lczsKCX0KCgoJ LyoqCgkgKiBHZXRzIHRoZSBmaWVsZFNlcGFyYXRvcgoJICogQHJldHVybiBSZXR1cm5zIGEgVmVj dG9yCgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0RmllbGRTZXBhcmF0b3IoKSB7CgkJcmV0dXJuIGZp ZWxkU2VwYXJhdG9yOwoJfQoJLyoqCgkgKiBTZXRzIHRoZSBmaWVsZFNlcGFyYXRvcgoJICogQHBh cmFtIGZpZWxkU2VwYXJhdG9yIFRoZSBmaWVsZFNlcGFyYXRvciB0byBzZXQKCSAqLwoJcHVibGlj IHZvaWQgc2V0RmllbGRTZXBhcmF0b3IoVmVjdG9yIGZpZWxkU2VwYXJhdG9yKSB7CgkJdGhpcy5m aWVsZFNlcGFyYXRvciA9IGZpZWxkU2VwYXJhdG9yOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHBh Z2VTZXBhcmF0b3IKCSAqIEByZXR1cm4gUmV0dXJucyBhIFZlY3RvcgoJICovCglwdWJsaWMgVmVj dG9yIGdldFBhZ2VTZXBhcmF0b3IoKSB7CgkJcmV0dXJuIHBhZ2VTZXBhcmF0b3I7Cgl9CgkvKioK CSAqIFNldHMgdGhlIHBhZ2VTZXBhcmF0b3IKCSAqIEBwYXJhbSBwYWdlU2VwYXJhdG9yIFRoZSBw YWdlU2VwYXJhdG9yIHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRQYWdlU2VwYXJhdG9yKFZl Y3RvciBwYWdlU2VwYXJhdG9yKSB7CgkJdGhpcy5wYWdlU2VwYXJhdG9yID0gcGFnZVNlcGFyYXRv cjsKCX0KCgoJLyoqCgkgKiBHZXRzIHRoZSBtb2RlbAoJICogQHJldHVybiBSZXR1cm5zIGEgU3Ry aW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0TW9kZWwoKSB7CgkJcmV0dXJuIG1vZGVsOwoJfQoJ LyoqCgkgKiBTZXRzIHRoZSBtb2RlbAoJICogQHBhcmFtIG1vZGVsIFRoZSBtb2RlbCB0byBzZXQK CSAqLwoJcHVibGljIHZvaWQgc2V0TW9kZWwoU3RyaW5nIG1vZGVsKSB7CgkJdGhpcy5tb2RlbCA9 IG1vZGVsOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIHN0YXJ0CgkgKiBAcmV0dXJuIFJldHVybnMg YSBWZWN0b3IKCSAqLwoJcHVibGljIFZlY3RvciBnZXRTdGFydCgpIHsKCQlyZXR1cm4gc3RhcnQ7 Cgl9CgkvKioKCSAqIFNldHMgdGhlIHN0YXJ0CgkgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IHRv IHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRTdGFydChWZWN0b3Igc3RhcnQpIHsKCQl0aGlzLnN0 YXJ0ID0gc3RhcnQ7Cgl9CgoKCS8qKgoJICogR2V0cyB0aGUgc3RvcAoJICogQHJldHVybiBSZXR1 cm5zIGEgVmVjdG9yCgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0U3RvcCgpIHsKCQlyZXR1cm4gc3Rv cDsKCX0KCS8qKgoJICogU2V0cyB0aGUgc3RvcAoJICogQHBhcmFtIHN0b3AgVGhlIHN0b3AgdG8g c2V0CgkgKi8KCXB1YmxpYyB2b2lkIHNldFN0b3AoVmVjdG9yIHN0b3ApIHsKCQl0aGlzLnN0b3Ag PSBzdG9wOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIGZpZWxkQ291bnQKCSAqIEByZXR1cm4gUmV0 dXJucyBhIGludAoJICovCglwdWJsaWMgaW50IGdldEZpZWxkQ291bnQoKSB7CgkJcmV0dXJuIGZp ZWxkQ291bnQ7Cgl9CgkvKioKCSAqIFNldHMgdGhlIGZpZWxkQ291bnQKCSAqIEBwYXJhbSBmaWVs ZENvdW50IFRoZSBmaWVsZENvdW50IHRvIHNldAoJICovCglwdWJsaWMgdm9pZCBzZXRGaWVsZENv dW50KGludCBmaWVsZENvdW50KSB7CgkJdGhpcy5maWVsZENvdW50ID0gZmllbGRDb3VudDsKCX0K CgoJLyoqCgkgKiBHZXRzIHRoZSBmaWVsZEVuZAoJICogQHJldHVybiBSZXR1cm5zIGEgVmVjdG9y CgkgKi8KCXB1YmxpYyBWZWN0b3IgZ2V0RmllbGRFbmQoKSB7CgkJcmV0dXJuIGZpZWxkRW5kOwoJ fQoJLyoqCgkgKiBTZXRzIHRoZSBmaWVsZEVuZAoJICogQHBhcmFtIGZpZWxkRW5kIFRoZSBmaWVs ZEVuZCB0byBzZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0RmllbGRFbmQoVmVjdG9yIGZpZWxkRW5k KSB7CgkJdGhpcy5maWVsZEVuZCA9IGZpZWxkRW5kOwoJfQoKCgkvKioKCSAqIEdldHMgdGhlIGhl YWRlclRlcm0KCSAqIEByZXR1cm4gUmV0dXJucyBhIFZlY3RvcgoJICovCglwdWJsaWMgVmVjdG9y IGdldEhlYWRlclRlcm0oKSB7CgkJcmV0dXJuIGZIZWFkZXJUZXJtOwoJfQoJLyoqCgkgKiBTZXRz IHRoZSBoZWFkZXJUZXJtCgkgKiBAcGFyYW0gaGVhZGVyVGVybSBUaGUgaGVhZGVyVGVybSB0byBz ZXQKCSAqLwoJcHVibGljIHZvaWQgc2V0SGVhZGVyVGVybShWZWN0b3IgaGVhZGVyVGVybSkgewoJ CWZIZWFkZXJUZXJtID0gaGVhZGVyVGVybTsKCX0KCgp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
next reply other threads:[~2003-02-13 19:16 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2003-02-13 19:16 doparsons [this message] 2003-03-17 22:36 Doug Parsons
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20030213191512.1120.qmail@sources.redhat.com \ --to=doparsons@rev.net \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).