PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5vcmcpIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUb20gV2lja2xpbmUgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgcmVvcmdhbml6ZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvbiB0aGUgRkFRPyBBbmQgaG93IG1heSBJIHVzZSBpdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+VGhlIG9yaWdpbmFsIFdpbmUgRkFRLCB3aGljaCB0aGlzIEZBUSB3YXMgYmFzZWQgb24sIHdhcyBjb3B5cmlnaHQgJmNvcHk7IDE5OTUtMTk5OCBEYXZpZCBHYXJkbmVyLjwvcGFyYT4KICAgICAgICA8cGFyYT5JdCBtYXkgYmUgcmVwcm9kdWNlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgV2luZSBpdHNlbGYuPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iR2VuZXJhbC1RdWVzdGlvbnMtYWJvdXQtV2luZSI+CiAgICAgIDx0aXRsZT5HZW5lcmFsIFF1ZXN0aW9ucyBhYm91dCBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtV2luZS1hbmQtd2hhdC1pcy1pdC1zdXBwb3NlZC10byI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyBXaW5lIGFuZCB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB0aGUgb3BlcmF0aW9uIG9mIERPUyBhbmQgTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgKFdpbmRvd3MgMy54IGFuZCBXaW4zMiBleGVjdXRhYmxlcykgb24gVU5JWCBvcGVyYXRpbmcgc3lzdGVtcyBzdWNoIGFzIExpbnV4LiAKICAgICAgICAgIEl0IGNvbnNpc3RzIG9mIGEgcHJvZ3JhbSBsb2FkZXIsIHdoaWNoIGxvYWRzIGFuZCBleGVjdXRlcyBhIFdpbmRvd3MKICAgICAgICAgIGJpbmFyeSwgYW5kIGEgc2V0IG9mIGxpYnJhcmllcyB0aGF0IGltcGxlbWVudHMgV2luZG93cyBBUEkgY2FsbHMKICAgICAgICAgIHVzaW5nIHRoZWlyIFVOSVggb3IgWDExIGVxdWl2YWxlbnRzLiBUaGUgbGlicmFyaWVzIG1heSBhbHNvIGJlIHVzZWQKICAgICAgICAgIGZvciBwb3J0aW5nIFdpbjMyIGNvZGUgaW50byBuYXRpdmUgVU5JWCBleGVjdXRhYmxlcywgb2Z0ZW4KICAgICAgICAgIHdpdGhvdXQgbWFueSBjaGFuZ2VzIGluIHRoZSBzb3VyY2UuIFdpbmUgaXMgZnJlZSBzb2Z0d2FyZSwgCiAgICAgICAgICBhbmQgaXRzIGxpY2Vuc2UgKGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBMSUNFTlNFCiAgICAgICAgICBpbiBlYWNoIGRpc3RyaWJ1dGlvbikgaXMgdGhlIExHUEwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1XaW5lLWFuLWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5Eb2VzIFdpbmUgZW11bGF0ZSBhIGZ1bGwgY29tcHV0ZXI/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGFzIHRoZSBuYW1lIHNheXMsIFdpbmUgSXMgTm90IGEgKENQVSkgRW11bGF0b3IuIFdpbmUganVzdAogICAgICAgICAgcHJvdmlkZXMgdGhlIFdpbmRvd3MgQVBJLiBUaGlzIG1lYW5zIHRoYXQgeW91IHdpbGwgbmVlZCBhbgogICAgICAgICAgeDg2LWNvbXBhdGlibGUgcHJvY2Vzc29yIHRvIHJ1biBhbiB4ODYgV2luZG93cyBhcHBsaWNhdGlvbiwgZm9yIGluc3RhbmNlIGZyb20gSW50ZWwgb3IgQU1ELiBUaGUKICAgICAgICAgIGFkdmFudGFnZSBpcyB0aGF0LCB1bmxpa2Ugc29sdXRpb25zIHRoYXQgcmVseSBvbiBDUFUgZW11bGF0aW9uLCBXaW5lCiAgICAgICAgICBydW5zIGFwcGxpY2F0aW9ucyBhdCBmdWxsIHNwZWVkLiBTb21ldGltZXMgYSBwcm9ncmFtIHJ1biB1bmRlcgoJICBXaW5lIHdpbGwgYmUgc2xvd2VyIHRoYW4gd2hlbiBydW4gb24gYSBjb3B5IG9mIE1pY3Jvc29mdCBXaW5kb3dzLCBidXQKCSAgdGhpcyBpcyBtb3JlIGR1ZSB0byB0aGUgZmFjdCB0aGF0IE1pY3Jvc29mdCBoYXZlIGhlYXZpbHkgb3B0aW1pemVkIHBhcnRzIG9mIHRoZWlyCgkgIGNvZGUsIHdoZXJlYXMgbW9zdGx5IFdpbmUgaXMgbm90IHdlbGwgb3B0aW1pemVkICh5ZXQpLiBPY2Nhc2lvbmFsbHksIGFuIGFwcAoJICBtYXkgcnVuIGZhc3RlciB1bmRlciBXaW5lIHRoYW4gb24gV2luZG93cy4gTW9zdCBhcHBzIHJ1biBhdCByb3VnaGx5IHRoZSBzYW1lIHNwZWVkLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLWhlcmUtYW55LWFsdGVybmF0aXZlcy10by1XaW5lIj4KICAgICAgICA8cGFyYT5BcmUgdGhlcmUgYW55IGFsdGVybmF0aXZlcyB0byBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgdGhlcmUgYXJlLiBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPlZNV2FyZTwvdWxpbms+IHRvIHJ1biBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSwKCSAgb3IgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luNGxpbi5jb20iPldpbjRMaW48L3VsaW5rPgoJICB0byBydW4gYSBzcGVjaWFsbHkgYWRhcHRlZCBXaW5kb3dzIHZlcnNpb24gb24gTGludXguCgkgIEJvdGggc29sdXRpb25zIGNvc3QgbW9uZXkgZm9yIGJvdGggdGhlIHNvZnR3YXJlIGl0c2VsZgoJICBhbmQgYSBXaW5kb3dzIGxpY2Vuc2UuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgTm90ZSB0aGF0LCBsaWtlIFdpbmUsIHRoZXkgY2FuIG9ubHkgdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSB0aGF0CiAgICAgICAgIHRoZSB0YXJnZXQgcHJvZ3JhbXMgd2VyZSBvcmlnaW5hbGx5IGNvbXBpbGVkIGZvciAoc2VlIGJlbG93KS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEaWZmZXJlbmNlLWJldHdlZW4tV2luZS1hbmQtZW11bGF0b3JzIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gV2luZSBhbmQgeDg2IGhhcmR3YXJlIGVtdWxhdG9ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdHdvIGZyZWUgeDg2IGhhcmR3YXJlIGVtdWxhdG9yczoKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9ib2Nocy5zb3VyY2Vmb3JnZS5uZXQiPkJvY2hzPC91bGluaz4sIGFuZAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcGxleDg2Ij5QbGV4ODY8L3VsaW5rPi4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZXg4NiBpcyB0aGUgb3Blbi1zb3VyY2UgZnJlZS1zb2Z0d2FyZSBhbHRlcm5hdGl2ZSBmb3IgVk1XYXJlLAoJICBWaXJ0dWFsUEMsIGFuZCBvdGhlciBJQS0zMiBvbiBJQS0zMiAiVmlydHVhbCBQQyBwcm9kdWN0cy4iIEl0CiAgICAgICAgICBjYW4gb25seSBydW4gb24gdGhlIElBLTMyIGFyY2hpdGVjdHVyZS4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIEJvY2hzIGlzIGEgaGlnaGx5IHBvcnRhYmxlIG9wZW4gc291cmNlIElBLTMyICh4ODYpIFBDIGVtdWxhdG9yIAogICAgICAgICAgd3JpdHRlbiBpbiBDKyssIHRoYXQgcnVucyBvbiBtb3N0IHBvcHVsYXIgcGxhdGZvcm1zLiBJdCBpbmNsdWRlcyBlbXVsYXRpb24KICAgICAgICAgIG9mIHRoZSBJbnRlbCB4ODYgQ1BVLCBjb21tb24gSS9PIGRldmljZXMsIGFuZCBhIGN1c3RvbSBCSU9TLiBDdXJyZW50bHksIAogICAgICAgICAgQm9jaHMgY2FuIGJlIGNvbXBpbGVkIHRvIGVtdWxhdGUgYSAzODYsIDQ4NiBvciBQZW50aXVtIENQVS4gQm9jaHMgaXMgY2FwYWJsZQogICAgICAgICAgb2YgcnVubmluZyBtb3N0IE9wZXJhdGluZyBTeXN0ZW1zIGluc2lkZSB0aGUgZW11bGF0aW9uIGluY2x1ZGluZyBMaW51eCwgCiAgICAgICAgICBXaW5kb3dzriA5NSwgRE9TLCBhbmQgcmVjZW50bHkgV2luZG93c64gTlQgNC4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIEJvdGggYXJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEwuIEJvY2hzIGlzIG9sZGVyIHRoYW4gUGxleDg2LCBzZWVtcyB0byBiZQogICAgICAgICAgZWFzaWVyIHRvIGluc3RhbGwsIGJ1dCBQbGV4ODYgd2lsbCBydW4gZmFzdGVyIGJlY2F1c2UgUGxleDg2IHVzZXMgYSBqdXN0IGluCiAgICAgICAgICB0aW1lIGJpbmFyeSBjb21waWxlci4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGRyYXdiYWNrIG9mIGFsbCBlbXVsYXRvcnMgaXMgdGhhdCB5b3UgbmVlZCBhIHZlcnNpb24KICAgICAgICAgIG9mIFdpbmRvd3MgaW4gb3JkZXIgdG8gcnVuIFdpbmRvd3MsIGFuZCB0aGF0IHRoZXkgYWxsIGhhdmUgYW4KICAgICAgICAgIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gV2luZSBhbHNvIGdpdmVzIG11Y2ggYmV0dGVyIGRlc2t0b3AgaW50ZWdyYXRpb24gLSBmb3IKCSAgaW5zdGFuY2UsIHByb2dyYW1zIHVzZSB5b3VyIHN0YW5kYXJkIHdpbmRvdyBtYW5hZ2VyLCBzeXN0ZW0gdHJheSBpY29ucyB3aWxsCgkgIGFwcGVhciBpbiB5b3VyIHRyYXkgYXJlYSAoaWYgeW91IGhhdmUgb25lKSwgYW5kIHlvdSBjYW4gcnVuIHByb2dyYW1zIGRpcmVjdCBmcm9tIHRoZQoJICBjb21tYW5kIGxpbmUgYW5kIHRoZSBtZW51cy4gVGhlIGNsaXBib2FyZCBhbHNvIHdvcmtzIHNlYW1sZXNzbHkuCiAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW50ZWdyYXRlLWFuLXg4Ni1lbXVsYXRvciI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgaW50ZWdyYXRlIGFuIHg4NiBDUFUgZW11bGF0b3Igc28gd2UgY2FuCiAgICAgICAgICBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMgb24gbm9uLXg4NiBtYWNoaW5lcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgc2hvcnQgYW5zd2VyIGlzICdwcm9iYWJseSBuZXZlcicuIFJlbWVtYmVyLCBXaW5lIElzIE5vdCBhCiAgICAgICAgICAoQ1BVKSBFbXVsYXRvci4gVGhlIGxvbmcgYW5zd2VyIGlzIHRoYXQgd2UgcHJvYmFibHkgZG9uJ3Qgd2FudCBvcgogICAgICAgICAgbmVlZCB0byBpbnRlZ3JhdGUgb25lIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnRlZ3JhdGluZyBhIENQVSBlbXVsYXRvciBpbiBXaW5lIHdvdWxkIGJlIGV4dHJlbWVseSBoYXJkLAogICAgICAgICAgZHVlIHRvIHRoZSBsYXJnZSBudW1iZXIgb2YgV2luZG93cyBBUElzIGFuZCB0aGUgY29tcGxleAogICAgICAgICAgZGF0YSB0eXBlcyB0aGV5IGV4Y2hhbmdlLiBJdCBpcyBub3QgdW5jb21tb24gZm9yIGEgV2luZG93cyBBUEkgdG8KICAgICAgICAgIHRha2UgdGhyZWUgb3IgbW9yZSBwb2ludGVycyB0byBzdHJ1Y3R1cmVzIGNvbXBvc2VkIG9mIG1hbnkgZmllbGRzLAogICAgICAgICAgaW5jbHVkaW5nIHBvaW50ZXJzIHRvIG90aGVyIGNvbXBsZXggc3RydWN0dXJlcy4gRm9yIGVhY2ggb2YgdGhlc2UKICAgICAgICAgIHdlIHdvdWxkIG5lZWQgYSBjb252ZXJzaW9uIHJvdXRpbmUgdG8gZGVhbCB3aXRoIHRoZSBieXRlIG9yZGVyIGFuZAogICAgICAgICAgYWxpZ25tZW50IGlzc3Vlcy4gRnVydGhlcm1vcmUsIFdpbmRvd3MgYWxzbyBjb250YWlucyBtYW55IGNhbGxiYWNrCiAgICAgICAgICBtZWNoYW5pc21zIHRoYXQgY29uc3RpdHV0ZSBhcyBtYW55IGV4dHJhIHBsYWNlcyB3aGVyZSB3ZSB3b3VsZCBoYXZlCiAgICAgICAgICB0byBoYW5kbGUgdGhlc2UgY29udmVyc2lvbiBpc3N1ZXMuIFdpbmUgYWxyZWFkeSBoYXMgdG8gZGVhbCB3aXRoCiAgICAgICAgICAxNiB2cy4gMzIgYml0IEFQSXMgYW5kIEFuc2kgdnMuIFVuaWNvZGUgQVBJcyB3aGljaCBib3RoCiAgICAgICAgICBpbnRyb2R1Y2Ugc2lnbmlmaWNhbnQgY29tcGxleGl0eS4gQWRkaW5nIHN1cHBvcnQgZm9yIGEgQ1BVIGVtdWxhdG9yCiAgICAgICAgICBpbnNpZGUgV2luZSB3b3VsZCBpbnRyb2R1Y2UgYXQgbGVhc3QgZG91YmxlIHRoYXQgY29tcGxleGl0eSBhbmQKICAgICAgICAgIG9ubHkgc2VydmUgdG8gc2xvdyBkb3duIHRoZSBkZXZlbG9wbWVudCBvZiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvcnR1bmF0ZWx5IGFub3RoZXIgc29sdXRpb24gZXhpc3RzIHRvIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucwogICAgICAgICAgb24gbm9uLXg4NiBwbGF0Zm9ybXM6IHJ1biBib3RoIFdpbmUgYW5kIHRoZSBhcHBsaWNhdGlvbiBpbnNpZGUgdGhlCiAgICAgICAgICBDUFUgZW11bGF0b3IuIEFzIGxvbmcgYXMgdGhlIGVtdWxhdG9yIHByb3ZpZGVzIGEgc3RhbmRhcmQgVW5peAogICAgICAgICAgZW52aXJvbm1lbnQsIFdpbmUgc2hvdWxkIG9ubHkgbmVlZCBtaW5pbWFsIG1vZGlmaWNhdGlvbnMuIFdoYXQKICAgICAgICAgIHBlcmZvcm1hbmNlIHlvdSBsb3NlIGR1ZSB0byBXaW5lIHJ1bm5pbmcgaW5zaWRlIHRoZSBlbXVsYXRvcgogICAgICAgICAgcmF0aGVyIHRoYW4gbmF0aXZlbHksIHlvdSBnYWluIGluIGNvbXBsZXhpdHkgaW5zaWRlIG9mIFdpbmUuCiAgICAgICAgICBGdXJ0aGVybW9yZSwgaWYgdGhlIGVtdWxhdG9yIGlzIGZhc3QgZW5vdWdoIHRvIHJ1biBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIFBob3Rvc2hvcCBmb3IgaW5zdGFuY2UsIHRoZW4gaXQgc2hvdWxkIGJlIGZhc3QgZW5vdWdoCiAgICAgICAgICB0byBydW4gdGhhdCBzYW1lIFdpbmRvd3MgYXBwbGljYXRpb24gcGx1cyBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFR3byBwcm9qZWN0cyBoYXZlIHN0YXJ0ZWQgYWxvbmcgdGhvc2UgbGluZXM6IDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZmFicmljZS5iZWxsYXJkLmZyZWUuZnIvcWVtdS8iPlFFTVU8Lz4sIGFuCiAgICAgICAgICBvcGVuLXNvdXJjZSBwcm9qZWN0LCBhbmQgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cudHJhbnNpdGl2ZXMuY29tL3RlY2hfb3ZlcnZpZXcuaHRtIj5EeW5hbWl0ZTwvPiwKICAgICAgICAgIGEgY29tbWVyY2lhbCBDUFUgZW11bGF0b3IgZW52aXJvbm1lbnQgZnJvbQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy50cmFuc2l0aXZlcy5jb20vIj5UcmFuc2l0aXZlcyBUZWNobm9sb2dpZXM8Lz4KICAgICAgICAgIHdoaWNoIGhhcyBiZWVuIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnRyYW5zZ2FtaW5nLmNvbS9uZXdzLnBocD9uZXdzaWQ9MzciPnBhaXJlZAogICAgICAgICAgd2l0aCBXaW5lPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktd291bGQtYW55b25lLXdhbnQtV2luZS1XaW5kb3dzLXN1Y2siPgogICAgICAgIDxwYXJhPldoeSB3b3VsZCBhbnlvbmUgd2FudCBXaW5lPyBEb2Vzbid0IFdpbmRvd3Mgc3Vjaz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGaXJzdCBXaW5lIGlzIG5vdCBhYm91dCBydW5uaW5nIFdpbmRvd3MgYnV0IGFib3V0IHJ1bm5pbmcgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBpZiBhbGwgeW91ciBjb21wdXRpbmcgbmVlZHMgYXJlIGZ1bGZpbGxlZCBieSBuYXRpdmUgVW5peCAKICAgICAgICAgIGFwcGxpY2F0aW9ucywgdGhlbiB5b3UgZG8gbm90IG5lZWQgV2luZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2luZwogICAgICAgICAgaXQuIEhvd2V2ZXIsIGlmIHlvdSBkZXBlbmQgb24gb25lIG9yIG1vcmUgb2YgdGhlIHRlbnMgb2YgCiAgICAgICAgICB0aG91c2FuZHMgb2YgV2luZG93cyBhcHBsaWNhdGlvbnMsIHRoZW4gV2luZSBpcyB0aGUgYmVzdCB3YXkgdG8KICAgICAgICAgIHVzZSBpdCB3aXRob3V0IGdpdmluZyB1cCBvbiBVbml4LiBMZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMKICAgICAgICAgIHRvIHNlZSB3aHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG1vc3Qgb2J2aW91cyBhbHRlcm5hdGl2ZSBpcyB0byBkdWFsLWJvb3QuIFRoaXMgaXMgdGhlIHNvbHV0aW9uCiAgICAgICAgICB0aGF0IHByb3ZpZGVzIHRoZSBiZXN0IGNvbXBhdGliaWxpdHkuIEhvd2V2ZXIgaXQgcmVxdWlyZXMgdGhhdCB5b3UKICAgICAgICAgIGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIHRoZW4gZGVkaWNhdGUgYSBnb29kIGNodW5rIG9mIHlvdXIgCiAgICAgICAgICBoYXJkLWRyaXZlIHRvIFdpbmRvd3MuIEJ1dCB0aGUgd29yc3QgaXMgeWV0IHRvIGNvbWUuIEVhY2ggdGltZSB5b3UKICAgICAgICAgIHdpbGwgd2FudCB0byB1c2UgdGhhdCBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBoYXZlIHRvIHJlYm9vdCB0byAKICAgICAgICAgIFdpbmRvd3MuIFRoaXMgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiBleHRlcm5hbCBmYWN0b3JzIGRpY3RhdGUKICAgICAgICAgIHdoZW4geW91IG11c3QgdXNlIHRoaXMgYXBwbGljYXRpb24gKGUuZy4gY3JlZGl0IGNhcmQgdG8gcHJvY2VzcywgCiAgICAgICAgICBlbWFpbCB0byByZXRyaWV2ZSBmcm9tIGEgTG90dXMgTm90ZXMgc2VydmVyKS4gVGhlbiB5b3Ugd2lsbCBmaW5kCiAgICAgICAgICB5b3Vyc2VsZiBmb3JjZWQgdG8gY2xvc2UgYWxsIHlvdXIgTGludXggYXBwbGljYXRpb25zIGp1c3QgdG8gcnVuCiAgICAgICAgICB0aGF0IG9uZSBXaW5kb3dzIGFwcGxpY2F0aW9uLiBZb3UgbWF5IHF1aWNrbHkgZ2V0IHRpcmVkIG9mIHRoaXMsIG9yCiAgICAgICAgICB3aWxsIGZpbmQgdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGlzIGltcG9zc2libGUgdG8ganVzdGlmeSBpbiBhIAogICAgICAgICAgYnVzaW5lc3MgZW52aXJvbm1lbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5leHQgc29sdXRpb24gaXMgdG8gaW5zdGFsbCB2aXJ0dWFsIG1hY2hpbmUgZW11bGF0aW9uIHNvZnR3YXJlCiAgICAgICAgICBzdWNoIGFzIFZNV2FyZSwgV2luNExpbiBvciBQbGV4ODYuIFRoZW4geW91IGNhbiB1c2Ugd2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aXRob3V0IHN1ZmZlcmluZyBzdWNoIGEgYmlnIGRpc3J1cHRpb24uIEJ1dCBpdCBzdGlsbAogICAgICAgICAgcmVxdWlyZXMgdGhhdCB5b3UgYWNxdWlyZSBhIFdpbmRvd3MgbGljZW5zZSBhbmQgZGVkaWNhdGUgYXMgbXVjaCAKICAgICAgICAgIGRpc2sgc3BhY2UgdG8gV2luZG93cy4gRnVydGhlcm1vcmUgeW91IHdpbGwgcGF5IGZvciB0aGUgYWRkZWQgCiAgICAgICAgICBjb252ZW5pZW5jZTogaWYgdXNpbmcgVk1XYXJlIG9yIFdpbjRMaW4geW91IGhhdmUgdG8gYnV5IGFub3RoZXIgCiAgICAgICAgICBsaWNlbnNlLCBhbmQgbW9yZSBpbXBvcnRhbnRseSB5b3Ugbm93IGhhdmUgdG8gZGVkaWNhdGUgYSBnb29kIGNodW5rCiAgICAgICAgICBvZiB5b3VyIGNvbXB1dGVyJ3MgbWVtb3J5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFBlcmZvcm1hbmNlIHdpbGwKICAgICAgICAgIHRha2UgYSBzaWduaWZpY2FudCBoaXQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzaW5nIFdpbmUgbGV0cyB5b3UgYXZvaWQgYWxsIG9mIHRoYXQgb3ZlcmhlYWQ6IFdpbmRvd3MgbGljZW5zZSwKICAgICAgICAgIGhhcmQtZHJpdmUgc3BhY2UgcmVxdWlyZWQgYnkgV2luZG93cywgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBoaXQgCiAgICAgICAgICB0YWtlbiBieSBlbXVsYXRlZCB2aXJ0dWFsIG1hY2hpbmVzLiBOb3cgeW91IGNhbiBzdGFydCB5b3VyIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciByZWd1bGFyIGRlc2t0b3AgZW52aXJvbm1lbnQsIHBsYWNlCiAgICAgICAgICB0aGF0IGFwcGxpY2F0aW9uJ3Mgd2luZG93IHNpZGUgYnkgc2lkZSB3aXRoIG5hdGl2ZSBhcHBsaWNhdGlvbnMsCiAgICAgICAgICBjb3B5L3Bhc3RlIGZyb20gb25lIHRvIHRoZSBvdGhlciwgYW5kIHJ1biBpdCBhbGwgYXQgZnVsbCBzcGVlZC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBhbHNvIGEgcHJldHR5IHZpdGFsIHBhcnQgb2YgbWlncmF0aW5nIGEgbGFyZ2Ugb3JnYW5pemF0aW9uLAogICAgICAgICAgeW91IGNhbid0IGNoYW5nZSBhIDUwMDAgZGVza3RvcCBzZXR1cCBvdmVybmlnaHQgd2l0aG91dCBhIGxvdCBvZiByaXNrLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVXNlLVdpbmRvd3MtZHJpdmVyLXdpdGgtV2luZSI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gbWFrZSB0aGUgV2luZG93cyBkcml2ZXIgZm9yIG15IG5ldHdvcmsgY2FyZCAvCiAgICAgICAgICBncmFwaGljcyBjYXJkIC8gc2Nhbm5lciAvIGV0Yy4gd29yayBvbiBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBnb2FsIG9mIFdpbmUgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMKICAgICAgICAgIG9uIFVuaXgsIG5vdCBXaW5kb3dzIGRyaXZlcnMgb3IgVnhEcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEcml2ZXJzIGFuZCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBiZWxvbmcgdG8gZGlmZmVyZW50IHdvcmxkcy4KICAgICAgICAgIEFwcGxpY2F0aW9ucyBydW4gaW4gdXNlciBtb2RlIGFuZCB1c2UgdGhlIEFQSXMgcHJvdmlkZWQgYnkKICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIHRoZSBvdGhlciB1c2VyIG1vZGUgZGxscy4gSW4gY29udHJhc3QsIGRyaXZlcnMKICAgICAgICAgIGFyZSBsb2FkZWQgaW4gdGhlIFdpbmRvd3Mga2VybmVsLCBpLmUuIGluIHJpbmcgMCBpbnN0ZWFkIG9mIHJpbmcKICAgICAgICAgIDMsIGhhdmUgdG8gZGVhbCB3aXRoIHNwZWNpZmljIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcywgYW5kIHVzZQogICAgICAgICAgaW5zdHJ1Y3Rpb25zIG5vdCBhdmFpbGFibGUgdG8gcmVndWxhciBhcHBsaWNhdGlvbnMuIFRoaXMgbWVhbnMKICAgICAgICAgIHRoZXkgd291bGQgbm90IGJlIGFibGUgdG8gcnVuIGluIFdpbmUgc2luY2UgV2luZSBydW5zIGVudGlyZWx5CiAgICAgICAgICBpbiB1c2VyIG1vZGUuIFJhdGhlciB5b3Ugd291bGQgaGF2ZSB0byBtb2RpZnkgdGhlIExpbnV4IGtlcm5lbC4KICAgICAgICAgIEJ1dCBpbiBhZGRpdGlvbiwgZHJpdmVycyB1c2UgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBBUEkgZnJvbQogICAgICAgICAgcmVndWxhciBXaW5kb3dzIGFwcGxpY2F0aW9ucy4gU28gdGhlIHdvcmsgcGVyZm9ybWVkIG9uIFdpbmUgd291bGQKICAgICAgICAgIG5vdCBldmVuIGJlIG9mIGFueSB1c2UgZm9yIHN1Y2ggYSBwcm9qZWN0LiBJbiBvdGhlciB3b3JkcywgbWFraW5nCiAgICAgICAgICBpdCBwb3NzaWJsZSB0byB1c2UgV2luZG93cyBkcml2ZXJzIG9yIFZ4RHMgb24gVW5peCB3b3VsZCBiZSBhCiAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gcmV1c2UgV2luZG93cyBkcml2ZXJzIG9uIGEgbm9uLU1pY3Jvc29mdAogICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgaGF2ZSBhIGxvb2sgYXQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGljaC1vbmUtb2YtdGhlLWRpZmZlcmVudC1XaW5lLXBhY2thZ2VzIj4KICAgICAgICA8cGFyYT5XaGljaCBvbmUgb2YgdGhlIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzIG91dCB0aGVyZSBpcyBnb29kIGZvciBtZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50bHkgdGhlcmUgaXMgYSBicm9hZCBzZWxlY3Rpb24gb2YgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMvdmVyc2lvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZyI+V2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIHRoZSAic3RhbmRhcmQiIHNvdXJjZSBkaXN0cmlidXRpb24gb2YgV2luZS4gSXRzIGxpY2Vuc2UgaXMgCiAgICAgICAgICAgICAgdGhlIExHUEwsIGl0IGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cudHJhbnNnYW1pbmcuY29tIj5UcmFuc0dhbWluZydzIFdpbmVYPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgVHJhbnNHYW1pbmcncyBXaW5lIHZlcnNpb24gc3BlY2lhbGx5IHN1aXRlZCBmb3IKICAgICAgICAgICAgICBnYW1lcy4gIEl0IGluY2x1ZGVzIG1vcmUgbWF0dXJlIERpcmVjdDNEIHN1cHBvcnQgdGhhbgogICAgICAgICAgICAgIFdpbmVIUSwgYWx0aG91Z2ggdGhlc2UgZGF5cyBXaW5lSFEgaGFzIHF1aXRlIGFkdmFuY2VkCiAgICAgICAgICAgICAgRDNEIHN1cHBvcnQgYXMgd2VsbC4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zR2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgpLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3dpbmUuY29kZXdlYXZlcnMuY29tIj5Db2RlV2VhdmVycycgV2luZSBwcmV2aWV3PC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkIFdpbmUgdHJlZQogICAgICAgICAgICAgIHdoaWNoIGhhcyBhIG5pY2Ugc2V0dXAgZm9yIGVhc3kgaW5zdGFsbGF0aW9uLiBMaWNlbnNlIExHUEwsIGZyZWUKICAgICAgICAgICAgICBkb3dubG9hZC4gSXQncyBwcmV0dHkgb2xkIG5vdywgYW5kIG5vdCByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2UuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9jcm9zc292ZXIvIj5Db2RlV2VhdmVycycgQ3Jvc3NPdmVyIFBsdWdpbjwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBTcGVjaWFsIFdpbmUgaW5zdGFsbGF0aW9uIHRvIGJlIHVzZWQgZm9yIHJ1bm5pbmcgV2luZG93cwogICAgICAgICAgICAgIE5ldHNjYXBlIGJyb3dzZXIgcGx1Z2lucyBzdWNoIGFzIGUuZy4gUXVpY2tUaW1lIGluIExpbnV4CiAgICAgICAgICAgICAgYnJvd3NlcnMuIENvc3RzICQzNC45NS4KICAgICAgICAgICAgICBXZWxsIHdvcnRoIGl0ICh2ZXJ5IHN0YWJsZSBhbmQgdXNlZnVsIHBhY2thZ2luZykuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvb2ZmaWNlLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ1NC45NS4gCiAgICAgICAgICAgICAgU2VlbXMgdG8gYmUgd2VsbCB3b3J0aCBpdCBzbyBmYXIgYWNjb3JkaW5nIHRvIHNvbWUgY29tbWVudHMuIAogICAgICAgICAgICAgIChub3RlOiB5b3UncmUgc3VwcG9ydGluZyBhIGNvbXBhbnkgYWN0aXZlbHkgY29udHJpYnV0aW5nIHRvIFdpbmUKICAgICAgICAgICAgICBpZiB5b3UgZGVjaWRlIHRvIGJ1eSBlaXRoZXIgUGx1Z2luIG9yIE9mZmljZS4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL2N4b2ZmaWNlc2VydmVyLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBPZmZpY2UgU2VydmVyIEVkaXRpb248L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBBbGxvd3MgeW91IHRvIHJ1biB5b3VyIGZhdm9yaXRlIFdpbmRvd3MgcHJvZHVjdGl2aXR5IGFwcGxpY2F0aW9ucyBpbiAKICAgICAgICAgICAgIGEgZGlzdHJpYnV0ZWQgdGhpbi1jbGllbnQgZW52aXJvbm1lbnQgdW5kZXIgTGludXguIFNlcnZlciBFZGl0aW9uIGlzIAogICAgICAgICAgICAgYWxzbyBhIGdyZWF0IGFkZGl0aW9uIHRvIFNvbGFyaXMgZW52aXJvbm1lbnRzLCBzaW5jZSB0aGVyZSBidWlsdC1pbiAKICAgICAgICAgICAgIHN1cHBvcnQgZm9yIFNvbGFyaXMgZGVza3RvcHMgbWFrZXMgcnVubmluZyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBhIAogICAgICAgICAgICAgcG9zc2liaWxpdHkgb24gU3VuIHdvcmtzdGF0aW9ucyBhcyB3ZWxsLiBGb3IgcHJpY2luZyBqdXN0IGZvbGxvdyB0aGlzIGxpbms6IAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvcHJpY2luZy5waHAiPkNyb3NzT3ZlciBPZmZpY2UgU2VydmVyIEVkaXRpb24gUHJpY2luZzwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2Rvd25sb2FkLyI+T3RoZXIgcGFja2FnZWQgdmVyc2lvbnMgb2YgV2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBWYXJpb3VzIFdpbmUgcGFja2FnZXMgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUgZnJvbQogICAgICAgICAgICAgIFdpbmUgSFEuIFRoZXkgYXJlIG5vdCBvZmZpY2lhbGx5IHBhY2thZ2VkIGJ5IFdpbmUgSFEsIGFuZCBhcwogICAgICAgICAgICAgIHN1Y2ggbWF5IGhhdmUgc29tZSBjb25maWd1cmF0aW9uIGluY29uc2lzdGVuY2llcy4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdHMtdGhlLWhpc3Rvcnktb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCdzIHRoZSBoaXN0b3J5IG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgcHJvamVjdCBzdGFydGVkIGluIDE5OTMgYXMgYSB3YXkgdG8gc3VwcG9ydCBydW5uaW5nIFdpbmRvd3MgMy4xCiAgICAgICAgICBwcm9ncmFtcyBvbiBMaW51eC4gQm9iIEFtc3RhZHQgd2FzIHRoZSBvcmlnaW5hbCBjb29yZGluYXRvciwgYnV0IHR1cm5lZAogICAgICAgICAgaXQgb3ZlciBmYWlybHkgZWFybHkgb24gdG8gQWxleGFuZHJlIEp1bGxpYXJkLCB3aG8gaGFzIHJ1biBpdCBldmVyIAogICAgICAgICAgc2luY2UuIEEgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPm5ld3Nncm91cDwvdWxpbms+CiAgICAgICAgICB3YXMgY3JlYXRlZCBpbiBKdWx5IDE5OTQuIE92ZXIgdGhlIHllYXJzLCBwb3J0cyBmb3IKICAgICAgICAgIG90aGVyIFVuaXhlcyBoYXZlIGJlZW4gYWRkZWQsIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgV2luMzIgYXMgV2luMzIgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgYmVjYW1lIHBvcHVsYXIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9hYm91dCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9hYm91dDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1pcy10aGUtY3VycmVudC12ZXJzaW9uLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgbmV3IHZlcnNpb24gb2YgV2luZSBpcyBkaXN0cmlidXRlZCBhYm91dCBldmVyeSBtb250aC4gWW91IHdpbGwgYmUgCiAgICAgICAgICBhYmxlIHRvIGtlZXAgdXAgb24gYWxsIHRoZSBsYXRlc3QgcmVsZWFzZXMgYnkgcmVhZGluZyB0aGUgbmV3c2dyb3VwCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPiwgb3IgYnkgdmlzaXRpbmcgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmciPldpbmUgSFEgaG9tZXBhZ2U8L3VsaW5rPi4gV2hlbgogICAgICAgICAgZG93bmxvYWRpbmcgV2luZSBmcm9tIHlvdXIgRlRQIHNpdGUgb2YgY2hvaWNlIChzZWUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9kb3dubG9hZC5zaHRtbCI+dGhlIERvd25sb2FkIHBhZ2U8L3VsaW5rPgogICAgICAgICAgZm9yIHNvbWUgb2YgdGhlc2UgY2hvaWNlcyksIHlvdSBjYW4gbWFrZSBzdXJlIHRoYXQgeW91IGFyZSBnZXR0aW5nIAogICAgICAgICAgdGhlIGxhdGVzdCB2ZXJzaW9uIGJ5IHdhdGNoaW5nIHRoZSB2ZXJzaW9uIG51bWJlcnMgaW4gdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZSBuYW1lLiBGb3IgaW5zdGFuY2UsIHRoZSBkaXN0cmlidXRpb24gcmVsZWFzZWQgb24gQXVndXN0IDEzLCAyMDAzCiAgICAgICAgICB3YXMgY2FsbGVkIFdpbmUtMjAwMzA4MTMudGFyLmd6LiBQYXRjaCBmaWxlcyBhcmUgYWxzbyBhdmFpbGFibGUuIElmCiAgICAgICAgICB5b3UgYXJlIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24sIHlvdSBjYW4gZG93bmxvYWQgYW5kIGFwcGx5IAogICAgICAgICAganVzdCB0aGUgY3VycmVudCBwYXRjaCBmaWxlIHJhdGhlciB0aGFuIHRoZSBlbnRpcmUgbmV3IGRpc3RyaWJ1dGlvbi4KICAgICAgICAgIFRoZSBwYXRjaCBmaWxlIG5hbWVzIGZvbGxvdyB0aGUgc2FtZSBjb252ZW50aW9ucyBhcyB0aGUgbW9udGhseSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbi4gPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzIj4KICAgICAgICAgIFJlYWQtb25seSBDVlM8L3VsaW5rPiBhY2Nlc3MgaXMgYWxzbyBhdmFpbGFibGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC1pcy10aGUtY3VycmVudC1TdGF0dXMtb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgY3VycmVudCBTdGF0dXMgb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBvZiBtaWQgMjAwMywgV2luZSBjb25zaXN0cyBvZiBhYm91dCAxLjQgbWlsbGlvbiBsaW5lcyBvZiBjb2RlLAogICAgICAgICAgd3JpdHRlbiBieSBtb3JlIHRoYW4gNTUwIGRldmVsb3BlcnMgZnJvbSBkb3plbnMgb2YgY291bnRyaWVzIGFyb3VuZAogICAgICAgICAgdGhlIHdvcmxkLiBXaW5lIGlzIGluIGFjdGl2ZSB1c2UgYnkgYW4gZXN0aW1hdGVkIDEwMEsgcGVvcGxlLiBXaW5lCiAgICAgICAgICBpbXBsZW1lbnRzIG1vcmUgdGhhbiA5MCUgb2YgdGhlIGNhbGxzIGluIHBvcHVsYXIgV2luZG93cyAKICAgICAgICAgIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgRUNNQS0yMzQgYW5kIE9wZW4zMi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgbWF5IGFsc28gd2FudCB0byBsb29rIGF0IHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvc3RhdHVzIj4KICAgICAgICAgIFN0YXR1cyBwYWdlPC91bGluaz4gZm9yIGEgZ2xvYmFsIHZpZXcgb24gV2luZSdzIGltcGxlbWVudGF0aW9uIHByb2dyZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4td2lsbC1XaW5lLWJlLWZpbmlzaGVkIj4KICAgICAgICA8cGFyYT5XaGVuIHdpbGwgV2luZSBiZSBmaW5pc2hlZD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBMYXJnZSBzb2Z0d2FyZSBwcm9qZWN0cyBhcmUgbmV2ZXIgZmluaXNoZWQsIG9ubHkgcmVsZWFzZWQuIEluIGFueQogICAgICAgICAgY2FzZSBXaW5lIGlzIGNoYXNpbmcgYSBtb3ZpbmcgdGFyZ2V0IHNpbmNlIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIAogICAgICAgICAgV2luZG93cyBjb250YWlucyBuZXcgQVBJIGNhbGxzIG9yIHZhcmlhdGlvbnMgb24gdGhlIGV4aXN0aW5nIG9uZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVjYXVzZSBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBieSB2b2x1bnRlZXJzLCBpdCBpcyBkaWZmaWN1bHQgdG8KICAgICAgICAgIHByZWRpY3Qgd2hlbiBpdCB3aWxsIGJlIHJlYWR5IGZvciBnZW5lcmFsIHJlbGVhc2UuIEJ1dCBkdWUgdG8gdGhlCiAgICAgICAgICBtdWNoIGluY3JlYXNlZCBpbnRlcmVzdCBieSBjb21wYW5pZXMgaW4gcG9ydGluZyBhcHBzIHZpYSBXaW5lLCBXaW5lCiAgICAgICAgICBkZXZlbG9wbWVudCBpcyBjb25zdGFudGx5IGdldHRpbmcgbW9yZSBhbmQgbW9yZSBhY3RpdmUuIFJpZ2h0IG5vdwogICAgICAgICAgd2UgYXJlIHdvcmtpbmcgb24gcmVsZWFzaW5nIFdpbmUgMC45IGluIDIwMDMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hvLWlzLXJlc3BvbnNpYmxlLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5XaG8gaXMgcmVzcG9uc2libGUgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBhdmFpbGFibGUgdGhhbmtzIHRvIHRoZSB3b3JrIG9mIG1hbnkgcGVvcGxlLiBQbGVhc2Ugc2VlIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9BVVRIT1JTIj5BVVRIT1JTPC91bGluaz4KICAgICAgICAgIGZpbGUgaW4gdGhlIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGNvbXBsZXRlIGxpc3QuIFNvbWUgY29tcGFuaWVzIHRoYXQKICAgICAgICAgIGFyZSBvciBoYXZlIGJlZW4gaW52b2x2ZWQgd2l0aCBXaW5lIGRldmVsb3BtZW50IGFyZSBDb2RlV2VhdmVycywKICAgICAgICAgIFRyYW5zR2FtaW5nLCBDb3JlbCwgYW5kIE1hY2FkYW1pYW4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iZm9sa3Mtd2hvLWNvbnRyaWJ1dGVkLW1vbmV5LW9yLWVxdWlwbWVudCI+CiAgICAgICAgPHBhcmE+V2hvIGFyZSB0aGUgZm9sa3MgYW5kIG9yZ2FuaXphdGlvbnMgd2hvIGhhdmUgY29udHJpYnV0ZWQgbW9uZXkgb3IgZXF1aXBtZW50IHRvIHRoZSBXaW5lIHByb2plY3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGVvcGxlIGFuZCBvcmdhbml6YXRpb25zIHdobyBoYXZlIGdpdmVuIGdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgb2YKICAgICAgICAgIG1vbmV5LCBlcXVpcG1lbnQsIG9yIGxpY2Vuc2VzLCBpbmNsdWRlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5EYXZpZCBMLiBIYXJwZXI8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5Cb2IgSGVwcGxlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+TWFyayBBLiBIb3J0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5LZXZpbiBQLiBMYXd0b248L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5UaGUgU3ludHJvcHkgSW5zdGl0dXRlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+SmFtZXMgV291bGZlPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBWTVdhcmUgSW5jLiAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy52bXdhcmUuY29tIj4KICAgICAgICAgICAgIGh0dHA6Ly93d3cudm13YXJlLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvcmVsICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvcmVsLmNvbSI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LmNvcmVsLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIENvZGVXZWF2ZXJzCiAgICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vIj5odHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdC11bmRvY3VtZW50ZWQtQVBJcy1hcmUtbm90LXVuZGVyc3Rvb2QiPgogICAgICAgIDxwYXJhPldoYXQgdW5kb2N1bWVudGVkIEFQSXMgLyBpbnRlcmZhY2VzIGFyZSBub3QgdW5kZXJzdG9vZD8gV291bGQKICAgICAgICAgICAgICBzZWVpbmcgTWljcm9zb2Z0IHNvdXJjZSBoZWxwPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBiZXN0IHdvdWxkIGJlIGlmIHRoZSBXaW5kb3dzIEFQSSB3YXMgZnVsbHkgZG9jdW1lbnRlZCwgc28gV2luZQogICAgICAgICAgY291bGQgYmUgYSBwZXJmZWN0ICJjbGVhbi1yb29tIiBpbXBsZW1lbnRhdGlvbi4gU2VlaW5nIHRoZSBzb3VyY2UKICAgICAgICAgIGNvZGUgbWlnaHQgbWFrZSBpdCBoYXJkZXIgdG8gcHJvdmUgdGhhdCBubyBjb3B5cmlnaHQgdmlvbGF0aW9ucyBoYXZlCiAgICAgICAgICB0YWtlbiBwbGFjZS4gVGhhdCBzYWlkLCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBvZnRlbiBiYWQsIG5vbmV4aXN0ZW50LAogICAgICAgICAgYW5kIGV2ZW4gbWlzbGVhZGluZyB3aGVyZSBpdCBleGlzdHMsIHNvIGEgZmFpciBhbW91bnQgb2YgcmV2ZXJzZQogICAgICAgICAgZW5naW5lZXJpbmcgaGFzIGJlZW4gbmVjZXNzYXJ5LCBwYXJ0aWN1bGFybHkgaW4gdGhlIHNoZWxsIChFeHBsb3JlcikKICAgICAgICAgIGludGVyZmFjZS4gVGhlIGJpZ2dlc3QgcHJvYmxlbSBmYWNpbmcgV2luZSB0aG91Z2ggaXMgc2ltcGx5IGxhY2sgb2YKCSAgbWFucG93ZXIuIEF0IG9uZSBwb2ludCwgb3ZlciA1MDAwIHBlb3BsZSB3ZXJlIHdvcmtpbmcgb24gV2luZG93cyAyMDAwLgoJICBXaGlsZSBXaW5lIGRvZXNuJ3QgbmVlZCB0byByZXBsaWNhdGUgYWxsIG9mIFdpbmRvd3MgKHdlIG9ubHkgY292ZXIgdGhlCgkgIHBhcnRzIG5lZWRlZCB0byBtYWtlIFdpbmRvd3MgcHJvZ3JhbXMgd29yayksIHRoYXQncyBzdGlsbCBuZWFybHkgMTAgdGltZXMKCSAgbW9yZSBwZW9wbGUgd29ya2luZyBzaW1wbHkgb24gb25lIHJlbGVhc2UgdGhhbiBoYXZlIDxlbXBoYXNpcz5ldmVyPC9lbXBoYXNpcz4KCSAgd29ya2VkIG9uIFdpbmUsIGluIHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtVHJhbnNHYW1pbmdzLWxhc3QtcGF0Y2gtaW5jbHVkZWQtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SXMgVHJhbnNHYW1pbmcncyBsYXRlc3QgcGF0Y2ggaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIFdpbmUgcmVsZWFzZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBObywgaXQncyBub3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVHJhbnNHYW1pbmcgbWFrZXMgbW9uZXkgdmlhIGEgc3Vic2NyaXB0aW9uIHNlcnZpY2UgYW5kIHRoZSBsaWNlbnNlCiAgICAgICAgICBvZiB0aGVpciBXaW5lWCB0cmVlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5lIGxpY2Vuc2UuIFRodXMKICAgICAgICAgIFdpbmVYIHBhdGNoZXMgY2Fubm90IGJlIGludGVncmF0ZWQgaW50byB0aGUgV2luZSB0cmVlIHdpdGhvdXQKICAgICAgICAgIGV4cHJlc3MgcGVybWlzc2lvbiBieSBUcmFuc0dhbWluZy4gVGhleSBoYXZlIHN1Ym1pdHRlZCBzb21lCiAgICAgICAgICBvZiB0aGVpciB3b3JrIGZvciBpbnRlZ3JhdGlvbiBpbnRvIFdpbmUsIG1vc3Qgbm90YWJseSBEaXJlY3REcmF3CiAgICAgICAgICBhbmQgc29tZSBEaXJlY3RTb3VuZCB3b3JrLCBhbmQgc3VjaCB3b3JrIGhhcyBiZWVuIGludGVncmF0ZWQgaW50bwogICAgICAgICAgdGhlIFdpbmUgdHJlZS4gSG93ZXZlciBpdCBzZWVtcyB1bmxpa2VseSB0aGV5IHdpbGwgc3VibWl0IHRoZWlyCiAgICAgICAgICBEaXJlY3QzRCB3b3JrLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtdGhlcmUtYmUtYS1XaW5kb3dzLXZlcnNpb24tb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCB0aGVyZSBiZSBhIFdpbmRvd3MgdmVyc2lvbiBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNvbWUgcGVvcGxlIGFyZSB3b3JraW5nIG9uIGdldHRpbmcgV2luZSBjb2RlIHRvIGNvbXBpbGUgb24gV2luZG93cwogICAgICAgICAgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgcHJvamVjdHMgYXMgYSBiYXNpczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4gCiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIEN5Z3dpbgogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cuY3lnd2luLmNvbS8iPmh0dHA6Ly93d3cuY3lnd2luLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBNaW5HVwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cubWluZ3cub3JnLyI+aHR0cDovL3d3dy5taW5ndy5vcmc8L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgUmVhY3RPUwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+aHR0cDovL3d3dy5yZWFjdG9zLmNvbTwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUncyBzb21lIHByb2dyZXNzLCBzbyBhIFdpbmUgdmVyc2lvbiB0aGF0J3MgdXNhYmxlIG9uIFdpbmRvd3MKICAgICAgICAgIG1pZ2h0IGJlIGF2YWlsYWJsZSBhdCBzb21lIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGFydCBvZiB0aGUgcmF0aW9uYWxlIGZvciB0aGVzZSBwcm9qZWN0cyBpcyB0byBmaW5kIG91dCBhcmVhcyB3aGVyZQogICAgICAgICAgV2luZSBwb3J0YWJpbGl0eSBpcyBsYWNraW5nLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSBvZiB0aGUKICAgICAgICAgIFJlYWN0T1MgcHJvamVjdCB3aGljaCBpcyBhIHJlaW1wbGVtZW50YXRpb24gb2YgdGhlIFdpbmRvd3Mga2VybmVsCiAgICAgICAgICBhbmQgc2hvdWxkIHRodXMgYmUgYWJsZSB0byByZXVzZSBtb3N0IG9mIFdpbmUgZGxscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbm90aGVyIHJlYXNvbiBmb3IgcHVyc3VpbmcgdGhlc2UgcHJvamVjdHMgaXMgdG8gYmUgYWJsZSB0bwogICAgICAgICAgcmVwbGFjZSBhIHNpbmdsZSBXaW5kb3dzIGRsbCB3aXRoIGl0cyBXaW5lIGNvdW50ZXJwYXJ0LiBCZXNpZGVzCiAgICAgICAgICBiZWluZyBhIGdvb2QgdGVzdCBmb3IgdGhlIFdpbmUgZGxsLCB0aGlzIGxldHMgdXMgZGV0ZWN0IGNhc2VzIHdoZXJlCiAgICAgICAgICB3ZSBtYWRlIGluY29ycmVjdCBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlIGRsbHMgaW50ZXJhY3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IldoYXQtZG8tSS1uZWVkLWluLW9yZGVyLXRvLXVzZS1XaW5lIj4KICAgICAgPHRpdGxlPldoYXQgZG8gSSBuZWVkIGluIG9yZGVyIHRvIHVzZSBXaW5lPzwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlVuZGVyLXdoYXQtcGxhdGZvcm1zLXdpbGwtV2luZS1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVW5kZXIgd2hhdCBoYXJkd2FyZSBwbGF0Zm9ybShzKSBhbmQgb3BlcmF0aW5nIHN5c3RlbShzKSB3aWxsCiAgICAgICAgICBXaW5lKExpYikgcnVuPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYmVpbmcgZGV2ZWxvcGVkIHNwZWNpZmljYWxseSB0byBydW4gb24gdGhlIDxlbXBoYXNpcz5JbnRlbAogICAgICAgICAgeDg2PC9lbXBoYXNpcz4gY2xhc3Mgb2YgQ1BVcyB1bmRlciBjZXJ0YWluIFVOSVhlcyB0aGF0IHJ1biBvbiB0aGlzCiAgICAgICAgICBwbGF0Zm9ybS4gV2luZWxpYiBob3dldmVyIGlzIGNhcGFibGUgb2YgcG9ydGluZyB0aGUgV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb25zIDxlbXBoYXNpcz5zb3VyY2UgY29kZTwvZW1waGFzaXM+IHRvIG90aGVyIHBsYXRmb3JtcwogICAgICAgICAgYWxzbywgbm90IG9ubHkgeDg2LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRodXMgcnVubmluZyBXaW5kb3dzIGJpbmFyaWVzIG9uIG90aGVyIHBsYXRmb3JtcyAoZS5nLiBNYWMgT1MgWCBvbgogICAgICAgICAgUG93ZXJQQykgdXNpbmcganVzdCBXaW5lIGlzIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBwb3NzaWJsZS4gWW91CiAgICAgICAgICB3b3VsZCBoYXZlIHRvIGVpdGhlciBydW4gV2luZSBpbiBhbiBlbXVsYXRlZCB4ODYgZW52aXJvbm1lbnQgb3IKICAgICAgICAgIHRha2UgdGhlIFdpbmRvd3MgYXBwbGljYXRpb24gc291cmNlIGNvZGUgYW5kIHJlY29tcGlsZSBpdCB1c2luZwogICAgICAgICAgV2luZWxpYi4KCTwvcGFyYT4KCTxwYXJhPgoJICBUaGVzZSBhcmUgdGhlIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgV2luZS4KCSAgV2luZWxpYiBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMga2VlcHMgZXZvbHZpbmcsCgkgIHNvIGl0J3Mgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaGVyZS4KCTwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5ldEJTRCwgT3BlbkJTRCwgVW5peFdhcmUsIGFuZCBTQ08gT3BlblNlcnZlciA1IHdvcmtlZCBhdCBvbmUgdGltZSwKICAgICAgICAgIGJ1dCBXaW5lIG5vdyByZXF1aXJlcyBrZXJuZWwtbGV2ZWwgdGhyZWFkcyB3aGljaCBhcmUgbm90IGN1cnJlbnRseSAKICAgICAgICAgIGF2YWlsYWJsZSAob3IgdW5kZXJzdG9vZCBieSB0aGUgV2luZSB0ZWFtKSBvbiB0aG9zZSBwbGF0Zm9ybXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgZGV2ZWxvcG1lbnQgdGVhbSBob3BlcyB0byBhdHRyYWN0IHRoZSBpbnRlcmVzdCBvZiBvdGhlcgogICAgICAgICAgY29tbWVyY2lhbCBVTklYIGFuZCBVTklYIGNsb25lIHZlbmRvcnMgYXMgd2VsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZU9TOiBwb3J0aW5nIGVmZm9ydHMgKEJlV2luZSkgdXNlZCB0byBiZSBwcmV0dHkgc3Ryb25nLCBidXQgQmVPUwogICAgICAgICAgaGFzIHNldmVyZSBsaW1pdGF0aW9ucyBpbiBVbml4IGNhbGwgc3VwcG9ydC4gVGhlIGRlbWlzZSBvZiBCZQogICAgICAgICAgZnVydGhlciBoYW1wZXJlZCB0aGUgcHJvamVjdCB0aG91Z2ggaXQgbWlnaHQgY29tZSBiYWNrIG9uZSBkYXkgb24KICAgICAgICAgIG9uZSBvZiB0aGUgb3BlbiBCZU9TIHByb2plY3RzLiBJbiBhbnkgY2FzZSBhIGZ1bmN0aW9uYWwgcG9ydCBzZWVtcwogICAgICAgICAgdW5saWtlbHkgdG8gZXZlciBoYXBwZW4gYXQgdGhpcyBzdGFnZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYWMgT1MgWCAvIERhcndpbjogVGhlIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZGFyd2luZS5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC5odG1sIj5EYXJ3aW5lPC8+IGlzCiAgICAgICAgICBjdXJyZW50bHkgd29ya2luZyBvbiBwb3J0aW5nIFdpbmUgdG8gdGhlIERhcndpbi94ODYgcGxhdGZvcm0uIFRoZWlyCiAgICAgICAgICBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byBydW4geDg2IFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9ucyBvbiBEYXJ3aW4vUFBDIGFuZCB0aGVuIE1hYyBPUyBYIGJ5IHVzaW5nIEJvY2hzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZyZWVCU0Q6IFRoaXMgcG9ydCBpcyB3ZWxsIG1haW50YWluZWQgYW5kIHNob3VsZCB3b3JrIHdpdGgKICAgICAgICAgIGxpbWl0YXRpb25zIGluIHNwZWNpZmljIGFyZWFzIChtYWlubHkgbWlzc2luZyBkZXZpY2UvaGFyZHdhcmUKICAgICAgICAgIHN1cHBvcnQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExpbnV4L3g4NjogV29ya3MsIGFuZCBhcyB0aGUgbW9zdCBwb3B1bGFyIHBsYXRmb3JtIGZvciBib3RoCiAgICAgICAgICBkZXZlbG9wZXJzIGFuZCB1c2VycywgaXQgaXMgdGhlIGJlc3Qgc3VwcG9ydGVkIHBsYXRmb3JtIG9mIGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW1pbmltdW0tQ1BVLW11c3QtSS1oYXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgbWluaW11bSBDUFUgbXVzdCBJIGhhdmUgaW4gbXkgY29tcHV0ZXIgdG8gYmUgYWJsZSB0byBydW4gV2luZSAKICAgICAgICAgIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBXaW5lIGFuZCBXaW5lbGliIGhlcmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSB3b24ndCBydW4gb24gYW55IHg4NiBDUFUgbGVzcyB0aGFuIGFuIDgwMzg2IGR1ZSB0byBhZGRyZXNzCiAgICAgICAgICBtYW5hZ2VtZW50IGxpbWl0YXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGlzIGtub3duIHRvIGFsc28gd29yayBpbiB0aGUgODA0ODYgYW5kIHVwd2FyZHMgY29tcGF0aWJsZSBDUFVzLgogICAgICAgICAgVGhlIGJhc2ljIHRlc3QgaXMsIGlmIHlvdSBjYW4gcnVuIFgxMSBub3csIHlvdSBzaG91bGQgYmUgYWJsZSB0byBydW4KICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHVuZGVyIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIGFsd2F5cywgdGhlIGZhc3RlciB5b3VyIENQVSwgdGhlIGJldHRlci4gSGF2aW5nIGEgbWF0aCBjb3Byb2Nlc3NvcgogICAgICAgICAgaXMgdW5pbXBvcnRhbnQuIEhvd2V2ZXIsIGhhdmluZyBhIGdyYXBoaWNzIGFjY2VsZXJhdGVkIHZpZGVvIGNhcmQKICAgICAgICAgIHN1cHBvcnRlZCBieSBYIHdpbGwgaGVscCBncmVhdGx5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uIHlvdSBtYXkgZmluZCB0aGF0IGZhc3RlciBzcGVlZHMgYXJlCiAgICAgICAgICByZXF1aXJlZCBmb3Igc2Vuc2libGUgdXNlLiBXZSBjYW4ndCBnaXZlIHNwZWNpZmljIGFkdmljZSBvbiB0aGF0IGR1ZQogICAgICAgICAgdG8gdGhlIHZhc3QgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIG91dCB0aGVyZS4gSG93ZXZlciB0aGUgcnVsZSBvZgogICAgICAgICAgdGh1bWIgaXMgdGhhdCBpZiB5b3VyIGFwcGxpY2F0aW9uIHJ1bnMgZmluZSBvbiBXaW5kb3dzLCBpdCBzaG91bGQKICAgICAgICAgIHJ1biBmaW5lIG9uIHRoZSBzYW1lIHBsYXRmb3JtIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtZGlzay1zcGFjZS13aWxsLVdpbmUtdGFrZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEhvdyBtdWNoIGRpc2sgc3BhY2Ugd2lsbCB0aGUgV2luZSBzb3VyY2UgY29kZSBhbmQgYmluYXJpZXMgdGFrZSBvbiBteQogICAgICAgICBoYXJkIGRyaXZlPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBuZWVkIGFwcHJveGltYXRlbHkgMjUwIG1lZ2FieXRlcyBvZiBmcmVlIGhhcmQgZHJpdmUgc3BhY2UgdG8KICAgICAgICAgIHN0b3JlIGFuZCBjb21waWxlIHRoZSBzb3VyY2UgY29kZS4gV2luZSBhbHNvIG5lZWRzIGFib3V0IDE4IG1lZ3MgaW4KICAgICAgICAgIHlvdXIgL3RtcCBkaXJlY3RvcnkuIEFuZCBhYm91dCA1MCBNQiBhcmUgbmVlZGVkIHRvIGRvIGEgbWFrZSBpbnN0YWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJpbmFyeSBwYWNrYWdlcywgZXNwZWNpYWxseSB0aG9zZSBub3QgY29udGFpbmluZyBkZWJ1ZyBpbmZvcm1hdGlvbiwKICAgICAgICAgIGhhdmUgbXVjaCBsb3dlciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cywgdXN1YWxseSBpbiB0aGUgMjBNQiByYW5nZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW90aGVyLXNvZnR3YXJlLWRvLUktbmVlZC10by1jb21waWxlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgb3RoZXIgc29mdHdhcmUgZG8gSSBuZWVkIHRvIGluc3RhbGwsIGNvbXBpbGUgYW5kIHJ1bgogICAgICAgICAgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IGRldmVsb3BtZW50IHRvb2xzIGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gY29tcGlsZSBXaW5lLgogICAgICAgICAgQSBsaXN0IG9mIHJlcXVpcmVkIHBhY2thZ2VzIGZvciBzZXZlcmFsIGRpc3RyaWJ1dGlvbnMgaXMgaW5jbHVkZWQgaW4KICAgICAgICAgIHRoZSBSRUFETUUgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIHJ1biBXaW5lLCB5b3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+VGhlIGNvbXBpbGVkIFdpbmUgYmluYXJ5PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QSBwcm9wZXJseSBjb25maWd1cmVkIHdpbmUuY29uZiBmaWxlIChvciB+Ly53aW5lcmMgZmlsZSk8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5BbiBpbnN0YWxsZWQgYW5kIHdvcmtpbmcgWCBXaW5kb3cgc3lzdGVtPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+U29tZSBXaW5kb3dzIHByb2dyYW1zIHRvIHRlc3Q8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtUkFNLWRvLUktbmVlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIb3cgbXVjaCBSQU0gZG8gSSBuZWVkIHRvIGhhdmUgb24gbXkgVU5JWCBzeXN0ZW0gdG8gYmUgYWJsZSB0byBydW4gCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHJ1biBYIHNtb290aGx5IG9uIHlvdXIgVU5JWCBzeXN0ZW0gbm93LCB5b3Ugc2hvdWxkIGJlIAogICAgICAgICAgYWJsZSB0byBydW4gV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMganVzdCBmaW5lIHRvbywgZGVwZW5kaW5nCiAgICAgICAgICBvbiBob3cgbWVtb3J5IGh1bmdyeSB0aGUgYXBwbGljYXRpb24gaXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQSBXaW5lIHdvcmtzdGF0aW9uIHdpbGwgd29yayB3aXRoIDE2IG1lZ2FieXRlcyBvZiBSQU0gYW5kIGEgMTYgCiAgICAgICAgICBtZWdhYnl0ZSBzd2FwIHBhcnRpdGlvbiBhcyBsb25nIGFzIHlvdSBoYXZlIGEgcmVhc29uYWJsZSBncmFwaGljcyAKICAgICAgICAgIGNhcmQuIE1vc3QgYXBwbGljYXRpb25zIHdpbGwgcnVuIHJlYXNvbmFibHkgd2l0aCA2NC82NCBNYiwgCiAgICAgICAgICBpbnRlcmFjdGl2ZSBnYW1lcyBhcmUgbGlrZWx5IHRvIG5lZWQgbW9yZS4gWW91IGNhbiBydW4gV2luZSB3aXRoIDgvOCwKICAgICAgICAgIGJ1dCBpdCBpcyBnb2luZyB0byBiZSB1bnVzYWJseSBzbG93IGFuZCB2ZXJ5IGNvbnN0cmFpbmluZyBvbiB0aGUgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgeW91IGNhbiBydW4uIElmIHlvdSB3aXNoIHRvIGJlIHBhcnQgb2YgdGhlIGRldmVsb3BtZW50CiAgICAgICAgICB0ZWFtIGFuZCBwcm9ncmFtIFdpbmUgaXRzZWxmLCBiZSBhd2FyZSB0aGF0IHRoZSBkZWJ1Z2dlciBpcyByYXRoZXIgCiAgICAgICAgICBtZW1vcnkgaW50ZW5zaXZlLiBTb21lIGhhdmUgc3VnZ2VzdGVkIHRoYXQgNjQgbWVnYWJ5dGVzIGlzIHRoZQogICAgICAgICAgbWluaW11bSBSQU0gbmVlZGVkIGZvciBXaW5lIGRldmVsb3BtZW50LCBhbHRob3VnaCBzb21lIGFyZSBhYmxlIHRvIAogICAgICAgICAgd29yayAoYWxiZWl0IHNsb3dseSkgd2l0aCAyNCBtZWdhYnl0ZXMgb2YgcGh5c2ljYWwgUkFNIGFuZCBsb3RzIG9mCiAgICAgICAgICBzd2FwIHNwYWNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1sb25nLWRvZXMtV2luZS10YWtlLXRvLWJ1aWxkIj4KICAgICAgICA8cGFyYT5Ib3cgbG9uZyBkb2VzIFdpbmUgdGFrZSB0byBidWlsZDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgZ2V0dGluZyB0byBiZSBxdWl0ZSBsYXJnZSwgYW5kIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCB0YWtlcyBhCiAgICAgICAgICBsb3Qgb2YgcHJvY2Vzc2luZy4gQXMgb2YgU2VwdGVtYmVyIDIwMDIsIGNvbXBpbGUgdGltZXMgd2VyZSBhcm91bmQgMjAKICAgICAgICAgIG1pbnV0ZXMgb24gYW4gQXRobG9uIDEyMDAgd2l0aCA2NDAgTWIgYW5kIDQ1LTUwIG1pbnV0ZXMgb24gYSBDeXJpeCAKICAgICAgICAgIDMwMCB3aXRoIDY0IE1iLiBJZiB5b3UgaGF2ZSBhIENWUyBjb3B5LCB5b3UgbWF5IG5vdCBuZWVkIHRvIHJlYnVpbGQKICAgICAgICAgIHRoZSB3aG9sZSB0aGluZyBldmVyeSB0aW1lIHlvdSB1cGRhdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtYS1Ecml2ZXNwYWNlZC1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvciBTdGFja2VyZWQgRE9TIHBhcnRpdGlvbi4gQ2FuIAogICAgICAgICAgV2luZSBydW4gTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHN1Y2ggYSBwYXJ0aXRpb24/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBidXQgb25seSBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBzdXBwb3J0cyBtb3VudGluZyB0aG9zZSB0eXBlcwogICAgICAgICAgb2YgZHJpdmVzLiBUaGVyZSBpcyBhIExpbnV4IGZpbGUgc3lzdGVtIGRyaXZlciBjYWxsZWQgZG1zZG9zIHRoYXQKICAgICAgICAgIHdpbGwgYWxsb3cgcmVhZC93cml0ZSBhY2Nlc3MgdG8gRG91Ymxlc3BhY2VkIGFuZCBEcml2ZXNwYWNlIDEuMAogICAgICAgICAgZHJpdmVzLiBNb3JlIHNwZWNpZmljYWxseSwgaXQgc3VwcG9ydHMgbW91bnRpbmcgRE9TIDYuMCBhbmQgNi4yIAogICAgICAgICAgRG91Ymxlc3BhY2VkLCBET1MgNi4yMiBEcml2ZXNwYWNlZCwgYW5kIFdpbmRvd3MgOTUgRG91Ymxlc3BhY2VkIAogICAgICAgICAgY29tcHJlc3NlZCBwYXJ0aXRpb25zIChyZWFkIGFuZCB3cml0ZSBhY2Nlc3Mgd29ya3MgZmluZSwgYnV0IHdyaXRlIAogICAgICAgICAgYWNjZXNzIGlzIHNsb3cpLiBJdCBjYW4gYmUgZm91bmQgYXQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlc3lzdGVtcy9kb3Nmcy8iPgogICAgICAgICAgZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZG9zZnMvPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEby1JLW5lZWQtdG8taGF2ZS1hLURPUy1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPkRvIEkgbmVlZCB0byBoYXZlIGEgRE9TIHBhcnRpdGlvbiBvbiBteSBzeXN0ZW0gdG8gdXNlIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGRvIG5vdCBuZWVkIGEgbGljZW5zZWQgYW5kIGluc3RhbGxlZCBjb3B5IG9mIERPUyBvciBNUyBXaW5kb3dzIHRvCiAgICAgICAgICBpbnN0YWxsLCBjb25maWd1cmUgYW5kIHJ1biBXaW5lLiBIb3dldmVyLCBXaW5lIGhhcyB0byBiZSBhYmxlIHRvIAogICAgICAgICAgJ3NlZScgYW4gTVMgV2luZG93cyBiaW5hcnkgKGkuZS4gYXBwbGljYXRpb24pIGlmIGl0IGlzIHRvIHJ1biBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1NUy1XaW5kb3dzLW5lZWQtdG8tYmUtaW5zdGFsbGVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERvZXMgTVMgV2luZG93cyBuZWVkIHRvIGJlIGxvYWRlZCBpbnRvIHRoYXQgcGFydGl0aW9uIGluIG9yZGVyIHRvCiAgICAgICAgICBydW4gTVMgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZm9sa3MgaGF2ZSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIGFuZCBydW4gcHJvZ3JhbXMKICAgICAgICAgIGluIHRoZWlyIFVOSVggZmlsZSBzeXN0ZW0gd2l0aG91dCBoYXZpbmcgYSBET1MgcGFydGl0aW9uIG9yIE1TIAogICAgICAgICAgV2luZG93cy4gSG93ZXZlciwgaW4gbWFueSBjYXNlcyB5b3UgbmVlZCBhIGRpcmVjdG9yeSBhbmQgZmlsZSAKICAgICAgICAgIGluZnJhc3RydWN0dXJlIHRoYXQgaXMgc2ltaWxhciB0byBhbiBleGlzdGluZyBXaW5kb3dzIGluc3RhbGxhdGlvbi4KICAgICAgICAgIFNvbWUgYXBwbGljYXRpb25zJyBpbnN0YWxsYXRpb24gcHJvZ3JhbXMgd2FudCB0byBkaXN0cmlidXRlIHNvbWUgb2YKICAgICAgICAgIHRoZSBwYWNrYWdlJ3MgZmlsZXMgaW50byB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIGluIG9yZGVyIHRvIHJ1biwgYW5kIHVubGVzcyB0aGVzZSBleGlzdCBvbiB5b3VyIFVOSVggCiAgICAgICAgICBmaWxlIHN5c3RlbSwgdGhvc2UgcHJvZ3JhbXMgd2lsbCBub3QgaW5zdGFsbCBjb3JyZWN0bHkgYW5kIHByb2JhYmx5CiAgICAgICAgICB3aWxsIG5vdCBydW4gd2VsbCwgaWYgYXQgYWxsLiBNb3N0IHBhY2thZ2VzIHdpbGwgc2V0IHRoYXQgdXAgZm9yIHlvdQoJICBhcyBwYXJ0IG9mIHRoZSBpbnN0YWxsIHByb2Nlc3MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGhhdmUgYSBET1MgcGFydGl0aW9uIHdpdGggTVMgV2luZG93cyBpbnN0YWxsZWQgaW4gaXQsIG1ha2UKICAgICAgICAgIHN1cmUgdGhhdCB5b3VyIFVOSVggc3lzdGVtIGNhbiAnc2VlJyB0aGlzIHBhcnRpdGlvbiAoY2hlY2sgeW91ciAKICAgICAgICAgIC9ldGMvZnN0YWIgZmlsZSBvciBtb3VudCB0aGUgcGFydGl0aW9uIG1hbnVhbGx5KSBzbyB0aGF0IFdpbmUgY2FuCiAgICAgICAgICBydW4gdGhlIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiB0aGUgRE9TIHBhcnRpdGlvbi4gVG8gcnVuCiAgICAgICAgICB3aXRob3V0IGEgRE9TIHBhcnRpdGlvbiwgeW91IG5lZWQgdG8gc2V0IGEgVU5JWCBwYXRoIHRvIGJlIHlvdXIgCiAgICAgICAgICBkcml2ZSBDLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBwb2ludCB0byBzb21lIHBsYWNlIHRoYXQgYWN0dWFsbHkgZXhpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSdzIGFuIGV4YW1wbGUsIGNvcGllZCBmcm9tIGEgbWFjaGluZSB3aGljaCBoYXMgbm8gRE9TIHBhcnRpdGlvbgogICAgICAgICAgYnV0IHN1Y2Nlc3NmdWxseSBydW5zIFdpbmU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CiAgICBbRHJpdmUgQ10gICAgICAKICAgICAgICAgIFBhdGg9L3Zhci9saWIvd2luZQogICAgICAgICAgVHlwZT1oZAogICAgICAgICAgTGFiZWw9TVMtRE9TCiAgICAgICAgICBGaWxlc3lzdGVtPXdpbjk1CiAgICBbd2luZV0KICAgICAgICAgIFdpbmRvd3M9Yzpcd2luZG93cwogICAgICAgICAgU3lzdGVtPWM6XHdpbmRvd3Ncc3lzdGVtCiAgICAgICAgICBUZW1wPWU6XAogICAgICAgICAgUGF0aD1jOlx3aW5kb3dzO2M6XHdpbmRvd3Ncc3lzdGVtO2M6CiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEluIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3M8L2ZpbGVuYW1lPiwgeW91IHdpbGwgbmVlZCB0bwogICAgICAgICBpbnN0YWxsIGEgPGZpbGVuYW1lPndpbi5pbmk8L2ZpbGVuYW1lPiBjb25maWcgZmlsZSB0aGF0IHlvdSBtaWdodAogICAgICAgICBmaW5kIG9uIGEgdHlwaWNhbCBNUyBXaW5kb3dzIDMuMSBtYWNoaW5lLiBUaGUgZGlyZWN0b3J5CiAgICAgICAgIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4gc2hvdWxkIGV4aXN0LCBidXQKICAgICAgICAgZG9lc24ndCBuZWVkIHRvIGNvbnRhaW4gYW55dGhpbmcuIEhvd2V2ZXIsIHRvIHVzZSBNUyBETExzLCB5b3UgY2FuCiAgICAgICAgIGNvcHkgdGhlbSBpbnRvIHRoYXQgZGlyZWN0b3J5LiBOb3RlIHRoYXQgdGhpcyBpcyBhIGNvbnRyYXZlbnRpb24gb2YKICAgICAgICAgdGhlIFdpbmRvd3MgbGljZW5jZSB1bmxlc3MgV2luZG93cyBpcyBwcm9wZXJseSBpbnN0YWxsZWQgb24gdGhlCiAgICAgICAgIG1hY2hpbmUuIElmIHlvdSBoYXZlIERPUy9NUyBXaW5kb3dzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgeW91IGNhbgogICAgICAgICBtb3VudCB0aGF0IHBhcnRpdGlvbiBhdCBib290dXAgYnkgbW9kaWZ5aW5nIHRoZSBmaWxlIAogICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+IGluIHlvdXIgVU5JWCBwYXJ0aXRpb24gKGFzc3VtaW5nIHRoYXQKICAgICAgICAgdGhlIFVOSVgga2VybmVsIHN1cHBvcnRzIHRoZSBET1MvTVMgV2luZG93cyBmaWxlIHN5c3RlbSB0eXBlKS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZWRpdCB0aGlzIGZpbGUgYnkgaGFuZCwgaXQgc2hvdWxkIGNvbnRhaW4gc29tZXRoaW5nIHNpbWlsYXIKICAgICAgICAgIHRvIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Ci9kZXYvaGRhMSAvZG9zYyBtc2RvcyB1aWQ9MCxnaWQ9MTAwLHVtYXNrPTAwNyAwIDAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBhbmQgd3JpdGUgdG8gdGhlIERPUyBwYXJ0aXRpb24gd2l0aG91dAogICAgICAgICAgYmVpbmcgcm9vdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtV2luZS1jb21wbGV0ZWx5LXJlcGxhY2VzLU1TLVdpbmRvd3MiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgV2luZSBjb21wbGV0ZWx5IHJlcGxhY2VzIE1TIFdpbmRvd3MsIHdpbGwgaXQgZHVwbGljYXRlIGFsbCBvZiB0aGUKICAgICAgICAgIGZ1bmN0aW9ucyBvZiBNUyBXaW5kb3dzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBnb2FsIGlzIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zIG9uCiAgICAgICAgICBVbml4LiBUbyB0aGlzIGVuZCBpdCB3aWxsIHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBqdXN0IHRob3NlCiAgICAgICAgICBETExzIGFuZCBBUElzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGVzZSBXaW5kb3dzIGFwcGxpY2F0aW9ucy4KICAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBXaW5lIHdpbGwgbm90IHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBETExzIHRoYXQKICAgICAgICAgIGFyZSBub3Qgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgb3IgYXJlIGFsd2F5cyBzaGlwcGVkIHdpdGggV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb24gKGUuZy4gdGhlIFZpc3VhbCBCYXNpYyBydW4gdGltZSkuIFRoaXMgYWxzbwogICAgICAgICAgbWVhbnMgdGhhdCBpbXBsZW1lbnRpbmcgYW4gQVBJIHRoYXQgbm8gYXBwbGljYXRpb24gZXZlciB1c2VzIGlzIG5vdAogICAgICAgICAgYSBwcmlvcml0eS4gU2ltaWxhcmx5LCB1bnRpbCB0aGVyZSBhcmUgYXBwbGljYXRpb25zIG91dCB0aGVyZSB0aGF0CiAgICAgICAgICB1c2UgdGhlIFdpbjY0IEFQSSwgaXQgd2lsbCBub3QgYmUgYSBwcmlvcml0eS4gVGhhdCBiZWluZyBzYWlkLAogICAgICAgICAgd2Ugd2lsbCBjZXJ0YWlubHkgdHJ5IHRvIGtlZXAgb3VyIG9wdGlvbnMgb3BlbiBhbmQgdG8gaW1wcm92ZSBvdXIgQVBJCiAgICAgICAgICBjb3ZlcmFnZSBhcyB3ZSBjYW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQWxzbyBXaW5lIGlzIG5vdCBhbiBvcGVyYXRpbmcgc3lzdGVtLCBzbyB0aGF0IHdyaXRpbmcgZGV2aWNlCiAgICAgICAgICBkcml2ZXJzIGlzIG5vdCBwYXJ0IG9mIFdpbmUncyBnb2Fscy4gSG93ZXZlciBpZiB5b3UgYXJlIGludGVyZXN0ZWQKICAgICAgICAgIGluIGRldmljZSBkcml2ZXJzLCB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZXJuZWwub3JnLyI+TGludXg8L3VsaW5rPiwKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvIj5GcmVlQlNEPC91bGluaz4gYW5kCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+UmVhY3RPUzwvdWxpbms+IGtlcm5lbCBkZXZlbG9wZXJzCiAgICAgICAgICB3b3VsZCBjZXJ0YWlubHkgYXBwcmVjaWF0ZSB5b3VyIGNvbnRyaWJ1dGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTaW1pbGFybHkgV2luZSBkb2VzIG5vdCB0cnkgdG8gYmUgYSBkZXNrdG9wIGVudmlyb25tZW50IHNvCiAgICAgICAgICBwcm92aWRpbmcgYXBwbGV0cyBzdWNoIGFzIGEgY2FsY3VsYXRvciwgYSBmaWxlIG1hbmFnZXIgb3IgZXZlbgogICAgICAgICAgd2luZG93IG1hbmFnZXIgdGhhdCBsb29rIGxpa2UgV2luZG93cywgYXJlIGxvdyBwcmlvcml0eSBvciB3b3VsZAogICAgICAgICAgZXZlbiBiZXN0IGJlIGRvbmUgYXMgYSBzZXBhcmF0ZSBwcm9qZWN0LiBTdWNoIHByb2plY3RzIHdvdWxkIGFsc28KICAgICAgICAgIHRvIGEgbGFyZ2UgZXh0YW50IGJlIHJlZHVuZGFudCB3aXRoIG90aGVyIG9wZW4tc291cmNlIHByb2plY3RzLgogICAgICAgICAgQWdhaW4sIHRoZXJlIGFyZSBwcm9qZWN0cyB0aGF0IHdvdWxkIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIKICAgICAgICAgIGNvbnRyaWJ1dGlvbnMgaW4gdGhpcyBhcmVhcywgc3VjaCBhcyB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZ25vbWUub3JnLyI+R25vbWU8L3VsaW5rPiBvcgogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZGUub3JnLyI+S0RFPC91bGluaz4gZGVza3RvcCBlbnZpcm9ubWVudHMuIFlvdQogICAgICAgICAgd2lsbCBnZXQgdGhlIGFkZGVkIGJlbmVmaXQgdGhhdCB5b3VyIGNvbnRyaWJ1dGlvbiB3aWxsIHRoZW4gYmUKICAgICAgICAgIHVzYWJsZSBieSBldmVyeW9uZSwgbm90IGp1c3QgYnkgV2luZSB1c2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLUktaW5zdGFsbC1vbi1hbnktVU5JWC1maWxlLXN5c3RlbSI+CiAgICAgICAgPHBhcmE+IAogICAgICAgICAgV2lsbCBJIGJlIGFibGUgdG8gaW5zdGFsbCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBpbiBhbnkgZmxhdm9yIG9mIGEKICAgICAgICAgIFVOSVggZmlsZSBzeXN0ZW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3cml0dGVuIHRvIGJlIGZpbGUgc3lzdGVtIGluZGVwZW5kZW50LCBzbyBNUyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpbGwgaW5zdGFsbCBhbmQgcnVuIHVuZGVyIHZpcnR1YWxseSBhbnkgZmlsZSBzeXN0ZW0KICAgICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyYW5kIG9mIFVOSVguCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tb25seS11bmRlci1YIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIG9ubHkgdW5kZXIgWCwgb3IgY2FuIGl0IHJ1biBpbiBjaGFyYWN0ZXIgbW9kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIFdpbmUncyBkZXZlbG9wbWVudCBlZmZvcnQgaXMgZ2VhcmVkIHRvd2FyZHMgTVMgV2luZG93cycgR1VJLAogICAgICAgICAgYnV0IHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBjaGFyYWN0ZXIgbW9kZSBoYXMgYXBwZWFyZWQsIGJ5IHNldHRpbmcKICAgICAgICAgIDxwYXJhbWV0ZXI+R3JhcGhpY3NEcml2ZXI9dHR5ZHJ2PC9wYXJhbWV0ZXI+IGluIHdpbmUuY29uZidzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tdW5kZXItYW55LVgtd2luZG93LW1hbmFnZXIiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gdW5kZXIgYW55IFggd2luZG93IG1hbmFnZXI/IERvZXMgaXQgcmVxdWlyZSBhIHdpbmRvdyBtYW5hZ2VyIGF0IGFsbD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50LCBzbyB0aGUgWCB3aW5kb3cgbWFuYWdlciB5b3UKICAgICAgICAgIGNob29zZSB0byBydW4gaGFzIChhbG1vc3QpIG5vIGJlYXJpbmcgb24geW91ciBhYmlsaXR5IHRvIHJ1biBNUwogICAgICAgICAgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lLiBXaW5lIHVzZXMgc3RhbmRhcmQgWCBsaWJyYXJpZXMsIHNvIG5vCiAgICAgICAgICBhZGRpdGlvbmFsIG9uZXMgYXJlIG5lZWRlZC4gV2luZSBoYXMgaXRzIG93biB3aW5kb3cgbWFuYWdlbWVudCwKICAgICAgICAgIHdoaWNoIGFjdHMgbGlrZSBNUyBXaW5kb3dzLiBJdCBjYW4gYmUgdHVybmVkIG9mZiB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgICAgd2luZG93IG1hbmFnZXIgYnkgbW9kaWZ5aW5nIE1hbmFnZWQgb3IgRGVza3RvcCBzZXR0aW5ncyBhcyBkZXNjcmliZWQKICAgICAgICAgIGluIDxjb21tYW5kPm1hbiB3aW5lLmNvbmY8L2NvbW1hbmQ+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtMzItYml0LWFwcGxpY2F0aW9ucy1ydW4tdW5kZXItV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCAzMi1iaXQgV2luZG93cyA5NS85OCBhcHBsaWNhdGlvbnMgcnVuIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCAzMi1iaXQgcHJvZ3JhbXMgYXJlIG5vdyBhYm91dCBhcyB3ZWxsIHN1cHBvcnRlZCBhcyAxNi1iaXQgCiAgICAgICAgICAgcHJvZ3JhbXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkZBUS1HZXR0aW5nLVdpbmUiPgogICAgICA8dGl0bGU+R2V0dGluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlcmUtY2FuLUktZ2V0LVdpbmUiPgogICAgICAgIDxwYXJhPldoZXJlIGNhbiBJIGdldCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2Ugb2YgbGFncyBjcmVhdGVkIGJ5IHVzaW5nIG1pcnJvciwgd29yZCBvZiB0aGlzIG5ld2VzdCByZWxlYXNlCiAgICAgICAgICBtYXkgcmVhY2ggeW91IGJlZm9yZSB0aGUgcmVsZWFzZSBpcyBhY3R1YWxseSBhdmFpbGFibGUgYXQgdGhlIGZ0cAogICAgICAgICAgc2l0ZXMgbGlzdGVkIGhlcmUuIFRoZSBzb3VyY2VzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nCiAgICAgICAgICBsb2NhdGlvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICAgaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8KICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IHNob3VsZCBhbHNvIGJlIGF2YWlsYWJsZSBmcm9tIGFueSBvdGhlciBzaXRlIHRoYXQgbWlycm9ycyAKICAgICAgICAgIGliaWJsaW8ub3JnLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvTUlSUk9SUy5odG1sIj5odHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9NSVJST1JTLmh0bWw8Lz4uIFNvbWUgb2YKICAgICAgICAgIHRoZXNlIHNpdGVzIG1heSBhcmNoaXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIFdpbmUgYXMgd2VsbCBhcyB0aGUKICAgICAgICAgIGN1cnJlbnQgb25lLiBUbyBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGxhdGVzdCBvbmUsIGxvb2sgYXQgdGhlIAogICAgICAgICAgZGlzdHJpYnV0aW9uIGZpbGUgbmFtZSwgd2hpY2ggd2lsbCB0YWtlIHRoZSBmb3JtIAogICAgICAgICAgV2luZS1ZWVlZTU1ERC50YXIuZ3ouIFNpbXBseSByZXBsYWNlIFlZWVlNTUREIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUgbmFtZSB3aXRoIHRoZSBudW1iZXJzIGZvciB5ZWFyLCBtb250aCBhbmQgZGF0ZSwgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgVGhlIGxhdGVzdCBvbmUgaXMgdGhlIG9uZSB0byBnZXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBiaW5hcnkgcGFja2FnZXMgYXJlIGF2YWlsYWJsZSBmb3Igc2V2ZXJhbCBPUydlcyBhbmQgCiAgICAgICAgICBkaXN0cmlidXRpb25zLiBTZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb3dubG9hZCI+CiAgICAgICAgICB0aGUgZG93bmxvYWQgcGFnZTwvdWxpbms+IGZvciB0aGUgbW9zdCByZWNlbnQgbGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLUNWUy10cmVlIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIENWUyB0cmVlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEN1cnJlbnQgV2luZSBzb3VyY2VzIGFyZSBhbHNvIGF2YWlsYWJsZSB2aWEgYW5vbnltb3VzIGNsaWVudC9zZXJ2ZXIKICAgICAgICAgIENWUy4gWW91IHdpbGwgbmVlZCBDVlMgMS45IG9yIGFib3ZlLiBJZiB5b3UgYXJlIGNvbWluZyBmcm9tIGJlaGluZCBhCiAgICAgICAgICBmaXJld2FsbCwgeW91IHdpbGwgZWl0aGVyIG5lZWQgYSBob2xlIGluIHRoZSBmaXJld2FsbCBmb3IgdGhlIENWUwogICAgICAgICAgcG9ydCAoMjQwMSkgb3IgdXNlIFNPQ0tTLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIGxvZ2luIHRvIHRoZSBDVlMgdHJlZSwgZG8KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IENWU1JPT1Q9OnBzZXJ2ZXI6Y3ZzQGN2cy53aW5laHEub3JnL2hvbWUvd2luZQpjdnMgbG9naW4KICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzZSAiY3ZzIiBhcyB0aGUgcGFzc3dvcmQgKHdpdGhvdXQgdGhlIHF1b3RlcykuIE5vdGUgdGhhdCAKICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS93aW5lPC9maWxlbmFtZT4gaXMgYSBwYXRoIG9uIHRoZSBzZXJ2ZXIsIG5vdCBvbiB5b3VyCiAgICAgICAgICBtYWNoaW5lLiBUbyBjaGVjayBvdXQgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlICh3aGljaCBtYXkgYmUgCiAgICAgICAgICBzbG93KSwgdXNlCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBvciBpZiB5b3UganVzdCB3YW50IGEgc3VidHJlZSwgb3IgaW5kaXZpZHVhbCBmaWxlLCB5b3UgY2FuIGRvIHRoYXQgCiAgICAgICAgICB0b28gd2l0aAogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjdnMgLXogMyBjaGVja291dCB3aW5lL0FOTk9VTkNFIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmUgYXdhcmUsIHRob3VnaCwgdGhhdCBnZXR0aW5nIHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSB2aWEgQ1ZTCiAgICAgICAgICBpcyBwcmV0dHkgc2xvdywgZXNwZWNpYWxseSBjb21wYXJlZCB0byBnZXR0aW5nIFdpbmUgZnJvbSBhbiBGVFAgCiAgICAgICAgICBtaXJyb3IgbmVhciB5b3UuIEZvciBhIENWUyBtaXJyb3IgbGlzdCwgc2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzI2N2c3NlcnZlcnMiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzI2N2c3NlcnZlcnM8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZSwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byBkb3dubG9hZCwKICAgICAgICAgIGluc3RhbGwsIGFuZCBjb25maWd1cmUgdGhlIGVudGlyZSBkaXN0cmlidXRpb24gZWFjaCB3ZWVrIGlmIHlvdSBhcmUKICAgICAgICAgIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHJlbGVhc2UuIFBhdGNoIGZpbGUgcmVsZWFzZSBuYW1lcyBmb2xsb3cgdGhlCiAgICAgICAgICBzYW1lIG51bWJlcmluZyBjb252ZW50aW9uIGFzIGRvIHRoZSBnZW5lcmFsIHJlbGVhc2VzLCBhbmQgdGFrZSB0aGUgCiAgICAgICAgICBmb3JtCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6ICAKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXRjaCBmaWxlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIHNhbWUgc2l0ZXMgdGhhdCBkaXN0cmlidXRlIHRoZQogICAgICAgICAgZnVsbCByZWxlYXNlLiBUbyB1cGdyYWRlIHRvIGEgbmV3IHJlbGVhc2UgYnkgdXNpbmcgYSBwYXRjaCBmaWxlLAogICAgICAgICAgZmlyc3QgY2QgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhlIHJlbGVhc2UgKHRoZSBvbmUKICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIFJFQURNRSBmaWxlKSwgdGhlbiBkbyBhICJtYWtlIGNsZWFuIiwgYW5kIHBhdGNoIHRoZQogICAgICAgICAgcmVsZWFzZSB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Cmd1bnppcCAtYyBwYXRjaC1maWxlIHwgcGF0Y2ggLXAxIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgd2hlcmUgcGF0Y2gtZmlsZSBpcyB0aGUgbmFtZSBvZiB0aGUgcGF0Y2ggZmlsZSBzb21ldGhpbmcgbGlrZQogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6LiBZb3UgY2FuIHRoZW4gcmUtcnVuIC4vY29uZmlndXJlLCBhbmQgdGhlbiBydW4KICAgICAgICAgIG1ha2UgZGVwZW5kICYmIG1ha2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgYXJlIG1pcnJvcmluZyB0aGUgV2luZSBkaXN0cmlidXRpb24gZnJvbSB0aGUgdHN4LTExIHNpdGUgYW5kCiAgICAgICAgICB3aXNoIHRvIGJlIGxpc3RlZCBoZXJlIGluIHRoaXMgRkFRLCBwbGVhc2UgYWRkIGl0IHRvIHRoZSAKICAgICAgICAgICJ0aGluZ3MgdG8gZ28gaW50byB0aGUgZG9jdW1lbnRhdGlvbiIgYXJlYS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1nZXQtV2luZS11c2luZy1jdnN1cCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgZ2V0IFdpbmUgdXNpbmcgY3ZzdXA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIENWUyBtaXJyb3JzIGRvbid0IG9mZmVyIGN2c3VwIHN1cHBvcnQgeWV0LCBidXQgdGhlIG1haW4gc2VydmVyCiAgICAgICAgICBkb2VzLiBVc2UgYSA8ZmlsZW5hbWU+d2luZS5zdXA8L2ZpbGVuYW1lPiBmaWxlIG9mOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgoqZGVmYXVsdCBob3N0PWN2cy53aW5laHEub3JnCipkZWZhdWx0IGJhc2U9L2N2cwoqZGVmYXVsdCBwcmVmaXg9L2N2cy93aW5lCipkZWZhdWx0IHJlbGVhc2U9d2luZQoqZGVmYXVsdCBkZWxldGUgCgojIElmIHlvdXIgbmV0d29yayBsaW5rIGlzIGEgVDEgb3IgZmFzdGVyLCBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGxpbmUuCiMqZGVmYXVsdCBjb21wcmVzcyAKCipkZWZhdWx0IHVzZS1yZWwtc3VmZml4IAp3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgIDwvYW5zd2VyPgogICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJJbnN0YWxsaW5nLUFuZC1Db25maWd1cmluZy1XaW5lIj4KICAgICAgPHRpdGxlPkluc3RhbGxpbmcgYW5kIENvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb21waWxlLXRoZS1XaW5lLXNvdXJjZS1jb2RlIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb21waWxlIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBzb3VyY2UgY29kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTZWUgdGhlIFJFQURNRSAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUUiPmh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pIGZvciBpbnN0cnVjdGlvbnMuCiAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIDxwYXJhbWV0ZXI+VE1QRElSPC9wYXJhbWV0ZXI+CiAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSA8Y29tbWFuZD5UTVBESVI9fi90bXA8L2NvbW1hbmQ+IG9yCiAgICAgICAgICA8Y29tbWFuZD5UTVBESVI9L3RtcDwvY29tbWFuZD4gKGlmIHlvdSBhcmUgcm9vdCkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktaW5zdGFsbC1XaW5kb3dzLWluLVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGluc3RhbGwgV2luZG93cyBpbiBXaW5lIHVuZGVyIExpbnV4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbXBsZSBhbnN3ZXI6IHlvdSBDQU4nVC4gV2luZG93cyBkZW1hbmRzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlCiAgICAgICAgICBoYXJkd2FyZSBhbmQgY2Fubm90IGdldCBpdCB3aXRoIFdpbmUgYW5kIFVOSVggaW4gdGhlIHdheQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgc3VwcG9zZWQgdG8gYmUgcHJpbWFyaWx5IHVzZWQgV0lUSE9VVCBXaW5kb3dzLiBJZiB5b3Ugd2FudAogICAgICAgICAgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsYXRpb24sIHRoZW4gdXNlIGFuIGV4aXN0aW5nIGluc3RhbGxhdGlvbiAKICAgICAgICAgIGFsb25nc2lkZSB0aGUgVU5JWCBpbnN0YWxsYXRpb24gKHNlZSB0aGUgZHVhbC1ib290IEhPV1RPIGZvciB5b3VyIE9TCiAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzKS4gT3IgYWx0ZXJuYXRpdmVseSB1c2UgdGhlIGNhYmV4dHJhY3QgdXRpbGl0eSB0bwogICAgICAgICAgZXh0cmFjdCBXaW5kb3dzIGluc3RhbGwgYXJjaGl2ZXMgdG8gYSBkaXJlY3RvcnkgdGhhdCB5b3Ugd2FudCB0byB1c2UKICAgICAgICAgIGFzIFdpbmUncyBXaW5kb3dzIHRyZWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29uZmlndXJlLVdpbmUtdG8tcnVuLW9uLW15LXN5c3RlbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29uZmlndXJlIFdpbmUgdG8gcnVuIG9uIG15IHN5c3RlbT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgYSBjb25maWcgZmlsZSBhcyAKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LiBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcwogICAgICAgICAgZXhwbGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gbWFuIHBhZ2UuIFRoZSBmaWxlCiAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvZmlsZW5hbWU+CiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvdWxpbms+KSAKICAgICAgICAgIGNvbnRhaW5zIGEgY29uZmlnIGZpbGUgZXhhbXBsZS4gTW9yZSBleHBsaWNpdCBkaXJlY3Rpb25zIGNhbiBiZSAKICAgICAgICAgIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FPC91bGluaz4pIHRoYXQgd2lsbCBiZSBsb2NhdGVkIGluCiAgICAgICAgICB0aGUgYmFzZSBXaW5lIGRpcmVjdG9yeSBhZnRlciB5b3UgZ3VuemlwIGFuZCB1bnRhciB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXVwZ3JhZGUtY29uZmlndXJhdGlvbiI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgdXBncmFkZSBXaW5lIHdpdGhvdXQgbG9zaW5nIG15IHdvcmtpbmcgY29uZmlndXJhdGlvbj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGdyYWRpbmcgdGhlIHdpbmUgaW5zdGFsbGF0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgZXhpc3Rpbmcgd2luZQogICAgICAgICAgY29uZmlndXJhdGlvbi4gU28gYWZ0ZXIgdXBncmFkaW5nIHdpbmUgeW91IHN0aWxsIGhhdmUgdGhlIG9sZCAod29ya2luZyApCiAgICAgICAgICB3aW5lIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC12ZXJzaW9ucy1PSyI+CiAgICAgICAgPHBhcmE+SWYgSSB3YW50IHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCwgd2hpY2ggdmVyc2lvbnMgYXJlIE9LPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEVpdGhlciB1c2UgYSBjbGFzc2ljIG5vLXdpbmRvd3MgaW5zdGFsbCAoV2luZSBpcyBnZXR0aW5nIGJldHRlciBhbGwKICAgICAgICAgIHRoZSB0aW1lKSBvciB1c2UgYSBXaW45eCBpbnN0YWxsIChXaW45NSwgOTgsIDk4U0UsIE1FKS4gRE9OJ1QgCiAgICAgICAgICBjb25maWd1cmUgV2luZSB0byB1c2UgYW4gTlQtYmFzZWQgV2luZG93cyBpbnN0YWxsIChOVCwgV2luMkssIFdpblhQLCBXaW4ySzMpLgogICAgICAgIDwvcGFyYT4KCTxwYXJhPgoJICBJbiBnZW5lcmFsLCBtb3N0IFdpbmRvd3MgaW5zdGFsbGF0aW9ucyBjb250YWluIHZhc3QgcXVhbnRpdGllcyBvZiBnYXJiYWdlCgkgIHRoYXQgY2FuIGNvbmZ1c2UgV2luZSBhbmQgbWFrZSBpdCBsZXNzIHJlbGlhYmxlLiBJZiB5b3UgY2FuLCBpdCdzIGJlc3QgdG8KCSAgaW5zdGFsbCB0aGUgcHJvZ3JhbXMgeW91IHdhbnQgaW50byBXaW5lcyBmYWtlIHdpbmRvd3MgZHJpdmUuCgk8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1JLXVzZS1XaW5kb3dzLXdoaWNoLW9uZS13b3Jrcy1iZXN0Ij4KICAgICAgICA8cGFyYT5JZiBJIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCB3aXRoIFdpbmUsIHdoaWNoIG9uZSB3b3JrcyBiZXN0PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIG9mIDAyLzIwMDI6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSdkIHNheSBXaW45OFNFIGlzIHRoZSBiZXN0IHZlcnNpb24gdG8gdXNlIHdpdGggV2luZSwgYXMgaXQncyBmYWlybHkKICAgICAgICAgIHdpZGVzcHJlYWQgYW1vbmdzdCBkZXZlbG9wZXJzIGFuZCByZWxhdGl2ZWx5IG9sZC4gVXNpbmcgV2luMksgZmlsZXMKICAgICAgICAgIGlzIDxlbXBoYXNpcz5kZWZpbml0ZWx5PC9lbXBoYXNpcz4gd29yc2UgdGhhbiBhIHBsYWluIG5vLXdpbmRvd3MgCiAgICAgICAgICBXaW5lIGluc3RhbGwsIGFuZCBXaW4gTUUgaXMgc2FpZCB0byBiZSBwcm9ibGVtYXRpYywgdG9vIChhcyBwcm9iYWJseQogICAgICAgICAgbm8gZGV2ZWxvcGVyIHVzZXMgaXQpLiBJbiBzaG9ydDogYWxsIFdpbjl4ICZsdDs9IFc5OFNFIGFyZSBnb29kLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikluc3RhbGxpbmctVmlzdWFsLUJhc2ljLWFwcHMtd29udC1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSW5zdGFsbGluZyBhcHBsaWNhdGlvbnMgZ2VuZXJhdGVkIGJ5IFZpc3VhbCBCYXNpYyB3b24ndCBydW4uIFdoYXQKICAgICAgICAgIHNob3VsZCBJIGRvPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhbGwgdGhlIFZCIHJ1biB0aW1lIGxpYnJhcmllcyBpbnN0YWxsZWQuIFlvdSBtYXkKICAgICAgICAgIG5lZWQgdG8gdXNlIHRoZSBuYXRpdmUgRExMIHZicnVuNjAuZGxsLiBZb3UgY2FuIGdldCBzb21lIGZyb20gZGxsLWZpbGVzLmNvbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLUktY2xpY2stb24tZXhlLWZpbGUtbm90aGluZy1oYXBwZW5zIj4KICAgICAgICA8cGFyYT5XaGVuIEkgY2xpY2sgb24gKi5leGUgZmlsZSBpbiBteSBmaWxlIE1hbmFnZXIsIG5vdGhpbmcgaGFwcGVucy48L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbm9ybWFsIFdpbmUgcmVsZWFzZXMgZG9uJ3QgaGF2ZSAuZXhlIGV4dGVuc2lvbnMgcmVnaXN0ZXJlZCBmb3IKICAgICAgICAgIFdpbmUgaW4gS0RFL0dub21lIHlldC4gWW91IGhhdmUgdG8gb3BlbiBhIHRlcm1pbmFsIHdpbmRvdyBpbnN0ZWFkCiAgICAgICAgICAob2Z0ZW4gYW4gaWNvbiBzaG93aW5nIGEgImJsYWNrIHNjcmVlbiIpIGFuZCB0eXBlIHNvbWV0aGluZyBsaWtlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjZCAvbXkvd2luZG93cy9wcm9ncmFtL2RpcmVjdG9yeQp3aW5lIG15cHJvZ3JhbS5leGUKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE9yIGFsdGVybmF0aXZlbHkgeW91IGNvdWxkIGRvd25sb2FkIHRoZSBDb2RlV2VhdmVycyBXaW5lIHByZXZpZXcgCiAgICAgICAgICB3aGljaCBpbmNsdWRlcyAuZXhlIGV4dGVuc2lvbiByZWdpc3RyYXRpb24gZm9yIEtERS9Hbm9tZSBhbmQgYSBuaWNlCiAgICAgICAgICBzZXR1cCBwcm9ncmFtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImJhc2gtd2luZS1Db21tYW5kLW5vdC1mb3VuZC1XaGF0LWNhbi1JLWRvIj4KICAgICAgICA8cGFyYT5iYXNoIHNheXMgIndpbmU6IENvbW1hbmQgbm90IGZvdW5kIiBXaGF0IGNhbiBJIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyeSB0byByZSBsb2dpbiBpbnRvIGJhc2guIFRoYXQgbWlnaHQgZml4IGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIGl0IGRvZXNuJ3QsIHRoZW4gbWFrZSBzdXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbiB5b3VyIAogICAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJ1biBhcyByb290OgogICAgICAgIDwvUGFyYT4KICAgICAgICA8c2NyZWVuPgpmaW5kIC8gLW5hbWUgIndpbmUiIC10eXBlIGYgLXBlcm0gKzExMQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgdG8gZmluZCB0aGUgcGF0aCB3aGVyZSB0aGUgd2luZSBiaW5hcnkgaXMgaW4uIFRoZW4gY2hlY2sgd2hldGhlcgogICAgICAgIDxwYXJhbWV0ZXI+UEFUSDwvcGFyYW1ldGVyPiBpbmNsdWRlcyBpdDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZWNobyAkUEFUSCAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIG5vdCwgYWRkIHRoYXQgZS5nLiB0byA8ZmlsZW5hbWU+L2V0Yy9wcm9maWxlPC9maWxlbmFtZT4gYnkgZG9pbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBQQVRIPSRQQVRIOi9wYXRoL3RvL3dpbmUvYmluYXJ5IAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBzaG91bGQgaGVscC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgSWYgeW91IHVzZWQgYSBwYWNrYWdlIG1hbmFnZXIgKDxjb21tYW5kPnJwbTwvY29tbWFuZD4gb3IgCiAgICAgICAgICAgPGNvbW1hbmQ+YXB0PC9jb21tYW5kPikgLSBWZXJpZnkgeW91ciBwYWNrYWdlcy4gVGhlIHBhY2thZ2UgCiAgICAgICAgICAgPGZpbGVuYW1lPndpbmVzZXR1cHRrLnJwbTwvZmlsZW5hbWU+IGlzIG9ubHkgYSBmcm9udC1lbmQgZm9yIAogICAgICAgICAgIG1ha2luZyBhIG1lYW5pbmdmdWwgY29uZmlnIGZpbGUsIGl0IERPRVMgTk9UIGluc3RhbGwgdGhlIHdpbmUKICAgICAgICAgICBwYWNrYWdlLi4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgIEZvciBjb21wbGV0ZSBwYWNrYWdlcywgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly9ycG1zZWVrLmNvbS9ycG0tcGwvd2luZS5odG1sP2hsPWNvbSZhbXA7Y3g9MDo6Ij4KICAgICAgICAgICBodHRwOi8vcnBtc2Vlay5jb20vPC91bGluaz4gb3IgdGhlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2Rvd25sb2FkIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBkZXBlbmRzIG9uIGhvdyB5b3UgaW5zdGFsbGVkLiBJZiB5b3UgdXNlZCBhbiBSUE0sIHRoZSByaWdodCBjb21tYW5kIGlzIHRoaXM6CiAgICAgICAgIDxjb21tYW5kPnJwbSAtZSB3aW5lIChhcyByb290KTwvY29tbWFuZD4KICAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgSWYgeW91IGluc3RhbGxlZCBmcm9tIHNvdXJjZSAodGhlIC50YXIuZ3ogZmlsZSksIHRoZSByaWdodAogICAgICAgICB3YXkgdG8gZG8gaXQgaXMgdG8gY2hhbmdlIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZSAodGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBjb25maWd1cmUgc2NyaXB0LAogICAgICAgICByZWFkbWUgZXRjKSB0aGVuIHJ1biBhcyByb290OgogICAgICAgICA8Y29tbWFuZD5tYWtlIHVuaW5zdGFsbDwvY29tbWFuZD4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcnVuLWFuLU1TLVdpbmRvd3MtcHJvZ3JhbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcnVuIGFuIE1TIFdpbmRvd3MgcHJvZ3JhbSB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gaW52b2tpbmcgV2luZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgZW50aXJlIHBhdGggdG8gdGhlCiAgICAgICAgICBleGVjdXRhYmxlLCBvciBieSBmaWxlIG5hbWUgb25seS4gRm9yIGV4YW1wbGUgdG8gcnVuIFdpbmRvd3MnCiAgICAgICAgICBzb2xpdGFpcmUsIHR5cGUgYW55IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBzb2w8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPndpbmUgc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgdGhlIHNlYXJjaCBwYXRoIHRvIGxvY2F0ZSB0aGUgZmlsZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgYzpcXHdpbmRvd3NcXHNvbC5leGU8L2NvbW1hbmQ+IAogICAgICAgICAgICh1c2luZyBhIERPUyBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIC91c3Ivd2luZG93cy9zb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyBhIFVOSVggZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAiYzpcd2luZG93c1xzb2wuZXhlIjwvY29tbWFuZD4KICAgICAgICAgICAgKHVzaW5nIHF1b3RlZCBET1MgZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgZmlsZSB3aWxsIGFsc28gYmUgYWRkZWQgdG8gdGhlIHBhdGggd2hlbiBhIGZ1bGwgbmFtZQogICAgICAgICAgaXMgc3VwcGxpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2luZS1jYW5ub3QtZmluZC1NUy1XaW5kb3dzLW9uLW15LWRyaXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgV2luZSwgYnV0IFdpbmUgY2Fubm90IGZpbmQgTVMgCiAgICAgICAgICBXaW5kb3dzIG9uIG15IGRyaXZlLiBXaGVyZSBkaWQgSSBnbyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24sIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIG1vdW50ZWQKICAgICAgICAgIGl0LCBlaXRoZXIgYnkgcHV0dGluZyB0aGUgZW50cnkgaW50byA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+LAogICAgICAgICAgb3IgYnkgbWFudWFsbHkgbW91bnRpbmcgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUmVtZW1iZXIgdG9vIHRoYXQgdW5sZXNzIHlvdXIgdmVyc2lvbiBvZiBVTklYIGNhbiBzZWUgdGhyb3VnaCBpdCwgb3IKICAgICAgICAgIHlvdSBhcmUgcnVubmluZyBhIHV0aWxpdHkgdGhhdCBjYW4gc2VlIHRocm91Z2ggaXQsIHlvdXIgRE9TCiAgICAgICAgICBwYXJ0aXRpb24gbXVzdCBub3QgYmUgbG9jYXRlZCBvbiBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IKICAgICAgICAgIFN0YWNrZXJlZCBwYXJ0aXRpb24sIGFzIG5laXRoZXIgTGludXgsIEZyZWVCU0QsIE5ldEJTRCBvciBXaW5lIGNhbgogICAgICAgICAgbmF0aXZlbHkgJ3NlZScgZmlsZXMgbG9jYXRlZCBpbiB0aGVzZSBjb21wcmVzc2VkIERPUyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIENoZWNrIHlvdXIgcGF0aCBzdGF0ZW1lbnRzIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gCiAgICAgICAgICBmaWxlLiBObyBjYXBpdGFsIGxldHRlcnMgbWF5IGJlIHVzZWQgaW4gcGF0aHMsIGFzIHRoZXkgYXJlIAogICAgICAgICAgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlBhcnRzLW9mLW15LWFwcC1kby1ub3Qtd29yay1XaGF0LWlzLXdyb25nIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgd2FzIGFibGUgdG8gZ2V0IHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcyB0byBydW4sIGJ1dCBwYXJ0cyBvZgogICAgICAgICAgdGhlbSBkbyBub3Qgd29yay4gV2hhdCBpcyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBjb21wbGV0ZSBhdCB0aGlzIHRpbWUsIHNvIHNvbWUgb2YgZWFjaCBwcm9ncmFtcycgCiAgICAgICAgICBmZWF0dXJlcyBtYXkgbm90IHdvcmsuIFRoZXkgd2lsbCBpbiB0aW1lIGFzIG1vcmUgb2YgdGhlIE1TIAogICAgICAgICAgV2luZG93cyBBUEkgY2FsbHMgYXJlIGluY2x1ZGVkIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iTWVudXMtZG8tbm90LXdvcmstaG93LWNhbi1JLWV4aXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIHJ1biB2YXJpb3VzIE1TIFdpbmRvd3MgcHJvZ3JhbXMsIGJ1dCBzaW5jZSB0aGUgcHJvZ3JhbSBtZW51cwogICAgICAgICAgZG8gbm90IHdvcmssIGhvdyBjYW4gSSBleGl0IHRoZXNlIHByb2dyYW1zPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEtpbGwgdGhlIHh0ZXJtIHNoZWxsIHdpbmRvdyB0aGF0IHlvdSBjYWxsZWQgdXAgdG8gcnVuIHlvdXIgTVMgCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW0sIGFuZCB0aGUgWCB3aW5kb3cgdGhhdCBhcHBlYXJlZCB3aXRoIHRoZSBwcm9ncmFtIAogICAgICAgICAgd2lsbCBiZSBraWxsZWQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgoJPHF1ZXN0aW9uIGlkPSJNeS1hcHAtZG9lc250LXdvcmstd2hhdC1jYW4taS1kbyI+CgkgIDxwYXJhPgoJICAgIE15IHByb2dyYW0gZG9lc24ndCB3b3JrLCB3aGF0IGNhbiBJIGRvPwoJICA8L3BhcmE+Cgk8L3F1ZXN0aW9uPgoJPGFuc3dlcj4KCSAgPHBhcmE+CgkgICAgSWYgeW91IGFyZSBhIHByb2dyYW1tZXIgYW5kIGtub3cgQywgdGhlbiBzdGFydCBkZWJ1Z2dpbmcKCSAgICBXaW5lIGFuZCBoZWxwIHVzIG1ha2UgaXQgYmV0dGVyISBJZiB5b3UgY2FuJ3QsIHRoZW4geW91IHdpbGwKCSAgICBoYXZlIHRvIGVpdGhlciBjb252aW5jZSBhIFdpbmUgZGV2ZWxvcGVyIHRvIHRyeSBhbmQgbWFrZSB5b3VyCgkgICAgcHJvZ3JhbSB3b3JrICh0aGVyZSBtdXN0IGJlIGEgZG93bmxvYWRhYmxlIHZlcnNpb24gb3IgZGVtbyBmb3IKCSAgICB0aGF0KSwgb3IgaGlyZSBzb21lYm9keSB0byBkbyBpdCBmb3IgeW91LiBJZiB0aGlzIGFwcGxpY2F0aW9uCgkgICAgaXMgYW4gaW50ZXJuYWwgY29ycG9yYXRlIGFwcGxpY2F0aW9uLCB5b3UgbWF5IGJlIGFibGUgdG8gaGlyZSBhCgkgICAgV2luZSBkZXZlbG9wZXIgdG8gZG8gY29uc3VsdGluZyB3b3JrIGZvciB5b3Ugb24gdGhlIG1hdHRlci4KCSAgPC9wYXJhPgoJICA8cGFyYT4KCSAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0IHRoZSBhcHAgd29ya2luZyBieQoJICAgIHRha2luZyBuYXRpdmUgRExMcyBmcm9tIGEgTWljcm9zb2Z0IFdpbmRvd3MgaW5zdGFsbCwgYW5kIHVzaW5nCgkgICAgdGhlbSAoc2V0IHRoZSBkbGxzIHRvIG5hdGl2ZSBpbiB0aGUgY29uZmlnIGZpbGUpLiBOb3QgYWxsIERMTHMKCSAgICBjYW4gYmUgcmVwbGFjZWQgdGhhdCB3YXkgLSBpbiBwYXJ0aWN1bGFyIERpcmVjdFggY2Fubm90IGJlLCBub3IKCSAgICBjYW4gc29tZSBjb3JlIHN5c3RlbSBETExzIGxpa2UgdXNlciwgbnRkbGwsIGtlcm5lbDMyIGV0YwoJICA8L3BhcmE+Cgk8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtd2l0aC1vdGhlci1MaW51eC1EaXN0cm9zIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB3aXRoIFN1U0UsIFBlYW51dCBvciBvdGhlciBMaW51eCBEaXN0cm8ncz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIHVzZSBXaW5lIG9uIGFueSBzdWZmaWNpZW50bHkgcmVjZW50IExpbnV4IGluc3RhbGxhdGlvbi4gVGhlCiAgICAgICAgICBhbW91bnQgb2Ygd29yayBnZXR0aW5nIFdpbmUgdXAgYW5kIHJ1bm5pbmcgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXJlCiAgICAgICAgICBhcmUgcHJvcGVyIHBhY2thZ2VzIGF2YWlsYWJsZSBvciBhIHNvdXJjZSBjb21waWxlIGhhcyB0byBiZSBkb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtV2luZS13b3JrLXdpdGgtQU1ELVByb2Nlc3NvcnMiPgogICAgICAgIDxwYXJhPkRvZXMgV2luZSB3b3JrIHdpdGggQU1EIFByb2Nlc3NvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBpdCBkb2VzLiBXaW5lIHNob3VsZCB3b3JrIG9uIGFueSBwcm9jZXNzb3IgY29tcGF0aWJsZSB3aXRoCiAgICAgICAgICB0aGUgUGVudGl1bSBvciBncmVhdGVyLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1sYXVuY2gtVW5peC1hcHAtZnJvbS1XaW5kb3dzLWFwcCI+CiAgICAgICAgPHBhcmE+IENhbiBJIGxhdW5jaCBhIFVuaXggcHJvZ3JhbSBmcm9tIGEgV2luZG93cyBwcm9ncmFtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1cmUsIFdpbmUgc3VwcG9ydHMgdGhhdC4gSnVzdCBlbnRlciB0aGUgdW5peCBwcm9ncmFtIG5hbWUgd2hlcmV2ZXIKICAgICAgICAgIGEgcHJvZ3JhbSBoYXMgc29tZXRoaW5nIHRoYXQgaXQncyBzdXBwb3NlZCB0byBleGVjdXRlLCBhbmQgaXQKICAgICAgICAgIHNob3VsZCBqdXN0IHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJFcnJvci13aXRoLWluc3RhbGxzaGllbGQtNiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGdldCA8cXVvdGU+RXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCk8L3F1b3RlPgogICAgICAgICAgd2hlbiBydW5uaW5nIGFuIEluc3RhbGxTaGllbGQgNiBpbnN0YWxsZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGdldCB0aGUgZXJyb3IgIkVycm9yIGluc3RhbGxpbmcgaUtlcm5lbC5leGU6ICgweDE0MDApIiBhdCBhbnkKICAgICAgICAgIHBvaW50LCBpdCdzIHByb2JhYmx5IGJlY2F1c2UgdGhlcmUgYXJlIGxlZnRvdmVyIHByb2Nlc3NlcyBmcm9tIGEKICAgICAgICAgIHByZXZpb3VzIHRyeS4gWW91IGNhbiB2ZXJpZnkgdGhpcyB3aXRoIHRoZSBjb21tYW5kCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPjxwcm9tcHQ+JCA8Lz48Y29tbWFuZD5wcyBhdWd4dyB8IGdyZXAgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB0aGF0IGNvbW1hbmQgc2hvd3Mgb2xkIGNvcGllcyBvZiB3aW5lIHJ1bm5pbmcgeW91ciBzZXR1cCwKICAgICAgICAgIHlvdSBuZWVkIHRvIGtpbGwgdGhlbSBiZWZvcmUgeW91IGNhbiBydW4gdGhlIHNldHVwIHByb2dyYW0uCiAgICAgICAgICBJZiB0aGVyZSBhcmUgbm8gb3RoZXIgV2luZSBwcm9ncmFtcyBydW5uaW5nLCB5b3UgY2FuIGtpbGwgdGhlbQogICAgICAgICAgYWxsIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPmtpbGxhbGwgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UncmUgYWxzbyBydW5uaW5nIFdpbmUgcHJvZ3JhbXMgeW91IGNhcmUgYWJvdXQsIHlvdSdsbAogICAgICAgICAgaGF2ZSB0byBraWxsIG9mZiB0aGUgb2xkIFNldHVwIGluc3RhbmNlcyBvbmUgYnkgb25lIHVzaW5nCiAgICAgICAgICBraWxsIGFuZCB0aGUgaW5kaXZpZHVhbCBQSURzIChvciBwZXJoYXBzIFdpbmUncyBzcGlmZnkgVGFzayBNYW5hZ2VyLAogICAgICAgICAgd2hpY2ggZG9lc24ndCBleGlzdCB5ZXQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBzaG91bGQgcmVwZWF0IHRoZSA8Y29tbWFuZD5wczwvY29tbWFuZD4gdG8gbWFrZSBzdXJlIHRoZSBvbGQgCiAgICAgICAgICBXaW5lIHByb2Nlc3NlcyBhcmUgZ29uZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgICAKICAgIDxxYW5kYWRpdiBpZD0iR2V0dGluZy1oZWxwIj4KICAgICAgPHRpdGxlPkdldHRpbmcgaGVscDwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFueS1kb2N1bWVudGF0aW9uLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbnkgZG9jdW1lbnRhdGlvbiBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb2N1bWVudGF0aW9uIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2RvY3VtZW50YXRpb24uPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtd3JpdHRlbi1zb21lLWRvY3VtZW50ZW50YXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBjb3VsZG4ndCBmaW5kIHRoZSBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24gaW4gdGhlIGRvY3VtZW50YXRpb24sIGJ1dAogICAgICAgICAgSSd2ZSB3cml0dGVuIGEgZG9jdW1lbnQgZXhwbGFpbmluZyBob3cgdG8gc29sdmUgaXQuIFdoYXQgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBkYXRlcyBhbmQgYWRkaXRpb25zIHRvIHRoZSBXaW5lIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHNob3VsZCBiZQogICAgICAgICAgc2VudCB0byB0aGUgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtcyI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPi4gV2Vic2l0ZSBhbmQgRkFRIAogICAgICAgICAgYWRkaXRpb25zIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYXBwcm9wcmlhdGUgV2luZSBLbm93bGVkZ2UgYmFzZSBkaXJlY3RvcnkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Vc2VuZXQtbmV3c2dyb3VwLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFVzZW5ldCBuZXdzZ3JvdXAgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBhbmQgaXQncyBjYWxsZWQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPi4gVGhlIG5ld3Nncm91cCBzZXJ2ZXMgYXMgYQogICAgICAgICAgcGxhY2UgZm9yIHVzZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGRpc2N1c3MgV2luZSwgYW5kIGZvciBtaW5vciAKICAgICAgICAgIGFubm91bmNlbWVudHMgZm9yIHRoZSBnZW5lcmFsIHB1YmxpYy4gTWFqb3IgYW5ub3VuY2VtZW50cyB3aWxsIGJlCiAgICAgICAgICBjcm9zcyBwb3N0ZWQgdG8gb3RoZXIgYXBwcm9wcmlhdGUgbmV3c2dyb3Vwcywgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5vcy5saW51eC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAub3MubGludXguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLndpbmRvd3MueC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAud2luZG93cy54LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC5lbXVsYXRvcnMuYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLmVtdWxhdG9ycy5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91ciBVc2VuZXQgc2l0ZSBkb2VzIG5vdCBjYXJyeSB0aGVzZSBuZXdzZ3JvdXBzLCBwbGVhc2UgdXJnZSAKICAgICAgICAgIHlvdXIgSVNQJ3Mgc3lzYWRtaW4gdG8gYWRkIGFuZC9vciB1cGxpbmsgdGhlbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVdvcmxkLVdpZGUtV2ViLXNpdGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgV29ybGQgV2lkZSBXZWIgc2l0ZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIEhRICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmciPmh0dHA6Ly93d3cud2luZWhxLm9yZzwvdWxpbms+KSBpcyB0aGUgb2ZmaWNpYWwgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbi1JUkMtY2hhbm5lbC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW4gSVJDIGNoYW5uZWwgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZS4gSXQncyBjaGFubmVsIDxmaWxlbmFtZT4jV2luZUhRPC9maWxlbmFtZT4gb24gCiAgICAgICAgICA8ZmlsZW5hbWU+aXJjLmZyZWVub2RlLm5ldDwvZmlsZW5hbWU+IHNlZSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vZnJlZW5vZGUubmV0Ij5odHRwOi8vZnJlZW5vZGUubmV0PC91bGluaz4pLgogICAgICAgICAgVXN1YWxseSBzZXZlcmFsIFdpbmUgZGV2ZWxvcGVycyBoYW5nIG91dCB0aGVyZSBqdXN0IHRvIGhlbHAgWU9VIDstKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktdGhpbmstSS1mb3VuZC1hLWJ1Zy1Ib3ctZG8tSS1yZXBvcnQtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB0aGluayBJJ3ZlIGZvdW5kIGEgYnVnLiBIb3cgZG8gSSByZXBvcnQgdGhpcyBidWcgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2dyYW1taW5nIHRlYW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBvdXIgb25saW5lIEJ1Z3ppbGxhIHN5c3RlbSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vYnVncy53aW5laHEub3JnLyI+aHR0cDovL2J1Z3Mud2luZWhxLm9yZy88L3VsaW5rPikuCiAgICAgICAgICBZb3Ugc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZSB2ZXJzaW9uIHRlc3RlZAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZG93cyBhcHBsaWNhdGlvbiBuYW1lLCBpbmNsdWRpbmcgdGhlIHZlcnNpb24sIGFuZCwgaWYKICAgICAgICAgICAgYXBwbGljYWJsZSwgYSBVUkwgdGhlIGFwcGxpY2F0aW9uIGNhbiBiZSBkb3dubG9hZGVkIGZyb20KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgYnVnCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSByZWxldmFudCBwYXJ0KHMpIG9mIHRoZSBvdXRwdXQgb2YgdGhlIFdpbmUgZGVidWdnZXIKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBzY3JlZW5zaG90IG9mIHRoZSB2aXN1YWwgcHJvYmxlbSwgaWYgYXBwbGljYWJsZQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVwb3J0aW5nIGJ1Z3MgcGxlYXNlIHNlZSB0aGUgCiAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmUtdXNlci9idWctcmVwb3J0aW5nLnNodG1sIj4KICAgICAgICAgSG93IHRvIHJlcG9ydCBhIGJ1ZzwvdWxpbms+IHNlY3Rpb24gb2YgdGhlIFdpbmUgVXNlcnMgR3VpZGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KIAogICAgPHFhbmRhZGl2IGlkPSJIZWxwaW5nLVdpbmUtb3ItYmVjb21pbmctYS1XaW5lLWRldmVsb3BlciI+CiAgICAgIDx0aXRsZT5IZWxwaW5nIFdpbmUgb3IgYmVjb21pbmcgYSBXaW5lIGRldmVsb3BlcjwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWJlY29tZS1hLVdpbmUtZGV2ZWxvcGVyIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBiZWNvbWUgYSBXaW5lIGRldmVsb3Blcj8gV2hhdCBkbyBJIG5lZWQgdG8ga25vdz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHByb2dyYW0gQywgdGhhdCdzIGEgZ29vZCBzdGFydC4gRG93bmxvYWQgdGhlIHNvdXJjZXMgdmlhCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzIj5DVlMsPC91bGluaz4pCiAgICAgICAgICBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdHMsIGxvb2sgYXJvdW5kIHRoZSBzb3VyY2UsIGFuZAogICAgICAgICAgcGF5IGF0dGVudGlvbiB0byB0aGUgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIG5ld3Nncm91cAogICAgICAgICAgYW5kIHRoZSBtYWlsaW5nIGxpc3RzICg8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPikuCiAgICAgICAgICBTZWUgaWYgdGhlcmUncyBhbnl0aGluZyB0aGF0IHlvdSB0aGluayB5b3UgY2FuIGZpeCBvciB3b3JrCiAgICAgICAgICBvbi4gWW91IHdvbid0IGhhdmUgbXVjaCB0cm91YmxlIGZpbmRpbmcgYXJlYXMgdGhhdCBuZWVkIHdvcmsKICAgICAgICAgIGluIFdpbmUgKGdyZXAgZm9yIEZJWE1FcyBpbiB0aGUgc291cmNlKS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktY29udHJpYnV0ZS10by10aGUtV2luZS1wcm9qZWN0Ij4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgaGVscCBjb250cmlidXRlIHRvIHRoZSBXaW5lIHByb2plY3QsIGFuZCBpbiB3aGF0IHdheShzKT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIGNvbnRyaWJ1dGUgcHJvZ3JhbW1pbmcgb3IgZG9jdW1lbnRhdGlvbiBza2lsbHMsIG9yIG1vbmV0YXJ5CiAgICAgICAgICBvciBlcXVpcG1lbnQgZG9uYXRpb25zLCB0byBhaWQgdGhlIFdpbmUgZGV2ZWxvcGVycyBpbiByZWFjaGluZyB0aGVpciAKICAgICAgICAgIGdvYWxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvciBhIGxpc3Qgb2YgaWRlYXMgb2YgaG93IHlvdSBjYW4gaGVscCwgcGxlYXNlIGNvbnN1bHQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY29udHJpYnV0aW5nIj4KICAgICAgICAgIFdpbmUgY29udHJpYiBwYWdlPC91bGluaz4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13YW50LXRvLWhlbHAtYmV0YS10ZXN0LVdpbmUiPgogICAgICAgIDxwYXJhPkkgd2FudCB0byBoZWxwIGJldGEgdGVzdCBXaW5lLiBIb3cgY2FuIEkgZG8gdGhpcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHN0aWxsIGNvbnNpc3RzIG9mIHNvbWUgQWxwaGEgY29kZSBhdCB0aGlzIHRpbWUuIEhvd2V2ZXIsIGFueW9uZQogICAgICAgICAgaXMgd2VsY29tZSB0byBkb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24sIGFuZCB0cnkgaXQgb3V0IGF0IGFueQogICAgICAgICAgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXdyb3RlLXNvbWUtY29kZS1JLXdvdWxkLWxpa2UtdG8tc3VibWl0Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSB3cml0dGVuIHNvbWUgY29kZSB0aGF0IEkgd291bGQgbGlrZSB0byBzdWJtaXQgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2plY3QuIEhvdyBkbyBJIGdvIGFib3V0IGRvaW5nIHRoaXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VibWl0dGluZyBhIHBhdGNoIGZvciBpbmNsdXNpb24gaW4gV2luZSBpcyBwcmV0dHkgc2ltcGxlLgogICAgICAgICAgQmFzaWNhbGx5IGFsbCB5b3UgaGF2ZSB0byBkbyBpcyBzZW5kIHRoZSBwYXRjaCB0byB0aGUKICAgICAgICAgIHdpbmUtcGF0Y2hlcyBtYWlsaW5nIGxpc3QgCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL21haWxtYW4vbGlzdGluZm8vd2luZS1wYXRjaGVzIj5odHRwOi8vd3d3LndpbmVocS5vcmcvbWFpbG1hbi9saXN0aW5mby93aW5lLXBhdGNoZXM8Lz4pLgogICAgICAgICAgU3RpbGwgdGhlcmUgYXJlIGEgY291cGxlIG9mIHJlY29tbWVuZGF0aW9ucyBhYm91dCB0aGUgcGF0Y2ggZm9ybWF0CiAgICAgICAgICBhbmQgYWxsIHNvIGl0J3MgYmVzdCB0byByZWFkIG91ciBwYWdlIGRlc2NyaWJpbmcgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL3NlbmRpbmdfcGF0Y2hlcyI+aG93IHRvIHN1Ym1pdAogICAgICAgICAgcGF0Y2hlczwvPi4gVGhpcyB3aWxsIGFsc28gZ2l2ZSB5b3UgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSB3aG9sZQogICAgICAgICAgcHJvY2VzcyBhbmQgaW4gcGFydGljdWxhciB0byB3aGF0IHdpbGwgaGFwcGVuIHRvIHlvdXIgcGF0Y2ggb25jZQogICAgICAgICAgc3VibWl0dGVkLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iRGV2ZWxvcGluZy1wcm9ncmFtcy11c2luZy1XaW5lLVdpbmVMaWIiPgogICAgICA8dGl0bGU+RGV2ZWxvcGluZyBwcm9ncmFtcyB1c2luZyBXaW5lL1dpbmVMaWI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS10by1wb3J0LVdpbjMyLXNvdXJjZXMtdG8tVW5peCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gcG9ydCBteSBXaW4zMiBzb3VyY2VzIHRvIFVuaXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBpcyB0aGUgaWRlYSBvZiBXaW5lbGliLiBSaWdodCBub3cgeW91IG1heSBzdGlsbCBoYXZlIHNvbWUgCiAgICAgICAgICBkaWZmaWN1bHRpZXMsIGJ1dCB0aGlzIGlzIGNoYW5naW5nIGFsbCB0aGUgdGltZS4gUmVhZCB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj5XaW5lbGliIFVzZXIncyBHdWlkZTwvdWxpbms+IGZvciBpbmZvLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtTUZDLXdvcmstd2l0aC1XaW5lLVdoYXQtZG8tSS1uZWVkLXRvLWRvIj4KICAgICAgICA8cGFyYT5XaWxsIE1GQyB3b3JrIHdpdGggV2luZT8gV2hhdCBkbyBJIG5lZWQgdG8gZG8/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBub3QgaW1wbGVtZW50aW5nIGFuIE1GQyByZXBsYWNlbWVudCBub3IgZG9lcyBpdCBpbnRlbmQgdG8uCiAgICAgICAgICBIb3dldmVyIGl0IGlzIHBvc3NpYmxlICh3aXRoIGEgbG90IG9mIHdvcmspIHRvIGNvbXBpbGUgdGhlIE1GQyBmcm9tCiAgICAgICAgICBzb3VyY2UgYW5kIHRodXMgcHJvZHVjZSBhbiA8ZmlsZW5hbWU+bWZjNDIuZGxsLnNvPC9maWxlbmFtZT4gbGlicmFyeS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQbGVhc2UgcmVmZXIgdG8gdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaG93IHRvIGRvIHRoaXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLXRoZXJlLWNvbW1lcmNpYWwtYXBwcy1wb3J0ZWQtdXNpbmctV2luZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcmUgdGhlcmUgYW55IGNvbW1lcmNpYWwgYXBwbGljYXRpb25zIHdoaWNoIGhhdmUgYmVlbiBwb3J0ZWQKICAgICAgICAgIHVzaW5nIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSBhcmUgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyBwb3J0ZWQgdXNpbmcgV2luZSBvciBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIDIwMDAgd2FzIHBvcnRlZCB0byBMaW51eCB1c2luZwogICAgICAgICAgICBXaW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBLeWxpeCwgdGhlIExpbnV4IHZlcnNpb24gb2YgRGVscGhpLCB3YXMgcG9ydGVkIHRvIExpbnV4IHVzaW5nCiAgICAgICAgICAgIFdpbmVsaWIuIFRoZSBJREUgYWN0dWFsbHkgdXNlcyBhIGNvbWJpbmF0aW9uIG9mIFFUIGFuZCBXaW5lbGliCiAgICAgICAgICAgIHdoaWNoIHdvdWxkIG5vdCBoYXZlIGJlZW4gcG9zc2libGUgdG8gYWNoaWV2ZSB1c2luZyBvbmx5IFdpbmUuCiAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgYXBwbGljYXRpb25zIGhvd2V2ZXIgZG8gbm90IGRlcGVuZCBvbiBXaW5lIGluCiAgICAgICAgICAgIGFueSB3YXkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIE11c2ljTWF0Y2ggSnVrZWJveCA1IGhhcyBhbHNvIGJlZW4KICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pdHdvcmxkLmNvbS9ubC9sbnhfZGVza3RvcC8wMTA0MjAwMS8iPnBvcnRlZDwvPgogICAgICAgICAgICB0byBMaW51eCB1c2luZyBXaW5lbGliLiBIb3dldmVyIG1vcmUgcmVjZW50IHZlcnNpb25zIGhhdmUgbm90LCBhbmQKICAgICAgICAgICAgdmVyc2lvbiA1IGlzIG5vIGxvbmdlciBhdmFpbGFibGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEFiaWxpdHkgT2ZmaWNlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHAiPmh0dHA6Ly93d3cuYWJpbGl0eS5jb20vbGludXgvYWJpbGl0eWxpbnV4LnBocDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBJQk0ncyBXZWJzcGhlcmUKICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3c3Yi5ib3VsZGVyLmlibS5jb20vZGwvc3d3cy9zd3dzZ2RkYi1wIj5odHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgb3RoZXIgaW1wb3J0YW50IGFwcGxpY2F0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBwb3J0ZWQuICh3ZSBhcmUKICAgICAgICAgIHNwZWFraW5nIG9mIHNldmVyYWwgdG9wIDUwMCBhcHBsaWNhdGlvbnMgaGVyZSkKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktZGV0ZWN0LVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBjYW4gSSBkZXRlY3QgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgcmVhbGx5IHNob3VsZG4ndCB3YW50IHRvIGRvIHRoaXMuIElmIHRoZXJlJ3MgYSBxdWlyayBpbiBXaW5lIAogICAgICAgICAgeW91IG5lZWQgdG8gd29yayBhcm91bmQsIGl0J3MgbXVjaCBiZXR0ZXIgdG8gZml4IGl0IGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAKICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJXaW5lLUhRLWlzc3VlcyI+CiAgICAgIDx0aXRsZT5XaW5lIEhRIGlzc3VlczwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoeS1hcmUtdGhlLW1haWxsaXN0cy1zZXQtdG8tcmVwbHktdG8tYXV0aG9yIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoeSBhcmUgdGhlIG1haWxpbmcgbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPgogICAgICAgICAgQW5kIHNlbGVjdCBbKFVuLSlTdWJzY3JpYmVdCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==