PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KCjxodG1sPgoKPGhlYWQ+CgogICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgoKICAgPG1ldGEgbmFtZT0iQXV0aG9yIiBjb250ZW50PSJFY2xpcHNlIFByb2plY3QgUE1DIj4KCiAgIDxtZXRhIG5hbWU9IkdFTkVSQVRPUiIgY29udGVudD0iTWljcm9zb2Z0IEZyb250UGFnZSA0LjAiPgoKICAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KCiAgIDx0aXRsZT5FY2xpcHNlIFByb2plY3QgMi4xIFBsYW4gKEZpbmFsKTwvdGl0bGU+CgogICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2RlZmF1bHRfc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8L2hlYWQ+Cgo8Ym9keT4KCgoKPGgxPgoKRWNsaXBzZSBQcm9qZWN0PGJyPgogIDIuMSBQbGFuIChGaW5hbCk8L2gxPgoKPHA+TGFzdCByZXZpc2VkIE1vbmRheSwgTWFyY2ggMTcsIDIwMDMgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogIG1hcmtzIGludGVyZXN0aW5nIGNoYW5nZXMgc2luY2UgdGhlIDxhIGhyZWY9ImVjbGlwc2VfcHJvamVjdF9wbGFuXzJfMV8yMDAzMDIyMS5odG1sIj5wcmV2aW91cyAKICBkcmFmdCBvZiBGZWIuIDIxLCAyMDAzPC9hPik8YnI+Cjxicj4KPGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7IFBsZWFzZSBzZW5kIGNvbW1lbnRzIGFib3V0IHRoaXMgZHJhZnQgcGxhbiB0byB0aGUgPC9pPjxhIGhyZWY9Im1haWx0bzplY2xpcHNlLWRldkBlY2xpcHNlLm9yZyI+ZWNsaXBzZS1kZXZAZWNsaXBzZS5vcmc8L2E+CjxpPmRldmVsb3BlciBtYWlsaW5nIGxpc3QuPC9pPiA8L3A+Cgo8cD5UaGlzIGRvY3VtZW50IGxheXMgb3V0IHRoZSBmZWF0dXJlIGFuZCBBUEkgc2V0IGZvciB0aGUgbmV4dCBmZWF0dXJlIHJlbGVhc2UgCiAgb2YgRWNsaXBzZSwgZGVzaWduYXRlZCByZWxlYXNlIDIuMS4gCjxwPlBsYW5zIGRvIG5vdCBtYXRlcmlhbGl6ZSBvdXQgb2Ygbm93aGVyZSwgbm9yIGFyZSB0aGV5IGVudGlyZWx5IHN0YXRpYy4gVG8gbWFrZSAKICB0aGUgcGxhbm5pbmcgcHJvY2VzcyBtb3JlIHRyYW5zcGFyZW50IGFuZCBvcGVuIHRvIHRoZSBFY2xpcHNlIGNvbW11bml0eSwgd2UgCiAgKHRoZSBFY2xpcHNlIFBNQykgcG9zdGVkIHRoZSBwbGFuIGluIGFuIGVtYnJ5b25pYyBmb3JtIGFuZCBhcmUgcmV2aXNpbmcgCiAgaXQgdGhyb3VnaG91dCB0aGUgcmVsZWFzZSBjeWNsZS4KPHA+VGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBsYW4KZGVhbHMgd2l0aCB0aGUgaW1wb3J0YW50IG1hdHRlcnMgb2YgcmVsZWFzZSBkZWxpdmVyYWJsZXMsIHJlbGVhc2UgbWlsZXN0b25lcywKdGFyZ2V0IG9wZXJhdGluZyBlbnZpcm9ubWVudHMsIGFuZCByZWxlYXNlLXRvLXJlbGVhc2UgY29tcGF0aWJpbGl0eS4gVGhlc2UgYXJlCmFsbCB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGNsZWFyIGZvciBhbnkgcmVsZWFzZSwgZXZlbiBpZiBubyBmZWF0dXJlcyB3ZXJlIHRvCmNoYW5nZS4mbmJzcDs8cD5UaGUgcmVtYWluZGVyIG9mIHRoZSBwbGFuIGNvbnNpc3RzIG9mIHBsYW4gaXRlbXMgZm9yIHRoZSB2YXJpb3VzCkVjbGlwc2Ugc3VicHJvamVjdHMuIEVhY2ggcGxhbiBpdGVtIGNvdmVycyBhIGZlYXR1cmUgb3IgQVBJIHRoYXQgaXMgdG8gYmUgYWRkZWQKdG8gRWNsaXBzZSwgb3Igc29tZSBhc3BlY3Qgb2YgRWNsaXBzZSB0aGF0IGlzIHRvIGJlIGltcHJvdmVkLiBFYWNoIHBsYW4gaXRlbSBoYXMKYSB0aXRsZSBhbmQgYSBjb25jaXNlIHN1bW1hcnkgKHVzdWFsbHkgYSBzaW5nbGUgcGFyYWdyYXBoKSB0aGF0IGV4cGxhaW5zIHRoZQp3b3JrIGl0ZW0gYXQgYSBzdWl0YWJseSBoaWdoIGVub3VnaCBsZXZlbCBzbyB0aGF0IGV2ZXJ5b25lIGNhbiByZWFkaWx5CnVuZGVyc3RhbmQgd2hhdCB0aGUgd29yayBpdGVtIGlzIHdpdGhvdXQgaGF2aW5nIHRvIHVuZGVyc3RhbmQgdGhlIG5pdHR5LWdyaXR0eQpkZXRhaWxzICh3aGljaCBjYW4gYmUgaGFzaGVkIG91dCBlbHNld2hlcmUpLiZuYnNwOwo8cD5Ob3QgYWxsIHBsYW4gaXRlbXMgcmVwcmVzZW50IHRoZSBzYW1lIGFtb3VudCBvZiB3b3JrOyBzb21lIG1heSBiZSBxdWl0ZSBsYXJnZSwgCiAgb3RoZXJzLCBxdWl0ZSBzbWFsbC4gU29tZSBwbGFuIGl0ZW1zIG1heSBpbnZvbHZlIHdvcmsgdGhhdCBpcyBsb2NhbGl6ZWQgdG8gYSAKICBzaW5nbGUgUGxhdGZvcm0gY29tcG9uZW50OyBvdGhlcnMgbWF5IGludm9sdmUgY29vcmRpbmF0ZWQgY2hhbmdlcyB0byBzZXZlcmFsIAogIGNvbXBvbmVudHM7IG90aGVyIG1heSBwZXJ2YWRlIHRoZSBlbnRpcmUgUGxhdGZvcm0uCjxwPldpdGggdGhlIHByZXZpb3VzIHJlbGVhc2UgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LCB0aGlzIGlzIHRoZSBwbGFuIGZvciBob3cgd2UgCiAgd2lsbCBlbmhhbmNlIGFuZCBpbXByb3ZlIGl0LiBGaXhpbmcgYnVncywgaW1wcm92aW5nIHRlc3QgY292ZXJhZ2UsIGRvY3VtZW50YXRpb24sIAogIGV4YW1wbGVzLCBldGMuIGFyZSBjb25zaWRlcmVkIHJvdXRpbmUgb25nb2luZyBtYWludGVuYW5jZSBhY3Rpdml0aWVzIGFuZCBhcmUgCiAgbm90IGluY2x1ZGVkIGluIHRoaXMgcGxhbiB1bmxlc3MgdGhleSB3b3VsZCBhbHNvIGludm9sdmUgYSBzaWduaWZpY2FudCBjaGFuZ2UgCiAgdG8gdGhlIEFQSSBvciBmZWF0dXJlIHNldCwgb3IgaW52b2x2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiB3b3JrLiBBbGwgaW50ZXJlc3RpbmcgCiAgZmVhdHVyZSB3b3JrIGlzIGFjY291bnRlZCBmb3IgaW4gdGhpcyBwbGFuLgo8cD5UaGUgY3VycmVudCBzdGF0dXMgb2YgZWFjaCBwbGFuIGl0ZW0gaXMKbm90ZWQ6Cjx1bD4KICA8bGk+PGI+UHJvcG9zZWQ8L2I+IHBsYW4gaXRlbSAtIEEgcHJvcG9zYWwgZm9yIGFuIGFzcGVjdCB0byB3b3JrIG9uIGZvciB0aGUKICAgIHJlbGVhc2UuIEFmdGVyIGR1ZSBjb25zaWRlcmF0aW9uLCBhIHByb3Bvc2FsIHdpbGwgZWl0aGVyIGJlIGNvbW1pdHRlZCwKICAgIHJlamVjdGVkLCBvciBkZWZlcnJlZC48L2xpPgogIDxsaT48Yj5Db21taXR0ZWQ8L2I+IHBsYW4gaXRlbSAtIEEgY29tbWl0dGVkIHBsYW4gaXRlbSBpcyBvbmUgdGhhdCB3ZSBoYXZlIGRlY2lkZWQgCiAgICB0byBhZGRyZXNzIGZvciB0aGUgcmVsZWFzZS48L2xpPgogIDxsaT48Yj5EZWZlcnJlZDwvYj4gcGxhbiBpdGVtIC0gQSByZWFzb25hYmxlIHByb3Bvc2FsIHRoYXQgZGlkIG5vdCBtYWtlIGl0IGluIAogICAgdG8gdGhpcyByZWxlYXNlIGZvciBzb21lIHJlYXNvbiBpcyBtYXJrZWQgYXMgZGVmZXJyZWQgd2l0aCBhIGJyaWVmIG5vdGUgYXMgCiAgICB0byB3aHkgdGhleSB3ZXJlIGRlZmVycmVkLiBEZWZlcnJlZCBwbGFuIGl0ZW1zIG1heSByZXN1cmZhY2UgYXMgcHJvcG9zZWQgcGxhbiAKICAgIGl0ZW1zIGF0IGEgbGF0ZXIgcG9pbnQuPC9saT4KICA8bGk+PGI+UmVqZWN0ZWQ8L2I+IHBsYW4gaXRlbSAtIFBsYW4gaXRlbXMgdGhhdCB3ZXJlIHByb3Bvc2VkIGJ1dCBqdWRnZWQgdW53b3JrYWJsZSAKICAgIGFyZSBtYXJrZWQgYXMgcmVqZWN0ZWQgcGxhbiBpdGVtcywgd2l0aCBhbiBhY2NvbXBhbnlpbmcgc3VtbWFyeSBvZiB3aHkgdGhleSAKICAgIHdlcmUgZGlzbWlzc2VkLiBLZWVwaW5nIHRyYWNrIG9mIHJlamVjdGVkIGl0ZW1zIGF2b2lkcyByZXBlYXRpbmcgdGhlIGRpc2N1c3Npb24uPC9saT4KPC91bD4KPGgyPlJlbGVhc2UgZGVsaXZlcmFibGVzPC9oMj4KCjxwPlRoZSByZWxlYXNlIGRlbGl2ZXJhYmxlcyBoYXZlIHRoZSBzYW1lIGZvcm0gYXMgcHJldmlvdXMgcmVsZWFzZXMsIG5hbWVseToKCjx1bD4KCiAgPGxpPlNvdXJjZSBjb2RlIHJlbGVhc2UgZm9yIEVjbGlwc2UgUHJvamVjdCwgYXZhaWxhYmxlIGFzIHZlcnNpb25zIHRhZ2dlZCAmcXVvdDtSMl8xJnF1b3Q7IAogICAgaW4gdGhlIEVjbGlwc2UgUHJvamVjdCA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvIj5DVlMgcmVwb3NpdG9yeTwvYT4uPC9saT4KCiAgPGxpPkVjbGlwc2UgUHJvamVjdCBTREsgKGluY2x1ZGVzIFBsYXRmb3JtLCBKRFQsIGFuZCBQREUgc291cmNlIHppcHMpCgogICAgKGRvd25sb2FkYWJsZSkuPC9saT4KCiAgPGxpPkVjbGlwc2UgUGxhdGZvcm0gcnVudGltZSBiaW5hcnkgZGlzdHJpYnV0aW9uIChkb3dubG9hZGFibGUpLjwvbGk+CgogIDxsaT5KRFQgcnVudGltZSBiaW5hcnkgZGlzdHJpYnV0aW9uIChkb3dubG9hZGFibGUpLjwvbGk+CgogIDxsaT5FY2xpcHNlIFNESyBFeGFtcGxlcyAoZG93bmxvYWRhYmxlKS48L2xpPgoKPC91bD4KCjxoMj48YSBuYW1lPSJNaWxlc3RvbmVzIj48L2E+UmVsZWFzZSBtaWxlc3RvbmVzPC9oMj4KCjxwPlJlbGVhc2UgbWlsZXN0b25lIG9jY3VycmluZyBhdCByb3VnaGx5IG1vbnRobHkgaW50ZXJ2YWxzIGV4aXN0IHRvIGZhY2lsaXRhdGUKY29hcnNlLWdyYWluZWQgcGxhbm5pbmcgYW5kIHN0YWdpbmcuIFRoZSBtaWxlc3RvbmVzIGZvciB0aGlzIHJlbGVhc2UgYXJlOjwvcD4KCjx1bD4KICA8bGk+U2VwdGVtYmVyIDIwLCAyMDAyIC0gTWlsZXN0b25lIDEgLSAoMi4xIE0xKSAtIHN0YWJsZSBidWlsZCByZWZsZWN0aW5nIHByb2dyZXNzPC9saT4KICA8bGk+T2N0b2JlciAxOCwgMjAwMiAtIE1pbGVzdG9uZSAyIC0gKDIuMSBNMikgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZyBwcm9ncmVzczwvbGk+CiAgPGxpPk5vdmVtYmVyIDE1LCAyMDAyIC0gTWlsZXN0b25lIDMgLSAoMi4xIE0zKSAtIHN0YWJsZSBidWlsZCByZWZsZWN0aW5nCiAgICBwcm9ncmVzczwvbGk+CiAgPGxpPkRlY2VtYmVyIDEzLCAyMDAyIFtkZWxheWVkIHRvIERlY2VtYmVyIDE4XSAtIE1pbGVzdG9uZSA0IC0gKDIuMSBNNCkgLSBzdGFibGUgCiAgICBidWlsZCByZWZsZWN0aW5nIHByb2dyZXNzPC9saT4KICA8bGk+RmVicnVhcnkgNywmbmJzcDsyMDAzIC0gTWlsZXN0b25lIDUgLSAoMi4xIE01KSAtIHN0YWJsZSBidWlsZCAtIGZlYXR1cmUgCiAgICBjb21wbGV0ZSAtIGRldmVsb3BtZW50IGZyZWV6ZTwvbGk+CjwvdWw+CjxwPkxvY2sgZG93biBhbmQgdGVzdGluZyB0aGVuIGJlZ2lucyB3aXRoIE01LCBhbmQgcHJvZ3Jlc3MgdGhyb3VnaCBhIHNlcmllcyBvZiAKICB0ZXN0LWZpeCBwYXNzZXMgYWdhaW5zdCBjYW5kaWRhdGVzIHJlbGVhc2VzLiBSZWxlYXNlIGNhbmRpZGF0ZSBidWlsZHMgYXJlIHBsYW5uZWQgCiAgYXMgZm9sbG93cyAoTTUgaXMgcmVsZWFzZSBjYW5kaWRhdGUgMCk6PC9wPgoKPHVsPgogIDxsaT5GcmlkYXkgRmVicnVhcnkgMjEsIDIwMDMgLSBSZWxlYXNlIENhbmRpZGF0ZSAxIC0gKDIuMSBSQzEpPC9saT4KICA8bGk+RnJpZGF5IE1hcmNoIDcsIDIwMDMgLSBSZWxlYXNlIENhbmRpZGF0ZSAyIC0gKDIuMSBSQzIpPC9saT4KICA8bGk+RnJpZGF5IE1hcmNoIDE0LCAyMDAzIC0gUmVsZWFzZSBDYW5kaWRhdGUgMyAtICgyLjEgUkMzKTwvbGk+CjwvdWw+Cgo8cD4gRGVwZW5kaW5nIG9uIHRoZSBjaXJjdW1zdGFuY2VzLCB3ZSBtYXkgYWRkIGFkZGl0aW9uYWwgcmVsZWFzZSBjYW5kaWRhdGUgYnVpbGRzIAogIG9yIGZpbmUtdHVuZSB0aGUgc2NoZWR1bGUuIFRoZSAyLjEgcmVsZWFzZSBpcyB0YXJnZXRlZCBmb3IgRnJpZGF5IE1hcmNoIDI4LCAKICAyMDAzLiBTZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvJTdFY2hlY2tvdXQlN0UvZWNsaXBzZS1wcm9qZWN0LWhvbWUvcGxhbnMvZnJlZXplX3BsYW5fMl8xLmh0bWwiPkVjbGlwc2UgCiAgMi4xIEVuZGdhbWUgUGxhbjwvYT4gZm9yIGZ1cnRoZXIgZGV0YWlscy4gQWxsIHJlbGVhc2UgZGVsaXZlcmFibGVzIHdpbGwgYmUgYXZhaWxhYmxlIAogIGZvciBkb3dubG9hZCBhcyBzb29uIGFzIHRoZSByZWxlYXNlIGhhcyBiZWVuIHRlc3RlZCBhbmQgdmFsaWRhdGVkIGluIHRoZSB0YXJnZXQgCiAgb3BlcmF0aW5nIGNvbmZpZ3VyYXRpb25zIGxpc3RlZCBiZWxvdy48L3A+CjxoMj48YSBuYW1lPSJUYXJnZXRPcGVyYXRpbmdFbnZpcm9ubWVudHMiPjwvYT5UYXJnZXQgT3BlcmF0aW5nIEVudmlyb25tZW50czwvaDI+CgoKCjxwPkluIG9yZGVyIHRvIHJlbWFpbiBjdXJyZW50LCBlYWNoIEVjbGlwc2UgcmVsZWFzZSB0YXJnZXRzIHJlYXNvbmFibHkgY3VycmVudAp2ZXJzaW9ucyBvZiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLjwvcD4KCjxwPk1vc3Qgb2YgdGhlIEVjbGlwc2UgU0RLIGlzICZxdW90O3B1cmUmcXVvdDsgSmF2YSZ0cmFkZTsgY29kZSBhbmQgaGFzIG5vIGRpcmVjdApkZXBlbmRlbmNlIG9uIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uIFRoZSBjaGllZiBkZXBlbmRlbmNlIGlzIHRoZXJlZm9yZQpvbiB0aGUgSmF2YSAyIFBsYXRmb3JtIGl0c2VsZi4gVGhlIDIuMSByZWxlYXNlIG9mIHRoZSBFY2xpcHNlIFByb2plY3QgaXMgd3JpdHRlbgphbmQgY29tcGlsZWQgYWdhaW5zdCB2ZXJzaW9uIDEuMyBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIEFQSXMsIGFuZCB0YXJnZXRlZCB0bwpydW4gb24gZWl0aGVyIHZlcnNpb24gMS4zIG9yIDEuNCBvZiB0aGUgSmF2YSAyIFJ1bnRpbWUgRW52aXJvbm1lbnQsIFN0YW5kYXJkCkVkaXRpb24uPC9wPgo8cD5FY2xpcHNlIFNESyAyLjEgd2lsbCBiZSB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBvbiB0aGUgZm9sbG93aW5nIEphdmEgMgpQbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbnM6PC9wPgo8dGFibGUgd2lkdGg9IjkxJSIgYm9yZGVyPSIxIj4KICA8dGJvZHk+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMjElIj48Yj5PcGVyYXRpbmcgc3lzdGVtPC9iPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Yj5Qcm9jZXNzb3IgYXJjaGl0ZWN0dXJlPC9iPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj48Yj5KYXZhIDIgUGxhdGZvcm1zPC9iPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSIgcm93U3Bhbj0iNCI+TWljcm9zb2Z0rjxicj4KICAgICAgICBXaW5kb3dzrjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTglIiByb3dTcGFuPSI0Ij5JbnRlbCB4ODY8L3RkPgogICAgICA8dGQgd2lkdGg9IjczJSI+IFN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuMy4xXzA2IGZvciAKICAgICAgICBNaWNyb3NvZnQgV2luZG93czwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjczJSI+IFN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuNC4xXzAxIGZvciAKICAgICAgICBNaWNyb3NvZnQgV2luZG93czwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAKICAgIDx0ZCB3aWR0aD0iNzMlIj4gSUJNIERldmVsb3BlciBLaXQgZm9yIFdpbmRvd3MsIEphdmEgMiBUZWNobm9sb2d5IEVkaXRpb24sIAogICAgICB2ZXJzaW9uIDEuMy4xIFNSLTIgKHBlbmRpbmcgZml4IHRvIFZNIGRlZmVjdCB1bmNvdmVyZWQgaW4gU1ItMyk8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSI3MyUiPiBJQk0gMzItYml0IFNESyBmb3IgV2luZG93cywgSmF2YSAyIFRlY2hub2xvZ3kgRWRpdGlvbiwgCiAgICAgICAgdmVyc2lvbiAxLjQuMDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSIgcm93U3Bhbj0iMyI+TGludXg8L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSIgcm93U3Bhbj0iMyI+SW50ZWwgeDg2PC90ZD4KICAgICAgPHRkIHdpZHRoPSI3MyUiPiBTdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjMuMV8wNiBmb3IgCiAgICAgICAgTGludXggeDg2PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gU3VuIEphdmEgMiBTREssIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS40LjFfMDEgZm9yIAogICAgICAgIExpbnV4IHg4NjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAKICAgIDx0ZCB3aWR0aD0iNzMlIj4gSUJNIERldmVsb3BlciBLaXQgZm9yIExpbnV4LCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCB2ZXJzaW9uIAogICAgICAxLjMuMSBTUi0yIChwZW5kaW5nIGZpeCB0byBWTSBkZWZlY3QgdW5jb3ZlcmVkIGluIFNSLTMpPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMjElIiByb3dTcGFuPSIyIj5TdW4gU29sYXJpczwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTglIiByb3dTcGFuPSIyIj5TUEFSQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gU3VuIEphdmEgMiBTREssIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS4zLjFfMDYgZm9yIAogICAgICAgIFNvbGFyaXMgU1BBUkM8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSI3MyUiPiBTdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjQuMV8wMSBmb3IgCiAgICAgICAgU29sYXJpcyBTUEFSQzwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSI+SFAgSFAtVVg8L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSI+aHA5MDAwIFBBLVJJU0M8L3RkPgogICAgICA8dGQgd2lkdGg9IjczJSI+PHNwYW4gY2xhc3M9ImhlYWRlciI+SFAtVVggU0RLIGZvciB0aGUgSmF2YSAyIHBsYXRmb3JtLAogICAgICAgIHZlcnNpb24gMS4zLjEgZm9yIGhwOTAwMCBQQS1SSVNDPC9zcGFuPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSI+SUJNriBBSVg8L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSI+UG93ZXJQQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gSUJNIERldmVsb3BlciBLaXQgZm9yIEFJWCwgSmF2YSAyIFRlY2hub2xvZ3kgRWRpdGlvbiwgdmVyc2lvbiAKICAgICAgICAxLjMuMTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjIxJSIgcm93U3Bhbj0iMiI+QXBwbGWuIE1hY64gT1M8L3RkPgogICAgICA8dGQgd2lkdGg9IjE4JSIgcm93U3Bhbj0iMiI+UG93ZXJQQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5KYXZhIDIgUGxhdGZvcm0sIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS4zLjEgZm9yIE1hYyAKICAgICAgICBPUyBYPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5KYXZhIDIgUGxhdGZvcm0sIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS40LjEgZm9yIE1hYyAKICAgICAgICBPUyBYPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCB3aWR0aD0iMjElIj48c3BhbiBjbGFzcz0idGl0bGUiPlFOWDwvc3Bhbj6uPHNwYW4gY2xhc3M9InRpdGxlIj4gTmV1dHJpbm88L3NwYW4+rjxzcGFuIGNsYXNzPSJ0aXRsZSI+IAogICAgICAgIFJUT1M8L3NwYW4+PC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOCUiPkludGVsIHg4NjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5JQk0gSjkgVk0gZm9yIFFOWCwgdmVyc2lvbiAyLjA8L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgo8cD48c3BhbiBjbGFzcz0iaGVhZGVyIj5UaGUgZm9sbG93aW5nIHRhYmxlIGRlc2NyaWJlcyB0aGUgY29tYmluYXRpb25zIG9mCm9wZXJhdGluZyBzeXN0ZW0gYW5kIEphdmEgMiBQbGF0Zm9ybSB1c2VkIHdoZW4gdGVzdGluZyB0aGUgRWNsaXBzZSBTREsKY29uZmlndXJhdGlvbnMuIFRoZSBzdGF0dXMgY29sdW1uIGluZGljYXRlcyB0aGUgbGV2ZWwgb2YgdGVzdGluZzoKJnF1b3Q7UHJpbWFyeSZxdW90OyBtZWFucyBhIGZ1bGwgdGVzdGVkIGNvbmZpZ3VyYXRpb247ICZxdW90Ozwvc3Bhbj5TZWNvbmRhcnkmcXVvdDsKbWVhbnMgYSBjb25maWd1cmF0aW9uIHdoaWNoIGlzIG9ubHkgbGlnaHRseSB0ZXN0ZWQ7ICZxdW90O1VudGVzdGVkJnF1b3Q7IG1lYW5zIGEKY29uZmlndXJhdGlvbiB0aGF0IGhhcyByZWNlaXZlZCBubyB0ZXN0aW5nLCBidXQgd2hpY2ggc2hvdWxkIHdvcmsuPC9wPgo8dGFibGUgd2lkdGg9IjkxJSIgYm9yZGVyPSIxIiBoZWlnaHQ9IjQxNSI+CiAgPHRib2R5PgogICAgPHRyPiAKICAgICAgPHRkIHdpZHRoPSIxMSUiIGhlaWdodD0iMzIiPjxiPldpbmRvdyBzeXN0ZW08L2I+PC90ZD4KICAgICAgPHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMzIiPjxiPkphdmEgMiBQbGF0Zm9ybTxicj4KICAgICAgICAoc2VlIGFib3ZlIHRhYmxlKTwvYj48L3RkPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIzMiI+PGI+T3BlcmF0aW5nIEVudmlyb25tZW50PC9iPjwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjMyIj48Yj5UZXN0aW5nIFN0YXR1czwvYj48L3RkPgogICAgPC90cj4KICAgIDx0cj4gCiAgICAgIDx0ZCB3aWR0aD0iMTElIiByb3dTcGFuPSI1IiBoZWlnaHQ9IjEwNCI+V2luMzI8L3RkPgogICAgICA8dGQgd2lkdGg9IjI4JSIgcm93U3Bhbj0iNSIgaGVpZ2h0PSIxMDQiPldpbmRvd3Mgb24gSW50ZWwgeDg2PC90ZD4KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPldpbmRvd3MgWFA8L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPiAKICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPldpbmRvd3MgMjAwMDwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+IAogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+V2luZG93cyBNRTwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5TZWNvbmRhcnk8L3RkPgogICAgPC90cj4KICAgIDx0cj4gCiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5XaW5kb3dzIDk4U0U8L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+U2Vjb25kYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+IAogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+V2luZG93cyBOVDwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5TZWNvbmRhcnk8L3RkPgogICAgPC90cj4KICAgIDx0cj4gCiAgICAgIDx0ZCB3aWR0aD0iMTElIiByb3dTcGFuPSI2IiBoZWlnaHQ9IjE1MiI+TW90aWY8L3RkPgogICAgICA8dGQgd2lkdGg9IjI4JSIgcm93U3Bhbj0iMyIgaGVpZ2h0PSI4NiI+Jm5ic3A7IDxwPkxpbnV4IG9uIEludGVsIHg4NjwvcD4KICAgICAgICA8cD4mbmJzcDs8L3A+PC90ZD4KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMjUiPlJlZEhhdCBMaW51eCA4LjAgeDg2PC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMjUiPlByaW1hcnk8L3RkPgogICAgPC90cj4KICAgIDx0cj4gCiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjI1Ij5TdVNFIExpbnV4IDguMSB4ODY8L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIyNSI+UHJpbWFyeTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPiAKICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMjQiPk90aGVyIExpbnV4OyBrZXJuZWwgdmVyc2lvbiAyLjQuNywgYW5kIFhGcmVlODYgCiAgICAgICAgdmVyc2lvbiA0LjEuMDwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjI0Ij5VbnRlc3RlZDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPiAKICAgICAgPHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMTYiPlNvbGFyaXMgb24gU1BBUkMmbmJzcDs8L3RkPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+U3VuIFNvbGFyaXMgOCBTUEFSQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+IAogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxNiI+SFAtVVggb24gaHA5MDAwIFBBLVJJU0M8L3RkPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+SFAtVVggMTFpIGhwOTAwMDwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+IAogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxNiI+QUlYIG9uIFBvd2VyUEM8L3RkPgogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+SUJNIEFJWCA1LjEgb24gUG93ZXJQQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+IAogICAgICA8dGQgd2lkdGg9IjExJSIgcm93U3Bhbj0iNCIgaGVpZ2h0PSI4MSI+R1RLPC90ZD4KICAgICAgPHRkIHdpZHRoPSIyOCUiIHJvd1NwYW49IjQiIGhlaWdodD0iODEiPkxpbnV4IG9uIEludGVsIHg4NjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPiAKICAgICAgPHRkIGhlaWdodD0iMTUiPlJlZEhhdCBMaW51eCA4LjAgeDg2IChHVEsgMi4yIHJlcXVpcmVkIGZvciBEQkNTKTwvdGQ+CiAgICAgIDx0ZCBoZWlnaHQ9IjE1Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+IAogICAgICAKICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPlN1U0UgTGludXggOC4xIHg4NiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICAgICAgTGF0aW4tMSBvbmx5KTwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+IAogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+T3RoZXIgTGludXg7IEdUSyAyLjAuNiAoR1RLIDIuMiByZXF1aXJlZCBmb3IgREJDUyk8L3RkPgogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+VW50ZXN0ZWQ8L3RkPgogICAgPC90cj4KICAgIDx0cj4gCiAgICAgIDx0ZCB3aWR0aD0iMTElIiBoZWlnaHQ9IjE2Ij5DYXJib248L3RkPgogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxNiI+TWFjIE9TIFggb24gUG93ZXJQQzwvdGQ+CiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5NYWMgT1MgWCAxMC4yPC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMTYiPjxpPkVhcmx5IGFjY2VzczwvaT48L3RkPgogICAgPC90cj4KICAgIDx0cj4gCiAgICAgIDx0ZCB3aWR0aD0iMTElIiBoZWlnaHQ9IjE2Ij5QaG90b26uPC90ZD4KICAgICAgPHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMTYiPklCTSBKOSBWTSBmb3IgUU5YPC90ZD4KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPlFOWCBOZXV0cmlubyBSVE9TIDYuMi4xJm5ic3A7PC90ZD4KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMTYiPlByaW1hcnk8L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgo8aDQ+SW50ZXJuYXRpb25hbGl6YXRpb248L2g0Pgo8cD5UaGUgRWNsaXBzZSBQbGF0Zm9ybSBpcyBkZXNpZ25lZCBhcyB0aGUgYmFzaXMgZm9yIGludGVybmF0aW9uYWxpemVkIHByb2R1Y3RzLgpUaGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgcHJvdmlkZWQgYnkgdGhlIEVjbGlwc2UgU0RLIGNvbXBvbmVudHMsIGluY2x1ZGluZwpkaWFsb2dzIGFuZCBlcnJvciBtZXNzYWdlcywgYXJlIGV4dGVybmFsaXplZC4gVGhlIEVuZ2xpc2ggc3RyaW5ncyBhcmUgcHJvdmlkZWQKYXMgdGhlIGRlZmF1bHQgcmVzb3VyY2UgYnVuZGxlcy48L3A+CjxwPkxhdGluLTEgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiBhbGwgb2YgdGhlIGFib3ZlIG9wZXJhdGluZyAKICBlbnZpcm9ubWVudHM7IERCQ1MgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiB0aGUgV2luZG93cywgCiAgR1RLLCBhbmQgTW90aWYgd2luZG93IHN5c3RlbXM7IEJJREkgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyAKICBvbmx5IG9uIFdpbmRvd3Mgb3BlcmF0aW5nIGVudmlyb25tZW50cy4KPHA+VGhlIEVjbGlwc2UgU0RLIHN1cHBvcnRzIEdCIDE4MDMwLCB0aGUgbmV3IENoaW5lc2UgY29kZSBwYWdlIHN0YW5kYXJkLCBvbiBXaW5kb3dzIAogIFhQIGFuZCAyMDAwLCBhbmQgTGludXguIAogIE5vdGUsIGhvd2V2ZXIsIHRoYXQgR0IgMTgwMzAgYWxzbyByZXF1aXJlcyBsb2NhbGUgYW5kIGNoYXJhY3RlciBlbmNvZGluZyBzdXBwb3J0IAogIGZyb20gdGhlIEphdmEgMiBSdW50aW1lIEVudmlyb25tZW50OyB0aGlzIHN1cHBvcnQgaXMgc3RhbmRhcmQgaW4gdmVyc2lvbiAxLjQsIAogIGFuZCBhbHNvIGF2YWlsYWJsZSBpbiBzb21lIDEuMyBKUkVzLgo8cD4gR2VybWFuIGFuZCBKYXBhbmVzZSBsb2NhbGVzIGhhdmUgYmVlbiB0ZXN0ZWQuIAo8aDQ+QklESSBzdXBwb3J0PC9oND4KPHA+VGhlIEVjbGlwc2UgU0RLIGlzIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGFyZ2V0ZWQgYXQgdGVjaG5pY2FsCnByb2Zlc3Npb25hbHMgLSBub3QgYW4gZW5kIHVzZXIgYXBwbGljYXRpb24uIEhvd2V2ZXIsIHRoZSBFY2xpcHNlIFNESyB0b29scyB3aWxsCnBlcm1pdCB0ZWNobmljYWwgcHJvZmVzc2lvbmFscyB3aG8gYXJlIHdvcmtpbmcgaW4gRW5nbGlzaCB0byBidWlsZCBIZWJyZXcvQXJhYmljCmVuZCB1c2VyIEphdmEgcHJvZ3JhbXMgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgbm90IGJhc2VkIG9uIHRoZSBFY2xpcHNlIFNESy4gVGhlCkJJREkgc3VwcG9ydCBpbiB0aGUgRWNsaXBzZSBTREsgYWxsb3dzIGEgSmF2YSBwcm9ncmFtbWVyIHRvIHdvcmsgd2l0aCBCSURJCnN0cmluZ3MsIGNvZGUgY29tbWVudHMsIGV0Yy4gYnV0IHRoZSBFY2xpcHNlIFNESyBpdHNlbGYgaXMgbm90IGRlc2lnbmVkIHRvIGJlCmxvY2FsaXplZCBmb3IgQklESSBsb2NhbGVzIGFuZCBpdHMgd2lkZ2V0IG9yaWVudGF0aW9uIGNhbiBub3QgYmUgY2hhbmdlZC48L3A+CjxwPjxpPklNUE9SVEFOVDogVGhlIGFib3ZlIEJJREkgc3VwcG9ydCBpcyBhdmFpbGFibGUgb25seSBvbiBXaW5kb3dzIHBsYXRmb3Jtcy48L2k+PC9wPgoKPGgyPgoKQ29tcGF0aWJpbGl0eSB3aXRoIFByZXZpb3VzIFJlbGVhc2VzPC9oMj4KCjxwPgoKSXQgaXMgYSBnaXZlbiB0aGF0IEVjbGlwc2UgMi4xIHdpbGwgYmUgdXB3YXJkcyBjb21wYXRpYmxlIHdpdGggRWNsaXBzZSAyLjAuIEFuIGluY29tcGF0aWJsZSBicmVhayB3aXRoIHRoZSBwYXN0IHRoaXMgZWFybHkgb24gd291bGQgYmUgYm90aCB1bndlbGNvbWUgYW5kCnVud2FycmFudGVkLjwvcD4KCjxoMz4KCkNvbXBhdGliaWxpdHkgb2YgUmVsZWFzZSAyLjEgd2l0aCAyLjA8L2gzPgoKIEVjbGlwc2UgU0RLIDIuMSB3aWxsIGJlIHVwd2FyZHMgY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDIuMCB0byB0aGUgCmdyZWF0ZXN0IGV4dGVudCBwb3NzaWJsZS4gV2UgYW50aWNpcGF0ZSBhIHNtYWxsIG51bWJlciBvZiBhcmVhcyB3aGVyZSBzbGF2aXNobHkgCm1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd291bGQgbm90IGJlIGluIHRoZSBiZXN0IGludGVyZXN0cyBvZiB0aGUgUGxhdGZvcm0gb3IgCml0cyBjbGllbnRzLiBBbGwgc3VjaCBleGNlcHRpb25zIHdpbGwgYmUgbm90ZWQgaW4gdGhlIDIuMSByZWxlYXNlIG5vdGVzIHNvIHRoYXQgCmNsaWVudHMgY2FuIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMgb24gdGhlaXIgcGx1Zy1pbnMgYW5kIHByb2R1Y3RzLgoKPHA+PGI+QVBJIENvbnRyYWN0IENvbXBhdGliaWxpdHk6PC9iPiBFY2xpcHNlIFNESyAyLjEgd2lsbCBiZSB1cHdhcmRzIGNvbnRyYWN0LWNvbXBhdGlibGUgCiAgd2l0aCBFY2xpcHNlIFNESyAyLjAgdW5sZXNzIG5vdGVkLiBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgaW4gZnVsbCBjb21wbGlhbmNlIAogIHdpdGggY29udHJhY3RzIHNwZWNpZmllZCBpbiBFY2xpcHNlIFNESyAyLjAgQVBJcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgaW4gZnVsbCAKICBjb21wbGlhbmNlIHdpdGggRWNsaXBzZSBTREsgMi4xIEFQSXMuIChBUEkgaXMgY29uc3RydWVkIGJyb2FkbHkgdG8gaW5jbHVkZSBzdWNoIAogIHRoaW5ncyBhcyBwbHVnLWluIGV4dGVuc2lvbiBwb2ludHMuKSBEb3dud2FyZCBjb250cmFjdCBjb21wYXRpYmlsaXR5IGlzIG5vdCAKICBzdXBwb3J0ZWQuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNvbXBsaWFuY2Ugd2l0aCBFY2xpcHNlIFNESyAyLjEgQVBJcyB3b3VsZCAKICBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIEVjbGlwc2UgU0RLIDIuMCBBUElzLiBSZWZlciB0byA8aT48YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9qYXZhLWFwaS1ldm9sdXRpb24uaHRtbCI+RXZvbHZpbmcgCiAgSmF2YS1iYXNlZCBBUElzPC9hPjwvaT4gZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUga2luZHMgb2YgQVBJIGNoYW5nZXMgdGhhdCBtYWludGFpbiAKICBjb250cmFjdCBjb21wYXRpYmlsaXR5LiAKPHA+PGI+QmluYXJ5IChwbHVnLWluKSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMi4xIHdpbGwgYmUgdXB3YXJkcyBiaW5hcnktY29tcGF0aWJsZSAKICB3aXRoIEVjbGlwc2UgU0RLIDIuMCB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdCBwbHVnLWlucyBidWlsdCBmb3IgRWNsaXBzZSAKICBTREsgMi4wIHdpbGwgY29udGludWUgdG8gd29yayBjb3JyZWN0bHkgaW4gRWNsaXBzZSBTREsgMi4xIHdpdGhvdXQgY2hhbmdlLiBEb3dud2FyZCAKICBwbHVnLWluIGNvbXBhdGliaWxpdHkgaXMgbm90IHN1cHBvcnRlZC4gUGx1Zy1pbnMgZm9yIEVjbGlwc2UgU0RLIDIuMSBhcmUgdW5saWtlbHkgCiAgdG8gYmUgdXNhYmxlIGluIEVjbGlwc2UgU0RLIDIuMC4gUGx1Zy1pbnMgd2l0aCBoYXJkLWNvZGVkIHJlZmVyZW5jZXMgaW4gdGhlaXIgCiAgcGx1Zy1pbiBtYW5pZmVzdCBmaWxlIHRvIDIuMCB2ZXJzaW9ucyBvZiBwcmVyZXF1aXNpdGUgRWNsaXBzZSBQcm9qZWN0IHBsdWctaW5zIAogIHdpbGwgd29yayBpbiAyLjEgcHJvdmlkZWQgdGhlIHZlcnNpb24gbWF0Y2ggcnVsZSBpcyAmcXVvdDtncmVhdGVyT3JFcXVhbCZxdW90OyAKICBvciAmcXVvdDtjb21wYXRpYmxlJnF1b3Q7ICh0aGUgZGVmYXVsdCk7IHJlZmVyZW5jZXMgdXNpbmcgJnF1b3Q7cGVyZmVjdCZxdW90OyAKICBvciAmcXVvdDtlcXVpdmFsZW50JnF1b3Q7IG1hdGNoIHJ1bGVzIHdpbGwgYmUgYnJva2VuLiBSZWZlciB0byA8aT48YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9qYXZhLWFwaS1ldm9sdXRpb24uaHRtbCI+RXZvbHZpbmcgCiAgSmF2YS1iYXNlZCBBUElzPC9hPjwvaT4gZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUga2luZHMgb2YgQVBJIGNoYW5nZXMgdGhhdCBtYWludGFpbiAKICBiaW5hcnkgY29tcGF0aWJpbGl0eS4gCjxwPjxiPlNvdXJjZSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMi4xIHdpbGwgYmUgdXB3YXJkcyBzb3VyY2UtY29tcGF0aWJsZSAKICB3aXRoIEVjbGlwc2UgU0RLIDIuMCB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdCBzb3VyY2UgZmlsZXMgd3JpdHRlbiAKICB0byB1c2UgRWNsaXBzZSBTREsgMi4wIEFQSXMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBjb21waWxlZCBhbmQgcnVuIGFnYWluc3QgRWNsaXBzZSBTREsgMi4xIEFQSXMuIFNpbmNlIHNvdXJjZSBpbmNvbXBhdGliaWxpdGllcyBhcmUgZWFzeSB0byBkZWFsIHdpdGgsIAogIG1haW50YWluaW5nIHNvdXJjZSBjb21wYXRpYmlsaXR5IGlzIGNvbnNpZGVyZWQgbXVjaCBsZXNzIGltcG9ydGFudCB0aGFuIG1haW50YWluaW5nIAogIGNvbnRyYWN0IGFuZCBiaW5hcnkgY29tcGF0aWJpbGl0eS4gRG93bndhcmQgc291cmNlIGNvbXBhdGliaWxpdHkgaXMgbm90IHN1cHBvcnRlZC4gCiAgSWYgc291cmNlIGZpbGVzIHVzZSBuZXcgRWNsaXBzZSBTREsgQVBJcywgdGhleSB3aWxsIG5vdCBiZSB1c2FibGUgd2l0aCBhbiBlYXJsaWVyIAogIHZlcnNpb24gb2YgRWNsaXBzZSBTREsuIAo8cD48Yj5Xb3Jrc3BhY2UgQ29tcGF0aWJpbGl0eTo8L2I+IEVjbGlwc2UgU0RLIDIuMSB3aWxsIGJlIHVwd2FyZHMgd29ya3NwYWNlLWNvbXBhdGlibGUgCiAgd2l0aCBFY2xpcHNlIFNESyAyLjAgdW5sZXNzIG5vdGVkLiBUaGlzIG1lYW5zIHRoYXQgd29ya3NwYWNlcyBhbmQgcHJvamVjdHMgY3JlYXRlZCAKICB3aXRoIEVjbGlwc2UgU0RLIDIuMCBjYW4gYmUgc3VjY2Vzc2Z1bGx5IG9wZW5lZCBieSBFY2xpcHNlIFNESyAyLjEgYW5kIHVwZ3JhZGVkIAogIHRvIGEgMi4xIHdvcmtzcGFjZS4gVGhpcyBpbmNsdWRlcyBib3RoIGhpZGRlbiBtZXRhZGF0YSwgd2hpY2ggaXMgbG9jYWxpemVkIHRvIAogIGEgcGFydGljdWxhciB3b3Jrc3BhY2UsIGFzIHdlbGwgYXMgbWV0YWRhdGEgZmlsZXMgZm91bmQgd2l0aGluIGEgd29ya3NwYWNlIHByb2plY3QgCiAgKGUuZy4sIHRoZSAucHJvamVjdCBmaWxlKSwgd2hpY2ggbWF5IHByb3BhZ2F0ZSBiZXR3ZWVuIHdvcmtzcGFjZXMgdmlhIGZpbGUgY29weWluZyAKICBvciB0ZWFtIHJlcG9zaXRvcmllcy4gSW5kaXZpZHVhbCBwbHVnLWlucyBkZXZlbG9wZWQgZm9yIEVjbGlwc2UgU0RLIDIuMSBzaG91bGQgCiAgcHJvdmlkZSBzaW1pbGFyIHVwd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgdGhlaXIgaGlkZGVuIGFuZCB2aXNpYmxlIHdvcmtzcGFjZSAKICBtZXRhZGF0YSBjcmVhdGVkIGJ5IGVhcmxpZXIgdmVyc2lvbnM7IDIuMSBwbHVnLWluIGRldmVsb3BlcnMgYXJlIHJlc3BvbnNpYmxlIAogIGZvciBlbnN1cmluZyB0aGF0IHRoZWlyIHBsdWctaW5zIHJlY29nbml6ZSBib3RoIDIuMSBhbmQgMi4wIG1ldGFkYXRhIGFuZCBwcm9jZXNzIAogIGl0IGFwcHJvcHJpYXRlbHkuIFVzZXIgaW50ZXJmYWNlIHNlc3Npb24gc3RhdGUgbWF5IGJlIGRpc2NhcmRlZCB3aGVuIGEgd29ya3NwYWNlIAogIGlzIHVwZ3JhZGVkLiBEb3dud2FyZCB3b3Jrc3BhY2UgY29tcGF0aWJpbGl0eSBpcyBub3Qgc3VwcG9ydGVkLiBBIHdvcmtzcGFjZSAKICBjcmVhdGVkIChvciBvcGVuZWQpIGJ5IEVjbGlwc2UgU0RLIDIuMSB3aWxsIGJlIHVudXNhYmxlIHdpdGggYW4gZWFybGllciB2ZXJzaW9uIAogIG9mIEVjbGlwc2UgU0RLLiZuYnNwO1Zpc2libGUgbWV0YWRhdGEgZmlsZXMgY3JlYXRlZCAob3Igb3ZlcndyaXR0ZW4pIGJ5IEVjbGlwc2UgCiAgU0RLIDIuMSB3aWxsIGdlbmVyYWxseSBiZSB1bnVzYWJsZSB3aXRoIGVhcmxpZXIgdmVyc2lvbnMgb2YgRWNsaXBzZSBTREsuJm5ic3A7IAo8cD48Yj5Ob24tY29tcGxpYW50IHVzYWdlIG9mIEFQSSdzPC9iPjogQWxsIG5vbi1BUEkgbWV0aG9kcyBhbmQgY2xhc3NlcywgYW5kIGNlcnRhaW5seSAKICBldmVyeXRoaW5nIGluIGEgcGFja2FnZSB3aXRoICZxdW90O2ludGVybmFsJnF1b3Q7IGluIGl0cyBuYW1lLCBhcmUgY29uc2lkZXJlZCAKICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIG1heSB2YXJ5IGJldHdlZW4gb3BlcmF0aW5nIGVudmlyb25tZW50IGFuZCBhcmUgCiAgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuIENsaWVudCBwbHVnLWlucyB0aGF0IGRpcmVjdGx5IGRlcGVuZCBvbiBhbnl0aGluZyAKICBvdGhlciB0aGFuIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBFY2xpcHNlIFNESyBBUEkgYXJlIGluaGVyZW50bHkgdW5zdXBwb3J0YWJsZSAKICBhbmQgcmVjZWl2ZSBubyBndWFyYW50ZWVzIGFib3V0IGNvbXBhdGliaWxpdHkgd2l0aGluIGEgc2luZ2xlIHJlbGVhc2UgbXVjaCBsZXNzIAogIHdpdGggZWFybGllciByZWxlYXNlcy4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9hcnRpY2xlcy9BcnRpY2xlLUFQSSUyMHVzZS9lY2xpcHNlLWFwaS11c2FnZS1ydWxlcy5odG1sIj5Ib3cgCiAgdG8gVXNlIHRoZSBFY2xpcHNlIEFQSTwvYT48L2k+IGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gd3JpdGUgY29tcGxpYW50IAogIHBsdWctaW5zLiAKPGgyPiBFY2xpcHNlIFByb2plY3QgU3VicHJvamVjdHM8L2gyPgoKVGhlIEVjbGlwc2UgUHJvamVjdCBjb25zaXN0cyBvZiAzIHN1YnByb2plY3RzLiBFYWNoIHN1YnByb2plY3QKCmlzIGNvdmVyZWQgaW4gaXRzIG93biBzZWN0aW9uOgoKPGJsb2NrcXVvdGU+PGEgaHJlZj0iI1BsYXRmb3JtIj5FY2xpcHNlIFBsYXRmb3JtPC9hPjxicj4KICA8YSBocmVmPSIjSkRUIj5KRFQgLSBKYXZhIGRldmVsb3BtZW50IHRvb2xzPC9hPjxicj4KICA8YSBocmVmPSIjUERFIj5QREUgLSBQbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50PC9hPjwvYmxvY2txdW90ZT4KCjxwPkZvciBlYWNoIHN1YnByb2plY3QsIHRoZSBpdGVtcyBsaXN0ZWQgcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgdGhlIEVjbGlwc2UgUGxhdGZvcm0sIAogIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nIGZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4gRWFjaCBpdGVtIGluZGljYXRlcyAKICB0aGUgY29tcG9uZW50cyBhZmZlY3RlZCBieSB0aGF0IHdvcmsgaXRlbSAobWFueSBpdGVtcyBpbnZvbHZlIGNvb3JkaW5hdGVkIGNoYW5nZXMgCiAgdG8gc2V2ZXJhbCBjb21wb25lbnRzKS4KCjxoMz4KCjxhIG5hbWU9IlBsYXRmb3JtIj5FY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3Q8L2E+PC9oMz4KClRoZSBFY2xpcHNlIFBsYXRmb3JtIHByb3ZpZGVzIHRoZSBtb3N0IGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gVGhlIGZvbGxvd2luZyBpdGVtcyByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgb3IgYXJlYXMKCndoZXJlIGV4aXN0aW5nIGZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4KPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPgo8cD4gPGI+SW1wcm92ZSBzdGFydHVwIHRpbWU8L2I+LiZuYnNwOyBQcm9ncmVzcyB3YXMgbWFkZQphdCBpbXByb3Zpbmcgc3RhcnR1cCB0aW1lcyBpbiAyLjA7IGhvd2V2ZXIsIGFkZGl0aW9uYWwgaW1wcm92ZW1lbnRzIGFyZSBuZWVkZWQuIEluIGFkZGl0aW9uLCB3ZSBuZWVkIHRvIGludmVzdGlnYXRlIGRlZmVycmluZyAob3IgcGFydGlhbGx5IG9taXR0aW5nKSB0aGUKcmVjb3Zlcnkgb2YgdGhlIFVJIHN0YXRlLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUldPC9wPgo8cD4KPGI+QWxsb3cgdXNlciBjdXN0b21pemFibGUKa2V5IGJpbmRpbmdzLjwvYj4mbmJzcDsgRWNsaXBzZSAyLjAgc3VwcG9ydHMgY29uZmlndXJhYmxlIGtleSBiaW5kaW5ncywgYnV0IG9ubHkKZm9yIGVkaXRvciBrZXkgYmluZGluZ3MsIGFuZCBvbmx5IGNvbmZpZ3VyZWQgYnkgYSBwbHVnLWluLiBUaGUgdXNlciBzaG91bGQgYmUKYWJsZSB0byBpbnRlcmFjdGl2ZWx5IGN1c3RvbWl6ZSB0aGUKa2V5IGJpbmRpbmdzIGZvciBhbGwgd29ya2JlbmNoIGFjdGlvbnMuIFRoZXJlIGFyZSBhZGRpdGlvbmFsIGN1c3RvbWl6YXRpb24gcG9zc2liaWxpdGllcyBpbmNsdWRpbmcgdmlzaWJsZSBhY3Rpb25zIGFuZCBwZXJzcGVjdGl2ZSBsYXlvdXQuCltQbGF0Zm9ybSBVSSwgU1dULCBUZXh0LCBKRFQgVUldPC9wPgo8cD4gPGI+SW1wcm92ZSB1cGRhdGUKbWFuYWdlci48L2I+IE1ha2UgY29udGludWluZyBpbXByb3ZlbWVudHMgdG8gdGhlIEVjbGlwc2UgaW5zdGFsbCBhbmQgdXBkYXRlCm1lY2hhbmlzbXMuIEltcHJvdmUgc3VwcG9ydCBmb3IgaW5zdGFsbGluZyBhbmQgdXBkYXRpbmcgbGFyZ2UgcHJvZHVjdHMgbWFraW5nCnVzZSBvZiBuZXN0ZWQgZmVhdHVyZXMuIE1ha2UgcmVtb3RlIGNvbm5lY3Rpb25zIG1vcmUgY29uZmlndXJhYmxlICggY29ubmVjdGlvbiB1c2luZyBhIHByb3h5IHNlcnZlcgpiZWhpbmQgZmlyZXdhbGwgYW5kIGF1dGhlbnRpY2F0aW9uKSBhbmQgbW9yZSByb2J1c3QgKHRpbWUgb3V0cykuIFtQbGF0Zm9ybSBDb3JlLCBQbGF0Zm9ybSBJbnN0YWxsL1VwZGF0ZV08L3A+CiAgPHA+IDxiPkVuYWJsZSBEQkNTIG9uIExpbnV4LjwvYj4gU3VwcG9ydCBkb3VibGUtYnl0ZSBjaGFyYWN0ZXJzIG9uIHRoZSBHVEsgYW5kIAogICAgTW90aWYgd2luZG93IHN5c3RlbXMgZXhjZXB0IGZvciBTdVNlLiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICBDb21taXRtZW50IGZvciBTdVNlIERCQ1Mgc3VwcG9ydCByZW1vdmVkKSBbU1dUXTwvcD4KPHA+IDxiPkFkZCB3b3JrYmVuY2gKZWRpdG9yIG5hdmlnYXRpb24KaGlzdG9yeS48L2I+IFRoZSB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIG5hdmlnYXRlIGJldHdlZW4gd29ya2JlbmNoIGVkaXRvcnMgd2l0aCB3ZWIgc3R5bGUgYmFjay9mb3J3YXJkIGFjdGlvbnMuCihSZWY6IDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMCI+YnVnIDU3MDA8L2E+KSZuYnNwOwpbUGxhdGZvcm0gVUldPC9wPgogIDxwPiA8Yj5JbXByb3ZlIEFudCBzdXBwb3J0LjwvYj4gQWRkIHN1cHBvcnQgdG8gbmF2aWdhdGUgZnJvbSBBbnQgZXJyb3Igb3V0cHV0IAogICAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlLiBbUGxhdGZvcm0gVUksIEFudCBDb3JlXTwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+UHJvcG9zZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD48Yj5BZGQgY2hlYXQgc2hlZXRzPC9iPi4mbmJzcDsgQSBjaGVhdCBzaGVldCBpcyBhbiBpbnN0YW5jZSBvZiBhIHNpbXBsZSBraW5kIAogICAgb2Ygd29ya2Zsb3cgc3VwcG9ydCB1c2VkIHRvIGhlbHAgdGhlIHVzZXIgY2Fycnkgb3V0IGEgc2VxdWVuY2Ugb2Ygc3RlcHMuIEZvciAKICAgIGV4YW1wbGUsICZxdW90O2NyZWF0ZSBhbmQgZGVwbG95IGEgcGx1Zy1pbiIgaXMgYSBtdWx0aS1zdGVwIHByb2Nlc3MgdGhhdCBjb3VsZCAKICAgIGJlIG1hZGUgZWFzaWVyIHRvIGZvbGxvdyBpZiB0aGVyZSB3YXMgYSBndWlkZSwgc2ltaWxhciB0byBhIHJlY2lwZSB0aGF0IHdvdWxkIAogICAgdHJhY2sgdGhlIHVzZXIncyBwcm9ncmVzcyBhbmQgcHJvdmlkZSBib3RoIGRlc2NyaXB0aXZlIHRleHQgdGhhdCBleHBsYWlucyAKICAgIHRoZSBzdGVwcyBpbnZvbHZlZCBhbmQgaW50ZWdyYXRpb24gd2l0aCBFY2xpcHNlIHRvIGF1dG9tYXRlIHRoZSBwcm9jZXNzLiBUaGUgCiAgICBXZWxjb21lIFBhZ2UgZWRpdG9yIGlzIGEgc2ltcGxlIGV4YW1wbGUgb2YgYSBjaGVhdCBzaGVldC4gUHJvdmlkZSBhIHN0YW5kYXJkIAogICAgQVBJIGZvciBjcmVhdGluZyBjaGVhdCBzaGVldHMuIFtQbGF0Zm9ybSBVSV08L3A+CiAgPHA+IDxiPkFkZCB0YWJsZSBvZiBjb250ZW50cyBzdXBwb3J0IHRvIHdpemFyZHMuPC9iPiBFeHRlbmQgdGhlIHdvcmtiZW5jaCB3aXphcmQgCiAgICBmcmFtZXdvcmsgdG8gYWxsb3cgRWNsaXBzZSB3aXphcmQgZGV2ZWxvcGVycyB0byBwcm92aWRlIG11Y2ggbW9yZSBzdWJzdGFudGlhbCAKICAgIGFuZCBzaWduaWZpY2FudCB1c2VyIGZlZWRiYWNrLiBbUGxhdGZvcm0gVUldPC9wPgogIDxwPiA8Yj5TdXBwb3J0IGZsb2F0aW5nIHRvb2xiYXJzIGFuZCB2aWV3cy48L2I+IEFsbG93IHRoZSB1c2VyIHRvIGN1c3RvbWl6ZSB0aGUgCiAgICB3b3JrYmVuY2ggYnkgY3JlYXRpbmcgZmxvYXRpbmcgdG9vbGJhcnMgYW5kIHZpZXdzLiBbUGxhdGZvcm0gVUldPC9wPgogIDxwPiA8Yj5BbGxvdyBlZGl0b3JzIHRvIG9wZW4gZmlsZXMgb3V0c2lkZSB3b3Jrc3BhY2UuPC9iPiBBIGNvbW1vbiByZXF1ZXN0IGlzIAogICAgdG8gYmUgYWJsZSB0byBvcGVuIGEgZmlsZSB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSB3b3Jrc3BhY2UgdXNpbmcgRWNsaXBzZS4gCiAgICBJbiBhZGRpdGlvbiwgYXBwbGljYXRpb25zIHdvdWxkIGxpa2UgdG8gcHJvdmlkZSBmaWxlIGV4dGVuc2lvbiBhc3NvY2lhdGlvbnMgCiAgICBzbyB0aGF0IGRvdWJsZS1jbGlja2luZyBvbiBhIGZpbGUgaW4gdGhlIE9TIGRlc2t0b3Agd291bGQgb3BlbiB0aGUgYXNzb2NpYXRlZCAKICAgIEVjbGlwc2UgZWRpdG9yLiBUaGUgb3BlcmF0aW9ucyBhbmQgY2FwYWJpbGl0aWVzIGF2YWlsYWJsZSBvbiB0aGVzZSAib3V0c2lkZSAKICAgIG9mIHRoZSB3b3Jrc3BhY2UiIGZpbGVzIHdvdWxkIG5lZWQgdG8gYmUgZGVmaW5lZC4gW1BsYXRmb3JtIFVJXTwvcD4KICA8cD48Yj5JbXByb3ZlIHNlcnZpY2VhYmlsaXR5LiA8L2I+IFByb2dyZXNzIHdhcyBtYWRlIGF0IGltcHJvdmluZyBzZXJ2aWNlYWJpbGl0eSAKICAgIGluIDIuMDsgaG93ZXZlciwgYWRkaXRpb25hbCBpbXByb3ZlbWVudHMgYXJlIG5lZWRlZCwgcGFydGljdWxhcmx5IGluIGRlYWxpbmcgCiAgICB3aXRoIGVycm9yIGNvbmRpdGlvbnMgYW5kIHJlcG9ydGluZyB0aGVtIGluIGFuIGFwcHJvcHJpYXRlIG1hbm5lci4gW1BsYXRmb3JtIAogICAgQ29yZSwgU1dULCBQbGF0Zm9ybSBVSV08YnI+CiAgICA8YnI+CiAgICA8Yj5JbXByb3ZlIGZpbGUgZW5jb2Rpbmcgc3VwcG9ydC48L2I+IEVjbGlwc2UgMi4wIHVzZXMgYSBzaW5nbGUgZ2xvYmFsIGZpbGUgCiAgICBlbmNvZGluZyBzZXR0aW5nIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIHRoZSB3b3Jrc3BhY2UuIFRoaXMgaXMgcHJvYmxlbWF0aWM7IAogICAgZm9yIGV4YW1wbGUsIHdoZW4gSmF2YSBzb3VyY2UgZmlsZXMgaW4gdGhlIHdvcmtzcGFjZSB1c2UgT1MgZGVmYXVsdCBmaWxlIGVuY29kaW5nIAogICAgd2hpbGUgWE1MIGZpbGVzIGluIHRoZSB3b3Jrc3BhY2UgdXNlIFVURi04IGZpbGUgZW5jb2RpbmcuIFRoZSBQbGF0Zm9ybSBzaG91bGQgCiAgICBzdXBwb3J0IG5vbi11bmlmb3JtIGZpbGUgZW5jb2RpbmdzLiAoUmVmOiA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTUzOTkiPmJ1ZyAKICAgIDUzOTk8L2E+KSBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUksIFRleHQsIFNlYXJjaCwgQ29tcGFyZSwgSkRUIFVJLCBKRFQgCiAgICBDb3JlXTwvcD4KICAgIDxiPkltcHJvdmUgU1dUIHN1cHBvcnQgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzPC9iPi4mbmJzcDtBbGxvdyB0aGUgYXBwcm9wcmlhdGUgCiAgICB3aWRnZXQgb3JpZW50YXRpb24gZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzLiBbU1dUXQoJICAKICA8L2Jsb2NrcXVvdGU+CjxoND5SZWplY3RlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPgogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KCgoKPHA+KEVuZCBvZiBpdGVtcyBmb3IgRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LikKCgoKPGgzPiA8YSBuYW1lPSJKRFQiPkphdmEgZGV2ZWxvcG1lbnQgdG9vbHMgCiAgKEpEVCkgc3VicHJvamVjdDwvYT48L2gzPgoKPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9qZHQvaW5kZXguaHRtbCI+IEphdmEgZGV2ZWxvcG1lbnQgdG9vbHM8L2E+IChKRFQpIAppbXBsZW1lbnRzIGEgSmF2YSBJREUgYmFzZWQgb24gdGhlIEVjbGlwc2UgUGxhdGZvcm0uIFRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyAKcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgSkRULCBvciBhcmVhcyB3aGVyZSBleGlzdGluZyBmZWF0dXJlcyB3aWxsIGJlIHNpZ25pZmljYW50bHkgCnJld29ya2VkLiAKPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBKRFQgc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KPHA+IDxiPlN1cHBvcnQgYnVpbGRpbmcgcHJvamVjdHMgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuPC9iPiZuYnNwOyBTb21lIHVzZXJzIGFyZQpleHBlcmllbmNpbmcgZGlmZmljdWx0eSBwYXJ0aXRpb25pbmcgdGhlaXIgd29yayBpbnRvIGluZGVwZW5kZW50bHktYnVpbGRhYmxlIHByb2plY3RzLiBXZSB3YW50IHRvIGFkZCBhIG1lY2hhbmlzbSB0byBhbGxvdyBtdXR1YWxseSBkZXBlbmRlbnQgcHJvamVjdHMgdG8gYmUKYnVpbHQKc3VjY2Vzc2Z1bGx5LCB3aGlsZSBwcmVzZXJ2aW5nIGN1cnJlbnQgcHJvamVjdCBidWlsZCBvcmRlciBiZWhhdmlvci4gKFJlZjogPGEgaHJlZj0iaHR0cDovL2Rldi5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMDI2MiI+YnVnCjEwMjYyPC9hPikgW0pEVCBDb3JlLCBQbGF0Zm9ybSBDb3JlXTwvcD4KICA8cD4gPGI+TW9yZSBmbGV4aWJsZSBwcm9qZWN0IGxheW91dC4mbmJzcDsgPC9iPlN1cHBvcnQgc291cmNlIGFuZCBvdXRwdXQgZm9sZGVycyB0aGF0IGFyZSBvdXRzaWRlIG9mIHRoZQogIHdvcmtzcGFjZS4gVGhpcyBsaWtlbHkgcmVxdWlyZXMgUGxhdGZvcm0gQ29yZSBzdXBwb3J0IHNvIHRoYXQgY2hhbmdlcyB0byB0aGVzZQogIGZvbGRlcnMgY2FuIGJlIHJlZmxlY3RlZCBpbiByZXNvdXJjZSBkZWx0YXMuIFtKRFQgQ29yZSwgSkRUIFVJLCBQbGF0Zm9ybQogIENvcmUsIFBsYXRmb3JtIFVJLCBUZWFtXTwvcD4KPHA+IDxiPlN1cHBvcnQgbXVsdGktSkFSCnN5c3RlbSBsaWJyYXJpZXMuPC9iPiBTb21lIEpSRXMgKGluY2x1ZGluZyBNYWMgT1MgWCBhbmQgSUJNIDEuNCkgcGFja2FnZSZuYnNwOwp0aGUgSmF2YSBzeXN0ZW0gY2xhc3MgbGlicmFyaWVzIGluIHNldmVyYWwgSkFSIGZpbGVzLiBJbXByb3ZlIHN1cHBvcnQgZm9yIHN5c3RlbQpjbGFzcyBsaWJyYXJpZXMgc28gdGhhdCBpdCBpcyBtb3JlIGNvbnZlbmllbnQgdG8gZGV2ZWxvcCBhbmQgcnVuIGFnYWluc3QgdGhlbS4gW0pEVApDb3JlLCBKRFQgVUldPC9wPgo8cD4gPGI+QWRkIG5ldyByZWZhY3RvcmluZ3M8L2I+LiBTdXBwb3J0IGFkZGl0aW9uYWwKcmVmYWN0b3JpbmcgYWN0aW9ucywgaW5jbHVkaW5nIGV4dHJhY3QgaW50ZXJmYWNlLCBhbmQgZXh0cmFjdCBjb25zdGFudC4gW0pEVApDb3JlLCBKRFQgVUldPC9wPgo8L2Jsb2NrcXVvdGU+CjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBKRFQgc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+UmVqZWN0ZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgoKCgo8cD4oRW5kIG9mIGl0ZW1zIGZvciBFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LikKCgoKPGgzPgoKPGEgbmFtZT0iUERFIj5QbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50IChQREUpIHN1YnByb2plY3Q8L2E+PC9oMz4KClRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BkZS9pbmRleC5odG1sIj4gcGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudDwvYT4gCihQREUpIGNvbnNpc3RzIG9mJm5ic3A7dG9vbHMgZm9yIGRldmVsb3BpbmcgcGx1Zy1pbnMgZm9yIHRoZSBFY2xpcHNlIFBsYXRmb3JtLgoKVGhlIGZvbGxvd2luZyB3b3JrIGl0ZW1zIHJlZmxlY3QgbmV3IGZlYXR1cmVzIG9mIFBERSwgb3IgYXJlYXMgd2hlcmUgZXhpc3RpbmcKCmZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4KPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBQREUgc3VicHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4gCiAgPHA+IDxiPkltcHJvdmUgYnVpbGQgY2xhc3MgcGF0aCBmb3IgcGx1Zy1pbiBwcm9qZWN0cy48L2I+IFBsdWctaW5zIHRoYXQgbWFrZSAKICAgIGRpcmVjdCByZWZlcmVuY2UgdG8gSkFSIGxpYnJhcmllcyBvZiBwcmVyZXF1aXNpdGUgcGx1Zy1pbnMgYXJlIHZ1bG5lcmFibGUgCiAgICB0byB2ZXJzaW9uIGlkcyBpbiBwbHVnLWluIGVtYmVkZGVkIGluIGRpcmVjdG9yeSBuYW1lcy4gVGhlIGFsdGVybmF0aXZlLCB1c2luZyAKICAgIGJpbmFyeSBsaWJyYXJ5IHBsdWctaW5zIGZvciBlYWNoIHByZXJlcXVpc2l0ZSBwbHVnLWluLCBsZWFkcyB0byBhIHByb2Z1c2lvbiAKICAgIG9mIHByb2plY3RzIGluIHRoZSB3b3Jrc3BhY2UuIFBERSB3aWxsIG9mZmVyIGEgdGhpcmQgYWx0ZXJuYXRpdmUgYmFzZWQgb24gCiAgICBKRFQgY2xhc3MgcGF0aCBjb250YWluZXJzIHRoYXQgYXZvaWRzIHRoZXNlIHNob3J0Y29taW5ncyBhbmQgaW50ZXJvcGVyYXRlcyAKICAgIHdpdGggZXhpc3RpbmcgcGx1Zy1pbiBwcm9qZWN0cy48L3A+CiAgPHA+IDxiPkFkZCBzdXBwb3J0IGZvciB1cGRhdGUgc2l0ZXMuPC9iPiBTZXR0aW5nIHVwIGFuIEVjbGlwc2UgdXBkYXRlIHNpdGUgYW5kIAogICAgYnVpbGRpbmcgaXRzIHBsdWctaW5zIGFuZCBmZWF0dXJlcyBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBQREUgd2lsbCBtYWtlIGl0IAogICAgY29udmVuaWVudCB0byBkZWZpbmUgdGhlIGxheW91dCBvZiBhbiB1cGRhdGUgc2l0ZSBhbmQgY3JlYXRlIHRoZSB1cGRhdGUgc2l0ZSdzIAogICAgY29udGVudHMuPC9wPgogIDxwPiA8Yj5JbXByb3ZlIHVzYWJpbGl0eS48L2I+IEYxIGhlbHAgZm9yIGFsbCBQREUgZGlhbG9nczsgaW1wcm92ZWQgUERFIGZvcm0gCiAgICBlZGl0b3JzOyBpbXByb3ZlZCBwbHVnLWluIG1hbmlmZXN0IGVkaXRvciBFeHRlbnNpb25zIHBhZ2U7IG1vcmUgdXNlci1mcmllbmRseSAKICAgIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHBsdWctaW5zIGFuZCBmZWF0dXJlcy48L3A+CjwvYmxvY2txdW90ZT4KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPgogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPiAKICA8cD4gPGI+QWRkIHRlbXBsYXRlIEFQSS48L2I+IEFQSSBmb3IgUERFIHRlbXBsYXRlIHdpemFyZHMgd2lsbCBiZSBkZWZpbmVkLCBhbGxvd2luZyAKICAgIG90aGVyIHBsdWctaW5zIHRvIGNvbnRyaWJ1dGUgdGVtcGxhdGVzIGZvciB0aGVpciBleHRlbnNpb24gcG9pbnRzLjwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+UmVqZWN0ZWQgSXRlbXMgKEVjbGlwc2UgUERFIHN1YnByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+CiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KPC9ibG9ja3F1b3RlPgoKCgo8cD4oRW5kIG9mIGl0ZW1zIGZvciBFY2xpcHNlIFBERSBzdWJwcm9qZWN0LikKCjwvYm9keT4KCjwvaHRtbD4KCg==