ClRoZSB0YXhvbm9teSBvZiBzZXF1ZW5jZSBjb25jZXB0cyBpbiBNUEwgcGFyYWxsZWxzIHRoZSB0YXhvbm9teSBvZiB0aGUgTVBMIAp8aXRlcmF0b3JzfCwgd2l0aCB0d28gYWRkaXRpb25hbCBjbGFzc2lmaWNhdGlvbiBkaW1lbnNpb25zOiAKYGV4dGVuc2liaWxpdHlgIGFuZCBgYXNzb2NpYXRpdmVuZXNzYC4gCgouLiBUaGUgbGF0dGVyIHR3byBhcmUgb3J0aG9nb25hbCB0byAKICAgc2VxdWVuY2UgdHJhdmVyc2FsIGNoYXJhY3RlcmlzdGljcywgYnV0IG5vdCB0byBlYWNoIG90aGVyLCBtZWFuaW5nIHRoYXQgCiAgIGEgc2VxdWVuY2UgY2FuIGJlIGNoYXJhY3Rlcml6ZWQgYXMgYm90aCBgQmlkaXJlY3Rpb25hbGBfXyAKICAgYW5kIGBCYWNrIEV4dGVuc2libGVgX18sIG9yIGBCaWRpcmVjdGlvbmFsYF9fIGFuZCAKICAgYEV4dGVuc2libGUgQXNzb2NpYXRpdmVgX18sIGJ1dCBub3QgYXMgYEJpZGlyZWN0aW9uYWxgX18sIAogICBgQmFjayBFeHRlbnNpYmxlYF9fICphbmQqIGBFeHRlbnNpYmxlIEFzc29jaWF0aXZlYF9fLgoKICAgX18gYEJpZGlyZWN0aW9uYWwgU2VxdWVuY2VgXwogICBfXyBgQmFjayBFeHRlbnNpYmxlIFNlcXVlbmNlYF8KICAgX18gYEJpZGlyZWN0aW9uYWwgU2VxdWVuY2VgXwogICBfXyBgRXh0ZW5zaWJsZSBBc3NvY2lhdGl2ZSBTZXF1ZW5jZWBfCiAgIF9fIGBCaWRpcmVjdGlvbmFsIFNlcXVlbmNlYF8KICAgX18gYEJhY2sgRXh0ZW5zaWJsZSBTZXF1ZW5jZWBfCiAgIF9fIGBFeHRlbnNpYmxlIEFzc29jaWF0aXZlIFNlcXVlbmNlYF8KCgogICBUd28gdXRpbGl0eSBjb25jZXB0cywgfFZhcmlhZGljIFNlcXVlbmNlfCBhbmQgfEludGVncmFsIFNlcXVlbmNlIFdyYXBwZXJ8LAogICBhcmUgbm90IGFwcGxpY2FibGUgaW4gZ2VuZXJpYyBjb250ZXh0cywgYnV0IGFyZSB1c2VkIHRvIGdyb3VwIHRvZ2V0aGVyCiAgIHRoZSBjb21tb24gcGFydHMgb2YgZGlmZmVyZW50IHNlcXVlbmNlIGNsYXNzZXMnIHNwZWNpZmljYXRpb25zLgoKCi4uIHxzZXF1ZW5jZSBjb25jZXB0c3wgcmVwbGFjZTo6IGBzZXF1ZW5jZSBjb25jZXB0c2BfIAouLiBfYHNlcXVlbmNlIGNvbmNlcHRzYDogYGxhYmVsLVNlcXVlbmNlcy1Db25jZXB0c2BfCgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=