Y29tbWVudF9jaGFyICAgICUKZXNjYXBlX2NoYXIgICAgIC8KJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQolCiUgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSAgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQolIGNvbnRyaWJ1dG9yICBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgIHRoZSBOT1RJQ0UgIGZpbGUgZGlzdHJpYnV0ZWQKJSB3aXRoICB0aGlzICB3b3JrICBmb3IgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gIHJlZ2FyZGluZyAgY29weXJpZ2h0CiUgb3duZXJzaGlwLiAgIFRoZSBBU0YgIGxpY2Vuc2VzIHRoaXMgIGZpbGUgdG8gIHlvdSB1bmRlciAgdGhlIEFwYWNoZQolIExpY2Vuc2UsIFZlcnNpb24gIDIuMCAodGhlICBMaWNlbnNlKTsgeW91IG1heSAgbm90IHVzZSAgdGhpcyBmaWxlICAKJSBleGNlcHQgaW4gIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gICBZb3UgbWF5IG9idGFpbiAgYSBjb3B5IG9mCiUgdGhlIExpY2Vuc2UgYXQKJQolIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAolCiUgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQolIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSAgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAgIkFTIElTIiBCQVNJUywKJSBXSVRIT1VUICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgIE9GIEFOWSAgS0lORCwgZWl0aGVyICBleHByZXNzIG9yCiUgaW1wbGllZC4gICBTZWUgIHRoZSBMaWNlbnNlICBmb3IgIHRoZSAgc3BlY2lmaWMgbGFuZ3VhZ2UgIGdvdmVybmluZwolIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KJQolIENvcHlyaWdodCAxOTk5LTIwMDcgUm9ndWUgV2F2ZSBTb2Z0d2FyZSwgSW5jLgolCiUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlCiUKJSBDaGluZXNlIGxhbmd1YWdlIGxvY2FsZSBmb3IgSG9uZyBLb25nLgolIENvbnRyaWJ1dGVkIGJ5IEtlbnRhcm9oIE5vamkgPGtub2ppQGpwLmlibS5jb20+IGFuZAolIFRldHN1amkgT3JpdGEgPG9yaXRhQGpwLmlibS5jb20+LgoKTENfSURFTlRJRklDQVRJT04KdGl0bGUgICAgICAiQ2hpbmVzZSBsYW5ndWFnZSBsb2NhbGUgZm9yIEhvbmcgS29uZyIKc291cmNlICAgICAiSUJNIEdsb2JhbGl6YXRpb24gQ2VudGVyIG9mIENvbXBldGVuY3ksIFlhbWF0byBTb2Z0d2FyZSBMYWJvcmF0b3J5IgphZGRyZXNzICAgICIxNjIzLTE0LCBTaGltb3RzdXJ1bWEsIFlhbWF0by1zaGksIEthbmFnYXdhLWtlbiwgMjQyLTg1MDIsIEphcGFuIgpjb250YWN0ICAgICIiCmVtYWlsICAgICAgImJ1Zy1nbGliY0BnbnUub3JnIgp0ZWwgICAgICAgICIiCmZheCAgICAgICAgIiIKbGFuZ3VhZ2UgICAiQ2hpbmVzZSIKdGVycml0b3J5ICAiSG9uZyBLb25nIgpyZXZpc2lvbiAgICIxLjAiCmRhdGUgICAgICAgIjIwMDAtMDctMjAiCiUKY2F0ZWdvcnkgICJ6aF9ISzoyMDAwIjtMQ19JREVOVElGSUNBVElPTgpjYXRlZ29yeSAgInpoX0hLOjIwMDAiO0xDX0NUWVBFCmNhdGVnb3J5ICAiemhfSEs6MjAwMCI7TENfQ09MTEFURQpjYXRlZ29yeSAgInpoX0hLOjIwMDAiO0xDX1RJTUUKY2F0ZWdvcnkgICJ6aF9ISzoyMDAwIjtMQ19OVU1FUklDCmNhdGVnb3J5ICAiemhfSEs6MjAwMCI7TENfTU9ORVRBUlkKY2F0ZWdvcnkgICJ6aF9ISzoyMDAwIjtMQ19NRVNTQUdFUwpjYXRlZ29yeSAgInpoX0hLOjIwMDAiO0xDX1BBUEVSCmNhdGVnb3J5ICAiemhfSEs6MjAwMCI7TENfTkFNRQpjYXRlZ29yeSAgInpoX0hLOjIwMDAiO0xDX0FERFJFU1MKY2F0ZWdvcnkgICJ6aF9ISzoyMDAwIjtMQ19URUxFUEhPTkUKCkVORCBMQ19JREVOVElGSUNBVElPTgoKTENfQ1RZUEUKY29weSAiaTE4biIKRU5EIExDX0NUWVBFCgpMQ19DT0xMQVRFCgolIENvcHkgdGhlIHRlbXBsYXRlIGZyb20gSVNPL0lFQyAxNDY1MQpjb3B5ICJpc28xNDY1MV90MSIKCkVORCBMQ19DT0xMQVRFCgpMQ19NT05FVEFSWQolIFRoaXMgaXMgdGhlIFBPU0lYIExvY2FsZSBkZWZpbml0aW9uIHRoZSBMQ19NT05FVEFSWSBjYXRlZ29yeS4KJSBUaGVzZSBhcmUgZ2VuZXJhdGVkIGJhc2VkIG9uIFhNTCBiYXNlIExvY2FsZSBkaWZpbnRpb24gZmlsZQolIGZvciBJQk0gQ2xhc3MgZm9yIFVuaWNvZGUvSmF2YQolCmludF9jdXJyX3N5bWJvbCAgICAgICAiPFUwMDQ4PjxVMDA0Qj48VTAwNDQ+PFUwMDIwPiIKY3VycmVuY3lfc3ltYm9sICAgICAgICI8VTAwNDg+PFUwMDRCPjxVMDAyND4iCm1vbl9kZWNpbWFsX3BvaW50ICAgICAiPFUwMDJFPiIKbW9uX3Rob3VzYW5kc19zZXAgICAgICI8VTAwMkM+Igptb25fZ3JvdXBpbmcgICAgICAgICAgMwpwb3NpdGl2ZV9zaWduICAgICAgICAgIiIKbmVnYXRpdmVfc2lnbiAgICAgICAgICI8VTAwMkQ+IgppbnRfZnJhY19kaWdpdHMgICAgICAgMgpmcmFjX2RpZ2l0cyAgICAgICAgICAgMgpwX2NzX3ByZWNlZGVzICAgICAgICAgMQpwX3NlcF9ieV9zcGFjZSAgICAgICAgMApuX2NzX3ByZWNlZGVzICAgICAgICAgMQpuX3NlcF9ieV9zcGFjZSAgICAgICAgMApwX3NpZ25fcG9zbiAgICAgICAgICAgMQpuX3NpZ25fcG9zbiAgICAgICAgICAgMAolCkVORCBMQ19NT05FVEFSWQoKCkxDX05VTUVSSUMKJSBUaGlzIGlzIHRoZSBQT1NJWCBMb2NhbGUgZGVmaW5pdGlvbiBmb3IgdGhlIExDX05VTUVSSUMgIGNhdGVnb3J5LgolCmRlY2ltYWxfcG9pbnQgICAgICAgICAgIjxVMDAyRT4iCnRob3VzYW5kc19zZXAgICAgICAgICAgIjxVMDAyQz4iCmdyb3VwaW5nICAgICAgICAgICAgICAgMwolCkVORCBMQ19OVU1FUklDCgoKTENfVElNRQolIFRoaXMgaXMgdGhlIFBPU0lYIExvY2FsZSBkZWZpbml0aW9uIGZvciB0aGUgTENfVElNRSBjYXRlZ29yeS4KJSBUaGVzZSBhcmUgZ2VuZXJhdGVkIGJhc2VkIG9uIFhNTCBiYXNlIExvY2FsZSBkaWZpbnRpb24gZmlsZQolIGZvciBJQk0gQ2xhc3MgZm9yIFVuaWNvZGUvSmF2YQolCiUgQWJicmV2aWF0ZWQgd2Vla2RheSBuYW1lcyAoJWEpCmFiZGF5ICAgICAgICI8VTY1RTU+PFUwMDIwPiI7IjxVNEUwMD48VTAwMjA+IjsvCiAgICAgICAgICAgICI8VTRFOEM+PFUwMDIwPiI7IjxVNEUwOT48VTAwMjA+IjsvCiAgICAgICAgICAgICI8VTU2REI+PFUwMDIwPiI7IjxVNEU5ND48VTAwMjA+IjsvCiAgICAgICAgICAgICI8VTUxNkQ+PFUwMDIwPiIKJQolIEZ1bGwgd2Vla2RheSBuYW1lcyAoJUEpCmRheSAgICAgICAgICI8VTY2MUY+PFU2NzFGPjxVNjVFNT48VTAwMjA+IjsiPFU2NjFGPjxVNjcxRj48VTRFMDA+PFUwMDIwPiI7LwogICAgICAgICAgICAiPFU2NjFGPjxVNjcxRj48VTRFOEM+PFUwMDIwPiI7IjxVNjYxRj48VTY3MUY+PFU0RTA5PjxVMDAyMD4iOy8KICAgICAgICAgICAgIjxVNjYxRj48VTY3MUY+PFU1NkRCPjxVMDAyMD4iOyI8VTY2MUY+PFU2NzFGPjxVNEU5ND48VTAwMjA+IjsvCiAgICAgICAgICAgICI8VTY2MUY+PFU2NzFGPjxVNTE2RD48VTAwMjA+IgolCiUgQWJicmV2aWF0ZWQgbW9udGggbmFtZXMgKCViKQphYm1vbiAgICAgICAiPFUwMDMxPjxVNjcwOD4iOyI8VTAwMzI+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFUwMDMzPjxVNjcwOD4iOyI8VTAwMzQ+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFUwMDM1PjxVNjcwOD4iOyI8VTAwMzY+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFUwMDM3PjxVNjcwOD4iOyI8VTAwMzg+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFUwMDM5PjxVNjcwOD4iOyI8VTAwMzE+PFUwMDMwPjxVNjcwOD4iOy8KICAgICAgICAgICAgIjxVMDAzMT48VTAwMzE+PFU2NzA4PiI7IjxVMDAzMT48VTAwMzI+PFU2NzA4PiIKJQolIEZ1bGwgbW9udGggbmFtZXMgKCVCKQptb24gICAgICAgICAiPFU0RTAwPjxVNjcwOD4iOyI8VTRFOEM+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFU0RTA5PjxVNjcwOD4iOyI8VTU2REI+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFU0RTk0PjxVNjcwOD4iOyI8VTUxNkQ+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFU0RTAzPjxVNjcwOD4iOyI8VTUxNkI+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFU0RTVEPjxVNjcwOD4iOyI8VTUzNDE+PFU2NzA4PiI7LwogICAgICAgICAgICAiPFU1MzQxPjxVNEUwMD48VTY3MDg+IjsiPFU1MzQxPjxVNEU4Qz48VTY3MDg+IgolCiUgRXF1aXZhbGVudCBvZiBBTSBQTQphbV9wbSAgICAgICAiPFU0RTBBPjxVNTM0OD4iOyI8VTRFMEI+PFU1MzQ4PiIKJQolIEFwcHJvcHJpYXRlIGRhdGUgYW5kIHRpbWUgcmVwcmVzZW50YXRpb24KJSBVcGRhdGUgYnkgUm9nZXIgU28gPHNwYWNlaHVudEBlLWZldmVyLm9yZz4KZF90X2ZtdCAgICAgIjxVMDAyNT48VTAwNTk+PFU1RTc0PjxVMDAyNT48VTAwNjI+PFU2NzA4PjxVMDAyNT48VTAwNjQ+Lwo8VTY1RTU+PFUwMDIwPjxVMDAyNT48VTAwNzA+PFUwMDIwPjxVMDAyNT48VTAwNDk+PFUwMDNBPjxVMDAyNT48VTAwNEQ+Lwo8VTAwM0E+PFUwMDI1PjxVMDA1Mz4iCiUKJSBBcHByb3ByaWF0ZSBkYXRlIHJlcHJlc2VudGF0aW9uCiUgJVmUTiVijI4lZJP6ICVBCmRfZm10ICAgICAgICI8VTAwMjU+PFUwMDU5PjxVNUU3ND48VTAwMjU+PFUwMDYyPjxVNjcwOD48VTAwMjU+PFUwMDY0Pi8KPFU2NUU1PjxVMDAyMD48VTAwMjU+PFUwMDQxPiIKJQolIEFwcHJvcHJpYXRlIHRpbWUgcmVwcmVzZW50YXRpb24KJSAlSY6eJU2VqiVTlWIgJVoKdF9mbXQgICAgICAgIjxVMDAyNT48VTAwNDk+PFU2NjQyPjxVMDAyNT48VTAwNEQ+PFU1MjA2PjxVMDAyNT48VTAwNTM+Lwo8VTc5RDI+PFUwMDIwPjxVMDAyNT48VTAwNUE+IgolCiUgQXBwcm9wcmlhdGUgMTIgaCB0aW1lIHJlcHJlc2VudGF0aW9uICglcikKJSBVcGRhdGUgYnkgUm9nZXIgU28gPHNwYWNlaHVudEBlLWZldmVyLm9yZz4KdF9mbXRfYW1wbSAgIjxVMDAyNT48VTAwNzA+PFUwMDIwPjxVMDAyNT48VTAwNDk+PFUwMDNBPjxVMDAyNT48VTAwNEQ+Lwo8VTAwM0E+PFUwMDI1PjxVMDA1Mz4iCiUKJSBBcHByb3ByaWF0ZSBkYXRlIHJlcHJlc2VudGF0aW9uIChkYXRlKDEpKSAgICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSIKZGF0ZV9mbXQgICAgICAgIjxVMDAyNT48VTAwNjE+PFUwMDIwPjxVMDAyNT48VTAwNjI+PFUwMDIwPjxVMDAyNT48VTAwNjU+Lwo8VTAwMjA+PFUwMDI1PjxVMDA0OD48VTAwM0E+PFUwMDI1PjxVMDA0RD48VTAwM0E+PFUwMDI1PjxVMDA1Mz48VTAwMjA+Lwo8VTAwMjU+PFUwMDVBPjxVMDAyMD48VTAwMjU+PFUwMDU5PiIKRU5EIExDX1RJTUUKCgpMQ19NRVNTQUdFUwolIHllc2V4cHIgICAgICJeWzx5PjxZPjxDSksgU2hpND5dIgolIG5vZXhwciAgICAgICJeWzxuPjxOPjxDSksgQnU0PjxDSksgRm91Mz5dIgp5ZXNleHByICI8VTAwNUU+PFUwMDVCPjxVMDA3OT48VTAwNTk+PFU2NjJGPjxVMDA1RD4iCm5vZXhwciAgIjxVMDA1RT48VTAwNUI+PFUwMDZFPjxVMDA0RT48VTRFMEQ+PFU1NDI2PjxVMDA1RD4iCkVORCBMQ19NRVNTQUdFUwoKCkxDX1BBUEVSCiUgVGhpcyBpcyB0aGUgSVNPX0lFQyBUUjE0NjUyIExvY2FsZSBkZWZpbml0aW9uIGZvciB0aGUKJSBMQ19QQVBFUiBjYXRlZ29yeQpoZWlnaHQgICAgICAyOTcKd2lkdGggICAgICAgMjEwCgpFTkQgTENfUEFQRVIKCgpMQ19OQU1FCiUgVGhpcyBpcyB0aGUgSVNPX0lFQyBUUjE0NjUyIExvY2FsZSBkZWZpbml0aW9uIGZvciB0aGUKJSBMQ19OQU1FIGNhdGVnb3J5LgolCm5hbWVfZm10ICAgICI8VTAwMjU+PFUwMDY2PjxVMDAyNT48VTAwNzQ+PFUwMDI1PjxVMDA2ND48VTAwMzE+IgpuYW1lX2dlbiAgICAiPFU1NDFCPiIKbmFtZV9tciAgICAgIjxVNTE0OD48VTc1MUY+IgpuYW1lX21ycyAgICAiPFU1OTJCPjxVNEVCQT48VTAwMkU+IgpuYW1lX21pc3MgICAiPFU1QzBGPjxVNTlEMD4iCm5hbWVfbXMgICAgICI8VTU5NzM+PFU1OEVCPiIKCkVORCBMQ19OQU1FCgoKTENfQUREUkVTUwolIFRoaXMgaXMgdGhlIElTT19JRUMgVFIxNDY1MiBMb2NhbGUgZGVmaW5pdGlvbiBmb3IgdGhlCiUgTENfQUREUkVTUwpwb3N0YWxfZm10ICAiPFUwMDI1PjxVMDA3QT48VTAwMjU+PFUwMDYzPjxVMDAyNT48VTAwNTQ+PFUwMDI1PjxVMDA3Mz4vCjxVMDAyNT48VTAwNjI+PFUwMDI1PjxVMDA2NT48VTAwMjU+PFUwMDcyPiIKCkVORCBMQ19BRERSRVNTCgoKTENfVEVMRVBIT05FCiUgVGhpcyBpcyB0aGUgSVNPX0lFQyBUUjE0NjUyIExvY2FsZSBkZWZpbml0aW9uIGZvciB0aGUKJQp0ZWxfaW50X2ZtdCAiPFUwMDJCPjxVMDAyNT48VTAwNjM+PFUwMDIwPjxVMDAzQj48VTAwMjU+PFUwMDYxPjxVMDAyMD4vCjxVMDAzQj48VTAwMjU+PFUwMDZDPiIKaW50X3ByZWZpeCAgIjxVMDAzOD48VTAwMzU+PFUwMDMyPiIKCkVORCBMQ19URUxFUEhPTkUKCgpMQ19NRUFTVVJFTUVOVAolIFRoaXMgaXMgdGhlIElTT19JRUMgVFIxNDY1MiBMb2NhbGUgZGVmaW5pdGlvbiBmb3IgdGhlCiUKbWVhc3VyZW1lbnQgMQoKRU5EIExDX01FQVNVUkVNRU5UCg==