PGgyPkVjbGlwc2UgMy4zIEFja25vd2xlZGdlbWVudHM8L2g0PgoKPHA+VGhlIEVjbGlwc2UgcHJvamVjdCAoUGxhdGZvcm0sIEpEVCwgUERFLCBFcXVpbm94KSBkZXZlbG9wbWVudCB0ZWFtIGFsd2F5cyByZWNlaXZlcyAKICBhIHRyZW1lbmRvdXMgYW1vdW50IG9mIHN1cHBvcnQgZnJvbSB0aGUgRWNsaXBzZSBjb21tdW5pdHkgdGhyb3VnaG91dCBlYWNoIGRldmVsb3BtZW50IAogIGN5Y2xlIGFuZCAzLjMgaXMgbm8gZXhjZXB0aW9uLiBUaGUgZW5vcm1vdXMgY29sbGVjdGl2ZSBlZmZvcnQgb2YgY29uc3VtaW5nIHRoZSAKICBsYXRlc3QgYnVpbGRzLCBwYXJ0aWNpcGF0aW5nIGluIGRpc2N1c3Npb25zLCBvcGVuaW5nIGJ1ZyByZXBvcnRzLCB0ZXN0aW5nLCBhbmQgCiAgcHJvdmlkaW5nIHBhdGNoZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBiZXR0ZXIgcmVsZWFzZS4gVG8gZXZlcnlvbmUgdGhhdCBoZWxwZWQgCiAgYSBiaWcgJnF1b3Q7VGhhbmsgeW91ISZxdW90Oy4gSW4gcGFydGljdWxhciwgdGhlIHRlYW0gd291bGQgbGlrZSB0byBleHByZXNzIAogIGl0J3MgYXBwcmVjaWF0aW9uIHRvIHRoZSBmb2xsb3dpbmcgcGVvcGxlLjwvcD4KCgo8cD5UaGUgVXNlciBBc3Npc3RhbmNlIHRlYW0gd291bGQgbGlrZSB0byB0aGFuayBKaWFuZyBMaW4gUXVhbiwgU3RlcGhhbiBNaWNoZWxzLCBTZWJhc3RpYW4gRGF2aWRzIGFuZCBFcmljIElzYWtzb24gZm9yIHRoZSBwYXRjaGVzCgl3aGljaCB0aGV5IHN1Ym1pdHRlZC48L3A+Cgo8cD5UaGUgVGV4dCB0ZWFtIHdvdWxkIGxpa2UgdG8gdGhhbmsgZXZlcnlvbmUgd2hvIGZpbGVkIGdvb2QgYnVnIHJlcG9ydHMgYW5kIGVuaGFuY2VtZW50IHJlcXVlc3RzLiBTcGVjaWFsIHRoYW5rcyBnbyB0bzogU2ViYXN0aWFuIERhdmlkcywKCUNocmlzdGlhbiBQbGVzbmVyIEhhbnNlbiwgSGlyb3l1a2kgSW5hYmEsIE1pY2hlbCBJc2hpenVrYSwgQW50b24gTGVoZXJiYXVlciwgQmVuamFtaW4gTXVza2FsbGEsIFBoaWxpcHBlIE9tYnJlZGFubmUgYW5kIE1heCBXZW5pbmdlci48L3A+CgkKPHA+VGhlIEpEVC9Db3JlIHRlYW0gd291bGQgbGlrZSB0byB0aGFuayB0aGUgZm9sbG93aW5nIGNvbnRyaWJ1dG9ycyBmb3IgdGhlaXIgcGF0Y2hlcyAoaW4gbm8gcGFydGljdWxhciBvcmRlcik6IE5pbmEgUmluc2theWEsIFBlcnJ5IEphbWVzLCBUb20gVHJvbWV5LCBFcmljIEpvZGV0PC9wPgoKPHA+VGhlIFRlYW0vQ1ZTL0NvbXBhcmUgdGVhbSB3b3VsZCBsaWtlIHRvIHRoYW5rIHRoZSBmb2xsb3dpbmcgY29udHJpYnV0b3JzIGZvciB0aGVpciAKcGF0Y2hlcyAoaW4gbm8gcGFydGljdWxhciBvcmRlcik6IE1hdHQgTWNDdXRjaGVuLCBCcm9jayBKYW5pY3phaywgS3J6eXN6dG9mIERhbmllbCwgClRvbWFzeiBaYXJuYSwgU2ViYXN0aWFuIERhdmlkcywgQXNoaXNoIEJpbGxvcmUsIEtyenlzenRvZiBNaWNoYWxza2ksIERtaXRyeSBLYXJhc2lrLApHcmFoYW0gQ29sbGluc29uLCBBbnRvaW5lIFRvdWxt6SwgUGV0ZXIgTW9vZ2ssIFBoaWxpcCBLLiBXYXJyZW4sIE1heCBXZW5pbmdlciwKQW5kcmV5IFRhcmFudHNvdiwgRXVnZW5lIEt1bGVzaG92LCBCZW5qYW1pbiBNdXNrYWxsYSwgV2lsbGlhbiBNaXRzdWRhLCBDaHJpc3RvcGhlIEVsZWssClJlbXkgQ2hpIEppYW4gU3VlbiwgYW5kIEFsZG8gQm9uZ2lvPC9wPgoKPHA+VGhlIEFudCB0ZWFtIHdvdWxkIGxpa2UgdG8gdGhhbmsgdGhlIGZvbGxvd2luZyBjb250cmlidXRvcnMgZm9yIHRoZWlyIHBhdGNoZXMgKGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpOiBCcm9jayBKYW5pY3phaywgRGFuaWVsIE1lZ2VydCwgRG9iZXMgVmFuZGVybWVlciwgTWF0dGhldyBDb253YXkuPC9wPgoKPHA+VGhlIFBsYXRmb3JtIFVJIHRlYW0gd291bGQgbGlrZSB0byB0aGFuazo8L3A+Cjx1bD4KICA8bGk+IFRvbSBTY2hpbmRsIGZvciBsb3RzIG9mIHNuaXBwZXRzLCBtYW55IGJ1Z2ZpeGVzIGFuZCBjb29sIG5ldyBmZWF0dXJlcyBpbiAKICAgIEpGYWNlLjwvbGk+CiAgPGxpPiBCcmFkIFJleW5vbGRzIGZvciBhbiBpbmNyZWRpYmxlIG51bWJlciBvZiBKVW5pdCB0ZXN0cywgYW5kIGZvciBoaXMgY29udHJpYnV0aW9ucyAKICAgIHRvIHRoZSBkYXRhIGJpbmRpbmcgZnJhbWV3b3JrLjwvbGk+CiAgPGxpPiBEYXZlIE9ybWUgZm9yIHNwcmVhZGluZyB0aGUgd29yZCBhYm91dCBkYXRhIGJpbmRpbmcuPC9saT4KICA8bGk+IFN0ZWZhbiBYZW5vcyBhbmQgUGV0ZXIgQ2VudGdyYWYgZm9yIGNvbnN0cnVjdGl2ZSBmZWVkYmFjayBvbiB0aGUgZGF0YSBiaW5kaW5nIAogICAgQVBJLjwvbGk+CiAgPGxpPiBNYXR0aGV3IEhhdGVtIGZvciBidWcgcmVwb3J0cywgYWx3YXlzIHdpdGggcGF0Y2hlcywgaW4gdGhlIGFyZWEgb2YgdGhlIAogICAgUkNQLjwvbGk+CiAgPGxpPiBCZW5qYW1pbiBNdXNrYWxsYSBmb3IgaGlzIG51bWVyb3VzIGZpeGVzIGFjcm9zcyBtYW55IHN1YmNvbXBvbmVudHMgYW5kIAogICAgaGlzIG9uZ29pbmcgd29yayBvbiBtdWx0aS1tb25pdG9yIHN1cHBvcnQgaW4gdGhlIEdvb2dsZSBTdW1tZXIgb2YgQ29kZTwvbGk+CiAgPGxpPiBTZWJhc3RpYW4gRGF2aWRzIGZvciBoaXMgbWFueSB5ZWFycyBvZiBoZWxwaW5nIHVzIHdpdGggVUkgcG9saXNoPC9saT4KICAgPGxpPlNoYWFuIEN1cnJ5IEhvdXNlIG9uIE1lcml2YWxlIFJvYWQgZm9yIG91ciB3ZWVrbHkgY3VycnkgZml4PC9saT4KCQkgPGxpPkFsbCBvZiB0aGUgZm9sa3Mgd2hvIGxvZ2dlZCBxdWFsaXR5IGJ1ZyByZXBvcnRzIG9yIGhlbHBlZCBhbnN3ZXIgIApxdWVzdGlvbnMgZm9yIG5ldyB1c2VycyBvbiAjZWNsaXBzZSAoaXJjLmZyZWVub2RlLm5ldCk8L2xpPgo8L3VsPgoKPHA+VGhlIFNXVCB0ZWFtIHdvdWxkIGxpa2UgdG8gdGhhbmsgZXZlcnlvbmUgd2hvIGZpbGVkIGJ1Z3MgYW5kIGhlbHBlZCBpbXByb3ZlIHRoZSB0b29sa2l0LiBTcGVjaWFsIHRoYW5rcyBnb2VzIHRvOgpBbmRyZXcgT3ZlcmhvbHQsIEJlbiBLb25yYXRoLCBCZW5qYW1pbiBQYXNlcm8sIEJvcmlzIEJva293c2tpLCBEYW5pZWwgTWVnZXJ0LCBFcmljIFppbW1lcm1hbiwgRmxvcmlhbiBQcmllc3RlciwgR2VvZmYgU3Ryb20sCkphdmllciBQZWRlbW9udGUsIEplZmYgV3UsIE1hdHRoZXcgSGFsbCwgTWF0dGhldyBIYXRlbSwgTWFydGluIEFlc2NobGltYW5uLCBNaWtoYWlsIFZvcm9uaW4sIE9sZWcgS3Jhc2lsbmlrb3YsIFBoaWwgTG9hdHMsClJ1dGdlciBPdmlkaXVzLCBTY290dCBLb3ZhdGNoIGFuZCBUb20gU2NoaW5kbC48L3A+Cgo8cD5UaGUgSW5zdGFsbC9VcGRhdGUgdGVhbSB3b3VsZCBsaWtlIHRvIHRoYW5rIEphbWVzIEQuIE1pbGVzIGFuZCBDaHJpcyBBbmlzemN6eWsgZm9yIG51bWVyaW91cyBwYXRjaGVzIGFuZCB0aW1lIHNwZW50IGRlYnVnZ2luZy4gSW4gCmFkZGl0aW9uLCB3ZSB3b3VsZCBsaWtlIHRvIHRoYW5rIHRoZSBmb2xsb3dpbmcgY29udHJpYnV0b3JzOiBDaGFubmluZyBXYWx0b24sIEJlbiBLb25yYXRoLCBKYWNlayBQb3NweWNoYWxhLCBDaHJpcyBHcmluZHN0YWZmLCAKSmFrdWIgSnVya2lld2ljeiwgTWFyayBNZWx2aW4sIFRob21hcyBXYXRzb24sIE5hbGluaSBHYW5hcGF0aSwgSm9yZGFuIExpZ2dpdHQsIFBhdHJpY2sgUm91bWFub2ZmLCBJa3VvIFlhbWFzYWtpIGFuZCBCSiBIYXJncmF2ZS48L3A+Cgo8cD5UaGUgUmVsZW5nIHRlYW0gd291bGQgbGlrZSB0byB0aGFuawo8dWw+Cgk8bGk+QW5kcmV3IE5pZWZlciwgUGFzY2FsIFJhcGljYXVsdCBhbmQgREogSG91Z2h0b24gZm9yIGFsbCB0aGVpciBpbXByb3ZlbWVudHMgdG8gYW5kIGFzc2lzdGFuY2Ugd2l0aCBQREUgQnVpbGQuPC9saT4KCTxsaT5UaGUgT3JiaXQgdGVhbSBmb3IgbWFraW5nIGxpZmUgYmV0dGVyIGZvciB0aGUgRWNsaXBzZSBjb21tdW5pdHkgYXMgYSB3aG9sZSBieSBzdGFuZGFyZGl6aW5nIGhvdyB0aGlyZCBwYXJ0eSBidW5kbGVzIGFyZSBwYWNrYWdlZCBhbmQgY29uc3VtZWQuPC9saT4KCTxsaT5Gculk6XJpYyBGdXNpZXJmb3IgaGlzIGV4dGVuc2l2ZSB0ZXN0aW5nIGFuZCBwYXRjaGVzIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGZyYW1ld29yay48L2xpPgoJPGxpPkRhdmlkIFdpbGxpYW1zIGZyb20gV1RQIGZvciBtYW5hZ2luZyB0aGUgT3JiaXQgYnVpbGQgcHJvY2Vzcy48L2xpPgoJPGxpPk1hcnRpbiBPYmVyaHViZXIgZnJvbSBXaW5kIFJpdmVyLCBEU0RQL1RNIGZvciBoaXMgcHJvbGlmaWMgYW5kIGV4Y2VsbGVudCBidWcgcmVwb3J0aW5nIG9uIGlzc3VlcyB3aXRoIHJlc3BlY3QgdG8gRXVyb3BhLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyB1cGRhdGUKCW1hbmFnZXIsIGFuZCBzaWduZWQgYW5kIHBhY2tlZCBqYXJzLjwvbGk+Cgk8bGk+VGhlIHRocmVlIGFtaWdvcyBvZiB3ZWJtYXN0ZXJzIC0gRGVuaXMsIE1hdHQgYW5kIEthcmwgZm9yIHRoZWlyIGV4cGVkaWVudCBhbmQgY2hlZXJmdWwgcmVzcG9uc2UgdG8gcmVxdWVzdHMgZm9yIGNoYW5nZXMgb3IgcXVlc3Rpb25zLjwvbGk+Cgk8bGk+T2xpdmllciBUaG9tYW5uIGZvciBoaXMgbnVtZXJvdXMgcGF0Y2hlcywgc3VnZ2VzdGlvbnMgYW5kIGFzc2lzdGFuY2U8L2xpPgoJPGxpPlN1cGVyIEplbm4gQ2hhcmxhbmQgZm9yIGhlciBleGNlbGxlbnQgbG9jYWwgSVQgc3VwcG9ydCwgYW5kIHRoZSByZXN0IG9mIHRoZSBJQk0gbGFiIElUIHRlYW0uPC9saT4JCgk8bGk+VGhlIFBsYXRmb3JtIFVJIHRlYW0gZm9yIGN1cnJ5IGFuZCBjb21wbGVtZW50YXJ5IGJldmVyYWdlcywgYW5kIEplZmYgTWNBZmZlciBmb3IgY2hvY29sYXRlPC9saT4JCgk8bGk+T3VyIHJlc3BlY3RpdmUgaHVzYmFuZHMgZm9yIHRoZWlyIGxvdmUgYW5kIHN1cHBvcnQgZHVyaW5nIGdvb2QgYnVpbGQgZGF5cyBhbmQgYmFkLjwvbGk+CQo8L3VsPjwvcD4=