PCEtLSBzYXZlZCBmcm9tIHVybD0oMDAyMilodHRwOi8vaW50ZXJuZXQuZS1tYWlsIC0tPgo8IWRvY3R5cGUgaHRtbCBwdWJsaWMgIi0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vZW4iPgoKPGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPG1ldGEgbmFtZT0iQXV0aG9yIiBjb250ZW50PSJFY2xpcHNlIFByb2plY3QgUE1DIj4KPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNaWNyb3NvZnQgRnJvbnRQYWdlIDQuMCI+CjxtZXRhIG5hbWU9IlByb2dJZCIgY29udGVudD0iRnJvbnRQYWdlLkVkaXRvci5Eb2N1bWVudCI+Cjx0aXRsZT5FY2xpcHNlIFByb2plY3QgRHJhZnQgMy4xIFBsYW48L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2RlZmF1bHRfc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjwvaGVhZD4KCjxib2R5PgoKPGgxPkVjbGlwc2UgUHJvamVjdDxicj4KICBEUkFGVCAzLjEgUGxhbjwvaDE+CjxwPkxhc3QgcmV2aXNlZCAxMTozMCBFU1QgRmVicnVhcnkgMTQsIDIwMDUgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogIG1hcmtzIGludGVyZXN0aW5nIGNoYW5nZXMgc2luY2UgdGhlIDxhIGhyZWY9ImVjbGlwc2VfcHJvamVjdF9wbGFuXzNfMV8yMDA0MTIxNC5odG1sIj5kcmFmdCAKICBvZiBEZWMuIDE0LCAyMDA0PC9hPik8YnI+Cjxicj4KPGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7IFBsZWFzZSBzZW5kIGNvbW1lbnRzIGFib3V0IHRoaXMgZHJhZnQgcGxhbiB0byB0aGUgPC9pPjxhIGhyZWY9Im1haWx0bzplY2xpcHNlLWRldkBlY2xpcHNlLm9yZyI+ZWNsaXBzZS1kZXZAZWNsaXBzZS5vcmc8L2E+CjxpPmRldmVsb3BlciBtYWlsaW5nIGxpc3QuPC9pPjwvcD4KPHA+VGhpcyBkb2N1bWVudCBsYXlzIG91dCB0aGUgZmVhdHVyZSBhbmQgQVBJIHNldCBmb3IgdGhlIG5leHQgZmVhdHVyZSByZWxlYXNlCm9mIEVjbGlwc2UgYWZ0ZXIgMy4wLCBkZXNpZ25hdGVkIHJlbGVhc2UgMy4xLgo8dWw+CiAgPGxpPjxhIGhyZWY9IiNEZWxpdmVyYWJsZXMiPlJlbGVhc2UgZGVsaXZlcmFibGVzPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNNaWxlc3RvbmVzIj5SZWxlYXNlIG1pbGVzdG9uZXM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1RhcmdldE9wZXJhdGluZ0Vudmlyb25tZW50cyI+VGFyZ2V0IG9wZXJhdGluZyBlbnZpcm9ubWVudHM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyByZWxlYXNlczwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjUGxhdGZvcm0iPkVjbGlwc2UgUGxhdGZvcm0gcHJvamVjdDwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjSkRUIj5KYXZhIGRldmVsb3BtZW50IHRvb2xzIChKRFQpIHByb2plY3Q8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1BERSI+UGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAoUERFKSBwcm9qZWN0PC9hPjwvbGk+CjwvdWw+CjxwPlBsYW5zIGRvIG5vdCBtYXRlcmlhbGl6ZSBvdXQgb2Ygbm93aGVyZSwgbm9yIGFyZSB0aGV5IGVudGlyZWx5IHN0YXRpYy4gVG8KZW5zdXJlIHRoZSBwbGFubmluZyBwcm9jZXNzIGlzIHRyYW5zcGFyZW50IGFuZCBvcGVuIHRvIHRoZSBlbnRpcmUgRWNsaXBzZQpjb21tdW5pdHksIHdlICh0aGUgRWNsaXBzZSBQTUMpIHBvc3QgcGxhbnMgaW4gYW4gZW1icnlvbmljIGZvcm0gYW5kIHJldmlzZSB0aGVtCnRocm91Z2hvdXQgdGhlIHJlbGVhc2UgY3ljbGUuCjxwPlRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwbGFuIGRlYWxzIHdpdGggdGhlIGltcG9ydGFudCBtYXR0ZXJzIG9mIHJlbGVhc2UKZGVsaXZlcmFibGVzLCByZWxlYXNlIG1pbGVzdG9uZXMsIHRhcmdldCBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLCBhbmQKcmVsZWFzZS10by1yZWxlYXNlIGNvbXBhdGliaWxpdHkuIFRoZXNlIGFyZSBhbGwgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBjbGVhciBmb3IKYW55IHJlbGVhc2UsIGV2ZW4gaWYgbm8gZmVhdHVyZXMgd2VyZSB0byBjaGFuZ2UuJm5ic3A7CjxwPlRoZSByZW1haW5kZXIgb2YgdGhlIHBsYW4gY29uc2lzdHMgb2YgcGxhbiBpdGVtcyBmb3IgdGhlIHRocmVlIHByb2plY3RzIHVuZGVyCnRoZSBFY2xpcHNlIHRvcC1sZXZlbCBwcm9qZWN0LiBFYWNoIHBsYW4gaXRlbSBjb3ZlcnMgYSBmZWF0dXJlIG9yIEFQSSB0aGF0IGlzIHRvIGJlIGFkZGVkIHRvCkVjbGlwc2UsIG9yIHNvbWUgYXNwZWN0IG9mIEVjbGlwc2UgdGhhdCBpcyB0byBiZSBpbXByb3ZlZC4gRWFjaCBwbGFuIGl0ZW0gaGFzCml0cyBvd24gZW50cnkgaW4gdGhlIEVjbGlwc2UgYnVnemlsbGEgZGF0YWJhc2UsIHdpdGggYSB0aXRsZSBhbmQgYSBjb25jaXNlCnN1bW1hcnkgKHVzdWFsbHkgYSBzaW5nbGUgcGFyYWdyYXBoKSB0aGF0IGV4cGxhaW5zIHRoZSB3b3JrIGl0ZW0gYXQgYSBzdWl0YWJseQpoaWdoIGVub3VnaCBsZXZlbCBzbyB0aGF0IGV2ZXJ5b25lIGNhbiByZWFkaWx5IHVuZGVyc3RhbmQgd2hhdCB0aGUgd29yayBpdGVtIGlzCndpdGhvdXQgaGF2aW5nIHRvIHVuZGVyc3RhbmQgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWwuCjxwPk5vdCBhbGwgcGxhbiBpdGVtcyByZXByZXNlbnQgdGhlIHNhbWUgYW1vdW50IG9mIHdvcms7IHNvbWUgbWF5IGJlIHF1aXRlCmxhcmdlLCBvdGhlcnMsIHF1aXRlIHNtYWxsLiBTb21lIHBsYW4gaXRlbXMgbWF5IGludm9sdmUgd29yayB0aGF0IGlzIGxvY2FsaXplZAp0byBhIHNpbmdsZSBQbGF0Zm9ybSBjb21wb25lbnQ7IG90aGVycyBtYXkgaW52b2x2ZSBjb29yZGluYXRlZCBjaGFuZ2VzIHRvCnNldmVyYWwgY29tcG9uZW50czsgb3RoZXIgbWF5IHBlcnZhZGUgdGhlIGVudGlyZSBQbGF0Zm9ybS4gQWx0aG91Z2ggc29tZSBwbGFuCml0ZW1zIGFyZSBmb3Igd29yayB0aGF0IGlzIG1vcmUgcHJlc3NpbmcgdGhhdCBvdGhlcnMsIHRoZSBwbGFuIGl0ZW1zIGFwcGVhciBpbgpubyBwYXJ0aWN1bGFyIG9yZGVyLgo8cD5XaXRoIHRoZSBwcmV2aW91cyByZWxlYXNlIGFzIHRoZSBzdGFydGluZyBwb2ludCwgdGhpcyBpcyB0aGUgcGxhbiBmb3IgaG93IHdlCndpbGwgZW5oYW5jZSBhbmQgaW1wcm92ZSBpdC4gRml4aW5nIGJ1Z3MsIGltcHJvdmluZyB0ZXN0IGNvdmVyYWdlLApkb2N1bWVudGF0aW9uLCBleGFtcGxlcywgcGVyZm9ybWFuY2UgdHVuaW5nLCB1c2FiaWxpdHksIGV0Yy4gYXJlIGNvbnNpZGVyZWQgcm91dGluZQpvbmdvaW5nIG1haW50ZW5hbmNlIGFjdGl2aXRpZXMgYW5kIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBwbGFuIHVubGVzcyB0aGV5CndvdWxkIGFsc28gaW52b2x2ZSBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgQVBJIG9yIGZlYXR1cmUgc2V0LCBvciBpbnZvbHZlIGEKc2lnbmlmaWNhbnQgYW1vdW50IG9mIHdvcmsuIFRoZSBpbnRlbnQgb2YgdGhlIHBsYW4gaXMgdG8gYWNjb3VudCBmb3IgYWxsIGludGVyZXN0aW5nIGZlYXR1cmUgd29yay4KPHA+VGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVhY2ggcGxhbiBpdGVtIGlzIG5vdGVkOgo8dWw+CiAgPGxpPjxiPkNvbW1pdHRlZDwvYj4gcGxhbiBpdGVtIC0gQSBjb21taXR0ZWQgcGxhbiBpdGVtIGlzIG9uZSB0aGF0IHdlIGhhdmUKICAgIGRlY2lkZWQgdG8gYWRkcmVzcyBmb3IgdGhlIHJlbGVhc2UuPC9saT4KICA8bGk+PGI+UHJvcG9zZWQ8L2I+IHBsYW4gaXRlbSAtIEEgcHJvcG9zZWQgcGxhbiBpdGVtIGlzIG9uZSB0aGF0IHdlIGFyZQogICAgY29uc2lkZXJpbmcgYWRkcmVzc2luZyBmb3IgdGhlIHJlbGVhc2UuIEFsdGhvdWdoIHdlIGFyZSBhY3RpdmVseQogICAgaW52ZXN0aWdhdGluZyBpdCwgd2UgYXJlIG5vdCB5ZXQgaW4gYSBwb3NpdGlvbiB0byBjb21taXQgdG8gaXQsIG9yIHRvIHNheQogICAgdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGFkZHJlc3MgaXQuIEFmdGVyIGR1ZSBjb25zaWRlcmF0aW9uLCBhIHByb3Bvc2FsCiAgICB3aWxsIGVpdGhlciBiZSBjb21taXR0ZWQgb3IgZGVmZXJyZWQuPC9saT4KICA8bGk+PGI+RGVmZXJyZWQ8L2I+IHBsYW4gaXRlbSAtIEEgcmVhc29uYWJsZSBwcm9wb3NhbCB0aGF0IHdpbGwgbm90IG1ha2UgaXQgaW4KICAgIHRvIHRoaXMgcmVsZWFzZSBmb3Igc29tZSByZWFzb24gaXMgbWFya2VkIGFzIGRlZmVycmVkIHdpdGggYSBicmllZiBub3RlIGFzCiAgICB0byB3aHkgaXQgd2FzIGRlZmVycmVkLiBEZWZlcnJlZCBwbGFuIGl0ZW1zIG1heSByZXN1cmZhY2UgYXMgY29tbWl0dGVkIHBsYW4KICAgIGl0ZW1zIGF0IGEgbGF0ZXIgcG9pbnQuPC9saT4KPC91bD4KPGgyPjxhIG5hbWU9IkRlbGl2ZXJhYmxlcyI+PC9hPlJlbGVhc2UgZGVsaXZlcmFibGVzPC9oMj4KPHA+VGhlIHJlbGVhc2UgZGVsaXZlcmFibGVzIGhhdmUgdGhlIHNhbWUgZm9ybSBhcyBwcmV2aW91cyByZWxlYXNlcywgbmFtZWx5Ogo8dWw+CiAgPGxpPlNvdXJjZSBjb2RlIHJlbGVhc2UgZm9yIEVjbGlwc2UgUHJvamVjdCwgYXZhaWxhYmxlIGFzIHZlcnNpb25zIHRhZ2dlZAogICAgJnF1b3Q7UjNfMSZxdW90OyBpbiB0aGUgRWNsaXBzZSBQcm9qZWN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy8iPkNWUwogICAgcmVwb3NpdG9yeTwvYT4uPC9saT4KICA8bGk+RWNsaXBzZSBQcm9qZWN0IFNESyAoaW5jbHVkZXMgcnVudGltZSBiaW5hcnkgYW5kIFNESyBmb3IgUGxhdGZvcm0sIEpEVCwKICAgIGFuZCBQREUpIChkb3dubG9hZGFibGUpLjwvbGk+CiAgPGxpPkVjbGlwc2UgUGxhdGZvcm0gcnVudGltZSBiaW5hcnkgYW5kIFNESyBkaXN0cmlidXRpb25zIChkb3dubG9hZGFibGUpLjwvbGk+CiAgPGxpPkVjbGlwc2UgUkNQIHJ1bnRpbWUgYmluYXJ5IGFuZCBTREsgZGlzdHJpYnV0aW9ucyAoZG93bmxvYWRhYmxlKS48L2xpPgogIDxsaT5KRFQgcnVudGltZSBiaW5hcnkgYW5kIFNESyBkaXN0cmlidXRpb25zIChkb3dubG9hZGFibGUpLjwvbGk+CiAgPGxpPlBERSBydW50aW1lIGJpbmFyeSBhbmQgU0RLIGRpc3RyaWJ1dGlvbnMgKGRvd25sb2FkYWJsZSkuPC9saT4KICA8bGk+RWNsaXBzZSBTREsgRXhhbXBsZXMgKGRvd25sb2FkYWJsZSkuPC9saT4KICA8bGk+U1dUIGRpc3RyaWJ1dGlvbiAoZG93bmxvYWRhYmxlKS48L2xpPgo8L3VsPgo8aDI+PGEgbmFtZT0iTWlsZXN0b25lcyI+PC9hPlJlbGVhc2UgbWlsZXN0b25lczwvaDI+CjxwPlJlbGVhc2UgbWlsZXN0b25lIG9jY3VycmluZyBhdCByb3VnaGx5IDYgd2VlayBpbnRlcnZhbHMgZXhpc3QgdG8gZmFjaWxpdGF0ZQpjb2Fyc2UtZ3JhaW5lZCBwbGFubmluZyBhbmQgc3RhZ2luZy4gVGhlIG1pbGVzdG9uZXMgYXJlOjwvcD4KPHVsPgogIDxsaT5GcmlkYXkgQXVnLiAxMywgMjAwNCAtIE1pbGVzdG9uZSAxICgzLjEgTTEpIC0gc3RhYmxlIGJ1aWxkPC9saT4KICA8bGk+RnJpZGF5IFNlcC4gMjQsIDIwMDQgLSBNaWxlc3RvbmUgMiAoMy4xIE0yKSAtIHN0YWJsZSBidWlsZDwvbGk+CiAgPGxpPkZyaWRheSBOb3YuIDUsIDIwMDQgLSBNaWxlc3RvbmUgMyAoMy4xIE0zKSAtIHN0YWJsZSBidWlsZDwvbGk+CiAgPGxpPkZyaWRheSBEZWMuIDE3LCAyMDA0IC0gTWlsZXN0b25lIDQgKDMuMSBNNCkgLSBzdGFibGUgYnVpbGQ8L2xpPgogIDxsaT5GcmlkYXkgRmViLiAxOCwgMjAwNSZuYnNwOyAtIE1pbGVzdG9uZSA1ICgzLjEgTTUpIC0gc3RhYmxlIGJ1aWxkPC9saT4KICA8bGk+RnJpZGF5IEFwci4gMSwgMjAwNSAtIE1pbGVzdG9uZSA2ICgzLjEgTTYpIC0gc3RhYmxlIGJ1aWxkIC0gQVBJIGNvbXBsZXRlIAogICAgLSBBUEkgZnJlZXplPC9saT4KICA8bGk+RnJpZGF5IE1heSAxMywgMjAwNSAtIE1pbGVzdG9uZSA3ICgzLjEgTTcpIC0gc3RhYmxlIGJ1aWxkIC0gZmVhdHVyZSBjb21wbGV0ZSAKICAgIC0gZGV2ZWxvcG1lbnQgZnJlZXplIC0gbG9jayBkb3duIGFuZCB0ZXN0aW5nIGJlZ2luczwvbGk+CjwvdWw+CjxwPlRoZSAzLjEgcmVsZWFzZSBpcyB0YXJnZXRlZCBmb3IgbGF0ZSBKdW5lIDIwMDUuIEFsbCByZWxlYXNlIGRlbGl2ZXJhYmxlcyB3aWxsIAogIGJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgYXMgc29vbiBhcyB0aGUgcmVsZWFzZSBoYXMgYmVlbiB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCAKICBpbiB0aGUgdGFyZ2V0IG9wZXJhdGluZyBjb25maWd1cmF0aW9ucyBsaXN0ZWQgYmVsb3cuPC9wPgo8aDI+PGEgbmFtZT0iVGFyZ2V0T3BlcmF0aW5nRW52aXJvbm1lbnRzIj48L2E+VGFyZ2V0IE9wZXJhdGluZyBFbnZpcm9ubWVudHM8L2gyPgo8cD5JbiBvcmRlciB0byByZW1haW4gY3VycmVudCwgZWFjaCBFY2xpcHNlIHJlbGVhc2UgdGFyZ2V0cyByZWFzb25hYmx5IGN1cnJlbnQKdmVyc2lvbnMgb2YgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIGVudmlyb25tZW50cy48L3A+CjxwPk1vc3Qgb2YgdGhlIEVjbGlwc2UgU0RLIGlzICZxdW90O3B1cmUmcXVvdDsgSmF2YZkgY29kZSBhbmQgaGFzIG5vIGRpcmVjdApkZXBlbmRlbmNlIG9uIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uIFRoZSBjaGllZiBkZXBlbmRlbmNlIGlzIHRoZXJlZm9yZQpvbiB0aGUgSmF2YSAyIFBsYXRmb3JtIGl0c2VsZi4gVGhlIDMuMSByZWxlYXNlIG9mIHRoZSBFY2xpcHNlIFByb2plY3QgaXMgd3JpdHRlbgphbmQgY29tcGlsZWQgYWdhaW5zdCB2ZXJzaW9uIDEuNCBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIEFQSXMsIGFuZCB0YXJnZXRlZCB0bwpydW4gb24gdmVyc2lvbiAxLjQgb2YgdGhlIEphdmEgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZCBFZGl0aW9uLjwvcD4KPHA+VGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIHJ1bm5pbmcgYXRvcAphIHZhcmlldHkgb2Ygb3BlcmF0aW5nIHN5c3RlbXMuIFdlIGZvY3VzIEVjbGlwc2UgdGVzdGluZyBvbiBhIGhhbmRmdWwgb2YgcG9wdWxhcgo8c3BhbiBjbGFzcz0iaGVhZGVyIj5jb21iaW5hdGlvbnMgb2Ygb3BlcmF0aW5nIHN5c3RlbSBhbmQgSmF2YSAyIFBsYXRmb3JtOyB0aGVzZQphcmUgb3VyIDxlbT5yZWZlcmVuY2UgcGxhdGZvcm1zPC9lbT4uIEVjbGlwc2UgdW5kb3VidGVkbHkgcnVucyBmaW5lIGluIG1hbnkKb3BlcmF0aW5nIGVudmlyb25tZW50cyBiZXlvbmQgdGhlIHJlZmVyZW5jZSBwbGF0Zm9ybXMgd2UgdGVzdC4gSG93ZXZlciwgc2luY2Ugd2UKZG8gbm90IHN5c3RlbWF0aWNhbGx5IHRlc3QgdGhlbSB3ZSBjYW5ub3Qgdm91Y2ggZm9yIHRoZW0uIFByb2JsZW1zIGVuY291bnRlcmVkCndoZW4gcnVubmluZyBFY2xpcHNlIG9uIG5vbi1yZWZlcmVuY2UgcGxhdGZvcm0gdGhhdCBjYW5ub3QgYmUgcmVjcmVhdGVkIG9uIGFueQpyZWZlcmVuY2UgcGxhdGZvcm0gd2lsbCBiZSBnaXZlbiBsb3dlciBwcmlvcml0eSB0aGFuIHByb2JsZW1zIHdpdGggcnVubmluZwpFY2xpcHNlIG9uIGEgcmVmZXJlbmNlIHBsYXRmb3JtLjwvc3Bhbj48L3A+CjxwPkVjbGlwc2UgU0RLIDMuMSBpcyB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBvbiB0aGUgZm9sbG93aW5nIHJlZmVyZW5jZSBwbGF0Zm9ybXMgCiAgKHRoaXMgbGlzdCBpcyB1cGRhdGVkIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGUgcmVsZWFzZSBjeWNsZSk6PC9wPgo8dGFibGUgd2lkdGg9IjgyMSIgYm9yZGVyPSIxIj4KICA8dHIgYmdjb2xvcj0iI0NDQ0NDQyI+CiAgICA8dGggY29sc3Bhbj0iNCI+CiAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+CiAgICAgICAgPGI+PGZvbnQgc2l6ZT0iKzEiPkVjbGlwc2UgUmVmZXJlbmNlIFBsYXRmb3JtczwvZm9udD48L2I+CiAgICAgIDwvZGl2PgogICAgPC90aD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMjA1Ij48Yj5PcGVyYXRpbmcgc3lzdGVtPC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijc2Ij48Yj5Qcm9jZXNzb3IgYXJjaGl0ZWN0dXJlPC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij48Yj5XaW5kb3cgc3lzdGVtPC9iPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+PGI+SmF2YSAyIFBsYXRmb3JtPC9iPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+TWljcm9zb2Z0IFdpbmRvd3MgWFA8L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+SW50ZWwgeDg2PC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPldpbjMyPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDUzIj5TdW4gSmF2YSAyIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS40LjJfMDYgZm9yIE1pY3Jvc29mdCAKICAgICAgV2luZG93czwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+TWljcm9zb2Z0IFdpbmRvd3MgWFA8L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+SW50ZWwgeDg2PC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPldpbjMyPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDUzIj4gPHA+SUJNIDMyLWJpdCBTREsgZm9yIFdpbmRvd3MsIEphdmEgMiBUZWNobm9sb2d5IEVkaXRpb24sIAogICAgICAgIFZlcnNpb24gMS40LjJfMDE8L3A+CiAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPk1pY3Jvc29mdCBXaW5kb3dzIFhQPC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5XaW4zMjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+U3VuIEphdmEgMiBTdGFuZGFyZCBFZGl0aW9uIDUuMCBmb3IgTWljcm9zb2Z0IFdpbmRvd3M8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPlJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCBXUyAzPC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5HVEs8L3RkPgogICAgPHRkIHdpZHRoPSI0NTMiPlN1biBKYXZhIDIgU3RhbmRhcmQgRWRpdGlvbiwgMS40LjJfMDYgZm9yIExpbnV4IHg4NjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+UmVkIEhhdCBFbnRlcnByaXNlIExpbnV4IFdTIDM8L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+SW50ZWwgeDg2PC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPkdUSzwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+SUJNIDMyLWJpdCBTREsgZm9yIExpbnV4IG9uIEludGVsIGFyY2hpdGVjdHVyZSwgSmF2YSAyIFRlY2hub2xvZ3kgCiAgICAgIEVkaXRpb24sIFZlcnNpb24gMS40LjJfMDE8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPlNMRVMgOTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijc2Ij5JbnRlbCB4ODY8L3RkPgogICAgPHRkIHdpZHRoPSI1OSI+R1RLPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDUzIj5TdW4gSmF2YSAyIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS40LjJfMDYgZm9yIExpbnV4IHg4NjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+U0xFUyA5PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5HVEs8L3RkPgogICAgPHRkIHdpZHRoPSI0NTMiPklCTSAzMi1iaXQgU0RLIGZvciBMaW51eCBvbiBJbnRlbCBhcmNoaXRlY3R1cmUsIEphdmEgMiBUZWNobm9sb2d5IAogICAgICBFZGl0aW9uLCBWZXJzaW9uIDEuNC4yXzAxPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMjA1Ij5TdW4gU29sYXJpcyA4PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPlNQQVJDPC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPk1vdGlmPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDUzIj5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgMS40LjJfMDYgZm9yIFNvbGFyaXMgU1BBUkM8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPkhQIEhQLVVYIDExaTwvdGQ+CiAgICA8dGQgd2lkdGg9Ijc2Ij5ocDkwMDA8YnI+CiAgICAgIFBBLVJJU0M8L3RkPgogICAgPHRkIHdpZHRoPSI1OSI+TW90aWY8L3RkPgogICAgPHRkIHdpZHRoPSI0NTMiPjxzcGFuIGNsYXNzPSJoZWFkZXIiPkhQLVVYIFNESyBmb3IgdGhlIEphdmEgMiBwbGF0Zm9ybSwgdmVyc2lvbiAKICAgICAgMS40LjIuMDYgZm9yIGhwOTAwMCBQQS1SSVNDPC9zcGFuPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSIgaGVpZ2h0PSIyMSI+SUJNIEFJWCA1TCBWZXJzaW9uIDUuMjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijc2Ij5Qb3dlclBDPC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPk1vdGlmPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDUzIj4gPHA+SUJNIDMyLWJpdCBTREsgZm9yIEFJWCwgSmF2YSAyIFRlY2hub2xvZ3kgRWRpdGlvbiwgVmVyc2lvbiAKICAgICAgICAxLjQuMjwvcD4KICAgIDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+QXBwbGUgTWFjIE9TIFggMTAuMzwvdGQ+CiAgICA8dGQgd2lkdGg9Ijc2Ij5Qb3dlclBDPC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPkNhcmJvbjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+SmF2YSAyIFN0YW5kYXJkIEVkaXRpb24KICAgICAgMS40LjIgZm9yIE1hYyBPUyBYPC90ZD4KICA8L3RyPgo8L3RhYmxlPgo8cD5BbHRob3VnaCB1bnRlc3RlZCwgRWNsaXBzZSBzaG91bGQgd29yayBmaW5lIG9uIG90aGVyIE9TZXMgdGhhdCBzdXBwb3J0IHRoZQpzYW1lIHdpbmRvdyBzeXN0ZW0uIEZvciBXaW4zMjogV2luZG93cyA5OCwgTUUsIE5ULCAyMDAwLCBhbmQgU2VydmVyIDIwMDM7IFNXVApIVE1MIHZpZXdlciByZXF1aXJlcyBJbnRlcm5ldCBFeHBsb3JlciA1IChvciBoaWdoZXIpLiBGb3IgR1RLIG9uIG90aGVyIExpbnV4CnN5c3RlbXM6IHZlcnNpb24gMi4yLjEgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQgYW5kIGFzc29jaWF0ZWQgbGlicmFyZXMgKEdMaWIsClBhbmdvKTsgU1dUIEhUTUwgdmlld2VyIHJlcXVpcmVzIE1vemlsbGEgMS40R1RLMi4gRm9yIE1vdGlmIG9uIG90aGVyIExpbnV4CnN5c3RlbXM6IE9wZW4gTW90aWYgMi4xIChpbmNsdWRlZCk7IFNXVCBIVE1MIHZpZXdlciByZXF1aXJlcyBNb3ppbGxhIDEuNEdUSzIuPC9wPgo8cD5BbiBlYXJseSBhY2Nlc3MgdmVyc2lvbiBvZiBFY2xpcHNlIGlzIGFsc28gYXZhaWxhYmxlIGZvciA2NC1iaXQgTGludXggR1RLLgpUZXN0aW5nIGhhcyBiZWVuIGxpbWl0ZWQgdG8gZWFybHkgYWNjZXNzIDY0LWJpdCBKMlNFcyBydW5uaW5nIG9uIEFNRDY0CnByb2Nlc3NvcnMuPC9wPgo8cD5TV1QgaXMgYWxzbyBzdXBwb3J0ZWQgb24gdGhlIFFOWCBOZXV0cmlubyBvcGVyYXRpbmcgc3lzdGVtLCB4ODYgcHJvY2Vzc29yLApQaG90b24gd2luZG93IHN5c3RlbSwgYW5kIElCTSBKOSBWTSB2ZXJzaW9uIDIuMC4gRWNsaXBzZSAzLjEgb24gV2luZG93cyBvciBMaW51eApjYW4gYmUgdXNlZCBjcm9zcyBkZXZlbG9wIFFOWCBhcHBsaWNhdGlvbnMuIChFY2xpcHNlIDMuMSBpcyB1bmF2YWlsYWJsZSBvbiBRTlgKYmVjYXVzZSB0aGVyZSBpcyBjdXJyZW50bHkgbm8gMS40IEoyU0UgZm9yIFFOWC4pPC9wPgo8aDQ+SW50ZXJuYXRpb25hbGl6YXRpb248L2g0Pgo8cD5UaGUgRWNsaXBzZSBQbGF0Zm9ybSBpcyBkZXNpZ25lZCBhcyB0aGUgYmFzaXMgZm9yIGludGVybmF0aW9uYWxpemVkIHByb2R1Y3RzLgpUaGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgcHJvdmlkZWQgYnkgdGhlIEVjbGlwc2UgU0RLIGNvbXBvbmVudHMsIGluY2x1ZGluZwpkaWFsb2dzIGFuZCBlcnJvciBtZXNzYWdlcywgYXJlIGV4dGVybmFsaXplZC4gVGhlIEVuZ2xpc2ggc3RyaW5ncyBhcmUgcHJvdmlkZWQKYXMgdGhlIGRlZmF1bHQgcmVzb3VyY2UgYnVuZGxlcy48L3A+CjxwPkxhdGluLTEgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiBhbGwgb2YgdGhlIGFib3ZlCm9wZXJhdGluZyBlbnZpcm9ubWVudHM7IERCQ1MgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiB0aGUKV2luZG93cywgR1RLLCBhbmQgTW90aWYgd2luZG93IHN5c3RlbXM7IEJJREkgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQpFY2xpcHNlIFNESyBvbmx5IG9uIFdpbmRvd3Mgb3BlcmF0aW5nIGVudmlyb25tZW50cy4KPHA+VGhlIEVjbGlwc2UgU0RLIHN1cHBvcnRzIEdCIDE4MDMwLCB0aGUgbmV3IENoaW5lc2UgY29kZSBwYWdlIHN0YW5kYXJkLCBvbgpXaW5kb3dzIFhQIGFuZCAyMDAwLCBhbmQgTGludXguCjxwPkdlcm1hbiBhbmQgSmFwYW5lc2UgbG9jYWxlcyBhcmUgdGVzdGVkLjwvcD4KPGg0PkJJREkgc3VwcG9ydDwvaDQ+CjxwPlNXVCBmdWxseSBzdXBwb3J0cyBCSURJIG9uIFdpbmRvd3MgKG9ubHkpLiBPbiBMaW51eCBHVEssIFNXVCBzdXBwb3J0cyBlbnRlcmluZyAKICBhbmQgZGlzcGxheWluZyBCSURJIHRleHQuIFRoZSB3aWRnZXQgb3JpZW50YXRpb24gb2YgSkZhY2Ugd2luZG93cyBkZWZhdWx0cyBhcHByb3ByaWF0ZWx5IAogIGluIEJJREkgbG9jYWxlcyBvbiBXaW5kb3dzIChvbmx5KS48L3A+CjxwPlRoZSBFY2xpcHNlIFNESyBpcyBhIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRhcmdldGVkIGF0IHRlY2huaWNhbCBwcm9mZXNzaW9uYWxzIAogIC0gbm90IGFuIGVuZCB1c2VyIGFwcGxpY2F0aW9uLiBIb3dldmVyLCB0aGUgRWNsaXBzZSBTREsgdG9vbHMgd2lsbCBwZXJtaXQgdGVjaG5pY2FsIAogIHByb2Zlc3Npb25hbHMgd2hvIGFyZSB3b3JraW5nIGluIEVuZ2xpc2ggdG8gYnVpbGQgSGVicmV3L0FyYWJpYyBlbmQgdXNlciBKYXZhIAogIHByb2dyYW1zIHdoaWNoIGFyZSB0aGVtc2VsdmVzIG5vdCBiYXNlZCBvbiB0aGUgRWNsaXBzZSBTREsuIFRoZSBCSURJIHN1cHBvcnQgCiAgaW4gdGhlIEVjbGlwc2UgU0RLIGFsbG93cyBhIEphdmEgcHJvZ3JhbW1lciB0byB3b3JrIHdpdGggQklESSBzdHJpbmdzLCBjb2RlIAogIGNvbW1lbnRzLCBldGMuIGJ1dCB0aGUgRWNsaXBzZSBTREsgaXRzZWxmIGlzIG5vdCBkZXNpZ25lZCB0byBiZSBsb2NhbGl6ZWQgZm9yIAogIEJJREkgbG9jYWxlcyBhbmQgaXRzIHdpZGdldCBvcmllbnRhdGlvbiBjYW4gbm90IGJlIGNoYW5nZWQuPC9wPgo8aDI+PGEgbmFtZT0iQ29tcGF0aWJpbGl0eSI+PC9hPkNvbXBhdGliaWxpdHkgd2l0aCBQcmV2aW91cyBSZWxlYXNlczwvaDI+CjxoMz5Db21wYXRpYmlsaXR5IG9mIFJlbGVhc2UgMy4xIHdpdGggMy4wPC9oMz4KPHA+RWNsaXBzZSAzLjEgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggRWNsaXBzZSAzLjAuPC9wPgo8cD48Yj5BUEkgQ29udHJhY3QgQ29tcGF0aWJpbGl0eTo8L2I+IEVjbGlwc2UgU0RLIDMuMSB3aWxsIGJlIHVwd2FyZHMKY29udHJhY3QtY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBleGNlcHQgaW4gdGhvc2UgYXJlYXMgbm90ZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvfmNoZWNrb3V0fi9vcmcuZWNsaXBzZS5wbGF0Zm9ybS5kb2MuaXN2L3BvcnRpbmcvZWNsaXBzZV8zXzFfcG9ydGluZ19ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxlbT5FY2xpcHNlCjMuMSBQbHVnLWluIE1pZ3JhdGlvbiBHdWlkZTwvZW0+PC9hPi4gUHJvZ3JhbXMgdGhhdCB1c2UgYWZmZWN0ZWQgQVBJcyBhbmQgZXh0ZW5zaW9uIHBvaW50cwp3aWxsIG5lZWQgdG8gYmUgcG9ydGVkIHRvIEVjbGlwc2UgU0RLIDMuMSBBUElzLiBEb3dud2FyZCBjb250cmFjdCBjb21wYXRpYmlsaXR5CmlzIG5vdCBzdXBwb3J0ZWQuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNvbXBsaWFuY2Ugd2l0aCBFY2xpcHNlIFNESyAzLjEKQVBJcyB3b3VsZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBBUElzLiBSZWZlciB0byA8aT48YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9qYXZhLWFwaS1ldm9sdXRpb24uaHRtbCI+RXZvbHZpbmcKSmF2YS1iYXNlZCBBUElzPC9hPjwvaT4gZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUga2luZHMgb2YgQVBJIGNoYW5nZXMgdGhhdAptYWludGFpbiBjb250cmFjdCBjb21wYXRpYmlsaXR5LjwvcD4KPHA+PGI+QmluYXJ5IChwbHVnLWluKSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMy4xIHdpbGwgYmUgdXB3YXJkcwpiaW5hcnktY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBleGNlcHQgaW4gdGhvc2UgYXJlYXMgbm90ZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvfmNoZWNrb3V0fi9vcmcuZWNsaXBzZS5wbGF0Zm9ybS5kb2MuaXN2L3BvcnRpbmcvZWNsaXBzZV8zXzFfcG9ydGluZ19ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxlbT5FY2xpcHNlCjMuMSBQbHVnLWluIE1pZ3JhdGlvbiBHdWlkZTwvZW0+PC9hPi4gRG93bndhcmQgcGx1Zy1pbiBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuClBsdWctaW5zIGZvciBFY2xpcHNlIFNESyAzLjEgd2lsbCBub3QgYmUgdXNhYmxlIGluIEVjbGlwc2UgU0RLIDMuMC4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VjbGlwc2UvZGV2ZWxvcG1lbnQvamF2YS1hcGktZXZvbHV0aW9uLmh0bWwiPkV2b2x2aW5nCkphdmEtYmFzZWQgQVBJczwvYT48L2k+IGZvciBhIGRpc2N1c3Npb24gb2YgdGhlIGtpbmRzIG9mIEFQSSBjaGFuZ2VzIHRoYXQKbWFpbnRhaW4gYmluYXJ5IGNvbXBhdGliaWxpdHkuCjxwPjxiPlNvdXJjZSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMy4xIHdpbGwgYmUgdXB3YXJkcwpzb3VyY2UtY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBleGNlcHQgaW4gdGhlIGFyZWFzIG5vdGVkIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvaW5kZXguY2dpL35jaGVja291dH4vb3JnLmVjbGlwc2UucGxhdGZvcm0uZG9jLmlzdi9wb3J0aW5nL2VjbGlwc2VfM18xX3BvcnRpbmdfZ3VpZGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48ZW0+RWNsaXBzZQozLjEgUGx1Zy1pbiBNaWdyYXRpb24gR3VpZGU8L2VtPjwvYT4uIFRoaXMgbWVhbnMgdGhhdCBzb3VyY2UgZmlsZXMgd3JpdHRlbiB0byB1c2UgRWNsaXBzZQpTREsgMy4wIEFQSXMgbWlnaHQgc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgYW5kIHJ1biBhZ2FpbnN0IEVjbGlwc2UgU0RLIDMuMSBBUElzLAphbHRob3VnaCB0aGlzIGlzIG5vdCBndWFyYW50ZWVkLiBEb3dud2FyZCBzb3VyY2UgY29tcGF0aWJpbGl0eSBpcyBub3Qgc3VwcG9ydGVkLgpJZiBzb3VyY2UgZmlsZXMgdXNlIG5ldyBFY2xpcHNlIFNESyBBUElzLCB0aGV5IHdpbGwgbm90IGJlIHVzYWJsZSB3aXRoIGFuCmVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBTREsuCjxwPjxiPldvcmtzcGFjZSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMy4xIHdpbGwgYmUgdXB3YXJkcwp3b3Jrc3BhY2UtY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdAp3b3Jrc3BhY2VzIGFuZCBwcm9qZWN0cyBjcmVhdGVkIHdpdGggRWNsaXBzZSBTREsgMy4wIGNhbiBiZSBzdWNjZXNzZnVsbHkgb3BlbmVkCmJ5IEVjbGlwc2UgU0RLIDMuMSBhbmQgdXBncmFkZWQgdG8gYSAzLjEgd29ya3NwYWNlLiBUaGlzIGluY2x1ZGVzIGJvdGggaGlkZGVuCm1ldGFkYXRhLCB3aGljaCBpcyBsb2NhbGl6ZWQgdG8gYSBwYXJ0aWN1bGFyIHdvcmtzcGFjZSwgYXMgd2VsbCBhcyBtZXRhZGF0YQpmaWxlcyBmb3VuZCB3aXRoaW4gYSB3b3Jrc3BhY2UgcHJvamVjdCAoZS5nLiwgdGhlIC5wcm9qZWN0IGZpbGUpLCB3aGljaCBtYXkKcHJvcGFnYXRlIGJldHdlZW4gd29ya3NwYWNlcyB2aWEgZmlsZSBjb3B5aW5nIG9yIHRlYW0gcmVwb3NpdG9yaWVzLiBJbmRpdmlkdWFsCnBsdWctaW5zIGRldmVsb3BlZCBmb3IgRWNsaXBzZSBTREsgMy4xIHNob3VsZCBwcm92aWRlIHNpbWlsYXIgdXB3YXJkcwpjb21wYXRpYmlsaXR5IGZvciB0aGVpciBoaWRkZW4gYW5kIHZpc2libGUgd29ya3NwYWNlIG1ldGFkYXRhIGNyZWF0ZWQgYnkgZWFybGllcgp2ZXJzaW9uczsgMy4xIHBsdWctaW4gZGV2ZWxvcGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgdGhlaXIKcGx1Zy1pbnMgcmVjb2duaXplIDMuMSwgMy4wLCAyLjEsIGFuZCAyLjAgbWV0YWRhdGEgYW5kIHByb2Nlc3MgaXQgYXBwcm9wcmlhdGVseS4KVXNlciBpbnRlcmZhY2Ugc2Vzc2lvbiBzdGF0ZSBtYXkgYmUgZGlzY2FyZGVkIHdoZW4gYSB3b3Jrc3BhY2UgaXMgdXBncmFkZWQuCkRvd253YXJkIHdvcmtzcGFjZSBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuIEEgd29ya3NwYWNlIGNyZWF0ZWQgKG9yCm9wZW5lZCkgYnkgYSBwcm9kdWN0IGJhc2VkIG9uIEVjbGlwc2UgMy4xIHdpbGwgYmUgdW51c2FibGUgd2l0aCBhIHByb2R1Y3QgYmFzZWQKYW4gZWFybGllciB2ZXJzaW9uIG9mIEVjbGlwc2UuIFZpc2libGUgbWV0YWRhdGEgZmlsZXMgY3JlYXRlZCAob3Igb3ZlcndyaXR0ZW4pCmJ5IEVjbGlwc2UgMy4xIHdpbGwgZ2VuZXJhbGx5IGJlIHVudXNhYmxlIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiBFY2xpcHNlLgo8cD48Yj5Ob24tY29tcGxpYW50IHVzYWdlIG9mIEFQSSdzPC9iPjogQWxsIG5vbi1BUEkgbWV0aG9kcyBhbmQgY2xhc3NlcywgYW5kCmNlcnRhaW5seSBldmVyeXRoaW5nIGluIGEgcGFja2FnZSB3aXRoICZxdW90O2ludGVybmFsJnF1b3Q7IGluIGl0cyBuYW1lLCBhcmUKY29uc2lkZXJlZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIG1heSB2YXJ5IGJldHdlZW4gb3BlcmF0aW5nIGVudmlyb25tZW50CmFuZCBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuIENsaWVudCBwbHVnLWlucyB0aGF0IGRpcmVjdGx5IGRlcGVuZApvbiBhbnl0aGluZyBvdGhlciB0aGFuIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBFY2xpcHNlIFNESyBBUEkgYXJlIGluaGVyZW50bHkKdW5zdXBwb3J0YWJsZSBhbmQgcmVjZWl2ZSBubyBndWFyYW50ZWVzIGFib3V0IGNvbXBhdGliaWxpdHkgd2l0aGluIGEgc2luZ2xlCnJlbGVhc2UgbXVjaCBsZXNzIHdpdGggYW4gZWFybGllciByZWxlYXNlcy4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9hcnRpY2xlcy9BcnRpY2xlLUFQSSUyMHVzZS9lY2xpcHNlLWFwaS11c2FnZS1ydWxlcy5odG1sIj5Ib3cKdG8gVXNlIHRoZSBFY2xpcHNlIEFQSTwvYT48L2k+IGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gd3JpdGUgY29tcGxpYW50CnBsdWctaW5zLgo8aDI+VGhlbWVzIGFuZCBQcmlvcml0aWVzPC9oMj4KPHA+PHN0cm9uZz48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiA8L3N0cm9uZz5UaGUgCiAgY2hhbmdlcyB1bmRlciBjb25zaWRlcmF0aW9uIGZvciB0aGUgbmV4dCByZWxlYXNlIG9mIEVjbGlwc2UgUGxhdGZvcm0sIEpEVCwgYW5kIAogIFBERSBhZGRyZXNzIG1ham9yIHRoZW1lcyBpZGVudGlmaWVkIGJ5IHRoZSBFY2xpcHNlIFJlcXVpcmVtZW50cyBDb3VuY2lsLiAoVGhlIAogIHRoZW1lIHN5bm9wc2VzIGhlcmUgYXJlIGN1dCBkb3duIHZlcnNpb25zIG9mIHRoZSBvbmVzIGluIEVjbGlwc2UgUmVxdWlyZW1lbnRzIAogIENvdW5jaWw6IFRoZW1lcyBhbmQgUHJpb3JpdGllcyBkYXRlZCBEZWMuIDE1LCAyMDA0IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9vcmcvY291bmNpbHMvMjAwNDEyMTVFY2xpcHNlVFBGaW5hbERyYWZ0LnBkZiI+cGRmKTwvYT4uIAogIFRoZSB0aGVtZXMgYXJlIG5vdCBpbiBwcmlvcml0eSBvcmRlci48L3A+Cjx1bD4KICA8bGk+PHN0cm9uZz48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBTY2FsaW5nIFVwPC9zdHJvbmc+IAogICAgLSBUaGlzIHJlZmVycyB0byB0aGUgbmVlZCBmb3IgRWNsaXBzZSB0byBkZWFsIHdpdGggZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQgCiAgICBvbiBhIGxhcmdlciBhbmQgbW9yZSBjb21wbGV4IHNjYWxlLiBJbmNyZWFzaW5nIGNvbXBsZXhpdGllcyBhcmlzZSBmcm9tIGxhcmdlIAogICAgZGV2ZWxvcG1lbnQgdGVhbXMgZGlzdHJpYnV0ZWQgaW4gZGlmZmVyZW50IGxvY2F0aW9ucywgbGFyZ2Ugc291cmNlIGNvZGUgYmFzZXMgCiAgICBhbmQgZnJhZ2lsZSBidWlsZCBlbnZpcm9ubWVudHMgdGhhdCBoYXZlIGJlZW4gZGV2ZWxvcGVkIGluY3JlbWVudGFsbHkgb3ZlciAKICAgIHRpbWUsIHRoZSBkeW5hbWljIG5hdHVyZSBvZiBuZXcgc291cmNlIGNvZGUgYmFzZXMgYW5kIHRoZWlyIGludGVyYWN0aW9uIHdpdGggCiAgICBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQsIGFuZCBidWlsZCBlbnZpcm9ubWVudHMgaW52b2x2aW5nIG1hbnkgZGlmZmVyZW50IAogICAgdG9vbHMgYW5kIGJ1aWxkIHJ1bGVzLjwvbGk+CiAgPGxpPjxzdHJvbmc+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gRW50ZXJwcmlzZSAKICAgIFJlYWR5PC9zdHJvbmc+IC0gRWNsaXBzZSBzaG91bGQgYmUgaW1wcm92ZWQgdG8gYWxsb3cgaXQgdG8gYmUgYmV0dGVyIHVzZWQgCiAgICBieSBsYXJnZSBkZXZlbG9wbWVudCBvcmdhbml6YXRpb25zLjwvbGk+CiAgPGxpPjxzdHJvbmc+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gRGVzaWduIGZvciAKICAgIEV4dGVuc2liaWxpdHk6IEJlIGEgQmV0dGVyIFBsYXRmb3JtPC9zdHJvbmc+IC0gV2l0aGluIHRoZSBFY2xpcHNlIGNvbW11bml0eSwgCiAgICBtYW55IGRldmVsb3BtZW50IHByb2plY3RzIGFyZSBkZWZpbmluZyBuZXcgZGV2ZWxvcG1lbnQgcGxhdGZvcm1zIG9uIHRvcCBvZiAKICAgIHRoZSBFY2xpcHNlIFBsYXRmb3JtLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybSBtdXN0IGV2b2x2ZSB0byBiZXR0ZXIgc3VwcG9ydCB0aGlzIAogICAgdHlwZSBvZiB1c2FnZSwgaW5jbHVkaW5nIHByb3ZpZGluZyBuZXcgY29tbW9uIGluZnJhc3RydWN0dXJlIGFuZCBhYnN0cmFjdGlvbiAKICAgIGxheWVycyBuZWVkZWQgYnkgdXBwZXIgcGxhdGZvcm1zIGFuZCBhZGRpbmcgQVBJcyB0byBleHBvc2UgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSAKICAgIG9ubHkgYXZhaWxhYmxlIGludGVybmFsbHkgc28gdGhhdCB1cHBlciBwbGF0Zm9ybXMgY2FuIG1vcmUgcmVhZGlseSBpbnRlZ3JhdGUgCiAgICB3aXRoIGFuZCByZXVzZSB3aGF0J3MgYWxyZWFkeSB0aGVyZS48L2xpPgogIDxsaT48Yj5SaWNoIENsaWVudCBQbGF0Zm9ybSA8L2I+LSBUaGUgRWNsaXBzZSBSQ1AgaXMgYSBKYXZhLWJhc2VkIGFwcGxpY2F0aW9uIAogICAgZnJhbWV3b3JrIGZvciB0aGUgZGVza3RvcC4gQnVpbGRpbmcgb24gdGhlIEVjbGlwc2UgcnVudGltZSBhbmQgdGhlIG1vZHVsYXIgCiAgICBwbHVnLWluIHN0b3J5LCBpdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhcHBsaWNhdGlvbnMgcmFuZ2luZyBmcm9tIGNvbW1hbmQgbGluZSAKICAgIHRvb2xzIHRvIGZlYXR1cmUtcmljaCBhcHBsaWNhdGlvbnMgdGhhdCB0YWtlIGZ1bGwgYWR2YW50YWdlIG9mIFNXVCdzIG5hdGl2ZSAKICAgIHBsYXRmb3JtIGludGVncmF0aW9uIGFuZCB0aGUgbWFueSBvdGhlciByZXVzYWJsZSBjb21wb25lbnRzIHRoYXQgdGhlIEVjbGlwc2UgCiAgICBwbGF0Zm9ybSBwcm92aWRlcy4gVGhpcyB0aGVtZSBpbmNsdWRlcyB3b3JrIHRvIGVuaGFuY2UgdGhlIFJDUCwgYW5kIHRvIHByb3ZpZGUgCiAgICBQREUgc3VwcG9ydCBmb3IgZGV2ZWxvcGluZyBhbmQgZGVwbG95aW5nIFJDUC1iYXNlZCBhcHBsaWNhdGlvbnMuPC9saT4KICA8bGk+PGI+U2ltcGxlIHRvIFVzZTwvYj4gLSBUaGUgRWNsaXBzZSBwbGF0Zm9ybSBuZWVkcyB0byBub3Qgb25seSBwcm92aWRlIHRoZSAKICAgIGZlYXR1cmVzIHRoYXQgYWR2YW5jZWQgdXNlcnMgZGVtYW5kLCBidXQgYWxzbyBiZSBzb21ldGhpbmcgdGhhdCBtb3N0IHVzZXJzIAogICAgZmluZCBzaW1wbGUgdG8gdXNlLiBUaGlzIHRoZW1lIGluY2x1ZGVzIGVhc2Utb2YtdXNlIHJldmlld3Mgb2YgZXhpc3RpbmcgZmVhdHVyZXMsIAogICAgYW5kIHdvcmsgdGhhdCBoZWxwcyBtYWtlIEVjbGlwc2UtYmFzZWQgcHJvZHVjdHMgc2ltcGxlIHRvIHVzZSBmb3IgdXNlcnMgd2l0aCAKICAgIHdpZGVseS12YXJ5aW5nIGJhY2tncm91bmRzIGFuZCBza2lsbCBzZXRzLjwvbGk+CiAgPGxpPjxiPkFwcGVhbGluZyB0byB0aGUgQnJvYWRlciBDb21tdW5pdHk8L2I+IC0gVGhpcyB0aGVtZSBpbmNsdWRlcyB3b3JrIHRoYXQgCiAgICBncm93cyBkZWVwZXIgcm9vdHMgaW50byB0aGUgdmFyaW91cyBPUy1zcGVjaWZpYyBjb21tdW5pdGllcywgc3ByZWFkcyBFY2xpcHNlIAogICAgdG8gYWRkaXRpb25hbCBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLCBhbmQgYnVpbGRzIGJyaWRnZXMgdG8gb3RoZXIgb3BlbiBzb3VyY2UgCiAgICBjb21tdW5pdGllcyBhbmQgdmVydGljYWwgbWFya2V0IHNlZ21lbnRzPC9saT4KPC91bD4KPHA+SW4gYWRkaXRpb24sIHRoZXJlIGFyZSBhIGZldyBpbXBvcnRhbnQgRWNsaXBzZSBQbGF0Zm9ybSBpbXByb3ZlbWVudHMgdGhhdCBkbyAKICBub3QgbmF0dXJhbGx5IGZpdCBpbnRvIGFueSBvZiB0aGUgYWJvdmUgdGhlbWVzLjwvcD4KRWFjaCBvZiB0aGUgMyBwcm9qZWN0cyB1bmRlciB0aGUgRWNsaXBzZSB0b3AtbGV2ZWwgcHJvamVjdCBpcyBjb3ZlcmVkIGluIGl0cwpvd24gc2VjdGlvbjoKPHVsPgogIDxsaT48YSBocmVmPSIjUGxhdGZvcm0iPkVjbGlwc2UgUGxhdGZvcm0gcHJvamVjdDwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjSkRUIj5KYXZhIGRldmVsb3BtZW50IHRvb2xzIChKRFQpIHByb2plY3Q8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1BERSI+UGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAoUERFKSBwcm9qZWN0PC9hPjwvbGk+CjwvdWw+CjxwPkZvciBlYWNoIHByb2plY3QsIHRoZSBpdGVtcyBsaXN0ZWQgcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgRWNsaXBzZSBvciBhcmVhcyAKICB3aGVyZSBleGlzdGluZyBmZWF0dXJlcyB3aWxsIGJlIHNpZ25pZmljYW50bHkgcmV3b3JrZWQuIEVhY2ggaXRlbSBpbmRpY2F0ZXMgCiAgdGhlIGNvbXBvbmVudHMgbGlrZWx5IGFmZmVjdGVkIGJ5IHRoYXQgd29yayBpdGVtIChtYW55IGl0ZW1zIGludm9sdmUgY29vcmRpbmF0ZWQgCiAgY2hhbmdlcyB0byBzZXZlcmFsIGNvbXBvbmVudHMpLiBOdW1iZXJzIGluIHBhcmVudGhlc2VzIGxpbmsgdG8gYnVnemlsbGEgcHJvYmxlbSAKICByZXBvcnRzIGZvciB0aGF0IHBsYW4gaXRlbS4gCjxoMj48YSBuYW1lPSJQbGF0Zm9ybSI+RWNsaXBzZSBQbGF0Zm9ybSBwcm9qZWN0PC9hPjwvaDI+CjxwPlRoZSBFY2xpcHNlIFBsYXRmb3JtIHByb3ZpZGVzIHRoZSBtb3N0IGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gUGxhbgppdGVtcyByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgb3IgYXJlYXMgd2hlcmUgZXhpc3RpbmcKZmVhdHVyZXMgd2lsbCBiZSBzaWduaWZpY2FudGx5IHJld29ya2VkLjwvcD4KPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPiAKICA8cD48c3Ryb25nPk1hcHBpbmcgbG9naWNhbCB2aWV3cyB0byBwaHlzaWNhbCBmaWxlcyBvbiBkaXNrLjwvc3Ryb25nPiBJbiBzb21lIAogICAgY2FzZXMsIG11bHRpcGxlIGRpc3RpbmN0IG9iamVjdHMgaGFwcGVuIHRvIGJlIHN0b3JlZCBpbiBhIHNpbmdsZSBmaWxlLCBsaWtlIAogICAgYW4gYXJjaGl2ZS4gQ29udmVyc2VseSwgaW4gb3RoZXIgY2FzZXMsIHNvbWV0aGluZyB0aGF0IGlzIGxvZ2ljYWxseSBhIHNpbmdsZSAKICAgIG9iamVjdCBpcyBzdG9yZWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzLiBUaGlzIGRpc2NyZXBhbmN5IGJldHdlZW4gbG9naWNhbCBhbmQgCiAgICBwaHlzaWNhbCBjcmVhdGVzIHByb2JsZW1zIGZvciBjb21tb24gb3BlcmF0aW9ucyBzdWNoIGFzIHNlYXJjaGluZywgY29tcGFyaW5nLCAKICAgIGFuZCB2ZXJzaW9uaW5nLCB3aGljaCBuZWVkIHRvIHdvcmsgaW4gdGhlIHBoeXNpY2FsIHJlYWxtLiBFY2xpcHNlIHNob3VsZCBzdXBwb3J0IAogICAgc29tZSB3YXkgb2YgbWFwcGluZyBiZXR3ZWVuIGEgbG9naWNhbCB2aWV3IGFuZCB0aGUgcGh5c2ljYWwgb3JnYW5pemF0aW9uIG9mIAogICAgZmlsZXMgb24gZGlzay4gW1BsYXRmb3JtIENvcmUsIFBsYXRmb3JtIFVJLCBUZWFtXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMzk2Ij44MDM5NjwvYT4gCiAgICApIFtUaGVtZTogRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5XTwvcD4KICA8cD48c3Ryb25nPkxhcmdlLXNjYWxlIHdvcmtzcGFjZXMuPC9zdHJvbmc+IFNvbWUgbGFyZ2UgY3VzdG9tZXJzIGhhdmUgd29ya3NwYWNlcyAKICAgIGNvbnRhaW5pbmcgc2V2ZXJhbCBodW5kcmVkIHByb2plY3RzLiBTY29wZWQgYnVpbGRzIChhZGRlZCBpbiAzLjApIHdlcmUgYSBzdGVwIAogICAgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiB0b3dhcmRzIG1ha2luZyB0aGVzZSB3b3JrYWJsZS4gRWNsaXBzZSBuZWVkcyB0byBwcm92aWRlIAogICAgYXBwcm9wcmlhdGUgc3VwcG9ydCBmb3IgbGFyZ2Ugd29ya3NwYWNlcyBhbmQgd29ya2luZyBzZXRzLCBhbmQgZW5zdXJlIHRoYXQgCiAgICBldmVyeXRoaW5nIHNjYWxlcyBwcm9wZXJseS4gW1BsYXRmb3JtIENvcmU7IFBsYXRmb3JtIFVJOyBKRFRdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjgiPjcxMTI4PC9hPikgCiAgICBbVGhlbWU6IFNjYWxpbmcgVXBdPC9wPgogIDxwPjxiPlByb2Nlc3MgaW1wcm92ZW1lbnRzIHdydCBwZXJmb3JtYW5jZS48L2I+IEZvciAzLjEgd2Ugc2hvdWxkIGdldCBhIGZpcm0gCiAgICBncmlwIG9uIHNwZWVkIGFuZCBzcGFjZSBwZXJmb3JtYW5jZS4gVG8gZG8gdGhpcyB3ZSBzaG91bGQgKDEpIGlkZW50aWZ5IHdoaWNoIAogICAgYXNwZWN0cyBhcmUgY3JpdGljYWxseSBpbXBvcnRhbnQgcGVyZm9ybWFuY2Utd2lzZTsgKDIpIGVzdGFibGlzaCBiZW5jaG1hcmtzIAogICAgdG8gcXVhbnRpZnkgcGVyZm9ybWFuY2U7IGFuZCAoMykgbG9vayBhdCB3YXlzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuIEJ5IGl0cyAKICAgIG5hdHVyZSwgaXQncyBoYXJkIHRvIHNheSBpbiBhZHZhbmNlIHdoYXQga2luZCBvZiBpbXByb3ZlbWVudHMgd2UnbGwgYmUgYWJsZSAKICAgIHRvIGFjaGlldmUsIG1ha2luZyBpdCBkaWZmaWN1bHQgdG8gbWFrZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYSByZWxlYXNlIAogICAgZGVsaXZlcmFibGUuIEluc3RlYWQsIHdoYXQgd2UgbmVlZCB0byBkbyBmb3IgMy4xIGlzIGNvbW1pdCB0byB0cmFjayBwZXJmb3JtYW5jZSAKICAgIGZyb20gdGhpcyBwb2ludCBvbi4gV2Ugc2hvdWxkIGNhcnJ5IG91dCBwZXJmb3JtYW5jZSByZXZpZXdzICgxKSBhbmQgY3JlYXRlIAogICAgYmVuY2htYXJrcyAoMikgZm9yIGV2ZXJ5IGNvbXBvbmVudCwgYW5kIGZvciBhbnkgY3JpdGljYWwgYXNwZWN0cyB0aGF0IHNwYW4gCiAgICBjb21wb25lbnRzLiBFdmVuIGlmIHdlIGNhbm5vdCBmaW5kIHdheXMgdG8gbWFrZSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBnYWlucyAKICAgICgzKSwgdGhlIGJlbmNobWFya3MgYXJlIHN0aWxsIGNyaXRpY2FsIHRvIEVjbGlwc2UncyBzdWNjZXNzIHRvIHByZXZlbnQgYmFja3NsaWRpbmcgCiAgICBpbiB0aGUgZnV0dXJlLiBUaGUgd29yayBpdGVtIGlzIHRvIGltcHJvdmUgb3VyIHByb2Nlc3Mgd2l0aCByZXNwZWN0IHRvIHBlcmZvcm1hbmNlLiAKICAgIFRoZSBkZWxpdmVyYWJsZXMgYXJlIHRoZSBhdXRvbWF0ZWQgcGVyZm9ybWFuY2UgdGVzdHMsIHRoZSBidWlsZCBwcm9jZXNzIHRoYXQgCiAgICBjb2xsZWN0cyBhbmQgcHVibGlzaGVzIHBlcmZvcm1hbmNlIGRhdGEgY292ZXJpbmcgYWxsIGNyaXRpY2FsIGFzcGVjdHMgb2YgRWNsaXBzZSwgCiAgICBhbmQgdGhlIGNvbW1pdG1lbnQgdG8gbGV2ZXJhZ2UgdGhpcyBkYXRhIHRvIG1vbml0b3Igc3BlZWQgYW5kIHNwYWNlIHBlcmZvcm1hbmNlIAogICAgYXMgcGFydCBhbmQgcGFyY2VsIG9mIGRldmVsb3BpbmcgRWNsaXBzZS4gW0FsbCBFY2xpcHNlIGNvbXBvbmVudHNdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjMiPjcxMTIzPC9hPikgCiAgICBbVGhlbWU6IFNjYWxpbmcgVXBdPC9wPgogIDxwPjxiPk92ZXJoYXVsIHByZWZlcmVuY2VzLjwvYj4gVGhlIHdheSB0aGF0IEVjbGlwc2UgZGVhbHMgd2l0aCBwcmVmZXJlbmNlcyAKICAgIHNob3VsZCBiZSBpbXByb3ZlZC4gVGhlIHdvcmtiZW5jaCBwcmVzZW50YXRpb24gb2YgcHJlZmVyZW5jZXMgZ2VuZXJhbGx5IHVzZXMgCiAgICBhIGNvbXBvbmVudC1vcmllbnRlZCBoaWVyYXJjaHksIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIGJlc3QgY2hvaWNlIGZvciB1c2Vycy4gCiAgICBUaGUgVUkgc2hvdWxkIHByZXNlbnQgcHJlZmVyZW5jZXMgaW4gc3VjaCBhIHdheSB0aGF0IHVzZXJzIGNhbiByZWFkaWx5IGRpc2NvdmVyIAogICAgdGhlbS4gU29tZSBwcmVmZXJlbmNlIHNldHRpbmdzIGhhdmUgc2NvcGVzIChlLmcuLCB3b3Jrc3BhY2Utd2lkZSB2cy4gcGVyIHByb2plY3QpLiAKICAgIFRoZSBVSSBzaG91bGQgaGVscCB0aGUgdXNlciB0byB2aXN1YWxpemUgdGhlc2Ugc2NvcGVzLiBGb3IgdGVhbS13aWRlIHVuaWZvcm1pdHksIAogICAgc29tZSBwcmVmZXJlbmNlcyBzZXR0aW5ncyAoZS5nLiwgY29tcGlsZXIgb3B0aW9ucykgbmVlZCB0byBiZSBzaGFyZWQgKG9yIGltcG9zZWQpIAogICAgYWNyb3NzIHRlYW1zLiBUaGUgVUkgc2hvdWxkIGFsc28gZmFjaWxpdGF0ZSB0aGlzLiBbUGxhdGZvcm0gQ29yZTsgUGxhdGZvcm0gCiAgICBVSTsgVGV4dDsgSkRUIFVJOyBKRFQgQ29yZV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD03MTEyNCI+NzExMjQ8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV08L3A+CiAgPHA+PGI+SW1wcm92ZSBhY3Rpb24gY29udHJpYnV0aW9ucy48L2I+IFNpbXBsaWZ5IHRoZSBwcm9ncmFtbWluZyBtb2RlbCBmb3IgY29udHJpYnV0aW5nIAogICAgbWVudSBhbmQgdG9vbGJhciBpdGVtcyB0byB0aGUgd29ya2JlbmNoIChhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBhcHBlYXJhbmNlIAogICAgYW5kIGJlaGF2aW9yKS4gSW1wcm92ZSBjb250cm9sIG92ZXIgbWVudSBkZWZpbml0aW9uIGFuZCBpdGVtIG9yZGVyaW5nLiBBbGxvdyAKICAgIHRoZSBzZWxlY3RlZCBvYmplY3QgaW4gYSB2aWV3IHRvIG92ZXJyaWRlIGFuIGFjdGlvbiwgZS5nLiwgUmVuYW1lIG1lbnUgaXRlbSAKICAgIG9uIEphdmEgZWxlbWVudCBpbiBuYXZpZ2F0b3IgdmlldyByZXNvbHZlcyB0byBKRFQgcmVmYWN0b3JpbmcgcmVuYW1lIGluc3RlYWQgCiAgICBvZiBiYXNpYyBmaWxlIHJlbmFtZS4gTWFpbnRhaW4gYSBzdHJvbmcgc2VwYXJhdGlvbiBiZXR3ZWVuIGEgY29tbWFuZCwgaXRzIAogICAgaGFuZGxlcihzKSBhbmQgaXRzIHBsYWNlbWVudChzKSBpbiB0aGUgVUkuIFtQbGF0Zm9ybSBVSTsgUGxhdGZvcm0gVGV4dDsgSkRUIAogICAgVUldICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NjgiPjM2OTY4PC9hPikgCiAgICBbVGhlbWU6IERlc2lnbiBmb3IgRXh0ZW5zaWJpbGl0eV08L3A+CiAgPHA+PGI+U2NhbGFiaWxpdHkuPC9iPiBJbiBjYXNlcyB3aGVyZSBlaXRoZXIgdGhlIHRhcmdldCBtYWNoaW5lIGlzIHJlc291cmNlLWNvbnN0cmFpbmVkLCAKICAgIG9yIHRoZSBudW1iZXIgb2YgcGx1Zy1pbnMgaXMgbGFyZ2UsIG9yIHRoZSBzaXplIG9mIHRoZSB3b3Jrc3BhY2UgaXMgbGFyZ2UsIAogICAgdGhlIHNjYWxhYmlsaXR5IG9mIHRoZSBFY2xpcHNlIFBsYXRmb3JtIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50LiBUaGUgd29yayAKICAgIGludm9sdmVzIGlkZW50aWZ5aW5nIHByb2JsZW1hdGljIGFyZWFzIGFuZCBtYWtpbmcgY2hhbmdlcyB0byBpbXByb3ZlIHRoZSBzY2FsYWJpbGl0eS4gCiAgICBbQWxsIGNvbXBvbmVudHNdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxMjkiPjgwMTI5PC9hPikgCiAgICBbVGhlbWU6IFNjYWxpbmcgVXBdPC9wPgogIDxwPjxiPkltcHJvdmUgY2FwYWJpbGl0aWVzLjwvYj4gRWNsaXBzZSAzLjAgaW50cm9kdWNlZCB0aGUgbm90aW9uIG9mIGNhcGFiaWxpdGllcyAKICAgIGFuZCBwcm92aWRlZCBjYXRlZ29yaWVzIGZvciBncm91cGluZyByZWxhdGVkIGNhcGFiaWxpdGllcy4gVGhlc2UgY2FwYWJpbGl0aWVzIAogICAgYXJlIHVzZWQgdG8gc2ltcGxpZnkgdGhlIFVJIGJ5IGhpZGluZyBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgbm90IGN1cnJlbnRseSAKICAgIHJlbGV2YW50IHRvIHRoZSB1c2VyLiBUaGlzIHBsYW4gaXRlbSBpcyB0byBpbXByb3ZlIHRoaXMgc3VwcG9ydC4gVGhlIG1pc3NpbmcgCiAgICBmZWF0dXJlcyBjZW50ZXIgYXJvdW5kIGEgcHJvZHVjdCdzIGFiaWxpdHkgdG8gc3VjY2Vzc2Z1bGx5IHN1cHBvcnQgaGlnaGVyLWxldmVsIAogICAgbm90aW9ucyAobGlrZSB1c2VyIHJvbGVzKSBhbmQgY29udHJvbCB3aGVuIGFuZCBob3cgY2FwYWJpbGl0aWVzIGdldCBlbmFibGVkLiAKICAgIFtQbGF0Zm9ybSBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzMCI+ODAxMzA8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV08L3A+CiAgPHA+PHN0cm9uZz5BbnQgZWRpdG9yIGltcHJvdmVtZW50cy48L3N0cm9uZz4gUHJvdmlkZSB0aGUgQW50IGVkaXRvciB3aXRoIGNvbXBhcmFibGUgCiAgICBmdW5jdGlvbmFsaXR5IHRvIHRoZSBKYXZhIGVkaXRvciB3aXRoIHJlZ2FyZCB0byBmb2xkaW5nLCBoeXBlcmxpbmsgbmF2aWdhdGlvbiwgCiAgICBvcGVuIGRlY2xhcmF0aW9uLCBtYXJraW5nIG9jY3VycmVuY2VzLCBzaG93IGV4dGVybmFsIGRvY3VtZW50YXRpb24sIHJlZmFjdG9yaW5nLCAKICAgIGV0Yy4gW0FudF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzNSI+ODAxMzU8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV08L3A+CiAgPHA+PHN0cm9uZz5CcmVha3BvaW50IGltcHJvdmVtZW50cy4gPC9zdHJvbmc+U2ltcGxpZnkgZGVidWdnaW5nIHdpdGggbG90cyBvZiAKICAgIGJyZWFrcG9pbnRzOiBwcm92aWRlIGRpZmZlcmVudCB3YXlzIHRvIGdyb3VwIGFuZCBvcmdhbml6ZSBicmVha3BvaW50cyBzbyB0aGF0IAogICAgdGhleSBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBhcyBhIHVuaXQuIFtEZWJ1Z10gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzNiI+ODAxMzY8L2E+KSAKICAgIFtUaGVtZTogU2NhbGluZyBVcF08L3A+CjwvYmxvY2txdW90ZT4KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+IAogIDxwPjxiPkVtYmVkZGluZyBlZGl0b3JzIGFuZCB2aWV3cy48L2I+IFZhcmlvdXMgcGx1Zy1pbnMgZW5jb3VudGVyIHByb2JsZW1zIHdoZW4gCiAgICB0cnlpbmcgdG8gZW1iZWQgZWRpdG9ycyBvciB2aWV3cyB3aXRoaW4gb3RoZXIgd29ya2JlbmNoIHBhcnRzLiBGb3IgZXhhbXBsZSwgCiAgICB0aGUgY3VycmVudCBjb21wYXJlIGluZnJhc3RydWN0dXJlIHJlcXVpcmVzIGEgcGx1Zy1pbiB0byBjcmVhdGUgYSBzZXBhcmF0ZSAKICAgIHRleHQgZWRpdG9yIGZvciB2aWV3aW5nIGNoYW5nZXMgYmV0d2VlbiBmaWxlcy4gVGhpcyBpcyBkdWUgdG8gYSBsaW1pdGF0aW9uIAogICAgaW4gdGhlIHdvcmtiZW5jaCB0aGF0IHByZXZlbnRzIGVkaXRvcnMgZnJvbSBiZWluZyBlbWJlZGRlZCBpbnNpZGUgdmlld3Mgb3IgCiAgICBvdGhlciBjb250cm9scy4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGNvbXBhcmUgZWRpdG9yJ3MgbmVzdGVkIGVkaXRvcnMgZG9uJ3QgCiAgICBzdXBwb3J0IHRoZSBmdWxsIHNldCBvZiBmZWF0dXJlcyBwcm92aWRlZCBieSB0aGUgY29ycmVzcG9uZGluZyByZWFsIGNvbnRlbnQtdHlwZS1zcGVjaWZpYyAKICAgIGVkaXRvci4gVGhpcyByZXByZXNlbnRzIGEgbWFqb3IgdXNhYmlsaXR5IHByb2JsZW06IHRoZSB1c2VyIG11c3Qgc3dpdGNoIHRvIAogICAgdGhlIHJlYWwgZWRpdG9yIHRvIG1ha2UgY2hhbmdlcyBhbmQgdGhlbiByZXR1cm4gdG8gdGhlIGNvbXBhcmUgdmlldyB0byByZXZpZXcgCiAgICB0aGUgY2hhbmdlcy4gRWNsaXBzZSBzaG91bGQgYmUgbW9yZSBmbGV4aWJsZSBpbiB0aGUgd2F5cyB2YXJpb3VzIGVkaXRvcnMgY2FuIAogICAgYmUgdXNlZCBhbmQgcmV1c2VkLiBJbXByb3ZlIHRoZSBVSSBjb21wb25lbnQgbW9kZWwgdG8gc3VwcG9ydCBuZXN0aW5nIG9mIHdvcmtiZW5jaCAKICAgIHBhcnRzLiBSZWR1Y2UgY291cGxpbmcgb2YgcGFydHMgdG8gcGFydGljdWxhciBsb2NhdGlvbnMgaW4gdGhlIHdvcmtiZW5jaCwgCiAgICBhbGxvd2luZyBmb3IgbW9yZSBmbGV4aWJsZSBVSSBjb25maWd1cmF0aW9ucy4gW1BsYXRmb3JtIFVJLCBDb21wYXJlLCBQbGF0Zm9ybSAKICAgIFRleHRdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjUiPjcxMTI1PC9hPikgCiAgICBbVGhlbWU6IERlc2lnbiBmb3IgRXh0ZW5zaWJpbGl0eV08L3A+CiAgPHA+IDxiPlRlYW0gcG9saWNpZXMuPC9iPiBUZWFtcyBvZiBkZXZlbG9wZXJzIHdvcmtpbmcgdG9nZXRoZXIgaGF2ZSBzcGVjaWFsIAogICAgbmVlZHMgZm9yIGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIHRoZWlyIGNvbGxlY3RpdmUgd29yay4gCiAgICBGb3IgZXhhbXBsZSwgdGhleSBtYXkgaGF2ZSBwb2xpY2llcyBmb3IgdGhpbmdzIGxpa2Ugc291cmNlIGZpbGUgbmFtaW5nLCBjb2RlIAogICAgZm9ybWF0dGluZywgb3IgYnVnIHJlcG9ydCBudW1iZXIgZm9yIGNoYW5nZSB0cmFja2luZy4gRWNsaXBzZSBzaG91bGQgZW5hYmxlIAogICAgdG9vbHMgdGhhdCBoZWxwIGFjaGlldmUgdGhhdCBpbnRlZ3JpdHkgYW5kIGNvbnNpc3RlbmN5LiBFY2xpcHNlIHNob3VsZCBwcm92aWRlIAogICAgbW9yZSBhY2Nlc3MgcG9pbnRzIHNvIHRoYXQgY29tcGxleCBwb2xpY2llcyBjYW4gYmUgc3VnZ2VzdGVkLCBjaGVja2VkLCBvciAKICAgIGVuZm9yY2VkLiBbUGxhdGZvcm0gQ29yZTsgVGVhbV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD03MTEyNiI+NzExMjY8L2E+KSAKICAgIFtUaGVtZTogRW50ZXJwcmlzZSBSZWFkeV08L3A+CiAgICAKICA8cD4gPGI+R2VuZXJhbGl6ZWQgdW5kbyBzdXBwb3J0LjwvYj4gVGhlIFBsYXRmb3JtIHNob3VsZCBkZWZpbmUgYSBjb21tb24gY29tbWFuZCAKICAgIHByb2Nlc3NpbmcgZnJhbWV3b3JrIGluIG9yZGVyIHRvIHByb3ZpZGUgYSB3b3JrYmVuY2gtd2lkZSB1bmRvL3JlZG8gZmFjaWxpdHkuIAogICAgW1BsYXRmb3JtIFVJOyBQbGF0Zm9ybSBUZXh0OyBKRFQgVUldICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxMzciPjgwMTM3PC9hPikgCiAgICBbVGhlbWU6IERlc2lnbiBmb3IgRXh0ZW5zaWJpbGl0eV08L3A+CiAgPHA+PGI+Q29udGVudCB0eXBlcy48L2I+IFRoZSBhbGdvcml0aG0gdGhhdCB0aGUgRWNsaXBzZSBQbGF0Zm9ybSB1c2VzIHRvIGRldGVybWluZSAKICAgIHdoaWNoIGVkaXRvciB0byBvcGVuIGlzIGJhc2VkIG9uIHRoZSBmaWxlJ3MgbmFtZSBhbmQgc2ltcGxlIG1hdGNoaW5nIHJ1bGVzLiAKICAgIEluIG1hbnkgY2FzZXMgbGlrZSBYTUwgZmlsZXMgdGhpcyBzaW1wbGUgYXBwcm9hY2ggaXMgbm90IHN1ZmZpY2llbnQuIFRoZSBQbGF0Zm9ybSAKICAgIG5lZWRzIHRvIHByb3ZpZGUgYSBtb3JlIHJvYnVzdCBhbmQgc2NhbGFibGUgc29sdXRpb24gYmFzZWQgb24gdGhlIGNvbnRlbnQgCiAgICBvZiB0aGUgcmVzb3VyY2UuIFtQbGF0Zm9ybSBVSV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjY4Ij4zNzY2ODwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHldPC9wPgogIDxwPjxiPkFkZCBjcml0aWNhbCBwZXJmb3JtYW5jZSBpbnN0cnVtZW50YXRpb24uPC9iPiBBZGQgc3VwcG9ydCBmb3IgbW9uaXRvcmluZyAKICAgIHBlcmZvcm1hbmNlIGFuZCBkZXRlY3RpbmcgcHJvYmxlbXMgaW4gcGVyZm9ybWFuY2UgY3JpdGljYWwgYXNwZWN0cyBvZiB0aGUgCiAgICBFY2xpcHNlIFBsYXRmb3JtLiBQb3RlbnRpYWwgY3JpdGljYWwgYXJlYXMgdG8gbW9uaXRvciBpbmNsdWRlIHRoZSB0aW1lcyB0bzogCiAgICBzdGFydCB1cCBhIHBsdWctaW4sIG9wZW4gYW4gZWRpdG9yLCBkaXNwbGF5IGEgbWVudSwgc3dpdGNoIHBlcnNwZWN0aXZlcywgcHJvY2VzcyAKICAgIGFuIFNXVCBldmVudCwgcHJvY2VzcyBhIHJlc291cmNlIGNoYW5nZSBldmVudCwgZXRjLiBbUGxhdGZvcm0gVUk7IFBsYXRmb3JtIAogICAgQ29yZTsgU1dUXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTM4Ij44MDEzODwvYT4pIAogICAgW1RoZW1lOiBTY2FsaW5nIHVwXTwvcD4KICA8cD48Yj5Jbml0aWFsIHVzZXIgZXhwZXJpZW5jZSBpbXByb3ZlbWVudHMuPC9iPiBTdXBwb3J0IGZvciBXZWxjb21lIGNvbnRlbnQgCiAgICB3aWxsIGJlIGVuaGFuY2VkIGJ5IGEgbnVtYmVyIG9mIGltcHJvdmVtZW50czogYXV0aG9yaW5nIG9mIHdlbGNvbWUgY29udGVudCAKICAgIHdpbGwgYmUgbWFkZSBlYXNpZXIgYnkgcHJvdmlkaW5nIGVhc3kgcHJldmlldyBvZiB0aGUgcmVzdWx0aW5nIHBhZ2VzIHdoZW4gCiAgICBhbGwgdGhlIGNvbnRlbnQgaXMgY29tcG9zZWQ7IHdoZW5ldmVyIHBvc3NpYmxlLCBoZWxwIGRvY3VtZW50cyB3aWxsIGJlIHNob3duIAogICAgaW4gcGxhY2UgdG8gcmVkdWNlIHRoZSBuZWVkIHRvIGxlYXZlIHRoZSBXZWxjb21lIGNvbnRleHQ7IHRyYW5zaXRpb24gdG8gd29ya2JlbmNoIAogICAgd2lsbCBiZSBtYWRlIGxlc3MgYWJydXB0IHdpdGggdmFyaW91cyBkZWdyZWVzIG9mIHdlbGNvbWUgc3RpbGwgcHJlc2VudCBmb3IgCiAgICB0aGUgdXNlciB0byByZXR1cm47IHN1cHBvcnQgZm9yIHdlbGNvbWUgaW4gc29waGlzdGljYXRlZCBzdGFja2VkIHByb2R1Y3RzIAogICAgd2lsbCBiZSBlbmhhbmNlZC4gW1BsYXRmb3JtIFVJXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTM5Ij44MDEzOTwvYT4pIAogICAgW1RoZW1lOiBTaW1wbGUgdG8gdXNlXTwvcD4KICA8cD48Yj5NYWNybyByZWNvcmRpbmcgYW5kIHBsYXliYWNrLjwvYj4gQWRkIGEgbWVjaGFuaXNtIGZvciByZWNvcmRpbmcgYSBzZXF1ZW5jZSAKICAgIG9mIHVzZXIgaW50ZXJmYWNlIGludGVyYWN0aW9ucywgc3RvcmluZyB0aGVuIGluIGEgZmlsZSwgYW5kIHBsYXlpbmcgdGhlbSBiYWNrIAogICAgYXQgYSBsYXRlciB0aW1lLiBGaWxlIHBsYXliYWNrIHdpbGwgYmUgbWFkZSBhdmFpbGFibGUgYXMgYW4gYWN0aW9uIGZvciB0aGUgCiAgICBiZW5lZml0IG9mIGNoZWF0IHNoZWV0cyBhbmQgYWN0aXZlIGhlbHAuIFtQbGF0Zm9ybSBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0MCI+ODAxNDA8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV08L3A+CiAgPHA+PGI+RW5oYW5jZW1lbnRzIGZvciBzdXBwb3J0aW5nIG5ldyB1c2Vycy48L2I+IEZvbGxvd2luZyBvbiBmcm9tIHRoZSB3b3JrIAogICAgZG9uZSBpbiBFY2xpcHNlIDMuMCwgd2Ugd2FudCB0byBmdXJ0aGVyIGltcHJvdmUgdGhlIHdheSBFY2xpcHNlIGZlZWxzIHRvIG5ldyAKICAgIHVzZXJzLiBGb3IgZXhhbXBsZTogc3VwcG9ydCBmb3IgdGVtcGxhdGVzICh0byBjcmVhdGUgcHJvamVjdHMgdGhhdCBkbyBzb21ldGhpbmcgCiAgICB1c2VmdWwpIGFzIHdlbGwgYXMgYSBzZXQgb2YgdGVtcGxhdGVzIHRoYXQgc2hpcCB3aXRoIEVjbGlwc2UgU0RLOyBzdXBwb3J0IAogICAgZm9yIHNhbXBsZXMgKGVuaGFuY2luZyBzYW1wbGUgc3VwcG9ydCBzaGlwcGVkIGluIDMuMCBhbmQgbWFraW5nIGl0IEFQSSk7IHNhZmUgCiAgICBtb2RlIChhIGNvbnN0cmFpbmVkIG1vZGUgb2YgcnVubmluZyB0aGUgd29ya2JlbmNoIC0gJ3RyYWluaW5nIHdoZWVscycgLSB3aGVyZSAKICAgIGNhcGFiaWxpdGllcyBhcmUgcmVzdHJpY3RlZCBpbiBvcmRlciB0byBwcmV2ZW50IGNvbW1vbiBlYXJseSBtaXN0YWtlcyk7IHNpbXBsZXIgCiAgICB3b3Jrc3BhY2UgY2hvb3NlciAod2hlcmUgZG8geW91IHdhbnQgeW91ciB3b3JrIHNhdmVkPyk7IG1vcmUgdXNhYmxlIHBlcnNwZWN0aXZlIAogICAgY2hvb3NlciB3aXRoIHNob3J0IGRlc2NyaXB0aW9uLCBhIHNtYWxsIGltYWdlIHRoYXQgc2hvd3MgdGhlIGdlbmVyYWwgcGVyc3BlY3RpdmUgCiAgICBsYXlvdXQsIHBlcnNwZWN0aXZlIGdyb3VwcyBieSByb2xlIGUuZy4gSmF2YSBEZXZlbG9wbWVudC4gW1BsYXRmb3JtIFVJXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTMyIj44MDEzMjwvYT4pIAogICAgW1RoZW1lOiBTaW1wbGUgdG8gdXNlXTwvcD4KICA8cD48Yj5IZWxwIHNlYXJjaCBlbmhhbmNlbWVudHMuPC9iPiBTZWFyY2ggd2lsbCBiZSBlbmhhbmNlZCBpbiBhIG51bWJlciBvZiB3YXlzLiAKICAgIEFkZCB0aGUgYWJpbGl0eSB0byBzZWFyY2ggdGhlIHdvcmtiZW5jaCBVSSB0byBmaW5kIGFjdGlvbnMsIHZpZXdzLCBwZXJzcGVjdGl2ZXMsIAogICAgZXRjLjsgdG8gc2VhcmNoIHRoZSB3ZWIgaW4gYWRkaXRpb24gdG8gbG9jYWwgZG9jdW1lbnRhdGlvbjsgYW5kIHRvIGNvbGxhdGUgCiAgICByZXN1bHRzIGZyb20gbXVsdGlwbGUgc2VhcmNoIGVuZ2luZXMgcXVlcmllZCBpbiBwYXJhbGxlbC4gSW1wcm92ZSB0aGUgcHJlc2VudGF0aW9uIAogICAgb2Ygc2VhcmNoIGJ5IGV4cG9zaW5nIEhlbHAgc2VhcmNoZXMgaW4gd2l6YXJkIFVJIHBhbmVzLCBhbmQgYnkgbWFraW5nIHNlYXJjaCAKICAgIHBlcnZhc2l2ZSBpbiB0aGUgd29ya2JlbmNoLiBbSGVscCwgUGxhdGZvcm0gVUksIFNlYXJjaF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzMSI+ODAxMzE8L2E+KSAKICAgIFtUaGVtZTogRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5OyBTaW1wbGUgdG8gVXNlXTwvcD4KICA8cD48Yj5IZWxwIHN5c3RlbSBpbXByb3ZlbWVudHMuPC9iPiBBIG51bWJlciBvZiBpbXByb3ZlbWVudHMgd291bGQgYmUgYWRkZWQgCiAgICB0byB0aGUgY3VycmVudCBoZWxwIHN5c3RlbSB0byBhZGRyZXNzIHRoZSBjdXJyZW50IHByb2JsZW1zIGFuZCBtYWtlIGhlbHAgbW9yZSAKICAgIHVzZWZ1bC4gSW1wcm92ZW1lbnRzIGluY2x1ZGU6IEFsbG93IGhlbHAgY29udGVudCB0byBhcHBlYXIgZW1iZWRkZWQgaW4gdmFyaW91cyAKICAgIHBsYWNlcyBvZiB0aGUgd29ya2JlbmNoICh3ZWxjb21lLCBjaGVhdCBzaGVldHMsIGhlbHAgdmlldykgYXMgYSB3YXkgdG8gYXZvaWQgCiAgICBwcm9ibGVtcyBjYXVzZWQgYnkgaGF2aW5nIGFsbCBIZWxwIHByZXNlbnRlZCBpbiBhIHNlcGFyYXRlIHdpbmRvdyAodGhpcyB3b3VsZCAKICAgIGFsc28gZW50YWlsIHNvbWUgcmV3b3JrIG9mIHRoZSBUYXNrcyBzZWN0aW9ucyBvZiB0aGUgRWNsaXBzZSBoZWxwIGJvb2tzIHRvIAogICAgbWFrZSB0aGVtIHN1aXRhYmxlIGZvciBwcmVzZW50YXRpb24gaW4gYSBuYXJyb3cgd2luZG93KS4mbmJzcDtQcm92aWRlIGEgaG9vayAKICAgIGZyb20gZXJyb3IgZGlhbG9ncyBpbnRvIGhlbHAuIFtIZWxwXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTQxIj44MDE0MTwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHk7IFNpbXBsZSB0byBVc2VdPC9wPgogIDxwPjxiPkltcHJvdmUgY2hlYXQgc2hlZXQgYXV0aG9yaW5nLjwvYj4gVGhlIGdvYWwgaXMgdG8gYmV0dGVyIHN1cHBvcnQgYXV0aG9yaW5nIAogICAgb2YgY2hlYXQgc2hlZXRzIGJ5IG5vbi1wcm9ncmFtbWVycyBieSBhbGxvd2luZyBhY3Rpb25zIHRvIGJlIHJlY29yZGVkIGFzIG1hY3JvcyAKICAgIHRvIGhhbmRsZSAnZG8gaXQgZm9yIG1lJyBzdGVwIGFjdGlvbnMuIFtQbGF0Zm9ybSBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0MiI+ODAxNDI8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV08L3A+CiAgPHA+PGI+UGVydmFzaXZlIGNvbnRleHQgaGVscCBwYW5lLjwvYj4gVGhlIFBsYXRmb3JtIHNob3VsZCBwcm92aWRlIGEgcmV1c2FibGUgCiAgICBwYW5lIHRvIHNob3cgY29udGV4dCBoZWxwIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBjb250ZXh0LiBUaGUgcGFuZSBjYW4gYmUgCiAgICB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLCBpbmNsdWRpbmcgdmlld3MgYW5kIHdpemFyZCBkaWFsb2dzLiBUaGUgcGFuZSBzaG93cyAKICAgIGFkZGl0aW9uYWwgaGVscCBvbiB0aGUgY3VycmVudCBjb250ZXh0LCBsaW5rcyB0byBoZWxwIHRvcGljcyBhYm91dCBpdCwgYW5kIAogICAgYSBxdWljayBzZWFyY2ggZW50cnkuIFtIZWxwLCBQbGF0Zm9ybSBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0MyI+ODAxNDM8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV08L3A+CiAgPHA+PHN0cm9uZz5SQ1AgcGVyZm9ybWFuY2UuPC9zdHJvbmc+IFN0YXJ0dXAgdGltZSBhbmQgdG90YWwgc3BhY2UgcmVxdWlyZW1lbnRzIAogICAgYXJlIGtleSBlbGVtZW50cyBpbiB0aGUgdmlhYmlsaXR5IG9mIEVjbGlwc2UgYXMgYW4gUkNQLiBJbiB0aGUgMy4xIGN5Y2xlIHdlIAogICAgd2lsbCBmb2N1cyBvbiB0aGVzZSB0d28gcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHdpdGggdGhlIHBhcnRpY3VsYXIgZ29hbHMgCiAgICBvZjogcmVkdWNpbmcgc3BhY2UgcmVxdWlyZWQgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIChlLmcuLCBmcmFtZXdvcmsgc3RhdGUsIAogICAgZXh0ZW5zaW9uIHJlZ2lzdHJ5LCAuLi4pOyBzdHJlYW1saW5pbmcgdGhlIHN0YXJ0dXAgZXhlY3V0aW9uIHRvIGdldCB0byB0aGUgCiAgICBhcHBsaWNhdGlvbiBjb2RlIGZhc3RlcjsgYW5kIHByb3ZpZGluZyBiYXNpYyBzdXBwb3J0IGZvciBzcGFjZS1lZmZpY2llbnQgcmVzb3VyY2UgCiAgICBidW5kbGVzLiBbUGxhdGZvcm0gQ29yZV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0NSI+ODAxNDU8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm07IFNjYWxpbmcgVXBdPC9wPgogIDxwPiA8c3Ryb25nPlJDUCBpbmZyYXN0cnVjdHVyZS48L3N0cm9uZz4gVGhlcmUgYXJlIHZhcmlvdXMgaW1wcm92ZW1lbnRzIHRvIHRoZSAKICAgIFJDUCBpbmZyYXN0cnVjdHVyZSB0byBiZXR0ZXIgc3VwcG9ydCBhIHdpZGVuaW5nIHJhbmdlIG9mIHVzZXMsIGluY2x1ZGluZzogCiAgICBpbXByb3ZlIHN1cHBvcnQgZm9yIHByZWNvbmZpZ3VyZWQgaW5zdGFsbHM7IGFuZCBpbXByb3ZlIHN1cHBvcnQgZm9yIEFQSSBkZWNsYXJhdGlvbi9jb25zdW1wdGlvbi4gCiAgICBBZGRpdGlvbmFsbHksIGFsbCBSQ1AtcmVsYXRlZCBwbHVnLWlucyB3aWxsIGJlIHVwZGF0ZWQgdG8gdXNlIG9ubHkgY2xhc3NlcyAKICAgIGluIHRoZSBKMk1FIENEQy9Gb3VuZGF0aW9uIHByb2ZpbGUuIFtQbGF0Zm9ybSBDb3JlOyBQbGF0Zm9ybSBVSTsgVXBkYXRlOyBIZWxwXSAKICAgICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNDYiPjgwMTQ2PC9hPikgCiAgICBbVGhlbWU6IFJpY2ggQ2xpZW50IFBsYXRmb3JtXTwvcD4KICA8cD48c3Ryb25nPk9TR2kuIDwvc3Ryb25nPkVjbGlwc2UgMy4xIHdpbGwgaW5jbHVkZSBhIGNvbXBsaWFudCBpbXBsZW1lbnRhdGlvbiAKICAgIG9mIHRoZSB1cGNvbWluZyBPU0dpIFBsYXRmb3JtIFI0IHNwZWNpZmljYXRpb24uIFdlIHdpbGwgYWxzbyBpbmNyZWFzZSB0aGUgCiAgICBmbGV4aWJpbGl0eSBvZiB0aGUgYWRhcHRvciBzdHJ1Y3R1cmUgb2YgdGhlIE9TR2kgZnJhbWV3b3JrIGluIG9yZGVyIHRvIG1ha2UgCiAgICBpdCBlYXNpZXIgdG8gdXNlIHRoZSBFY2xpcHNlIE9TR2kgaW1wbGVtZW50YXRpb24gb24gaXRzIG93bi4gW1BsYXRmb3JtIENvcmVdIAogICAgKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0NyI+ODAxNDc8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dPC9wPgogIDxwPjxzdHJvbmc+RHluYW1pYyBwbHVnLWlucy48L3N0cm9uZz4gSW4gRWNsaXBzZSAzLjAgaXQgYmVjYW1lIHBvc3NpYmxlIHRvIGluc3RhbGwgCiAgICBhbmQgcmVtb3ZlIHBsdWctaW5zIHdpdGhvdXQgcmVzdGFydGluZyB0aGUgc3lzdGVtLiBJbiBwcmFjdGljZSB0aGlzIGlzIGEgY29vcGVyYXRpdmUgCiAgICBlZmZvcnQgcmVxdWlyaW5nIHRoZSByZXN0IG9mIHRoZSBwbHVnLWlucyBpbiB0aGUgc3lzdGVtIHRvIHJlc3BvbmQgY29ycmVjdGx5IAogICAgdG8gdGhlIGNoYW5nZXMuIFdvcmsgd2lsbCBiZSBkb25lIHRvIGluY3JlYXNlIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIG1ha2luZyAKICAgIHBsdWctaW5zIGR5bmFtaWMtYXdhcmUsIGluY2x1ZGluZyBhbm5vdGF0aW5nIHBsdWctaW5zIHdpdGggdGhlaXIgZHluYW1pYyBjaGFyYWN0ZXJpc3RpY3MsIAogICAgY2hhbmdpbmcgdGhlIHJlZ2lzdHJ5IGRhdGEgc3RydWN0dXJlIHRvIHVzZSBsaWdodC13ZWlnaHQgaGFuZGxlcywgYW5kIHByb3ZpZGUgCiAgICBzdXBwb3J0IGZvciB0cmFja2luZyBrZXkgb2JqZWN0cy4gT3RoZXIgUkNQIHBsdWctaW5zIHdpbGwgYmUgdXBkYXRlZCB0byB1c2UgCiAgICB0aGVzZSBtZWNoYW5pc21zLiBBbHNvLCBkZXZlbG9wIHJldXNhYmxlIGNvZGluZyBzdHJ1Y3R1cmVzIGFuZCBndWlkZWxpbmVzIAogICAgZm9yIHdyaXRpbmcgZHluYW1pYy1hd2FyZSBwbHVnLWlucy4gW1BsYXRmb3JtIENvcmU7IFBsYXRmb3JtIFVJOyBQbGF0Zm9ybSAKICAgIFRleHQ7IFVwZGF0ZTsgSGVscF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0OCI+ODAxNDg8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dPC9wPgogIDxwPjxzdHJvbmc+Sk5MUCBTdXBwb3J0Ljwvc3Ryb25nPiBJdCBpcyBjb252ZW5pZW50IHRvIGJlIGFibGUgdG8gbGF1bmNoIGEgSmF2YS1iYXNlZCAKICAgIGFwcGxpY2F0aW9uIGZyb20gYSB3ZWIgYnJvd3Nlci4gVGhlcmUgYXJlIHZhcmlvdXMgdGVjaG5pY2FsIGlzc3VlcyB3aXRoIGxhdW5jaGluZyAKICAgIEVjbGlwc2UgdXNpbmcgSmF2YSBXZWIgU3RhcnQgKEpOTFApLiBXZSB3aWxsIGVuc3VyZSB0aGF0IHRoZSBzaW1wbGUgZm9ybXMgCiAgICBvZiBKTkxQLWJhc2VkIGRlcGxveW1lbnQgYXJlIHN1cHBvcnRlZCwgYW5kIHdpbGwgaW52ZXN0aWdhdGUgc3VwcG9ydGluZyBtb3JlIAogICAgYWR2YW5jZWQgc29sdXRpb25zIHRoYXQgY291bGQgcHJvdmlkZSBhIGhpZ2hlciBsZXZlbCBvZiBpbnRlZ3JhdGlvbiBiZXR3ZWVuIAogICAgdGhlIEVjbGlwc2UgY29tcG9uZW50IG1vZGVsIGFuZCB0aGF0IG9mIEpOTFAuIFtQbGF0Zm9ybSBDb3JlXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTQ5Ij44MDE0OTwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV08L3A+CiAgPHA+PHN0cm9uZz5TZWN1cml0eS48L3N0cm9uZz4gU3VwcG9ydCBvbmdvaW5nIHdvcmsgaW4gRXF1aW5veCBpbnZlc3RpZ2F0aW5nIAogICAgc2VjdXJpdHkuIFRoaXMgY292ZXJzIGl0ZW1zIHN1Y2ggYXMgZW5hYmxpbmcgSmF2YSAyIHNlY3VyaXR5IG1hbmFnZXJzLCBwbHVnLWluIAogICAgc2lnbmluZywgdGVjaG5pcXVlcyBhbmQgbWVjaGFuaXNtcyBmb3IgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gYW5kIAogICAgY3JlZGVudGlhbCBzdG9yZXMgYXMgd2VsbCBhcyBlbmQtdG8tZW5kIHNlY3VyaXR5IG9mIHRoZSBQbGF0Zm9ybSBpbnN0YWxsLiAKICAgIFtQbGF0Zm9ybSBDb3JlOyBQbGF0Zm9ybSBVcGRhdGVdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2OTIiPjM3NjkyPC9hPikgCiAgICBbVGhlbWU6IFJpY2ggQ2xpZW50IFBsYXRmb3JtXTwvcD4KICA8cD48c3Ryb25nPlN1cHBvcnQgZm9yIGxhdW5jaGVyIGJyYW5kaW5nLjwvc3Ryb25nPiBBIGtleSBzdGVwIGluIHByb2R1Y2luZyBhbiAKICAgIFJDUC1iYXNlZCBwcm9kdWN0IGlzIGNyZWF0aW5nIHRoZSBsYXVuY2hlciB0aGUgdXNlciB1c2VzIHRvIHJ1biB0aGUgcHJvZHVjdC4gCiAgICBBcyBhIG1pbmltdW0gaXQgc2hvdWxkIGhhdmUgYSBwcm9kdWN0LXNwZWNpZmljIG5hbWUgYW5kIGljb24uIEN1cnJlbnRseSwgY29uc3RydWN0aW5nIAogICAgc3VjaCBhIGxhdW5jaGVyIHJlcXVpcmVzIGEgQyBjb21waWxlciBhbmQgb3RoZXIgT1Mtc3BlY2lmaWMgdG9vbHMuIFdlIHdpbGwgCiAgICBpbnZlc3RpZ2F0ZSBwcm92aWRpbmcgdGVtcGxhdGUgbGF1bmNoZXJzIHdoaWNoIGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgUERFIAogICAgd2hlbiBhc3NlbWJsaW5nIGEgcHJvZHVjdCBmb3IgYSBnaXZlbiBPUy4gW1NXVDsgUERFXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTUwIj44MDE1MDwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV08L3A+CiAgPHA+PHN0cm9uZz5BbnQgZGVidWdnZXIuPC9zdHJvbmc+IFByb3ZpZGUgYW4gaW50ZWdyYXRlZCBkZWJ1Z2dlciBmb3IgQW50IGJ1aWxkIAogICAgZmlsZXMuIFtBbnRdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNTEiPjgwMTUxPC9hPik8L3A+CiAgPHA+PHN0cm9uZz5Db25jdXJyZW5jeSBzdXBwb3J0IGZvciBkZWJ1Z2dlcnMuPC9zdHJvbmc+IE1hbnkgZGVidWcgYXJjaGl0ZWN0dXJlcyAKICAgIHJlcXVpcmUgY29tbXVuaWNhdGluZyB3aXRoIGEgcmVtb3RlIGRlYnVnIHRhcmdldC4gVGhlIGRlYnVnIHVzZXIgaW50ZXJmYWNlIAogICAgbmVlZHMgdG8gYmUgcm9idXN0IGluIHRoZSBmYWNlIG9mIGxhdGVudCBhbmQgdW5yZWxpYWJsZSBjb25uZWN0aW9ucy4gVG8gYXZvaWQgCiAgICBibG9ja2luZyB0aGUgdXNlciBpbnRlcmZhY2UsIHRoZSBkZWJ1ZyBwbGF0Zm9ybSB3aWxsIHVzZSBiYWNrZ3JvdW5kIGpvYnMgdG8gCiAgICBwZXJmb3JtIG9wZXJhdGlvbnMgYW5kIGNvbW11bmljYXRlIHdpdGggZGVidWdnZXJzLiBbUGxhdGZvcm0gRGVidWcsIEpEVCBEZWJ1Z10gCiAgICAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTUyIj44MDE1MjwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHldPC9wPgogIDxwPjxzdHJvbmc+UHJvdmlkZSBiZXR0ZXIgdGV4dCBlZGl0b3Igc3VwcG9ydCBmb3IgUkNQLjwvc3Ryb25nPiBUaGUgbGlzdCBvZiAKICAgIGZ1bmN0aW9ucyB0byBhZGQgd2lsbCBncm93IG92ZXIgdGltZS4gVGhlIGluaXRpYWwgc2V0IGluY2x1ZGVzOiBhbm5vdGF0aW9uIAogICAgcHJlc2VudGF0aW9uIGFuZCBuYXZpZ2F0aW9uLCB1c2VyIGFzc2lnbmVkIGNvbG9ycyBhbmQgZm9udHMsIHNwZWxsIGNoZWNraW5nLCAKICAgIHVzZXIgZGVmaW5lZCwgcGVyc2lzdGVudCBmb2xkaW5nLCBxdWljayBkaWZmLCB0ZW1wbGF0ZXMsIFVSTCBkZXRlY3Rpb24gYW5kIAogICAgaGFuZGxpbmcuIFtQbGF0Zm9ybSBUZXh0XSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTU0Ij44MDE1NDwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV08L3A+CjwvYmxvY2txdW90ZT4KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+IAogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KPHA+KEVuZCBvZiBpdGVtcyBmb3IgRWNsaXBzZSBQbGF0Zm9ybSBwcm9qZWN0Lik8L3A+CjxoMj48YSBuYW1lPSJKRFQiPkphdmEgZGV2ZWxvcG1lbnQgdG9vbHMgKEpEVCkgcHJvamVjdDwvYT48L2gyPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2pkdC9pbmRleC5odG1sIj5KYXZhIGRldmVsb3BtZW50IHRvb2xzPC9hPiAoSkRUKQppbXBsZW1lbnRzIGEgSmF2YSBJREUgYmFzZWQgb24gdGhlIEVjbGlwc2UgUGxhdGZvcm0uIFRoZSBmb2xsb3dpbmcgd29yayBpdGVtcwpyZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiBKRFQsIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nIGZlYXR1cmVzIHdpbGwgYmUKc2lnbmlmaWNhbnRseSByZXdvcmtlZC48L3A+CjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHByb2plY3QsKTwvaDQ+CjxibG9ja3F1b3RlPiAKICA8cD48Yj5BZGQgc3VwcG9ydCBmb3IgSjJTRSA1IGZlYXR1cmVzLiA8L2I+SjJTRSA1IChhbHNvIGtub3duIGFzIEpESyAxLjUgJnF1b3Q7VGlnZXImcXVvdDspIAogICAgc2hpcHBlZCBpbiBTZXB0ZW1iZXIgMjAwNC4gVGhpcyByZWxlYXNlIGNvbnRhaW5zIDxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL2phdmFzZS8xLjUuMC9kb2NzL2d1aWRlL2xhbmd1YWdlL2luZGV4Lmh0bWwiPm5ldyAKICAgIEphdmEgbGFuZ3VhZ2UgZmVhdHVyZXM8L2E+LCBpbmNsdWRpbmcgZ2VuZXJpYyB0eXBlcywgdHlwZXNhZmUgZW51bWVyYXRpb25zLCAKICAgIGF1dG9ib3hpbmcsIGVuaGFuY2VkIGZvciBsb29wcywgc3RhdGljIGltcG9ydHMsIHZhcmFyZ3MsIGFuZCBhbm5vdGF0aW9ucy4gCiAgICBTdXBwb3J0aW5nIHRoZXNlIG5ldyBsYW5ndWFnZSBhbmQgY29tcGlsZXIgZmVhdHVyZXMgcmVxdWlyZXMgbWFqb3IgY2hhbmdlcyAKICAgIHRvIHRoZSBFY2xpcHNlIEphdmEgY29tcGlsZXIsIHRvIEpEVCBDb3JlIEFQSXMsIHRvIEpEVCBVSSwgYW5kIHRvIEpEVCBEZWJ1Zy4gCiAgICBFY2xpcHNlIHNob3VsZCBjb250YWluIGZ1bGwgc3VwcG9ydCBmb3IgZGV2ZWxvcGluZyBKYXZhIHByb2dyYW1zIHRoYXQgdXNlIAogICAgdGhlIG5ldyBsYW5ndWFnZSBmZWF0dXJlcywgaW5jbHVkaW5nIGNvZGUgYXNzaXN0LCBxdWljayBmaXhlcywgbmV3IHdpemFyZHMsIAogICAgc291cmNlIGFjdGlvbnMsIGFuZCByZWZhY3RvcmluZ3MuIFRoZXJlIHNob3VsZCBhbHNvIGJlIHF1aWNrIGFzc2lzdHMgYW5kIHJlZmFjdG9yaW5ncyAKICAgIGZvciBtaWdyYXRpbmcgZXhpc3RpbmcgSmF2YSBjb2RlIHRvIHRoZSBuZXcgbGFuZ3VhZ2UgY29uc3RydWN0cywgaW5jbHVkaW5nIAogICAgaW5mZXJyaW5nIHR5cGUgcGFyYW1ldGVycyBmb3IgQ29sbGVjdGlvbnMsIGFuZCBjb252ZXJ0aW5nIHNpbXBsZSBmb3IgbG9vcHMgCiAgICB0byB1c2UgdGhlIGVuaGFuY2VkIGZvciBsb29wLiBbSkRUIENvcmUsIEpEVCBVSSwgSkRUIFRleHQsIEpEVCBEZWJ1Z10gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM2OTM4Ij4zNjkzODwvYT4pIAogICAgW1RoZW1lOiBBcHBlYWxpbmcgdG8gdGhlIEJyb2FkZXIgQ29tbXVuaXR5XTwvcD4KICA8cD48c3Ryb25nPkltcHJvdmVkIGNvbXBpbGVyIGNoZWNraW5nLjwvc3Ryb25nPiBBZGQgc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIHJlZmVyZW5jZXMgCiAgICB0byBpbnRlcm5hbCBjbGFzc2VzLCBhZGQgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBkZWNsYXJhdGlvbnMgb2Ygc2VyaWFsVmVyc2lvblVJRCwgCiAgICBhbmQgcGVyZm9ybSBudWxsIHJlZmVyZW5jZSBhbmFseXNpcy4gW0pEVCBDb3JlXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTU1Ij44MDE1NTwvYT4pPC9wPgogIDxwPjxzdHJvbmc+SW1wcm92ZSBzdXBwb3J0IGZvciBleHRlcm5hbGl6ZWQgc3RyaW5ncy48L3N0cm9uZz4gUHJvdmlkZSBhIHNlcGFyYXRlIAogICAgcHJvcGVydGllcyBmaWxlIGVkaXRvciwgYW5kIGVuaGFuY2UgdGhlIEphdmEgZWRpdG9yIHRvIGRpc3BsYXkgdGhlIHZhbHVlIG9mIAogICAgYW5kIG5hdmlnYXRlIGZyb20gYW4gTkxTIGtleSBpbiBjb2RlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiB0aGUgcHJvcGVydGllcyAKICAgIGZpbGUuIFtKRFQgVGV4dF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE1NiI+ODAxNTY8L2E+KTwvcD4KICA8cD48c3Ryb25nPkV4cG9zZSBKYXZhIGVkaXRvciBmdW5jdGlvbmFsaXR5Ljwvc3Ryb25nPiBNYWtlIGZ1bmN0aW9uYWxpdHkgY3VycmVudGx5IAogICAgZm91bmQgaW4gdGhlIEphdmEgZWRpdG9yIGF2YWlsYWJsZSB0byBvdGhlciBwbHVnLWlucyBieSBwdXNoaW5nIGl0IGRvd24gaW50byAKICAgIFBsYXRmb3JtIFRleHQuIFRoaXMgaW5jbHVkZXMgaHlwZXJsaW5rIHN0eWxlIG5hdmlnYXRpb24sIGFubm90YXRpb24gbmF2aWdhdGlvbiwgCiAgICBzcGVsbCBjaGVja2luZywgYW5kIHF1aWNrIGZpeCBpbmZyYXN0cnVjdHVyZS4gW0pEVCBUZXh0OyBQbGF0Zm9ybSBUZXh0XSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTU3Ij44MDE1NzwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHldPC9wPgogIDxwPjxzdHJvbmc+RGVidWdnZXIgdXNhYmlsaXR5IGltcHJvdmVtZW50cy48L3N0cm9uZz4gSW50ZWdyYXRlIG1vbml0b3IgbG9ja3MgCiAgICBpbnRvIHRoZSBkZWJ1ZyB2aWV3LCBzaG93IHZhcmlhYmxlIHZhbHVlcyBpbmxpbmUsIHN1cHBvcnQgaHlwZXJsaW5rLXN0eWxlIAogICAgbmF2aWdhdGlvbiBmcm9tIHRoZSB0ZXh0IG9mIGFueSBzdGFjayB0cmFjZS4gW0pEVCBEZWJ1ZzsgUGxhdGZvcm0gRGVidWddICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNTgiPjgwMTU4PC9hPikgCiAgICBbVGhlbWU6IFNpbXBsZSB0byB1c2VdPC9wPgogIDxwPjxzdHJvbmc+SW1wb3J0L2V4cG9ydCBvZiBBbnQgYnVpbGQgZmlsZXMuPC9zdHJvbmc+IFVzaW5nIGluZm9ybWF0aW9uIGZyb20gCiAgICB0aGUgamF2YWMgdGFzayBpbiBhbiBleGlzdGluZyBBbnQgYnVpbGQgZmlsZSwgY3JlYXRlIGEgSmF2YSBwcm9qZWN0LCBpbXBvcnQgCiAgICB0aGUgc291cmNlIGZpbGVzLCBhbmQgY29uZmlndXJlIHRoZSBwcm9qZWN0J3MgYnVpbGQgY2xhc3MgcGF0aC4gQ29udmVyc2VseSwgCiAgICBmcm9tIGFuIGV4aXN0aW5nIEphdmEgcHJvamVjdCBnZW5lcmF0ZSBhbiBBbnQgYnVpbGQgZmlsZSB0aGF0IHdpbGwgY29tcGlsZSAKICAgIHRoZSBwcm9qZWN0J3Mgc291cmNlIGZpbGVzLiBbSkRUIFVJOyBBbnRdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNTkiPjgwMTU5PC9hPikgCiAgICBbVGhlbWU6IEVudGVycHJpc2UgUmVhZHldPC9wPgo8L2Jsb2NrcXVvdGU+CjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBKRFQgcHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4gCiAgPHA+PGI+SW1wcm92ZSBwcm9ncmFtIG1hbmlwdWxhdGlvbiBpbmZyYXN0cnVjdHVyZS48L2I+IFBhcnRzIG9mIHRoZSBKYXZhIG1vZGVsIAogICAgYXJlIHN0aWxsIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZSBkZXByZWNhdGVkIEpET00sIGFuIGVhcmx5IHByZWN1cnNvciAKICAgIG9mIHRoZSBBU1QgZmFjaWxpdHkuIEpEVCBzaG91bGQgbW92ZSB0byBhbiBBU1QtYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIAogICAgSmF2YSBtb2RlbC4gQWxsIHNvdXJjZSBhbmQgcmVmYWN0b3Jpbmcgb3BlcmF0aW9ucyBzaG91bGQgYmUgcmV3cml0dGVuIHRvIHVzZSAKICAgIGNvbW1vbiBwcm9ncmFtIG1hbmlwdWxhdGlvbiBpbmZyYXN0cnVjdHVyZSBiYXNlZCBvbiBBU1RzIGFuZCBBU1QgcmV3cml0aW5nLiAKICAgIEFTVCBjcmVhdGlvbiBpbiB0aGUgcHJlc2VuY2Ugb2Ygc3ludGF4IGVycm9ycyBzaG91bGQgYmUgaW1wcm92ZWQgdG8gaW5jbHVkZSAKICAgIHBhcnRpYWwgYmluZGluZ3MuIFRoZSBnb2FsIGlzIHRvIHN1cHBvcnQgc3RhdGVtZW50IGxldmVsIHJlY292ZXJ5IGluIHRoZSBBU1QgCiAgICBwYXJzZXIuIFRoZSBwZXJmb3JtYW5jZSBvZiBBU1QgY3JlYXRpb24gc2hvdWxkIGJlIGltcHJvdmVkIGJ5IHVzaW5nIGEgc3BlY2lhbCAKICAgIHBhcnNlciBhbmQgZWxpbWluYXRpbmcgb25lIGludGVybmFsIGxheWVyIG9mIEFTVHMuIFRoZXJlIHNob3VsZCBhbHNvIGJlIGJldHRlciAKICAgIHN1cHBvcnQgZm9yIG5hdmlnYXRpbmcgYmV0d2VlbiBhIG5vZGUgaW4gYW4gQVNUIChvciBhbiBBU1QgYmluZGluZykgYW5kIHRoZSAKICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgSmF2YSBtb2RlbCAod2hpY2ggd291bGQgYmVuZWZpdCB2aWV3cyB0aGF0IHByZXNlbnQgCiAgICB0eXBlIGhpZXJhcmNoaWVzKS4gW0pEVCBDb3JlLCBKRFQgVUldICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjkiPjcxMTI5PC9hPik8L3A+CiAgPHA+IDxzdHJvbmc+U2VhcmNoIGVuaGFuY2VtZW50cy48L3N0cm9uZz4gUHJvdmlkZSBhZGRpdGlvbmFsIHNlYXJjaCBxdWVyaWVzIAogICAgdG8gZW5hYmxlIG1vcmUgcHJlY2lzZSBzZWFyY2hpbmc7IGUuZy4sIGZpbmQgd2hlcmUgaXMgYSBleGNlcHRpb24gdGhyb3duL2NhdWdodCwgCiAgICBtYXRjaCBhZ2FpbnN0IG1ldGhvZCBwYXJhbWV0ZXJzIGluIHJlZmVyZW5jZSBzZWFyY2hlcy4gW0pEVCBDb3JlLCBKRFQgVUldIAogICAgKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD03MTEzMCI+NzExMzA8L2E+KTwvcD4KICA8cD48c3Ryb25nPkxpYnJhcnkgcHJvamVjdHMuPC9zdHJvbmc+IEZvciBwbHVnLWluIGRldmVsb3BtZW50LCBQREUgZGlzdGluZ3Vpc2hlcyAKICAgIGJldHdlZW4gdGhlIHBsdWctaW4gcHJvamVjdHMgeW91IGFyZSB3b3JraW5nIG9uIChzb3VyY2UgcGx1Zy1pbiBwcm9qZWN0cykgCiAgICBhbmQgcGx1Zy1pbiBwcm9qZWN0cyB5b3UgYXJlIHdvcmtpbmcgd2l0aCBidXQgbm90IGFjdHVhbGx5IGNoYW5naW5nIChiaW5hcnkgCiAgICBwbHVnLWluIHByb2plY3RzKS4gTWFraW5nIHRoaXMgZGlzdGluY3Rpb24gYWZmb3J0cyB0aGUgdXNlciB0aGUgYmVuZWZpdHMgb2YgCiAgICBoYXZpbmcgZnVsbCBzb3VyY2UgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlaXIgd29ya3NwYWNlIHdoZXJlIGl0J3MgZWFzaWx5IGJyb3dzZWQgCiAgICBhbmQgc2VhcmNoZWQsIHdoaWxlIHBlcm1pdHRpbmcgZWNvbm9taWVzIGJlY2F1c2UgdGhlIGxhdHRlciBraW5kIG9mIHByb2plY3RzIAogICAgZG8gbm90IGFjdHVhbGx5IGhhdmUgdG8gYmUgKHJlKWNvbXBpbGVkLiBUaGlzIHdvcmsgaXRlbSBpcyB0byBzdXBwb3J0IGEgc2ltaWxhciAKICAgIG5vdGlvbiBvZiBsaWJyYXJ5IHByb2plY3QgZm9yIEphdmEgZGV2ZWxvcG1lbnQgaW4gZ2VuZXJhbC4gVGhlIHVzZXIgd291bGQgCiAgICBiZSBhYmxlIHRvIGZsYWcgYSBKYXZhIHByb2plY3QgYXMgYSBsaWJyYXJ5IHByb2plY3Q7IEpEVCB3b3VsZCBrbm93IGhvdyBwcmVzZW50IAogICAgbGlicmFyeSBwcm9qZWN0cyBhcHByb3ByaWF0ZWx5IGF0IHRoZSBVSSwgYW5kIGhvdyB0byBkZWFsIHdpdGggdGhlbSBtb3JlIGVmZmljaWVudGx5IAogICAgdXNpbmcgZ2VuZXJhdGVkIGJpbmFyaWVzLiBbSkRUIENvcmUsIEpEVCBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE2MiI+ODAxNjI8L2E+KSAKICAgIFtUaGVtZTogRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5XTwvcD4KICA8L2Jsb2NrcXVvdGU+CjxoND5EZWZlcnJlZCBJdGVtcyAoRWNsaXBzZSBKRFQgcHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgSkRUIHByb2plY3QuKQo8aDI+PGEgbmFtZT0iUERFIj5QbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50IChQREUpIHByb2plY3Q8L2E+PC9oMj4KVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGRlL2luZGV4Lmh0bWwiPnBsdWctaW4gZGV2ZWxvcG1lbnQKZW52aXJvbm1lbnQ8L2E+ICAoUERFKSBjb25zaXN0cyBvZiZuYnNwO3Rvb2xzIGZvciBkZXZlbG9waW5nIHBsdWctaW5zIGZvciB0aGUKRWNsaXBzZSBQbGF0Zm9ybS4gVGhlIGZvbGxvd2luZyB3b3JrIGl0ZW1zIHJlZmxlY3QgbmV3IGZlYXR1cmVzIG9mIFBERSwgb3IgYXJlYXMKd2hlcmUgZXhpc3RpbmcgZmVhdHVyZXMgd2lsbCBiZSBzaWduaWZpY2FudGx5IHJld29ya2VkLgo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIFBERSBwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPgogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIFBERSBwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPiAKICA8cD48Yj5SQ1Agc3VwcG9ydC48L2I+IFBERSBjdXJyZW50bHkgc3VwcG9ydHMgZGV2ZWxvcGluZyBFY2xpcHNlIHBsdWctaW5zLCBidXQgCiAgICBpcyBub3QgZXhwcmVzc2x5IGdlYXJlZCBmb3IgdGhlIHNwZWNpZmljIG5lZWRzIG9mIGNsaWVudHMgZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMgCiAgICBiYXNlZCBvbiB0aGUgUkNQLiBQREUgc2hvdWxkIGZhY2lsaXRhdGUgZGV2ZWxvcGluZyBhbmQgZGVwbG95aW5nIFJDUC1iYXNlZCAKICAgIGFwcGxpY2F0aW9ucy4gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD03MTEzMSI+NzExMzE8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dPC9wPgogIDxwPiA8c3Ryb25nPkltcHJvdmVkIHRhcmdldCBzdXBwb3J0Ljwvc3Ryb25nPiBQREUgbWFuYWdlcyBhIG1vZGVsIG9mIHRoZSB0YXJnZXQgCiAgICBFY2xpcHNlIGZvciB3aGljaCB5b3UgYXJlIGRldmVsb3BpbmcuIFRoZXNlIHRhcmdldHMgbWF5IGJlIGNvbXBsZXggYW5kIGRpdmVyc2UgCiAgICBhbmQgc3dpdGNoaW5nIHRhcmdldHMgb3IgbGF1bmNoIGNvbmZpZ3VyYXRpb25zIGNhbiBiZSBleHBlbnNpdmUuIFBERSB3aWxsIAogICAgYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBuYW1lZCB0YXJnZXRzLCBhbmQgYXV0b21hdGljYWxseSB0cmFjayBjaGFuZ2VzIHRvIHRoZSAKICAgIHdvcmtzcGFjZSBhZmZlY3RpbmcgdGFyZ2V0cy4gW1BERV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE2MyI+ODAxNjM8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dPC9wPgogIDxwPjxzdHJvbmc+T1NHaSBidW5kbGUgbWFuaWZlc3QgdG9vbGluZy48L3N0cm9uZz4gSW4gT1NHaSwgYnVuZGxlcyBhcmUgZGVmaW5lZCAKICAgIHVzaW5nIHN0YW5kYXJkIEpBUiBtYW5pZmVzdC5tZiBmaWxlcy4gUERFIDMuMCBjb250YWlucyBhIHJ1ZGltZW50YXJ5IG1hbmlmZXN0IAogICAgZWRpdG9yLiBUaGlzIHN1cHBvcnQgd2lsbCBiZSBleHBhbmRlZCBpbiAzLjEgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBpbXBvcnQvZXhwb3J0IAogICAgcGFja2FnZSwgZGVjbGFyYXRpdmUgc2VydmljZXMsIGluY3JlYXNlZCBkZXBlbmRlbmN5IHZhbGlkYXRpb24sIGFuZCB0b29scyAKICAgIGZvciAmcXVvdDtidW5kbGl6aW5nJnF1b3Q7IHRoaXJkLXBhcnR5IG5vbi1FY2xpcHNlIEpBUnMuIFtQREVdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNjUiPjgwMTY1PC9hPikgCiAgICBbVGhlbWU6IFJpY2ggQ2xpZW50IFBsYXRmb3JtXTwvcD4KICA8L2Jsb2NrcXVvdGU+CjxoND5EZWZlcnJlZCBJdGVtcyAoRWNsaXBzZSBQREUgcHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPgo8L2Jsb2NrcXVvdGU+CjxoND4oRW5kIG9mIGl0ZW1zIGZvciBFY2xpcHNlIFBERSBwcm9qZWN0Lik8L2g0Pgo8L2JvZHk+Cgo8L2h0bWw+