dHJlZSBkODk3MjZmMjE3OWRlY2UwYTFhYWQ4ZTZmOWY1NWUxNGE1OTczZjVhCnBhcmVudCBmYzcyNTkwNTQ0M2RmZmQwOGEzMzViMmE3MWE0ZjM3MDExODc5N2Q1CmF1dGhvciBGculk6XJpYyBM6WNhaWxsZSA8ZmxlY2FpbGxlQGhhcHJveHkuY29tPiAxNDg5NDk4MzM3ICswMTAwCmNvbW1pdHRlciBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4gMTQ5MDYwOTA2MCArMDIwMAplbmNvZGluZyBsYXRpbjEKCkJVRy9NSU5PUjogY2ZncGFyc2U6IGxvb3AgaW4gdHJhY2tlZCBzZXJ2ZXJzIGxpc3RzIG5vdCBkZXRlY3RlZCBieSBjaGVja19jb25maWdfdmFsaWRpdHkoKS4KClRoZXJlIGlzIGEgc2lsbHkgY2FzZSB3aGVyZSBhIGxvb3AgaXMgbm90IGRldGVjdGVkIGluIHRyYWNrZWQgc2VydmVycyBsaXN0czoKd2hlbiBhIHNlcnZlciB0cmFja3MgaXRzZWxmLgoKRXg6CiAgIHNlcnZlciBzcnYxIDEyNy4wLjAuMTo4MDAwIHRyYWNrIHNydjEKCldlbGwsIHRoaXMgbmV2ZXIgaGFwcGVucyBhbmQgdGhpcyBkb2VzIG5vdCBwcmV2ZW50IGhhcHJveHkgZnJvbSB3b3JraW5nLgoKQnV0IHdpdGggdGhpcyBuZXh0IGZvbGxvd2luZyBjb25maWd1cmF0aW9uOgoKICAgc2VydmVyIHNydjEgMTI3LjAuMC4xOjgwMDAgdHJhY2sgc3J2MgogICBzZXJ2ZXIgc3J2MiAxMjcuMC4wLjE6ODAwMCB0cmFjayBzcnYyCiAgIHNlcnZlciBzcnYzIDEyNy4wLjAuMTo4MDAwIHRyYWNrIHNydjIKCnRoZSBjb2RlIGluIGNoYXJnZSBvZiBkZXRlY3Rpbmcgc3VjaCBsb29wcyBuZXZlciByZXR1cm5zICh3aXRob3V0IGFueSBlcnJvciBtZXNzYWdlKS4KaGFwcm94eSBiZWNvbWVzIHN0dWNrIGluIGFuIGluZmluaXRlIGxvb3AgYmVjYXVzZSBvZiB0aGlzIHN0YXRlbWVudCBmb3VuZAppbiBjaGVja19jb25maWdfdmFsaWRpdHkoKToKCmZvciAobG9vcCA9IHNydi0+dHJhY2s7IGxvb3AgJiYgbG9vcCAhPSBuZXdzcnY7IGxvb3AgPSBsb29wLT50cmFjayk7CgpBZ2Fpbiwgc3VjaCBhIGNvbmZpZ3VyYXRpb24gaXMgbmV2ZXIgYWNjaWRlbnRhbGx5IHVzZWQgSSBndWVzcy4KVGhpcyBsYXR0ZXIgZXhhbXBsZSBzZWVtcyBzaWxseSwgYnV0IGFzIHNldmVyYWwgJ2RlZmF1bHQtc2VydmVyJyBkaXJlY3RpdmVzIG1heSBiZSB1c2VkCmluIHRoZSBzYW1lIHByb3h5IHNlY3Rpb24sIGFuZCBhcyAnZGVmYXVsdC1zZXJ2ZXInIHNldHRpbmdzIGFyZSBub3QgcmVzZXR0ZWQgZWFjaCBhCm5ldyAnZGVmYXVsdC1zZXJ2ZXInIGxpbmUgaXMgY3JlYXRlZCwgaXQgd2lsbCBtYXRjaCB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBmdXR1cmUsCndoZW4gJ3RyYWNrJyBzZXR0aW5nIHdpbGwgYmUgc3VwcG9ydGVkIGJ5ICdkZWZhdWx0LXNlcnZlcic6CgogICBkZWZhdWx0LXNlcnZlciB0cmFjayBzcnYzCiAgIHNlcnZlciBzcnYxIDEyNy4wLjAuMTo4MDAwCiAgIHNlcnZlciBzcnYyIDEyNy4wLjAuMTo4MDAwCiAgIC4KICAgLgogICAuCiAgIGRlZmF1bHQtc2VydmVyIGNoZWNrCiAgIHNlcnZlciBzcnYzIDEyNy4wLjAuMTo4MDAwCihjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDY1MjhmYzkzZDNjMDY1ZmRhYzg0MWYyNGU1NWNmZTk2NzRhNjc0MTQpCg==