RHJ1ZyBTaWRlIEVmZmVjdCBFeHRyYWN0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGlzIHNpZGUgZWZmZWN0IGV4dHJhY3Rpb24gc3lzdGVtIGV4dHJhY3RzIHBoeXNpY2lhbi1hc3NlcnRlZCBkcnVnIHNpZGUgZWZmZWN0cyBmcm9tIGNsaW5pY2FsIG5vdGVzLiBBbHRlcm5hdGl2ZWx5LCB0aGUgc3lzdGVtIGNhbiBleHRyYWN0IHNlbnRlbmNlcyB0aGF0IHBvc3NpYmx5IGNvbnRhaW4gYm90aCBzaWRlIGVmZmVjdHMgYW5kIGNhdXNhdGl2ZSBkcnVncywgd2hpY2ggY292ZXIgaGlnaGVyIG51bWJlciBvZiBzaWRlIGVmZmVjdCBvY2N1cnJlbmNlcyBidXQgbmVlZHMgaHVtYW4gdmFsaWRhdGlvbiB0byBleHRyYWN0IGluZGl2aWR1YWwgY2F1c2F0aXZlIGRydWdzIGFuZCBzaWRlIGVmZmVjdHMuClRoZSBkZXRhaWxlZCBtZXRob2QgdXNlZCBoZXJlIGNhbiBiZSBmb3VuZCBpbjoKUyBTb2huLCBKUCBBIEtvY2hlciwgQ0cgQ2h1dGUsIEdLIFNhdm92YSwgIkRydWcgc2lkZSBlZmZlY3QgZXh0cmFjdGlvbiBmcm9tIGNsaW5pY2FsIG5hcnJhdGl2ZXMgb2YgcHN5Y2hpYXRyeSBhbmQgcHN5Y2hvbG9neSBwYXRpZW50cyIgSkFNSUEgZG9pOjEwLjExMzYvYW1pYWpubC0yMDExLTAwMDM1MQpUaGUgcGVyZm9ybWFuY2UgcmVwb3J0ZWQgaW4gdGhlIHBhcGVyIGlzIGJhc2VkIG9uIGEgdmFyaWF0aW9uIG9mIGNUQUtFUy4gU28gdGhlIGFjdHVhbCBwZXJmb3JtYW5jZSBvZiB0aGlzIHJlbGVhc2UgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZyb20gaXQuIEFsc28sIG5vdGUgdGhhdCB0aGlzIHJlbGVhc2UgdXNlcyBMaWJTVk0gZm9yIHNpZGUgZWZmZWN0IHNlbnRlbmNlIGNsYXNzaWZpY2F0aW9uIGluc3RlYWQgb2YgQzQuNSwgd2hpY2ggd2FzIHVzZWQgaW4gdGhlIHBhcGVyLCBkdWUgdG8gYSBsaWNlbnNlIGlzc3VlLiAgCgpUaGUgZGVmYXVsdCBjVEFLRVMgaXMgc2hpcHBlZCB3aXRoIGEgc2FtcGxlIGRpY3Rpb25hcnkuIFRvIGFjaGlldmUgdGhlIGZ1bGwgZnVuY3Rpb24gb2YgaXQsIGl0IGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBtb3JlIGNvbXBsZXRlIGRpY3Rpb25hcnkgKHJlZmVyIHRvIENyZWF0aW5nIHlvdXIgb3duIGRpY3Rpb25hcnkgaW4gY1RBS0VTIFVzZXIgR3VpZGUpLiBUaGlzIHNpZGUgZWZmZWN0IGV4dHJhY3Rpb24gYWxzbyByZXF1aXJlcyBEcnVnIE5FUi4gCgpIb3cgdG8gCi0tLS0tLQqVCVJ1biBzaWRlIGVmZmVjdCBleHRyYWN0aW9uClVzZSBTaWRlRWZmZWN0Q1BFLnhtbCBmb3IgcGxhaW4gdGV4dCB3aXRoIE1heW8gc2VjdGlvbiB0YWdzIG9yIFNpZGVFZmZlY3RfQ0RBX0NQRS54bWwgZm9yIENEQSBkb2N1bWVudHMuCgqVCVJ1biBib3RoIHNpZGUgZWZmZWN0IGFuZCBzaWRlIGVmZmVjdCBzZW50ZW5jZSBleHRyYWN0aW9uCQpVc2UgU2lkZUVmZmVjdFNlbnRlbmNlQ1BFLnhtbCBmb3IgcGxhaW4gdGV4dCB3aXRoIE1heW8gc2VjdGlvbiB0YWdzIG9yIFNpZGVFZmZlY3RTZW50ZW5jZV9DREFfQ1BFLnhtbCBmb3IgQ0RBIGRvY3VtZW50cy4KCpUJQ3VzdG9taXplIHNpZGUgZWZmZWN0IGV4dHJhY3Rpb24gcnVsZXMKVGhlIG1ldGhvZCwgZ2V0U2lkZUVmZmVjdHNXaXRoUHJpb3JpdGl6ZWRSdWxlKCkgaW4gU2lkZUVmZmVjdEFubm90YXRvci5qYXZhIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHJ1bGVzIHVzZWQgZm9yIHNpZGUgZWZmZWN0IGV4dHJhY3Rpb24uIEEgdXNlciBjYW4gbW9kaWZ5IGV4aXN0aW5nIHJ1bGVzIG9yIGNyZWF0ZSBuZXcgcnVsZXMuIAo=