sabato 1 gennaio 2000

[AL CORPUS] Thought-Forms [1/1]

VEhPVUdIVC1GT1JNUyAKCgpCWSAKCkFOTklFIEJFU0FOVCAKCkFORCAKCkMuIFcuIExFQUQgQkVBVEVSIAoKCldJVEggRklGVFktRUlHSFQgSUxMVVNUUkFUSU9OUyAKCgpMT05ET04gQU5EIEJFTkFSRVMgCgpUSEUgVEhFT1NPUEhJQ0FMIFBVQkxJU0hJTkcgU09DSUVUWSAKCkNJVFkgQUdFTlRTOiBMVU5ELCBIVU1QSFJJRVMsIExURC4sICwgQU1FTiBDT1JORVIgCkNISUNBR086IFRIRSBUSEVPU09QSElDQUwgQk9PSyBDT05DRVJOIAoKTkVXIFlPUks6IEpPSE4gTEFORSAKCgpGT1JFV09SRCAKCgpUaGUgdGV4dCBvZiB0aGlzIGxpdHRsZSBib29rIGlzIHRoZSBqb2ludCB3b3JrIG9mIE1yIApMZWFkYmVhdGVyIGFuZCBteXNlbGYgOyBzb21lIG9mIGl0IGhhcyBhbHJlYWR5IGFwcGVhcmVkIAphcyBhbiBhcnRpY2xlIGluIEx1Y2lmZXIgKG5vdyB0aGUgVGhlb3NvcGhpY2FsIFJldmlldyApLC4gCmJ1dCB0aGUgZ3JlYXRlciBwYXJ0IG9mIGl0IGlzIG5ldy4gVGhlIGRyYXdpbmcgYW5kIApwYWludGluZyBvZiB0aGUgVGhvdWdodC0gRm9ybXMgb2JzZXJ2ZWQgYnkgTXIgTGVhZC0gCmJlYXRlciBvciBieSBteXNlbGYsIG9yIGJ5IGJvdGggb2YgdXMgdG9nZXRoZXIsIGhhcyBiZWVuIApkb25lIGJ5IHRocmVlIGZyaWVuZHMg4oCUIE1yIEpvaG4gVmFybGV5LCBNciBQcmluY2UsIAphbmQgTWlzcyBNYWNmYXJsYW5lLCB0byBlYWNoIG9mIHdob20gd2UgdGVuZGVyIG91ciAKY29yZGlhbCB0aGFua3MuIFRvIHBhaW50IGluIGVhcnRoIHMgZHVsbCBjb2xvdXJzIHRoZTsgCmZvcm1zIGNsb3RoZWQgaW4gdGhlIGxpdmluZyBsaWdodCBvZiBvdGhlciB3b3JsZHMgaXMgYSBoYXJkLCAKYW5kIHRoYW5rbGVzcyB0YXNrIDsgc28gbXVjaCB0aGUgbW9yZSBncmF0aXR1ZGUgaXMgZHVlIAp0byB0aG9zZSB3aG8gaGF2ZSBhdHRlbXB0ZWQgaXQuIFRoZXkgbmVlZGVkIGNvbG91cmVkIApmaXJlLCBhbmQgaGFkIG9ubHkgZ3JvdW5kIGVhcnRocy4gV2UgaGF2ZSBhbHNvIHRvIHRoYW5rIApNciBGLiBCbGlnaCBCb25kIGZvciBhbGxvd2luZyB1cyB0byB1c2UgaGlzIGVzc2F5IG9uIApWaWJyYXRpb24gRmlndXJlcyAsIGFuZCBzb21lIG9mIGhpcyBleHF1aXNpdGUgZHJhd2luZ3MuLiAKQW5vdGhlciBmcmllbmQsIHdobyBzZW50IHVzIHNvbWUgbm90ZXMgYW5kIGEgZmV3IApkcmF3aW5ncywgaW5zaXN0cyBvbiByZW1haW5pbmcgYW5vbnltb3VzLCBzbyB3ZSBjYW4uIApvbmx5IHNlbmQgb3VyIHRoYW5rcyB0byBoaW0gd2l0aCBzaW1pbGFyIGFub255bWl0eS4gCgpJdCBpcyBvdXIgZWFybmVzdCBob3Bl4oCUIGFzIGl0IGlzIG91ciBiZWxpZWbigJQgdGhhdCB0aGlzLSAKbGl0dGxlIGJvb2sgd2lsbCBzZXJ2ZSBhcyBhIHN0cmlraW5nIG1vcmFsIGxlc3NvbiB0byBldmVyeSAKcmVhZGVyLCBtYWtpbmcgaGltIHJlYWxpc2UgdGhlIG5hdHVyZSBhbmQgcG93ZXIgb2YgaGlzIAp0aG91Z2h0cywgYWN0aW5nIGFzIGEgc3RpbXVsdXMgdG8gdGhlIG5vYmxlLCBhIGN1cmIgb24gCgp0aGUgYmFzZS4gV2l0aCB0aGlzIGJlbGllZiBhbmQgaG9wZSB3ZSBzZW5kIGl0IG9uIGl0cyAKd2F5LiAKCkFOTklFIEJFU0FOVC4gCgoKQ09OVEVOVFMgCgoKViBBR0UgCgpGT1JFV09SRCAuLi4uLi4uIDYgCgpJTlRST0RVQ1RJT04gLiAuIC4gLiAuIC4gSSByIAoKVEhFIERJRkZJQ1VMVFkgT0YgUkVQUkVTRU5UQVRJT04gLiAuIC4gMSA2IAoKVEhFIFRXTyBFRkZFQ1RTIE9GIFRIT1VHSFQgLiAuIC4gLjIxIAoKSE9XIFRIRSBWSUJSQVRJT04gQUNUUyAuIC4gLiAuIC4yMyAKClRIRSBGT1JNIEFORCBJVFMgRUZGRUNUIC4gLiAuIC4gLjI1IAoKVEhFIE1FQU5JTkcgT0YgVEhFIENPTE9VUlMgLiAuIC4gLjMyIAoKVEhSRUUgQ0xBU1NFUyBPRiBUSE9VR0hULUZPUk1TIC4gLiAuIC4zNiAKCklMTFVTVFJBVElWRSBUSE9VR0hULUZPUk1TIC4uLi4uIDQwIAoKQUZGRUNUSU9OIC4uLi4uLi4gNDAtNDQgCgpERVZPVElPTiAuLi4uLi4uIDQ0LTQ5IAoKSU5URUxMRUNUIC4uLi4uLi4gNDktNTAgCgpBTUJJVElPTiAuIC4gLiAuIC4gLiAuNTEgCgpBTkdFUiAuLi4uLi4uLiA1MiAKClNZTVBBVEhZIC4gLiAuIC4gLiAuIDU1IAoKRkVBUiDigKIgLi4uIDwzIAoKR1JFRUQgLi4uLi4uLi4gNTYgCgpWQVJJT1VTIEVNT1RJT05TIC4gLiAuIC4gLiAqIDU3IAoKU0hJUFdSRUNLIC4gLiAuIC4gLiAuIC41NyAKCk9OIFRIRSBGSVJTVCBOSUdIVCAuLi4uLiA1OSAKClRIRSBHQU1CTEVSUyAuIC4gLiAuIC4gLiA2MCAKCkFUIEEgU1RSRUVUIEFDQ0lERU5UIC4gLiAuIC4gNiAxIAoKQVQgQSBGVU5FUkFMIC4gLiAuIC4gLiAuIDZsIAoKT04gTUVFVElORyBBIEZSSUVORCAuLi4uLiA2NCAKCkFQUFJFQ0lBVElPTiBPRiBBIFBJQ1RVUkUgLiAuIC4gNjUgCgoKdmlpIAoKCkNPTlRFTlRTIAoKCnZtIAoKRk9STVMgU0VFTiBJTiBNRURJVEFUSU9OIAoKU1lNUEFUSFkgQU5EIExPVkUgRk9SIEFMTCAKQU4gQVNQSVJBVElPTiBUTyBFTkZPTEQgQUxMIC4gCklOIFRIRSBTSVggRElSRUNUSU9OUyAKQ09TTUlDIE9SREVSIAoKKiDigKIgCgpUSEUgTE9HT1MgQVMgTUFOSUZFU1RFRCBJTiBNQU4gClRIRSBMT0dPUyBQRVJWQURJTkcgQUxMIApBTk9USEVSIENPTkNFUFRJT04gCgrigKIg4oCiIAoKVEhFIFRIUkVFRk9MRCBNQU5JRkVTVEFUSU9OIApUSEUgU0VWRU5GT0xEIE1BTklGRVNUQVRJT04gCklOVEVMTEVDVFVBTCBBU1BJUkFUSU9OIC4gCgpIRUxQRlVMIFRIT1VHSFRTIAoK4oCiIOKAoiAKCkZPUk1TIEJVSUxUIEJZIE1VU0lDIC4gCgoqICogCgpNRU5ERUxTU09ITiAKCiog4oCiIAoKR09VTk9EIAoKKiDigKIgIyAKCldBR05FUiAKCgppJ0FHRSAKCjY2IAoKNjYgCgo2NiAKCjY3IAoKNjggCgo2OSAKCjcwIAoKNzEgCgo3MSAKCjcyIAo3MiAKCjc0IAoKNzUgCjc3IAo4MCAKCjgyIAoKCkxJU1QgT0YgSUxMVVNUUkFUSU9OUyAKCgpNRUFOSU5HIE9GIFRIRSBDT0xPVVJTIApDSExBRE5s4oCZcyBTT1VORCBQTEFURSAuIApGT1JNUyBQUk9EVUNFRCBJTiBTQU5EIAoKYSBuIAoKRk9STVMgUFJPRFVDRUQgQlkgUEVORFVMVU1TIApWQUdVRSBQVVJFIEFGRkVDVElPTiAKVkFHVUUgU0VMRklTSCBBRkZFQ1RJT04gLiAKREVGSU5JVEUgQUZGRUNUSU9OIApSQURJQVRJTkcgQUZGRUNUSU9OIApQRUFDRSBBTkQgUFJPVEVDVElPTiAKR1JBU1BJTkcgQU5JTUFMIEFGRkVDVElPTiAKVkFHVUUgUkVMSUdJT1VTIEZFRUxJTkcuIApVUFdBUkQgUlVTSCBPRiBERVZPVElPTiAKU0VMRi1SRU5VTkNJQVRJT04gClJFU1BPTlNFIFRPIERFVk9USU9OIApWQUdVRSBJTlRFTExFQ1RVQUwgUExFQVNVUkUgClZBR1VFIFNZTVBBVEhZIC4gCgpUSEUgSU5URU5USU9OIFRPIEtOT1cgLiAKCkhJR0ggQU1CSVRJT04gClNFTEZJU0ggQU1CSVRJT04gLiAKCk1VUkRFUk9VUyBSQUdFIC4gCgpTVVNUQUlORUQgQU5HRVIgLiAKCkVYUExPU0lWRSBBTkdFUiAuIAoKV0FUQ0hGVUwgSkVBTE9VU1kgCkFOR1JZIEpFQUxPVVNZIC4gCgoKRnJvbnRpc3BpZWNlIAoKCkZJRy4gCgpJKkFHSyAKCnIgCgoyJiAKCjIgCgoyOCAKCjMgCgoyOSAKCjR+NyAKCjPCsCogCgo4IAoKNDAgCgo5IAoKNCBPJyAKCjEwIAoKNDIgCgoxIDEgCgo0MyAKCjEyIAoKNDLigJkgCgoxMyAKCjQzIAoKMTQgCgo0NCAKCio1IAoKNDYgCgpyIDYgCgo0NCAKCjE3IAoKNDYqIAoKcjggCgo1MCAKCjEgOGEgCgo1MCAKCjE5IAoKNSogCgoyMCAKCjUqIAoKMjEgCgo1MiAKCjIyIAoKNTMgCgoyMyAKCjUzIAoKMjQgCgo1KiAKCjI1IAoKNTQgCgoyNiAKCjU0IAoKaXggCgoKWCAKCgpMSVNUIE9GIElMTFVTVFJBVElPTlMgCgoKU1VEREVOIEZSSUdIVCAKU0VMRklTSCBHUkVFRCAKR1JFRUQgRk9SIERSSU5LIApBVCBBIFNISVBXUkVDSyAKT04gVEhFIEZJUlNUIE5JR0hUIApUSEUgR0FNQkxFUlMgCkFUIEEgU1RSRUVUIEFDQ0lERU5UIApBVCBBIEZVTkVSQUwgCk9OIE1FRVRJTkcgQSBGUklFTkQgClRIRSBBUFBSRUNJQVRJT04gT0YgQSBQSUNUVVJFIApTWU1QQVRIWSBBTkQgTE9WRSBGT1IgQUxMIApBTiBBU1BJUkFUSU9OIFRPIEVORk9MRCBBTEwgCklOIFRIRSBTSVggRElSRUNUSU9OUyAKQU4gSU5URUxMRUNUVUFMIENPTkNFUFRJT04gT0YgKCAKVEhFIExPR09TIEFTIE1BTklGRVNURUQgSU4gTUFOIApUSEUgTE9HT1MgUEVSVkFESU5HIEFMTCAKQU5PVEhFUiBDT05DRVBUSU9OIApUSEUgVEhSRUVGT0xEIE1BTklGRVNUQVRJT04gClRIRSBTRVZFTkZPTEQgTUFOSUZFU1RBVElPTiAKSU5URUxMRUNUVUFMIEFTUElSQVRJT04gLiAKCkhFTFBGVUwgVEhPVUdIVFMgCgpNVVNJQyBPRiBNRU5ERUxTU09ITiAKT0YgR09VTk9EIC4gCgrigJ4gT0YgV0FHTkVSIC4gCgoK4oCiICogCgpGSUcuIAoKLiAyNyAKClBBR0UgCgo1NSAKCuKAoiBmdCAKCi4gMjggCgo1NiAKCuKAoiBmdCAKCjI5IAoKNTYgCgrigKIg4oCiIAoKM8KwIAoKNTggCgrigKIgKiAKCiogCgo1OSAKCuKAoiDigKIgCgrigKIgMzIgCgo2MCAKCiog4oCiIAoKKiAzMyAKCjZsIAoK4oCiIGZ0IAoKMzQgCgo2MiAKCuKAoiBmdCAKCiogMzUgCgo2NCAKCuKAoiBmdCAKCjM2IAoKNjQgCgoqIGZ0IAoKKiAzNyAKCjY2IAoK4oCiIGZ0IAoKLiAzOCAKCjY3IAoK4oCiIGZ0IAoK4oCiIDM5IAoKNjYgCgpBbEMgT1JERVIuIAoKLiA0MCAKCjY5IAoKKiDigKIgCgo0MSAKCjY5IAoKKiDigKIgCgo0MiBhbmQgNDQgCgo3MCAKCuKAoiDCuyAKCiogNDUgCgo3MCAKCuKAoiDCqyAKCi4gNDYgCgo3MCAKCuKAoiAqIAoKLiA0NyAKCjcwIAoK4oCiIOKAoiAKCuKAoiA0MyAKCjcyIAoKNDgsIDQ5KSA1wrApIDUxKSAKCjUyLCA1MywgNTQgCgo3NCAKCiogZnQgCgpQTEFURSAKCk0gCgo3OCAKCmZ0IGZ0IAoKwrsgTyAKCjgwIAoKZnQgZnQgCgouIFcgCgo4MiAKClRIT1VHSFQtRk9STVMgCgoKQXMga25vd2xlZGdlIGluY3JlYXNlcywgdGhlIGF0dGl0dWRlIG9mIHNjaWVuY2UgdG93YXJkcyAKdGhlIHRoaW5ncyBvZiB0aGUgaW52aXNpYmxlIHdvcmxkIGlzIHVuZGVyZ29pbmcgY29uLSAKc2lkZXJhYmxlIG1vZGlmaWNhdGlvbi4gSXRzIGF0dGVudGlvbiBpcyBubyBsb25nZXIgZGlyZWN0ZWQgCnNvbGVseSB0byB0aGUgZWFydGggd2l0aCBhbGwgaXRzIHZhcmlldHkgb2Ygb2JqZWN0cywgCm9yIHRvIHRoZSBwaHlzaWNhbCB3b3JsZHMgYXJvdW5kIGl0IDsgYnV0IGl0IGZpbmRzIGl0c2VsZiAKY29tcGVsbGVkIHRvIGdsYW5jZSBmdXJ0aGVyIGFmaWVsZCwgYW5kIHRvIGNvbnN0cnVjdCAKaHlwb3RoZXNlcyBhcyB0byB0aGUgbmF0dXJlIG9mIHRoZSBtYXR0ZXIgYW5kIGZvcmNlIAp3aGljaCBsaWUgaW4gdGhlIHJlZ2lvbnMgYmV5b25kIHRoZSBrZW4gb2YgaXRzIGluc3RydS0gCm1lbnRzLiBFdGhlciBpcyBub3cgY29tZm9ydGFibHkgc2V0dGxlZCBpbiB0aGUgc2NpZW50aWZpYyAKa2luZ2RvbSwgYmVjb21pbmcgYWxtb3N0IG1vcmUgdGhhbiBhIGh5cG90aGVzaXMuIApNZXNtZXJpc20sIHVuZGVyIGl0cyBuZXcgbmFtZSBvZiBoeXBub3Rpc20sIGlzIG5vIApsb25nZXIgYW4gb3V0Y2FzdC4gUmVpY2hlbmJhY2jigJlzIGV4cGVyaW1lbnRzIGFyZSAKc3RpbGwgbG9va2VkIGF0IGFza2FuY2UsIGJ1dCBhcmUgbm90IHdob2xseSBjb25kZW1uZWQuIApSb250Z2Vu4oCZcyByYXlzIGhhdmUgcmVhcnJhbmdlZCBzb21lIG9mIHRoZSBvbGRlciBpZGVhcyAKb2YgbWF0dGVyLCB3aGlsZSByYWRpdW0gaGFzIHJldm9sdXRpb25pc2VkIHRoZW0sIGFuZCBpcyAKbGVhZGluZyBzY2llbmNlIGJleW9uZCB0aGUgYm9yZGVybGFuZCBvZiBldGhlciBpbnRvIHRoZSAKYXN0cmFsIHdvcmxkLiBUaGUgYm91bmRhcmllcyBiZXR3ZWVuIGFuaW1hdGUgYW5kIAppbmFuaW1hdGUgbWF0dGVyIGFyZSBicm9rZW4gZG93bi4gTWFnbmV0cyBhcmUgZm91bmQgCnRvIGJlIHBvc3Nlc3NlZCBvZiBhbG1vc3QgdW5jYW5ueSBwb3dlcnMsIHRyYW5zZmVycmluZyAKY2VydGFpbiBmb3JtcyBvZiBkaXNlYXNlIGluIGEgd2F5IG5vdCB5ZXQgc2F0aXNmYWN0b3JpbHkgCmV4cGxhaW5lZC4gVGVsZXBhdGh5LCBjbGFpcnZveWFuY2UsIG1vdmVtZW50IHdpdGhvdXQgCmNvbnRhY3QsIHRob3VnaCBub3QgeWV0IGFkbWl0dGVkIHRvIHRoZSBzY2llbnRpZmljIHRhYmxlLCAKCgoxMiAKCgpUSE9VR0hULUZPUk1TIAoKCmFyZSBhcHByb2FjaGluZyB0aGUgQ2luZGVyZWxsYS1zdGFnZS4gVGhlIGZhY3QgaXMgdGhhdCAKc2NpZW5jZSBoYXMgcHJlc3NlZCBpdHMgcmVzZWFyY2hlcyBzbyBmYXIsIGhhcyB1c2VkIHN1Y2ggCnJhcmUgaW5nZW51aXR5IGluIGl0cyBxdWVzdGlvbmluZ3Mgb2YgbmF0dXJlLCBoYXMgc2hvd24gCnN1Y2ggdGlyZWxlc3MgcGF0aWVuY2UgaW4gaXRzIGludmVzdGlnYXRpb25zLCB0aGF0IGl0IGlzIApyZWNlaXZpbmcgdGhlIHJld2FyZCBvZiB0aG9zZSB3aG8gc2VlaywgYW5kIGZvcmNlcyBhbmQgCmJlaW5ncyBvZiB0aGUgbmV4dCBoaWdoZXIgcGxhbmUgb2YgbmF0dXJlIGFyZSBiZWdpbm5pbmcnIAp0byBzaG93IHRoZW1zZWx2ZXMgb24gdGhlIG91dGVyIGVkZ2Ugb2YgdGhlIHBoeXNpY2FsIApmaWVsZC4g4oCcTmF0dXJlIG1ha2VzIG5vIGxlYXBzLOKAnSBhbmQgYXMgdGhlIHBoeXNpY2lzdCAKbmVhcnMgdGhlIGNvbmZpbmVzIG9mIGhpcyBraW5nZG9tIGhlIGZpbmRzIGhpbXNlbGYgCmJld2lsZGVyZWQgYnkgdG91Y2hlcyBhbmQgZ2xlYW1zIGZyb20gYW5vdGhlciByZWFsbSAKd2hpY2ggaW50ZXJwZW5ldHJhdGVzIGhpcyBvd24uIEhlIGZpbmRzIGhpbXNlbGYgY29tLSAKcGVsbGVkIHRvIHNwZWN1bGF0ZSBvbiBpbnZpc2libGUgcHJlc2VuY2VzLCBpZiBvbmx5IHRvIGZpbmQgCmEgcmF0aW9uYWwgZXhwbGFuYXRpb24gZm9yIHVuZG91YnRlZCBwaHlzaWNhbCBwaGVub21lbmEsIAphbmQgaW5zZW5zaWJseSBoZSBzbGlwcyBvdmVyIHRoZSBib3VuZGFyeSwgYW5kIGlzLCBhbHRob3VnaCAKaGUgZG9lcyBub3QgeWV0IHJlYWxpc2UgaXQsIGNvbnRhY3RpbmcgdGhlIGFzdHJhbCBwbGFuZS4gCgpPbmUgb2YgdGhlIG1vc3QgaW50ZXJlc3Rpbmcgb2YgdGhlIGhpZ2hyb2FkcyBmcm9tIHRoZSAKcGh5c2ljYWwgdG8gdGhlIGFzdHJhbCBpcyB0aGF0IG9mIHRoZSBzdHVkeSBvZiB0aG91Z2h0LiAKVGhlIFdlc3Rlcm4gc2NpZW50aXN0LCBjb21tZW5jaW5nIGluIHRoZSBhbmF0b215IGFuZCAKcGh5c2lvbG9neSBvZiB0aGUgYnJhaW4sIGVuZGVhdm91cnMgdG8gbWFrZSB0aGVzZSB0aGUgCmJhc2lzIGZvciDigJxhIHNvdW5kIHBzeWNob2xvZ3ku4oCdIEhlIHBhc3NlcyB0aGVuIGludG8gCnRoZSByZWdpb24gb2YgZHJlYW1zLCBpbGx1c2lvbnMsIGhhbGx1Y2luYXRpb25zIDsgYW5kIGFzIHNvb24gCmFzIGhlIGVuZGVhdm91cnMgdG8gZWxhYm9yYXRlIGFuIGV4cGVyaW1lbnRhbCBzY2llbmNlIAp3aGljaCBzaGFsbCBjbGFzc2lmeSBhbmQgYXJyYW5nZSB0aGVzZSwgaGUgaW5ldml0YWJseSAKcGx1bmdlcyBpbnRvIHRoZSBhc3RyYWwgcGxhbmUuIERyIEJhcmFkdWMgb2YgUGFyaXMgaGFzIApuZWFybHkgY3Jvc3NlZCB0aGUgYmFycmllciwgYW5kIGlzIHdlbGwgb24gdGhlIHdheSB0b3dhcmRzIApwaG90b2dyYXBoaW5nIGFzdHJvLW1lbnRhbCBpbWFnZXMsIHRvIG9idGFpbmluZyBwaWN0dXJlcyAKb2Ygd2hhdCBmcm9tIHRoZSBtYXRlcmlhbGlzdGljIHN0YW5kcG9pbnQgd291bGQgYmUgdGhlIApyZXN1bHRzIG9mIHZpYnJhdGlvbnMgaW4gdGhlIGdyZXkgbWF0dGVyIG9mIHRoZSBicmFpbi4gCgpJdCBoYXMgbG9uZyBiZWVuIGtub3duIHRvIHRob3NlIHdobyBoYXZlIGdpdmVuIAphdHRlbnRpb24gdG8gdGhlIHF1ZXN0aW9uIHRoYXQgaW1wcmVzc2lvbnMgd2VyZSBwcm9kdWNlZCAKYnkgdGhlIHJlZmxlY3Rpb24gb2YgdGhlIHVsdHJhLXZpb2xldCByYXlzIGZyb20gb2JqZWN0cyAKbm90IHZpc2libGUgYnkgdGhlIHJheXMgb2YgdGhlIG9yZGluYXJ5IHNwZWN0cnVtLiAKCgpUSE9VR0hULUZPUk1TIAoKCjEzIAoKCkNsYWlydm95YW50cyB3ZXJlIG9jY2FzaW9uYWxseSBqdXN0aWZpZWQgYnkgdGhlIGFwcGVhcmFuY2UgCm9uIHNlbnNpdGl2ZSBwaG90b2dyYXBoaWMgcGxhdGVzIG9mIGZpZ3VyZXMgc2VlbiBhbmQgCmRlc2NyaWJlZCBieSB0aGVtIGFzIHByZXNlbnQgd2l0aCB0aGUgc2l0dGVyLCB0aG91Z2ggCmludmlzaWJsZSB0byBwaHlzaWNhbCBzaWdodC4gSXQgaXMgbm90IHBvc3NpYmxlIGZvciBhbiAKdW5iaWFzc2VkIGp1ZGdtZW50IHRvIHJlamVjdCBpbiB0b3RvIHRoZSBldmlkZW5jZSBvZiBzdWNoIApvY2N1cnJlbmNlcyBwcm9mZmVyZWQgYnkgbWVuIG9mIGludGVncml0eSBvbiB0aGUgc3RyZW5ndGggCm9mIHRoZWlyIG93biBleHBlcmltZW50cywgb2Z0ZW50aW1lcyByZXBlYXRlZC4gQW5kIApub3cgd2UgaGF2ZSBpbnZlc3RpZ2F0b3JzIHdobyB0dXJuIHRoZWlyIGF0dGVudGlvbiB0byAKdGhlIG9idGFpbmluZyBvZiBpbWFnZXMgb2Ygc3VidGxlIGZvcm1zLCBpbnZlbnRpbmcgCm1ldGhvZHMgc3BlY2lhbGx5IGRlc2lnbmVkIHdpdGggdGhlIHZpZXcgb2YgcmVwcm9kdWNpbmcgCnRoZW0uIEFtb25nIHRoZXNlLiBEciBCYXJhZHVjIHNlZW1zIHRvIGhhdmUgYmVlbiAKdGhlIG1vc3Qgc3VjY2Vzc2Z1bCwgYW5kIGhlIGhhcyBwdWJsaXNoZWQgYSB2b2x1bWUgCmRlYWxpbmcgd2l0aCBoaXMgaW52ZXN0aWdhdGlvbnMgYW5kIGNvbnRhaW5pbmcgcmVwcm8tIApkdWN0aW9ucyBvZiB0aGUgcGhvdG9ncmFwaHMgaGUgaGFzIG9idGFpbmVkLiBEciAKQmFyYWR1YyBzdGF0ZXMgdGhhdCBoZSBpcyBpbnZlc3RpZ2F0aW5nIHRoZSBzdWJ0bGUgZm9yY2VzIApieSB3aGljaCB0aGUgc291bCDigJQgZGVmaW5lZCBhcyB0aGUgaW50ZWxsaWdlbmNlIHdvcmtpbmcgCmJldHdlZW4gdGhlIGJvZHkgYW5kIHRoZSBzcGlyaXQg4oCUIGV4cHJlc3NlcyBpdHNlbGYsIGJ5IApzZWVraW5nIHRvIHJlY29yZCBpdHMgbW92ZW1lbnRzIGJ5IG1lYW5zIG9mIGEgbmVlZGxlLCAKaXRzIOKAnGx1bWlub3Vz4oCdIGJ1dCBpbnZpc2libGUgdmlicmF0aW9ucyBieSBpbXByZXNzaW9ucyAKb24gc2Vuc2l0aXZlIHBsYXRlcy4gSGUgc2h1dHMgb3V0IGJ5IG5vbi1jb25kdWN0b3JzIAplbGVjdHJpY2l0eSBhbmQgaGVhdC4gV2UgY2FuIHBhc3Mgb3ZlciBoaXMgZXhwZXJpbWVudHMgCmluIEJpb21ldHJ5IChtZWFzdXJlbWVudCBvZiBsaWZlIGJ5IG1vdmVtZW50cyksIGFuZCAKZ2xhbmNlIGF0IHRob3NlIGluIEljb25vZ3JhcGh5IOKAlCB0aGUgaW1wcmVzc2lvbnMgb2YgCmludmlzaWJsZSB3YXZlcywgcmVnYXJkZWQgYnkgaGltIGFzIG9mIHRoZSBuYXR1cmUgb2YgCmxpZ2h0LCBpbiB3aGljaCB0aGUgc291bCBkcmF3cyBpdHMgb3duIGltYWdlLiBBIG51bWJlciAKb2YgdGhlc2UgcGhvdG9ncmFwaHMgcmVwcmVzZW50IGV0aGVyaWMgYW5kIG1hZ25ldGljIApyZXN1bHRzIG9mIHBoeXNpY2FsIHBoZW5vbWVuYSwgYW5kIHRoZXNlIGFnYWluIHdlIG1heSAKcGFzcyBvdmVyIGFzIG5vdCBiZWFyaW5nIG9uIG91ciBzcGVjaWFsIHN1YmplY3QsIGludGVyZXN0aW5nIAphcyB0aGV5IGFyZSBpbiB0aGVtc2VsdmVzLiBEciBCYXJhZHVjIG9idGFpbmVkIHZhcmlvdXMgCmltcHJlc3Npb25zIGJ5IHN0cm9uZ2x5IHRoaW5raW5nIG9mIGFuIG9iamVjdCwgdGhlIGVmZmVjdCAKcHJvZHVjZWQgYnkgdGhlIHRob3VnaHQtZm9ybSBhcHBlYXJpbmcgb24gYSBzZW5zaXRpdmUgCnBsYXRlIDsgdGh1cyBoZSB0cmllZCB0byBwcm9qZWN0IGEgcG9ydHJhaXQgb2YgYSBsYWR5ICh0aGVuIAoKCjE0IHRob3VnaHQtZm9ybXMgCgpkZWFkKSB3aG9tIGhlIGhhZCBrbm93biwgYW5kIHByb2R1Y2VkIGFuIGltcHJlc3Npb24gCmR1ZSB0byBoaXMgdGhvdWdodCBvZiBhIGRyYXdpbmcgaGUgaGFkIG1hZGUgb2YgaGVyIG9uIApoZXIgZGVhdGhiZWQuIC4gSGUgcXVpdGUgcmlnaHRseSBzYXlzIHRoYXQgdGhlIGNyZWF0aW9uIApvZiBhbiBvYmplY3QgaXMgdGhlIHBhc3Npbmcgb3V0IG9mIGFuIGltYWdlIGZyb20gdGhlIAptaW5kIGFuZCBpdHMgc3Vic2VxdWVudCBtYXRlcmlhbGlzYXRpb24sIGFuZCBoZSBzZWVrcyAKdGhlIGNoZW1pY2FsIGVmZmVjdCBjYXVzZWQgb24gc2lsdmVyIHNhbHRzIGJ5IHRoaXMgdGhvdWdodC0gCmNyZWF0ZWQgcGljdHVyZS4gT25lIHN0cmlraW5nIGlsbHVzdHJhdGlvbiBpcyB0aGF0IG9mIGEgCmZvcmNlIHJheWluZyBvdXR3YXJkcywgdGhlIHByb2plY3Rpb24gb2YgYW4gZWFybmVzdCAKcHJheWVyLiBBbm90aGVyIHByYXllciBpcyBzZWVuIHByb2R1Y2luZyBmb3JtcyBsaWtlIAp0aGUgZnJvbmRzIG9mIGEgZmVybiwgYW5vdGhlciBsaWtlIHJhaW4gcG91cmluZyB1cHdhcmRzIAppZiB0aGUgcGhyYXNlIG1heSBiZSBwZXJtaXR0ZWQuIEEgcmlwcGxlZCBvYmxvbmcgbWFzcyAKaXMgcHJvamVjdGVkIGJ5IHRocmVlIHBlcnNvbnMgdGhpbmtpbmcgb2YgdGhlaXIgdW5pdHkgaW4gCmFmZmVjdGlvbi4uIEEgeW91bmcgYm95IHNvcnJvd2luZyBvdmVyIGFuZCBjYXJlc3NpbmcgCmEgZGVhZCBiaXJkIGlzIHN1cnJvdW5kZWQgYnkgYSBmbG9vZCBvZiBjdXJ2ZWQgaW50ZXJ3b3ZlbiAKdGhyZWFkcyBvZiBlbW90aW9uYWwgZGlzdHVyYmFuY2UuIEEgc3Ryb25nIHZvcnRleCBpcyAKZm9ybWVkIGJ5IGEgZmVlbGluZyBvZiBkZWVwIHNhZG5lc3MuIExvb2tpbmcgYXQgdGhpcyAKbW9zdCBpbnRlcmVzdGluZyBhbmQgc3VnZ2VzdGl2ZSBzZXJpZXMsIGl0IGlzIGNsZWFyIHRoYXQgaW4gCnRoZXNlIHBpY3R1cmVzIHRoYXQgd2hpY2ggaXMgb2J0YWluZWQgaXMgbm90IHRoZSB0aG91Z2h0LSAKaW1hZ2UsIGJ1dCB0aGUgZWZmZWN0IGNhdXNlZCBpbiBldGhlcmljIG1hdHRlciBieSBpdHMgCnZpYnJhdGlvbnMsIGFuZCBpdCBpcyBuZWNlc3NhcnkgdG8gY2xhaXJ2b3lhbnRseSBzZWUgdGhlIAp0aG91Z2h0IGluIG9yZGVyIHRvIHVuZGVyc3RhbmQgdGhlIHJlc3VsdHMgcHJvZHVjZWQuIApJbiBmYWN0LCB0aGUgaWxsdXN0cmF0aW9ucyBhcmUgaW5zdHJ1Y3RpdmUgZm9yIHdoYXQgdGhleSBkbyAKbm90IHNob3cgZGlyZWN0bHksIGFzIHdlbGwgYXMgZm9yIHRoZSBpbWFnZXMgdGhhdCBhcHBlYXIuIAoKSXQgbWF5IGJlIHVzZWZ1bCB0byBwdXQgYmVmb3JlIHN0dWRlbnRzLCBhIGxpdHRsZSBtb3JlIApwbGFpbmx5IHRoYW4gaGFzIGhpdGhlcnRvIGJlZW4gZG9uZSwgc29tZSBvZiB0aGUgZmFjdHMgCmluIG5hdHVyZSB3aGljaCB3aWxsIHJlbmRlciBtb3JlIGludGVsbGlnaWJsZSB0aGUgcmVzdWx0cyAKYXQgd2hpY2ggRHIgQmFyYWR1YyBpcyBhcnJpdmluZy4gTmVjZXNzYXJpbHkgaW1wZXJmZWN0IAp0aGVzZSAsIG11c3QgYmUsIGEgcGh5c2ljYWwgcGhvdG9ncmFwaGljIGNhbWVyYSBhbmQgCnNlbnNpdGl2ZSBwbGF0ZXMgbm90IGJlaW5nIGlkZWFsIGluc3RydW1lbnRzIGZvciBhc3RyYWwgCnJlc2VhcmNoIDsgYnV0LCBhcyB3aWxsIGJlIHNlZW4gZnJvbSB0aGUgYWJvdmUsIHRoZXkgYXJlIAptb3N0IGludGVyZXN0aW5nIGFuZCB2YWx1YWJsZSBhcyBmb3JtaW5nIGEgbGluayBiZXR3ZWVuIApjbGFpcnZveWFudCBhbmQgcGh5c2ljYWwgc2NpZW50aWZpYyBpbnZlc3RpZ2F0aW9ucy4gCgoKVEhPVUdIVC1GT1JNUyAKCgppNSAKCgpBdCB0aGUgcHJlc2VudCB0aW1lIG9ic2VydmVycyBvdXRzaWRlIHRoZSBUaGVvLSAKc29wYmljYWwgU29jaWV0eSBhcmUgY29uY2VybmluZyB0aGVtc2VsdmVzIHdpdGggdGhlIGZhY3QgCnRoYXQgZW1vdGlvbmFsIGNoYW5nZXMgc2hvdyB0aGVpciBuYXR1cmUgYnkgY2hhbmdlcyBvZiAKY29sb3VyIGluIHRoZSBjbG91ZC1saWtlIG92b2lkLCBvciBhdXJhLCB0aGF0IGVuY29tcGFzc2VzIAphbGwgbGl2aW5nIGJlaW5ncy4gQXJ0aWNsZXMgb24gdGhlIHN1YmplY3QgYXJlIGFwcGVhcmluZyAKaW4gcGFwZXJzIHVuY29ubmVjdGVkIHdpdGggdGhlIFRoZW9zb3BoaWNhbCBTb2NpZXR5LCAKYW5kIGEgbWVkaWNhbCBzcGVjaWFsaXN0IDEgaGFzIGNvbGxlY3RlZCBhIGxhcmdlIG51bWJlciBvZiAKY2FzZXMgaW4gd2hpY2ggdGhlIGNvbG91ciBvZiB0aGUgYXVyYSBvZiBwZXJzb25zIG9mIAp2YXJpb3VzIHR5cGVzIGFuZCB0ZW1wZXJhbWVudHMgaXMgcmVjb3JkZWQgYnkgaGltLiAKSGlzIHJlc3VsdHMgcmVzZW1ibGUgY2xvc2VseSB0aG9zZSBhcnJpdmVkIGF0IGJ5IGNsYWlyLSAKdm95YW50IHRoZW9zb3BoaXN0cyBhbmQgb3RoZXJzLCBhbmQgdGhlIGdlbmVyYWwgCnVuYW5pbWl0eSBvbiB0aGUgc3ViamVjdCBpcyBzdWZmaWNpZW50IHRvIGVzdGFibGlzaCB0aGUgCgpmYWN0LCBpZiB0aGUgZXZpZGVuY2UgYmUganVkZ2VkIGJ5IHRoZSB1c3VhbCBjYW5vbnMgCmFwcGxpZWQgdG8gaHVtYW4gdGVzdGltb255LiAKClRoZSBib29rIE1hbiBWaXNpYmxlIGFuZCBJbnZpc2libGUgZGVhbHQgd2l0aCB0aGUgCmdlbmVyYWwgc3ViamVjdCBvZiB0aGUgYXVyYS4gVGhlIHByZXNlbnQgbGl0dGxlIHZvbHVtZSwgCndyaXR0ZW4gYnkgdGhlIGF1dGhvciBvZiBNYW4gVmlzaWJsZSBhbmQgSW52aXNpYmxlLCBhbmQgCmEgdGhlb3NvcGhpY2FsIGNvbGxlYWd1ZSwgaXMgaW50ZW5kZWQgdG8gY2FycnkgdGhlIApzdWJqZWN0IGZ1cnRoZXIgOyBhbmQgaXQgaXMgYmVsaWV2ZWQgdGhhdCB0aGlzIHN0dWR5IGlzIAp1c2VmdWwsIGFzIGltcHJlc3Npbmcgdml2aWRseSBvbiB0aGUgbWluZCBvZiB0aGUgc3R1ZGVudCAKdGhlIHBvd2VyIGFuZCBsaXZpbmcgbmF0dXJlIG9mIHRob3VnaHQgYW5kIGRlc2lyZSwgYW5kIAp0aGUgaW5mbHVlbmNlIGV4ZXJ0ZWQgYnkgdGhlbSBvbiBhbGwgd2hvbSB0aGV5IHJlYWNoLiAKCjEgRHIgSG9va2VyLCBHbG91Y2VzdGVyIFBsYWNlLCBMb25kb24sIFcuIAoKClRIRSBESUZGSUNVTFRZIE9GIFJFUFJFU0VOVEFUSU9OIAoKV2UgaGF2ZSBvZnRlbiBoZWFyZCBpdCBzYWlkIHRoYXQgdGhvdWdodHMgYXJlIHRoaW5ncywgCmFuZCB0aGVyZSBhcmUgbWFueSBhbW9uZyB1cyB3aG8gYXJlIHBlcnN1YWRlZCBvZiB0aGUgCnRydXRoIG9mIHRoaXMgc3RhdGVtZW50LiBZZXQgdmVyeSBmZXcgb2YgdXMgaGF2ZSBhbnkgCmNsZWFyIGlkZWEgYXMgdG8gd2hhdCBraW5kIG9mIHRoaW5nIGEgdGhvdWdodCBpcywgYW5kIHRoZSAKb2JqZWN0IG9mIHRoaXMgbGl0dGxlIGJvb2sgaXMgdG8gaGVscCB1cyB0byBjb25jZWl2ZSB0aGlzLiAKClRoZXJlIGFyZSBzb21lIHNlcmlvdXMgZGlmZmljdWx0aWVzIGluIG91ciB3YXksIGZvciBvdXIgCgpjb25jZXB0aW9uIG9mIHNwYWNlIGlzIGxpbWl0ZWQgdG8gdGhyZWUgZGltZW5zaW9ucywgYW5kIAoKd2hlbiB3ZSBhdHRlbXB0IHRvIG1ha2UgYSBkcmF3aW5nIHdlIHByYWN0aWNhbGx5IGxpbWl0IAoKb3Vyc2VsdmVzIHRvIHR3by4gSW4gcmVhbGl0eSB0aGUgcHJlc2VudGF0aW9uIGV2ZW4gb2YgCgpvcmRpbmFyeSB0aHJlZS1kaW1lbnNpb25hbCBvYmplY3RzIGlzIHNlcmlvdXNseSBkZWZlY3RpdmUsIAoKZm9yIHNjYXJjZWx5IGEgbGluZSBvciBhbmdsZSBpbiBvdXIgZHJhd2luZyBpcyBhY2N1cmF0ZWx5IAoKc2hvd24uIElmIGEgcm9hZCBjcm9zc2VzIHRoZSBwaWN0dXJlLCB0aGUgcGFydCBpbiB0aGUgCgpmb3JlZ3JvdW5kIG11c3QgYmUgcmVwcmVzZW50ZWQgYXMgZW5vcm1vdXNseSB3aWRlciB0aGFuIAoKdGhhdCBpbiB0aGUgYmFja2dyb3VuZCwgYWx0aG91Z2ggaW4gcmVhbGl0eSB0aGUgd2lkdGggaXMgCgp1bmNoYW5nZWQuIElmIGEgaG91c2UgaXMgdG8gYmUgZHJhd24sIHRoZSByaWdodCBhbmdsZXMgCgphdCBpdHMgY29ybmVycyBtdXN0IGJlIHNob3duIGFzIGFjdXRlIG9yIG9idHVzZSBhcyB0aGUgCgpjYXNlIG1heSBiZSwgYnV0IGhhcmRseSBldmVyIGFzIHRoZXkgYWN0dWFsbHkgYXJlLiBJbiAKCmZhY3QsIHdlIGRyYXcgZXZlcnl0aGluZyBub3QgYXMgaXQgaXMgYnV0IGFzIGl0IGFwcGVhcnMsIAoKYW5kLiB0aGUgZWZmb3J0IG9mIHRoZSBhcnRpc3QgaXMgYnkgYSBza2lsZnVsIGFycmFuZ2VtZW50IAoKbyBpbmVzIHVwb24gYSBmbGF0IHN1cmZhY2UgdG8gY29udmV5IHRvIHRoZSBleWUgYW4gCgppbXByZXNzaW9uIHdoaWNoIHNoYWxsIHJlY2FsbCB0aGF0IG1hZGUgYnkgYSB0aHJlZS0gCmRpbWVuc2lvbmFsIG9iamVjdC4gCgpJdCBpcyBwb3NzaWJsZSB0byBkbyB0aGlzIG9ubHkgYmVjYXVzZSBzaW1pbGFyIG9iamVjdHMgCgoKRElGRklDVUxUWSBPRiBSRVBSRVNFTlRBVElPTiAsIDcgCgphcmUgYWxyZWFkeSBmYW1pbGlhciB0byB0aG9zZSB3aG8gbG9vayBhdCB0aGUgcGljdHVyZSBhbmQgCmFjY2VwdCB0aGUgc3VnZ2VzdGlvbiB3aGljaCBpdCBjb252ZXlzLiBBIHBlcnNvbiB3aG8gCmhhZCBuZXZlciBzZWVuIGEgdHJlZSBjb3VsZCBmb3JtIGJ1dCBsaXR0bGUgaWRlYSBvZiBvbmUgCmZyb20gZXZlbiB0aGUgbW9zdCBza2lsZnVsIHBhaW50aW5nLiBJZiB0byB0aGlzIGRpZmZpY3VsdHkgCndlIGFkZCB0aGUgb3RoZXIgYW5kIGZhciBtb3JlIHNlcmlvdXMgb25lIG9mIGEgbGltaXRhdGlvbiAKb2YgY29uc2Npb3VzbmVzcywgYW5kIHN1cHBvc2Ugb3Vyc2VsdmVzIHRvIGJlIHNob3dpbmcgCnRoZSBwaWN0dXJlIHRvIGEgYmVpbmcgd2hvIGtuZXcgb25seSB0d28gZGltZW5zaW9ucywgd2UgCnNlZSBob3cgdXR0ZXJseSBpbXBvc3NpYmxlIGl0IHdvdWxkIGJlIHRvIGNvbnZleSB0byBoaW0gCmFueSBhZGVxdWF0ZSBpbXByZXNzaW9uIG9mIHN1Y2ggYSBsYW5kc2NhcGUgYXMgd2Ugc2VlLiAKUHJlY2lzZWx5IHRoaXMgZGlmZmljdWx0eSBpbiBpdHMgbW9zdCBhZ2dyYXZhdGVkIGZvcm0gCnN0YW5kcyBpbiBvdXIgd2F5LCB3aGVuIHdlIHRyeSB0byBtYWtlIGEgZHJhd2luZyBvZiAKZXZlbiBhIHZlcnkgc2ltcGxlIHRob3VnaHQtZm9ybS4gVGhlIHZhc3QgbWFqb3JpdHkgb2YgCnRob3NlIHdobyBsb29rIGF0IHRoZSBwaWN0dXJlIGFyZSBhYnNvbHV0ZWx5IGxpbWl0ZWQgdG8gCnRoZSBjb25zY2lvdXNuZXNzIG9mIHRocmVlIGRpbWVuc2lvbnMsIGFuZCBmdXJ0aGVybW9yZSwgCmF2ZSBub3QgdGhlIHNsaWdodGVzdCBjb25jZXB0aW9uIG9mIHRoYXQgaW5uZXIgd29ybGQgdG8gCndoaWNoIHRob3VnaHQtZm9ybXMgYmVsb25nLCB3aXRoIGFsbCBpdHMgc3BsZW5kaWQgbGlnaHQgCmFuZCBjb2xvdXIuIEFsbCB0aGF0IHdlIGNhbiBkbyBhdCB0aGUgYmVzdCBpcyB0byAKcmVwcmVzZW50IGEgc2VjdGlvbiBvZiB0aGUgdGhvdWdodC1mb3JtIDsgYW5kIHRob3NlIHdob3NlIApmYWN1bHRpZXMgZW5hYmxlIHRoZW0gdG8gc2VlIHRoZSBvcmlnaW5hbCBjYW5ub3QgYnV0IGJlIApkaXNhcHBvaW50ZWQgd2l0aCBhbnkgcmVwcm9kdWN0aW9uIG9mIGl0LiBTdGlsbCwgdGhvc2UgCndobyBhcmUgYXQgcHJlc2VudCB1bmFibGUgdG8gc2VlIGFueXRoaW5nIHdpbGwgZ2FpbiBhdCAKCmVhc3QgYSBwYXJ0aWFsIGNvbXByZWhlbnNpb24sIGFuZCBob3dldmVyIGluYWRlcXVhdGUgaXQgCm1heSBiZSBpdCBpcyBhdCBsZWFzdCBiZXR0ZXIgdGhhbiBub3RoaW5nLiAKCi4gU3R1ZGVudHMga25vdyB0aGF0IHdoYXQgaXMgY2FsbGVkIHRoZSBhdXJhIG9mIG1hbiAKIVMgZiDCsFV0ZXIgcGFydCBvZiBjbG91ZC1saWtlIHN1YnN0YW5jZSBvZiBoaXMgaGlnaGVyIAoKdGhlIFRvIFQgZXJQZW5mZXQvYXRtZiBlYWNoIMKwdGhlcj4gYW5kIHRlbmRpbmcgYmV5b25kIApUaGV2dGZyLCcgbDUgUGh5U2lDYSEgYjBkeS0gdGhlIOKAnCBvZiAxIAoKZGVzaXJlIGJvbHQgwrAgVCBeIGLCsGRpZVPigJkgbWVudGFsIAoKc29UZWxuciBmIFQgNTYgQ2hpZWZseSBDT0kxY2VybmVkIHdpdGggdGhlIAphcHBlYXJhbmNlIG9mIHdoYXQgYXJlIGNhbGxlZCB0aG5uYS1YZi0gZngtIHI+IAoKb3JkZXIgdGhhdCB0aGUgbWF0dGVyIFQgXsKwVV5odC1mb3Jtcy0gQnV0IG0gCgpvbiBociAqIEogeSBiZSBtYWRlIGNJZWFyIGZvciBhbGwsIGFuZCBub3QgCgo3IHIgcyB1ZGVudHMgYWxyZWFkeSBhY3F1YWludGVkIHdpdGggdGhlb3NvcGhpY2FsIAoKCjE4IFRIT1VHSFQtRk9STVMgCgp0ZWFjaGluZ3MsIGEgcmVjYXBpdHVsYXRpb24gb2YgdGhlIG1haW4gZmFjdHMgd2lsbCBub3QgYmUgCm91dCBvZiBwbGFjZS4gCgpNYW4sIHRoZSBUaGlua2VyLCBpcyBjbG90aGVkIGluIGEgYm9keSBjb21wb3NlZCBvZiAKaW5udW1lcmFibGUgY29tYmluYXRpb25zIG9mIHRoZSBzdWJ0bGUgbWF0dGVyIG9mIHRoZSAKbWVudGFsIHBsYW5lLCB0aGlzIGJvZHkgYmVpbmcgbW9yZSBvciBsZXNzIHJlZmluZWQgaW4gCml0cyBjb25zdGl0dWVudHMgYW5kIG9yZ2FuaXNlZCBtb3JlIG9yIGxlc3MgZnVsbHkgZm9yIGl0cyAKZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIHN0YWdlIG9mIGludGVsbGVjdHVhbCBkZXZlbG9wLSAKbWVudCBhdCB3aGljaCB0aGUgbWFuIGhpbXNlbGYgaGFzIGFycml2ZWQuIFRoZSBtZW50YWwgCmJvZHkgaXMgYW4gb2JqZWN0IG9mIGdyZWF0IGJlYXV0eSwgdGhlIGRlbGljYWN5IGFuZCByYXBpZCAKbW90aW9uIG9mIGl0cyBwYXJ0aWNsZXMgZ2l2aW5nIGl0IGFuIGFzcGVjdCBvZiBsaXZpbmcgCmlyaWRlc2NlbnQgbGlnaHQsIGFuZCB0aGlzIGJlYXV0eSBiZWNvbWVzIGFuIGV4dHJhb3JkaW4tIAphcmlseSByYWRpYW50IGFuZCBlbnRyYW5jaW5nIGxvdmVsaW5lc3MgYXMgdGhlIGludGVsbGVjdCAKYmVjb21lcyBtb3JlIGhpZ2hseSBldm9sdmVkIGFuZCBpcyBlbXBsb3llZCBjaGllZmx5IG9uIApwdXJlIGFuZCBzdWJsaW1lIHRvcGljcy4gRXZlcnkgdGhvdWdodCBnaXZlcyByaXNlIHRvIGEgCnNldCBvZiBjb3JyZWxhdGVkIHZpYnJhdGlvbnMgaW4gdGhlIG1hdHRlciBvZiB0aGlzIGJvZHksIAphY2NvbXBhbmllZCB3aXRoIGEgbWFydmVsbG91cyBwbGF5IG9mIGNvbG91ciwgbGlrZSB0aGF0IAppbiB0aGUgc3ByYXkgb2YgYSB3YXRlcmZhbGwgYXMgdGhlIHN1bmxpZ2h0IHN0cmlrZXMgaXQsIHJhaXNlZCAKdG8gdGhlIG50aCBkZWdyZWUgb2YgY29sb3VyIGFuZCB2aXZpZCBkZWxpY2FjeS4gVGhlIGJvZHkgCnVuZGVyIHRoaXMgaW1wdWxzZSB0aHJvd3Mgb2ZmIGEgdmlicmF0aW5nIHBvcnRpb24gb2YgaXRzZWxmLCAKc2hhcGVkIGJ5IHRoZSBuYXR1cmUgb2YgdGhlIHZpYnJhdGlvbnMg4oCUIGFzIGZpZ3VyZXMgYXJlIAptYWRlIGJ5IHNhbmQgb24gYSBkaXNrIHZpYnJhdGluZy0gdG8gYSBtdXNpY2FsIG5vdGUg4oCUIGFuZCAKdGhpcyBnYXRoZXJzIGZyb20gdGhlIHN1cnJvdW5kaW5nIGF0bW9zcGhlcmUgbWF0dGVyIGxpa2UgCml0c2VsZiBpbiBmaW5lbmVzcyBmcm9tIHRoZSBlbGVtZW50YWwgZXNzZW5jZSBvZiB0aGUgbWVudGFsIAp3b3JsZC4gV2UgaGF2ZSB0aGVuIGEgdGhvdWdodC1mb3JtIHB1cmUgYW5kIHNpbXBsZSwgCmFuZCBpdCBpcyBhIGxpdmluZyBlbnRpdHkgb2YgaW50ZW5zZSBhY3Rpdml0eSBhbmltYXRlZCBieSAKdGhlIG9uZSBpZGVhIHRoYXQgZ2VuZXJhdGVkIGl0LiBJZiBtYWRlIG9mIHRoZSBmaW5lciAKa2luZHMgb2YgbWF0dGVyLCBpdCB3aWxsIGJlIG9mIGdyZWF0IHBvd2VyIGFuZCBlbmVyZ3ksIGFuZCAKbWF5IGJlIHVzZWQgYXMgYSBtb3N0IHBvdGVudCBhZ2VudCB3aGVuIGRpcmVjdGVkIGJ5IGEgCnN0cm9uZyBhbmQgc3RlYWR5IHdpbGwuIEludG8gdGhlIGRldGFpbHMgb2Ygc3VjaCB1c2Ugd2UgCndpbGwgZW50ZXIgbGF0ZXIuIAoKV2hlbiB0aGUgbWFu4oCZcyBlbmVyZ3kgZmxvd3Mgb3V0d2FyZHMgdG93YXJkcyAKZXh0ZXJuYWwgb2JqZWN0cyBvZiBkZXNpcmUsIG9yIGlzIG9jY3VwaWVkIGluIHBhc3Npb25hbCBhbmQgCgoKMTkgCgoKRElGRklDVUxUWSBPRiBSRVBSRVNFTlRBVElPTiAKCgplbW90aW9uYWwgYWN0aXZpdGllcywgdGhpcyBlbmVyZ3kgd29ya3MgaW4gYSBsZXNzIHN1YnRsZSAKb3JkZXIgb2YgbWF0dGVyIHRoYW4gdGhlIG1lbnRhbCwgaW4gdGhhdCBvZiB0aGUgYXN0cmFsIAp3b3JsZC4gV2hhdCBpcyBjYWxsZWQgaGlzIGRlc2lyZS1ib2R5IGlzIGNvbXBvc2VkIG9mIAp0aGlzIG1hdHRlciwgYW5kIGl0IGZvcm1zIHRoZSBtb3N0IHByb21pbmVudCBwYXJ0IG9mIHRoZSAKYXVyYSBpbiB0aGUgdW5kZXZlbG9wZWQgbWFuLiBXaGVyZSB0aGUgbWFuIGlzIG9mIGEgCmdyb3NzIHR5cGUsIHRoZSBkZXNpcmUtYm9keSBpcyBvZiB0aGUgZGVuc2VyIG1hdHRlciBvZiAKdGhlIGFzdHJhbCBwbGFuZSwgYW5kIGlzIGR1bGwgaW4gaHVlLCBicm93bnMgYW5kIGRpcnR5IApncmVlbnMgYW5kIHJlZHMgcGxheWluZyBhIGdyZWF0IHBhcnQgaW4gaXQuIFRocm91Z2ggCnRoaXMgd2lsbCBmbGFzaCB2YXJpb3VzIGNoYXJhY3RlcmlzdGljIGNvbG91cnMsIGFzIGhpcyAKcGFzc2lvbnMgYXJlIGV4Y2l0ZWQuIEEgbWFuIG9mIGEgaGlnaGVyIHR5cGUgaGFzIGhpcyAKZGVzaXJlLWJvZHkgY29tcG9zZWQgb2YgdGhlIGZpbmVyIHF1YWxpdGllcyBvZiBhc3RyYWwgCm1hdHRlciwgd2l0aCB0aGUgY29sb3VycywgcmlwcGxpbmcgb3ZlciBhbmQgZmxhc2hpbmcgCnRocm91Z2ggaXQsIGZpbmUgYW5kIGNsZWFyIGluIGh1ZS4gV2hpbGUgbGVzcyBkZWxpY2F0ZSAKYW5kIGxlc3MgcmFkaWFudCB0aGFuIHRoZSBtZW50YWwgYm9keSwgaXQgZm9ybXMgYSAKCmJlYXV0aWZ1bCBvYmplY3QsIGFuZCBhcyBzZWxmaXNobmVzcyBpcyBlbGltaW5hdGVkIGFsbCB0aGUgCmR1bGxlciBhbmQgaGVhdmllciBzaGFkZXMgZGlzYXBwZWFyLiAKClRoaXMgZGVzaXJlIChvciBhc3RyYWwpIGJvZHkgZ2l2ZXMgcmlzZSB0byBhIHNlY29uZCBjbGFzcyAKCm8gZW50aXRpZXMsIHNpbWlsYXIgaW4gdGhlaXIgZ2VuZXJhbCBjb25zdGl0dXRpb24gdG8gdGhlIAoKdGhvdWdodC1mb3JtcyBhbHJlYWR5IGRlc2NyaWJlZCwgYnV0IGxpbWl0ZWQgdG8gdGhlIGFzdHJhbCAKCnBsYW5lLCBhbmQgZ2VuZXJhdGVkIGJ5IHRoZSBtaW5kIHVuZGVyIHRoZSBkb21pbmlvbiBvZiAKdGhlIGFuaW1hbCBuYXR1cmUuIAoKClRoZXNlIGFyZSBjYXVzZWQgYnkgdGhlIGFjdGl2aXR5IG9mIHRoZSBsb3dlciBtaW5kLCAKdGhyb3dtZyBpdHNlbGYgb3V0IHRocm91Z2ggdGhlIGFzdHJhbCBib2R5LXRoZSBhY3Rpdml0eSAKT2YgS2FtYS1NYW5hcyBpbiB0aGVvc29waGljYWwgdGVybWlub2xvZ3ksIG9yIHRoZSBtaW5kIApkb21pbmF0ZWQgYnkgZGVzaXJlLiBWaWJyYXRpb25zIGluIHRoZSBiWnkgb2YgZGVUZSAKciBhc3RyYWwgYm9keSwgYXJlIG0gdGhpcyBjYXNlIHNldCB1cCwgYW5kIHVuZGVyIHRoZXNlIAppcyBib2R5IHRocm93cyBvZmYgYSB2YnJhdGluZyBwb3J0aW9uIG9mIGl0c2VsZiwgc2hhcGVkLCAKCj0sIGogLGsnICogcHJldmxvdXMgY+KAnGUnIGJ5IG5hdHVyZSBvZiB0aGUgdmlicmF0aW9ucywgCgrigJxmICogSVQqIHQwIDExJyciIFPCsG1lIMKwKHRoZSBhcFBywrBQcmkqZSBlbGVtZW50YWwgCmx0cyDigJwg4oCcIMKwLyBdYXN0cmFsLSB3MW9ybGQtIFPigJxlaCBhIHRob3VnaHQuZm9ybSBoYXMgZm9yIAoKdGhlIGRlc2lyZSBvciAxJ+KAnSA/Kici4oCcPiBeIGzCsFQg4oCcUyBtaW1hdGluUyBzwrB1bCAKCmRlc2lyZSBvciBwYXNzaW9uIHdoaWNoIHRocmV3IGl0IGZvcnRoIDsgYWNjb3JkaW5nIHRvIAoKCjIwIAoKClRIT1VHSFQtRk9STVMgCgoKdGhlIGFtb3VudCBvZiBtZW50YWwgZW5lcmd5IGNvbWJpbmVkIHdpdGggdGhpcyBkZXNpcmUgCuKWoG9yIHBhc3Npb24gd2lsbCBiZSB0aGUgZm9yY2Ugb2YgdGhlIHRob3VnaHQtZm9ybS4gVGhlc2UsIApsaWtlIHRob3NlIGJlbG9uZ2luZyB0byB0aGUgbWVudGFsIHBsYW5lLCBhcmUgY2FsbGVkIAphcnRpZmljaWFsIGVsZW1lbnRhbHMsIGFuZCB0aGV5IGFyZSBieSBmYXIgdGhlIG1vc3QgY29tbW9uLCAKYXMgZmV3IHRob3VnaHRzIG9mIG9yZGluYXJ5IG1lbiBhbmQgd29tZW4gYXJlIHVudGluZ2VkIAp3aXRoIGRlc2lyZSwgcGFzc2lvbiwgb3IgZW1vdGlvbi4gCgoKVEhFIFRXTyBFRkZFQ1RTIE9GIFRIT1VHSFQgCgoKRWFjaCBkZWZpbml0ZSB0aG91Z2h0IHByb2R1Y2VzIGEgZG91YmxlIGVmZmVjdCDigJQgYSAKcmFkaWF0aW5nIHZpYnJhdGlvbiBhbmQgYSBmbG9hdGluZyBmb3JtLiBUaGUgdGhvdWdodCAKaXRzZWxmIGFwcGVhcnMgZmlyc3QgdG8gY2xhaXJ2b3lhbnQgc2lnaHQgYXMgYSB2aWJyYXRpb24gCmluIHRoZSBtZW50YWwgYm9keSwgYW5kIHRoaXMgbWF5IGJlIGVpdGhlciBzaW1wbGUgb3IgCmNvbXBsZXguIElmIHRoZSB0aG91Z2h0IGl0c2VsZiBpcyBhYnNvbHV0ZWx5IHNpbXBsZSwgdGhlcmUgCmlzIG9ubHkgdGhlIG9uZSByYXRlIG9mIHZpYnJhdGlvbiwgYW5kIG9ubHkgb25lIHR5cGUgb2YgCm1lbnRhbCBtYXR0ZXIgd2lsbCBiZSBzdHJvbmdseSBhZmZlY3RlZC4gVGhlIG1lbnRhbCAKYm9keSBpcyBjb21wb3NlZCBvZiBtYXR0ZXIgb2Ygc2V2ZXJhbCBkZWdyZWVzIG9mIGRlbnNpdHksLCAKd2hpY2ggd2UgY29tbW9ubHkgYXJyYW5nZSBpbiBjbGFzc2VzIGFjY29yZGluZyB0byB0aGUgCnN1Yi1wbGFuZXMuIE9mIGVhY2ggb2YgdGhlc2Ugd2UgaGF2ZSBtYW55IHN1Yi1kaXZpc2lvbnMsIAphbmQgaWYgd2UgdHlwaWZ5IHRoZXNlIGJ5IGRyYXdpbmcgaG9yaXpvbnRhbCBsaW5lcyB0byAKaW5kaWNhdGUgdGhlIGRpZmZlcmVudCBkZWdyZWVzIG9mIGRlbnNpdHksIHRoZXJlIGlzIGFub3RoZXIgCmFycmFuZ2VtZW50IHdoaWNoIHdlIG1pZ2h0IHN5bWJvbGlzZSBieSBkcmF3aW5nIApwZXJwZW5kaWN1bGFyIGxpbmVzIGF0IHJpZ2h0IGFuZ2xlcyB0byB0aGUgb3RoZXJzLCB0byBkZW5vdGUgCnR5cGVzIHdoaWNoIGRpZmZlciBpbiBxdWFsaXR5IGFzIHdlbGwgYXMgaW4gZGVuc2l0eS4gVGhlcmUgCmFyZSB0aHVzIG1hbnkgdmFyaWV0aWVzIG9mIHRoaXMgbWVudGFsIG1hdHRlciwgYW5kIGl0IGlzIApmb3VuZCB0aGF0IGVhY2ggb25lIG9mIHRoZXNlIGhhcyBpdHMgb3duIGVzcGVjaWFsIGFuZCAKYXBwcm9wcmlhdGUgcmF0ZSBvZiB2aWJyYXRpb24sIHRvIHdoaWNoIGl0IHNlZW1zIG1vc3QsIAphY2N1c3RvbWVkLCBzbyB0aGF0IGl0IHZlcnkgcmVhZGlseSByZXNwb25kcyB0byBpdCwgYW5kIAp0ZW5kcyB0byByZXR1cm4gdG8gaXQgYXMgc29vbiBhcyBwb3NzaWJsZSB3aGVuIGl0IGhhcyBiZWVuIApmb3JjZWQgYXdheSBmcm9tIGl0IGJ5IHNvbWUgc3Ryb25nIHJ1c2ggb2YgdGhvdWdodCBvci0gCmllZWxtZy4gV2hlbiBhIHN1ZGRlbiB3YXZlIG9mIHNvbWUgZW1vdGlvbiBzd2VlcHMgCm92ZXIgYSBtYW4sIGZvciBleGFtcGxlLCBoaXMgYXN0cmFsIGJvZHkgaXMgdGhyb3duIGludG8gCgoKMjIgCgoKVEhPVUdIVC1GT1JNUyAKCgp2aW9sZW50IGFnaXRhdGlvbiwgYW5kIGl0cyBvcmlnaW5hbCBjb2xvdXJzIGFyZSBvciB0aGUgdGltZSAKYWxtb3N0IG9ic2N1cmVkIGJ5IHRoZSBmbHVzaCBvZiBjYXJtaW5lLCBvZiBibHVlLCBvciBvZiAKc2NhcmxldCB3aGljaCBjb3JyZXNwb25kcyB3aXRoIHRoZSByYXRlIG9mIHZpYnJhdGlvbiBvZiAKdGhhdCBwYXJ0aWN1bGFyIGVtb3Rpb24uIFRoaXMgY2hhbmdlIGlzIG9ubHkgdGVtcG9yYXJ5IDsgCml0IHBhc3NlcyBvZmYgaW4gYSBmZXcgc2Vjb25kcywgYW5kIHRoZSBhc3RyYWwgYm9keSByYXBpZGx5IApyZXN1bWVzIGl0cyB1c3VhbCBjb25kaXRpb24uIFlldCBldmVyeSBzdWNoIHJ1c2ggb2YgCmZlZWxpbmcgcHJvZHVjZXMgYSBwZXJtYW5lbnQgZWZmZWN0IDogaXQgYWx3YXlzIGFkZHMgYSAKbGl0dGxlIG9mIGl0cyBodWUgdG8gdGhlIG5vcm1hbCBjb2xvdXJpbmcgb2YgdGhlIGFzdHJhbCBib2R5LCAKc28gdGhhdCBldmVyeSB0aW1lIHRoYXQgdGhlIG1hbiB5aWVsZHMgaGltc2VsZiB0byBhIGNlcnRhaW4gCmVtb3Rpb24gaXQgYmVjb21lcyBlYXNpZXIgZm9yIGhpbSB0byB5aWVsZCBoaW1zZWxmIHRvIGl0IAphZ2FpbiwgYmVjYXVzZSBoaXMgYXN0cmFsIGJvZHkgaXMgZ2V0dGluZyBpbnRvIHRoZSBoYWJpdCBvZiAKdmlicmF0aW5nIGF0IHRoYXQgZXNwZWNpYWwgcmF0ZS4gCgpUaGUgbWFqb3JpdHkgb2YgaHVtYW4gdGhvdWdodHMsIGhvd2V2ZXIsIGFyZSBieSBubyAKbWVhbnMgc2ltcGxlLiBBYnNvbHV0ZWx5IHB1cmUgYWZmZWN0aW9uIG9mIGNvdXJzZSBleGlzdHMgOyAKYnV0IHdlIHZlcnkgb2Z0ZW4gZmluZCBpdCB0aW5nZWQgd2l0aCBwcmlkZSBvciB3aXRoIHNlbGZpc2gtIApuZXNzLCB3aXRoIGplYWxvdXN5IG9yIHdpdGggYW5pbWFsIHBhc3Npb24uIFRoaXMgbWVhbnMgCnRoYXQgYXQgbGVhc3QgdHdvIHNlcGFyYXRlIHZpYnJhdGlvbnMgYXBwZWFyIGJvdGggaW4gdGhlIAptZW50YWwgYW5kIGFzdHJhbCBib2RpZXMg4oCUIGZyZXF1ZW50bHkgbW9yZSB0aGFuIHR3byAKVGhlIHJhZGlhdGluZyB2aWJyYXRpb24sIHRoZXJlZm9yZSwgd2lsbCBiZSBhIGNvbXBsZXggb25lLCAKCmFuZCB0aGUgcmVzdWx0YW50IHRob3VnaHQtZm9ybSB3aWxsIHNob3cgc2V2ZXJhbCBjb2xvdXJzIAppbnN0ZWFkIG9mIG9ubHkgb25lLiAKCgpIT1cgVEhFIFZJQlJBVElPTiBBQ1RTIAoKClRoZXNlIHJhZGlhdGluZyB2aWJyYXRpb25zLCBsaWtlIGFsbCBvdGhlcnMgaW4gbmF0dXJlLCAKYmVjb21lIGxlc3MgcG93ZXJmdWwgaW4gcHJvcG9ydGlvbiB0byB0aGUgZGlzdGFuY2UgZnJvbSAKdGhlaXIgc291cmNlLCB0aG91Z2ggaXQgaXMgcHJvYmFibGUgdGhhdCB0aGUgdmFyaWF0aW9uIGlzIGluIApwcm9wb3J0aW9uIHRvIHRoZSBjdWJlIG9mIHRoZSBkaXN0YW5jZSBpbnN0ZWFkIG9mIHRvIHRoZSAKc3F1YXJlLCBiZWNhdXNlIG9mIHRoZSBhZGRpdGlvbmFsIGRpbWVuc2lvbiBpbnZvbHZlZC4gCkFnYWluLCBsaWtlIGFsbCBvdGhlciB2aWJyYXRpb25zLCB0aGVzZSB0ZW5kIHRvIHJlcHJvZHVjZSAKdGhlbXNlbHZlcyB3aGVuZXZlciBvcHBvcnR1bml0eSBpcyBvZmZlcmVkIHRvIHRoZW0gOyBhbmQgCnNvIHdoZW5ldmVyIHRoZXkgc3RyaWtlIHVwb24gYW5vdGhlciBtZW50YWwgYm9keSB0aGV5IAp0ZW5kIHRvIHByb3Zva2UgaW4gaXQgdGhlaXIgb3duIHJhdGUgb2YgbW90aW9uLiBUaGF0IGlzIOKAlCAKZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgbWFuIHdob3NlIG1lbnRhbCBib2R5IGlzIAp0b3VjaGVkIGJ5IHRoZXNlIHdhdmVz4oCUIHRoZXkgdGVuZCB0byBwcm9kdWNlIGluIGhpcyBtaW5kIAp0aG91Z2h0cyBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoYXQgd2hpY2ggaGFkIHByZXZpb3VzbHkgCmFyaXNlbiBpbiB0aGUgbWluZCBvZiB0aGUgdGhpbmtlciB3aG8gc2VudCBmb3J0aCB0aGUgCndhdmVzLiBUaGUgZGlzdGFuY2UgdG8gd2hpY2ggc3VjaCB0aG91Z2h0LXdhdmVzIApwZW5ldHJhdGUsIGFuZCB0aGUgZm9yY2UgYW5kIHBlcnNpc3RlbmN5IHdpdGggd2hpY2ggdGhleSAKaW1waW5nZSB1cG9uIHRoZSBtZW50YWwgYm9kaWVzIG9mIG90aGVycywgZGVwZW5kIHVwb24gCnRoZSBzdHJlbmd0aCBhbmQgY2xlYXJuZXNzIG9mIHRoZSBvcmlnaW5hbCB0aG91Z2h0LiBJbiAKdGhpcyB3YXkgdGhlIHRoaW5rZXIgaXMgaW4gdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIApzcGVha2VyLiBUaGUgdm9pY2Ugb2YgdGhlIGxhdHRlciBzZXRzIGluIG1vdGlvbiB3YXZlcyBvZiAKc291bmQgaW4gdGhlIGFpciB3aGljaCByYWRpYXRlIGZyb20gaGltIGluIGFsbCBkaXJlY3Rpb25zLCAKYW5kIGNvbnZleSBoaXMgbWVzc2FnZSB0byBhbGwgdGhvc2Ugd2hvIGFyZSB3aXRoaW4gCmhlYXJpbmcsIGFuZCB0aGUgZGlzdGFuY2UgdG8gd2hpY2ggaGlzIHZvaWNlIGNhbiBwZW5ldHJhdGUgCmRlcGVuZHMgdXBvbiBpdHMgcG93ZXIgYW5kIHVwb24gdGhlIGNsZWFybmVzcyBvZiBoaXMgCgoKMjQgCgoKVEhPVUdIVC1GT1JNUyAKCgplbnVuY2lhdGlvbi4gSW4ganVzdCB0aGUgc2FtZSB3YXkgdGhlIGZvcmNlZnVsIHRob3VnaHQgCndpbGwgY2FycnkgdmVyeSBtdWNoIGZ1cnRoZXIgdGhhbiB0aGUgd2VhayBhbmQgdW5kZWNpZGVkIAp0aG91Z2h0IDsgYnV0IGNsZWFybmVzcyBhbmQgZGVmaW5pdGVuZXNzIGFyZSBvZiBldmVuLCAKZ3JlYXRlciBpbXBvcnRhbmNlIHRoYW4gc3RyZW5ndGguIEFnYWluLCBqdXN0IGFzIHRoZSAKc3BlYWtlciBzIHZvaWNlIG1heSBmYWxsIHVwb24gaGVlZGxlc3MgZWFycyB3aGVyZSBtZW4gCmFyZSBhbHJlYWR5IGVuZ2FnZWQgaW4gYnVzaW5lc3Mgb3IgaW4gcGxlYXN1cmUsIHNvIG1heSBhIAptaWdodHkgd2F2ZSBvZiB0aG91Z2h0IHN3ZWVwIHBhc3Qgd2l0aG91dCBhZmZlY3RpbmcgdGhlIAptaW5kIG9mIHRoZSBtYW4sIGlmIGhlIGJlIGFscmVhZHkgZGVlcGx5IGVuZ3Jvc3NlZCBpbiAKc29tZSBvdGhlciBsaW5lIG9mIHRob3VnaHQuIAoKSXQgc2hvdWxkIGJlIHVuZGVyc3Rvb2QgdGhhdCB0aGlzIHJhZGlhdGluZyB2aWJyYXRpb24gCmNvbnZleXMgdGhlIGNoYXJhY3RlciBvZiB0aGUgdGhvdWdodCwgYnV0IG5vdCBpdHMgc3ViamVjdC4gCklmIGEgSGluZHUgc2l0cyByYXB0IGluIGRldm90aW9uIHRvIEtyaXNobmEsIHRoZSB3YXZlcyBvZiAKZmVlbGluZyB3aGljaCBwb3VyIGZvcnRoIGZyb20gaGltIHN0aW11bGF0ZSBkZXZvdGlvbmFsIApmZWVsaW5nIGluIGFsbCB0aG9zZSB3aG8gY29tZSB1bmRlciB0aGVpciBpbmZsdWVuY2UsIAp0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgdGhlIE11aGFtbWFkYW4gdGhhdCBkZXZvdGlvbiBpcyAKdG8gQWxsYWgsIHdoaWxlIGZvciB0aGUgWm9yb2FzdHJpYW4gaXQgaXMgdG8gQWh1cmFtYXpkYSwgCm9yIGZvciB0aGUgQ2hyaXN0aWFuIHRvIEplc3VzLiBBIG1hbiB0aGlua2luZyBrZWVubHkgCnVwb24gc29tZSBoaWdoIHN1YmplY3QgcG91cnMgb3V0IGZyb20gaGltc2VsZiB2aWJyYXRpb25zIAp3aGljaCB0ZW5kIHRvIHN0aXIgdXAgdGhvdWdodCBhdCBhIHNpbWlsYXIgbGV2ZWwgaW4gb3RoZXJzLCAKYnV0IHRoZXkgaW4gbm8gd2F5IHN1Z2dlc3QgdG8gdGhvc2Ugb3RoZXJzIHRoZSBzcGVjaWFsIApzdWJqZWN0IG9mIGhpcyB0aG91Z2h0LiBUaGV5IG5hdHVyYWxseSBhY3Qgd2l0aCBzcGVjaWFsIAp2aWdvdXIgdXBvbiB0aG9zZSBtaW5kcyBhbHJlYWR5IGhhYml0dWF0ZWQgdG8gdmlicmF0aW9ucyAKb2Ygc2ltaWxhciBjaGFyYWN0ZXIgaiB5ZXQgdGhleSBoYXZlIHNvbWUgZWZmZWN0IG9uIGV2ZXJ5IAptZW50YWwgYm9keSB1cG9uIHdoaWNoIHRoZXkgaW1waW5nZSwgc28gdGhhdCB0aGVpciB0ZW5kLSAKZW5jeSBpcyB0byBhd2FrZW4gdGhlIHBvd2VyIG9mIGhpZ2hlciB0aG91Z2h0IGluIHRob3NlIAp0byB3aG9tIGl0IGhhcyBub3QgeWV0IGJlY29tZSBhIGN1c3RvbS4gSXQgaXMgdGh1cyAKZXZpZGVudCB0aGF0IGV2ZXJ5IG1hbiB3aG8gdGhpbmtzIGFsb25nIGhpZ2ggbGluZXMgaXMgCgpkb2luZyBtaXNzaW9uYXJ5IHdvcmssIGV2ZW4gdGhvdWdoIGhlIG1heSBiZSBlbnRpcmVseSAKdW5jb25zY2lvdXMgb2YgaXQuIAoKClRIRSBGT1JNIEFORCBJVFMgRUZGRUNUIAoKCkxldCB1cyB0dXJuIG5vdyB0byB0aGUgc2Vjb25kIGVmZmVjdCBvZiB0aG91Z2h0LCB0aGUgCmNyZWF0aW9uIG9mIGEgZGVmaW5pdGUgZm9ybS4gQWxsIHN0dWRlbnRzIG9mIHRoZSBvY2N1bHQgYXJlIAphY3F1YWludGVkIHdpdGggdGhlIGlkZWEgb2YgdGhlIGVsZW1lbnRhbCBlc3NlbmNlLCB0aGF0IApzdHJhbmdlIGhhbGYtaW50ZWxsaWdlbnQgbGlmZSB3aGljaCBzdXJyb3VuZHMgdXMgaW4gYWxsIApkaXJlY3Rpb25zLCB2aXZpZnlpbmcgdGhlIG1hdHRlciBvZiB0aGUgbWVudGFsIGFuZCBhc3RyYWwgCnBsYW5lcy4gVGhpcyBtYXR0ZXIgdGh1cyBhbmltYXRlZCByZXNwb25kcyB2ZXJ5IHJlYWRpbHkgCnRvIHRoZSBpbmZsdWVuY2Ugb2YgaHVtYW4gdGhvdWdodCwgYW5kIGV2ZXJ5IGltcHVsc2UgCnNlbnQgb3V0LCBlaXRoZXIgZnJvbSB0aGUgbWVudGFsIGJvZHkgb3IgZnJvbSB0aGUgYXN0cmFsIApib2R5IG9mIG1hbiwgaW1tZWRpYXRlbHkgY2xvdGhlcyBpdHNlbGYgaW4gYSB0ZW1wb3JhcnkgCnZlaGljbGUgb2YgdGhpcyB2aXRhbGlzZWQgbWF0dGVyLiBTdWNoIGEgdGhvdWdodCBvciBpbS0gCnB1bHNlIGJlY29tZXMgZm9yIHRoZSB0aW1lIGEga2luZCBvZiBsaXZpbmcgY3JlYXR1cmUsIHRoZSAKdGhvdWdodC1mb3JjZSBiZWluZyB0aGUgc291bCwgYW5kIHRoZSB2aXZpZmllZCBtYXR0ZXIgdGhlIApib2R5LiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBzb21ld2hhdCBjbHVtc3kgcGFyYXBocmFzZSwgCmFzdHJhbCBvciBtZW50YWwgbWF0dGVyIGVuc291bGVkIGJ5IHRoZSBtb25hZGljIGVzc2VuY2UgCmF0IHRoZSBzdGFnZSBvZiBvbmUgb2YgdGhlIGVsZW1lbnRhbCBraW5nZG9tcyzigJ0gdGhlby0gCnNvcGhpY2FsIHdyaXRlcnMgb2Z0ZW4sIGZvciBicmV2aXR54oCZcyBzYWtlLCBjYWxsIHRoaXMgcXVpY2tlbmVkIAptYXR0ZXIgc2ltcGx5IGVsZW1lbnRhbCBlc3NlbmNlIDsgYW5kIHNvbWV0aW1lcyB0aGV5IApzcGVhayBvZiB0aGUgdGhvdWdodC1mb3JtIGFzIOKAnGFuIGVsZW1lbnRhbC83IFRoZXJlIAptYXkgYmUgaW5maW5pdGUgdmFyaWV0eSBpbiB0aGUgY29sb3VyIGFuZCBzaGFwZSBvZiBzdWNoIAplbGVtZW50YWxzIG9yIHRob3VnaHQtZm9ybXMsIGZvciBlYWNoIHRob3VnaHQgZHJhd3MgCnJvdW5kIGl0IHRoZSBtYXR0ZXIgd2hpY2ggaXMgYXBwcm9wcmlhdGUgZm9yIGl0cyBleHByZXMtIApzaW9uLCBhbmQgc2V0cyB0aGF0IG1hdHRlciBpbnRvIHZpYnJhdGlvbiBpbiBoYXJtb255IHdpdGggCml0cyBvd24gOyBzbyB0aGF0IHRoZSBjaGFyYWN0ZXIgb2YgdGhlIHRob3VnaHQgZGVjaWRlcyBpdHMgCgoKVEhPVUdIVC1GT1JNUyAKCgoyNiAKCmNvbG91ciwgYW5kIHRoZSBzdHVkeSBvZiBpdHMgdmFyaWF0aW9ucyBhbmQgY29tYmluYXRpb25zIAppcyBhbiBleGNlZWRpbmdseSBpbnRlcmVzdGluZyBvbmUuIAoKVGhpcyB0aG91Z2h0LWZvcm0gbWF5IG5vdCBpbmFwdGx5IGJlIGNvbXBhcmVkIHRvIGEgCkxleWRlbiBqYXIsIHRoZSBjb2F0aW5nIG9mIGxpdmluZyBlc3NlbmNlIGJlaW5nIHN5bWJvbC0gCmlzZWQgYnkgdGhlIGphciwgYW5kIHRoZSB0aG91Z2h0IGVuZXJneSBieSB0aGUgY2hhcmdlIApvZiBlbGVjdHJpY2l0eS4gSWYgdGhlIG1hbuKAmXMgdGhvdWdodCBvciBmZWVsaW5nIGlzIGRpcmVjdGx5IApjb25uZWN0ZWQgd2l0aCBzb21lb25lIGVsc2UsIHRoZSByZXN1bHRhbnQgdGhvdWdodC1mb3JtIAptb3ZlcyB0b3dhcmRzIHRoYXQgcGVyc29uIGFuZCBkaXNjaGFyZ2VzIGl0c2VsZiB1cG9uIGhpcyAKYXN0cmFsIGFuZCBtZW50YWwgYm9kaWVzLiBJZiB0aGUgbWFu4oCZcyB0aG91Z2h0IGlzIGFib3V0IApoaW1zZWxmLCBvciBpcyBiYXNlZCB1cG9uIGEgcGVyc29uYWwgZmVlbGluZywgYXMgdGhlIHZhc3QgCm1ham9yaXR5IG9mIHRob3VnaHRzIGFyZSwgaXQgaG92ZXJzIHJvdW5kIGl0cyBjcmVhdG9yIGFuZCAKaXMgYWx3YXlzIHJlYWR5IHRvIHJlYWN0IHVwb24gaGltIHdoZW5ldmVyIGhlIGlzIGZvciBhIAptb21lbnQgaW4gYSBwYXNzaXZlIGNvbmRpdGlvbi4gRm9yIGV4YW1wbGUsIGEgbWFuIAp3aG8geWllbGRzIGhpbXNlbGYgdG8gdGhvdWdodHMgb2YgaW1wdXJpdHkgbWF5IGZvcmdldCAKYWxsIGFib3V0IHRoZW0gd2hpbGUgaGUgaXMgZW5nYWdlZCBpbiB0aGUgZGFpbHkgcm91dGluZSAKb2YgaGlzIGJ1c2luZXNzLCBldmVuIHRob3VnaCB0aGUgcmVzdWx0YW50IGZvcm1zIGFyZSBoYW5nLSAKaW5nIHJvdW5kIGhpbSBpbiBhIGhlYXZ5IGNsb3VkLCBiZWNhdXNlIGhpcyBhdHRlbnRpb24gaXMgCm90aGVyd2lzZSBkaXJlY3RlZCBhbmQgaGlzIGFzdHJhbCBib2R5IGlzIHRoZXJlZm9yZSBub3QgCmltcHJlc3NpYmxlIGJ5IGFueSBvdGhlciByYXRlIG9mIHZpYnJhdGlvbiB0aGFuIGl0cyBvd24uIApXaGVuLCBob3dldmVyLCB0aGUgbWFya2VkIHZpYnJhdGlvbiBzbGFja2VucyBhbmQgdGhlIAptYW4gcmVzdHMgYWZ0ZXIgaGlzIGxhYm91cnMgYW5kIGxlYXZlcyBoaXMgbWluZCBibGFuayBhcyAKcmVnYXJkcyBkZWZpbml0ZSB0aG91Z2h0LCBoZSBpcyB2ZXJ5IGxpa2VseSB0byBmZWVsIHRoZSAKdmlicmF0aW9uIG9mIGltcHVyaXR5IHN0ZWFsaW5nIGluc2lkaW91c2x5IHVwb24gaGltLiBJZiAKdGhlIGNvbnNjaW91c25lc3Mgb2YgdGhlIG1hbiBiZSB0byBhbnkgZXh0ZW50IGF3YWtlbmVkLCAKaGUgbWF5IHBlcmNlaXZlIHRoaXMgYW5kIGNyeSBvdXQgdGhhdCBoZSBpcyBiZWluZyB0ZW1wdGVkIApieSB0aGUgZGV2aWwgOyB5ZXQgdGhlIHRydXRoIGlzIHRoYXQgdGhlIHRlbXB0YXRpb24gaXMgZnJvbSAKd2l0aG91dCBvbmx5IGluIGFwcGVhcmFuY2UsIHNpbmNlIGl0IGlzIG5vdGhpbmcgYnV0IAp0aGUgbmF0dXJhbCByZWFjdGlvbiB1cG9uIGhpbSBvZiBoaXMgb3duIHRob3VnaHQtZm9ybXMuIApFYWNoIG1hbiB0cmF2ZWxzIHRocm91Z2ggc3BhY2UgZW5jbG9zZWQgd2l0aGluIGEgY2FnZSAKb2YgaGlzIG93biBidWlsZGluZywgc3Vycm91bmRlZCBieSBhIG1hc3Mgb2YgdGhlIGZvcm1zIApjcmVhdGVkIGJ5IGhpcyBoYWJpdHVhbCB0aG91Z2h0cy4gVGhyb3VnaCB0aGlzIG1lZGl1bSAKaGUgbG9va3Mgb3V0IHVwb24gdGhlIHdvcmxkLCBhbmQgbmF0dXJhbGx5IGhlIHNlZXMgCgoKVEhFIEZPUk0gQU5EIElUUyBFRkZFQ1QgCgoKMjcgCgoKZXZlcnl0aGluZyB0aW5nZWQgd2l0aCBpdHMgcHJlZG9taW5hbnQgY29sb3VycywgYW5kIGFsbCAKcmF0ZXMgb2YgdmlicmF0aW9uIHdoaWNoIHJlYWNoIGhpbSBmcm9tIHdpdGhvdXQgYXJlIG1vcmUgCm9yIGxlc3MgbW9kaWZpZWQgYnkgaXRzIHJhdGUuIFRodXMgdW50aWwgdGhlIG1hbiBsZWFybnMgCmNvbXBsZXRlIGNvbnRyb2wgb2YgdGhvdWdodCBhbmQgZmVlbGluZywgaGUgc2VlcyBub3RoaW5nIAphcyBpdCByZWFsbHkgaXMsIHNpbmNlIGFsbCBoaXMgb2JzZXJ2YXRpb25zIG11c3QgYmUgbWFkZSAKdGhyb3VnaCB0aGlzIG1lZGl1bSwgd2hpY2ggZGlzdG9ydHMgYW5kIGNvbG91cnMgZXZlcnktIAp0aGluZyBsaWtlIGJhZGx5LW1hZGUgZ2xhc3MuIAoKSWYgdGhlIHRob3VnaHQtZm9ybSBiZSBuZWl0aGVyIGRlZmluaXRlbHkgcGVyc29uYWwgbm9yIApzcGVjaWFsbHkgYWltZWQgYXQgc29tZW9uZSBlbHNlLCBpdCBzaW1wbHkgZmxvYXRzIGRldGFjaGVkIAppbiB0aGUgYXRtb3NwaGVyZSwgYWxsIHRoZSB0aW1lIHJhZGlhdGluZyB2aWJyYXRpb25zIApzaW1pbGFyIHRvIHRob3NlIG9yaWdpbmFsbHkgc2VudCBmb3J0aCBieSBpdHMgY3JlYXRvci4gSWYgaXQgCmRvZXMgbm90IGNvbWUgaW50byBjb250YWN0IHdpdGggYW55IG90aGVyIG1lbnRhbCBib2R5LCAKdGhpcyByYWRpYXRpb24gZ3JhZHVhbGx5IGV4aGF1c3RzIGl0cyBzdG9yZSBvZiBlbmVyZ3ksIGFuZCAKaW4gdGhhdCBjYXNlIHRoZSBmb3JtIGZhbGxzIHRvIHBpZWNlcyA7IGJ1dCBpZiBpdCBzdWNjZWVkcyBpbiAKYXdha2VuaW5nIHN5bXBhdGhldGljIHZpYnJhdGlvbiBpbiBhbnkgbWVudGFsIGJvZHkgCm5lYXIgYXQgaGFuZCwgYW4gYXR0cmFjdGlvbiBpcyBzZXQgdXAsIGFuZCB0aGUgdGhvdWdodC1mb3JtIAppcyB1c3VhbGx5IGFic29yYmVkIGJ5IHRoYXQgbWVudGFsIGJvZHkuIFRodXMgd2Ugc2VlIAp0aGF0IHRoZSBpbmZsdWVuY2Ugb2YgdGhlIHRob3VnaHQtZm9ybSBpcyBieSBubyBtZWFucyBzbyAKZmFyLXJlYWNoaW5nIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIHZpYnJhdGlvbiA7IGJ1dCBpbiBzbyBmYXIgCmFzIGl0IGFjdHMsIGl0IGFjdHMgd2l0aCBtdWNoIGdyZWF0ZXIgcHJlY2lzaW9uLiBXaGF0IGl0IApwcm9kdWNlcyBpbiB0aGUgbWluZC1ib2R5IHdoaWNoIGl0IGluZmx1ZW5jZXMgaXMgbm90IG1lcmVseSAKYSB0aG91Z2h0IG9mIGFuIG9yZGVyIHNpbWlsYXIgdG8gdGhhdCB3aGljaCBnYXZlIGl0IGJpcnRoIDsgCml0IGlzIGFjdHVhbGx5IHRoZSBzYW1lIHRob3VnaHQuIFRoZSByYWRpYXRpb24gbWF5IGFmZmVjdCAKdGhvdXNhbmRzIGFuZCBzdGlyIHVwIGluIHRoZW0gdGhvdWdodHMgb24gdGhlIHNhbWUgbGV2ZWwgCmFzIHRoZSBvcmlnaW5hbCwgYW5kIHlldCBpdCBtYXkgaGFwcGVuIHRoYXQgbm8gb25lIG9mIAp0aGVtIHdpbGwgYmUgaWRlbnRpY2FsIHdpdGggdGhhdCBvcmlnaW5hbCA7IHRoZSB0aG91Z2h0LSAKZm9ybSBjYW4gYWZmZWN0IG9ubHkgdmVyeSBmZXcsIGJ1dCBpbiB0aG9zZSBmZXcgY2FzZXMgaXQgCndpbGwgcmVwcm9kdWNlIGV4YWN0bHkgdGhlIGluaXRpYXRvcnkgaWRlYS4gCgpUaGUgZmFjdCBvZiB0aGUgY3JlYXRpb24gYnkgdmlicmF0aW9ucyBvZiBhIGRpc3RpbmN0IApmb3JtLCBnZW9tZXRyaWNhbCBvciBvdGhlciwgaXMgYWxyZWFkeSBmYW1pbGlhciB0byBldmVyeSAKc3R1ZGVudCBvZiBhY291c3RpY3MsIGFuZCDigJwgQ2hsYWRuaeKAmXMg4oCdIGZpZ3VyZXMgYXJlIGNvbi0gCgo+IF4gaW4gZXZlcnkgcGh5c2ljYWwgbGFib3JhdG9yeS4gCgoKMjggCgoKVEhPVUdIVC1GT1JNUyAKCgpGb3IgdGhlIGxheSByZWFkZXIgdGhlIGZvbGxvd2luZyBicmllZiBkZXNjcmlwdGlvbiBtYXkgCmJlIHVzZWZ1bC4gQSBDaGxhZG5p4oCZcyBzb3VuZCBwbGF0ZSAoZmlnLS0gaSkgaXMgbWFkZSBvZiAKCmJyYXNzIG9yIHBsYXRlLWdsYXNzLiBHcmFpbnMgb2YgCmZpbmUgc2FuZCBvciBzcG9yZXMgYXJlIHNjYXR0ZXJlZCAKb3ZlciB0aGUgc3VyZmFjZSwgYW5kIHRoZSBlZGdlIG9mIAp0aGUgcGxhdGUgaXMgYm93ZWQuIFRoZSBzYW5kIAppcyB0aHJvd24gdXAgaW50byB0aGUgYWlyIGJ5IHRoZSAKdmlicmF0aW9uIG9mIHRoZSBwbGF0ZSwgYW5kIHJlLWZhbGwtIAppbmcgb24gdGhlIHBsYXRlIGlzIGFycmFuZ2VkIGluIApyZWd1bGFyIGxpbmVzIChmaWcuIDIpLiBCeSB0b3VjaGluZyAKdGhlIGVkZ2Ugb2YgdGhlIHBsYXRlIGF0IGRpZmZlcmVudCBwb2ludHMgd2hlbiBpdCBpcyBib3dlZCwgCmRpZmZlcmVudCBub3RlcywgYW5kIGhlbmNlIHZhcnlpbmcgZm9ybXMsIGFyZSBvYnRhaW5lZCAKKCXigKIgMyktIElmIHRoZSBmaWd1cmVzIGhlcmUgZ2l2ZW4gYXJlIGNvbXBhcmVkIHdpdGggCnRob3NlIG9idGFpbmVkIGZyb20gdGhlIGh1bWFuIHZvaWNlLCBtYW55IGxpa2VuZXNzZXMgCndpbGwgYmUgb2JzZXJ2ZWQuIEZvciB0aGVzZSBsYXR0ZXIsIHRoZSDigJh2b2ljZS1mb3JtcycgCnNvIGFkbWlyYWJseSBzdHVkaWVkIGFuZCBwaWN0dXJlZCBieSBNcnMgV2F0dHMgCkh1Z2hlcywxIGJlYXJpbmcgd2l0bmVzcyB0byB0aGUgc2FtZSBmYWN0LCBzaG91bGQgYmUgCgoKRmlnLiAxLiAKCgpGaWcuIDIuIAoKCmNvbnN1bHRlZCwgYW5kIGhlciB3b3JrIG9uIHRoZSBzdWJqZWN0IHNob3VsZCBiZSBpbiB0aGUgCmhhbmRzIG9mIGV2ZXJ5IHN0dWRlbnQuIEJ1dCBmZXcgcGVyaGFwcyBoYXZlIHJlYWxpc2VkIAp0IGF0IHRoZSBzaGFwZXMgcGljdHVyZWQgYXJlIGR1ZSB0byB0aGUgaW50ZXJwbGF5IG9mIHRoZSAKdmlicmF0aW9ucyB0aGF0IGNyZWF0ZSB0aGVtLCBhbmQgdGhhdCBhIG1hY2hpbmUgZXhpc3RzIGJ5IAptZWFucyBvZiB3aGljaCB0d28gb3IgbW9yZSBzaW11bHRhbmVvdXMgbW90aW9ucyBjYW4gYmUgCmltcGFydGVkIHRvIGEgcGVuZHVsdW0sIGFuZCB0aGF0IGJ5IGF0dGFjaGluZyBhIGZpbmUgCnJhd21nLXBlbiB0byBhIGxldmVyIGNvbm5lY3RlZCB3aXRoIHRoZSBwZW5kdWx1bSBpdHMgCmFjdGlvbiBtYXkgYmUgZXhhY3RseSB0cmFjZWQuIFN1YnN0aXR1dGUgZm9yIHRoZSBzd2luZyBvZiAKCjEgVGhlIEVpZG9waG9uZSBWb2ljZSBGaWd1cmVzLiBNYXJnYXJldCBXYXR0cyBIdWdoZXMsIAoKClRIRSBGT1JNIEFORCBJVFMgRUZGRUNUIAoKCjI5IAoKCnRoZSBwZW5kdWx1bSB0aGUgdmlicmF0aW9ucyBzZXQgdXAgaW4gdGhlIG1lbnRhbCBvciBhc3RyYWwgCmJvZHksIGFuZCB3ZSBoYXZlIGNsZWFybHkgYmVmb3JlIHVzIHRoZSBtb2R1cyBvcGVyYW5kaSAKb2YgdGhlIGJ1aWxkaW5nIG9mIGZvcm1zIGJ5IHZpYnJhdGlvbnMuMSAKClRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gaXMgdGFrZW4gZnJvbSBhIG1vc3QgCmludGVyZXN0aW5nIGVzc2F5IGVudGl0bGVkIFZpYnJhdGlvbiBGaWd1cmVzLCBieSBGLiBCbGnCq2ggCkJvbmQsIEYuUi4gSS5CLkEuLCB3aG8gaGFzIGRyYXduIGEgbnVtYmVyIG9mIHJlbWFyay0gCmFibGUgZmlndXJlcyBieSB0aGUgdXNlIG9mIHBlbmR1bHVtcy4gVGhlIHBlbmR1bHVtIGlzIApzdXNwZW5kZWQgb24ga25pZmUgZWRnZXMgb2YgaGFyZGVuZWQgc3RlZWwsIGFuZCBpcyBmcmVlIAp0byBzd2luZyBvbmx5IGF0IHJpZ2h0IGFuZ2xlcyB0byB0aGUga25pZmUtZWRnZSBzdXNwZW5zaW9uLiAKCgpydEZWRiAKCl4+IDcgdyAKcnY3IAoKQ3lmeeKAmVYgCgpqcGcgCgrCp2cqIAoKTSAKCjAgCgp6bExnIAoKPmlvIDwgCgpmZcKuIAoKaWzCpyQgCgpHPnY8bykgCgpBIAoKaWZmIAoKeWogMSBjIAoKYS4oIHJ4IAoKTDwgCgpXRW4gCgp0aUMgSilxKSAKCi5mdHA/IAoKfHx8fCAKCjEgCgp2J15zdlNeIAoKW00gCgpYR0QuUycgCgpmY1VsIC0gCgptIAoKITJrIAoKdm0uIAoKViAvIOKAoirCu+KAoi4qKiosIFwgLiAKCnkgCgo1UzI1U0k1SiAKM3xPaU8gQ10gCgo+aW9pbztkIAoKXmF5Ljt2IAoKU2kgCgpTSSAKCkZpZy4gMy4gCgoKRm91ciBzdWNoIHBlbmR1bHVtcyBtYXkgYmUgY291cGxlZCBpbiBwYWlycywgc3dpbmdpbmcgCgphLCAiZyB0IGEiZyAnUyB0MCBlYWNoIG90aGVyLiBieSB0aHJlYWRzIGNvbm5lY3RpbmcgdGhlIApzaGFmdHMgb2YgZWFjaCBwYSxyIG9mIHBlbmR1bHVtcyB3aXRoIHRoZSBlbmRzIG9mIGEgbGlnaHQgCgp0aGVzVGggYiDCsG0gQydudHJlIMKwZiBXaGljaCBydW4gb3RoZXIgwqtoIj1hZHMgOyAKCm9mIG9ebmQgMSBUVCBsIFVuaXQnZCBtwrBWZW1lbnRzIOKAnGYgZWFjaCBwYWlyIApvZiBwZW5kdWx1bXMgdG8gYSBsaWdodCBzcXVhcmUgb2Ygd29vZCwgc3VzcGVuZGVkIGJ2IGEgCgpzcHJpbmcsIGFuZCBiZWFyaW5nIGEgcGVuLiBUaGUgcGVuIGlzIHRodXMgY29udHJvbGxlZCBidiAKCnRoZSBjb21iaW5lZCBtb3ZlbWVudCBvZiB0aGUgZm91ciBwZW5kdWx1bXMsIGFuZCB0aGlzIAoKbW92ZW1lbnQgaXMgcmVnaXN0ZXJlZCBvbiBhIGRyYXdpbmcgYm9hcmQgYnkgdGhlIHBlbiwgCgplbGxpcHRpYyBwZW5kdWx1bSBieeKAmSAhdVBQbGllcyB0aGUgIkluLSAKCm5kZXJmdWwgZmlndXJlcyBtYXkgYmUgcHJvZHVjZWQuIAoKCjMwIAoKClRIT1VHSFQtRk9STVMgCgoKVGhlcmUgaXMgbm8gbGltaXQsIHRoZW9yZXRpY2FsbHksIHRvIHRoZSBudW1iZXIgb2YgCnBlbmR1bHVtcyB0aGF0IGNhbiBiZSBjb21iaW5lZCBpbiB0aGlzIG1hbm5lci4gVGhlIAptb3ZlbWVudHMgYXJlIHJlY3RpbGluZWFyLCBidXQgdHdvIHJlY3RpbGluZWFyIHZpYnJhdGlvbnMgCm9mIGVxdWFsIGFtcGxpdHVkZSBhY3RpbmcgYXQgcmlnaHQgYW5nbGVzIHRvIGVhY2ggb3RoZXIgCmdlbmVyYXRlIGEgY2lyY2xlIGlmIHRoZXkgYWx0ZXJuYXRlIHByZWNpc2VseSwgYW4gZWxsaXBzZSAKaWYgdGhlIGFsdGVybmF0aW9ucyBhcmUgbGVzcyByZWd1bGFyIG9yIHRoZSBhbXBsaXR1ZGVzIAp1bmVxdWFsLiBBIGN5Y2xpYyB2aWJyYXRpb24gbWF5IGFsc28gYmUgb2J0YWluZWQgCmZyb20gYSBwZW5kdWx1bSBmcmVlIHRvIHN3aW5nIGluIGEgcm90YXJ5IHBhdGguIEluIAp0aGVzZSB3YXlzIGEgbW9zdCB3b25kZXJmdWwgc2VyaWVzIG9mIGRyYXdpbmdzIGhhdmUgCmJlZW4gb2J0YWluZWQsIGFuZCB0aGUgc2ltaWxhcml0eSBvZiB0aGVzZSB0byBzb21lIApvZiB0aGUgdGhvdWdodC1mb3JtcyBpcyByZW1hcmthYmxlOyB0aGV5IHN1ZmZpY2UgdG8gCmRlbW9uc3RyYXRlIGhvdyByZWFkaWx5IHZpYnJhdGlvbnMgbWF5IGJlIHRyYW5zZm9ybWVkIAppbnRvIGZpZ3VyZXMuIFRodXMgY29tcGFyZSBmaWcuIDQgd2l0aCBmaWcuIDEyLCB0aGUgCm1vdGhlcuKAmXMgcHJheWVyOyBvciBmaWcuIDUgd2l0aCBmaWcuIDEwIDsgb3IgZmlnLiA2IAp3aXRoIGZpZy4gMjUsIHRoZSBzZXJwZW50LWxpa2UgZGFydGluZyBmb3Jtcy4gRmlnLiA3IAppcyBhZGRlZCBhcyBhbiBpbGx1c3RyYXRpb24gb2YgdGhlIGNvbXBsZXhpdHkgYXR0YWluLSAKYWJsZS4gSXQgc2VlbXMgdG8gdXMgYSBtb3N0IG1hcnZlbGxvdXMgdGhpbmcgdGhhdCAKc29tZSBvZiB0aGUgZHJhd2luZ3MsIG1hZGUgYXBwYXJlbnRseSBhdCByYW5kb20gCmJ5IHRoZSB1c2Ugb2YgdGhpcyBtYWNoaW5lLCBzaG91bGQgZXhhY3RseSBjb3ItIApyZXNwb25kIHRvIGhpZ2hlciB0eXBlcyBvZiB0aG91Z2h0LWZvcm1zIGNyZWF0ZWQgaW4gCm1lZGl0YXRpb24uIFdlIGFyZSBzdXJlIHRoYXQgYSB3ZWFsdGggb2Ygc2lnbmlmaWNhbmNlIApsaWVzIGJlaGluZCB0aGlzIGZhY3QsIHRob3VnaCBpdCB3aWxsIG5lZWQgbXVjaCBmdXJ0aGVyIAppbnZlc3RpZ2F0aW9uIGJlZm9yZSB3ZSBjYW4gc2F5IGNlcnRhaW5seSBhbGwgdGhhdCBpdCAKCm1lYW5zLiBCdXQgaXQgbXVzdCBzdXJlbHkgaW1wbHkgdGhpcyBtdWNoIHRoYXQsIAoKaWYgdHdvIGZvcmNlcyBvbiB0aGUgcGh5c2ljYWwgcGxhbmUgYmVhcmluZyBhIGNlcnRhaW4gCnJhdGlvIG9uZSB0byB0aGUgb3RoZXIgY2FuIGRyYXcgYSBmb3JtIHdoaWNoIGV4YWN0bHkgCmNvcnJlc3BvbmRzIHRvIHRoYXQgcHJvZHVjZWQgb24gdGhlIG1lbnRhbCBwbGFuZSAKYnkgYSBjb21wbGV4IHRob3VnaHQsIHdlIG1heSBpbmZlciB0aGF0IHRoYXQgdGhvdW8taHQgCnNldHMgLiBpbiBtb3Rpb24gb24gaXRzIG93biBwbGFuZSB0d28gZm9yY2VzIHdoaWNoIAphcmUgaW4gdGhlIHNhbWUgcmF0aW8gb25lIHRvIHRoZSBvdGhlci4gV2hhdCB0aGVzZSAKZm9yY2VzIGFyZSBhbmQgaG93IHRoZXkgd29yayByZW1haW5zIHRvIGJlIHNlZW47IApidXQgaWYgd2UgYXJlIGV2ZXIgYWJsZSB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGl0IGlzIGxpa2VseSAKCgozaSAKCgpUSEUgRk9STSBBTkQgSVRTIEVGRkVDVCAKCnRoYXQgaXQgd2lsbCBvcGVuIHRvIHVzIGEgbmV3IGFuZCBleGNlZWRpbmdseSB2YWx1YWJsZSAKZmllbGQgb2Yga25vd2xlZGdlLiAKCkdlbmVyYWwgUHJpbmNpcGxlcy4gCgpUaHJlZSBnZW5lcmFsIHByaW5jaXBsZXMgdW5kZXJsaWUgdGhlIHByb2R1Y3Rpb24gb2YgYWxsIAp0aG91Z2h0LWZvcm1zIDog4oCUIAoKMS4gUXVhbGl0eSBvZiB0aG91Z2h0IGRldGVybWluZXMgY29sb3VyLiAKCjIuIE5hdHVyZSBvZiB0aG91Z2h0IGRldGVybWluZXMgZm9ybS4gCgozLiBEZWZpbml0ZW5lc3Mgb2YgdGhvdWdodCBkZXRlcm1pbmVzIGNsZWFybmVzcyBvZiAKb3V0bGluZS4gCgoKdGhlIG1lYW5pbmcgb2YgdGhlIGNvbG91cnMgCgpmcnJjZSBoYXMgCm0gdGhcYm9vayBeIAoKdG8gdGhlbSBpcyBqdXN0IHRoZSBzYW1lIDsgKjEsIG7CoyB0MCBiZSBhdHRhY2hlZCAKanVzdCBtZSBzYW1lIGluIHRoZSB0aG91by1maXQgZm5ybSAKCmJvZHkgb3V0IG9mIFdoaWNoIGksIGlzIGV2b2x2ZWQgcG9ywrvigJw7ZuKEoiAKd2hvIGhhdmUgbm90IGF0IGhhbmQgdGhlIGZ1bGwgXiDCsGYgdGJvc2UgCgpib29rIGp1c3QgbWVudGlvbmVkLCBpdCB3aWxsIGJlIHdlbGwgVCcw4oCdIOKAnCAqJyAKCm1lYW5zIGhhdHJlZCBhbmQgbWFsaWNlIMKjLCAiIGFsICzCsCBoVCA/4oCcIApicmljay1yZWQgdG8gYnJpbGxpYW50IHNjYXJsZXQgaW5kaWVzLCBeIGZyMHJhIGx1cmlkIAoKLWpsPiBzaG93IGFzIGZsYXNoZXMgb2YgbHVyaWQg4oCcZCBmZXJuIFMgCgp3aGlsZSB0aGUgYW5jcmVyIG9mIMKrIG4udyDigKIgZCBrIGJyb3duIGNswrB1ZHMsIApzY2FybGV0LCBieSBubyogbWVhbnMgdW9iZV5YU1YgKiBeIAoKdW5wbGVhc2FudCB0aHJpbGw7IGEgcGFydGljdWxhcmx5IGRhcmsgdGQgKj8qIF4gCgpyZWQsIGFsbW9zdCBleGFjdGx5IHRoZSBjb2xvdXIgY2FsbGVkIFp0IF4gXiAKCnNob3dzIGFuaW1hbCBwYXNzaW9uIGFuZCBzZW5zdWFsIEgg4oCiIGfCsCpTIGJsb29k4oCZIAoKa21kcy4gQ2xlYXIgYnJvd24gKGFsbW9zdCBoLCBkZVNJcmUgwrBmIHZhcmlvdXMgCmhhcmQgZHVsbCBicm93biAtZ3JleSBpcyBybiAuIFNsZW5uYSkgc2hvd3MgYXZhcmljZSA7IAoKY29sb3VyIHdoaWNoIGlzIGluZGVlZCBwYWluZnVsbHYgVCIgwrBmIFNlSWZpc2JuZXNz4oCUIGEgCgrCo3JleSBzaWduaWZpZXMgZGVwcmVzc2lvbiwgd2hpbGUgSF5k4oCZIF4gCmFzc29jaWF0ZWQgd2l0aCBmZWFyOyBncmV5LWdyZWVuIGlzIGQgUGY2IGdyR3kgaXMgCgp3aGlsZSBicm93bmlzaC1ncmVlbiAodXN1YWh5IGZsZWNrZWQgUyDCsGYgZGVjZWl04oCZIAoKMzIgNyBlQ0ppZWQgV2x0aCBwb2ludHMgYW5kIAoKClRIRSBNRUFOSU5HIE9GIFRIRSBDT0xPVVJTIDMzIAoKZmxhc2hlcyBvZiBzY2FybGV0KSBiZXRva2VucyBqZWFsb3VzeS4gR3JlZW4gc2VlbXMgCmFsd2F5cyB0byBkZW5vdGUgYWRhcHRhYmlsaXR5IDsgaW4gdGhlIGxvd2VzdCBjYXNlLCB3aGVuIAptaW5nbGVkIHdpdGggc2VsZmlzaG5lc3MsIHRoaXMgYWRhcHRhYmlsaXR5IGJlY29tZXMgCmRlY2VpdCA7IGF0IGEgbGF0ZXIgc3RhZ2UsIHdoZW4gdGhlIGNvbG91ciBiZWNvbWVzIHB1cmVyIAppdCBtZWFucyByYXRoZXIgdGhlIHdpc2ggdG8gYmUgYWxsIHRoaW5ncyB0byBhbGwgbWVuLCBldmVuIAp0aG91Z2ggaXQgbWF5IGJlIGNoaWVmbHkgZm9yIHRoZSBzYWtlIG9mIGJlY29taW5nIApwb3B1bGFyIGFuZCBiZWFyaW5nIGEgZ29vZCByZXB1dGF0aW9uIHdpdGggdGhlbSA7IGluIAppdHMgc3RpbGwgaGlnaGVyLCBtb3JlIGRlbGljYXRlIGFuZCBtb3JlIGx1bWlub3VzIGFzcGVjdCwgCml0IHNob3dzIHRoZSBkaXZpbmUgcG93ZXIgb2Ygc3ltcGF0aHkuIEFmZmVjdGlvbiBleC0gCnByZXNzZXMgaXRzZWxmIGluIGFsbCBzaGFkZXMgb2YgY3JpbXNvbiBhbmQgcm9zZSA7IGEgZnVsbCAKY2xlYXIgY2FybWluZSBtZWFucyBhIHN0cm9uZyBoZWFsdGh5IGFmZmVjdGlvbiBvZiBub3JtYWwgCnR5cGUgaWYgc3RhaW5lZCBoZWF2aWx5IHdpdGggYnJvd24tZ3JleSwgYSBzZWxmaXNoIGFuZCAKZ3Jhc3BpbmcgZmVlbGluZyBpcyBpbmRpY2F0ZWQsIHdoaWxlIHB1cmUgcGFsZSByb3NlIG1hcmtzIAphdCBhYnNvbHV0ZWx5IHVuc2VsZmlzaCBsb3ZlIHdoaWNoIGlzIHBvc3NpYmxlIG9ubHkgdG8gCmhpZ2ggbmF0dXJlcyA7IGl0IHBhc3NlcyBmcm9tIHRoZSBkdWxsIGNyaW1zb24gb2YgYW5pbWFsIApsb3ZlIHRvIHRoZSBtb3N0IGV4cXVpc2l0ZSBzaGFkZXMgb2YgZGVsaWNhdGUgcm9zZSwgbGlrZSAKaGUgZWFyaXkgZmx1c2hlcyBvZiB0aGUgZGF3bmluZywgYXMgdGhlIGxvdmUgYmVjb21lcyAKcHVuZmllZCBmcm9tIGFsbCBzZWxmaXNoIGVsZW1lbnRzLCBhbmQgZmxvd3Mgb3V0IGluIHdpZGVyIAphbmQgd2lkZXIgY2lyY2xlcyBvZiBnZW5lcm91cyBpbXBlcnNvbmFsIHRlbmRlcm5lc3MgCgpvZnRoZVpeZGlpdHZpaTEgbmVlZCBXaXRoIGEgdG91Y2ggCgpycGFsLSDCriB0aGlzIG1heSBleHByZXNzIGEgc3Ryb25nIAoKRGVlcCBvcmFuTSBVIlZUYUkgYnJvdGjigJxib29kIG9mIGh1bWFuaXR5LiAKCnNoU2VzIElmIHJQwrByaVMgUCDCsHIgYW1iaXRpMCInIGFuZCB0aGUgdmFyaW91cyAKCmZpciEsIGEgbiA3IGVuMHRlIGludGVsbGVjdCBvciBpbnRlbGxlY3R1YWwgZ3JhdGktIAoKZmFjdUPigJl0b1UgZGZpICHCsFcgXiBpbXBseWlEZyBkaXJlQ3Rpb24gb2Ygc3VjaCAKCmEgZGlzdGluY3RseSA/4oCc4oCcYlFnZSBzaG93cyAKCmZudGVsbGVjdHVhISDihKIgdGYgUyBeIOKAnCB1bnNlbGZpc2ggb2YgCgpuZHMgVHRQLFRyJyBJUCI2IHJlYVNNIGRpcmVjdGVkIHRvIHNwaXJpdHVhbCAKZHMuIFRoZSBkaWZmZXJlbnQgc2hhZGVzIG9mIGJsdWUgYWxsIGluZGljYXRlIHJlbGlnaW91cyAKCmZlZWxpbmcsIGFuZCByYW5nZSB0aHJvdWdoIGFsbCBodWVzIGZyb20gLGjigJ4gLDcgLCAsIGcgCgpibHVlIG9mIHNlbGZpc2ggZGV2b3Rpb24gb3IgdGhlIG5KTCBjLCDCsFduJyAKCm9ub24sIG9yIHRoZSBwYWxsaWQgZ3JleS1ibHVlIG9mIGZldGlzaC0gCgozIAoKCjM0IFRIT1VHSFQtRk9STVMgCgp3b3JzaGlwIHRpbmdlZCB3aXRoIGZlYXIsIHVwIHRvIHRoZSByaWNoIGRlZXAgY2xlYXIgCmNvbG91ciBvZiBoZWFydGZlbHQgYWRvcmF0aW9uLCBhbmQgdGhlIGJlYXV0aWZ1bCBwYWxlIGF6dXJlIApvZiB0aGF0IGhpZ2hlc3QgZm9ybSB3aGljaCBpbXBsaWVzIHNlbGYtcmVudW5jaWF0aW9uIGFuZCAKdW5pb24gd2l0aCB0aGUgZGl2aW5lOyB0aGUgZGV2b3Rpb25hbCB0aG91Z2h0IG9mIGFuIAp1bnNlbGZpc2ggaGVhcnQgaXMgdmVyeSBsb3ZlbHkgaW4gY29sb3VyLCBsaWtlIHRoZSBkZWVwIApibHVlIG9mIGEgc3VtbWVyIHNreS4gVGhyb3VnaCBzdWNoIGNsb3VkcyBvZiBibHVlIAp3aWxsIG9mdGVuIHNoaW5lIG91dCBnb2xkZW4gc3RhcnMgb2YgZ3JlYXQgYnJpbGxpYW5jeSwgCmRhcnRpbmcgdXB3YXJkcyBsaWtlIGEgc2hvd2VyIG9mIHNwYXJrcy4gQSBtaXh0dXJlIApvZiBhZmZlY3Rpb24gYW5kIGRldm90aW9uIGlzIG1hbmlmZXN0ZWQgYnkgYSB0aW50IG9mIAp2aW9sZXQsIGFuZCB0aGUgbW9yZSBkZWxpY2F0ZSBzaGFkZXMgb2YgdGhpcyBpbnZhcmlhYmx5IApzaG93IHRoZSBjYXBhY2l0eSBvZiBhYnNvcmJpbmcgYW5kIHJlc3BvbmRpbmcgdG8gYSAKaGlnaCBhbmQgYmVhdXRpZnVsIGlkZWFsLiBUaGUgYnJpbGxpYW5jeSBhbmQgdGhlIGRlcHRoIApvZiB0aGUgY29sb3VycyBhcmUgdXN1YWxseSBhIG1lYXN1cmUgb2YgdGhlIHN0cmVuZ3RoIAphbmQgdGhlIGFjdGl2aXR5IG9mIHRoZSBmZWVsaW5nLiAKCkFub3RoZXIgY29uc2lkZXJhdGlvbiB3aGljaCBtdXN0IG5vdCBiZSBmb3Jnb3R0ZW4gCgppcyB0aGUgdHlwZSBvZiBtYXR0ZXIgaW4gd2hpY2ggdGhlc2UgZm9ybXMgYXJlIGdlbmVyYXRlZC4gCgpJZiBhIHRob3VnaHQgYmUgcHVyZWx5IGludGVsbGVjdHVhbCBhbmQgaW1wZXJzb25hbCAKCmZvciBleGFtcGxlLCBpZiB0aGUgdGhpbmtlciBpcyBhdHRlbXB0aW5nIHRvIHNvbHZlIGEgCgpwcm9ibGVtIGluIGFsZ2VicmEgb3IgZ2VvbWV0cnnigJQgdGhlIHRob3VnaHQtZm9ybSBhbmQgCgp0aGUgd2F2ZSBvZiB2aWJyYXRpb24gd2lsbCBiZSBjb25maW5lZCBlbnRpcmVseSB0byB0aGUgCgptZW50YWwgcGxhbmUuIElmLCBob3dldmVyLCB0aGUgdGhvdWdodCBiZSBvZiBhIHNwaXJpdHVhbCAKCm5hdHVyZSwgaWYgaXQgYmUgdGluZ2VkIHdpdGggbG92ZSBhbmQgYXNwaXJhdGlvbiBvciBkZWVwIAoKdW5zZWxmaXNoIGZlZWxpbmcsIGl0IHdpbGwgcmlzZSB1cHdhcmRzIGZyb20gdGhlIG1lbnRhbCAKCnBsYW5lIGFuZCB3aWxsIGJvcnJvdyBtdWNoIG9mIHRoZSBzcGxlbmRvdXIgYW5kIAoKZ2xvcnkgb2YgdGhlIGJ1ZGRoaWMgbGV2ZWwuIEluIHN1Y2ggYSBjYXNlIGl0cyAKCmluZmx1ZW5jZSBpcyBleGNlZWRpbmdseSBwb3dlcmZ1bCwgYW5kIGV2ZXJ5IHN1Y2ggCgp0aG91Z2h0IGlzIGEgbWlnaHR5IGZvcmNlIGZvciBnb29kIHdoaWNoIGNhbm5vdCAKCmJ1dCBwcm9kdWNlIGEgZGVjaWRlZCBlZmZlY3QgdXBvbiBhbGwgbWVudGFsIGJvZGllcyAKCndpdGhpbiByZWFjaCwgaWYgdGhleSBjb250YWluIGFueSBxdWFsaXR5IGF0IGFsbCBjYXBhYmxlIApvZiByZXNwb25zZS4gCgpJZiwgb24gdGhlIG90aGVyIGhhbmQsIHRoZSB0aG91Z2h0IGhhcyBpbiBpdCBzb21ldGhpbmcgCm9pIHNlbGYgb3Igb2YgcGVyc29uYWwgZGVzaXJlLCBhdCBvbmNlIGl0cyB2aWJyYXRpb24gdHVybnMgCgoKdGhlIG1lYW5pbmcgb2YgdGhlIGNvbG91cnMgMzUgCgpsMOKEojsiIGsgZHJhd3Mgcm91bmQgIXRzZWxmIGEgYm9keSAwMSAKClN1Y2ggYSB0aG8gcmYiIHQwLid0UyBkwrAsaGluZyDCsGYgbWVudGFJIG5hdHRlci4gCkwgdCByICxTIENhUGFiJ2UgwrBmIGFDdGkiPyBVUMKwIiB0aGUgCgp0aFRpdCBKbiDCsCByIOKAnCBXZGwg4oCcIHRoZWlyIOKAnWluZHMuICo+IAoKaGF0IGl0IGNhbiBub3Qgb25seSByYWlzZSB0aG91Z2h0IHdpdGhpbiB0aGVtIGJ1dCAKY2FuIGFsc28gc3RpciB1cCB0aGVpciBmZWVsaW5ncy4g4oCZIGIgCgoKVEhSRUUgQ0xBU1NFUyBPRiBUSE9VR0hULUZPUk1TIAoKCkZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIGZvcm1zIHdoaWNoIHRoZXkgcHJvLSAKZHVjZSB3ZSBtYXkgZ3JvdXAgdGhvdWdodCBpbnRvIHRocmVlIGNsYXNzZXMgOiDigJQgCgppLiBUaGF0IHdoaWNoIHRha2VzIHRoZSBpbWFnZSBvZiB0aGUgdGhpbmtlci4gV2hlbiAKCgphIG1hbiB0aGlua3Mgb2YgaGltc2VsZiBhcyBpbiBzb21lIGRpc3RhbnQgcGxhY2UsIG9yIAp3aXNoZXMgZWFybmVzdGx5IHRvIGJlIGluIHRoYXQgcGxhY2UsIGhlIG1ha2VzIGEgdGhvdWdodC0gCmZvcm0gaW4gaGlzIG93biBpbWFnZSB3aGljaCBhcHBlYXJzIHRoZXJlLiBTdWNoIGEgCmZvcm0gaGFzIG5vdCBpbmZyZXF1ZW50bHkgYmVlbiBzZWVuIGJ5IG90aGVycywgYW5kIGhhcyAKc29tZXRpbWVzIGJlZW4gdGFrZW4gZm9yIHRoZSBhc3RyYWwgYm9keSBvciBhcHBhcml0aW9uIApvZiB0aGUgbWFuIGhpbXNlbGYuIEluIHN1Y2ggYSBjYXNlLCBlaXRoZXIgdGhlIHNlZXIgbXVzdCAKaGF2ZSBlbm91Z2ggb2YgY2xhaXJ2b3lhbmNlIGZvciB0aGUgdGltZSB0byBiZSBhYmxlIHRvIApvYnNlcnZlIHRoYXQgYXN0cmFsIHNoYXBlLCBvciB0aGUgdGhvdWdodC1mb3JtIG11c3QgaGF2ZSAKc3VmZmljaWVudCBzdHJlbmd0aCB0byBtYXRlcmlhbGlzZSBpdHNlbGbigJQgdGhhdCBpcywgdG8gZHJhdyAKcm91bmQgaXRzZWxmIHRlbXBvcmFyaWx5IGEgY2VydGFpbiBhbW91bnQgb2YgcGh5c2ljYWwgCm1hdHRlci4gVGhlIHRob3VnaHQgd2hpY2ggZ2VuZXJhdGVzIHN1Y2ggYSBmb3JtIGFzIAp0aGlzIG11c3QgbmVjZXNzYXJpbHkgYmUgYSBzdHJvbmcgb25lLCBhbmQgaXQgdGhlcmVmb3JlIAplbXBsb3lzIGEgbGFyZ2VyIHByb3BvcnRpb24gb2YgdGhlIG1hdHRlciBvZiB0aGUgbWVudGFsIApib2R5LCBzbyB0aGF0IHRob3VnaCB0aGUgZm9ybSBpcyBzbWFsbCBhbmQgY29tcHJlc3NlZCAKd2hlbiBpdCBsZWF2ZXMgdGhlIHRoaW5rZXIsIGl0IGRyYXdzIHJvdW5kIGl0IGEgY29uc2lkZXItIAphYmxlIGFtb3VudCBvZiBhc3RyYWwgbWF0dGVyLCBhbmQgdXN1YWxseSBleHBhbmRzIHRvIApsaWZlLXNpemUgYmVmb3JlIGl0IGFwcGVhcnMgYXQgaXRzIGRlc3RpbmF0aW9uJyAKCm9iTFRoaSB0aGUgaW1hZ2Ugb2YgbWF0ZXJpYWwgCgpvYiBlY3QuIFdoZW4gYSBtYW4gdGhpbmtzIG9mIGhpcyBmcmllbmQgaGUgZm9ybXMgCm0gaGlzIG1lbnRhbCBib2R5IGEgbWludXRlIGltYWdlIG9mIHRoYXQgZnJpZW5kIAoKM14gLCAKCgpUSFJFRSBDTEFTU0VTIE9GIFRIT1VHSFQtRk9STVMgMzcgCgp3aGljaCBvZnRlbiBwYXNzZXMgb3V0d2FyZCBhbmQgdXN1YWxseSBmbG9hdHMgc3VzcGVuZGVkIAppbiB0aGUgYWlyIGJlZm9yZSBoaW0uIEluIHRoZSBzYW1lIHdheSBpZiBoZSB0aGlua3Mgb2YgYSAKcm9vbSwgYSBob3VzZSwgYSBsYW5kc2NhcGUsIHRpbnkgaW1hZ2VzIG9mIHRoZXNlIHRoaW5ncyAKYXJlIGZvcm1lZCB3aXRoaW4gdGhlIG1lbnRhbCBib2R5IGFuZCBhZnRlcndhcmRzIApleHRlcm5hbGlzZWQuIFRoaXMgaXMgZXF1YWxseSB0cnVlIHdoZW4gaGUgaXMgZXhlcmNpc2luZyAKaGlzIGltYWdpbmF0aW9uIDsgdGhlIHBhaW50ZXIgd2hvIGZvcm1zIGEgY29uY2VwdGlvbiBvZiAKaGlzIGZ1dHVyZSBwaWN0dXJlIGJ1aWxkcyBpdCB1cCBvdXQgb2YgdGhlIG1hdHRlciBvZiBoaXMgCm1lbnRhbCBib2R5LCBhbmQgdGhlbiBwcm9qZWN0cyBpdCBpbnRvIHNwYWNlIGluIGZyb250IG9mIApoaW0sIGtlZXBzIGl0IGJlZm9yZSBoaXMgbWluZOKAmXMgZXllLCBhbmQgY29waWVzIGl0LiBUaGUgCm5vdmVsaXN0IGluIHRoZSBzYW1lIHdheSBidWlsZHMgaW1hZ2VzIG9mIGhpcyBjaGFyYWN0ZXIgCmluIG1lbnRhbCBtYXR0ZXIsIGFuZCBieSB0aGUgZXhlcmNpc2Ugb2YgaGlzIHdpbGwgbW92ZXMgCnRoZXNlIHB1cHBldHMgZnJvbSBvbmUgcG9zaXRpb24gb3IgZ3JvdXBpbmcgdG8gYW5vdGhlciwgCnNvIHRoYXQgdGhlIHBsb3Qgb2YgaGlzIHN0b3J5IGlzIGxpdGVyYWxseSBhY3RlZCBvdXQgYmVmb3JlIApoaW0uIFdpdGggb3VyIGN1cmlvdXNseSBpbnZlcnRlZCBjb25jZXB0aW9ucyBvZiByZWFsaXR5IAppdCBpcyBoYXJkIGZvciB1cyB0byB1bmRlcnN0YW5kIHRoYXQgdGhlc2UgbWVudGFsIGltYWdlcyAKYWN0dWFsbHkgZXhpc3QsIGFuZCBhcmUgc28gZW50aXJlbHkgb2JqZWN0aXZlIHRoYXQgdGhleSAKbWF5IHJlYWRpbHkgYmUgc2VlbiBieSB0aGUgY2xhaXJ2b3lhbnQsIGFuZCBjYW4gZXZlbiBiZSAKcmVhcnJhbmdlZCBieSBzb21lIG9uZSBvdGhlciB0aGFuIHRoZWlyIGNyZWF0b3IuIFNvbWUgCm5vdmVsaXN0cyBoYXZlIGJlZW4gZGltbHkgYXdhcmUgb2Ygc3VjaCBhIHByb2Nlc3MsIGFuZCAKaGF2ZSB0ZXN0aWZpZWQgdGhhdCB0aGVpciBjaGFyYWN0ZXJzIHdoZW4gb25jZSBjcmVhdGVkIApkZXZlbG9wZWQgYSB3aWxsIG9mIHRoZWlyIG93biwgYW5kIGluc2lzdGVkIG9uIGNhcnJ5aW5nIAp0aGUgcGxvdCBvZiB0aGUgc3RvcnkgYWxvbmcgbGluZXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhvc2UgCm9yaWdpbmFsbHkgaW50ZW5kZWQgYnkgdGhlIGF1dGhvci4gVGhpcyBoYXMgYWN0dWFsbHkgCmFwcGVuZWQsIHNvbWV0aW1lcyBiZWNhdXNlIHRoZSB0aG91Z2h0LWZvcm1zIHdlcmUgCmVuc291bGVkIGJ5IHBsYXlmdWwgbmF0dXJlLXNwaXJpdHMsIG9yIG1vcmUgb2Z0ZW4gYmVjYXVzZSAKc29tZSDigJggZGVhZCDigJkgbm92ZWxpc3QsIHdhdGNoaW5nIG9uIHRoZSBhc3RyYWwgcGxhbmUgdGhlIApkZXZlbG9wbWVudCBvZiB0aGUgcGxhbiBvZiBoaXMgZmVsbG93LWF1dGhvciwgdGhvdWdodCAKCnQgYXQgZSBjb3VsZCBpbXByb3ZlIHVwb24gaXQsIGFuZCBjaG9zZSB0aGlzIG1ldGhvZCBvZiAKcHV0dGluZyBmb3J3YXJkIGhpcyBzdWdnZXN0aW9ucy4gCgozLiBUaGF0IHdoaWNoIHRha2VzIGEgZm9ybSBlbnRpcmVseSBpdHMgb3duLCBleHByZXNzaW5nIAoKISBTIOKEoiBxdWFsbHRpZXMgKm4gdGhlIG1hdHRlciB3aGljaCBpdCBkcmF3cyByb3VuZCAKbiB5IHRob3VnaHQtZm9ybXMgb2YgdGhpcyB0aGlyZCBjbGFzcyBjYW4gdXNlZnVsbHkgCgoKMzggCgoKVEhPVUdIVC1GT1JNUyAKCgpiZSBpbGx1c3RyYXRlZCwgZm9yIHRvIHJlcHJlc2VudCB0aG9zZSBvZiB0aGUgZmlyc3Qgb3Igc2Vjb25kIApjbGFzcyB3b3VsZCBiZSBtZXJlbHkgdG8gZHJhdyBwb3J0cmFpdHMgb3IgbGFuZHNjYXBlcy4gCkluIHRob3NlIHR5cGVzIHdlIGhhdmUgdGhlIHBsYXN0aWMgbWVudGFsIG9yIGFzdHJhbCAKbWF0dGVyIG1vdWxkZWQgaW4gaW1pdGF0aW9uIG9mIGZvcm1zIGJlbG9uZ2luZyB0byB0aGUgCnBoeXNpY2FsIHBsYW5lIDsgaW4gdGhpcyB0aGlyZCBncm91cCB3ZSBoYXZlIGEgZ2xpbXBzZSBvZiAKdGhlIGZvcm1zIG5hdHVyYWwgdG8gdGhlIGFzdHJhbCBvciBtZW50YWwgcGxhbmVzLiBZZXQgCnRoaXMgdmVyeSBmYWN0LCB3aGljaCBtYWtlcyB0aGVtIHNvIGludGVyZXN0aW5nLCBwbGFjZXMgCgphbiBpbnN1cGVyYWJsZSBiYXJyaWVyIGluIHRoZSB3YXkgb2YgdGhlaXIgYWNjdXJhdGUgCnJlcHJvZHVjdGlvbi4gCgpUaG91Z2h0LWZvcm1zIG9mIHRoaXMgdGhpcmQgY2xhc3MgYWxtb3N0IGludmFyaWFibHkgCm1hbmlmZXN0IHRoZW1zZWx2ZXMgdXBvbiB0aGUgYXN0cmFsIHBsYW5lLCBhcyB0aGUgdmFzdCAKbWFqb3JpdHkgb2YgdGhlbSBhcmUgZXhwcmVzc2lvbnMgb2YgZmVlbGluZyBhcyB3ZWxsIGFzIG9mIAp0aG91Z2h0LiBUaG9zZSBvZiB3aGljaCB3ZSBoZXJlIGdpdmUgc3BlY2ltZW5zIGFyZSAKYWxtb3N0IHdob2xseSBvZiB0aGF0IGNsYXNzLCBleGNlcHQgdGhhdCB3ZSB0YWtlIGEgZmV3IApleGFtcGxlcyBvZiB0aGUgYmVhdXRpZnVsIHRob3VnaHQtZm9ybXMgY3JlYXRlZCBpbiAKCmRlZmluaXRlIG1lZGl0YXRpb24gYnkgdGhvc2Ugd2hvLCB0aHJvdWdoIGxvbmcgcHJhY3RpY2UsIApoYXZlIGxlYXJudCBob3cgdG8gdGhpbmsuIAoKVGhvdWdodC1mb3JtcyBkaXJlY3RlZCB0b3dhcmRzIGluZGl2aWR1YWxzIHByb2R1Y2UgCmRlZmluaXRlbHkgbWFya2VkIGVmZmVjdHMsIHRoZXNlIGVmZmVjdHMgYmVpbmcgZWl0aGVyIApwYXJ0aWFsbHkgcmVwcm9kdWNlZCBpbiB0aGUgYXVyYSBvZiB0aGUgcmVjaXBpZW50IGFuZCBzbyAKaW5jcmVhc2luZyB0aGUgdG90YWwgcmVzdWx0LCBvciByZXBlbGxlZCBmcm9tIGl0LiBBIHRob3VnaHQgCgpzb21ldGggNyA3IF4gdDAgUHLCsHRlQ3TigJkgZGlyZUN0R2QgU3RywrBuXnkgdDB3YXJkcyAKCmUgb3ZlIG9iamVjdCwgY3JlYXRlcyBhIGZvcm0gd2hpY2ggZ29lcyB0byAKcGVyc29uIHRob3VnaHQgb2YsIGFuZCByZW1haW5zIGluIGhpcyBhdXJhIGFzIGEgc2hpZWxkOyAKCnBybyBlY3RpbmcgYWdlbnQgOyBpdCB3aWxsIHNlZWsgYWxsIG9wcG9ydHVuaXRpZXMgdG8gCgpzZXJ2ZSwgYW5kIGFsbCBvcHBvcnR1bml0aWVzIHRvIGRebnJsICogdSBJR1MgdDAgCgphbmQgcnVu4oSiIFBQIGRlZmVuZOKAmSBub3QgYnkgYSBjb25zY2lvdXMgCgpkIGRlbGliZXJhdGUgYWN0b24sIGJ1dCBieSBhIFdpbmQgZm9sbG93aW5nIG91dCBvZiAKCmltcHVsc2UgaW1wcmVzc2VkIHVwb24gaXQsIGFuZCBpdCB3aWxsIHN0cmVuZ3RoZW4gCgpmb3JjZXMgdGhhdCBpbXBpbmdlIG9uIHRoZSBhdXJhIGFuZCB3ZWFrZW4gCgpvbmVzIFRodXMgbWF5IHdlIGNyZWF0ZSBhbmQgbWFpbnRhaW4gdmVyaXRhYmxlIAoKZ3VhcmRpYW4gYW5nZUlzIF4gXiBeIF4gCgptb3RoZXJzIHByYXllciBmb3IgYSBkaXN0b3J0IGNoaWxkIHRodXMgY2lyZGVzIHJvdW5kIAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyAzOSAKCmhpbSwgdGhvdWdoIHNoZSBrbm93cyBub3QgdGhlIG1ldGhvZCBieSB3aGljaCBoZXIgCuKAnHByYXllciBpcyBhbnN3ZXJlZC7igJ0gCgpJbiBjYXNlcyBpbiB3aGljaCBnb29kIG9yIGV2aWwgdGhvdWdodHMgYXJlIHByb2plY3RlZCAKYXQgaW5kaXZpZHVhbHMsIHRob3NlIHRob3VnaHRzLCBpZiB0aGV5IGFyZSB0byBkaXJlY3RseSBmdWxmaWwgCnRoZWlyIG1pc3Npb24sIG11c3QgZmluZCwgaW4gdGhlIGF1cmEgb2YgdGhlIG9iamVjdCB0byB3aG9tIAp0aGV5IGFyZSBzZW50LCBtYXRlcmlhbHMgY2FwYWJsZSBvZiByZXNwb25kaW5nIHN5bXBhLSAKdGhldGljYWxseSB0byB0aGVpciB2aWJyYXRpb25zLiBBbnkgY29tYmluYXRpb24gb2YgbWF0dGVyIApjYW4gb25seSB2aWJyYXRlIHdpdGhpbiBjZXJ0YWluIGRlZmluaXRlIGxpbWl0cywgYW5kIGlmIHRoZSAKdGhvdWdodC1mb3JtIGJlIG91dHNpZGUgYWxsIHRoZSBsaW1pdHMgd2l0aGluIHdoaWNoIHRoZSAKYXVyYSBpcyBjYXBhYmxlIG9mIHZpYnJhdGluZywgaXQgY2Fubm90IGFmZmVjdCB0aGF0IGF1cmEgYXQgCmFsbC4gSXQgY29uc2VxdWVudGx5IHJlYm91bmRzIGZyb20gaXQsIGFuZCB0aGF0IHdpdGggYSAKZm9yY2UgcHJvcG9ydGlvbmF0ZSB0byB0aGUgZW5lcmd5IHdpdGggd2hpY2ggaXQgaW1waW5nZWQgCnVwb24gaXQuIFRoaXMgaXMgd2h5IGl0IGlzIHNhaWQgdGhhdCBhIHB1cmUgaGVhcnQgYW5kIAptaW5kIGFyZSB0aGUgYmVzdCBwcm90ZWN0b3JzIGFnYWluc3QgYW55IGluaW1pY2FsIGFzc2F1bHRzLCAKZm9yIHN1Y2ggYSBwdXJlIGhlYXJ0IGFuZCBtaW5kIHdpbGwgY29uc3RydWN0IGFuIGFzdHJhbCAKYW5kIGEgbWVudGFsIGJvZHkgb2YgZmluZSBhbmQgc3VidGxlIG1hdGVyaWFscywgYW5kIHRoZXNlIApib2RpZXMgY2Fubm90IHJlc3BvbmQgdG8gdmlicmF0aW9ucyB0aGF0IGRlbWFuZCBjb2Fyc2UgCmFuZCBkZW5zZSBtYXR0ZXIuIElmIGFuIGV2aWwgdGhvdWdodCwgcHJvamVjdGVkIHdpdGggCm1hbGVmaWMgaW50ZW50LCBzdHJpa2VzIHN1Y2ggYSBib2R5LCBpdCBjYW4gb25seSByZWJvdW5kIApmcm9tIGl0LCBhbmQgaXQgaXMgZmx1bmcgYmFjayB3aXRoIGFsbCBpdHMgb3duIGVuZXJneSA7IGl0IAp0aGVuIGZsaWVzIGJhY2t3YXJkIGFsb25nIHRoZSBtYWduZXRpYyBsaW5lIG9mIGxlYXN0IApyZXNpc3RhbmNlLCB0aGF0IHdoaWNoIGl0IGhhcyBqdXN0IHRyYXZlcnNlZCwgYW5kIHN0cmlrZXMgCml0cyBwcm9qZWN0b3IgOyBoZSwgaGF2aW5nIG1hdHRlciBpbiBoaXMgYXN0cmFsIGFuZCBtZW50YWwgCmJvZGllcyBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIHRob3VnaHQtZm9ybSBoZSBnZW5lcmF0ZWQsIAppcyB0aHJvd24gaW50byByZXNwb25kZW50IHZpYnJhdGlvbnMsIGFuZCBzdWZmZXJzIHRoZSAKZGVzdHJ1Y3RpdmUgZWZmZWN0cyBoZSBoYWQgaW50ZW5kZWQgdG8gY2F1c2UgdG8gYW5vdGhlci4gClRodXMgY3Vyc2VzIFthbmQgYmxlc3NpbmdzXSBjb21lIGhvbWUgdG8gcm9vc3TigJ0gCkZyb20gdGhpcyBhcmlzZSBhbHNvIHRoZSB2ZXJ5IHNlcmlvdXMgZWZmZWN0cyBvZiBoYXRpbmcgCm9yIHN1c3BlY3RpbmcgYSBnb29kIGFuZCBoaWdobHktYWR2YW5jZWQgbWFuOyB0aGUgCnRob3VnaHQtZm9ybXMgc2VudCBhZ2FpbnN0IGhpbSBjYW5ub3QgaW5qdXJlIGhpbSwgYW5kIAp0aGV5IHJlYm91bmQgYWdhaW5zdCB0aGVpciBwcm9qZWN0b3JzLCBzaGF0dGVyaW5nIHRoZW0sIAptZW50YSB5LCBtb3JhbGx5LCBvciBwaHlzaWNhbGx5LiBTZXZlcmFsIHN1Y2ggaW5zdGFuY2VzIAoKCjQwIFRIT1VHSFQtRk9STVMgCgphcmUgd2VsbCBrbm93biB0byBtZW1iZXJzIG9mIHRoZSBUaGVvc29waGljYWwgU29jaWV0eSwgCmhhdmluZyBjb21lIHVuZGVyIHRoZWlyIGRpcmVjdCBvYnNlcnZhdGlvbi4gU28gbG9uZyBhcyAKYW55IG9mIHRoZSBjb2Fyc2VyIGtpbmRzIG9mIG1hdHRlciBjb25uZWN0ZWQgd2l0aCBldmlsIAphbmQgc2VsZmlzaCB0aG91Z2h0cyByZW1haW4gaW4gYSBwZXJzb27igJlzIGJvZHksIGhlIGlzIApvcGVuIHRvIGF0dGFjayBmcm9tIHRob3NlIHdobyB3aXNoIGhpbSBldmlsLCBidXQgd2hlbiAKaGUgaGFzIHBlcmZlY3RseSBlbGltaW5hdGVkIHRoZXNlIGJ5IHNlbGYtcHVyaWZpY2F0aW9uIGhpcyAKaGF0ZXJzIGNhbm5vdCBpbmp1cmUgaGltLCBhbmQgaGUgZ29lcyBvbiBjYWxtbHkgYW5kIApwZWFjZWZ1bGx5IGFtaWQgYWxsIHRoZSBkYXJ0cyBvZiB0aGVpciBtYWxpY2UuIEJ1dCBpdCBpcyAKYmFkIGZvciB0aG9zZSB3aG8gc2hvb3Qgb3V0IHN1Y2ggZGFydHMuIAoKQW5vdGhlciBwb2ludCB0aGF0IHNob3VsZCBiZSBtZW50aW9uZWQgYmVmb3JlIHBhc3NpbmcnIAp0byB0aGUgY29uc2lkZXJhdGlvbiBvZiBvdXIgaWxsdXN0cmF0aW9ucyBpcyB0aGF0IGV2ZXJ5IG9uZSAKb2YgdGhlIHRob3VnaHQtZm9ybXMgaGVyZSBnaXZlbiBpcyBkcmF3biBmcm9tIGxpZmUuIApUaGV5IGFyZSBub3QgaW1hZ2luYXJ5IGZvcm1zLCBwcmVwYXJlZCBhcyBzb21lIGRyZWFtZXIgCnRoaW5rcyB0aGF0IHRoZXkgb3VnaHQgdG8gYXBwZWFyIDsgdGhleSBhcmUgcmVwcmVzZW50YS0gCnRpb25zIG9mIGZvcm1zIGFjdHVhbGx5IG9ic2VydmVkIGFzIHRocm93biBvZmYgYnkgb3JkaW5hcnkgCm1lbiBhbmQgd29tZW4sIGFuZCBlaXRoZXIgcmVwcm9kdWNlZCB3aXRoIGFsbCBwb3NzaWJsZSAKY2FyZSBhbmQgZmlkZWxpdHkgYnkgdGhvc2Ugd2hvIGhhdmUgc2VlbiB0aGVtLCBvciB3aXRoIAp0aGUgaGVscCBvZiBhcnRpc3RzIHRvIHdob20gdGhlIHNlZXJzIGhhdmUgZGVzY3JpYmVkIHRoZW0uIAoKRm9yIGNvbnZlbmllbmNlIG9mIGNvbXBhcmlzb24gdGhvdWdodC1mb3JtcyBvZiBhIApzaW1pbGFyIGtpbmQgYXJlIGdyb3VwZWQgdG9nZXRoZXIuIAoKCmlsbHVzdHJhdGl2ZSB0aG91Z2h0LWZvcm1zIAoKQUZGRUNUSU9OIAoKVmFndXMgUHVyZSBBZmVldGltLi1WIGlnLiA4IGlzIGEgcmV2b2x2aW5nIGNsb3VkIG8gCnB1cmUgYWZmZWN0aW9uLCBhbmQgZXhjZXB0IGZvciBpdHMgdmFndWVuZXNzIGl0IHJlcHJlc2VudCAKZiAhZXJ5IE0tZy4gVGhlIHBlcnNvbiBmcm9tIHdob20gaXQgCgpvZiBzb21lIGZyaWVuZCB3aG9zZSB2ZXJ5IHByZXNlbmNlIGZlYSEiZyAKaXMgbm90aGluZyB0ZWVuIG9yIHN0cm9uZyBhYm91dCB0aGUgZmVlbGluZyDigJxUaXQgdSByVCAKb2YgZ2VudGxlIHdlbGwtYmVpbmcsIGFuZCBvZiBhbiB1bnNlbGZpc2ggZGVoZ2ggbCAqZSAKCgo9LXI7IAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyA0MSAKCnByb3hpbWl0eSBvZiB0aG9zZSB3aG8gYXJlIGJlbG92ZWQuIFRoZSBmZWVsaW5nIHdoaWNoIApnaXZlcyBiaXJ0aCB0byBzdWNoIGEgY2xvdWQgaXMgcHVyZSBvZiBpdHMga2luZCwgYnV0IHRoZXJlIAppcyBpbiBpdCBubyBmb3JjZSBjYXBhYmxlIG9mIHByb2R1Y2luZyBkZWZpbml0ZSByZXN1bHRzLiAKQW4gYXBwZWFyYW5jZSBieSBubyBtZWFucyB1bmxpa2UgdGhpcyBmcmVxdWVudGx5IApzdXJyb3VuZHMgYSBnZW50bHkgcHVycmluZyBjYXQsIGFuZCByYWRpYXRlcyBzbG93bHkgb3V0LSAKd2FyZCBmcm9tIHRoZSBhbmltYWwgaW4gYSBzZXJpZXMgb2YgZ3JhZHVhbGx5IGVubGFyZ2luZyAKY29uY2VudHJpYyBzaGVsbHMgb2Ygcm9zeSBjbG91ZCwgZmFkaW5nIGludG8gaW52aXNpYmlsaXR5IGF0IAoKYSBkaXN0YW5jZSBvZiBhIGZldyBmZWV0IGZyb20gdGhlaXIgZHJvd3NpbHkgY29udGVudGVkIApjcmVhdG9yLiAKClZhZ3VlIFNlbGZpc2ggQWZmZWN0aW9uLiDigJQgRmlnLiA5IHNob3dzIHVzIGFsc28gYSBjbG91ZCAKb2YgYWZmZWN0aW9uLCBidXQgdGhpcyB0aW1lIGl0IGlzIGRlZXBseSB0aW5nZWQgd2l0aCBhIGZhciAKbGVzcyBkZXNpcmFibGUgZmVlbGluZy4gVGhlIGR1bGwgaGFyZCBicm93bi1ncmV5IG9mIApzZWxmaXNobmVzcyBzaG93cyBpdHNlbGYgdmVyeSBkZWNpZGVkbHkgYW1vbmcgdGhlIGNhcm1pbmUgCm9mIGxvdmUsIGFuZCB0aHVzIHdlIHNlZSB0aGF0IHRoZSBhZmZlY3Rpb24gd2hpY2ggaXMgCmluZGljYXRlZCBpcyBjbG9zZWx5IGNvbm5lY3RlZCB3aXRoIHNhdGlzZmFjdGlvbiBhdCBmYXZvdXJzIAphbHJlYWR5IHJlY2VpdmVkLCBhbmQgd2l0aCBhIGxpdmVseSBhbnRpY2lwYXRpb24gb2Ygb3RoZXJzIAp0byBjb21lIGluIHRoZSBuZWFyIGZ1dHVyZS4gSW5kZWZpbml0ZSBhcyB3YXMgdGhlIGZlZWxpbmcgCndoaWNoIHByb2R1Y2VkIHRoZSBjbG91ZCBpbiBGaWcuIDgsIGl0IHdhcyBhdCBsZWFzdCBmcmVlIApmcm9tIHRoaXMgdGFpbnQgb2Ygc2VsZmlzaG5lc3MsIGFuZCBpdCB0aGVyZWZvcmUgc2hvd2VkIGEgCmNlcnRhaW4gbm9iaWxpdHkgb2YgbmF0dXJlIGluIGl0cyBhdXRob3IuIEZpZy4gOSByZXByZXNlbnRzIAp3aGF0IHRha2VzIHRoZSBwbGFjZSBvZiB0aGF0IGNvbmRpdGlvbiBvZiBtaW5kIGF0IGEgbG93ZXIgCmxldmVsIG9mIGV2b2x1dGlvbi4gSXQgd291bGQgc2NhcmNlbHkgYmUgcG9zc2libGUgdGhhdCAKdGhlc2UgdHdvIGNsb3VkcyBzaG91bGQgZW1hbmF0ZSBmcm9tIHRoZSBzYW1lIHBlcnNvbiBpbiAKdGhlIHNhbWUgaW5jYXJuYXRpb24uIFlldCB0aGVyZSBpcyBnb29kIGluIHRoZSBtYW4gd2hvIApnZW5lcmF0ZXMgdGhpcyBzZWNvbmQgY2xvdWQsIHRob3VnaCBhcyB5ZXQgaXQgaXMgYnV0IHBhcnRpYWxseSAKZXZvbHZlZC4gQSB2YXN0IGFtb3VudCBvZiB0aGUgYXZlcmFnZSBhZmZlY3Rpb24gb2YgdGhlIAp3b3IgaXMgb2YgdGhpcyB0eXBlLCBhbmQgaXQgaXMgb25seSBieSBzbG93IGRlZ3JlZXMgdGhhdCBpdCAKZGV2ZWxvcHMgdG93YXJkcyB0aGUgb3RoZXIgYW5kIGhpZ2hlciBtYW5pZmVzdGF0aW9uLiAKCkRlZmluaXRlIEFmZmVjdGlvbi7igJQgRXZlbiB0aGUgZmlyc3QgZ2xhbmNlIGF0IEZpZy4gMTAgCnNob3dzIHVzIHRoYXQgaGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBzb21ldGhpbmcgb2YgYW4gCmVudGlyZWx5IGRpZmZlcmVudCBuYXR1cmXigJQgc29tZXRoaW5nIGVmZmVjdGl2ZSBhbmQgY2FwYWJsZSwgCnNvbWV0IG1nIHQgYXQgd2lsbCBhY2hpZXZlIGEgcmVzdWx0LiBUaGUgY29sb3VyIGlzIGZ0aWxsdiAKCgo0MiAKCgpUSE9VR0hULUZPUk1TIAoKCmVxdWFsIHRvIHRoYXQgb2YgRmlnLiA4IGluIGNsZWFybmVzcyBhbmQgZGVwdGggYW5kIHRyYW5zLSAKcGFyZW5jeSwgYnV0IHdoYXQgd2FzIHRoZXJlIGEgbWVyZSBzZW50aW1lbnQgaXMgaW4gdGhpcyAKCgpjYXNlIHRyYW5zbGF0ZWQgaW50byBlbXBoYXRpYyBpbnRlbnRpb24gY291cGxlZCB3aXRoIAp1bmhlc2l0YXRpbmcgYWN0aW9uLiBUaG9zZSB3aG8gaGF2ZSBzZWVuIHRoZSBib29rIApNYW4gVmlzaWJsZSBhbmQgSW52aXNpYmxlIHdpbGwgcmVjb2xsZWN0IHRoYXQgaW4gUGxhdGUgWEkuIApvZiB0aGF0IHZvbHVtZSBpcyBkZXBpY3RlZCB0aGUgZWZmZWN0IG9mIGEgc3VkZGVuIHJ1c2ggb2YgCgoKcHVyZSB1bnNlbGZpc2ggYWZmZWN0aW9uIGFzIGl0IHNob3dlZCBpdHNlbGYgaW4gdGhlIGFzdHJhbCAKYm9keSBvZiBhIG1vdGhlciwgYXMgc2hlIGNhdWdodCB1cCBoZXIgbGl0dGxlIGNoaWxkIGFuZCAKY292ZXJlZCBpdCB3aXRoIGtpc3Nlcy4gVmFyaW91cyBjaGFuZ2VzIHJlc3VsdGVkIGZyb20gCnRoYXQgc3VkZGVuIG91dGJ1cnN0IG9mIGVtb3Rpb24gOyBvbmUgb2YgdGhlbSB3YXMgdGhlIApmb3JtYXRpb24gd2l0aGluIHRoZSBhc3RyYWwgYm9keSBvZiBsYXJnZSBjcmltc29uIGNvaWxzIG9yIAp2b3J0aWNlcyBsaW5lZCB3aXRoIGxpdmluZyBsaWdodC4gRWFjaCBvZiB0aGVzZSBpcyBhIAoKCnRob3VnaHQtZm9ybSBvZiBpbnRlbnNlIGFmZmVjdGlvbiBnZW5lcmF0ZWQgYXMgd2UgaGF2ZSAKZGVzY3JpYmVkLCBhbmQgYWxtb3N0IGluc3RhbnRhbmVvdXNseSBlamVjdGVkIHRvd2FyZHMgCnRoZSBvYmplY3Qgb2YgdGhlIGZlZWxpbmcuIEZpZy4geG8gZGVwaWN0cyBqdXN0IHN1Y2ggYSAKdGhvdWdodC1mb3JtIGFmdGVyIGl0IGhhcyBsZWZ0IHRoZSBhc3RyYWwgYm9keSBvZiBpdHMgYXV0aG9yLCAKYW5kIGlzIG9uIGl0cyB3YXkgdG93YXJkcyBpdHMgZ29hbC4gSXQgd2lsbCBiZSBvYnNlcnZlZCAKdGhhdCB0aGUgYWxtb3N0IGNpcmN1bGFyIGZvcm0gaGFzIGNoYW5nZWQgaW50byBvbmUgc29tZS0gCndoYXQgcmVzZW1ibGluZyBhIHByb2plY3RpbGUgb3IgdGhlIGhlYWQgb2YgYSBjb21ldCA7IGFuZCAKaXQgd2lsbCBiZSBlYXNpbHkgdW5kZXJzdG9vZCB0aGF0IHRoaXMgYWx0ZXJhdGlvbiBpcyBjYXVzZWQgCnkgaXRzIHJhcGlkIGZvcndhcmQgbW90aW9uLiBUaGUgY2xlYXJuZXNzIG9mIHRoZSBjb2xvdXIgCmFzc3VyZXMgdXMgb2YgdGhlIHB1cml0eSBvZiB0aGUgZW1vdGlvbiB3aGljaCBnYXZlIGJpcnRoIAp0byB0aGlzIHRob3VnaHQtZm9ybSwgd2hpbGUgdGhlIHByZWNpc2lvbiBvZiBpdHMgb3V0bGluZSBpcyAKdW5taXN0YWthYmxlIGV2aWRlbmNlIG9mIHBvd2VyIGFuZCBvZiB2aWdvcm91cyBwdXJwb3NlLiAKCm11ZUo3IF4gdDAgMyB0aG91wqNodC1mb3JtIHN1Y2ggYXMgdGhpcyAKdXN0IGFscmVhZHkgYmUgb25lIG9mIGEgY2VydGFpbiBhbW91bnQgb2YgZGV2ZWxvcG1lbnQgCgpvZiBhIDEgMSBnaXZlcyB1cyBvdXIgZmlyc3QgZXhhbXBsZSAKCmcgbmUgZXR0b3J0IHRvIHBvdXIgaGltc2VsZiBmb3J0aCBpbiBsb3ZlIHRvIGFsbCAKZW1ncy4gSXQgbXVzdCBiZSByZW1lbWJlcmVkIHRoYXQgYWxsIHRoZXNlIGZvcm1zIGFyZSAKCndpZGVuaVN0YW50IG3CsHIgLCBeIMKwbmXigJkgZsKwciBHWGFtUGxlPiDCuyBzdGVhZGlseSAKbmcgb3V0LCB0IG91Z2ggdGhlcmUgc2VlbXMgdG8gYmUgYW4gZXhoYXVzdGxlc3MgCgoKVEhSRUUgQ0xBU1NFUyBPRiBUSE9VR0hULUZPUk1TIDQzIAoKZm91bnRhaW4gd2VsbGluZyB1cCB0aHJvdWdoIHRoZSBjZW50cmUgZnJvbSBhIGRpbWVuc2lvbiAKd2hpY2ggd2UgY2Fubm90IHJlcHJlc2VudC4gQSBzZW50aW1lbnQgc3VjaCBhcyB0aGlzIGlzIApzbyB3aWRlIGluIGl0cyBhcHBsaWNhdGlvbiwgdGhhdCBpdCBpcyB2ZXJ5IGRpZmZpY3VsdCBmb3IgYW55IApvbmUgbm90IHRob3JvdWdobHkgdHJhaW5lZCB0byBrZWVwIGl0IGNsZWFyIGFuZCBwcmVjaXNlLiAKVGhlIHRob3VnaHQtZm9ybSBoZXJlIHNob3duIGlzLCB0aGVyZWZvcmUsIGEgdmVyeSBjcmVkaXQtIAphYmxlIG9uZSwgZm9yIGl0IHdpbGwgYmUgbm90ZWQgdGhhdCBhbGwgdGhlIG51bWVyb3VzIHJheXMgCm9mIHRoZSBzdGFyIGFyZSBjb21tZW5kYWJseSBmcmVlIGZyb20gdmFndWVuZXNzLiAKClBlYWNlIGFuZCBQcm90ZWN0aW9uLiDigJQgRmV3IHRob3VnaHQtZm9ybXMgYXJlIG1vcmUgCmJlYXV0aWZ1bCBhbmQgZXhwcmVzc2l2ZSB0aGFuIHRoaXMgd2hpY2ggd2Ugc2VlIGluIEZpZy4gMTIuIApUaGlzIGlzIGEgdGhvdWdodCBvZiBsb3ZlIGFuZCBwZWFjZSwgcHJvdGVjdGlvbiBhbmQgCmJlbmVkaWN0aW9uLCBzZW50IGZvcnRoIGJ5IG9uZSB3aG8gaGFzIHRoZSBwb3dlciBhbmQgCmhhcyBlYXJuZWQgdGhlIHJpZ2h0IHRvIGJsZXNzLiBJdCBpcyBub3QgYXQgYWxsIHByb2JhYmxlIAp0aGF0IGluIHRoZSBtaW5kICdvZiBpdHMgY3JlYXRvciB0aGVyZSBleGlzdGVkIGFueSB0aG91Z2h0IApvZiBpdHMgYmVhdXRpZnVsIHdpbmctbGlrZSBzaGFwZSwgdGhvdWdoIGl0IGlzIHBvc3NpYmxlIHRoYXQgCnNvbWUgdW5jb25zY2lvdXMgcmVmbGVjdGlvbiBvZiBmYXItYXdheSBsZXNzb25zIG9mIGNoaWxkLSAKaG9vZCBhYm91dCBndWFyZGlhbiBhbmdlbHMgd2hvIGFsd2F5cyBob3ZlcmVkIG92ZXIgCnRoZWlyIGNoYXJnZXMgbWF5IGhhdmUgaGFkIGl0cyBpbmZsdWVuY2UgaW4gZGV0ZXJtaW5pbmcgCnRoaXMuIEhvd2V2ZXIgdGhhdCBtYXkgYmUsIHRoZSBlYXJuZXN0IHdpc2ggdW4tIApkb3VidGVkbHkgY2xvdGhlZCBpdHNlbGYgaW4gdGhpcyBncmFjZWZ1bCBhbmQgZXhwcmVzc2l2ZSAKb3V0bGluZSwgd2hpbGUgdGhlIGFmZmVjdGlvbiB0aGF0IHByb21wdGVkIGl0IGdhdmUgdG8gaXQgCml0cyBsb3ZlbHkgcm9zZS1jb2xvdXIsIGFuZCB0aGUgaW50ZWxsZWN0IHdoaWNoIGd1aWRlZCBpdCAKc2hvbmUgZm9ydGggbGlrZSBzdW5saWdodCBhcyBpdHMgaGVhcnQgYW5kIGNlbnRyYWwgc3VwcG9ydC4gClRodXMgaW4gc29iZXIgdHJ1dGggd2UgbWF5IG1ha2UgdmVyaXRhYmxlIGd1YXJkaWFuIAphbmdlbHMgdG8gaG92ZXIgb3ZlciBhbmQgcHJvdGVjdCB0aG9zZSB3aG9tIHdlIGxvdmUsIAphbmQgbWFueSBhbiB1bnNlbGZpc2ggZWFybmVzdCB3aXNoIGZvciBnb29kIHByb2R1Y2VzIApzdWNoIGEgZm9ybSBhcyB0aGlzLCB0aG91Z2ggYWxsIHVua25vd24gdG8gaXRzIGNyZWF0b3IuIAoKR3Jhc3BpbmcgQW5pbWFsIEFmZmVjdGlvbi4g4oCUIEZpZy4gMTMgZ2l2ZXMgdXMgYW4gCmluc3RhbmNlIG9mIGdyYXNwaW5nIGFuaW1hbCBhZmZlY3Rpb24g4oCUIGlmIGluZGVlZCBzdWNoIGEgCmZlZWxpbmcgYXMgdGhpcyBiZSBkZWVtZWQgd29ydGh5IG9mIHRoZSBhdWd1c3QgbmFtZSBvZiAKYWZmZWN0aW9uIGF0IGFsbC4gU2V2ZXJhbCBjb2xvdXJzIGJlYXIgdGhlaXIgc2hhcmUgaW4gdGhlIApwcm9kdWN0aW9uIG9mIGl0cyBkdWxsIHVucGxlYXNpbmcgaHVlLCB0aW5nZWQgYXMgaXQgaXMgd2l0aCAKdGhlIGx1cmlkIGdsZWFtIG9mIHNlbnN1YWxpdHksIGFzIHdlbGwgYXMgZGVhZGVuZWQgd2l0aCAKCgo0NCAKCgpUSE9VR0hULUZPUk1TIAoKCnRoZSBoZWF2eSB0aW50IGluZGljYXRpdmUgb2Ygc2VsZmlzaG5lc3MuIEVzcGVjaWFsbHkgCmNoYXJhY3RlcmlzdGljIGlzIGl0cyBmb3JtLCBmb3IgdGhvc2UgY3VydmluZyBob29rcyBhcmUgCm5ldmVyIHNlZW4gZXhjZXB0IHdoZW4gdGhlcmUgZXhpc3RzIGEgc3Ryb25nIGNyYXZpbmcgZm9yIApwZXJzb25hbCBwb3NzZXNzaW9uLiBJdCBpcyByZWdyZXR0YWJseSBldmlkZW50IHRoYXQgdGhlIApmYWJyaWNhdG9yIG9mIHRoaXMgdGhvdWdodC1mb3JtIGhhZCBubyBjb25jZXB0aW9uIG9mIHRoZSAKc2VsZi1zYWNyaWZpY2luZyBsb3ZlIHdoaWNoIHBvdXJzIGl0c2VsZiBvdXQgaW4gam95b3VzIApzZXJ2aWNlLCBuZXZlciBvbmNlIHRoaW5raW5nIG9mIHJlc3VsdCBvciByZXR1cm47IGhpcyAKdGhvdWdodCBoYXMgYmVlbiwgbm90IOKAnEhvdyBtdWNoIGNhbiBJIGdpdmU/4oCdIGJ1dCDigJwgSG93IAptdWNoIGNhbiBJIGdhaW4gPyDigJ0gYW5kIHNvIGl0IGhhcyBleHByZXNzZWQgaXRzZWxmIGluJ2kgCnJlLWVudGVyaW5nIGN1cnZlcy4gSXQgaGFzIG5vdCBldmVuIHZlbnR1cmVkIHRvIHRocm93IAppdHNlIG8gZGx5IG91dHdhcmQsIGFzIGRvIG90aGVyIHRob3VnaHRzLCBidXQgcHJvamVjdHMgCmFsZi1oZWFydGVkbHkgZnJvbSB0aGUgYXN0cmFsIGJvZHksIHdoaWNoIG11c3QgYmUgCnN1cHBvc2VkIHRvIGJlIG9uIHRoZSBsZWZ0IG9mIHRoZSBwaWN0dXJlLiBBIHNhZCB0cmF2ZXN0eSAKbyB0aGUgZGl2aW5lIHF1YWxpdHkgbG92ZSA7IHlldCBldmVuIHRoaXMgaXMgYSBzdGFnZSBpbiAKZXZvbHV0aW9uLCBhbmQgZGlzdGluY3RseSBhbiBpbXByb3ZlbWVudCB1cG9uIGVhcmxpZXIgCnN0YWdlcywgYXMgd2lsbCBwcmVzZW50bHkgYmUgc2Vlbi4gCgoKZGV2b3Rpb24gCgpWYWd1ZSBSZWxpZ2lvdXMgRmVlbGluZy4tIEZpZy4gLDQgc2hvd3MgdXMgYW5vdGhlIApTIGFwZWxlc3Mgcm9sbGluZyBjbG91ZCwgYnV0IHRoaXMgdGltZSBpdCBpcyBibHVlIGluc3RlYWQgbyAKY3JpbXNvbi4gSSwgYmV0b2tlbnMgdGhhdCB2YWd1ZWx5IHBsZWFzdXJhYmxlIHJlbGlnaW9uLCAKZmVlbGluZ+KAlCAtYSBzZW5zYXRpb24gb2YgZGV2b3V0bmVzcyByYXRoZXIgdGhhbiBvZiBkZXZvdGlvaSAKd2hpY2ggaXMgc28gY29tbW9uIGFtb25nIHRob3NlIGluIHdob20gcGlldHkgajwgCm8gZGV2ZWxvcGVkIHRoYW4gaW50ZWxsZWN0LiBJbiBtYW55IGEgY2h1cmNoIG9uZSAKCnRoZXloU2U2LyBncmF0LCBkwrBVZCDCsGYgZGVlcCBkdUkxIGJJdWUgYmF0aW5nIG92ZXIgCgplIGhlYWRzIG9mIHRoZSBjb25ncmVnYXRpb24taW5kZWZpbml0ZSBpbiBvdXRsaW5lIAoK4pagbmVyOnQgYiBpbmRpU3RpbkPigJggwrBmIHRoZSB0aMKw4oCcXiBhbmQgJyAKCmcgaGljaCBjYXVzZSBpdCA7IGZsZWNrZWQgdG9vIG9mdGVuIHdpdGggYnJvd24gCgpmYWNmZml0diB0UyBkVHMgVC0gYW50IGRlVk90acKwIiBhYlPCsHJiUyBXaXRoIGRlcGxvcmFNIAp0aGUgSSB5ICEsIGQgJyBobmN0dXJlIG9mIHNlbGZpc2huZXNzIG9yIGZlYXIgOyBidXQgbm9uLiAKCmVzcyBhZHVtYnJhdGluZyBhIG1pZ2h0eSBwb3RlbnRpYWxpdHkgb2YgdGhlIGZ1dHVyZSAKCgpUSFJFRSBDTEFTU0VTIE9GIFRIT1VHSFQtRk9STVMgNDUgCgptYW5pZmVzdGluZyB0byBvdXIgZXllcyB0aGUgZmlyc3QgZmFpbnQgZmx1dHRlciBvZiBvbmUgYXQgCmxlYXN0IG9mIHRoZSB0d2luIHdpbmdzIG9mIGRldm90aW9uIGFuZCB3aXNkb20sIGJ5IHRoZSAKdXNlIG9mIHdoaWNoIHRoZSBzb3VsIGZsaWVzIHVwd2FyZCB0byBHb2QgZnJvbSB3aG9tIGl0IApjYW1lLiAKClN0cmFuZ2UgaXMgaXQgdG8gbm90ZSB1bmRlciB3aGF0IHZhcmllZCBjaXJjdW1zdGFuY2VzIAp0aGlzIHZhZ3VlIGJsdWUgY2xvdWQgbWF5IGJlIHNlZW4gOyBhbmQgb2Z0ZW50aW1lcyBpdHMgCmFic2VuY2Ugc3BlYWtzIG1vcmUgbG91ZGx5IHRoYW4gaXRzIHByZXNlbmNlLiBGb3IgaW4gCm1hbnkgYSBmYXNoaW9uYWJsZSBwbGFjZSBvZiB3b3JzaGlwIHdlIHNlZWsgaXQgaW4gdmFpbiwgCmFuZCBmaW5kIGluc3RlYWQgb2YgaXQgYSB2YXN0IGNvbmdsb21lcmF0aW9uIG9mIHRob3VnaHQtIApmb3JtcyBvZiB0aGF0IHNlY29uZCB0eXBlIHdoaWNoIHRha2UgdGhlIHNoYXBlIG9mIAptYXRlcmlhbCBvYmplY3RzLiBJbnN0ZWFkIG9mIHRva2VucyBvZiBkZXZvdGlvbiwgd2Ugc2VlIApmbG9hdGluZyBhYm92ZSB0aGUg4oCcd29yc2hpcHBlcnPigJ0gdGhlIGFzdHJhbCBpbWFnZXMgb2YgCmhhdHMgYW5kIGJvbm5ldHMsIG9mIGpld2VsbGVyeSBhbmQgZ29yZ2VvdXMgZHJlc3Nlcywgb2YgCmhvcnNlcyBhbmQgb2YgY2FycmlhZ2VzLCBvZiB3aGlza3ktYm90dGxlcyBhbmQgb2YgU3VuZGF5IApkaW5uZXJzLCBhbmQgc29tZXRpbWVzIG9mIHdob2xlIHJvd3Mgb2YgaW50cmljYXRlIGNhbGN1bGEtIApsaW9ucywgc2hvd2luZyB0aGF0IG1lbiBhbmQgd29tZW4gYWxpa2UgaGF2ZSBoYWQgZHVyaW5nIAp0aGVpciBzdXBwb3NlZCBob3VycyBvZiBwcmF5ZXIgYW5kIHByYWlzZSBubyB0aG91Z2h0cyAKYnV0IG9mIGJ1c2luZXNzIG9yIG9mIHBsZWFzdXJlLCBvZiB0aGUgZGVzaXJlcyBvciB0aGUgCmFueGlldGllcyBvZiB0aGUgbG93ZXIgZm9ybSBvZiBtdW5kYW5lIGV4aXN0ZW5jZS4gCgpZZXQgc29tZXRpbWVzIGluIGEgaHVtYmxlciBmYW5lLCBpbiBhIGNodXJjaCBiZWxvbmctIAoKKiBDPiAKCm1nIHRvIHRoZSB1bmZhc2hpb25hYmxlIENhdGhvbGljIG9yIFJpdHVhbGlzdCwgb3IgZXZlbiBpbiAKYSBsb3dseSBtZWV0aW5nLWhvdXNlIHdoZXJlIHRoZXJlIGlzIGJ1dCBsaXR0bGUgb2YgbGVhcm5pbmctIApvciBvZiBjdWx0dXJlLCBvbmUgbWF5IHdhdGNoIHRoZSBkZWVwIGJsdWUgY2xvdWRzIHJvbGxpbmcgCmNlYXNlbGVzc2x5IGVhc3R3YXJkIHRvd2FyZHMgdGhlIGFsdGFyLCBvciB1cHdhcmRzLCB0ZXN0aS0gCmZ5aW5nIGF0IGxlYXN0IHRvIHRoZSBlYXJuZXN0bmVzcyBhbmQgdGhlIHJldmVyZW5jZSBvZiAKdGhvc2Ugd2hvIGdpdmUgdGhlbSBiaXJ0aC4gUmFyZWx5IOKAlCB2ZXJ5IHJhcmVseSDigJQgCmFtb25nIHRoZSBjbG91ZHMgb2YgYmx1ZSB3aWxsIGZsYXNoIGxpa2UgYSBsYW5jZSBjYXN0IGJ5IAp0aGUgaGFuZCBvZiBhIGdpYW50IHN1Y2ggYSB0aG91Z2h0LWZvcm0gYXMgaXMgc2hvd24gaW4gCkZpZy4gMTUgOyBvciBzdWNoIGEgZmxvd2VyIG9mIHNlbGYtcmVudW5jaWF0aW9uIGFzIHdlIHNlZSAKaW4gRmlnLiAxNiBtYXkgZmxvYXQgYmVmb3JlIG91ciByYXZpc2hlZCBleWVzICwqIGJ1dCBpbiAKbW9zdCBjYXNlcyB3ZSBtdXN0IHNlZWsgZWxzZXdoZXJlIGZvciB0aGVzZSBzaWducyBvZiBhIApoaWdoZXIgZGV2ZWxvcG1lbnQuIAoKCjQgNiAKCgpUSE9VR0hULUZPUk1TIAoKClVwd2FyZCBSdXNoIG9mIERldm90aW9u4oCUIFRoZSBmb3JtIGluIG5TIHUgCmJlYXJzIG11Y2ggdGhlIHNhbWUgcmVsYXRpb24gdG8gdGhhdCBvZiBGaWcuICw0IGFzIGRpZCB0aGogCmMgZWFyIHkgb3V0bGluZWQgcHJvamVjdGlsZSBvZiBGaWcuIGlvIHRvIHRoZSBpbmRldGVybWluYXRlIApjbG91ZCBvZiBGaWcuIDguIFdlIGNvdWxkIGhhcmRseSBoYXZlIGEgbW9yZSBtYXJrZWQgCmNvbnRyYXN0IHRoYW4gdGhhdCBiZXR3ZWVuIHRoZSBpbmNob2F0ZSBmaWFjY2lkaXR5IG9mIHRoZSAKCnNwdGUgb2YgTWdobHYgP2UgJyAxIDEgVCBeIMKwZiB0aGUgU3BJZW5kbGQgCgpiZUwgXiBnIFYgUCBeZVbCsHRsMG4gV2hpR2ggSWVhcHMgaW50MCAKCiwgRmxnOyAqNeKAmSBUaGlzIGlzIG5vIHVuY2VydGFpbiBoYWxmLWZvcm1lZCAKCmltZW50IDsgaXQgaXMgdGhlIG91dHJ1c2ggaW50byBtYW5pZmVzdGF0aW9uIG9mIGEgCmVtb3Rpb24gcm9vdGVkIGRlZXAgaW4gdGhlIGtub3dsZWRnZSBvZiBmYWN0IGluLCAKbWFuIHdobyBmZWVscyBzdWNoIGRldm90aW9uIGFzIHRoaXMgaXMgb25lIHdoLCEnIGkgCm4gd2hvbSBoZSBoYXMgYmVsaWV2ZWQg4oCiIHRoZSBtYW4gLCwsa18gaSAKCnRob3VnaHQtZm/ihKIgYXMgdGhpcyBpcyBvbmUgd2hvIGhhcyB0YXVnaCBsbHNlbGYgaG/igJx3IHRpIAoKY291cmFnZSBhc14gVCBYIFhsIMKjIApvdXRXIGggVCDigJxuVklDdGnCsG7igJkgV2hpayB0aGUgc2zigJxQbmVzcyBvZiBpdHMgCgp0aGUgcGVlcnRUbnUgMSBhbmQgCgp1bnNlbGZpc2huZXNzIOKAmCA3IFdpdG5lc3MgdDAgaGlzIOKAnMKrwqsgCgpUaGUgUmVzcG9uc2UgdG8gRGV2b3Rpb24u4oCULiBpbiBGaWcuICw3IHdlIHNlZSB0aC4gCgpyZXN1bHQgb2YgaGlzIHRob3VnaHTigJQgdGhlIHJlc29vbiBYdSB0IEMgdGggCgphbm5lYWwgbWFq4oCeICogcmVzcG9uc2Ugb2YgdGhlIExvZ29zIHRvIAoKcHBlYWwgbWFkZSB0byBIaW0sIHRoZSB0cnV0aCB3aGljaCB1bmRlcmxpZXMgCgpYJyxvYWwgciDCsGYgdGhlIFDigJwgWCDigJwgLSAKCk9uIGV2ZXJ5IHBsYW50IG9mIEhpc2Vlc29sICIgXiAnIioqKiDCsGYgZVhwa25hdGlvbiAKCmZvcnRoIEhpcyBsaWdodCwgSGlzIHBvd2VyLCBeaGZlIjEgYW7igJ0gdGlsbCBQwrBVcicgCgpvbiB0aGUgaGlnaGVyIHBsYW5lcyB0aGFpICxrbCAuIG5hdHVyYUkxeSA+dCBuIApzdHJlbmd0aCBjYW4gYmUgZ2l2ZW4gbW9zdCBmIG4gwrBVIMKwUCBk4oCYduKAmG5lIAoKZWFjaCBwbGFuZSB0byB0aGF0IG5leHQgYmVsb3cgXiBeIF4gZGVTQydudCBmcm9tIAoKbHlzaW5nIiBsaW10ZWlvbmlhIGhMLHQgMSBuIFRULSDigJwgKlcgPuKAnH4gCgpleGNlcHQgdG8gdGhvc2Ugd2hvIHQgNyBtY29tUOKEomhlbnNpYmxlIAoKcG9zc2liaWxpdGllcyBvZiBodW10IG9vICplIGhpZ2hlciAKCmxpZmUgaG93cyBmb3J0aCB3aXRoIGluY290bVRsIFRo4oCcUyAnaGUgZGxWaW5lIAoKaW5jb21wYXJhYmx5IGdyZWF0ZXIgCgoKVEhSRUUgQ0xBU1NFUyBPRiBUSE9VR0hULUZPUk1TIDQgNyAKCnRoZSBtZW50YWwgcGxhbmUgdGhhbiBvbiB0aGUgYXN0cmFsIDsgYW5kIHlldCBldmVuIGl0cyAKZ2xvcnkgYXQgdGhlIG1lbnRhbCBsZXZlbCBpcyBpbmVmZmFibHkgdHJhbnNjZW5kZWQgYnkgdGhhdCAKb2YgdGhlIGJ1ZGRoaWMgcGxhbmUuIE5vcm1hbGx5IGVhY2ggb2YgdGhlc2UgbWlnaHR5IAp3YXZlcyBvZiBpbmZsdWVuY2Ugc3ByZWFkcyBhYm91dCBpdHMgYXBwcm9wcmlhdGUgcGxhbmUg4oCUIApob3Jpem9udGFsbHksIGFzIGl0IHdlcmUg4oCUIGJ1dCBpdCBkb2VzIG5vdCBwYXNzIGludG8gdGhlIApvYnNjdXJhdGlvbiBvZiBhIHBsYW5lIGxvd2VyIHRoYW4gdGhhdCBmb3Igd2hpY2ggaXQgd2FzIApvcmlnaW5hbGx5IGludGVuZGVkLiAKCllldCB0aGVyZSBhcmUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgZ3JhY2UgYW5kIApzdHJlbmd0aCBwZWN1bGlhciB0byBhIGhpZ2hlciBwbGFuZSBtYXkgaW4gYSBtZWFzdXJlIGJlIApicm91Z2h0IGRvd24gdG8gYSBsb3dlciBvbmUsIGFuZCBtYXkgc3ByZWFkIGFicm9hZCAKdGhlcmUgd2l0aCB3b25kZXJmdWwgZWZmZWN0LiBUaGlzIHNlZW1zIHRvIGJlIHBvc3NpYmxlIApvbmx5IHdoZW4gYSBzcGVjaWFsIGNoYW5uZWwgaXMgZm9yIHRoZSBtb21lbnQgb3BlbmVkIDsgCmFuZCB0aGF0IHdvcmsgbXVzdCBiZSBkb25lIGZyb20gYmVsb3cgYW5kIGJ5IHRoZSBlZmZvcnQgCm9mIG1hbi4gSXQgaGFzIGJlZm9yZSBiZWVuIGV4cGxhaW5lZCB0aGF0IHdoZW5ldmVyIGEgCm1hbuKAmXMgdGhvdWdodCBvciBmZWVsaW5nIGlzIHNlbGZpc2gsIHRoZSBlbmVyZ3kgd2hpY2ggaXQgCnByb2R1Y2VzIG1vdmVzIGluIGEgY2xvc2UgY3VydmUsIGFuZCB0aHVzIGluZXZpdGFibHkgCnJldHVybnMgYW5kIGV4cGVuZHMgaXRzZWxmIHVwb24gaXRzIG93biBsZXZlbCA7IGJ1dCB3aGVuIAp0aGUgdGhvdWdodCBvciBmZWVsaW5nIGlzIGFic29sdXRlbHkgdW5zZWxmaXNoLCBpdHMgZW5lcmd5IApydXNoZXMgZm9ydGggaW4gYW4gb3BlbiBjdXJ2ZSwgYW5kIHRodXMgZG9lcyBub3QgcmV0dXJuIAppbiB0aGUgb3JkaW5hcnkgc2Vuc2UsIGJ1dCBwaWVyY2VzIHRocm91Z2ggaW50byB0aGUgcGxhbmUgCmFib3ZlLCBiZWNhdXNlIG9ubHkgaW4gdGhhdCBoaWdoZXIgY29uZGl0aW9uLCB3aXRoIGl0cyAKYWRkaXRpb25hbCBkaW1lbnNpb24sIGNhbiBpdCBmaW5kIHJvb20gZm9yIGl0cyBleHBhbnNpb24uIApCdXQgaW4gdGh1cyBicmVha2luZyB0aHJvdWdoLCBzdWNoIGEgdGhvdWdodCBvciBmZWVsaW5nIApob2xkcyBvcGVuIGEgZG9vciAodG8gc3BlYWsgc3ltYm9saWNhbGx5KSBvZiBkaW1lbnNpb24gCmVxdWl2YWxlbnQgdG8gaXRzIG93biBkaWFtZXRlciwgYW5kIHRodXMgZnVybmlzaGVzIHRoZSAKcmVxdWlzaXRlIGNoYW5uZWwgdGhyb3VnaCB3aGljaCB0aGUgZGl2aW5lIGZvcmNlIAphcHByb3ByaWF0ZSB0byB0aGUgaGlnaGVyIHBsYW5lIGNhbiBwb3VyIGl0c2VsZiBpbnRvIHRoZSAKbG93ZXIgd2l0aCBtYXJ2ZWxsb3VzIHJlc3VsdHMsIG5vdCBvbmx5IGZvciB0aGUgdGhpbmtlciAKYnV0IGZvciBvdGhlcnMuIEFuIGF0dGVtcHQgaXMgbWFkZSBpbiBGaWcuIDEgNyB0byBzeW0tIApib2xpc2UgdGhpcywgYW5kIHRvIGluZGljYXRlIHRoZSBncmVhdCB0cnV0aCB0aGF0IGFuIGluZmluaXRlIApmbG9vZCBvZiB0aGUgaGlnaGVyIHR5cGUgb2YgZm9yY2UgaXMgYWx3YXlzIHJlYWR5IGFuZCAKd2FpdGluZyB0byBwb3VyIHRocm91Z2ggd2hlbiB0aGUgY2hhbm5lbCBpcyBvZmZlcmVkLCBqdXN0IAoKCjQ4IAoKClRIT1VHSFQtRk9STVMgCgoKYXMgdGhlIHdhdGVyIGluIGEgY2lzdGVybiBtYXkgYmUgc2FpZCB0byBiZSB3YWl0aW5nIApwb3VyIHRocm91Z2ggdGhlIGZpcnN0IHBpcGUgdGhhdCBtYXkgYmUgb3BlbmVkLiAKClRoZSByZXN1bHQgb2YgdGhlIGRlc2NlbnQgb2YgZGl2aW5lIGxpZmUgaXMgYSB2ZXJ2IApncmVhdCBzdHJlbmd0aGVuaW5nIGFuZCB1cGxpZnRpbmcgb2YgdGhlIG1ha2VyIG9mIHRoZSAKYyBhbm5lbCBhbmQgdGhlIHNwcmVhZGluZyBhbGwgYWJvdXQgaGltIG9mIGEgbW9zdCAKCmJlZVRjIEggZCBiZW5lZmljZW50IGluZmx1ZW5jZS4gVGhpcyBlZmZlY3QgaGFzIG9mdGVuIApjYWxsZWQgYW4gYW5zd2VyIHRvIHByYXllciwgYW5kIGhhcyBiZWVuIGF0dHJpYnV0ZWQgCnkgdGhlIGlnbm9yYW50IHRvIHdoYXQgdGhleSBjYWxsIGEg4oCcIHNlZWQnZCBpbnRyKiBuIOKAoiDigKIgCgpvZiBQcm92aWRlbnQg4oCdLC1uIGNvIGEgciB5IHNwZWNpYWwgaW50ZXJwb3NpdGlvbiAKCklyTCBJZCBtIGYuIMKwZiAqaGUgVWFtaW5aIGFjdGlvLCwgb2YgLGhlIAoKXnJlYXQgYW5kIGltbXV0YWJsZSBkaXZpbmUgbGF3LiAKClNlbGYtUmVudW5jaWF0aW9uIC4g4oCUIEZpby0gcmY+IAoKZm9ybSBvZiBkZXZvdGlvbiBhIGwnICYgcyB1cyB5ZXQgYW5vdGhlciAKb2Yg4oCZIHByb2R1Y21nIOKAnCBleHF1aXNpdGVseSBiZWF1dGlmdWwgZm9ybSAKClpsIFNlLHFVIGUg4oCcViBVU35hIHR5cMKwIGluIHdoaWNoIMKrKiBuaWlnaHQgYSwgCgp0byBebWxTVVBQciBWYXJpwrBVUyBncmFDZU0gc2hhcGNzIAoKYW5pbWF0ZSBuYXR1cmUgd2VyZSBiZWluZyBpbWl0YXRlZC4gRmlvLSBsNiBmbnQgCgpleGFtcGxlLCBpcyBzb21ld2hhdCBzdWdnZXN0aXZlIG9mIGEgcGFydGlhbGx5IG9wZW5lZCAKCmZsb3dlci1idWQsIHdoaWxlIG90aGVyIGZvcm1zIGFyZSBmb3VuZCBtIGvCqyA3IAoKcmVzZW1ibGFuY2UgdG8gc2hlbGxzIG9yIGxlYXZlVG4gVCBpICogCmZlc3RsdiBob3dldmVyIHRrIHRyZWUtc2hhcGVzLiBNYW5pLSAKCnZlZ2V0YWJsZSBvciBhbmltYWwgZm9ybWUgYSDigKIqIGJlIGNvUGllcyAKCioxYSAq4oCiIGYgU+KAmSBhbmQgbHQgc2VlbXMgcHJvYmFibGUgdGhhdCAKCnBpIG5hdGlvbiBvZiB0aGUgc210aWxhcml0eSBsaWVzIHZlcnkgbXVjaCBkZWVwZXIgCgp0aGF0IEFuIGFuYWxvZ291cyBhbmQgZXZlbiBtb3JlIHNpZ25pZmljYW50IAoKL1RUIFQ3IEPCsG1wSWVYIHRob+KAnGdsdHQtZm9ybXMgJ2NhbiBiZSAsIAppdGF0ZWQgYnkgdGhlIGFjdGlvbiBvZiBjZXJ0YWluIG1lZGlhbiBpbiBJIAoKYmVlbiBzYWlkIGFib3ZlLiBXaGlsZSB3aXRrIDEgZm9yY2Vz4oCZIGEgCgp3b3VsZCBiZSB1bndpY3AgwrBVciBQcmVzZW50IGtub3dsZWRnZSAKCuKAoiDigJ4gVW53aXNlIHQwIGF0dGVecHQgYSBzb2x1dGlvbiBvZiB0aGUgdmVydiBmZkpMLCAKCm1nIHByb2JsZW0gcHJlc2VudGVkIGJ5IHRoZXNlIHJlbWFyay0sIGhpICogNyA3PyAKCml0IHNlZW1zIGxpa2VseSB0aGF0IHdlIGFyZSBvYnRhaW5eISByIHJlc2VtYjNhbmMqIAoKdGhyZXNob2xkIG9mIGEgdmVydiBtaW8tYnQgJiBnbG1Qc2UgYWNyb3NzIF4gCgp0aG9uZXJrdGUgNyBtaWdodHkgbXlzdGVyeSwgZjByIGlmIGJ5IGNlcnRhaXIgCgp0aG91Z2h0cyB3ZSBwcm9kdWNlIGEgZm9ybSB3ayxWayB1IGkgXiBvZXJ0YWlyIAoKYnkgdGhlIHByb2Nlc3NlcyBvZiBuYXR1cmUgd2UgdCAsIAoKdGlvbiB0aGF0IHRoZXNlIGZvcmNlcyBvZiBuYXReIF4gMyBwcmVzdW1GIAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyA0OSAKCnNvbWV3aGF0IHNpbWlsYXIgdG8gdGhlIGFjdGlvbiBvZiB0aG9zZSB0aG91Z2h0cy4gU2luY2UgCnRoZSB1bml2ZXJzZSBpcyBpdHNlbGYgYSBtaWdodHkgdGhvdWdodC1mb3JtIGNhbGxlZCBpbnRvIApleGlzdGVuY2UgYnkgdGhlIExvZ29zLCBpdCBtYXkgd2VsbCBiZSB0aGF0IHRpbnkgcGFydHMgb2YgCml0IGFyZSBhbHNvIHRoZSB0aG91Z2h0LWZvcm1zIG9mIG1pbm9yIGVudGl0aWVzIGVuZ2FnZWQgCm0gdGhlIHNhbWUgd29yayA7IGFuZCB0aHVzIHBlcmhhcHMgd2UgbWF5IGFwcHJvYWNoIAoKYSBjb21wcmVoZW5zaW9uIG9mIHdoYXQgaXMgbWVhbnQgYnkgdGhlIHRocmVlIGh1bmRyZWQgCmFuZCB0aGlydHkgbWlsbGlvbiBEZXZhcyBvZiB0aGUgSGluZHVzIAoKVGhpcyBmb3JtIGlzIG9mIHRoZSBsb3ZlbGllc3QgcGFsZSBhenVyZSwgd2l0aCBhIGdsb3J5IAoKb2Ygd2hpdGUgbGlnaHQgc2hpbmluZyB0aHJvdWdoIGl0LXNvbWV0aGluZyBpbmRlZWQgdG8gCgp0YXggdGhlIHNraWxsIGV2ZW4gb2YgdGhlIGluZGVmYXRpZ2FibGUgYXJ0aXN0IHdobyB3b3JrZWQgCgpzbyBoYXJkIHRvIGdldCB0aGVtIGFzIG5lYXJseSByaWdodCBhcyBwb3NzaWJsZS4gSXQgaXMgCgp3aGF0IGEgQ2F0aG9saWMgd291bGQgY2FsbCBhIGRlZmluaXRlIOKAnGFjdCBvZiBkZXZvdGlvbiAKCmJldHRlciBzdGlsbCwgYW4gYWN0IG9mIHV0dGVyIHNlbGZsZXNzbmVzcywgb2Ygc2VsZi1zdXJyZW5kZXIgCmFuZCByZW51bmNpYXRpb24uIAoKCmludGVsbGVjdCAKCkZpZy4gLDggcmVwcmVzZW50cyBhIApnIGMgb3VkIG9mIHRoZSBzYW1lIG9yZGVyIGFzIHRob3NlIHNob3duIGluIEZpZ3MuIAoKaW5zdGVhZCB0aXQgXiAnbSDigJhoZSDigJxJb3VyIGlzIHllbGxvdyAKCnZlaGljbGVzIGFsd+KEojMw4oCdICzCsHIgWWVsJ8KwVyDigJwg4oCcUycgb2YgCgpTaGFkZXMgbSBhdGVTIG10ZWxsZWN0dWFsIGNhcGFjaXR5LCBidXQgaXRzIAoKYnkgdGggSWQxNyA3ZXJ5IHJ04oCZIF4gYmUgY29tcGxpY2F0ZWQgCgpieSB0aGUgYWRtaXh0dXJlIG9mIG90aGVyIGh1ZXMuIEdlbmVyYWxseSBzcGVha2luZyAKCml0IGhhcyBhIGRlZXBlciBhbmQgZHVsbGVyIHRpbnQgaWYgdGhlIGludGVsbGVjdCBpcyBkaXJlY3RlZCAKCmNoaWVmbHkgbXRvIGxvd2VyIGNoYW5uZWxzLCBtb3JlIGVzcGVjaWFsbHYgaWYgdGggCgpJdlMgKiogU2XigJxsTCAuIEluIOKAlCAtIOKAnMKrdGFsIGJpZHkgb2Z0aGUgCm9jaHJlXiDCsCBidXNtZXNzIEp0IHdvdWxkIHNob3cgaXRzZWxmIGFzIHllbGxvdyAKCnBXbG9zb25sIFDigJ1lIHRpbnRlaSdlQywgZGVWT3RlZCAsMCAsaGUgKio3IG9mIAoKUCBsb3NvcGh5IG9yIG1hdGhlbWF0aWNzIGFwcGVhcnMgZnJlcXVlbnRseSB0byBoZSAKCmdvbGRlbiwgYW5kIHRoaXMgcmlzZXMgZ3JhZHVhbGx5IHRvIGEgaGVhM2YgNyAsIC4gCgpsdW1pbm91cyBsZW1vbiBvciBKIFV5IOKAnCBhIGJlYXUiZnVsIGNsZWFyIGFuZCAKbGVtb24gb3IgcHJ0bXJvc2UgeWVsbG93IHdoZW4gYSBwb3dlcmZ1bCAKCjQgCgoKNTAgCgoKVEhPVUdIVC1GT1JNUyAKCgppbnRlbGxlY3QgaXMgYmVpbmcgZW1wbG95ZWQgYWJzb2x1dGVseSB1bnNlbGZpc2hseSBmb3IgdGhlIApiZW5lZml0IG9mIGh1bWFuaXR5LiBNb3N0IHllbGxvdyB0aG91Z2h0LWZvcm1zIGFyZSAKY2xlYXJseSBvdXRsaW5lZCwgYW5kIGEgdmFndWUgY2xvdWQgb2YgdGhpcyBjb2xvdXIgaXMgCmNvbXBhcmF0aXZlbHkgcmFyZS4gSXQgaW5kaWNhdGVzIGludGVsbGVjdHVhbCBwbGVhc3VyZS0gCmFwcHJlY2lhdGlvbiBvZiB0aGUgcmVzdWx0IG9mIGluZ2VudWl0eSwgb3IgdGhlIGRl4oCZKiAKZmVsdCBpbiBjbGV2ZXIgd29ya21hbnNoaXAuIFN1Y2ggcGxlYXN1cmUgYXMgdcKrIApvcmRpbmFyeSBtYW4gZGVyaXZlcyBmcm9tIHRoZSBjb250ZW1wbGF0aW9uIG9mIGEgcGljdHVyZSAKdXN1YWxseSBkZXBlbmRzIGNoaWVmbHkgdXBvbiB0aGUgZW1vdGlvbnMgb2YgYWRtaXJhdGlvbiwgCmFmZmVjdGlvbiwsIG9yIHBpdHkgd2hpY2ggaXQgYXJvdXNlcyB3aXRoaW4gaGltJywgb3Igc29tZS0gCnRpbWVzLCBpZiBpdCBwb3VydHJheXMgYSBzY2VuZSB3aXRoIHdoaWNoIGhlIGlzIGZhbWlsaWFyLCBpdHMgCmNoYXJtIGNvbnNpc3RzIGluIGl0cyBwb3dlciB0byBhd2FrZW4gdGhlIG1lbW9yeSBvZiAKcGFzdCBqb3lzLiBBbiBhcnRpc3QsIGhvd2V2ZXIsIG1heSBkZXJpdmUgZnJvbSBhIHBpY3R1cmUgCmEgcGxlYXN1cmUgb2YgYW4gZW50aXJlbHkgZGlmZmVyZW50IGNoYXJhY3RlciwgYmFzZWQgdXBvbiAKaXMgcmVjb2duaXRpb24gb2YgdGhlIGV4Y2VsbGVuY2Ugb2YgdGhlIHdvcmssIGFuZCBvZiB0aGUgCmluZ2VudWl0eSB3aGljaCBoYXMgYmVlbiBleGVyY2lzZWQgaW4gcHJvZHVjaW5nIGNlcnRhaW4gCnJlc3VsdHMgU3VjaCBwdXJlIGludGVsbGVjdHVhbCBncmF0aWZpY2F0aW9uIHNob3dzIGl0c2VsZiAKCiEiIGEgSiByIDcgZMKwVWQgOiBhJ2xkIOKAmGhlIDUzMDE2IGVmZmVjdCBtYT4nIGJlIHByb2R1Y2VkIApieSBkZWxpZ2h0IG0gbXVzaWNhbCBpbmdlbnVpdHksIG9yIHRoZSBzdWJ0bGV0aWVzIG9mIAoK4oCUIEEgZDDCsGQgwqtmIMKr4oCc4pagIG5hdHVyZSBiZXRva2VucyB0aGUgZW50aXJlIAoK4pagICdaZOKAmCBlbTB0aTBuJyBmb3IgaWYgdGhhdCBwcmVzZW50IAoK4oCcLDpyYU15IHQsbmdlICxoZSB5ZSxidyAKClRoZSBJbmllbnRpb24gdG8gS25vd+KAlCBGaW8tIGxuIGxvIHIg4oCiIAoKc2hvd2luby0gbmMgKnQuIOKAoiDigJ4gJyByaWdmLSAxOSBpcyBvZiBpbnRlcmVzdCBhcyAKCnNub3dpbmcgdXMgc29tZXRoaW5nLSBvZiB0aGUgby1td2ktSyDigJ4gCgpUaGUgZWFybHRXIGM8LW8gXiDigKIgaSBuQyDCp1RPIHRoIMKwKiBhIHRob3VnaHQtZm9ybS4gCgosIGVhcklpZXIgU3RhU2U+IHdoaWNoIGlzIGluZGljYXRlZCBieSB0aGUgdW9uZXIgZm5yWiAKCmlzIG5vdCB1bmNvbW1vbiwgYW5kIGluZGljYXRlcyB0aGUgZGV0ZXJtaW5hdGlvbiAsIF4gaSDigJkgCgpzb21lIHByb2JsZW3igJQgdGhlIGludGVudGlvbiAqIGkgZXRlcm1tYXRsMG4gdG8gc29sdmUgCgpTb21ldGltZXMgYSB0aGVvc29waGljYSBUViByIF4gdDAgVW5kZXJzdGFuZCogCgp5ZWxsb3cgc2VycGVudGluZSBmb0xzIHByb0xjdF4gODY2NSBtYW55IMKwZiB0aGVTQyAKaGlzIGF1ZGllbmNlLCBhbmQgd2VsY29tZXMgXiBmcsKwbSAKCmhlYXJlcnMgYXJlIGZvbGxvd2luZyBoaSBhUyBhIHRRaGVuIHRoYXQgaGlzIAoKV2UgYW4gZWFybiBaIF4gwrsgblTigJ0/IFcsIC00IAoKKsKwIHVuZGVyZcKrYW5kIGFuZCB0byBrbm93IAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyA1ciAKCkEgZm9ybSBvZiB0aGlzIGtpbmQgZnJlcXVlbnRseSBhY2NvbXBhbmllcyBhIHF1ZXN0aW9uLCwgCmFuZCBpZiwgYXMgaXMgc29tZXRpbWVzIHVuZm9ydHVuYXRlbHkgdGhlIGNhc2UsIHRoZSBxdWVzdGlvbiAKaXMgcHV0IGxlc3Mgd2l0aCB0aGUgZ2VudWluZSBkZXNpcmUgZm9yIGtub3dsZWRnZSB0aGFuIGZvciAKdGhlIHB1cnBvc2Ugb2YgZXhoaWJpdGluZyB0aGUgYWN1bWVuIG9mIHRoZSBxdWVzdGlvbmVyLCAKdGhlIGZvcm0gaXMgc3Ryb25nbHkgdGluZ2VkIHdpdGggdGhlIGRlZXAgb3JhbmdlIHRoYXQgCmluZGljYXRlcyBjb25jZWl0LiBJdCB3YXMgYXQgYSB0aGVvc29waGljYWwgbWVldGluZyB0aGF0IAouIHRoaXMgc3BlY2lhbCBzaGFwZSB3YXMgZW5jb3VudGVyZWQsIGFuZCBpdCBhY2NvbXBhbmllZCBhIApxdWVzdGlvbiB3aGljaCBzaG93ZWQgY29uc2lkZXJhYmxlIHRob3VnaHQgYW5kIHBlbmV0cmEtIAp0aW9uLiBUaGUgYW5zd2VyIGF0IGZpcnN0IGdpdmVuIHdhcyBub3QgdGhvcm91Z2hseSAKc2F0aXNmYWN0b3J5IHRvIHRoZSBpbnF1aXJlciwgd2hvIHNlZW1zIHRvIGhhdmUgcmVjZWl2ZWQgCnRoZSBpbXByZXNzaW9uIHRoYXQgaGlzIHByb2JsZW0gd2FzIGJlaW5nIGV2YWRlZCBieSB0aGUgCmxlY3R1cmVyLiBIaXMgcmVzb2x1dGlvbiB0byBvYnRhaW4gYSBmdWxsIGFuZCB0aG9yb3VnaCAKYW5zd2VyLCB0byBoaXMgaW5xdWlyeSBiZWNhbWUgbW9yZSBkZXRlcm1pbmVjZmN0aGFuIGV2ZXIgCmFuZCBoaXMgdGhvdWdodC1mb3JtIGRlZXBlbmVkIGluIGNvbG91ciBhbmQgY2hhbmdlZCEgCmludG8gdGhlIHNlY29uZCBvZiB0aGUgdHdvIHNoYXBlcywgcmVzZW1ibGluZyBhIGNvcmstIApzY3JldyBldmVuIG1vcmUgY2xvc2VseSB0aGFuIGJlZm9yZS4gRm9ybXMgc2ltaWxhciAKdG8gdGhlc2UgYXJlIGNvbnN0YW50bHkgY3JlYXRlZCBieSBvcmRpbmFyeSBpZGxlIGFuZCAKZnJpdm9sb3VzIGN1cmlvc2l0eSwgYnV0IGFzIHRoZXJlIGlzIG5vIGludGVsbGVjdCBpbnZvbHZlZCAKaW4gdGhhdCBjYXNlIHRoZSBjb2xvdXIgaXMgbm8gbG9uZ2VyIHllbGxvdywgYnV0IHVzdWFsbHkgCmNsb3NlbHkgcmVzZW1ibGVzIHRoYXQgb2YgZGVjYXlpbmcgbWVhdCwgc29tZXdoYXQgbGlrZSAKdGhhdCBzaG93biBpbiBGaWcuIDI5IGFzIGV4cHJlc3NpbmcgYSBkcnVua2VuIG1hbuKAmXMgCmNyYXZpbmcgZm9yIGFsY29ob2wuIAoKSGlnaCBBbWJpdGlvbi4g4oCUIEZpZy4gMjAgZ2l2ZXMgdXMgYW5vdGhlciBtYW5pZmVzdGEtIAp0aW9uIG9mIGRlc2lyZSDigJQgdGhlIGFtYml0aW9uIGZvciBwbGFjZSBvciBwb3dlci4gVGhlIAphbWJpdGlvdXMgcXVhbGl0eSBpcyBzaG93biBieSB0aGUgcmljaCBkZWVwIG9yYW5nZSAKY29sb3VyLCBhbmQgdGhlIGRlc2lyZSBieSB0aGUgaG9va2VkIGV4dGVuc2lvbnMgd2hpY2ggCnByZWNlZGUgdGhlIGZvcm0gYXMgaXQgbW92ZXMuIFRoZSB0aG91Z2h0IGlzIGEgZ29vZCAKYW5kIHB1cmUgb25lIG9mIGl0cyBraW5kLCBmb3IgaWYgdGhlcmUgd2VyZSBhbnl0aGluZyBiYXNlIApvciBzZWxmaXNoIGluIHRoZSBkZXNpcmUgaXQgd291bGQgaW5ldml0YWJseSBzaG93IGl0c2VsZiBpbiAKdGhlIGRhcmtlbmluZyBvZiB0aGUgY2xlYXIgb3JhbmdlIGh1ZSBieSBkdWxsIHJlZHMsIApicm93bnMsIG9yIGdyZXlzLiBJZiB0aGlzIG1hbiBjb3ZldGVkIHBsYWNlIG9yIHBvd2VyLCAKaXQgd2FzIG5vdCBmb3IgaGlzIG93biBzYWtlLCBidXQgZnJvbSB0aGUgY29udmljdGlvbiB0aGF0IAoKCjUyIFRIT1VHSFQtRk9STVMgCgpoZSBjb3VsZCBkbyB0aGUgd29yayB3ZWxsIGFuZCB0cnVseSwgYW5kIHRvIHRoZSBhZHZhbi0gCnRhZ2Ugb2YgaGlzIGZlbGxvdy1tZW4uIAoKU2VsZmlzaCBBbWJpdGlvbi4g4oCUIEFtYml0aW9uIG9mIGEgbG93ZXIgdHlwZSBpcyAKcmVwcmVzZW50ZWQgaW4gRmlnLiAyMS4gTm90IG9ubHkgaGF2ZSB3ZSBoZXJlIGEgbGFyby1lIApzdGFpbiBvZiB0aGUgZHVsbCBicm93bi1ncmV5IG9mIHNlbGZpc2huZXNzLCBidXQgdGhlcmUgaXMgCmFsc28gYSBjb25zaWRlcmFibGUgZGlmZmVyZW5jZSBpbiB0aGUgZm9ybSwgdGhvdWdoIGl0IAphcHBlYXJzIHRvIHBvc3Nlc3MgZXF1YWwgZGVmaW5pdGVuZXNzIG9mIG91dGxpbmUuIEZpZy4gCjIwIGlzIHJpc2luZyBzdGVhZGlseSBvbndhcmQgdG93YXJkcyBhIGRlZmluaXRlIG9iamVjdCwgCmZvciBpdCB3aWxsIGJlIG9ic2VydmVkIHRoYXQgdGhlIGNlbnRyYWwgcGFydCBvZiBpdCBpcyBhcyAKZGVmaW5pdGVseSBhIHByb2plY3RpbGUgYXMgRmlnLiAxMC4gRmlnLiAyMSwgb24gdGhlIArigKJvdGhlciBoYW5kLCBpcyBhIGZsb2F0aW5nIGZvcm0sIGFuZCBpcyBzdHJvbmdseSBpbmRpY2F0aXZlIApvZiBnZW5lcmFsIGFjcXVpc2l0aXZlbmVzcyDigJQgdGhlIGFtYml0aW9uIHRvIGdyYXNwIGZvciB0aGUgCnNlbGYgZXZlcnl0aGluZyB0aGF0IGlzIHdpdGhpbiBzaWdodC4gCgpBTkdFUiAKCk11cmRlcm91cyBSYWdlIGFuZCBTdXN0YWluZWQgQW5nZXIuIOKAlCBJbiBGaWdzLiAyMiAKYW5kIDIzIHdlIGhhdmUgdHdvIHRlcnJpYmxlIGV4YW1wbGVzIG9mIHRoZSBhd2Z1bCBlZmZlY3QgCm9mIGFuZ2VyLiBUaGUgbHVyaWQgZmxhc2ggZnJvbSBkYXJrIGNsb3VkcyAoRmlnLiAyMikgd2FzIAp0YWtlbiBmcm9tIHRoZSBhdXJhIG9mIGEgcm91Z2ggYW5kIHBhcnRpYWxseSBpbnRveGljYXRlZCAKbWFuIG0gdGhlIEVhc3QgRW5kIG9mIExvbmRvbiwgYXMgaGUgc3RydWNrIGRvd24gYSAKd29tYW4gLCB0aGUgZmxhc2ggZGFydGVkIG91dCBhdCBoZXIgdGhlIG1vbWVudCBiZWZvcmUgCmhlIHJhaXNlZCBoaXMgaGFuZCB0byBzdHJpa2UsIGFuZCBjYXVzZWQgYSBzaHVkZGVyaW5nIApmZWVsaW5nIG9mIGhvcnJvciwgYXMgdGhvdWdoIGl0IG1pZ2h0IHNsYXkuIFRoZSBrZWVuLSAKcG9pbnRlZCBzdGlsZXR0by1saWtlIGRhcnQgKEZpZy4gMjMpIHdhcyBhIHRob3VnaHQgb2Ygc3RlYWR5IAphbmdlciwgaW50ZW5zZSBhbmQgZGVzaXJpbmcgdmVuZ2VhbmNlLCBvZiB0aGUgcXVhbGl0eSBvZiAKbXVyZGVyLCBzdXN0YWluZWQgdGhyb3VnaCB5ZWFycywgYW5kIGRpcmVjdGVkIGFnYWluc3QgYSAKcGVyc29uIHdobyBoYWQgaW5mbGljdGVkIGEgZGVlcCBpbmp1cnkgb24gdGhlIG9uZSB3aG8gCgp0IFh0IGZvcj8gOiBoYWYgdGhlIGxhdHRlciBiZWVuIFBvc3Nlc3NlZCBvZiBhIHN0cm9uZyBhbmQgCnRyYWluZWQgd2lsbCwgc3VjaCBhIHRob3VnaHQtZm9ybSB3b3VsZCBzbGF5LCBhbmQgdGhlIG9uZSAKCm5vdXJpc2hpbmcgaXQgaXMgcnVubmluZyBhIHZlcnkgc2VyaW91cyBkYW5nZXIgb2YgYmVjb20tIAppbmcgYSBtdXJkZXJlciBtIGFjdCBhcyB3ZWxsIGFzIGluIHRob3VnaHQgaW4gYSBmdXR1cmUgCgoKaSAKCgpUSFJFRSBDTEFTU0VTIE9GIFRIT1VHSFQtRk9STVMgNTMgCgppbmNhcm5hdGlvbi4gSXQgd2lsbCBiZSBub3RlZCB0aGF0IGJvdGggb2YgdGhlbSB0YWtlIHRoZSAKZmxhc2gtbGlrZSBmb3JtLCB0aG91Z2ggdGhlIHVwcGVyIGlzIGlycmVndWxhciBpbiBpdHMgc2hhcGUsIAp3aGlsZSB0aGUgbG93ZXIgcmVwcmVzZW50cyBhIHN0ZWFkaW5lc3Mgb2YgaW50ZW50aW9uIHdoaWNoIAppcyBmYXIgbW9yZSBkYW5nZXJvdXMuIFRoZSBiYXNpcyBvZiB1dHRlciBzZWxmaXNobmVzcyAKb3V0IG9mIHdoaWNoIHRoZSB1cHBlciBvbmUgc3ByaW5ncyBpcyB2ZXJ5IGNoYXJhY3RlcmlzdGljIAphbmQgaW5zdHJ1Y3RpdmUuIFRoZSBkaWZmZXJlbmNlIGluIGNvbG91ciBiZXR3ZWVuIHRoZSAKdHdvIGlzIGFsc28gd29ydGh5IG9mIG5vdGUuIEluIHRoZSB1cHBlciBvbmUgdGhlIGRpcnR5IApicm93biBvZiBzZWxmaXNobmVzcyBpcyBzbyBzdHJvbmdseSBldmlkZW50IHRoYXQgaXQgc3RhaW5zIApldmVuIGUgbyB0IHVzaCBvZiBhbl5eZXIgOyB3aGlsZSBpbiB0aGUgc2Vjb25kIGNhc2UsIAp0aG91Z2ggbm8gZG91YnQgc2VsZmlzaG5lc3Mgd2FzIGF0IHRoZSByb290IG9mIHRoYXQgYWxzbyAKdGhlIG9yaWdpbmFsIHRob3VnaHQgaGFzIGJlZW4gZm9yZ290dGVuIGluIHRoZSBzdXN0YWluZWQgCmFuZCBjb25jZW50cmF0ZWQgd3JhdGguIE9uZSB3aG8gc3R1ZGllcyBQbGF0ZSBYSUlJLiAKaW4gTWFuIFZpc2libGUgYW5kIGYgbnZpc2libGUgd2lsbCBiZSBhYmxlIHRvIGltYWdlIHRvIApoaW1zZWxmIHRoZSBjb25kaXRpb24gb2YgdGhlIGFzdHJhbCBib2R5IGZyb20gd2hpY2ggdGhlc2UgCmZvcm1zIGFyZSBwcm90cnVkaW5nIDsgYW5kIHN1cmVseSB0aGUgbWVyZSBzaWdodCBvZiB0aGVzZSAKcGljdHVyZXMsIGV2ZW4gd2l0aG91dCBleGFtaW5hdGlvbiwgc2hvdWxkIHByb3ZlIGEgCnBvd2VyZnVsIG9iamVjdC1sZXNzb24gaW4gdGhlIGV2aWwgb2YgeWllbGRpbmcgdG8gdGhlIApwYXNzaW9uIG9mIGFuZ2VyLiAKCkV4cGxvc2l2ZSBBbmdlci7igJQgSW4gRmlnLiAyNCB3ZSBzZWUgYW4gZXhoaWJpdGlvbiAKb2YgYW5nZXIgb2YgYSB0b3RhbGx5IGRpZmZlcmVudCBjaGFyYWN0ZXIuIEhlcmUgaXMgbm8gCnN1c3RhaW5lZCBoYXRyZWQsIGJ1dCBzaW1wbHkgYSB2aWdvcm91cyBleHBsb3Npb24gb2YgCmlycml0YXRpb24uIEl0IGlzIGF0IG9uY2UgZXZpZGVudCB0aGF0IHdoaWxlIHRoZSBjcmVhdG9ycyAKb2YgdGhlIGZvcm1zIHNob3duIGluIEZpZ3MuIDIyIGFuZCAyMyB3ZXJlIGVhY2ggZGlyZWN0LSAKaW5nIHRoZWlyIGlyZSBhZ2FpbnN0IGFuIGluZGl2aWR1YWwsIHRoZSBwZXJzb24gd2hvIGlzIApyZXNwb25zaWJsZSBmb3IgdGhlIGV4cGxvc2lvbiBpbiBGJ2lnLiAyNCBpcyBmb3IgdGhlIG1vbWVudCAKYXQgd2FyIHdpdGggdGhlIHdob2xlIHdvcmxkIHJvdW5kIGhpbS4gSXQgbWF5IHdlbGwgCmV4cHJlc3MgdGhlIHNlbnRpbWVudCBvZiBzb21lIGNob2xlcmljIG9sZCBnZW50bGVtYW4sIAp3aG8gZmVlbHMgaGltc2VsZiBpbnN1bHRlZCBvciBpbXBlcnRpbmVudGx5IHRyZWF0ZWQsIGZvciAKdGhlIGRhc2ggb2Ygb3JhbmdlIGludGVybWluZ2xlZCB3aXRoIHRoZSBzY2FybGV0IGltcGxpZXMgCnRoYXQgaGlzIHByaWRlIGhhcyBiZWVuIHNlcmlvdXNseSBodXJ0IEl0IGlzIGluc3RydWMtIAp0aXZlIHRvIGNvbXBhcmUgdGhlIHJhZGlhdGlvbnMgb2YgdGhpcyBwbGF0ZSB3aXRoIHRob3NlIG9mIApiaWcuIHUuIEhlcmUgd2Ugc2VlIGluZGljYXRlZCBhIHZlcml0YWJsZSBleHBsb3Npb24uIAoKCjU0IAoKClRIT1VHSFQtRk9STVMgCgoKaW5zdGFudGFuZW91cyBpbiBpdHMgcGFzc2luZyBhbmQgaXJyZWd1bGFyIGluIGl0cyBlZmZlY3RzIOKAoiAK4oCiYW5kIHRoZSB2YWNhbnQgY2VudHJlIHNob3dzIHVzIHRoYXQgdGhlIGZlZWxpbmcgdGhhdCAK4oCiY2F1c2VkIGl0IGlzIGFscmVhZHkgYSB0aGluZyBvZiB0aGUgcGFzdCwgYW5kIHRoYXQgbm8gCmZ1cnRoZXIgZm9yY2UgaXMgYmVpbmcgZ2VuZXJhdGVkIEluIEZpZy4gbj4gb24gdGhlIArigKJvdGhlciBoYW5kLCB0aGUgY2VudHJlIGlzIHRoZSBzdHJvbmdlc3QgcGFydCBvZiB0aGUgCnQgb3VnIHQtZm9ybSwgc2hvd2luZyB0aGF0IHRoaXMgaXMgbm90IHRoZSByZXN1bHQgb2YgCm1vbWVudGFyeSBmbGFzaCBvZiBmZWVsaW5nLCBidXQgdGhhdCB0aGVyZSBpcyBhIHN0ZWFkeSAK4pagY29udGludW91cyB1cHdlbGxpbmcgb2YgdGhlIGVuZXJneSwgd2hpbGUgdGhlIHJheXMgc2hvdyAKYnkgdGhlaXIgcXVhbGl0eSBhbmQgbGVuZ3RoIGFuZCB0aGUgZXZlbm5lc3Mgb2YgdGhlaXIgCgp0aGVtIGJVdGzCsG4gdGhlIFN0NmFkaUl5IHN1c3RhaW5lZCBlZmZvbiB3aGljaCBwcm9kdWNlcyAKLiBXYXRjaGZ1bCBhbmQgQW5ncnkgSmVhbG91c3kuIOKAlCBJbiBGaWcuIHdlIHNlZSBhbiAKCmludGVyZXN0aW5nIHRob3VnaCB1bnBsZWFzYW50IHRob3VnaHQtZm9ybSwgJ2l0cyBwZWN1bGlhciAKYnJvd25pc2gtZ3JlZW4gY29sb3VyIGF0IG9uY2UgaW5kaWNhdGVzIHRvIHRoZSBwcmFjdGlzZWQgCuKWoGNsYWlydm95YW50IHRoYXQgaXQgaXMgYW4gZXhwcmVzc2lvbiBvZiBqZWFsb3VzeSwgYW5kIGl0cyAKY3VyaW91cyBzaGFwZSBzaG93cyB0aGUgZWFnZXJuZXNzIHdpdGggd2hpY2ggdGhlIG1hbiAKCmheOl5eIHI2bWFya2FiSWUgdCAKCmZyIGjigJ5lYWQgYXB0bHkgc3ltYm9paXNlcyAqwqsg4oCUIAoKai4gJnRVMFVTLiBhdHRsdHVkZSDCsGYgamVhbG91cyBwZXJzb24sIGtlZW5seSAKCsKrIHNlIFRocnIgKirigJwgMHV0aGF0IFdoJydDaCBoZSBsZeKAnOKAmCBvZiBhbD4gCnRoYXR0ZSBJdCBUVCByICcgXiBkMENTIFNlZSAqIG9yIGleZ2lub3MgCgpjb21tb25lciBvbmUgc2hvd24gaW4gMSBMIF4gCgphbHJlYWR5IG1pbmdsZWQgd2l0aCBhbmlyZXIgSSwgNuKAmSDigJx0IiBKZWFsb3VzPicgaXMgCnRoZSBqZWFsb3VzdiBSIG0gSiA3IGcgMSBtYXkgYmUgbm/Co2VkIHRoYXQgaGVyZSAKCuKAoiAsSiB5IG1lcmVseSBhIHZhZ3VlIGNsb3VkLCB0aG91Z2ggaW50ZXJzb2Vyc3BkIAp3aXRoIHZlcnkgZGVmaW5pdGUgZmxhc2hlcyBvZiBhbm4qIEkgaW50ZXJzcGVyc2VkIAoKdGhvc2UgYnkgd2hvbSBpdCBmYSDigKIgJiByIHJlYWR5IHQwIHN0cmlrZSBhdCAKCmluIEZpZy4gSSwgd2h0ZSB0aGVyZSAnwrAgKiA7IHdoZXJlYXMgCgppdHNlbGZeIGhhcyBhIElyZnRsIAoKb3V0bGluZS4geSBlIGFuZCB2ZWk3IGV4cHJlc3MgaXZlIAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyA1NSAKClNZTVBBVEhZIAoKVmEmdWUgU3ltcGF0aHnigJQgRmlnLiAsOGEgd2UgaGF2ZSBhbm90aGVyIG9mIHRoZSAKdmFndWUgY2xvdWRzLCBidXQgdGhpcyB0aW1lIGl0cyBncmVlbiBjb2xvdXIgc2hvd3MgdXMgCnRoYXQgaXQgaXMgYSBtYW5pZmVzdGF0aW9uIG9mIHRoZSBmZWVsaW5nIG9mIHN5bW9hdGh2IFcuIAoKbWF5IGluZmVyIGZyb20gdGhlIGluZGlzdGluY3QgY2hhcmFjdGVyIG9mIGl0cyBvdXRsaW5lIHRoYXQgCgppdCBpcyBub3QgYSBkZWZpbml0ZSBhbmQgYWN0aXZlIHN5bXBhdGh5LCBzdWNoIGFzIHdvdWxkIAoKaW5zdGFudGx5IHRyYW5zbGF0ZSBpdHNlbGYgZnJvbSB0aG91Z2h0IGludG8gZGVlZCA7IGl0IG1hcmtzIAoKcmF0aGVyIHN1Y2ggYSBnZW5lcmFsIGZlZWxpbmcgb2YgY29tbWlzZXJhdGlvbiBhcyBtaWdodCAKCmNvbWUgb3ZlciBhIG1hbiB3aG8gcmVhZCBhbiBhY2NvdW50IG9mIGEgc2FkIGFjY2lkZW50IAoKb3Igc3Rvb2QgYXQgdGhlIGRvb3Igb2YgYSBob3NwaXRhbCB3YXJkIGxvb2tpbmcgaW4gdURvbiAKdGhlIHBhdGllbnRzLiBzIHAgCgoKU3VkZGVuIEZyaWdodC4gT25lIG9mIHRoZSBtb3N0IHBpdGlmdWwgb2JqZWN0cyBpbiAKbmF0dXJlIGlzIGEgbWFuIG9yIGFuIGFuaW1hbCBpbiBhIGNvbmRpdGlvbiBvZiBhYmplY3QgCmZlYXI7IGFuZCBhbiBleGFtaW5hdGlvbiBvZiBQbGF0ZSBYSVYuIGluIE1hbiBWaXNpYmxlIAphbmQgSW52aXNpYmxlIHNob3dzIHRoYXQgdW5kZXIgc3VjaCBjaXJjdW1zdGFuY2VzIHRoZSAKYXN0cmFsIGJvZHkgcHJlc2VudHMgbm8gYmV0dGVyIGFwcGVhcmFuY2UgdGhhbiB0aGUgCnBoeXNpY2FsLiBXaGVuIGEgbWFu4oCZcyBhc3RyYWwgYm9keSBpcyB0aHVzIGluIGEgc3RhdGUgb2YgCnJlbnppZWQgcGFscGl0YXRpb24sIGl0cyBuYXR1cmFsIHRlbmRlbmN5IGlzIHRvIHRocm93IG9mZiAKYW1vcnBob3VzIGV4cGxvc2l2ZSBmcmFnbWVudHMsIGxpa2UgbWFzc2VzIG9mIHJvY2sgCmh1cmxlZCBvdXQgaW4gYmxhc3RpbmcsIGFzIHdpbGwgYmUgc2VlbiBpbiBGaWcuIDMwIOKAoiBidXQgCndoZW4gYSBwZXJzb24gaXMgbm90IHRlcnJpZmllZCBidXQgc2VyaW91c2x5IHN0YXJ0bGVkLCBhbiAKZWZmZWN0IHN1Y2ggYXMgdGhhdCBzaG93biBpbiBGaWcuICo3IGlzIG9mdGVuIHByb2R1Y2VkLiAKCi4gb25lIG9mIHRoZSBwaG90b2dyYXBocyB0YWtlbiBieSBEciBCYXJhZHVjIG9mIFBhcmlzLCAKaXQgd2FzIG5vdGljZWQgdGhhdCBhbiBlcnVwdGlvbiBvZiBicm9rZW4gY2lyY2xlcyByZXN1bHRlZCAKZnJvbSBzdWRkZW4gYW5ub3lhbmNlLCBhbmQgdGhpcyBvdXRydXNoIG9mIGNyZXNjZW50LSAKc2hhcGVkIGZvcm1zIHNlZW1zIHRvIGJlIG9mIHNvbWV3aGF0IHRoZSBzYW1lIG5hdHVyZSwgCm91Z2ggaW4gdGhpcyBjYXNlIHRoZXJlIGFyZSB0aGUgYWNjb21wYW55aW5nIGxpbmVzIG9mIAptYXR0ZXIgd2hpY2ggZXZlbiBpbmNyZWFzZSB0aGUgZXhwbG9zaXZlIGFwcGVhcmFuY2UuIAoKSXQgaXMgbm90ZXdvcnRoeSB0aGF0IGFsbCB0aGUgY3Jlc2NlbnRzIHRvIHRoZSByaWdodCBoYW5kLCAKCgo1NiAKCgpUSE9VR0hULUZPUk1TIAoKCndoaWNoIG11c3Qgb2J2aW91c2x5IApzaG93IG5vdGhpbmcgYnV0IHRoZSAKbGF0ZXIgdGhlIG1hbiBpcyAKc2hvY2ssIGFuZCBiZWdpbm5pbmcgCmhpbXNlbGYgdG8gYmUgc3RhcnRsZWQsIAp0aGUgbGF0ZXIgY3Jlc2NlbnRzIGFyZSAKbWluZ2xpbmcgb2YgYW5nZXIgYW5kIApwdXJlIHNjYXJsZXQsIHRlbGxpbmcgdXMgCmVudGlyZWx5IG92ZXJjb21lLCBhbmQgCgoKYmVlbiB0aG9zZSBleHBlbGxlZCBlYXJsaWVzdCAKZ3JleSBvZiBmZWFyIDsgYnV0IGEgbW9tZW50IApwYXJ0aWFsbHkgcmVjb3ZlcmluZyBmcm9tIHRoZSAKdG8gZmVlbCBhbmdyeSB0aGF0IGhlIGFsbG93ZWQgCl8gVGhpcyBpcyBzaG93biBieSB0aGUgZmFjdCB0aGF0IApsaW5lZCB3aXRoIHNjYXJsZXQsIGV2aWRlbmNpbmcgdGhlIAp3aGlsZSB0aGUgbGFzdCBjcmVzY2VudCBpcyAKZXZlbiBhbHJlYWR5IHRoZSBmcmlnaHQgaXMgCnRoZSBhbm5veWFuY2UgcmVtYWlucy4gCgoKR1JFRUQgCgoKU2VsZmlzaCBHcmVlZC7igJQgRmlnLiAyOCBnaXZlcyB1cyBhbiBleGFtcGxlIG9mIApzZWxmaXNoIGdyZWVkIGEgZmFyIGxvd2VyIHR5cGUgdGhhbiBGaWcuIDIxIEl0IHdpbGwgYmUgCm5vdGVkIHRoYXQgaGVyZSB0aGVyZSBpLCBub3RoaW4sIHRlbiAnIHNvIEou4oCYICogCmFtYml0aW9uLCBhbmQgaXQgaXMgYWxzbyBldmlkZW50IGZyb20gdGhlIHRpbmdlIG9mIG11ZGR5IApncmVlbiB0aGF0IHRoZSBwZXJzb24gZnJvbSB3aG9tIHRoaXMgdW5wbGVhc2FudCAKCm9yZGVmIHRvIGxQcnRDdDcgLUlTIHFVa2UgcmVhZHkgdDAgZW1wScKweSBkZWNlaXQgaW4gCm9idGFpbiBoZXIgZGVzaXJlLiBXaGlsZSB0aGUgYW1iaXRpb24gb2YgRmlnLiAyMSAKCndhcyBnZW5lcmFsIGluIGl0cyBuYXR1cmUsIHRoZSBjcmF2aW5nIGV4cHJlc3NlZCBpbiBGaWcuIDI4IAoKaXMgb3IgYSBQYXJ0aWN1bGFyIG9iamVjdCB0b3dhcmRzIHdoaWNoIGl0IGlzIHJlYWNoaW5nIG91dCA7IAoKZm9yIGl0IHdpbGwgYmUgdW5kZXJzdG9vZCB0aGF0IHRoaXMgdGhvdWdodC1mb3JtLCBsaWtlIHRoYXQgCgpmIEkzLCByZW1hbXMgYXR0YWNoZWQgdG8gdGhlIGFzdHJhbCBib2R5LCB3aGljaCAKCmxUa1RmTD9QZsKwckhkIHQwIF4gwrBuIHRoQyBsZWZ0IMKwZiB0aEMgcGlDdFVyZS0gQ2stIAoKY29udmVtaW5hLSDCsCAqICoqKiBWR3J5IGZyZXF1ZW50bHkgdG8gYmUgc2VlbiAKCmJvbm5ldCBvIF4gwq4gV8KwbWFuIFdowrAgV2VhcnMgYSBuZXcgZHJlc3Mgb3IgClRoZSA1IHcgNiBTcGVDbGFJSXkgYXR0cmFjdGxWZSBhcnRpY2xlIG9mIGpld2VsbGVyeS4gCgpsZSBKwrBVZyAwcj8gXiBeIGluIEMwbDBVciBhY2NvcmRpbmcgdG8gdGhlIAoKdGhlIDFTfiDCsHIgamVhSW91c3kgd2hpY2ggXiBtaW5nbGVkIHdpdGggCgpzaGFwZSBpbmRpY2F0IFDCsFNTZXNzaW9u4oCZIGJ1dCBhbiBhcHByb3hpbWF0aW9uIHRvIHRoZSAKClAgbWF0ZWQgbSBvdXIgaWxsdXN0cmF0aW9uIHdpbGwgYmUgZm91bmQgaW4gYWxsIApjYXNlcy4gTm90IGluIGZyZW1pdGkgMSAsIGxvdW5hIGluIGF1IAoKUSB5IHBlb3BsZSBnYXRoZXJlZCBpbiBmcm9udCBvZiBhIAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyA1NyAKCnNob3Atd2luZG93IG1heSBiZSBzZWVuIHRodXMgcHJvdHJ1ZGluZyBhc3RyYWwgY3Jhdi0gCmluZ3MgdGhyb3VnaCB0aGUgZ2xhc3MuIAoKR3JlZWQgZm9yIERyaW5rLuKAlGxuIEZpZy4gMjkgd2UgaGF2ZSBhbm90aGVyIAp2YXJpYW50IG9mIHRoZSBzYW1lIHBhc3Npb24sIHBlcmhhcHMgYXQgYW4gZXZlbiBtb3JlIApkZWdyYWRlZCBhbmQgYW5pbWFsIGxldmVsLiBUaGlzIHNwZWNpbWVuIHdhcyB0YWtlbiAKZnJvbSB0aGUgYXN0cmFsIGJvZHkgb2YgYSBtYW4ganVzdCBhcyBoZSBlbnRlcmVkIGF0IHRoZSAKZG9vciBvZiBhIGRyaW5raW5nLXNob3AgOyB0aGUgZXhwZWN0YXRpb24gb2YgYW5kIHRoZSAKa2VlbiBkZXNpcmUgZm9yIHRoZSBsaXF1b3Igd2hpY2ggaGUgd2FzIGFib3V0IHRvIGFic29yYiAKc2hvd2VkIGl0c2VsZiBpbiB0aGUgcHJvamVjdGlvbiBpbiBmcm9udCBvZiBoaW0gb2YgdGhpcyAKdmVyeSB1bnBsZWFzYW50IGFwcGVhcmFuY2UuIE9uY2UgbW9yZSB0aGUgaG9va2VkIApwcm90cnVzaW9ucyBzaG93IHRoZSBjcmF2aW5nLCB3aGlsZSB0aGUgY29sb3VyIGFuZCB0aGUgCmNvYXJzZSBtb3R0bGVkIHRleHR1cmUgc2hvdyB0aGUgbG93IGFuZCBzZW5zdWFsIG5hdHVyZSAKb2YgdGhlIGFwcGV0aXRlLiBTZXh1YWwgZGVzaXJlcyBmcmVxdWVudGx5IHNob3cgdGhlbS0gCnNlbHZlcyBpbiBhbiBleGFjdGx5IHNpbWlsYXIgbWFubmVyLiBNZW4gd2hvIGdpdmUgCmJpcnRoIHRvIGZvcm1zIHN1Y2ggYXMgdGhpcyBhcmUgYXMgeWV0IGJ1dCBsaXR0bGUgcmVtb3ZlZCAKZnJvbSB0aGUgYW5pbWFsIDsgYXMgdGhleSByaXNlIGluIHRoZSBzY2FsZSBvZiBldm9sdXRpb24gCnRoZSBwbGFjZSBvZiB0aGlzIGZvcm0gd2lsbCBncmFkdWFsbHkgYmUgdGFrZW4gYnkgc29tZS0gCnRoaW5nIHJlc2VtYmxpbmcgdGhhdCBzaG93biBpbiBGaWcuIDEzLCBhbmQgdmVyeSAKc2xvd2x5LCBhcyBkZXZlbG9wbWVudCBhZHZhbmNlcywgdGhhdCBpbiB0dXJuIHdpbGwgcGFzcyAKdGhyb3VnaCB0aGUgc3RhZ2VzIGluZGljYXRlZCBpbiBGaWdzLiA5IGFuZCA4LCB1bnRpbCAKYXQgbGFzdCBhbGwgc2VsZmlzaG5lc3MgaXMgY2FzdCBvdXQsIGFuZCB0aGUgZGVzaXJlIHRvIGhhdmUgCmhhcyBiZWVuIHRyYW5zbXV0ZWQgaW50byB0aGUgZGVzaXJlIHRvIGdpdmUsIGFuZCB3ZSBhcnJpdmUgCmF0IHRoZSBzcGxlbmRpZCByZXN1bHRzIHNob3duIGluIEZpZ3MuIDEgMSBhbmQgdG8uIAoKVkFSSU9VUyBFTU9USU9OUyAKCkF0IGEgU2hpcHdyZWNrLiDigJQgVmVyeSBzZXJpb3VzIGlzIHRoZSBwYW5pYyB3aGljaCBoYXMgCm9jY2FzaW9uZWQgdGhlIHZlcnkgaW50ZXJlc3RpbmcgZ3JvdXAgb2YgdGhvdWdodC1mb3JtcyAKd2hpY2ggYXJlIGRlcGljdGVkIGluIEZpZy4gMzAuIFRoZXkgd2VyZSBzZWVuIHNpbXVsLSAKdGFuZW91c2x5LCBhcnJhbmdlZCBleGFjdGx5IGFzIHJlcHJlc2VudGVkLCB0aG91Z2ggaW4gdGhlIAptaWRzdCBvZiBpbmRlc2NyaWJhYmxlIGNvbmZ1c2lvbiwgc28gdGhlaXIgcmVsYXRpdmUgcG9zaXRpb25zIApoYXZlIGJlZW4gcmV0YWluZWQsIHRob3VnaCBpbiBleHBsYWluaW5nIHRoZW0gaXQgd2lsbCBiZSAKCgpUSE9VR0hULUZPUk1TIAoKCmNvbnZlbmllbnQgdG8gdGFrZSB0aGVtIGluIHJldmVyc2Ugb3JkZXIuIGouIG5leSBXZXIgCmNhbGxlZCBmb3J0aCBieSBhIHRlcnJpYmxlIGFjY2lkZW50LCBhbmQgdGhleSBhcmUgaW5zdHJ1Y3RpdmUgCmFzIHNob3dpbmcgaG93IGRpZmZlcmVudGx5IHBlb3BsZSBhcmUgYWZmZWN0ZWQgYnkgc3VkZGVuIAphbmQgc2VyaW91cyBkYW5nZXIuIE9uZSBmb3JtIHNob3dzIG5vdGhpbmcgYnV0IGFuIArigKJlcnVwdGlvbiBvZiB0aGUgbGl2aWQgZ3JleSBvZiBmZWFyLCByaXNpbmcgb3V0IG9mIGEgYmFzaXMgb2YgCgphc3RoaVQgVGheaCBhbmQgXmZvcnR1bmF0ZWx5IHRoZXJlIHdlcmUgbWFueSBzdWNoIAoKc2hvdCByaCBpIGFwcGVhcmFuY2Ugb2YgdGhlIHRob3VnaHQtZm9ybSAKCnNob3dzIHRoZSB2aW9sZW5jZSBhbmQgY29tcGxldGVuZXNzIG9mIHRoZSBleG9Jbko/IAoKd2hpY2ggaW4gdHVybiBpbmRpY2F0ZXMgdFcgLGlsIHUgLCBcICwgQ1hwbG9zaW9uaSAKCmljYXRlcyB0aGF0IHRoZSB3aG9sZSBzb3VsIG9mIHRoYXQgbmVyc25uIAoKd2FzIHBvc3Nlc3NlZCB3aXRoIGhsaW5eICotIFAgMG4gCgp2IC4gbGNuIERpbWQ+IGZyYW50aWMgdGVycm9yLCBhbmQgdGhhdCAKCm92ZXJwb3dlcmluZyBzZW5zZSBvZiBwZXJzb25hbCAsIEogZiBoZSAKCnRpbWUgZXZlcnkgaGlnaGVyIGZlZWxpbmcuIGV4Y2x1ZGVkIGZvciB0aGUgCgrilqBzZWxmLWNvbnRybyohMDExXiByZVByZXNlbnRzIGF0IGllYXN0IGFuIGF0dGVtcHQgYXQgCi4gLCBhbmQgc2hvd3MgdGhlIGF0dGl0dWRlIGFkb290ZWQgfXcgwqsqPiAKCixmIHMgOiBmKiAnIGMgCgoqZSBwb2ludCBvZiBncmV5aXNoLWJsdWUgd2hpY2ggaFNWVuKAnSwsIGQgXiAKdXB3YXJkcyA7IHRoZSBjb2xvdXIgc2hvd3MgaG93IGhlc2l0YXRpbl4gCgpidXQgcGFydGlhbGx5IHN1Y2Nlc3NmdWwsIGFuZCB3ZSBzZVRhaEogVCBeIF7CsFR0IGlzIApQYXJ0IG9mIHRoZSB0aG91Z2h0LWZvcm0gdy5WayDigKIgZnLCsG0gdGhlIElvdiAKCmZhbGxpbmcgZnJhZ21lbnRzLCB0aGF0IHRoZXJwIOKAoiBeIGxycmXCp+KAmXVsYXIgb3V0bGluZSBhbmQgaXRzIAolaHQgaGVyZSBhcyBpbiBpaGUgMFQgIiAiIOKAnCBhbG1vc3QgYXMgbXVjaCAKCmhhcyBoYWQgcHJlc2VuY2Ugb2YgbWluZCBKXnJiIHTigJ0gKiogdGhpcyBXb21hbyAKb3VnaHQgdG8gcHJheSwgYW5kIGlzIHRydmlubyAuIOKWoCByZW1lbWI9dCB0aGF0IHNoZSAKCmZmYWlkIGFzIHNoZSBkb2VzIGl0LCB3aGllUyDigJwgdGhhdCBzaGUgaXMgbm90IAoKLWEgc29sdXRlbHkgbm8gdGhvdWdodCBiZXlvbmQgaW4gwrB0aGVyIGNhc2UgdGhlcmUgd2FzIAoK4pagb3RtbnMgc2hsbCBzb21lIHNlbWJsYW5jZSBvZiBoIFRoZSAKCl4uYnRsbnkgb2YgcmVnYWluaSDCqyBvZiBodW1hbml0eSwgYW5kIHNvbWUgCgrigJhoZSB0aW1lIGNhc3QgYXNpZGUgYWxmIEttbi4gMSB0aGUgb3RoZXIgaGFzIGZvciAK4oCYIGkvUCBeIHJlbW5hbnRzIG9mIGRwXm5lLCAKCnRvIG92ZXJ3aGVsbWluZyBlbW9yaW8gCnJpbHJpbm0gKiBlbW90aW9uLiAKCmNvbnRyYXN0IHRvICxoZSBodW1pbGlhdGluIAoKCklTIGFuIAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyA1OSAKCnNob3duIGluIHRoZXNlIHR3byBmb3JtcyBpcyB0aGUgc3BsZW5kaWQgc3RyZW5ndGggYW5kIApkZWNpc2lvbiBvZiB0aGUgdGhpcmQuIEhlcmUgd2UgaGF2ZSBubyBhbW9ycGhvdXMgbWFzcyAKd2l0aCBxdWl2ZXJpbmcgbGluZXMgYW5kIGV4cGxvc2l2ZSBmcmFnbWVudHMsIGJ1dCBhIApwb3dlcmZ1bCwgY2xlYXItY3V0IGFuZCBkZWZpbml0ZSB0aG91Z2h0LCBvYnZpb3VzbHkgZnVsbCBvZiAKZm9yY2UgYW5kIHJlc29sdXRpb24uIEYnb3IgdGhpcyBpcyB0aGUgdGhvdWdodCBvZiB0aGUgCm9mZmljZXIgaW4gY2hhcmdlIOKAlCB0aGUgbWFuIHJlc3BvbnNpYmxlIGZvciB0aGUgbGl2ZXMgYW5kIAp0aGUgc2FmZXR5IG9mIHRoZSBwYXNzZW5nZXJzLCBhbmQgaGUgcmlzZXMgdG8gdGhlIAplbWVyZ2VuY3kgaW4gYSBtb3N0IHNhdGlzZmFjdG9yeSBtYW5uZXIuIEl0IGRvZXMgbm90IApldmVuIG9jY3VyIHRvIGhpbSB0byBmZWVsIHRoZSBsZWFzdCBzaGFkb3cgb2YgZmVhciA7IGhlIApoYXMgbm8gdGltZSBmb3IgdGhhdC4gVGhvdWdoIHRoZSBzY2FybGV0IG9mIHRoZSBzaGFycCAKcG9pbnQgb2YgaGlzIHdlYXBvbi1saWtlIHRob3VnaHQtZm9ybSBzaG93cyBhbmdlciB0aGF0IAp0aGUgYWNjaWRlbnQgc2hvdWxkIGhhdmUgaGFwcGVuZWQsIHRoZSBib2xkIGN1cnZlIG9mIArilqBvcmFuZ2UgaW1tZWRpYXRlbHkgYWJvdmUgaXQgYmV0b2tlbnMgcGVyZmVjdCBzZWxmLSAKY29uZmlkZW5jZSBhbmQgY2VydGFpbnR5IG9mIGhpcyBwb3dlciB0byBkZWFsIHdpdGggdGhlIApkaWZmaWN1bHR5LiBUaGUgYnJpbGxpYW50IHllbGxvdyBpbXBsaWVzIHRoYXQgaGlzIGludGVsbGVjdCAKaXMgYWxyZWFkeSBhdCB3b3JrIHVwb24gdGhlIHByb2JsZW0sIHdoaWxlIHRoZSBncmVlbiAKd2hpY2ggcnVucyBzaWRlIGJ5IHNpZGUgd2l0aCBpdCBkZW5vdGVzIHRoZSBzeW1wYXRoeSAKd2hpY2ggaGUgZmVlbHMgZm9yIHRob3NlIHdob20gaGUgaW50ZW5kcyB0byBzYXZlLiBBIAp2ZXJ5IHN0cmlraW5nIGFuZCBpbnN0cnVjdGl2ZSBncm91cCBvZiB0aG91Z2h0LWZvcm1zLiAKCk9uIHRoZSBGaXJzdCBOaWdodC4g4oCUIEZpZy4gMzEgaXMgYWxzbyBhbiBpbnRlcmVzdGluZyAKc3BlY2ltZW4g4oCUIHBlcmhhcHMgdW5pcXVlIOKAlCBmb3IgaXQgcmVwcmVzZW50cyB0aGUgdGhvdWdodC0gCmZvcm0gb2YgYW4gYWN0b3Igd2hpbGUgd2FpdGluZyB0byBnbyB1cG9uIHRoZSBzdGFnZSBmb3IgYSAKZmlyc3QtbmlnaHTigJ0gcGVyZm9ybWFuY2UuIFRoZSBicm9hZCBiYW5kIG9mIG9yYW5nZSAKaW4gdGhlIGNlbnRyZSBpcyB2ZXJ5IGNsZWFybHkgZGVmaW5lZCwgYW5kIGlzIHRoZSBleHByZXNzaW9uIArilqBvZiBhIHdlbGwtZm91bmRlZCBzZWxmLWNvbmZpZGVuY2Ug4oCUIHRoZSByZWFsaXNhdGlvbiBvZiBtYW55IApwcmV2aW91cyBzdWNjZXNzZXMsIGFuZCB0aGUgcmVhc29uYWJsZSBleHBlY3RhdGlvbiB0aGF0IApvbiB0aGlzIG9jY2FzaW9uIGFub3RoZXIgd2lsbCBiZSBhZGRlZCB0byB0aGUgbGlzdC4gWWV0IAppbiBzcGl0ZSBvZiB0aGlzIHRoZXJlIGlzIGEgZ29vZCBkZWFsIG9mIHVuYXZvaWRhYmxlIAp1bmNlcnRhaW50eSBhcyB0byBob3cgdGhpcyBuZXcgcGxheSBtYXkgc3RyaWtlIHRoZSBmaWNrbGUgCnB1YmxpYywgYW5kIG9uIHRoZSB3aG9sZSB0aGUgZG91YnQgYW5kIGZlYXIgb3ZlcmJhbGFuY2UgCnRoZSBjZXJ0YWludHkgYW5kIHByaWRlLCBmb3IgdGhlcmUgaXMgbW9yZSBvZiB0aGUgcGFsZSBncmV5IAp0aGFuIG9mIHRoZSBvcmFuZ2UsIGFuZCB0aGUgd2hvbGUgdGhvdWdodC1mb3JtIHZpYnJhdGVzIAoKCjZvIAoKClRIT1VHSFQtRk9STVMgCgoKbGlrZSBhIGZsYWcgZmxhcHBpbmcgaW4gYSBnYWxlIG9mIHdpbmQuIEl0IHdpbGwgYmUgbm90ZWQgCnRoYXQgd2hpbGUgdGhlIG91dGxpbmUgb2YgdGhlIG9yYW5nZSBpcyBleGNlZWRpbmdseSBjbGVhciAKYW5kIGRlZmluaXRlLCB0aGF0IG9mIHRoZSBncmV5IGlzIG11Y2ggdmFndWVyLiAKClRoZSBHYW1ibGVycy4g4oCUIFRoZSBmb3JtcyBzaG93biBpbiBGaWcuIDMyIHdlcmUgCm9ic2VydmVkIHNpbXVsdGFuZW91c2x5IGF0IHRoZSBncmVhdCBnYW1ibGluZy1ob3VzZSBhdCAKTW9udGUgQ2FybG8uIEJvdGggcmVwcmVzZW50IHNvbWUgb2YgdGhlIHdvcnN0IG9mIApodW1hbiBwYXNzaW9ucywgYW5kIHRoZXJlIGlzIGxpdHRsZSB0byBjaG9vc2UgYmV0d2VlbiAKdGhlbSwgYWx0aG91Z2ggdGhleSByZXByZXNlbnQgdGhlIGZlZWxpbmdzIG9mIHRoZSBzdWNjZXNzLSAKdWwgYW5kIHRoZSB1bnN1Y2Nlc3NmdWwgZ2FtYmxlciByZXNwZWN0aXZlbHkuIFRoZSAKbG93ZXIgZm9ybSBoYXMgYSBzdHJvbmcgcmVzZW1ibGFuY2UgdG8gYSBsdXJpZCBhbmQgCmdsZWFtaW5nIGV5ZSwgdGhvdWdoIHRoaXMgbXVzdCBiZSBzaW1wbHkgYSBjb2luY2lkZW5jZSwgCmZvciB3aGVuIHdlIGFuYWx5c2UgaXQgd2UgZmluZCB0aGF0IGl0cyBjb25zdGl0dWVudCBwYXJ0cyAKYW5kIGNvbG91cnMgY2FuIGJlIGFjY291bnRlZCBmb3Igd2l0aG91dCBkaWZmaWN1bHR5LiAKCmx1ZCA3N8Kw4oCdIHRoZSBXaDBsZSB0aDBVP2h0IGlzIOKAnCBpcnJlZ3VsYXIgCmJyb3duIS0gNyA3N+KAnOKAnScgaGVhdmkxKScgbWFya2VkIGJ5IHRoZSBkdWxsOiAKCmRpZSBjZcKrN+KAniEgclMsYW5kIOKAmGhlICcsVmlkIGh1ZSBvZiBmZWFyLSAKCmRlZXAgYW55ZXIgYW5k4oCdIOKAnSDigJ0geX5tYXJrZWQgc2NhcmxldCByaW5nIHNob3dpbmcgCmFlZXAgYW5nZXIgYW5kIHJlc2VudG1lbnQgYXQgdGhlIGhvc3RpbGl0eSBvZiBmYXRlIGFuZCAKCndpdGhpbiB0aGF0IGlzIGEgc2hhcnBseSBvdXRsaW5lZCByaW1VIGtpIDdpICogKiDigJkgZCAKCnRoZSBoYXRyZWQgb2YgdGhlIHJqwqtkIG1hbiBmb3IgdGghIDc3IGVYcHJlc3Npbl4gCgptb25leSBUaGUgbWFuIMKwU2Ugd17CsCBeYXZlIHfCsG4gaGlzLiAKCmV5LiBsbGllbWFuIHdobyBjYW5zZW5kIGZvcnRoIHN1Y2ggYSAKCmZvcm0gYXMgdGhpcyBpcyBzdXJlbHYgLOKAmW4g4oCiICwgdGhvdWdodC0gCgpzdXJlaXkgbSBpbW1pbmVudCBkYW5nZXIsIGZvciBoZSBoYXMgCgpjZW5kZWQgaW50byB0aGUgdmVyeSBkZW90aHMgbmYgQSAKCmEgZ2FtYmxlciBoZSBjYW4gaGF2ZSBubyBuIEwgaSBmIGRlU1BhaXIgJyAKCnRvIHRoYXQgaGUgd291bGQgYmUgYnkgbm8gbWVhbnMgQ1Q/ICogKsKwIFNVU3RhbSBoaW0tIAoKcmVmdWdlIG9mIHN1aWNpZGUsIG9ubHkgbG90VcKwICLigJxUICrCsCAqKiAK4pagbnRvIGFzdHJhbCBsaWZlIHRoYXQgaGUgaGFkIGNoYW4uISEgay0gwrA/IC5hd2Frb25tZyAKd29yc2UgaW5zdGVhZCBvZiBmb3IgdGhlIGIgXiBeIENPbmRsdCpvbiBmwrByIHRoZSAKCmRvZXMsIHNpbmNlIGhpcyBjb3dhcmQgLl5lcuKAmSBhcyAqXmUgc3VpY2lkZSBhbHdheXMgCgpsZXNzIGFuZCBwZWFjZSB3aGlyaCDigJ4gaCDCsGZmIGZyb20gdGhlLiAKClAgYWNlIHdobGNoIHVzdWFJbHkgXiBkZV4gCgoKZXZlbiBtb3JlIGhhcm1mIGkgKiA/IHN0YXRlIG9mIG1pbmQgd2hpY2ggaXMgCgpoYXJtZnVsIGx0cyBlZmZlY14gZm9yIF4gCgoKVEhSRUUgQ0xBU1NFUyBPRiBUSE9VR0hULUZPUk1TIDYxIAoKCmdsb2F0aW5nIG9mIHRoZSBzdWNjZXNzZnVsIGdhbWJsZXIgb3ZlciBoaXMgaWxsLWdvdHRlbiAKZ2Fpbi4gSGVyZSB0aGUgb3V0bGluZSBpcyBwZXJmZWN0bHkgZGVmaW5pdGUsIGFuZCB0aGUgCm1hbuKAmXMgcmVzb2x1dGlvbiB0byBwZXJzaXN0IGluIGhpcyBldmlsIGNvdXJzZSBpcyB1bm1pc3Rhay0gCgoKYWJsZS4gVGhlIGJyb2FkIGJhbmQgb2Ygb3JhbmdlIGluIHRoZSBjZW50cmUgc2hvd3MgCnZlcnkgY2xlYXJseSB0aGF0IGFsdGhvdWdoIHdoZW4gdGhlIG1hbiBsb3NlcyBoZSBtYXkgCmN1cnNlIHRoZSBpbmNvbnN0YW5jeSBvZiBmYXRlLCB3aGVuIGhlIHdpbnMgaGUgYXR0cmlidXRlcyAKCgpoaXMgc3VjY2VzcyBlbnRpcmVseSB0byBoaXMgb3duIHRyYW5zY2VuZGVudCBnZW5pdXMuIApQcm9iYWJseSBoZSBoYXMgaW52ZW50ZWQgc29tZSBzeXN0ZW0gdG8gd2hpY2ggaGUgCnBpbnMgaGlzIGZhaXRoLCBhbmQgb2Ygd2hpY2ggaGUgaXMgaW5vcmRpbmF0ZWx5IHByb3VkLiAKQnV0IGl0IHdpbGwgYmUgbm90aWNlZCB0aGF0IG9uIGVhY2ggc2lkZSBvZiB0aGUgb3JhbmdlIApjb21lcyBhIGhhcmQgbGluZSBvZiBzZWxmaXNobmVzcywgYW5kIHdlIHNlZSBob3cgdGhpcyBpbiAKCgp0dXJuIG1lbHRzIGludG8gYXZhcmljZSBhbmQgYmVjb21lcyBhIG1lcmUgYW5pbWFsIApncmVlZCBvZiBwb3NzZXNzaW9uLCB3aGljaCBpcyBhbHNvIHNvIGNsZWFybHkgZXhwcmVzc2VkIApieSB0aGUgY2xhdy1saWtlIGV4dHJlbWl0aWVzIG9mIHRoZSB0aG91Z2h0LWZvcm0uIAoKQXQgYSBTdHJlZXQgQWNjaWRlbnQuIOKAlCBwIGlnLiAzMyBpcyBpbnN0cnVjdGl2ZSBhcyAKc2hvd2luZyB0aGUgdmFyaW91cyBmb3JtcyB3aGljaCB0aGUgc2FtZSBmZWVsaW5ncyAKbWF5IHRha2UgaW4gZGlmZmVyZW50IGluZGl2aWR1YWxzLiBUaGVzZSB0d28gZXZpZGVuY2VzIAoKCm9mIGVtb3Rpb24gd2VyZSBzZWVuIHNpbXVsdGFuZW91c2x5IGFtb25nIHRoZSBzcGVjLSAKdGF0b3JzIG9mIGEgc3RyZWV0IGFjY2lkZW504oCUIGEgY2FzZSBpbiB3aGljaCBzb21lb25lIAoKCndhcyBrbm9ja2VkIGRvd24gYW5kIHNsaWdodGx5IGluanVyZWQgYnkgYSBwYXNzaW5nIAp2ZWhpY2xlLiBUaGUgcGVyc29ucyB3aG8gZ2VuZXJhdGVkIHRoZXNlIHR3byB0aG91Z2h0LSAKZm9ybXMgd2VyZSBib3RoIGFuaW1hdGVkIGJ5IGFmZmVjdGlvbmF0ZSBpbnRlcmVzdCBpbiAKdGhlIHZpY3RpbSBhbmQgZGVlcCBjb21wYXNzaW9uIGZvciBoaXMgc3VmZmVyaW5nLCBhbmQgCnNvIHRoZWlyIHRob3VnaHQtZm9ybXMgZXhoaWJpdGVkIGV4YWN0bHkgdGhlIHNhbWUgCmNvbG91cnMsIGFsdGhvdWdoIHRoZSBvdXRsaW5lcyBhcmUgYWJzb2x1dGVseSB1bmxpa2UuIApUaGUgb25lIG92ZXIgd2hvbSBmbG9hdHMgdGhhdCB2YWd1ZSBzcGhlcmUgb2YgY2xvdWQgCmlzIHRoaW5raW5nIOKAnFBvb3IgZmVsbG93LCBob3cgc2FkIeKAnSB3aGlsZSBoZSB3aG8gCgoKZ2l2ZXMgYmlydGggdG8gdGhhdCBzaGFycGx5LWRlZmluZWQgZGlzYyBpcyBhbHJlYWR5IHJ1c2gtIAppbmcgZm9yd2FyZCB0byBzZWUgaW4gd2hhdCB3YXkgaGUgY2FuIGJlIG9mIGFzc2lzdGFuY2UuIApUaGUgb25lIGlzIGEgZHJlYW1lciwgdGhvdWdoIG9mIGFjdXRlIHNlbnNpYmlsaXRpZXM7IAp0aGUgb3RoZXIgaXMgYSBtYW4gb2YgYWN0aW9uLiAKCkF0IGEgRnVuZXJhbC4g4oCUIEluIEZpZywgMzQgd2UgaGF2ZSBhbiBleGNlZWRpbmdseSAKCgo2MiAKCgpUSE9VR0hULUZPUk1TIAoKCnN0cmlraW5nIGV4YW1wbGUgb2YgdGhlIGFkdmFudGFnZSBvZiBrbm93bGVkZ2UsIG9mIHRoZSAKZnVuZGFtZW50YWwgY2hhbmdlIHByb2R1Y2VkIGluIHRoZSBtYW7igJlzIGF0dGl0dWRlIG9mIAptaW5kIGJ5IGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZ3JlYXQgbGF3cyBvZiAKbmF0dXJlIHVuZGVyIHdoaWNoIHdlIGxpdmUuIFV0dGVybHkgZGlmZmVyZW50IGFzIHRoZXkgCmFyZSBpbiBldmVyeSByZXNwZWN0IG9mIGNvbG91ciBhbmQgZm9ybSBhbmQgbWVhbmluZyAKdGhlc2UgdHdvIHRob3VnaHQtZm9ybXMgd2VyZSBzZWVuIHNpbXVsdGFuZW91c2x5LCBhbmQgCnRoZXkgcmVwcmVzZW50IHR3byBwb2ludHMgb2YgdmlldyB3aXRoIHJlZ2FyZCB0byB0aGUgCnNhbWUgb2NjdXJyZW5jZS4gVGhleSB3ZXJlIG9ic2VydmVkIGF0IGEgZnVuZXJhbCAKYW5kIHRoZXkgZXhoaWJpdCB0aGUgZmVlbGluZ3MgZXZva2VkIGluIHRoZSBtaW5kcyBvZiAKdHdvIG9mIHRoZSAibW91cm5lcnMiIGJ5IHRoZSBjb250ZW1wbGF0aW9uIG9mIGRlYXRoLiAKCmUgdGhpbmtlcnMgc3Rvb2QgaW4gdGhlIHNhbWUgcmVsYXRpb24gdG8gdGhlIGRlYWQgCm1hbiwgYnV0IHdoaWxlIG9uZSBvZiB0aGVtIHdhcyBzdGlsbCBzdGVlcGVkIGluIHRoZSAKCi4gZW4kZSBJZ27CsHJhbmNlIHdpdGggcmVTYXJkIHRvIHN1cGVyLXBoeXNpY2FsIGxpZmUgd2hpY2ggCmlzIHNvIHBhaW5mdWxseSBjb21tb24gaW4gdGhlIHByZXNlbnQgZGF5LCB0aGUgb3RoZXIgaGFkIApoZSBpbmVzdGltYWJsZSBhZHZhbnRhZ2Ugb2YgdGhlIGxpZ2h0IG9mIFRoZW9zb3BoeS4gCgpidXQgbnJvZm8wXiDCsGYgdGhDIGbCsHJtZXIgVyBeIGV4UHJlc3NlZCBub3RpbmcgCnRoIFAgwrBVbmtkIGRlcHJlc3Npb27igJkgZmVhciBhbmQgc2VsZmlzaG5lc3MuIFRoZSBmYWN0IAoKaW4gdGggZWEtIGEgYVBQcm9hY2hlZCBzbyBuZWFyIGhhcyBldmlkZW50bHkgZXZva2VkIAp0aGUgbWluZCBvZiB0aGUgbW91cm5lciB0aGUgdGhvdWdodCB0aGF0IGl0IG1heSBvbmUgCgp0ZXJyaWJMVCBoJyBtLGFsU8Kw4oCZIGFuZCB0aGUgYW50aWNpcGF0aW9uIG9mIHRoaXMgaXMgdmVyeSAKCnRlcnJpYmxlIHRvIGhpbTsgYnV0IHNpbmNlIGhlIGRvZXMgbm90IGtub3cgd2hhdCBpdCBsIAoKZmVzdGVkIGFyZWFyYVBwcm9wcmlhTVMgXiBmQ2VJaW5nIGlzIG1hbmknIAoKc2Vuc2F0aW9uIFBQcm9QbmF0ZWx5IHZhZ3VlLiBIaXMgb25seSBkZWZpbml0ZSAKCmFuZCB0aCBhICcgXiBlc3BhaXIgYW5kIHRoZSBzZW5zZSBvZiBoaXMgcGVyc29uYWwgbG9zcyAKCmFuZCB0aGVzZSBkZWNsYXJlIHRoZW1zZWx2ZXMgaW4gcmVndWxhciBiYW5kcyBvZiBicm93biAKZ3JleSBhbmQgbGVhZGVuIGdyZXkgd2hpbGUgdGgqIMKnIGYgYiAKCnByb3RydXNpb24sIHdoaWNoIF5eXiI3IAplbmZvbGRzIHRoZSBjb2ZmaW4gO2MgLiA3IGVzY2VuZHMgbXRvIHRoZSBncmF2ZSBhbmQgCgpkZXNpcmUgdG8gZHJhdyB0aGUgZGVhZOKAnSBtdG5iYWNrIiBeIGbCsD9nIFNlJ2ZpU2ggCkl0IGlzIHJlZnJlc2hpbmcgLCAsIGJhY2sgbXRvIHBoeXNpY2FsIGxpZmUuIAoKd29uZGVyZnVsbHkgZGlmZmVyZW50ICrCsCB0aGUgCgpjaXJjdW1zdGFuY2VzIHVwb24gdGhlIG1p4oCeUyBvZiB0aGUgXiB3aOKAnSAKCgpNICUgCgoKJyDilqAgU3QgCgoKZiAKCgpUSFJFRSBDTEFTU0VTIE9GIFRIT1VHSFQtRk9STVMgNjM6IAoKaGVuZHMgdGhlIGZhY3RzIG9mIHRoZSBjYXNlLiBJdCB3aWxsIGJlIG9ic2VydmVkIAoKdGhhdCB0aGUgdHdvIGhhdmUgbm8gc2luZ2xlIGVtb3Rpb24gaW4gY29tbW9uIDs7IAppbiB0aGUgZm9ybWVyIGNhc2UgYWxsIHdhcyBkZXNwb25kZW5jeSBhbmQgaG9ycm9yLCwgCndoaWxlIGluIHRoaXMgY2FzZSB3ZSBmaW5kIG5vbmUgYnV0IHRoZSBoaWdoZXN0IGFuZCAKbW9zdCBiZWF1dGlmdWwgc2VudGltZW50cy4gQXQgdGhlIGJhc2Ugb2YgdGhlIHRob3VnaHQtIApmb3JtIHdlIGZpbmQgYSBmdWxsIGV4cHJlc3Npb24gb2YgZGVlcCBzeW1wYXRoeSwgdGhlIApsaWdodGVyIGdyZWVuIGluZGljYXRpbmcgYXBwcmVjaWF0aW9uIG9mIHRoZSBzdWZmZXJpbmcgCm9mIHRoZSBtb3VybmVycyBhbmQgY29uZG9sZW5jZSB3aXRoIHRoZW0sIHdoaWxlIHRoZSAKYmFuZCBvZiBkZWVwZXIgZ3JlZW4gc2hvd3MgdGhlIGF0dGl0dWRlIG9mIHRoZSB0aGlua2VyIAp0b3dhcmRzIHRoZSBkZWFkIG1hbiBoaW1zZWxmLiBUaGUgZGVlcCByb3NlLWNvbG91ci0gCmV4aGliaXRzIGFmZmVjdGlvbiB0b3dhcmRzIGJvdGggdGhlIGRlYWQgYW5kIHRoZSBsaXZpbmcsIAp3aGlsZSB0aGUgdXBwZXIgcGFydCBvZiB0aGUgY29uZSBhbmQgdGhlIHN0YXJzIHdoaWNoIApyaXNlIGZyb20gaXQgdGVzdGlmeSB0byB0aGUgZmVlbGluZyBhcm91c2VkIHdpdGhpbiB0aGUgCnRoaW5rZXIgYnkgdGhlIGNvbnNpZGVyYXRpb24gb2YgdGhlIHN1YmplY3Qgb2YgZGVhdGgsIHRoZSAKYmx1ZSBleHByZXNzaW5nIGl0cyBkZXZvdGlvbmFsIGFzcGVjdCwgd2hpbGUgdGhlIHZpb2xldCAKc2hvd3MgdGhlIHRob3VnaHQgb2YsIGFuZCB0aGUgcG93ZXIgdG8gcmVzcG9uZCB0bywgYS4gCm5vYmxlIGlkZWFsLCBhbmQgdGhlIGdvbGRlbiBzdGFycyBkZW5vdGUgdGhlIHNwaXJpdHVhbCAKYXNwaXJhdGlvbnMgd2hpY2ggaXRzIGNvbnRlbXBsYXRpb24gY2FsbHMgZm9ydGguIFRoZSAKYmFuZCBvZiBjbGVhciB5ZWxsb3cgd2hpY2ggaXMgc2VlbiBpbiB0aGUgY2VudHJlIG9mIHRoaXMsIAp0aG91Z2h0LWZvcm0gaXMgdmVyeSBzaWduaWZpY2FudCwgYXMgaW5kaWNhdGluZyB0aGF0IHRoZSAKbWFu4oCZcyB3aG9sZSBhdHRpdHVkZSBpcyBiYXNlZCB1cG9uIGFuZCBwcm9tcHRlZCBieSAKaGlzIGludGVsbGVjdHVhbCBjb21wcmVoZW5zaW9uIG9mIHRoZSBzaXR1YXRpb24sIGFuZCB0aGlzIAppcyBhbHNvIHNob3duIGJ5IHRoZSByZWd1bGFyaXR5IG9mIHRoZSBhcnJhbmdlbWVudCBvZiAKdGhlIGNvbG91cnMgYW5kIHRoZSBkZWZpbml0ZW5lc3Mgb2YgdGhlIGxpbmVzIG9mIGRlbWFyLSAKY2F0aW9uIGJldHdlZW4gdGhlbS4gCgpUaGUgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZSB0d28gaWxsdXN0cmF0aW9ucyBzaG93biAKaW4gdGhpcyBwbGF0ZSBpcyBzdXJlbHkgYSB2ZXJ5IGltcHJlc3NpdmUgdGVzdGltb255IHRvIHRoZSAKdmFsdWUgb2YgdGhlIGtub3dsZWRnZSBnaXZlbiBieSB0aGUgdGhlb3NvcGhpY2FsLCAKdGVhY2hpbmcuIFVuZG91YnRlZGx5IHRoaXMga25vd2xlZGdlIG9mIHRoZSB0cnV0aCAKdGFrZXMgYXdheSBhbGwgZmVhciBvZiBkZWF0aCwgYW5kIG1ha2VzIGxpZmUgZWFzaWVyIHRvIGxpdmUgCmJlY2F1c2Ugd2UgdW5kZXJzdGFuZCBpdHMgb2JqZWN0IGFuZCBpdHMgZW5kLCBhbmQgd2UgCnJlYWxpc2UgdGhhdCBkZWF0aCBpcyBhIHBlcmZlY3RseSBuYXR1cmFsIGluY2lkZW50IGluIGl0cy0gCgoKdGhvdWdodC1mb3JtcyAKCgo2NCAKCmNvdXJzZSwgYSBuZWNlc3Nhcnkgc3RlcCBpbiBvdXIgZXZvbHV0aW9uLiBUaGlzIG91by1odCAKYmUgdW5pdmVyc2FsbHkga25vd24gYW1vbmcgQ2hyaXN0aWFuIG5hdGlvbnMgaHV0ID4gKiAKbm90LCBhbmQgdGhlcmVmb3JlIG9uIHRoaXMgcG9pbnQsIGFzIG9uIHNvIG1hbnkgb3RMIOKAnCAKVGhlb3NvcGh5IGhhcyBhIGdvc3BlbCBmb3IgdGhlIFdlc3Rlcm4gd29ybGQuIHJ0IF4gCnRvIGFubm91bmNlIHRoYXQgdGhlcmUgaXMgbm8gZ2xvb215IGltcGVuZXRyYWJsZSBhaHYhISAKYmV5b25kIHRoZSBncmF2ZSwgYnV0IGluc3RlYWQgb2YgdGhhdCBhIHdvcmxkIG9mIGxpZmUgWSBhIAolaCwgd2hpY2ggbWF5IGJlIGtub3duIMKrbyBucyBucyDigJwgCgphbmQgYWNjdXJhdGVseSBhcyB0aGlzIHBoeXNpY2FsIHdvcmxkIGluIHdoaWNoIHdlIGxpdmUgCgoyMSwgdEhlIGczwrDCsG0gYW5kIHRoZSBowrDihKJyIGZvciAKCm91cnNlIHZlcywgbGlrZSBjaGlsZHJlbiB3aG8gZnJpZ2h0ZW4gdGhlbXNlbHZlcyB3aXRoIAoKZyBhc3RseSBzdG9yaWVzLCBhbmQgd2UgaGF2ZSBvbmx5IHRvIHN0dWR5IHRoZSBmYWN0cyBvZiB0aGUgCgpjYXNlLCBhbmQgYWxsIHRoZXNlIGFydGlmaWNpYWwgY2xvdWRzIHdpbGwgcm9sbCBhIHdhdiBhdCBBIAoKV2UgaGF2ZSBhbiBldmlsIGhlcmVkaXR5IGJlaGluZCBKVCYgCgpvdXIgZjUgZlQgbWhlbnRlZCAzMTEga2luZHMgb2YgZnVuZXJlYWwgaG9ycm9ycyBmcm9tJyAKb3JlIGF0aGVycywgYW5kIHNvIHdlIGFyZSB1c2VkIHRvIHRoZW0sIGFuZCB3ZSBkbyAKClRoZSBTZW4gdCB3dGUiXiBeIF4gIn5WICogCmRpZCDigJwgPyAsISIgaCdTIHJlc1BlY3Qgd2lzZXIgKm5uIHdlLCBmb3IgCgosICwgLCBTwrBDSWEgNiBhIHRicyBQaGFudGFzbWFnb3JpYSBvZiBnbG9vbSAKCmEgbXVsdG8gdGhlIGJvZHktUMKrbHkgcGVyaGFwcyBiZWNhdXN0IHRoZXkgCgphIG1ldHRed2hpY3IgbWXigJhoP2QgwrBmIGRpU3AwLWluSyDCsGYgdGg8PSBi4oCYIAoKbWV0aG9kIHdoaWNoIHdhcyBub3Qgb25seSBpbmZpbml0ZWx5IGJldHRlciBmb3IgdGhlIAoKbnRhbiBhbmQgbW9yZSBoZWFsdGh5IGZvciB0aGUgbGl2aW4vIGJtIiAKZGVjYXYgU1XCrmVzdGlvbnMgY29ubmVjdGVkIAoKZGF5c2ZhbmQgXiBoIHRiwqsgCgpPKiBNZWV0aW5nIF4gbcKw4oCc4oSiZCAKCm9mIGEgZ29vZCwgZGVhcmx5LWRlZmluZWQgYW5kOCcgMzUgZydWQ1Mg4oCcUyBhIiDigJwicGwxIAoKd2l0aCBlYWNoIGNvbG91ciB3ZWxsIGQgVHQgZXhQcmVzc2l2ZSBOb3VnaHQtZm9ybSwgCmNuIGNvbG91ciB3ZWxsIG1hcmtlZCBvZmYgZnJRbSB0aGUgbmZ0IOKAmSAKCnJlcHJlc2VudHMgdGhlIGZlZWxpbmcgbyBmYSBtLCB0biAwdGhlcnMtIAoKZnJvbSB3aG9tIGhlIGhhcyBiZWVuIElvbiAqIFVQwrBuIG1lZXRpbjg7IGEgZnJpZW5kIAoKc3VyZmFjZSBvZiB0aGUgRGcgc2VQYXJhdGVkLSBUaGUgY29udmV4IAoKZSBvciB0bmUgY3Jlc2NlbnQgaXMgbmVhcmVzdCB0cnQgLXUgYS0gLCAKCsKrd28gYXJtcyBzdHJldGNoIG91dCB0b3dhcmRzIHRoZSAnIGEiZCAKCgpUSFJFRSBDTEFTU0VTIE9GIFRIT1VHSFQtRk9STVMgNjUgCgppZiB0byBlbWJyYWNlIGhpbS4gVGhlIHJvc2UgY29sb3VyIG5hdHVyYWxseSBiZXRva2VucyAKdGhlIGFmZmVjdGlvbiBmZWx0LCB0aGUgbGlnaHQgZ3JlZW4gc2hvd3MgdGhlIGRlcHRoIG9mIHRoZSAKc3ltcGF0aHkgd2hpY2ggZXhpc3RzLCBhbmQgdGhlIGNsZWFyIHllbGxvdyBpcyBhIHNpZ24gb2YgCnRoZSBpbnRlbGxlY3R1YWwgcGxlYXN1cmUgd2l0aCB3aGljaCB0aGUgY3JlYXRvciBvZiB0aGUgCgp0aG91Z2h0IGFudGljaXBhdGVzIHRoZSByZXZpdmFsIG9mIGRlbGlnaHRmdWwgcmVtaW5pc2NlbmNlcyAKb2YgZGF5cyBsb25nIGdvbmUgYnkuIAoKVGhlIEFwcHJlY2lhdGlvbiBvZiBhIFBpY3R1cmUuIOKAlCBJbiBGaWcuIDM2IHdlIGhhdmUgCmEgc29tZXdoYXQgY29tcGxleCB0aG91Z2h0LWZvcm0gcmVwcmVzZW50aW5nIHRoZSAKZGVsaWdodGVkIGFwcHJlY2lhdGlvbiBvZiBhIGJlYXV0aWZ1bCBwaWN0dXJlIHVwb24gYSAKcmVsaWdpb3VzIHN1YmplY3QuIFRoZSBzdHJvbmcgcHVyZSB5ZWxsb3cgbWFya3MgdGhlIApiZWhvbGRlcuKAmXMgZW50aHVzaWFzdGljIHJlY29nbml0aW9uIG9mIHRoZSB0ZWNobmljYWwgCnNraWxsIG9mIHRoZSBhcnRpc3QsIHdoaWxlIGFsbCB0aGUgb3RoZXIgY29sb3VycyBhcmUgCmV4cHJlc3Npb25zIG9mIHRoZSB2YXJpb3VzIGVtb3Rpb25zIGV2b2tlZCB3aXRoaW4gaGltIApieSB0aGUgZXhhbWluYXRpb24gb2Ygc28gZ2xvcmlvdXMgYSB3b3JrIG9mIGFydC4gR3JlZW4gCnNob3dzIGhpcyBzeW1wYXRoeSB3aXRoIHRoZSBjZW50cmFsIGZpZ3VyZSBpbiB0aGUgCnBpY3R1cmUsIGRlZXAgZGV2b3Rpb24gYXBwZWFycyBub3Qgb25seSBpbiB0aGUgYnJvYWQgCmJhbmQgb2YgYmx1ZSwgYnV0IGFsc28gaW4gdGhlIG91dGxpbmUgb2YgdGhlIGVudGlyZSAKCgpmaWd1cmUsIHdoaWxlIHRoZSB2aW9sZXQgdGVsbHMgdXMgdGhhdCB0aGUgcGljdHVyZSBoYXMgCnJhaXNlZCB0aGUgbWFu4oCZcyB0aG91Z2h0IHRvIHRoZSBjb250ZW1wbGF0aW9uIG9mIGEgCmxvZnR5IGlkZWFsLCBhbmQgaGFzIG1hZGUgaGltLCBhdCBsZWFzdCBmb3IgdGhlIHRpbWUsIApjYXBhYmxlIG9mIHJlc3BvbmRpbmcgdG8gaXQuIFdlIGhhdmUgaGVyZSB0aGUgZmlyc3QgCnNwZWNpbWVuIG9mIGFuIGludGVyZXN0aW5nIGNsYXNzIG9mIHRob3VnaHQtZm9ybXMgb2Ygd2hpY2ggCndlIHNoYWxsIGZpbmQgYWJ1bmRhbnQgZXhhbXBsZXMgbGF0ZXIg4oCUIHRoYXQgaW4gd2hpY2ggCmxpZ2h0IG9mIG9uZSBjb2xvdXIgc2hpbmVzIG91dCB0aHJvdWdoIGEgbmV0d29yayBvZiBsaW5lcyAKb2Ygc29tZSBxdWl0ZSBkaWZmZXJlbnQgaHVlLiBJdCB3aWxsIGJlIG5vdGVkIHRoYXQgaW4gCnRoaXMgY2FzZSBmcm9tIHRoZSBtYXNzIG9mIHZpb2xldCB0aGVyZSByaXNlIG1hbnkgCgoKd2F2eSBsaW5lcyB3aGljaCBmbG93IGxpa2Ugcml2dWxldHMgb3ZlciBhIGdvbGRlbiAKcGxhaW47IGFuZCB0aGlzIG1ha2VzIGl0IGNsZWFyIHRoYXQgdGhlIGxvZnRpZXN0IGFzcGlyYS0gCgpqIDkgZnQgIyAKCnRpb24gaXMgYnkgbm8gbWVhbnMgdmFndWUsIGJ1dCBpcyB0aG9yb3VnaGx5IHN1cHBvcnRlZCAKCgrCsHkgYW4gaW1laWllY2l1YWkgZ3Jhc3AgCmNvbXByZWhlbnNpb24gb2YgdGhlIG1ldGhvZCAKCgpzaXR1YXRpb24gCmJ5IHdoaWNoIGl0IAoKCjY2IAoKClRIT1VHSFQtRk9STVMgCgoKRk9STVMgU0VFTiBJTiBUSE9TRSBNRURJVEFUSU5HIAoKU3ltcGF0aHkgYW5kIExvdmUgZm9yIGFsbC4g4oCUIEhpdGhlcnRvIHdlIGhhdmUgYmVlbiAKZGVhbGluZyBjaGllZmx5IHdpdGggZm9ybXMgd2hpY2ggYXJlIHRoZSBleHByZXNzaW9uIG9mIAplbW90aW9uLCBvciBvZiBzdWNoIHRob3VnaHQgYXMgaXMgYXJvdXNlZCB3aXRoaW4gdGhlIG1pbmQgCmJ5IGV4dGVybmFsIGNpcmN1bXN0YW5jZXMuIFdlIGhhdmUgbm93IHRvIGNvbnNpZGVyIApzb21lIG9mIHRob3NlIGNhdXNlZCBieSB0aG91Z2h0cyB3aGljaCBhcmlzZSBmcm9tIHdpdGhpbiAKLSDigJQgZm9ybXMgZ2VuZXJhdGVkIGR1cmluZyBtZWRpdGF0aW9uIOKAlCBlYWNoIGJlaW5nIHRoZSAKZWZmZWN0IHByb2R1Y2VkIGJ5IGEgY29uc2Npb3VzIGVmZm9ydCBvbiB0aGUgcGFydCBvZiAKdGhlIHRoaW5rZXIgdG8gZm9ybSBhIGNlcnRhaW4gY29uY2VwdGlvbiwgb3IgdG8gcHV0IGhpbXNlbGYgCmludG8gYSBjZXJ0YWluIGF0dGl0dWRlLiBOYXR1cmFsbHkgc3VjaCB0aG91Z2h0cyBhcmUgCmRlZmluaXRlLCBmb3IgdGhlIG1hbiB3aG8gdHJhaW5zIGhpbXNlbGYgaW4gdGhpcyB3YXkgCmxlYXJucyBob3cgdG8gdGhpbmsgd2l0aCBjbGVhcm5lc3MgYW5kIHByZWNpc2lvbiwgYW5kIAp0aGUgZGV2ZWxvcG1lbnQgb2YgaGlzIHBvd2VyIGluIHRoaXMgZGlyZWN0aW9uIHNob3dzIAppdHNlbGYgaW4gdGhlIGJlYXV0eSBhbmQgcmVndWxhcml0eSBvZiB0aGUgc2hhcGVzIHByb2R1Y2VkLiAKSW4gdGhpcyBjYXNlIHdlIGhhdmUgdGhlIHJlc3VsdCBvZiBhbiBlbmRlYXZvdXIgb24gdGhlIApwYXJ0IG9mIHRoZSB0aGlua2VyIHRvIHB1dCBoaW1zZWxmIGludG8gYW4gYXR0aXR1ZGUgb2YgCnN5bXBhdGh5IGFuZCBsb3ZlIHRvd2FyZHMgYWxsIG1hbmtpbmQsIGFuZCB0aHVzIHdlIApoYXZlIGEgc2VyaWVzIG9mIGdyYWNlZnVsIGxpbmVzIG9mIHRoZSBsdW1pbm91cyBncmVlbiBvZiAKc3ltcGF0aHkgd2l0aCB0aGUgc3Ryb25nIHJvc2VhdGUgZ2xvdyBvZiBhZmZlY3Rpb24gCnNoaW5pbmcgb3V0IGJldHdlZW4gdGhlbSAoRmlnLiAzNykuIFRoZSBsaW5lcyBhcmUgc3RpbGwgCnN1ZmZpY2llbnRseSBicm9hZCBhbmQgd2lkZSBhcGFydCB0byBiZSBlYXNpbHkgZHJhd24gOyBidXQgCmluIHNvbWUgb2YgdGhlIGhpZ2hlciBleGFtcGxlcyBvZiB0aG91Z2h0LWZvcm1zIG9mIHRoaXMgCnR5cGUgdGhlIGxpbmVzIGFyZSBzbyBmaW5lIGFuZCBzbyBjbG9zZSB0aGF0IG5vIGh1bWFuIApoYW5kIGNhbiByZXByZXNlbnQgdGhlbSBhcyB0aGV5IHJlYWxseSBhcmUuIFRoZSBvdXRsaW5lIApvZiB0aGlzIHRob3VnaHQtZm9ybSBpcyB0aGF0IG9mIGEgbGVhZiwgeWV0IGl0cyBzaGFwZSBhbmQgCnRoZSBjdXJ2ZSBvZiBpdHMgbGluZXMgYXJlIG1vcmUgc3VnZ2VzdGl2ZSBvZiBhIGNlcnRhaW4gCmtpbmQgb2Ygc2hlbGwsIHNvIHRoYXQgdGhpcyBpcyBhbm90aGVyIGV4YW1wbGUgb2YgdGhlIAphcHByb3hpbWF0aW9uIHRvIGZvcm1zIHNlZW4gaW4gcGh5c2ljYWwgbmF0dXJlIHdoaWNoIAp3ZSBub3RlZCBpbiBjb21tZW50aW5nIHVwb24gRmlnLiAxIDYuIAoKQW4gQXNwaXJhdGlvbiB0byBFbmZvbGQgYWxsLiDigJQgSW4gRmlnLiAzOCB3ZSBoYXZlIAphIGZhciBtb3JlIGRldmVsb3BlZCBleGFtcGxlIG9mIHRoZSBzYW1lIHR5cGUuIFRoaXMgCgoKVEhSRUUgQ0xBU1NFUyBPRiBUSE9VR0hULUZPUk1TIDYgciAKCmZvcm0gd2FzIGdlbmVyYXRlZCBieSBvbmUgd2hvIHdhcyB0cnlpbmcsIHdoaWxlIHNpdHRpbmcgCmluIG1lZGl0YXRpb24sIHRvIGZpbGwgaGlzIG1pbmQgd2l0aCBhbiBhc3BpcmF0aW9uIHRvIGVuZm9sZCAKYWxsIG1hbmtpbmQgaW4gb3JkZXIgdG8gZHJhdyB0aGVtIHVwd2FyZCB0b3dhcmRzIHRoZSAKaGlnaCBpZGVhbCB3aGljaCBzaG9uZSBzbyBjbGVhcmx5IGJlZm9yZSBoaXMgZXllcy4gClRoZXJlZm9yZSBpdCBpcyB0aGF0IHRoZSBmb3JtIHdoaWNoIGhlIHByb2R1Y2VzIHNlZW1zIAp0byBydXNoIG91dCBmcm9tIGhpbSwgdG8gY3VydmUgcm91bmQgdXBvbiBpdHNlbGYsIGFuZCB0byAKcmV0dXJuIHRvIGl0cyBiYXNlIDsgdGhlcmVmb3JlIGl0IGlzIHRoYXQgdGhlIG1hcnZlbGxvdXNseSAKZmluZSBsaW5lcyBhcmUgZHJhd24gaW4gbG92ZWx5IGx1bWlub3VzIHZpb2xldCwgYW5kIHRoYXQgCmZyb20gd2l0aGluIHRoZSBmb3JtIHRoZXJlIHNoaW5lcyBvdXQgYSBnbG9yaW91cyBnb2xkZW4gCmxpZ2h0IHdoaWNoIGl0IGlzIHVuZm9ydHVuYXRlbHkgcXVpdGUgaW1wb3NzaWJsZSB0byByZS0gCnByb2R1Y2UuIEZvciB0aGUgdHJ1dGggaXMgdGhhdCBhbGwgdGhlc2UgYXBwYXJlbnRseSAKaW50cmljYXRlIGxpbmVzIGFyZSBpbiByZWFsaXR5IG9ubHkgb25lIGxpbmUgY2lyY2xpbmcgcm91bmQgCnRoZSBmb3JtIGFnYWluIGFuZCBhZ2FpbiB3aXRoIHVud2VhcmllZCBwYXRpZW5jZSBhbmQgCndvbmRlcmZ1bCBhY2N1cmFjeS4gSXQgaXMgc2NhcmNlbHkgcG9zc2libGUgdGhhdCBhbnkgCmh1bWFuIGhhbmQgY291bGQgbWFrZSBzdWNoIGEgZHJhd2luZyBhcyB0aGlzIG9uIHRoaXMgCnNjYWxlLCBhbmQgaW4gYW55IGNhc2UgdGhlIGVmZmVjdCBvZiBpdHMgY29sb3VycyBjb3VsZCBub3QgCmJlIHNob3duLCBmb3IgaXQgd2lsbCBiZSBzZWVuIGJ5IGV4cGVyaW1lbnQgdGhhdCBpZiBhbiAKYXR0ZW1wdCBiZSBtYWRlIHRvIGRyYXcgZmluZSB2aW9sZXQgbGluZXMgY2xvc2UgdG9nZXRoZXIgCnVwb24gYSB5ZWxsb3cgYmFja2dyb3VuZCBhIGdyZXkgZWZmZWN0IGF0IG9uY2UgYXBwZWFycywgCmFuZCBhbGwgbGlrZW5lc3MgdG8gdGhlIG9yaWdpbmFsIGlzIGRlc3Ryb3llZC4gQnV0IHdoYXQgCmNhbm5vdCBiZSBkb25lIGJ5IGhhbmQgbWF5IHNvbWV0aW1lcyBiZSBhY2hpZXZlZCBieSAKdGhlIHN1cGVyaW9yIGFjY3VyYWN5IGFuZCBkZWxpY2FjeSBvZiBhIG1hY2hpbmUsIGFuZCBpdCAKaXMgaW4gdGhpcyB3YXkgdGhhdCB0aGUgZHJhd2luZyB3YXMgbWFkZSBmcm9tIHdoaWNoIApvdXIgaWxsdXN0cmF0aW9uIGlzIHJlcHJvZHVjZWQsIOKAlCB3aXRoIHNvbWUgYXR0ZW1wdCB0byAKcmVwcmVzZW50IHRoZSBjb2xvdXIgZWZmZWN0IGFzIHdlbGwgYXMgdGhlIHdvbmRlcmZ1bCAKZGVsaWNhY3kgb2YgdGhlIGxpbmVzIGFuZCBjdXJ2ZXMuIAoKSW4gdGhlIFNpeCBEaXJlY3Rpb25zLiDigJQgVGhlIGZvcm0gcmVwcmVzZW50ZWQgaW4gRmlnLiAKMzkgaXMgdGhlIHJlc3VsdCBvZiBhbm90aGVyIGVuZGVhdm91ciB0byBleHRlbmQgbG92ZSAKYW5kIHN5bXBhdGh5IGluIGFsbCBkaXJlY3Rpb25zIOKAlCBhbiBlZmZvcnQgYWxtb3N0IHByZWNpc2VseSAKc2ltaWxhciB0byB0aGF0IHdoaWNoIGdhdmUgYmlydGggdG8gRmlnLiAzNywgdGhvdWdoIHRoZSAKZWZmZWN0IHNlZW1zIHNvIGRpZmZlcmVudC4gVGhlIHJlYXNvbnMgZm9yIHRoaXMgdmFyaWV0eSAKYW5kIGZvciB0aGUgY3VyaW91cyBzaGFwZSB0YWtlbiBpbiB0aGlzIGNhc2UgY29uc3RpdHV0ZSBhIAoKClRIT1VHSFQtRk9STVMgCgoKdmVyeSBpbnRlcmVzdGluZyBpbGx1c3RyYXRpb24gb2YgdGhlIHdheSBpbiB3aGljaCB0aG91Z2h0LSAKZm9ybXMgZ3Jvdy4gSXQgd2lsbCBiZSBzZWVuIHRoYXQgaW4gdGhpcyBpbnN0YW5jZSB0aGUgCnRoaW5rZXIgZGlzcGxheXMgY29uc2lkZXJhYmxlIGRldm90aW9uYWwgZmVlbGluZywgYW5kIApoYXMgYWxzbyBtYWRlIGFuIGludGVsbGVjdHVhbCBlZmZvcnQgdG8gZ3Jhc3AgdGhlIGNvbi0gCmRpdGlvbnMgbmVjZXNzYXJ5IGZvciB0aGUgcmVhbGlzYXRpb24gb2YgaGlzIHdpc2hlcywgYW5kIAp0aGUgYmx1ZSBhbmQgeWVsbG93IGNvbG91cnMgcmVtYWluIGFzIGV2aWRlbmNlIG9mIHRoaXMuIApPcmlnaW5hbGx5IHRoaXMgdGhvdWdodC1mb3JtIHdhcyBjaXJjdWxhciwgYW5kIHRoZSAKZG9taW5hbnQgaWRlYSBldmlkZW50bHkgd2FzIHRoYXQgdGhlIGdyZWVuIG9mIHN5bXBhdGh5IApzaG91bGQgYmUgdXBvbiB0aGUgb3V0c2lkZSwgZmFjaW5nIGluIGFsbCBkaXJlY3Rpb25zLCBhcyAKaXQgd2VyZSwgYW5kIHRoYXQgbG92ZSBzaG91bGQgbGllIGF0IHRoZSBjZW50cmUgYW5kIGhlYXJ0IAoKCuKAom9mIHRoZSB0aG91Z2h0IGFuZCBkaXJlY3QgaXRzIG91dGdvaW5nIGVuZXJnaWVzLiBCdXQgCnRoZSBtYWtlciBvZiB0aGlzIHRob3VnaHQtZm9ybSBoYWQgYmVlbiByZWFkaW5nIEhpbmR1IApib29rcywgYW5kIGhpcyBtb2RlcyBvZiB0aG91Z2h0IGhhZCBiZWVuIGdyZWF0bHkgaW4tIApmbHVlbmNlZCBieSB0aGVtLiBTdHVkZW50cyBvZiBPcmllbnRhbCBsaXRlcmF0dXJlIHdpbGwgCmJlIGF3YXJlIHRoYXQgdGhlIEhpbmR1IHNwZWFrcywgbm90IG9mIGZvdXIgZGlyZWN0aW9ucyAKe25vcnRoLCBlYXN0LCBzb3V0aCwgYW5kIHdlc3QpLCBhcyB3ZSBkbywgYnV0IGFsd2F5cyBvZiAKc2l4LCBzaW5jZSBoZSB2ZXJ5IHNlbnNpYmx5IGluY2x1ZGVzIHRoZSB6ZW5pdGggYW5kIHRoZSAKCgpuYWRpci4gT3VyIGZyaWVuZCB3YXMgaW1idWVkIGZyb20gaGlzIHJlYWRpbmcgd2l0aCAKdGhlIGlkZWEgdGhhdCBoZSBzaG91bGQgcG91ciBmb3J0aCBoaXMgbG92ZSBhbmQgc3ltcGF0aHkgCmluIHRoZSBzaXggZGlyZWN0aW9ucyA7IGJ1dCBzaW5jZSBoZSBkaWQgbm90IGFjY3VyYXRlbHkgCnVuZGVyc3RhbmQgd2hhdCB0aGUgc2l4IGRpcmVjdGlvbnMgYXJlLCBoZSBkaXJlY3RlZCBoaXMgCnN0cmVhbSBvZiBhZmZlY3Rpb24gdG93YXJkcyBzaXggZXF1aWRpc3RhbnQgcG9pbnRzIGluIGhpcyAKY2lyY2xlLiBUaGUgb3V0cnVzaGluZyBzdHJlYW1zIGFsdGVyZWQgdGhlIHNoYXBlIG9mIAp0aGUgb3V0bHlpbmcgbGluZXMgd2hpY2ggaGUgaGFkIGFscmVhZHkgYnVpbHQgdXAsIGFuZCBzbyAKaW5zdGVhZCBvZiBoYXZpbmcgYSBjaXJjbGUgYXMgYSBzZWN0aW9uIG9mIGhpcyB0aG91Z2h0LSAKZm9ybSwgd2UgaGF2ZSB0aGlzIGN1cmlvdXMgaGV4YWdvbiB3aXRoIGl0cyBpbndhcmQtIApjdXJ2bWcgc2lkZXMuIFdlIHNlZSB0aHVzIGhvdyBmYWl0aGZ1bGx5IGV2ZXJ5IApvdWcgdC1mb3JtIHJlY29yZHMgdGhlIGV4YWN0IHByb2Nlc3Mgb2YgaXRzIHVwYnVpbGRpbmcsIAplZ2lzIGVyaW5nIGluZWZmYWNlYWJseSBldmVuIHRoZSBlcnJvcnMgb2YgaXRzIGNvbnN0cnVjdGlvbi4gCkFuIEludGVsbGVjdHVhbCBDb25jZXB0aW9uIG9mIENvc21pYyBPcmRlci4tIEluIEZpZy4gCgp0IHRlbFdyIGVmZkdDdCDCsGYgYW4gYXR0ZWnCu1DigJggdG8gYXR0YWluIGFuIAoKdWEgY29uY2VwdGlvbiBvZiBjb3NtaWMgb3JkZXIuIFRoZSB0aGlua2VyIAoKCncgCgpjSCAKCgpUSFJFRSBDTEFTU0VTIE9GIFRIT1VHSFQtRk9STVMgNjkgCgp3YXMgb2J2aW91c2x5IGEgVGhlb3NvcGhpc3QsIGFuZCBpdCB3aWxsIGJlIHNlZW4gdGhhdCAKd2hlbiBoZSBlbmRlYXZvdXJzIHRvIHRoaW5rIG9mIHRoZSBhY3Rpb24gb2Ygc3Bpcml0IHVwb24gCm1hdHRlciBoZSBpbnN0aW5jdGl2ZWx5IGZvbGxvd3MgdGhlIHNhbWUgbGluZSBvZiBzeW1ib2xpc20sIAphcyB0aGF0IGRlcGljdGVkIGluIHRoZSB3ZWxsLWtub3duIHNlYWwgb2YgdGhlIFNvY2lldHkuIApIZXJlIHdlIGhhdmUgYW4gdXB3YXJkLXBvaW50aW5nIHRyaWFuZ2xlLCBzaWduaWZ5aW5nIAp0aGUgdGhyZWVmb2xkIGFzcGVjdCBvZiB0aGUgU3Bpcml0LCBpbnRlcmxhY2VkIHdpdGggdGhlLSAKZG93bndhcmQtcG9pbnRpbmcgdHJpYW5nbGUsIHdoaWNoIGluZGljYXRlcyBtYXR0ZXIgd2l0aCAKaXRzIHRocmVlIGluaGVyZW50IHF1YWxpdGllcy4gVXN1YWxseSB3ZSByZXByZXNlbnQgdGhlIAp1cHdhcmQgdHJpYW5nbGUgaW4gd2hpdGUgb3IgZ29sZCwgYW5kIHRoZSBkb3dud2FyZC0gCnBvaW50aW5nIG9uZSBpbiBzb21lIGRhcmtlciBodWUgc3VjaCBhcyBibHVlIG9yIGJsYWNrLCAKYnV0IGl0IGlzIG5vdGV3b3J0aHkgdGhhdCBpbiB0aGlzIGNhc2UgdGhlIHRoaW5rZXIgaXMgc28gCmVudGlyZWx5IG9jY3VwaWVkIHdpdGggdGhlIGludGVsbGVjdHVhbCBlbmRlYXZvdXIsIHRoYXQgCm5vIGNvbG91ciBidXQgeWVsbG93IGlzIGV4aGliaXRlZCB3aXRoaW4gdGhlIGZvcm0uIApUaGVyZSBpcyBubyByb29tIGFzIHlldCBmb3IgZW1vdGlvbnMgb2YgZGV2b3Rpb24sIG9mIAp3b25kZXIsIG9yIG9mIGFkbWlyYXRpb24gOyB0aGUgaWRlYSB3aGljaCBoZSB3aXNoZXMgdG8gCnJlYWxpc2UgZmlsbHMgaGlzIG1pbmQgZW50aXJlbHksIHRvIHRoZSBleGNsdXNpb24gb2YgYWxsIGVsc2UuIApTdGlsbCB0aGUgZGVmaW5pdGVuZXNzIG9mIHRoZSBvdXRsaW5lIGFzIGl0IHN0YW5kcyBvdXQgCmFnYWluc3QgaXRzIGJhY2tncm91bmQgb2YgcmF5cyBzaG93cyB0aGF0IGhlIGhhcyAKYWNoaWV2ZWQgYSBoaWdoIG1lYXN1cmUgb2Ygc3VjY2Vzcy4gCgpUaGUgTG9nb3MgYXMgbWF0aWlmZXN0ZWQgaW4gTWFuLiDigJQgV2UgYXJlIG5vdyAKY29taW5nIHRvIGEgc2VyaWVzIG9mIHRob3VnaHRzIHdoaWNoIGFyZSBhbW9uZyB0aGUgdmVyeSAKaGlnaGVzdCB0aGUgaHVtYW4gbWluZCBjYW4gZm9ybSwgd2hlbiBpbiBtZWRpdGF0aW9uIAp1cG9uIHRoZSBkaXZpbmUgc291cmNlIG9mIGl0cyBiZWluZy4gV2hlbiB0aGUgbWFuIGluIApyZXZlcmVudCBjb250ZW1wbGF0aW9uIHRyaWVzIHRvIHJhaXNlIGhpcyB0aG91Z2h0IHRvLSAKd2FyZHMgdGhlIExvZ29zIG9mIG91ciBzb2xhciBzeXN0ZW0sIGhlIG5hdHVyYWxseSAKbWFrZXMgbm8gYXR0ZW1wdCB0byBpbWFnZSB0byBoaW1zZWxmIHRoYXQgYXVndXN0IEJlaW5nIDsgCm5vciBkb2VzIGhlIHRoaW5rIG9mIEhpbSBhcyBpbiBhbnkgd2F5IHBvc3Nlc3NpbmcgCnN1Y2ggZm9ybSBhcyB3ZSBjYW4gY29tcHJlaGVuZC4gTmV2ZXJ0aGVsZXNzIHN1Y2ggCnRob3VnaHRzIGJ1aWxkIGZvcm1zIGZvciB0aGVtc2VsdmVzIGluIHRoZSBtYXR0ZXIgb2YgdGhlIAptZW50YWwgcGxhbmUgOyBhbmQgaXQgd2lsbCBiZSBvZiBpbnRlcmVzdCBmb3IgdXMgdG8gZXgtIAphbWluZSB0aG9zZSBmb3Jtcy4gSW4gb3VyIGlsbHVzdHJhdGlvbiBpbiBGaWcuIDQxIHdlIApoYXZlIGEgdGhvdWdodCBvZiB0aGUgTG9nb3MgYXMgbWFuaWZlc3RlZCBpbiBtYW7igJ4gCgoKVEhPVUdIVC1GT1JNUyAKCgp3aXRoIHRoZSBkZXZvdGlvbmFsIGFzcGlyYXRpb24gdGhhdCBIZSBtYXkgdGh1cyBiZSAKbWFuaWZlc3RlZCB0aHJvdWdoIHRoZSB0aGlua2VyLiBJdCBpcyB0aGlzIGRldm90aW9uYWwgCmZlZWxpbmcgd2hpY2ggZ2l2ZXMgdGhlIHBhbGUgYmx1ZSB0aW5nZSB0byB0aGUgZml2ZS0gCnBvaW50ZWQgc3RhciwgYW5kIGl0cyBzaGFwZSBpcyBzaWduaWZpY2FudCwgc2luY2UgaXQgaGFzIGJlZW4gCmVtcGxveWVkIGZvciBtYW55IGFnZXMgYXMgYSBzeW1ib2wgb2YgR29kIG1hbmlmZXN0IGluIAptYW4uIFRoZSB0aGlua2VyIG1heSBwZXJoYXBzIGhhdmUgYmVlbiBhIEYgcmVlbWFzb24sIAphbmQgaGlzIGtub3dsZWRnZSBvZiB0aGUgc3ltYm9saXNtIGVtcGxveWVkIGJ5IHRoYXQgCmJvZHkgbWF5IGhhdmUgaGFkIGl0cyBzaGFyZSBpbiB0aGUgc2hhcGluZyBvZiB0aGUgc3Rhci4gCkl0IHdpbGwgYmUgc2VlbiB0aGF0IHRoZSBzdGFyIGlzIHN1cnJvdW5kZWQgYnkgYnJpZ2h0IAp5ZWxsb3cgcmF5cyBzaGluaW5nIG91dCBhbWlkc3QgYSBjbG91ZCBvZiBnbG9yeSwgd2hpY2ggCmRlbm90ZXMgbm90IG9ubHkgdGhlIHJldmVyZW50aWFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIArigKJzdXJwYXNzaW5nIGdsb3J5IG9mIHRoZSBEZWl0eSwgYnV0IGFsc28gYSBkaXN0aW5jdCAKaW50ZWxsZWN0dWFsIGVmZm9ydCBpbiBhZGRpdGlvbiB0byB0aGUgb3V0cG91cmluZyBvZiAKZGV2b3Rpb24uIAoKClRoZSBMb2dvcyBwZXJ2YWRpbmcgYWxsLiDigJQgT3VyIG5leHQgdGhyZWUgRmlndXJlcyBhcmUgCmRldm90ZWQgdG8gdGhlIGVmZm9ydCB0byByZXByZXNlbnQgYSB0aG91Z2h0IG9mIGEgdmVyeSAKaGlnaCB0eXBl4oCUIGFuIGVuZGVhdm91ciB0byB0aGluayBvZiB0aGUgTG9nb3MgYXMgcGVyLSAKdmFkaW5nIGFsbCBuYXR1cmUuIEhlcmUgYWdhaW4sIGFzIGluIEZpZy4gMzgsIGl0IGlzIGltLSAKcG9zc2libGUgdG8gZ2l2ZSBhIGZ1bGwgcmVwcm9kdWN0aW9uLCBhbmQgd2UgbXVzdCBjYWxsIHVwb24gCm91ciByZWFkZXJzIGZvciBhbiBlZmZvcnQgb2YgdGhlIGltYWdpbmF0aW9uIHdoaWNoIHNoYWxsIAp0byBzb21lIGV4dGVudCBzdXBwbGVtZW50IHRoZSBkZWZpY2llbmNpZXMgb2YgdGhlIGFydHMgb2YgCmRyYXdpbmcgYW5kIHByaW50aW5nLiBUaGUgZ29sZGVuIGJhbGwgZGVwaWN0ZWQgaW4gRmlnLiAKNDIgbXVzdCBiZSB0aG91Z2h0IG9mIGFzIGluc2lkZSB0aGUgb3RoZXIgYmFsbCBvZiBkZWxpY2F0ZSAKbGluZXMgKGJsdWUgaW4gY29sb3VyKSB3aGljaCBpcyBkcmF3biBpbiBGaWcuIDQ0LiBBbnkgZWZmb3J0IAp0byBQbGFjZSB0aGUgY29sb3VycyBpbiBzdWNoIGludGltYXRlIGp1eHRhcExpb24gb24gdGhlIApQIHlzaWNhIHAgYW5lIHJlc3VsdHMgc2ltcGx5IGluIHByb2R1Y2luZyBhIGdyZWVuIGJsdXIgCgpJdCAtIC4gSSByICwgciBvZiB0aGUgdGhvdWdodC1mb3JtIGlzIGxvc3QsIAoKaXQgaXMgYXQgSmwgNyAiVDMgwrBmIHRoZSBtYWNoaW5lIGJlZm9yZSBtZW50aW9uZWQgdGhhdCAKCsKraGUgXnJBXnhybjsgdCB0IGFuZCAxLDE2IGRlLGljYWN5IAoKd29uZGVyZnVsICzihKIsIGZyIOKAmSBnaCAsbG5lIFBywrBkdWNlcyBhbGwgdGhlIAoKd29uZGVyZm4gdHJhY2VyeSBvZiBGaWcuIDQ0LCBhbmQgdGhlIGVmZmVjdCBmIApuZXMgbWFraW5jciBhIHNvcnQgb2YgY3Jvc3Mgb2YgbGlnaHQgaXMgCgoKNyAxIAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyAKCmR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZSBjdXJ2ZXMgYXJlIG5vdCByZWFsbHkgY29uY2VudHJpYyAKYWx0aG91Z2ggYXQgZmlyc3Qgc2lnaHQgdGhleSBhcHBlYXIgdG8gYmUgc28uIAoKQW5vdGhlciBDb25jZXB0aW9uLuKAlCBGaWcuIDQ1IGV4aGliaXRzIHRoZSBmb3JtIHByby0gCmR1Y2VkIGJ5IGFub3RoZXIgcGVyc29uIHdoZW4gdHJ5aW5nIHRvIGhvbGQgZXhhY3RseSB0aGUgCnNhbWUgdGhvdWdodC4gSGVyZSBhbHNvIHdlIGhhdmUgYW4gYW1hemluZyBjb21wbGV4aXR5IApvZiBhbG1vc3QgaW5jb25jZWl2YWJseSBkZWxpY2F0ZSBibHVlIGxpbmVzLCBhbmQgaGVyZSBhbHNvIApvdXIgaW1hZ2luYXRpb24gbXVzdCBiZSBjYWxsZWQgdXBvbiB0byBpbnNlcnQgdGhlIGdvbGRlbiAKZ2xvYmUgZnJvbSBGaWcuIDQyLCBzbyB0aGF0IGl0cyBnbG9yeSBtYXkgc2hpbmUgdGhyb3VnaCAKYXQgZXZlcnkgcG9pbnQuIEhlcmUgYWxzbywgYXMgaW4gRmlnLiA0NCwgd2UgaGF2ZSB0aGF0IApjdXJpb3VzIGFuZCBiZWF1dGlmdWwgcGF0dGVybiwgcmVzZW1ibGluZyBzb21ld2hhdCB0aGUgCmRhbWFzY2VuaW5nIG9uIGFuY2llbnQgT3JpZW50YWwgc3dvcmRzLCBvciB0aGF0IHdoaWNoIGlzIApzZWVuIHVwb24gd2F0ZXJlZCBzaWxrIG9yIG1vaXJlIGFudGlxdWUuIFdoZW4gdGhpcyAKZm9ybSBpcyBkcmF3biBieSB0aGUgcGVuZHVsdW0sIHRoZSBwYXR0ZXJuIGlzIG5vdCBpbiBhbnkgCndheSBpbnRlbnRpb25hbGx5IHByb2R1Y2VkLCBidXQgc2ltcGx5IGNvbWVzIGFzIGEgY29uc2UtIApxdWVuY2Ugb2YgdGhlIGNyb3NzaW5nIG9mIHRoZSBpbm51bWVyYWJsZSBtaWNyb3Njb3BpY2FsbHkgCmZpbmUgbGluZXMuIEl0IGlzIGV2aWRlbnQgdGhhdCB0aGUgdGhpbmtlciB3aG8gY3JlYXRlZCAKdGhlIGZvcm0gdXBvbiBGaWcuIDQ0IG11c3QgaGF2ZSBoZWxkIGluIGhpcyBtaW5kIG1vc3QgCnByb21pbmVudGx5IHRoZSB1bml0eSBvZiB0aGUgTG9nb3MsIHdoaWxlIGhlIHdobyBnZW5lci0gCmF0ZWQgdGhlIGZvcm0gaW4gRmlnLiA0NSBoYXMgYXMgY2xlYXJseSBpbiBtaW5kIHRoZSAKc3Vib3JkaW5hdGUgY2VudHJlcyB0aHJvdWdoIHdoaWNoIHRoZSBkaXZpbmUgbGlmZSBwb3VycyAKZm9ydGgsIGFuZCBtYW55IG9mIHRoZXNlIHN1Ym9yZGluYXRlIGNlbnRyZXMgaGF2ZSAKYWNjb3JkaW5nbHkgcmVwcmVzZW50ZWQgdGhlbXNlbHZlcyBpbiB0aGUgdGhvdWdodC0gCmZvcm0uIAoKVGhlIFRocmVlZm9sZCBNYW5pZmVzdGF0aW9uLiDigJQgV2hlbiB0aGUgZm9ybSBlbS0gCnBsb3llZCBpbiBGaWcuIDQ2IHdhcyBtYWRlLCBpdHMgY3JlYXRvciB3YXMgZW5kZWF2b3VyaW5nIAp0byB0aGluayBvZiB0aGUgTG9nb3MgaW4gSGlzIHRocmVlZm9sZCBtYW5pZmVzdGF0aW9uLiAKVGhlIHZhY2FudCBzcGFjZSBpbiB0aGUgY2VudHJlIG9mIHRoZSBmb3JtIHdhcyBhIGJsaW5kaW5nIApnbG93IG9mIHllbGxvdyBsaWdodCwgYW5kIHRoaXMgY2xlYXJseSB0eXBpZmllZCB0aGUgRmlyc3QgCkFzcGVjdCwgd2hpbGUgdGhlIFNlY29uZCB3YXMgc3ltYm9saXNlZCBieSB0aGUgYnJvYWQgCnJpbmcgb2YgY2xvc2VseS1rbml0dGVkIGFuZCBhbG1vc3QgYmV3aWxkZXJpbmcgbGluZXMgd2hpY2ggCnN1cnJvdW5kIHRoaXMgY2VudHJlLCB3aGlsZSB0aGUgVGhpcmQgQXNwZWN0IGlzIHN1Z2dlc3RlZCAKYnkgdGhlIG5hcnJvdyBvdXRlciByaW5nIHdoaWNoIHNlZW1zIG1vcmUgbG9vc2VseSB3b3Zlbi4gCgoKNzIgCgoKVEhPVUdIVC1GT1JNUyAKCgpUaGUgd2hvbGUgZmlndXJlIGlzIHBlcnZhZGVkIGJ5IHRoZSB1c3VhbCBnb2xkZW4gbGlnaHQgCmdsZWFtaW5nIG91dCBiZXR3ZWVuIHRoZSBsaW5lcyBvZiB2aW9sZXQuIAoKVGhlIFNldmVuZm9sZCBNYW5pZmVzdGF0aW9uLiDigJQgSW4gYWxsIHJlbGlnaW9ucyB0aGVyZSAKcmVtYWlucyBzb21lIHRyYWRpdGlvbiBvZiB0aGUgZ3JlYXQgdHJ1dGggdGhhdCB0aGUgTG9nb3MgCm1hbmlmZXN0cyBIaW1zZWxmIHRocm91Z2ggc2V2ZW4gbWlnaHR5IGNoYW5uZWxzLCBvZnRlbiAKcmVnYXJkZWQgYXMgbWlub3IgTG9nb2kgb3IgZ3JlYXQgcGxhbmV0YXJ5IFNwaXJpdHMuIEluIAp0aGUgQ2hyaXN0aWFuIHNjaGVtZSB0aGV5IGFwcGVhciBhcyB0aGUgc2V2ZW4gZ3JlYXQgCmFyY2hhbmdlbHMsIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHNldmVuIHNwaXJpdHMgYmVmb3JlIHRoZSAKdGhyb25lIG9mIEdvZC4gVGhlIGZpZ3VyZSBudW1iZXJlZCA0NyBzaG93cyB0aGUgCnJlc3VsdCBvZiB0aGUgZWZmb3J0IHRvIG1lZGl0YXRlIHVwb24gdGhpcyBtZXRob2Qgb2YgCmRpdmluZSBtYW5pZmVzdGF0aW9uLiBXZSBoYXZlIHRoZSBnb2xkZW4gZ2xvdyBpbiB0aHIqIApjZW50cmUsIGFuZCBhbHNvICh0aG91Z2ggd2l0aCBsZXNzZXIgc3BsZW5kb3VyXiBwZXI0ZGwgCnRoZSBmb3JtLiBUaGUgbGluZSBpcyBibHVlLCBhbmQgaXQgZHJhd3MgYSBzdWNjZXNzaW9uIApvZiBzZXZlbiBncmFjZWZ1bCBhbmQgYWxtb3N0IGZlYXRoZXJsaWtlIGRvdWJsZSB3aW5ncyAKd2luY2ggc3Vycm91bmQgdGhlIGNlbnRyYWwgZ2xvcnkgYW5kIGFyZSBjbGVhcmx5IGludGVuZGVkIAphcyBhIHBhcnQgb2YgaXQuIEFzIHRoZSB0aG91Z2h0IHN0cmVuZ3RoZW5zIGFuZCAKZXhwYW5kcywgdGhlc2UgYmVhdXRpZnVsIHdpbmdzIGNoYW5nZSB0aGVpciBjb2xvdXIgdG8gCnZpbyBldCBhbmQgYmVjb21lIGxpa2UgdGhlIHBldGFscyBvZiBhIGZsb3dlciwgYW5kIG92ZXJsYXAgCgpedGVyIFRoLeKAmeKAnS0zIiBpTXJpQ2F0ZSBiVeKAmCBlZmZlY3RpdmUgCgpkaWUgZm9ybWFkbzE4ICJUICogVCBpbnRlcmVzdGluUyBTbGluPlBeIGludG8gCgpoZSBmb3JtYXRpb24gYW5kIGdyb3d0aCBvZiB0aGVzZSBzaGFwZXMgaW4gCgpJbnRlbGxlY3R1YWwgQXNwaXJhdGlvbi7igJQgVGhlIGZvcm0gZGVwaWN0ZWQgaXIgCsKrIGJlYXJzIGEgY2VydGFpbiByZXNlbWJsYW5jZSB0byB0aGF0IGluIEZpZy4gLDUgCl5kIGZpZCBhcyB0aGF0IHdhcywgdGhpcyBpcyBpbiByZWFsaXR5IGEgZmFyIGhpZ2hsIGFuZCAKCiJtcm90aGV0cnRUZklyIHRoImYg4oCcIAoKKiBk4oCUICogc1BlYXIgb3IgcGVuY2lsIG9mdGhlIEjigJwqIOKAnSBeIAoKd2hpY2ggaW5kaWNhdGVzIGRldm90aW9uIHRvIHRoZSBoaWdoZXN0LSAKCm91dGxpbmVkIGFuZCBzdHJlbmd0aGVuZWQgYnYgISAuID8gYW5kIGzCoyBpcyAKCnRhdGlvbiBvZiB0aGUgbm9ibGVzdCBIZSBsIF4geGNlZWRtZ2x5IGZpbmUgbWFuaWZlcy0gCnRvIC4gLCBub2JpZXN0IGRldmVsb3BtZW50IG9mIGludGVsbGVjdCAKCm4gdGhpbmsgdGh1cyBtdXN0IGFscmVhZHkgaGF2ZSBlbnRlcmVkIAoKClRIUkVFIENMQVNTRVMgT0YgVEhPVUdIVC1GT1JNUyA3MywgCgpvZiBIb2xpbmVzcywgZm9yIGhlIGhhcyBsZWFybnQgaG93IHRvIHVzZSB0aGUgcG93ZXIgb2YgCnRob3VnaHQgdG8gdmVyeSBtaWdodHkgZWZmZWN0LiBJdCB3aWxsIGJlIG5vdGVkIHRoYXQgaW4gCmJvdGggdGhlIGNvbG91cnMgdGhlcmUgaXMgYSBzdHJvbmcgYWRtaXh0dXJlIG9mIHRoZSB3aGl0ZSAKbGlnaHQgd2hpY2ggYWx3YXlzIGluZGljYXRlcyB1bnVzdWFsIHNwaXJpdHVhbCBwb3dlci4gCgpTdXJlbHkgdGhlIHN0dWR5IG9mIHRoZXNlIHRob3VnaHQtZm9ybXMgc2hvdWxkIGJlIGEgCm1vc3QgaW1wcmVzc2l2ZSBvYmplY3QtbGVzc29uLCBzaW5jZSBmcm9tIGl0IHdlIG1heSBzZWUgCmJvdGggd2hhdCB0byBhdm9pZCBhbmQgd2hhdCB0byBjdWx0aXZhdGUsIGFuZCBtYXkgbGVhcm4gCmJ5IGRlZ3JlZXMgdG8gYXBwcmVjaWF0ZSBob3cgdHJlbWVuZG91cyBpcyBvdXIgcmVzcG9uc2ktIApiaWxpdHkgZm9yIHRoZSBleGVyY2lzZSBvZiB0aGlzIG1pZ2h0eSBwb3dlci4gSW5kZWVkIGl0IAppcyB0ZXJyaWJseSB0cnVlLCBhcyB3ZSBzYWlkIGluIHRoZSBiZWdpbm5pbmcsIHRoYXQgdGhvdWdodHMgCmFyZSB0aGluZ3MsIGFuZCBwdWlzc2FudCB0aGluZ3MgOyBhbmQgaXQgYmVob3ZlcyB1cyB0by0gCnJlbWVtYmVyIHRoYXQgZXZlcnkgb25lIG9mIHVzIGlzIGdlbmVyYXRpbmcgdGhlbSB1bi0gCmNlYXNpbmdseSBuaWdodCBhbmQgZGF5LiBTZWUgaG93IGdyZWF0IGlzIHRoZSBoYXBwaW5lc3MgCnRoaXMga25vd2xlZGdlIGJyaW5ncyB0byB1cywgYW5kIGhvdyBnbG9yaW91c2x5IHdlIGNhbiAKdXRpbGlzZSBpdCB3aGVuIHdlIGtub3cgb2Ygc29tZSBvbmUgaW4gc29ycm93IG9yIGluIApzdWZmZXJpbmcuIE9mdGVuIGNpcmN1bXN0YW5jZXMgYXJpc2Ugd2hpY2ggcHJldmVudCB1cyAKZnJvbSBnaXZpbmcgcGh5c2ljYWwgaGVscCBlaXRoZXIgYnkgd29yZCBvciBkZWVkLCAKaG93ZXZlciBtdWNoIHdlIG1heSBkZXNpcmUgdG8gZG8gc28gOyBidXQgdGhlcmUgaXMgbm8gCmNhc2UgaW4gd2hpY2ggaGVscCBieSB0aG91Z2h0IG1heSBub3QgYmUgZ2l2ZW4sIGFuZCBubyAKY2FzZSBpbiB3aGljaCBpdCBjYW4gZmFpbCB0byBwcm9kdWNlIGEgZGVmaW5pdGUgcmVzdWx0LiBJdCAKbWF5IG9mdGVuIGhhcHBlbiB0aGF0IGF0IHRoZSBtb21lbnQgb3VyIGZyaWVuZCBtYXkgYmUgCnRvbyBlbnRpcmVseSBvY2N1cGllZCB3aXRoIGhpcyBvd24gc3VmZmVyaW5nLCBvciBwZXJoYXBzIAp0b28gbXVjaCBleGNpdGVkLCB0byByZWNlaXZlIGFuZCBhY2NlcHQgYW55IHN1Z2dlc3Rpb24gCmZyb20gd2l0aG91dCwgYnV0IHByZXNlbnRseSBhIHRpbWUgY29tZXMgd2hlbiBvdXIgCnRob3VnaHQtZm9ybSBjYW4gcGVuZXRyYXRlIGFuZCBkaXNjaGFyZ2UgaXRzZWxmLCBhbmQgdGhlbiAKYXNzdXJlZGx5IG91ciBzeW1wYXRoeSB3aWxsIHByb2R1Y2UgaXRzIGR1ZSByZXN1bHQuIEl0IAppcyBpbmRlZWQgdHJ1ZSB0aGF0IHRoZSByZXNwb25zaWJpbGl0eSBvZiB1c2luZyBzdWNoIGEgCnBvd2VyIGlzIGdyZWF0LCB5ZXQgd2Ugc2hvdWxkIG5vdCBzaHJpbmsgZnJvbSBvdXIgZHV0eSAKb24gdGhhdCBhY2NvdW50LiBJdCBpcyBzYWRseSB0cnVlIHRoYXQgdGhlcmUgYXJlIG1hbnkgCm1lbiB3aG8gYXJlIHVuY29uc2Npb3VzbHkgdXNpbmcgdGhlaXIgdGhvdWdodC1wb3dlciAKY2hpZWZseSBmb3IgZXZpbCwgeWV0IHRoaXMgb25seSBtYWtlcyBpdCBhbGwgdGhlIG1vcmUgCm5lY2Vzc2FyeSB0aGF0IHRob3NlIG9mIHVzIHdobyBhcmUgYmVnaW5uaW5nIHRvIHVuZGVyLSAKCgo3NCAKCgpUSE9VR0hULUZPUk1TIAoKCuKAonN0YW5kIGxpZmUgYSBsaXR0bGUgc2hvdWxkIHVzZSBpdCBjb25zY2lvdXNseSwgYW5kIHVzZSBpdCBmb3IgCi5nb29kLiBXZSBoYXZlIGF0IG91ciBjb21tYW5kIGEgbmV2ZXItZmFpbGluZyBjcml0ZXJpb24gOyAKd2UgY2FuIG5ldmVyIG1pc3VzZSB0aGlzIG1pZ2h0eSBwb3dlciBvZiB0aG91Z2h0IGlmIHdlIArigKJlbXBsb3kgaXQgYWx3YXlzIGluIHVuaXNvbiB3aXRoIHRoZSBncmVhdCBkaXZpbmUgc2NoZW1lIArilqBvZiBldm9sdXRpb24sIGFuZCBmb3IgdGhlIHVwbGlmdGluZyBvZiBvdXIgZmVsbG93LW1hbi4gCgoKSGVscGZ1bCBUaG91Z2h0cyAKClRoZSBGaWd1cmVzIG51bWJlcmVkIDQ4IHRvIDU0IHdlcmUgdGhlIHJlc3VsdHMgb2YgCuKWoGEgc3lzdGVtYXRpYyBhdHRlbXB0IHRvIHNlbmQgaGVscGZ1bCB0aG91Z2h0IGJ5IHRoZSAKZnJpZW5kIHdobyBoYXMgZnVybmlzaGVkIHVzIHdpdGggdGhlIHNrZXRjaGVzLiBBIArilqBkZWZpbml0ZSB0aW1lIHdhcyBnaXZlbiBlYWNoIGRheSBhdCBhIGZpeGVkIGhvdXIuIFRoZSAKZm9ybXMgd2VyZSBpbiBzb21lIGNhc2VzIHNlZW4gYnkgdGhlIHRyYW5zbWl0dGVyLCBidXQgCmluIGFsbCBjYXNlcyB3ZXJlIHBlcmNlaXZlZCBieSB0aGUgcmVjaXBpZW50LCB3aG8gaW1tZWRpLSAKYXRlbHkgc2VudCByb3VnaCBza2V0Y2hlcyBvZiB3aGF0IHdhcyBzZWVuIGJ5IHRoZSBuZXh0IAoKcG9zdCB0byB0aGUgdHJhbnNtaXR0ZXIsIHdobyBoYXMga2luZGx5IHN1cHBsaWVkIHRoZSAKZm9sbG93aW5nIG5vdGVzIHdpdGggcmVnYXJkIHRvIHRoZW0gOiAKCuKAnCBJbiB0aGUgY29sb3VyZWQgZHJhd2luZ3MgYXBwZW5kZWQgdGhlIGJsdWUgZmVhdHVyZXMgCmFwcGVhciB0byBoYXZlIHJlcHJlc2VudGVkIHRoZSBtb3JlIGRldm90aW9uYWwgZWxlbWVudCAKbyB0IGUgdGhvdWdodC4gVGhlIHllbGxvdyBmb3JtcyBhY2NvbXBhbmllZCB0aGUgCmVuIGVhdm91ciB0byBjb21tdW5pY2F0ZSBpbnRlbGxlY3R1YWwgZm9ydGl0dWRlLCBvciAKbWVudGFsIHN0cmVuZ3RoIGFuZCBjb3VyYWdlLiBUaGUgcm9zeSBwaW5rIGFwcGVhcmVkIAp3aGVuIHRoZSB0aG91Z2h0IHdhcyBibGVuZGVkIHdpdGggYWZmZWN0aW9uYXRlIHN5bXBhdGh5LiAKSWYgdGhlIHNlbmRlciAoQS4pIGNvdWxkIGZvcm11bGF0ZSBoaXMgdGhvdWdodCBkZWxpYmVyYXRlbHkgCmF0IHRoZSBhcHBvaW50ZWQgdHVuZSwgdGhlIHJlY2VpdmVyIChCLikgd291bGQgcmVwb3J0IAoKbGEgXiBSZ1MtIDQ44oCYIDQ5JyDigJxkIMKr4pagIFRoZSAKCmx1bWlub24sIDEsIG1tVXRlU+KAmSBjb25zdGFudEl5IHN0cmVhbWluZyBpdHMgCgp0YW1ub3VzIHllbGxvdyBtZXNzYWdlICcgdXBvbiBCLiBJZiwgaG93ZXZlciBBIAoKd2FodGludiB1Pzo7LHlkIGRpZmZpY3VsdHktc2F5IAoK4pagZm9ybXMnIGJyb2tlbiBeIAoKYyBzbyBzaSBraSBhbnJsIHAgMSBnIG9iZXMsIG9yIHNoYXBlcywgc3VjaCAKCjUgYiA1MiwgYW5kIEIuIHdvdWxkIHJlbm9ydCB0bHcgLCAKClBvbiB0ZnRlaXIgcmVjZWlwdCBzbyBicm9rZW4gCgoKYXMgCgoKRk9STVMgQlVJTFQgQlkgTVVTSUMgCgoKNzUgCgoKdXAuIEkgbiB0aGlzIHdheSBtYW55IGRldGFpbHMgY291bGQgYmUgY2hlY2tlZCBhbmQgY29tLSAKcGFyZWQgYXMgZnJvbSBvcHBvc2l0ZSBlbmRzIG9mIHRoZSBsaW5lLCBhbmQgdGhlIG5hdHVyZSAKb2YgdGhlIGluZmx1ZW5jZSBjb21tdW5pY2F0ZWQgb2ZmZXJlZCBhbm90aGVyIG1lYW5zIG9mIAp2ZXJpZmljYXRpb24uIFVwb24gb25lIG9jY2FzaW9uIEEuIHdhcyBkaXN0dXJiZWQgaW4gaGlzIAplbmRlYXZvdXIgdG8gc2VuZCBhIHRob3VnaHQgb2YgdGhlIGJsdWUtcGluayBjb25ub3RhdGlvbiwgCmJ5IGEgZmVlbGluZyBvZiBhbnhpZXR5IHRoYXQgdGhlIG5hdHVyZSBvZiB0aGUgcGluayBlbGVtZW50IApzaG91bGQgbm90IGJlIG1pc2FwcHJlaGVuZGVkLiBUaGUgcmVwb3J0IG9mIEIuIHdhcyAKdGhhdCBhIHdlbGwtZGVmaW5lZCBnbG9iZSBhcyBpbiBGaWcuIDU0IHdhcyBmaXJzdCBzZWVuLCBidXQgCnRoYXQgdGhpcyBzdWRkZW5seSBkaXNhcHBlYXJlZCwgYmVpbmcgcmVwbGFjZWQgYnkgYSAKbW92aW5nIHByb2Nlc3Npb24gb2YgbGl0dGxlIGxpZ2h0LWdyZWVuIHRyaWFuZ2xlcywgYXMgaW4gCkZpZy4gNTMuIFRoZXNlIGZldyBkcmF3aW5ncyBnaXZlIGJ1dCBhIHNsaWdodCBpZGVhIG9mIAp0aGUgdmFyaWVkIGZsb3dlci1saWtlIGFuZCBnZW9tZXRyaWMgZm9ybXMgc2Vlbiwgd2hpbGUgCm5laXRoZXIgcGFpbnQgbm9yIGNyYXlvbi13b3JrIHNlZW1zIGNhcGFibGUgb2YgcmVwcmUtIApzZW50aW5nIHRoZSBnbG93aW5nIGJlYXV0eSBvZiB0aGVpciBsaXZpbmcgY29sb3Vycy7igJ0gCgpGb3JtcyBCdWlsdCBieSBNdXNpYyAKCkJlZm9yZSBjbG9zaW5nIHRoaXMgbGl0dGxlIHRyZWF0aXNlIGl0IHdpbGwgcGVyaGFwcyBiZSBvZiAKaW50ZXJlc3QgdG8gb3VyIHJlYWRlcnMgdG8gZ2l2ZSBhIGZldyBleGFtcGxlcyBvZiBhbm90aGVyIAp0eXBlIG9mIGZvcm1zIHVua25vd24gdG8gdGhvc2Ugd2hvIGFyZSBjb25maW5lZCB0byB0aGUgCnBoeXNpY2FsIHNlbnNlcyBhcyB0aGVpciBtZWFucyBvZiBvYnRhaW5pbmcgaW5mb3JtYXRpb24uIApNYW55IHBlb3BsZSBhcmUgYXdhcmUgdGhhdCBzb3VuZCBpcyBhbHdheXMgYXNzb2NpYXRlZCAKd2l0aCBjb2xvdXIg4oCUIHRoYXQgd2hlbiwgZm9yIGV4YW1wbGUsIGEgbXVzaWNhbCBub3RlIGlzIApzb3VuZGVkLCBhIGZsYXNoIG9mIGNvbG91ciBjb3JyZXNwb25kaW5nIHRvIGl0IG1heSBiZSAKc2VlbiBieSB0aG9zZSB3aG9zZSBmaW5lciBzZW5zZXMgYXJlIGFscmVhZHkgdG8gc29tZSAKZXh0ZW50IGRldmVsb3BlZC4gSXQgc2VlbXMgbm90IHRvIGJlIHNvIGdlbmVyYWxseSAKa25vd24gdGhhdCBzb3VuZCBwcm9kdWNlcyBmb3JtIGFzIHdlbGwgYXMgY29sb3VyLCBhbmQgCnRoYXQgZXZlcnkgcGllY2Ugb2YgbXVzaWMgbGVhdmVzIGJlaGluZCBpdCBhbiBpbXByZXNzaW9uIApvZiB0aGlzIG5hdHVyZSwgd2hpY2ggcGVyc2lzdHMgZm9yIHNvbWUgY29uc2lkZXJhYmxlIHRpbWUsIAphbmQgaXMgY2xlYXJseSB2aXNpYmxlIGFuZCBpbnRlbGxpZ2libGUgdG8gdGhvc2Ugd2hvIGhhdmUgCmV5ZXMgdG8gc2VlLiBTdWNoIGEgc2hhcGUgaXMgcGVyaGFwcyBub3QgdGVjaG5pY2FsbHkgYSAKdGhvdWdodC1mb3JtIOKAlCB1bmxlc3MgaW5kZWVkIHdlIHRha2UgaXQsIGFzIHdlIHdlbGwgbWF5LCAKCgpqNiAKCgpUSE9VR0hULUZPUk1TIAoKCmFzIAoKCuKAlCB0aGUgcmVzdWx0IG9mIHRoZSB0aG91Z2h0IG9mIHRoZSBjb21wb3NlciBleHByZXNzZWQgCgpieSBtZWFucyBvZiB0aGUgc2tpbGwgb2YgdGhlIG11c2ljaWFuIHRocm91Z2ggaGlzIAppbnN0cnVtZW50LiAKClNvbWUgc3VjaCBmb3JtcyBhcmUgdmVyeSBzdHJpa2luZyBhbmQgaW1wcmVzc2l2ZSwgCmFuZCBuYXR1cmFsbHkgdGhlaXIgdmFyaWV0eSBpcyBpbmZpbml0ZS4gRWFjaCBjbGFzcyBvZiAKbXVzaWMgaGFzIGl0cyBvd24gdHlwZSBvZiBmb3JtLCBhbmQgdGhlIHN0eWxlIG9mIHRoZSAKY29tcG9zZXIgc2hvd3MgYXMgY2xlYXJseSBpbiB0aGUgZm9ybSB3aGljaCBoaXMgbXVzaWMgCmJ1aWxkcyBhcyBhIG1hbuKAmXMgY2hhcmFjdGVyIHNob3dzIGluIGhpcyBoYW5kd3JpdGluZy4gCk90aGVyIHBvc3NpYmlsaXRpZXMgb2YgdmFyaWF0aW9uIGFyZSBpbnRyb2R1Y2VkIGJ5IHRoZSAKa2luZCBvZiBpbnN0cnVtZW50IHVwb24gd2hpY2ggdGhlIG11c2ljIGlzIHBlcmZvcm1lZCwgCmFuZCBhbHNvIGJ5IHRoZSBtZXJpdHMgb2YgdGhlIHBsYXllci4gVGhlIHNhbWUgcGllY2UgCm9mIG11c2ljIGlmIGFjY3VyYXRlbHkgcGxheWVkIHdpbGwgYWx3YXlzIGJ1aWxkIHRoZSBzYW1lIApmb3JtLCBidXQgdGhhdCBmb3JtIHdpbGwgYmUgZW5vcm1vdXNseSBsYXJnZXIgd2hlbiBpdCBpcyAKcGxheWVkIHVwb24gYSBjaHVyY2ggb3JnYW4gb3IgYnkgYSBtaWxpdGFyeSBiYW5kIHRoYW4gCndoZW4gaXQgaXMgcGVyZm9ybWVkIHVwb24gYSBwaWFubywgYW5kIG5vdCBvbmx5IHRoZSBzaXplIApidXQgYWxzbyB0aGUgdGV4dHVyZSBvZiB0aGUgcmVzdWx0YW50IGZvcm0gd2lsbCBiZSB2ZXJ5IApkaWZmZXJlbnQuIFRoZXJlIHdpbGwgYWxzbyBiZSBhIHNpbWlsYXIgZGlmZmVyZW5jZSBpbiAKdGV4dHVyZSBiZXR3ZWVuIHRoZSByZXN1bHQgb2YgYSBwaWVjZSBvZiBtdXNpYyBwbGF5ZWQgCnVwb24gYSB2aW9saW4gYW5kIHRoZSBzYW1lIHBpZWNlIGV4ZWN1dGVkIHVwb24gdGhlIAp1IGUuIGdhaW4sIHRoZS4gZXhjZWxsZW5jZSBvZiB0aGUgcGVyZm9ybWFuY2UgaGFzIGl0cyAKZSBlY3QsIGFuZCB0aGVyZSBpcyBhIHdvbmRlcmZ1bCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIApyYSBpYW50IGJlYXV0eSBvZiB0aGUgZm9ybSBwcm9kdWNlZCBieSB0aGUgd29yayBvZiBhIAoKZSBhcnRpc3QsIHBlcmZlY3QgYWxpa2UgaW4gZXhwcmVzc2lvbiBhbmQgZXhlY3V0aW9uIAphbmQgdGhlIGNvbXBhcmF0aXZlbHkgZHVsbCBhbmQgdW5kaXN0aW5ndWlzaGVkLWxvb2tpbmcgCgptZWNoYW5pY2FsIF4gXiDCsGYgdGhlIHdvb2RlbiAKCmluZyBubeKAnFMgUCBheWVyJyB5dGhpImcgbGlrZSBpbmFjY3VyYWN5IGluIHJlbmRlci0gCkMgdHRlIGllNyA6IFYgXlBeaW5nIGRlZmVjdCBpbiB0aGUgZm9ybSwgCgouc2VsZiBUdXMgVCAsIGFyYUN0ZXIgwrBmIOKAmGhlIFByYW5jZSBzaG93cyAKZG9lcyBmIC5MSVMgOiB5IHQwICpoZSBDbGFpclbCsHlhbnQgLSBpJyAKCkl0IGlzIG9idmlvdXMgdGhhdCwgaWYgdGltZSBhbmQg4oCiIHBlcm1pdHRlZCAKaHVuZHJlZHMgb2Ygdm9pdW1lcyBtaWdodCBiZSBmaWxsZWQgTC4gCgoKRk9STVMgQlVJTFQgQlkgTVVTSUMgCgoKa2ogYmogCgp0aGUgZm9ybXMgYnVpbHQgYnkgZGlmZmVyZW50IHBpZWNlcyBvZiBtdXNpYyB1bmRlciAKZGlmZmVyZW50IGNvbmRpdGlvbnMsIHNvIHRoYXQgdGhlIG1vc3QgdGhhdCBjYW4gYmUgZG9uZSAKd2l0aGluIGFueSByZWFzb25hYmxlIGNvbXBhc3MgaXMgdG8gZ2l2ZSBhIGZldyBleGFtcGxlcyAKb2YgdGhlIGxlYWRpbmcgdHlwZXMuIEl0IGhhcyBiZWVuIGRlY2lkZWQgZm9yIHRoZSBwdXItIApwb3NlcyBvZiB0aGlzIGJvb2sgdG8gbGltaXQgdGhlc2UgdG8gdGhyZWUsIHRvIHRha2UgdHlwZXMgCm9mIG11c2ljIHByZXNlbnRpbmcgcmVhZGlseSByZWNvZ25pc2FibGUgY29udHJhc3RzLCBhbmQgCmZvciB0aGUgc2FrZSBvZiBzaW1wbGljaXR5IGluIGNvbXBhcmlzb24gdG8gcHJlc2VudCB0aGVtIAphbGwgYXMgdGhleSBhcHBlYXJlZCB3aGVuIHBsYXllZCB1cG9uIHRoZSBzYW1lIAppbnN0cnVtZW50IOKAlCBhIHZlcnkgZmluZSBjaHVyY2ggb3JnYW4uIEluIGVhY2ggb2Ygb3VyIApQbGF0ZXMgdGhlIGNodXJjaCBzaG93cyBhcyB3ZWxsIGFzIHRoZSB0aG91Z2h0LWZvcm0gCndoaWNoIHRvd2VycyBmYXIgaW50byB0aGUgYWlyIGFib3ZlIGl0IDsgYW5kIGl0IHNob3VsZCBiZSAKcmVtZW1iZXJlZCB0aGF0IHRob3VnaCB0aGUgZHJhd2luZ3MgYXJlIG9uIHZlcnkgCmRpZmZlcmVudCBzY2FsZXMgdGhlIGNodXJjaCBpcyB0aGUgc2FtZSBpbiBhbGwgdGhyZWUgY2FzZXMsIAphbmQgY29uc2VxdWVudGx5IHRoZSByZWxhdGl2ZSBzaXplIG9mIHRoZSBzb3VuZC1mb3JtIGNhbiAKZWFzaWx5IGJlIGNhbGN1bGF0ZWQuIFRoZSBhY3R1YWwgaGVpZ2h0IG9mIHRoZSB0b3dlciBvZiAKdGhlIGNodXJjaCBpcyBqdXN0IHVuZGVyIGEgaHVuZHJlZCBmZWV0LCBzbyBpdCB3aWxsIGJlIHNlZW4gCnRoYXQgdGhlIHNvdW5kLWZvcm0gcHJvZHVjZWQgYnkgYSBwb3dlcmZ1bCBvcmdhbiBpcyAKZW5vcm1vdXMgaW4gc2l6ZS4gCgpTdWNoIGZvcm1zIHJlbWFpbiBhcyBjb2hlcmVudCBlcmVjdGlvbnMgZm9yIHNvbWUgCmNvbnNpZGVyYWJsZSB0aW1lIOKAlCBhbiBob3VyIG9yIHR3byBhdCBsZWFzdCA7IGFuZCBkdXJpbmcgCmFsbCB0aGF0IHRpbWUgdGhleSBhcmUgcmFkaWF0aW5nIGZvcnRoIHRoZWlyIGNoYXJhY3RlcmlzdGljIAp2aWJyYXRpb25zIGluIGV2ZXJ5IGRpcmVjdGlvbiwganVzdCBhcyBvdXIgdGhvdWdodC1mb3JtcyAKZG8gOyBhbmQgaWYgdGhlIG11c2ljIGJlIGdvb2QsIHRoZSBlZmZlY3Qgb2YgdGhvc2UgdmlicmEtIAp0aW9ucyBjYW5ub3QgYnV0IGJlIHVwbGlmdGluZyB0byBldmVyeSBtYW4gdXBvbiB3aG9zZSAKdmVoaWNsZXMgdGhleSBwbGF5LiBUaHVzIHRoZSBjb21tdW5pdHkgb3dlcyBhIHZlcnkgCnJlYWwgZGVidCBvZiBncmF0aXR1ZGUgdG8gdGhlIG11c2ljaWFuIHdobyBwb3VycyBmb3J0aCAKc3VjaCBoZWxwZnVsIGluZmx1ZW5jZXMsIGZvciBoZSBtYXkgYWZmZWN0IGZvciBnb29kIApodW5kcmVkcyB3aG9tIGhlIG5ldmVyIHNhdyBhbmQgd2lsbCBuZXZlciBrbm93IAp1cG9uIHRoZSBwaHlzaWNhbCBwbGFuZS4gCgpNZW5kZWxzc29obi4g4oCUIFRoZSBmaXJzdCBvZiBzdWNoIGZvcm1zLCBhIGNvbXBhcmF0aXZlbHkgCnNtYWxsIGFuZCBzaW1wbGUgb25lLCBpcyBkcmF3biBmb3IgdXMgaW4gUGxhdGUgTS4gSXQgCndpbGwgYmUgc2VlbiB0aGF0IHdlIGhhdmUgaGVyZSBhIHNoYXBlIHJvdWdobHkgcmVwcmUtIAoKCjc4IAoKClRIT1VHSFQtRk9STVMgCgoKc2VudGluZyB0aGF0IG9mIGEgYmFsbG9vbiwgaGF2aW5nIGEgc2NhbGxvcGVkIG91dGxpbmUgCmNvbnNpc3Rpbmcgb2YgYSBkb3VibGUgdmlvbGV0IGxpbmUuIFdpdGhpbiB0aGF0IHRoZXJlIAppcyBhbiBhcnJhbmdlbWVudCBvZiB2YXJpb3VzbHktY29sb3VyZWQgbGluZXMgbW92aW5nLSAKYWxtb3N0IHBhcmFsbGVsIHdpdGggdGhpcyBvdXRsaW5lOyBhbmQgdGhlbiBhbm90aGVyIApzb21ld2hhdCBzaW1pbGFyIGFycmFuZ2VtZW50IHdoaWNoIHNlZW1zIHRvIGNyb3NzIAoKCmFuZCBpbnRlcnBlbmV0cmF0ZSB0aGUgZmlyc3QuIEJvdGggb2YgdGhlc2Ugc2V0cyBvZiBsaW5lcyAKZXZpZGVudGx5IHN0YXJ0IGZyb20gdGhlIG9yZ2FuIHdpdGhpbiB0aGUgY2h1cmNoLCBhbmQgY29uLSAKc2VxdWVudGx5IHBhc3MgdXB3YXJkIHRocm91Z2ggaXRzIHJvb2YgaW4gdGhlaXIgY291cnNlIApwaHlzaWNhbCBtYXR0ZXIgYmVpbmcgY2xlYXJseSBubyBvYnN0YWNsZSB0byB0aGVpciBmb3JtYXRpb27igJkgCkluIHRoZSBob2xsb3cgY2VudHJlIG9mIHRoZSBmb3JtIGZsb2F0IGEgbnVtYmVyIG9mIHNtYWxsIApjcmVzY2VudHMgYXJyYW5nZWQgYXBwYXJlbnRseSBpbiBmb3VyIHZlcnRpY2FsIGxpbmVzLiAKCkxldCB1cyBlbmRlYXZvdXIgbm93IHRvIGdpdmUgc29tZSBjbHVlIHRvIHRoZSAKbWVhbmluZyBvZiBhbGwgdGhpcywgd2hpY2ggbWF5IHdlbGwgc2VlbSBzbyBiZXdpbGRlcmluZy0gCnRvIHRoZSBub3ZpY2UsIGFuZCB0byBleHBsYWluIGluIHNvbWUgbWVhc3VyZSBob3cgaXQgCmNvbWVzIGludG8gZXhpc3RlbmNlLiBJdCBtdXN0IGJlIHJlY29sbGVjdGVkIHRoYXQgdGhpcyAK4pagcyBhIG1lbG9keSBvZiBzaW1wbGUgY2hhcmFjdGVyIHBsYXllZCBvbmNlIHRocm91Z2ggCmFuIHRoYXQgY29uc2VxdWVudGx5IHdlIGNhbiBhbmFseXNlIHRoZSBmb3JtIGluIGEgCsK7YXkgdGhhdCB3b3VsZCBiZSBxdWl0ZSBpbXBvc3NpYmxlIHdpdGggYSBsYXJnZXIgYW5kIApjYW0sICwgbXAnMUNh4oCcZCBmUGVkbWVuLiBZZXQgZXZlbiBpbiB0aGlzIGNhc2Ugd2UgCgpEaXNyZWdhcmRpbmcgZm9yIHRoZSBabUwgaEogVCdmbCAqKiBeIApoYXZlIG5leHQgV2l0aGluIDcsIHNjYWxsb3BlZCBib3JkZXIsIHdlIAoKZGlmZmVyZW50IGNvbG91cnMgYV5yYW5nZW1lbnQgb2YgZm91ciBsaW5lcyBvZiAKCm91dGVyVGwgciB2VCJtZyAsbiB0aGUgZGlyZWN0aW9uLCB0aGUgCgp0cGdlY+KAnDoseWFuZFRoaGUgZiBlcnMgCgotSmFyIGFuZCBaWlo7IHRsJ2VUIDEgCgpaZXRkacKwZmwgMcKwIiBmIOKAnCDigJwgVmFyaW/igJxzIGxldmVpcmpuZWRuUyxvZ2UqZXIgCgpvL3JyIGhhcmNiaCBvZiAKCuKWoGhlaXIgYXJyYW5nZW1lbnQgKiAKCm5vdGVzIDsgc28gdGhhdCBlYWNoIG9mIHRoZXNlIGNyb29rZWQgVGUg4oCYIEwgCgptb3ZlbWVudCBvZiBvbmUgb2YgdGhlIERhcnQsICwgU0lnbWZpZXMgdGhlIAoKUGFydHMgb2YgdGhlIG1lbG9keSwgdGhlIGZvdXIgCgoKRk9STVMgQlVJTFQgQlkgTVVTSUMgNyA5IAoKbW92aW5nIGFwcHJveGltYXRlbHkgdG9nZXRoZXIgZGVub3RpbmcgdGhlIHRyZWJsZSwgCmFsdG8sIHRlbm9yIGFuZCBiYXNzIHJlc3BlY3RpdmVseSwgdGhvdWdoIHRoZXkgZG8gbm90LiAKbmVjZXNzYXJpbHkgYXBwZWFyIGluIHRoYXQgb3JkZXIgaW4gdGhpcyBhc3RyYWwgZm9ybS4gCkhlcmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGludGVycG9sYXRlIGEgc3RpbGwgZnVydGhlciBleC0gCnBsYW5hdGlvbi4gRXZlbiB3aXRoIGEgbWVsb2R5IHNvIGNvbXBhcmF0aXZlbHkgCnNpbXBsZSBhcyB0aGlzIHRoZXJlIGFyZSB0aW50cyBhbmQgc2hhZGVzIGZhciB0b28gZmluZWx5IAptb2R1bGF0ZWQgdG8gYmUgcmVwcm9kdWNlZCBvbiBhbnkgc2NhbGUgYXQgYWxsIHdpdGhpbiAKb3VyIHJlYWNoOyB0aGVyZWZvcmUgaXQgbXVzdCBiZSBzYWlkIHRoYXQgZWFjaCBvZiB0aGUtIApzaG9ydCBsaW5lcyBleHByZXNzaW5nIGEgbm90ZSBoYXMgYSBjb2xvdXIgb2YgaXRzIG93biwgCnNvIHRoYXQgYWx0aG91Z2ggYXMgYSB3aG9sZSB0aGF0IG91dGVyIGxpbmUgZ2l2ZXMgYW4gCmltcHJlc3Npb24gb2YgYmx1ZW5lc3MsIGFuZCB0aGUgb25lIG5leHQgd2l0aGluIGl0IG9mIApjYXJtaW5lLCBlYWNoIHlldCB2YXJpZXMgaW4gZXZlcnkgaW5jaCBvZiBpdHMgbGVuZ3RoIDsgc28gCnRoYXQgd2hhdCBpcyBzaG93biBpcyBub3QgYSBjb3JyZWN0IHJlcHJvZHVjdGlvbiBvZiAKZXZlcnkgdGludCwgYnV0IG9ubHkgdGhlIGdlbmVyYWwgaW1wcmVzc2lvbi4gCgpUaGUgdHdvIHNldHMgb2YgZm91ciBsaW5lcyB3aGljaCBzZWVtIHRvIGNyb3NzIG9uZSAKYW5vdGhlciBhcmUgY2F1c2VkIGJ5IHR3byBzZWN0aW9ucyBvZiB0aGUgbWVsb2R5IDsgCnRoZSBzY2FsbG9wZWQgZWRnaW5nIHN1cnJvdW5kaW5nIHRoZSB3aG9sZSBpcyB0aGUgcmVzdWx0IApvZiB2YXJpb3VzIGZsb3VyaXNoZXMgYW5kIGFycGVnZ2lvcywgYW5kIHRoZSBmbG9hdGluZyAKY3Jlc2NlbnRzIGluIHRoZSBjZW50cmUgcmVwcmVzZW50IGlzb2xhdGVkIG9yIHN0YWNjYXRvKiAKY2hvcmRzLiBOYXR1cmFsbHkgdGhlIGFycGVnZ2lvcyBhcmUgbm90IHdob2xseSB2aW9sZXQsLCAKZm9yIGVhY2ggbG9vcCBoYXMgYSBkaWZmZXJlbnQgaHVlLCBidXQgb24gdGhlIHdob2xlIHRoZXkgCmFwcHJvYWNoIG1vcmUgbmVhcmx5IHRvIHRoYXQgY29sb3VyIHRoYW4gdG8gYW55IG90aGVyLSAKVGhlIGhlaWdodCBvZiB0aGlzIGZvcm0gYWJvdmUgdGhlIHRvd2VyIG9mIHRoZSBjaHVyY2ggCmlzIHByb2JhYmx5IGEgbGl0dGxlIG92ZXIgYSBodW5kcmVkIGZlZXQgOyBidXQgc2luY2UgaXQgYWxzbyogCmV4dGVuZHMgZG93bndhcmRzIHRocm91Z2ggdGhlIHJvb2Ygb2YgdGhlIGNodXJjaCBpdHMqIAp0b3RhbCBwZXJwZW5kaWN1bGFyIGRpYW1ldGVyIG1heSB3ZWxsIGJlIGFib3V0IGEgaHVuZHJlZCAKYW5kIGZpZnR5IGZlZXQuIEl0IGlzIHByb2R1Y2VkIGJ5IG9uZSBvZiBNZW5kZWxzc29obuKAmXMgCuKAnCBMaWVkZXIgb2huZSBXb3J0ZSzigJ0gYW5kIGlzIGNoYXJhY3RlcmlzdGljIG9mIHRoZSBkZWxpY2F0ZSAKZmlsaWdyZWUtd29yayB3aGljaCBzbyBvZnRlbiBhcHBlYXJzIGFzIHRoZSByZXN1bHQgb2YgCmhpcyBjb21wb3NpdGlvbnMuIAoKVGhlIHdob2xlIGZvcm0gaXMgc2VlbiBwcm9qZWN0ZWQgYWdhaW5zdCBhIGNvcnVzY2F0LSAKaW5nIGJhY2tncm91bmQgb2YgbWFueSBjb2xvdXJzLCB3aGljaCBpcyBpbiByZWFsaXR5IGEuIAoKClNvIAoKClRIT1VHSFQtRk9STVMgCgoKY2xvdWQgc3Vycm91bmRpbmcgaXQgdXBvbiBldmVyeSBzaWRlLCBjYXVzZWQgYnkgdGhlIAonIGlicmF0aW9ucyB3aGljaCBhcmUgcG91cmluZyBvdXQgZnJvbSBpdCBpbiBhbGwgZGlyZWN0aW9ucy4gCgpHb3Vub2QuIEluIFBsYXRlIEcgd2UgaGF2ZSBhbiBlbnRpcmVseSBkaWZmZXJlbnQgCnBpZWNlIOKAlCBhIHJpbmdpbmcgY2hvcnVzIGJ5IEdvdW5vZC4gU2luY2UgdGhlIApjaHVyY2ggaW4gdGhlIGlsbHVzdHJhdGlvbiBpcyB0aGUgc2FtZSwgaXQgaXMgZWFzeSB0byAKY2FsY3VsYXRlIHRoYXQgaW4gdGhpcyBjYXNlIHRoZSBoaWdoZXN0IHBvaW50IG9mIHRoZSBmb3JtIAptdXN0IHJpc2UgZnVsbHkgc2l4IGh1bmRyZWQgZmVldCBhYm92ZSB0aGUgdG93ZXIsIHRob3VnaCAKcGVycGVuZGljdWxhciBkaWFtZXRlciBvZiB0aGUgZm9ybSBpcyBzb21ld2hhdCAKdGhhbiB0aGF0LCBmb3IgdGhlIG9yZ2FuaXN0IGhhcyBldmlkZW50bHkgZmluaXNoZWQgCnNvbWUgbWludXRlcyBhZ28sIGFuZCB0aGUgcGVyZmVjdGVkIHNoYXBlIGZsb2F0cyBoaSBlaCAKbSB0aGUgYWlyLCBjbGVhcmx5IGRlZmluZWQgYW5kIHJvdWdobHkgc3BoZXJpY2FsLCB0aG91Z2ggCnJhdCBlciBhbiBvYmxhdGUgc3BoZXJvaWQuIFRoaXMgc3BoZXJvaWQgaXMgaG9sbG93IGFzIAphcmUgYWxsIHN1Y2ggZm9ybXMsIGZvciBpdCBpcyBzbG93bHkgaW5jcmVhc2luZyBpbiBzaXpl4oCUIApncmFkdWFsbHkgcmFkaWF0aW5nIG91dHdhcmQgZnJvbSBpdHMgY2VudHJlLCBidXQgZ3Jvd2luZyAKCnByb3BvcnRpb25hdGVseSBsZXNzIHZpdmlkIGFuZCBtb3JlIGV0aGVyZWFsIGluIGFwcGVhciAKJiRjZSBhcyBpdCBkb2VzIHNvLCB1bnRpbCBhdCB0YWN0LSBpKiBpIDEgCgpzLSBUIF4gciAKCmluIHRoaXMgY2FzZSBzaG93IF4gCgrigJx3ZiBtdXNpYy4gCgp0aGFuIGluIFBsYXRlIE0sIGZvVHRoaXMgYm5sbGlhbnQgYW5kIG1hc3NpdmUgCgpvZiBtdXJtdXJvdXMgbeKAmWVsb2R5IGFzIGEgc3BMXmNjTFRvbideIAoKY2hvcmRzLiBUaGUgYXJ0aXN0IGhhcyBzb3VnaHQgU1VDQ2Vzc2lvbiBvZicgY3Jhc2hpbmcgCnRoZSBjaG9yZHMgcmF0aGVyIHRoYW4gdGggwrAgXiBWZSB0bGxlIGVmZmVjdCBvZiAKCmxhdHRlciBiZWluZyBzY2FyY2VsdiDCsGYgdGhlIHNlUGFyYXRlIG5vdGVzLCB0aGUgCgoqKiBeIMKjwqPCoyDigJxmZmnCsGNudUl0YWhTQ2FsZSA1MCDigJzigJwgLSAKCmRldmVsb3BtZW50IG9mIHRoZSBmb3JtIGZvciA7ICt1IOKAoiBoZXJlIHQwIGZvbGxvdyB0aGUgCgp0aGUgbGluZXMgaGF2ZSBjcm9zc2VkIGFuZCBpbnRlciDigJwgP2ZoIF3CsG5nZXIgcGllY2UgCgo6IGJ1dCB0aGUgby1vcmNyXm8sIG10ZXJtbWdsZWQsIHVudGlsIC4gd2UgaGF2ZSAKCm1lIGdvcmdlb3VzIGdlbmVyYWwgZWZmZWN0IHdoLFZiIHJrIAoKaGF2ZSBpbnRlbmRlZCB1cyB0byBoIGggdGhlIGNvcm5wb3NlciAKCmVKfmFuZCB0byBzZWUsIGlmIHdlIHdlcmUgCgoKLi4uLiDilqAuIAoKV21tIAoKCuKWoOKWoCYqKioqPuKWoCo+4oCZJiAKCgpyIAoKCkZPUk1TIEJVSUxUIEJZIE1VU0lDIAoKCjgxIAoKCmFibGUgdG8gc2VlLiBOZXZlcnRoZWxlc3MgaXQgaXMgcG9zc2libGUgdG8gZGlzY2VybiAKc29tZXRoaW5nIG9mIHRoZSBwcm9jZXNzIHdoaWNoIGJ1aWxkcyB0aGUgZm9ybSwgYW5kIAp0aGUgZWFzaWVzdCBwb2ludCBhdCB3aGljaCB0byBjb21tZW5jZSBpcyB0aGUgbG93ZXN0IApvbiB0aGUgbGVmdCBoYW5kIGFzIG9uZSBleGFtaW5lcyB0aGUgUGxhdGUuIFRoZSBsYXJnZSAKdmlvbGV0IHByb3RydXNpb24gdGhlcmUgaXMgZXZpZGVudGx5IHRoZSBvcGVuaW5nIGNob3JkIApvZiBhIHBocmFzZSwgYW5kIGlmIHdlIGZvbGxvdyB0aGUgb3V0ZXIgbGluZSBvZiB0aGUgZm9ybSAKCgp1cHdhcmQgYW5kIHJvdW5kIHRoZSBjaXJjdW1mZXJlbmNlIHdlIG1heSBvYnRhaW4gCnNvbWUgaWRlYSBvZiB0aGUgY2hhcmFjdGVyIG9mIHRoYXQgcGhyYXNlLiBBIGNsb3NlIAppbnNwZWN0aW9uIHdpbGwgcmV2ZWFsIHR3byBvdGhlciBsaW5lcyBmdXJ0aGVyIGluIHdoaWNoIHJ1biAKcm91Z2hseSBwYXJhbGxlbCB0byB0aGlzIG91dGVyIG9uZSwgYW5kIHNob3cgc2ltaWxhciAKc3VjY2Vzc2lvbnMgb2YgY29sb3VyIG9uIGEgc21hbGxlciBzY2FsZSwgYW5kIHRoZXNlIG1heSAKd2VsbCBpbmRpY2F0ZSBhIHNvZnRlciByZXBldGl0aW9uIG9mIHRoZSBzYW1lIHBocmFzZS4gCgpDYXJlZnVsIGFuYWx5c2lzIG9mIHRoaXMgbmF0dXJlIHdpbGwgc29vbiBjb252aW5jZSB1cyAKdGhhdCB0aGVyZSBpcyBhIHZlcnkgcmVhbCBvcmRlciBpbiB0aGlzIHNlZW1pbmcgY2hhb3MsIAphbmQgd2Ugc2hhbGwgY29tZSB0byBzZWUgdGhhdCBpZiBpdCB3ZXJlKiBwb3NzaWJsZSB0byAKbWFrZSBhIHJlcHJvZHVjdGlvbiBvZiB0aGlzIGdsb3dpbmcgZ2xvcnkgdGhhdCBzaG91bGQgCgoKYmUgYWNjdXJhdGUgZG93biB0byB0aGUgc21hbGxlc3QgZGV0YWlsLCBpdCB3b3VsZCBhbHNvIAoK4pagIGMtIOKAmC4uJ1NyLycqIOKWoCcgMSAu4pagIAoKYmUgcG9zc2libGUgcGF0aWVudGx5IHRvIGRpc2VudGFuZ2xlIGl0IHRvIHRoZSB1dHRlcm1vc3QsIAoKZXZlcnkgbG92ZWx5IHRvdWNoIG9mIGNvcnVzY2F0aW5nIGNvbG91ciAKdG8gdGhlIHZlcnkgbm90ZSB0aGF0IGNhbGxlZCBpdCBpbnRvIGV4aXN0ZW5jZS4gSXQgbXVzdCAKbm90IGJlIGZvcmdvdHRlbiB0aGF0IHZlcnkgZmFyIGxlc3MgZGV0YWlsIGlzIGdpdmVuIGluIAp0aGlzIGlsbHVzdHJhdGlvbiB0aGFuIGluIFBsYXRlIE0gOyBmb3IgZXhhbXBsZSwgZWFjaCBvZiAKdGhlc2UgcG9pbnRzIG9yIHByb2plY3Rpb25zIGhhcyB3aXRoaW4gaXQgYXMgaW50ZWdyYWwgCnBhcnRzLCBhdCBsZWFzdCB0aGUgZm91ciBsaW5lcyBvciBiYW5kcyBvZiB2YXJ5aW5nIGNvbG91ciAKd2hpY2ggd2VyZSBzaG93biBhcyBzZXBhcmF0ZSBpbiBQbGF0ZSBNLCBidXQgaGVyZSAKdGhleSBhcmUgYmxlbmRlZCBpbnRvIG9uZSBzaGFkZSwgYW5kIG9ubHkgdGhlIGdlbmVyYWwgCmVmZmVjdCBvZiB0aGUgY2hvcmQgaXMgZ2l2ZW4uIEluIE0gd2UgY29tYmluZWQgCmhvcml6b250YWxseSwgYW5kIHRyaWVkIHRvIHNob3csIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSAKbnVtYmVyIG9mIHN1Y2Nlc3NpdmUgbm90ZXMgYmxlbmRlZCBpbnRvIG9uZSwgYnV0IHRvIAprZWVwIGRpc3RpbmN0IHRoZSBlZmZlY3Qgb2YgdGhlIGZvdXIgc2ltdWx0YW5lb3VzIHBhcnRzIApieSB1c2luZyBhIGRpZmZlcmVudGx5LWNvbG91cmVkIGxpbmUgZm9yIGVhY2guIEluIEcgCndlIGF0dGVtcHQgZXhhY3RseSB0aGUgcmV2ZXJzZSwgZm9yIHdlIGNvbWJpbmUgdmVydGktIAoKCjYgCgoKODIgCgoKVEhPVUdIVC1GT1JNUyAKCgpjYWxseSwgYW5kIGJsZW5kLCBub3QgdGhlIHN1Y2Nlc3NpdmUgbm90ZXMgb2Ygb25lIHBhcnQsIApidXQgdGhlIGNob3JkcywgZWFjaCBwcm9iYWJseSBjb250YWluaW5nJyBzaXggb3IgZWlnaHQgCm5vdGVzLiBUaGUgdHJ1ZSBhcHBlYXJhbmNlIGNvbWJpbmVzIHRoZXNlIHR3byBlZmZlY3RzIAp3aXRoIGFuIGluZXhwcmVzc2libGUgd2VhbHRoIG9mIGRldGFpbC4gCgpXYWduZXIuIOKAlCBObyBvbmUgd2hvIGhhcyBkZXZvdGVkIGFueSBzdHVkeSB0byAKdGhlc2UgbXVzaWNhbCBmb3JtcyB3b3VsZCBoZXNpdGF0ZSBpbiBhc2NyaWJpbmcgdGhlIAptYXJ2ZWxsb3VzIG1vdW50YWluLSByYW5nZSBkZXBpY3RlZCBpbiBQbGF0ZSBXIHRvIHRoZSAKZ2VuaXVzIG9mIFJpY2hhcmQgV2FnbmVyLCBmb3Igbm8gb3RoZXIgY29tcG9zZXIgaGFzIAp5ZXQgYnVpbHQgc291bmQgZWRpZmljZXMgd2l0aCBzdWNoIHBvd2VyIGFuZCBkZWNpc2lvbi4gCkluIHRoaXMgY2FzZSB3ZSBoYXZlIGEgdmFzdCBiZWxsLXNoYXBlZCBlcmVjdGlvbiwgZnVsbHkgCm5pbmUgaHVuZHJlZCBmZWV0IGluIGhlaWdodCwgYW5kIGJ1dCBsaXR0bGUgbGVzcyBpbiBkaWFtZXRlciAKYXQgdGhlIGJvdHRvbSwgZmxvYXRpbmcgaW4gdGhlIGFpciBhYm92ZSB0aGUgY2h1cmNoIG91dCAKb2Ygd2hpY2ggaXQgaGFzIGFyaXNlbi4gSXQgaXMgaG9sbG93LCBsaWtlIEdvdW5vZOKAmXMgZm9ybSwgCmJ1dCwgdW5saWtlIHRoYXQsIGl0IGlzIG9wZW4gYXQgdGhlIGJvdHRvbS4gVGhlIHJlc2VtLSAKYmxhbmNlIHRvIHRoZSBzdWNjZXNzaXZlbHkgcmV0cmVhdGluZyByYW1wYXJ0cyBvZiBhIAptb3VudGFpbiBpcyBhbG1vc3QgcGVyZmVjdCwgYW5kIGl0IGlzIGhlaWdodGVuZWQgYnkgdGhlIApiaWxsb3d5IG1hc3NlcyBvZiBjbG91ZCB3aGljaCByb2xsIGJldHdlZW4gdGhlIGNyYWdzIAphbmQgZ2l2ZSB0aGUgZWZmZWN0IG9mIHBlcnNwZWN0aXZlLiBObyBhdHRlbXB0IGhhcyAKYmVlbiBtYWRlIGluIHRoaXMgZHJhd2luZyB0byBzaG93IHRoZSBlZmZlY3Qgb2Ygc2luZ2xlIApub3RlcyBvciBzaW5nbGUgY2hvcmRzIDsgZWFjaCByYW5nZSBvZiBtaW1pYyByb2NrcyAKcmVwcmVzZW50cyBpbiBzaXplLCBzaGFwZSwgYW5kIGNvbG91ciBvbmx5IHRoZSBnZW5lcmFsIAplZmZlY3Qgb2Ygb25lIG9mIHRoZSBzZWN0aW9ucyBvZiB0aGUgcGllY2Ugb2YgbXVzaWMgYXMgc2VlbiAKZnJvbSBhIGRpc3RhbmNlLiBCdXQgaXQgbXVzdCBiZSB1bmRlcnN0b29kIHRoYXQgaW4gCnJlYWxpdHkgYm90aCB0aGlzIGFuZCB0aGUgZm9ybSBnaXZlbiBpbiBQbGF0ZSBHIGFyZSAKYXMgZnVsbCBvZiBtaW51dGUgZGV0YWlscyBhcyB0aGF0IGRlcGljdGVkIGluIFBsYXRlIE0sIAphbmQgdGhhdCBhbGwgdGhlc2UgbWFnbmlmaWNlbnQgbWFzc2VzIG9mIGNvbG91ciBhcmUgYnVpbHQgCnVwIG9mIG1hbnkgY29tcGFyYXRpdmVseSBzbWFsbCBiYW5kcyB3aGljaCB3b3VsZCBub3QgCmJlIHNlcGFyYXRlbHkgdmlzaWJsZSB1cG9uIHRoZSBzY2FsZSBvbiB3aGljaCB0aGlzIGlzIApkcmF3bi4gVGhlIGJyb2FkIHJlc3VsdCBpcyB0aGF0IGVhY2ggbW91bnRhaW4tcGVhayAKaGFzIGl0cyBvd24gYnJpbGxpYW50IGh1ZSwganVzdCBhcyBpdCBpcyBzZWVuIGluIHRoZSAKaWxsdXN0cmF0aW9uIGEgc3BsZW5kaWQgc3BsYXNoIG9mIHZpdmlkIGNvbG91ciwgZ2xvd2luZyAKd2l0aCB0aGUgZ2xvcnkgb2YgaXRzIG93biBsaXZpbmcgbGlnaHQsIHNwcmVhZGluZyBpdHMgCgoKRk9STVMgQlVJTFQgQlkgTVVTSUMgODMgCgpyZXNwbGVuZGVudCByYWRpYW5jZSBvdmVyIGFsbCB0aGUgY291bnRyeSByb3VuZC4gWWV0IAppbiBlYWNoIG9mIHRoZXNlIG1hc3NlcyBvZiBjb2xvdXIgb3RoZXIgY29sb3VycyBhcmUgCmNvbnN0YW50bHkgZmxpY2tlcmluZywgYXMgdGhleSBkbyBvdmVyIHRoZSBzdXJmYWNlIG9mIAptb2x0ZW4gbWV0YWwsIHNvIHRoYXQgdGhlIGNvcnVzY2F0aW9ucyBhbmQgc2NpbnRpbGxhdGlvbnMgCm9mIHRoZXNlIHdvbmRyb3VzIGFzdHJhbCBlZGlmaWNlcyBhcmUgZmFyIGJleW9uZCB0aGUgCnBvd2VyIG9mIGFueSBwaHlzaWNhbCB3b3JkcyB0byBkZXNjcmliZS4gCgpBIHN0cmlraW5nIGZlYXR1cmUgaW4gdGhpcyBmb3JtIGlzIHRoZSByYWRpY2FsIGRpZmZlcmVuY2UgCmJldHdlZW4gdGhlIHR3byB0eXBlcyBvZiBtdXNpYyB3aGljaCBvY2N1ciBpbiBpdCwgb25lIApwcm9kdWNpbmcgdGhlIGFuZ3VsYXIgcm9ja3kgbWFzc2VzLCBhbmQgdGhlIG90aGVyIHRoZSAKcm91bmRlZCBiaWxsb3d5IGNsb3VkcyB3aGljaCBsaWUgYmV0d2VlbiB0aGVtLiBPdGhlciAKbW90aWZzIGFyZSBzaG93biBieSB0aGUgYnJvYWQgYmFuZHMgb2YgYmx1ZSBhbmQgCnJvc2UgYW5kIGdyZWVuIHdoaWNoIGFwcGVhciBhdCB0aGUgYmFzZSBvZiB0aGUgYmVsbCwgCmFuZCB0aGUgbWVhbmRlcmluZyBsaW5lcyBvZiB3aGl0ZSBhbmQgeWVsbG93IHdoaWNoIAphdWl2ZXIgYWNyb3NzIHRoZW0gYXJlIHByb2JhYmx5IHByb2R1Y2VkIGJ5IGEgcmlwcGxpbmcgCmFycGVnZ2lvIGFjY29tcGFuaW1lbnQgCgpJbiB0aGVzZSB0aHJlZSBQbGF0ZXMgb25seSB0aGUgZm9ybSBjcmVhdGVkIC0gZGlyZWN0bHkgCmJ5IHRoZSBzb3VuZC12aWJyYXRpb25zIGhhcyBiZWVuIGRyYXduLCB0aG91Z2ggYXMgc2VlbiAKYnkgdGhlIGNsYWlydm95YW50IGl0IGlzIHVzdWFsbHkgc3Vycm91bmRlZCBieSBtYW55IG90aGVyIAptaW5xciBmb3JtcywgdGhlIHJlc3VsdCBvZiB0aGUgcGVyc29uYWwgZmVlbGluZ3Mgb2YgdGhlIApwZXJmb3JtZXIgb3Igb2YgdGhlIGVtb3Rpb25zIGFyb3VzZWQgYW1vbmcgdGhlIGF1ZGllbmNlIApieSB0aGUgbXVzaWMuIFRvIHJlY2FwaXR1bGF0ZSBicmllZmx5OiBpbiBQbGF0ZSBNIAp3ZSBoYXZlIGEgc21hbGwgYW5kIGNvbXBhcmF0aXZlbHkgc2ltcGxlIGZvcm0gcG91ci0gCnRyYXllZCBpbiBjb25zaWRlcmFibGUgZGV0YWlsLCBzb21ldGhpbmcgb2YgdGhlIGVmZmVjdCBvZiAKZWFjaCBub3RlIGJlaW5nIGdpdmVuOyBpbiBQbGF0ZSBHIHdlIGhhdmUgYSBtb3JlIAplbGFib3JhdGUgZm9ybSBvZiB2ZXJ5IGRpZmZlcmVudCBjaGFyYWN0ZXIgZGVsaW5lYXRlZCAKd2l0aCBsZXNzIGRldGFpbCwgc2luY2Ugbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHJlbmRlciB0aGUgCnNlcGFyYXRlIG5vdGVzLCBidXQgb25seSB0byBzaG93IGhvdyBlYWNoIGNob3JkIGV4cHJlc3NlcyAKaXRzZWxmIGluIGZvcm0gYW5kIGNvbG91cjsgaW4gUGxhdGUgVyB3ZSBoYXZlIGEgc3RpbGwgCmdyZWF0ZXIgYW5kIHJpY2hlciBmb3JtLCBpbiB0aGUgZGVwaWN0aW9uIG9mIHdoaWNoIGFsbCAKZGV0YWlsIGlzIGF2b2lkZWQsIGluIG9yZGVyIHRoYXQgdGhlIGZ1bGwgZWZmZWN0IG9mIHRoZSBwaWVjZSAKYXMgYSB3aG9sZSBtYXkgYmUgYXBwcm94aW1hdGVseSBnaXZlbi4gCgpOYXR1cmFsbHkgZXZlcnkgc291bmQgbWFrZXMgaXRzIGltcHJlc3Npb24gdXBvbiAKCgo4NCAKCgpUSE9VR0hULUZPUk1TIAoKCmFzdHJhbCBhbmQgbWVudGFsIG1hdHRlciDigJQgbm90IG9ubHkgdGhvc2Ugb3JkZXJlZCAKc3VjY2Vzc2lvbnMgb2Ygc291bmRzIHdoaWNoIHdlIGNhbGwgbXVzaWMuIFNvbWUgZGF5LCAKcGVyaGFwcywgdGhlIGZvcm1zIGJ1aWx0IGJ5IHRob3NlIG90aGVyIGxlc3MgZXVwaG9uaW91cyAKc291bmRzIG1heSBiZSBwaWN0dXJlZCBmb3IgdXMsIHRob3VnaCB0aGV5IGFyZSBiZXlvbmQgCnRoZSBzY29wZSBvZiB0aGlzIHRyZWF0aXNlIDsgbWVhbnRpbWUsIHRob3NlIHdobyBmZWVsIGFuIAppbnRlcmVzdCBpbiB0aGVtIG1heSByZWFkIGFuIGFjY291bnQgb2YgdGhlbSBpbiB0aGUgCmxpdHRsZSBib29rIG9uIFRoZSBIaWRkZW4gU2lkZSBvZiBUaGluZ3MgLiogCgpJdCBpcyB3ZWxsIGZvciB1cyBldmVyIHRvIGJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGlzIGEgCmhpZGRlbiBzaWRlIHRvIGxpZmUgdGhhdCBlYWNoIGFjdCBhbmQgd29yZCBhbmQgdGhvdWdodCAKaGFzIGl0cyBjb25zZXF1ZW5jZSBpbiB0aGUgdW5zZWVuIHdvcmxkIHdoaWNoIGlzIGFsd2F2cyAKc28gbmVhciB0byB1cywgYW5kIHRoYXQgdXN1YWxseSB0aGVzZSB1bnNlZW4gcmVzdWx0cyBhcmUgCm9mIGluZmluaXRlbHkgZ3JlYXRlciBpbXBvcnRhbmNlIHRoYW4gdGhvc2Ugd2hpY2ggYXJlIAp2aXNpYmxlIHRvIGFsbCB1cG9uIHRoZSBwaHlzaWNhbCBwbGFuZS4gVGhlIHdpc2UgbWFuLCAKa25vd2luZyB0aGlzLCBvcmRlcnMgaGlzIGxpZmUgYWNjb3JkaW5nbHksIGFuZCB0YWtlcyAKYWNjb3VudCBvZiB0aGUgd2hvbGUgb2YgdGhlIHdvcmxkIGluIHdoaWNoIGhlIGxpdmVzLCBhbmQgCm5vdCBvZiB0aGUgb3V0ZXIgaHVzayBvZiBpdCBvbmx5LiBUaHVzIGhlIHNhdmVzIGhpbXNlbGYgCmFuIGluZmluaXR5IG9mIHRyb3VibGUsIGFuZCBtYWtlcyBoaXMgbGlmZSBub3Qgb25seSBoYXBwaWVyIApvdXQgZmFyIG1vcmUgdXNlZnVsIHRvIGhpcyBmZWxsb3ctbWVuLiBCdXQgdG8gZG8gdGhpcyAKClp0J28gdyBnZX50aGF0IGtub3dsYSUnPSB3aGljaCBpcyBwb3dlcjsgCmFuZCBtIG91ciBXZXN0ZXJuIHdvcmxkIHN1Y2gga25vd2xlZGdlIGlzIHByYWN0aWNhbGx2IAoKb2J0YWluYWJsZSBvbmx5IHRocm91Z2ggdGhlIGxpdGVyYXR1cmUgb2YgVGhlb3NvcGh5IAoKVG8gZXhpc3QgLHMgbm90IGVub3VnaCA7IHdlIGRlc2lyZSB0byBsaXZlIGludGRKLW50bHYgJyAKQnV0IHRvIGxpdmUgd2UgbXVzdCBrbm93IGFuZCB0biBVbiBeIF4gCgphbmQgaGVyZSBpcyBhIHZhc3QgZmllbGQgVEwgayByIFdlIG1VU3QgU3R1ZHkgMSAKZW50ZXIgdURvbiBpZiDigJ4gQSBmIOKAnCBQIGJlZm9yZSB1cycgaWYgd2lsbCBvbmx5IAoKcmVyIHVQb24gSnQgYW5kIGdhdGhlciB0aGVuY2UgdGhlICPigKLigJ4sKi7CqywgciAuLiAsIHkgCgptZW50LiBMZXQgdXMsIHRoZW4gd2FzdGUgbm4gZiDCsGYgZW5sbF5odGVu4oCYIApTY29ucyBvZiBpZ25vcmFuKDtlIGJ1dCBjbyAqVGkg4oCcIF4gZGFyayAKCmlvdXMgc1Nuc2hmbmUgb2YgdGgnSiBIIGggb1d5IGludG8gdGg9IAoKbW9kZXJuIGRheXMgbWVuIGNhbGwgVGhlb3NvcGh5KideMDHigJ0gVyrigJ1DaCDihKIgdGhlU2UgCgoxICUgQy4gVy4gTGVhZGJlYXRlci4gCgoKdW5tIAoKbyAKCgpQUklOVEVEIGJ5IE5FSUxMIAoKCkNDTCwgTFRELCwgRURJTkJVUkdILg==

Nessun commento:

Posta un commento

[AL CORPUS] Occult Chemistry [2/2]

VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...