SU1QT1JUQU5ULiAgUmVhZCB0aGUgZm9sbG93aW5nIExNSSBTb2Z0d2FyZSBMaWNlbnNlIEFncmVlbWVudCAoIkFncmVlbWVudCIpDQpjb21wbGV0ZWx5Lg0KDQpMVU1JTkFSWSBNSUNSTyBTT0ZUV0FSRSBMSUNFTlNFIEFHUkVFTUVOVA0KDQogICAgICAgIFRoaXMgaXMgYSBsZWdhbCBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgKGVpdGhlciBhcyBhbiBpbmRpdmlkdWFsIG9yIGFzIGFuDQphdXRob3JpemVkIHJlcHJlc2VudGF0aXZlIG9mIHlvdXIgZW1wbG95ZXIpIGFuZCBMdW1pbmFyeSBNaWNybywgSW5jLiAoIkxNSSIpLg0KSXQgY29uY2VybnMgeW91ciByaWdodHMgdG8gdXNlIHRoaXMgZmlsZSBhbmQgYW55IGFjY29tcGFueWluZyB3cml0dGVuIG1hdGVyaWFscw0KKHRoZSAiU29mdHdhcmUiKS4gIEluIGNvbnNpZGVyYXRpb24gZm9yIExNSSBhbGxvd2luZyB5b3UgdG8gYWNjZXNzIHRoZQ0KU29mdHdhcmUsIHlvdSBhcmUgYWdyZWVpbmcgdG8gYmUgYm91bmQgYnkgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LiAgSWYgeW91DQpkbyBub3QgYWdyZWUgdG8gYWxsIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZG8gbm90IGRvd25sb2FkIG9yIHVzZSB0aGUNClNvZnR3YXJlLiAgSWYgeW91IGNoYW5nZSB5b3VyIG1pbmQgbGF0ZXIsIHN0b3AgdXNpbmcgdGhlIFNvZnR3YXJlIGFuZCBkZWxldGUNCmFsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlIGluIHlvdXIgcG9zc2Vzc2lvbiBvciBjb250cm9sLiAgQW55IGNvcGllcyBvZiB0aGUNClNvZnR3YXJlIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBkaXN0cmlidXRlZCwgd2hlcmUgcGVybWl0dGVkLCBhbmQgZG8gbm90IGRlc3Ryb3kNCndpbGwgY29udGludWUgdG8gYmUgZ292ZXJuZWQgYnkgdGhpcyBBZ3JlZW1lbnQuICBZb3VyIHByaW9yIHVzZSB3aWxsIGFsc28NCmNvbnRpbnVlIHRvIGJlIGdvdmVybmVkIGJ5IHRoaXMgQWdyZWVtZW50Lg0KDQoxLiAgICAgIExJQ0VOU0UgR1JBTlQuICBMTUkgZ3JhbnRzIHRvIHlvdSwgZnJlZSBvZiBjaGFyZ2UsIHRoZSBub24tZXhjbHVzaXZlLA0Kbm9uLXRyYW5zZmVyYWJsZSByaWdodCAoMSkgdG8gdXNlIHRoZSBTb2Z0d2FyZSwgKDIpIHRvIHJlcHJvZHVjZSB0aGUgU29mdHdhcmUsDQooMykgdG8gcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTb2Z0d2FyZSwgKDQpIHRvIGRpc3RyaWJ1dGUgdGhlIFNvZnR3YXJlDQphbmQgZGVyaXZhdGl2ZSB3b3JrcyB0aGVyZW9mIGluIHNvdXJjZSAoaHVtYW4tcmVhZGFibGUpIGZvcm0gYW5kIG9iamVjdA0KKG1hY2hpbmUtcmVhZGFibGUpIGZvcm0sIGFuZCAoNSkgdG8gc3VibGljZW5zZSB0byBvdGhlcnMgdGhlIHJpZ2h0IHRvIHVzZSB0aGUNCmRpc3RyaWJ1dGVkIFNvZnR3YXJlLiAgSWYgeW91IHZpb2xhdGUgYW55IG9mIHRoZSB0ZXJtcyBvciByZXN0cmljdGlvbnMgb2YgdGhpcw0KQWdyZWVtZW50LCBMTUkgbWF5IGltbWVkaWF0ZWx5IHRlcm1pbmF0ZSB0aGlzIEFncmVlbWVudCwgYW5kIHJlcXVpcmUgdGhhdCB5b3UNCnN0b3AgdXNpbmcgYW5kIGRlbGV0ZSBhbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSBpbiB5b3VyIHBvc3Nlc3Npb24gb3IgY29udHJvbC4NCg0KMi4gICAgICBDT1BZUklHSFQuICBUaGUgU29mdHdhcmUgaXMgbGljZW5zZWQgdG8geW91LCBub3Qgc29sZC4gTE1JIG93bnMgdGhlDQpTb2Z0d2FyZSwgYW5kIFVuaXRlZCBTdGF0ZXMgY29weXJpZ2h0IGxhd3MgYW5kIGludGVybmF0aW9uYWwgdHJlYXR5IHByb3Zpc2lvbnMNCnByb3RlY3QgdGhlIFNvZnR3YXJlLiAgVGhlcmVmb3JlLCB5b3UgbXVzdCB0cmVhdCB0aGUgU29mdHdhcmUgbGlrZSBhbnkgb3RoZXINCmNvcHlyaWdodGVkIG1hdGVyaWFsIChlLmcuIGEgYm9vayBvciBtdXNpY2FsIHJlY29yZGluZykuICBZb3UgbWF5IG5vdCB1c2Ugb3INCmNvcHkgdGhlIFNvZnR3YXJlIGZvciBhbnkgb3RoZXIgcHVycG9zZSB0aGFuIHdoYXQgaXMgZGVzY3JpYmVkIGluIHRoaXMNCkFncmVlbWVudC4gIEV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgaGVyZWluLCBMTUkgZG9lcyBub3QgZ3JhbnQgdG8geW91IGFueQ0KZXhwcmVzcyBvciBpbXBsaWVkIHJpZ2h0cyB1bmRlciBhbnkgTE1JIG9yIHRoaXJkLXBhcnR5IHBhdGVudHMsIGNvcHlyaWdodHMsDQp0cmFkZW1hcmtzLCBvciB0cmFkZSBzZWNyZXRzLiAgQWRkaXRpb25hbGx5LCB5b3UgbXVzdCByZXByb2R1Y2UgYW5kIGFwcGx5IGFueQ0KY29weXJpZ2h0IG9yIG90aGVyIHByb3ByaWV0YXJ5IHJpZ2h0cyBub3RpY2VzIGluY2x1ZGVkIG9uIG9yIGVtYmVkZGVkIGluIHRoZQ0KU29mdHdhcmUgdG8gYW55IGNvcGllcyBvciBkZXJpdmF0aXZlIHdvcmtzIG1hZGUgdGhlcmVvZiwgaW4gd2hvbGUgb3IgaW4gcGFydCwNCmlmIGFueS4NCg0KMy4gICAgICBTVVBQT1JULiAgTE1JIGlzIE5PVCBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBhbnkgc3VwcG9ydCwgdXBncmFkZXMgb3IgbmV3DQpyZWxlYXNlcyBvZiB0aGUgU29mdHdhcmUuICBJZiB5b3Ugd2lzaCwgeW91IG1heSBjb250YWN0IExNSSBhbmQgcmVwb3J0IHByb2JsZW1zDQphbmQgcHJvdmlkZSBzdWdnZXN0aW9ucyByZWdhcmRpbmcgdGhlIFNvZnR3YXJlLiAgTE1JIGhhcyBubyBvYmxpZ2F0aW9uDQp3aGF0c29ldmVyIHRvIHJlc3BvbmQgaW4gYW55IHdheSB0byBzdWNoIGEgcHJvYmxlbSByZXBvcnQgb3Igc3VnZ2VzdGlvbi4gIExNSQ0KbWF5IG1ha2UgY2hhbmdlcyB0byB0aGUgU29mdHdhcmUgYXQgYW55IHRpbWUsIHdpdGhvdXQgYW55IG9ibGlnYXRpb24gdG8gbm90aWZ5DQpvciBwcm92aWRlIHVwZGF0ZWQgdmVyc2lvbnMgb2YgdGhlIFNvZnR3YXJlIHRvIHlvdS4NCg0KNC4gICAgICBJTkRFTU5JVFkuICBZb3UgYWdyZWUgdG8gZnVsbHkgZGVmZW5kIGFuZCBpbmRlbW5pZnkgTE1JIGZyb20gYW55IGFuZA0KYWxsIGNsYWltcywgbGlhYmlsaXRpZXMsIGFuZCBjb3N0cyAoaW5jbHVkaW5nIHJlYXNvbmFibGUgYXR0b3JuZXmScyBmZWVzKQ0KcmVsYXRlZCB0byAoMSkgeW91ciB1c2UgKGluY2x1ZGluZyB5b3VyIHN1Yi1saWNlbnNlZZJzIHVzZSwgaWYgcGVybWl0dGVkKSBvZg0KdGhlIFNvZnR3YXJlIG9yICgyKSB5b3VyIHZpb2xhdGlvbiBvZiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcw0KQWdyZWVtZW50Lg0KDQo1LiAgICAgIEhJR0ggUklTSyBBQ1RJVklUSUVTLiAgWW91IGFja25vd2xlZGdlIHRoYXQgdGhlIFNvZnR3YXJlIGlzIG5vdCBmYXVsdA0KdG9sZXJhbnQgYW5kIGlzIG5vdCBkZXNpZ25lZCwgbWFudWZhY3R1cmVkIG9yIGludGVuZGVkIGJ5IExNSSBmb3IgaW5jb3Jwb3JhdGlvbg0KaW50byBwcm9kdWN0cyBpbnRlbmRlZCBmb3IgdXNlIG9yIHJlc2FsZSBpbiBvbi1saW5lIGNvbnRyb2wgZXF1aXBtZW50IGluDQpoYXphcmRvdXMsIGRhbmdlcm91cyB0byBsaWZlIG9yIHBvdGVudGlhbGx5IGxpZmUtdGhyZWF0ZW5pbmcgZW52aXJvbm1lbnRzDQpyZXF1aXJpbmcgZmFpbC1zYWZlIHBlcmZvcm1hbmNlLCBzdWNoIGFzIGluIHRoZSBvcGVyYXRpb24gb2YgbnVjbGVhcg0KZmFjaWxpdGllcywgYWlyY3JhZnQgbmF2aWdhdGlvbiBvciBjb21tdW5pY2F0aW9uIHN5c3RlbXMsIGFpciB0cmFmZmljIGNvbnRyb2wsDQpkaXJlY3QgbGlmZSBzdXBwb3J0IG1hY2hpbmVzIG9yIHdlYXBvbnMgc3lzdGVtcywgaW4gd2hpY2ggdGhlIGZhaWx1cmUgb2YNCnByb2R1Y3RzIGNvdWxkIGxlYWQgZGlyZWN0bHkgdG8gZGVhdGgsIHBlcnNvbmFsIGluanVyeSBvciBzZXZlcmUgcGh5c2ljYWwgb3INCmVudmlyb25tZW50YWwgZGFtYWdlICgiSGlnaCBSaXNrIEFjdGl2aXRpZXMiKS4gIFlvdSBzcGVjaWZpY2FsbHkgcmVwcmVzZW50IGFuZA0Kd2FycmFudCB0aGF0IHlvdSB3aWxsIG5vdCB1c2UgdGhlIFNvZnR3YXJlIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgb2YgdGhlDQpTb2Z0d2FyZSBmb3IgSGlnaCBSaXNrIEFjdGl2aXRpZXMuDQoNCjYuICAgICAgUFJPRFVDVCBMQUJFTElORy4gIFlvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gdXNlIGFueSBMTUkgdHJhZGVtYXJrcywNCmJyYW5kIG5hbWVzLCBvciBsb2dvcy4NCg0KNy4gICAgICBDT01QTElBTkNFIFdJVEggTEFXUzsgRVhQT1JUIFJFU1RSSUNUSU9OUy4gIFlvdSBtdXN0IHVzZSB0aGUgU29mdHdhcmUNCmluIGFjY29yZGFuY2Ugd2l0aCBhbGwgYXBwbGljYWJsZSBVLlMuIGxhd3MsIHJlZ3VsYXRpb25zIGFuZCBzdGF0dXRlcy4gIFlvdQ0KYWdyZWUgdGhhdCBuZWl0aGVyIHlvdSBub3IgeW91ciBsaWNlbnNlZXMgKGlmIGFueSkgaW50ZW5kIHRvIG9yIHdpbGwsIGRpcmVjdGx5DQpvciBpbmRpcmVjdGx5LCBleHBvcnQgb3IgdHJhbnNtaXQgdGhlIFNvZnR3YXJlIHRvIGFueSBjb3VudHJ5IGluIHZpb2xhdGlvbiBvZg0KVS5TLiBleHBvcnQgcmVzdHJpY3Rpb25zLg0KDQo4LiAgICAgIEdPVkVSTk1FTlQgVVNFLiAgVXNlIG9mIHRoZSBTb2Z0d2FyZSBhbmQgYW55IGNvcnJlc3BvbmRpbmcNCmRvY3VtZW50YXRpb24sIGlmIGFueSwgaXMgcHJvdmlkZWQgd2l0aCBSRVNUUklDVEVEIFJJR0hUUy4gIFVzZSwgZHVwbGljYXRpb24gb3INCmRpc2Nsb3N1cmUgYnkgdGhlIEdvdmVybm1lbnQgaXMgc3ViamVjdCB0byByZXN0cmljdGlvbnMgYXMgc2V0IGZvcnRoIGluDQpzdWJwYXJhZ3JhcGggKGMpKDEpKGlpKSBvZiBUaGUgUmlnaHRzIGluIFRlY2huaWNhbCBEYXRhIGFuZCBDb21wdXRlciBTb2Z0d2FyZQ0KY2xhdXNlIGF0IERGQVJTIDI1Mi4yMjctNzAxMyBvciBzdWJwYXJhZ3JhcGhzIChjKShsKSBhbmQgKDIpIG9mIHRoZSBDb21tZXJjaWFsDQpDb21wdXRlciBTb2Z0d2FyZS0tUmVzdHJpY3RlZCBSaWdodHMgYXQgNDggQ0ZSIDUyLjIyNy0xOSwgYXMgYXBwbGljYWJsZS4NCk1hbnVmYWN0dXJlciBpcyBMdW1pbmFyeSBNaWNybywgSW5jLiwgMjQ5OSBTLiBDYXBpdGFsIG9mIFRleGFzIEh3eSBTdGUgQS0xMDAsDQpBdXN0aW4sIFRleGFzIDc4NzQ2Lg0KDQo5LiAgICAgIERJU0NMQUlNRVIgT0YgV0FSUkFOVFkuICBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIEJZIExBVywgTE1JDQpFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBXQVJSQU5UWSBGT1IgVEhFIFNPRlRXQVJFLiAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEDQoiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcsDQpXSVRIT1VUIExJTUlUQVRJT04sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBDQpQQVJUSUNVTEFSIFBVUlBPU0UsIE9SIE5PTi1JTkZSSU5HRU1FTlQuICBZT1UgQVNTVU1FIFRIRSBFTlRJUkUgUklTSyBBUklTSU5HDQpPVVQgT0YgVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSEUgU09GVFdBUkUsIE9SIEFOWSBTWVNURU1TIFlPVSBERVNJR04gVVNJTkcNClRIRSBTT0ZUV0FSRSAoSUYgQU5ZKS4gIE5PVEhJTkcgSU4gVEhJUyBBR1JFRU1FTlQgTUFZIEJFIENPTlNUUlVFRCBBUyBBDQpXQVJSQU5UWSBPUiBSRVBSRVNFTlRBVElPTiBCWSBMTUkgVEhBVCBUSEUgU09GVFdBUkUgT1IgQU5ZIERFUklWQVRJVkUgV09SSw0KREVWRUxPUEVEIFdJVEggT1IgSU5DT1JQT1JBVElORyBUSEUgU09GVFdBUkUgV0lMTCBCRSBGUkVFIEZST00gSU5GUklOR0VNRU5UIE9GDQpUSEUgSU5URUxMRUNUVUFMIFBST1BFUlRZIFJJR0hUUyBPRiBUSElSRCBQQVJUSUVTLg0KDQoxMC4gICAgIExJTUlUQVRJT04gT0YgTElBQklMSVRZLiAgSU4gTk8gRVZFTlQgV0lMTCBMTUkgQkUgTElBQkxFLCBXSEVUSEVSIElODQpDT05UUkFDVCwgVE9SVCwgT1IgT1RIRVJXSVNFLCBGT1IgQU5ZIElOQ0lERU5UQUwsIFNQRUNJQUwsIElORElSRUNULA0KQ09OU0VRVUVOVElBTCBPUiBQVU5JVElWRSBEQU1BR0VTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgREFNQUdFUyBGT1INCkFOWSBMT1NTIE9GIFVTRSwgTE9TUyBPRiBUSU1FLCBJTkNPTlZFTklFTkNFLCBDT01NRVJDSUFMIExPU1MsIE9SIExPU1QgUFJPRklUUywNClNBVklOR1MsIE9SIFJFVkVOVUVTIFRPIFRIRSBGVUxMIEVYVEVOVCBTVUNIIE1BWSBCRSBESVNDTEFJTUVEIEJZIExBVy4NCg0KMTEuICAgICBDSE9JQ0UgT0YgTEFXOyBWRU5VRTsgTElNSVRBVElPTlMuICBZb3UgYWdyZWUgdGhhdCB0aGUgc3RhdHV0ZXMgYW5kDQpsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCB0aGUgU3RhdGUgb2YgVGV4YXMsIFVTQSwgd2l0aG91dCByZWdhcmQgdG8NCmNvbmZsaWN0cyBvZiBsYXdzIHByaW5jaXBsZXMsIHdpbGwgYXBwbHkgdG8gYWxsIG1hdHRlcnMgcmVsYXRpbmcgdG8gdGhpcw0KQWdyZWVtZW50IG9yIHRoZSBTb2Z0d2FyZSwgYW5kIHlvdSBhZ3JlZSB0aGF0IGFueSBsaXRpZ2F0aW9uIHdpbGwgYmUgc3ViamVjdCB0bw0KdGhlIGV4Y2x1c2l2ZSBqdXJpc2RpY3Rpb24gb2YgdGhlIHN0YXRlIG9yIGZlZGVyYWwgY291cnRzIGluIEF1c3RpbiwgVHJhdmlzDQpDb3VudHksIFRleGFzLCBVU0EuICBZb3UgYWdyZWUgdGhhdCByZWdhcmRsZXNzIG9mIGFueSBzdGF0dXRlIG9yIGxhdyB0byB0aGUNCmNvbnRyYXJ5LCBhbnkgY2xhaW0gb3IgY2F1c2Ugb2YgYWN0aW9uIGFyaXNpbmcgb3V0IG9mIG9yIHJlbGF0ZWQgdG8gdGhpcw0KQWdyZWVtZW50IG9yIHRoZSBTb2Z0d2FyZSBtdXN0IGJlIGZpbGVkIHdpdGhpbiBvbmUgKDEpIHllYXIgYWZ0ZXIgc3VjaCBjbGFpbSBvcg0KY2F1c2Ugb2YgYWN0aW9uIGFyb3NlIG9yIGJlIGZvcmV2ZXIgYmFycmVkLg0KDQoxMi4gICAgIEVOVElSRSBBR1JFRU1FTlQuICBUaGlzIEFncmVlbWVudCBjb25zdGl0dXRlcyB0aGUgZW50aXJlIGFncmVlbWVudA0KYmV0d2VlbiB5b3UgYW5kIExNSSByZWdhcmRpbmcgdGhlIHN1YmplY3QgbWF0dGVyIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQNCnN1cGVyc2VkZXMgYWxsIHByaW9yIGNvbW11bmljYXRpb25zLCBuZWdvdGlhdGlvbnMsIHVuZGVyc3RhbmRpbmdzLCBhZ3JlZW1lbnRzDQpvciByZXByZXNlbnRhdGlvbnMsIGVpdGhlciB3cml0dGVuIG9yIG9yYWwsIGlmIGFueS4gIFRoaXMgQWdyZWVtZW50IG1heSBvbmx5IGJlDQphbWVuZGVkIGluIHdyaXR0ZW4gZm9ybSwgZXhlY3V0ZWQgYnkgeW91IGFuZCBMTUkuDQoNCjEzLiAgICAgU0VWRVJBQklMSVRZLiAgSWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBoZWxkIGZvciBhbnkNCnJlYXNvbiB0byBiZSBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUsIHRoZW4gdGhlIHJlbWFpbmluZyBwcm92aXNpb25zIG9mIHRoaXMNCkFncmVlbWVudCB3aWxsIGJlIHVuaW1wYWlyZWQgYW5kLCB1bmxlc3MgYSBtb2RpZmljYXRpb24gb3IgcmVwbGFjZW1lbnQgb2YgdGhlDQppbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgcHJvdmlzaW9uIGlzIGZ1cnRoZXIgaGVsZCB0byBkZXByaXZlIHlvdSBvciBMTUkgb2YgYQ0KbWF0ZXJpYWwgYmVuZWZpdCwgaW4gd2hpY2ggY2FzZSB0aGUgQWdyZWVtZW50IHdpbGwgaW1tZWRpYXRlbHkgdGVybWluYXRlLCB0aGUNCmludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSBwcm92aXNpb24gd2lsbCBiZSByZXBsYWNlZCB3aXRoIGEgcHJvdmlzaW9uIHRoYXQgaXMNCnZhbGlkIGFuZCBlbmZvcmNlYWJsZSBhbmQgdGhhdCBjb21lcyBjbG9zZXN0IHRvIHRoZSBpbnRlbnRpb24gdW5kZXJseWluZyB0aGUNCmludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSBwcm92aXNpb24uDQoNCjE0LiAgICAgTk8gV0FJVkVSLiAgVGhlIHdhaXZlciBieSBMTUkgb2YgYW55IGJyZWFjaCBvZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMNCkFncmVlbWVudCB3aWxsIG5vdCBvcGVyYXRlIG9yIGJlIGNvbnN0cnVlZCBhcyBhIHdhaXZlciBvZiBhbnkgb3RoZXIgb3IgYQ0Kc3Vic2VxdWVudCBicmVhY2ggb2YgdGhlIHNhbWUgb3IgYSBkaWZmZXJlbnQgcHJvdmlzaW9uLg0K