ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CgpSRUFETUUKCiAgQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcmluZyBkYXRhIHNwZWNpZmllZCB3aXRoIFVSTAogIHN5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBDdXJsIGJ5IHJlYWRpbmcgdGhlIGN1cmwuMSBtYW4gcGFnZSBvciB0aGUKICBNQU5VQUwgZG9jdW1lbnQuIEZpbmQgb3V0IGhvdyB0byBpbnN0YWxsIEN1cmwgYnkgcmVhZGluZyB0aGUgSU5TVEFMTAogIGRvY3VtZW50LgoKICBsaWJjdXJsIGlzIGEgbGlicmFyeSB0aGF0IEN1cmwgaXMgdXNpbmcgdG8gZG8gaXRzIGpvYi4gSXQgaXMgcmVhZGlseQogIGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgdGhlIExJQkNVUkwgZG9jdW1lbnQgdG8KICBmaW5kIG91dCBob3chCgogIFlvdSBmaW5kIGFuc3dlcnMgdG8gdGhlIG1vc3QgZnJlcXVlbnQgcXVlc3Rpb25zIHdlIGdldCBpbiB0aGUgRkFRIGRvY3VtZW50LgoKICBTdHVkeSB0aGUgTEVHQUwgZmlsZSBmb3IgZGlzdHJpYnV0aW9uIHRlcm1zIGFuZCBzaW1pbGFyLgoKICBBbHdheXMgdHJ5IHRoZSBDdXJsIHdlYiBzaXRlIGZvciB0aGUgbGF0ZXN0IG5ld3M6CgogICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2UKCiAgVGhlIG9mZmljaWFsIGRvd25sb2FkIG1pcnJvciBzaXRlcyBhcmU6CgogICAgICAgIFN3ZWRlbiAgICAtLSBmdHA6Ly9mdHAuc3VuZXQuc2UvcHViL3d3dy91dGlsaXRpZXMvY3VybC8KICAgICAgICBHZXJtYW55ICAgLS0gZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS9wdWIvdW5peC9uZXR3b3JrL2N1cmwvCgogIFRvIGRvd25sb2FkIHRoZSB2ZXJ5IGxhdGVzdCBzb3VyY2Ugb2ZmIHRoZSBDVlMgc2VydmVyIGRvIHRoaXM6CgogICAgICAgIGN2cyAtZCA6cHNlcnZlcjphbm9ueW1vdXNAY3ZzLmN1cmwuc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L2N1cmwgbG9naW4KCiAgICAgKGp1c3QgcHJlc3MgZW50ZXIgd2hlbiBhc2tlZCBmb3IgcGFzc3dvcmQpCgogICAgICAgIGN2cyAtZCA6cHNlcnZlcjphbm9ueW1vdXNAY3ZzLmN1cmwuc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L2N1cmwgY28gLgoKICAgICAobm93LCB5b3UnbGwgZ2V0IGFsbCB0aGUgbGF0ZXN0IHNvdXJjZXMgZG93bmxvYWRlZCBpbnRvIHlvdXIgY3VycmVudAogICAgIGRpcmVjdG9yeS4gTm90ZSB0aGF0IHRoaXMgZG9lcyBOT1QgY3JlYXRlIGEgZGlyZWN0b3J5IG5hbWVkIGN1cmwgb3IKICAgICBhbnl0aGluZykKCiAgICAgICAgY3ZzIC1kIDpwc2VydmVyOmFub255bW91c0BjdnMuY3VybC5zb3VyY2Vmb3JnZS5uZXQ6L2N2c3Jvb3QvY3VybCBsb2dvdXQKICAgICAgICAKICAgICAoeW91J3JlIG9mZiB0aGUgaG9vayEpCgogIEN1cmwgY29udGFpbnMgcGllY2VzIG9mIHNvdXJjZSBjb2RlIHRoYXQgaXMgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5CiAgS3VuZ2xpZ2EgVGVrbmlza2EgSPZnc2tvbGFuLiBUaGlzIG5vdGljZSBpcyBpbmNsdWRlZCBoZXJlIHRvIGNvbXBseSB3aXRoIHRoZQogIGRpc3RyaWJ1dGlvbiB0ZXJtcy4K