Q0xFUkdZIFRSQUkgTklORyBDT1VSU0UKCmJ5CgpUaGUgUmV2LiBCcnVjZSBHLiBLaW5nc2xleSwgUGguRC4KfgpGb3Jld29yZAoKYnkKClRoZSBSdC4gUmV2LiBDaGFybGVzIEhhbXB0b24KCgotIC4KwrcgO0kuLi4gLi4KDCBDRS0yLjEKCgpGT1JFbFdPUkQKClRoZSBMaWJlcmFsIENhdGhvbGljIENodXJjaCBoYXMgYXQgcHJlc2VudCBubyBjb2xsZWdlIGZvciB0aGUgdHJhaW4tCmluZyBvZiBoZXIgcHJpZXN0cyAuIFN1Y2ggaW5zdGl0dXRpb25zIGFyZSB0aGUgZ3Jvd3RoIG9mIHllYXJzLCBhbmQgaGF2ZQp0byBiZSBidWlsdCBhbmQgc3VwcG9ydGVkIHdpdGggdGhlIGV4cGVuZGl0dXJlIG9mIGNvbnNpZGVyYWJsZSBzdW1zIG9mCm1vbmV5LiBBIGNvbW1pdHRlZSBvZiB0aGUgUHJvdmluY2lhbCBDbGVyaWNhbCBTeW5vZCBoYXMgdW5kZXJ0YWtlbiBhCnN0dWR5IG9mIENsZXJneSBDdWx0dXJlIGFuZCBFZHVjYXRpb24sIGJ1dCBhZ2FpbiBpdCB3aWxsIHRha2UgdGltZSB0bwp3b3JrIG91dCBhIHN0YW5kYXJkIHdoaWNoIGlzIGdlbmVyYWxseSBzYXRpc2ZhY3RvcnkgYW5kIHdoaWNoIHdpbGwgY29tLQptYW5kIHRoZSByZXNwZWN0IG9mIHRoZSB3b3JsZC4gRm9yIC5leGFtcGxlLCBzaW5jZSB0aGUgTGliZXJhbCBDYXRob2xpYwphcHByb2FjaCB0byB0aGUgQ2hyaXN0aWFuIFJlbGlnaW9uIGlzIHRoZW9zb3BoaWNhbCByYXRoZXIgdGhhbiBwcmltYXJpbHkKdGhlb2xvZ2ljYWwgLCBpdCB3aWxsIHRha2UgbW9udGhzIG9mIGRpc2N1c3Npb24gYXMgdG8gd2hhdCBpcyBvZiB2YWx1ZQphbmQgd2hhdCBpcyBub3Qgd29ydGggc3R1ZHlpbmcgaW4gdGhlIGZpZWxkIG9mIFRoZW9sb2d5LiBUaGUgZGVzY3JpcHRpdmUKd29yZCAidGhlb3NvcGhpY2FsIiBtZWFucyBrbm93bGVkZ2Ugb2YgR29kIH5kaXJlY3QgLiBwZXJjZXB0aW9uLCBhIHBocmFzZQppdHNlbGYgZGVtYW5kaW5nIHZhc3QgZWxhYm9yYXRpb24gLCBidXQgd2hpY2ggd2UgY2Fubm90IGRpc2N1c3MgZnVydGhlciBpbgphIG1lcmUgZm9yZXdvcmQgLiBUaGVvbG9neSwgb24gdGhlIG90aGVyIGhhbmQsIGRvZXMgbm90IG1lYW4gYXMgdGhlIGRpYy0KdGlvbmFyecK3IHB1dHMgaXQsIHRoZSBzY2llbmNlIG9mIEdvZCwgYnV0IHJhdGhlciB0aGUgc3BlY3VsYXRpb24gb2YgbWVuIDEgcwptaW5kcyBhYm91dCBHb2QsIHNpbmNlIGluIENocmlzdGVuZG9tIHRoZXJlIGFyZSB0aHJlZSBodW5kcmVkIGFuZCBmb3VyCnRoZW9sb2dpZXMgLCBhbmQgaW4gSGluZHVpc20gb3ZlciBzaXggaHVuZHJlZC4KUmVsaWdpb24gc2hvdWxkIGJlIGEgbWF0dGVyIG9mIGZpcnN0IGhhbmQgZXhwZXJpZW5jZSByYXRoZXIgdGhhbgpnaXZpbmcgb3V0IGF0IHNlY29uZCBvciBmb3VydGggaGFuZCB0aGUgb3BpbmlvbnMgb2YgZGVhZCB0aGVvbG9naWFuczsKeWV0IHRoZSBwcmllc3Qgc2hvdWxkIGtub3cgc29tZXRoaW5nIG9mIHRoZSAzMDQgdGhlb2xvZ2llcyBvZiBDaHJpc3RlbmRvbQppbiBvcmRlciB0byBiZSBhYmxlIHRvIG1lZXQgYWxsIG1lbiBvbiB0aGVpciBvd24gZ3JvdW5kIC4gQWdhaW4sIGEgbWFuJ3MKcHJheWVycyBhbmQgcHJlYWNoaW5nIHdpbGwgcmVmbGVjdCBoaXMgY29uY2VwdGlvbiBvZiBHb2QuIEEgR29kIHdobyBoYXMKdG8gYmUgcGxlYWRlZCB3aXRoLCBpbXBsb3JlZCwgYmVnZ2VkIG9yIHVyZ2VkIHRvIGNoYW5nZSBmcm9tIGFuZ2VyIHRvCmdlbnRsZW5lc3MgYW5kIGxvdmUsIGhhcyBubyBwbGFjZSBpbiB0aGUgTGliZXJhbCBDYXRob2xpYyBtaW5kLiBDb25zZS0KcXVlbnRseSAsIGFueSBwcmF5ZXJzLCBwc2FsbXMgb3IgYnltbnMgYmFzZWQgb24gc3VjaCBhIGZhbHNlIGNvbmNlcHRpb24Kd291bGQgc2NhcmNlbHkgYmUgd29ydGggc3R1ZHlpbmcgb3IgdXNpbmcsIGV4Y2VwdCBhcyBhIHN0dWR5IG9mIHRoZSBwcmltLQppdGl2ZSBtaW5kcyBvZiBtZW4gLgpUaGUgcHJlZmFjZSB0byBvdXIgTGkgdHVyZ3kgc2hvdWxkIGJlIHJlYWQgYW5kIHJlIH5yZWFkIHNpbmNlIHRoZSBjb24tCmNlcHRpb25zIG9mIEdvZCB0aGVyZSBtZW50aW9uZWQsIGluIGNvbnRyYXN0IHRvIG91ciBvd24sIGFyZSBzdGlsbCBjdXJyZW50CmluIG5lYXJseSBhbGwgZXhpc3RpbmcgY2h1cmNoZXMgaW4gY3J1ZGUgb3IgcmVmaW5lZCBmb3JtLiBUaGUgbGliZXJhbApDYXRob2xpYyBDaHVyY2ggZXhpc3RzLCAuZm9yIG9uZSByZWFzb24sIGJlY2F1c2UgaXQgcmVqZWN0cyBtYW55IG9mIHRoZQptaXNjYWxsZWQgIkNocmlzdGlhbiIgdGVhY2hpbmdzIG9mIHRoZSBlc3RhYmxpc2hlZCBjaHVyY2hlcy4gT25lIHdobwp3aXNoZXMgdG8gY2xpbmcgdG8gc3VjaD5+IGlkZWFzIG1pZ2h0IG5vdCBiZSBoYXBweSBpbiB0aGUgTGliZXJhbCBDYXRob2xpYwpDaHVyY2gsIGFsdGhvdWdoIGhlIG1heSBiZSBhIG1lbWJlciBpbiBnb29kIHN0YW5kaW5nLiBVc3VhbGx5LCB0aG9zZSB3aG8KZG8gbm90IGhvbmVzdGx5IGFjY2VwdCBvdXIgU3RhdH5tZW50IG9mIFByaW5jaXBsZXMsIGF0dGVtcHQgdG8gY2hhbmdlIG9yCm1vZGlmeSB0aG9zZSBwcmluY2lwbGVzOyBidXQgdGhpcyB0aGV5IGNhbm5vdCBkby4gV2UgbWlnaHQgcGFyYXBocmFzZSBhCnNlbnRlbmNlIGZyb20gdGhlIE1ldGhvZGlzdCBEaXNjaXBsaW5lOiAiQW5kIGRvIG5vdCBjaGFuZ2Ugb3VyIHByaW5jaXBsZXMKYnV0IHVwaG9sZCB0aGVtIC4gMTEKRHIuIEJydWNlIEdvcmRvbiBLaW5nc2xleSwgb25lIG9mIG91ciBwcmllc3RzLCBoYXMgd29ya2VkIG91dCwgd2l0aApteSBjb2xsYWJvcmF0aW9uICwgYSB0ZW50YXRpdmUgY291cnNlIG9mIHNlbGYtdHJhaW5pbmcgZm9yIGNhbmRpZGF0ZXMgZm9yCk9yZGVycywgd2hpY2ggZm9sbG93cyB0aGUgbmF0dXJhbCBzZXF1ZW5jZSBvZiB0aGUgTWlub3IgT3JkZXJzLCB3aGljaCBpbgp0dXJuIGFyZSBiYXNlZCB1cG9uIHRoZSBuYXR1cmFsIGNvbnN0aXR1dGlvbiBvZiBtYW4gLS0gcGh5c2ljYWwsIGVtb3Rpb24tCmFsLCBtZW50YWwgLCB0aGUgd2lsbCBhbmQgdGhlIHNvdWwuIFRoZSBoaWdoZXIgb3JkZXJzIGludm9sdmUgYSBzdGlsbAptb3JlIHN0cmVudW91cyB0cmFpbmluZyB3aGVyZWluIHRoZSBwcmllc3QgaXMgdGF1Z2h0IGhvdyB0byBleGVyY2lzZSBoaXMKaW5uZXIgcG93ZXJzIGluIGhpcyBhY3R1YWwgc2FjZXJkb3RhbCB3b3JrIGMgQSBtZXJlIGhpbnQgb2YgdGhpcyBpcyBnaXZlbgppbiB0aGUgZm9sbG93aW5nIG91dGxpbmUgLgpUaGlzIHByZXNlbnQgb3V0bGluZSBjb3Vyc2Ugb2Ygc2VsZi10cmFpbmluZyBpcyBub3QgaW50ZW5kZWQgdG8gdGFrZQp0aGUgcGwuYWNlIG9mIGEgY29sbGVnZSBlZHVjYXRpb24sIG9yIG9mIGFueSBmdXR1cmUgY291cnNlIG9mIHNlbWluYXJ5CnN0dWRpZXMgLiBJdCB3aWxsIGdpdmUgdGhlIGNhbmRpZGF0ZSBhIGZ1bGxlciB1bmRlcnN0YW5kaW5nIG9mIG91ciBTdGF0ZS0KbWVudCBvZiBQcmluY2lwbGVzICwgU3VtbWFyeSBvZiBEb2N0cmluZSwgYW5kIExpdHVyZ3kuIE5vIGNhbmRpZGF0ZSB3b3VsZApiZSBpbnRlbGxlY3R1YWxseSBvciBzcGlyaXR1YWxseSBob25lc3Qgd2hvIGFjY2VwdGVkIGFueSBvZiB0aGUgTWlub3Igb3IKTWFqb3IgT3JkZXJzIHdpdGhvdXQgZmlyc3Qgd2hvbGUtaGVhcnRlZGx5IGFjY2VwdGluZyBvdXIgU3RhdGVtZW50IG9mClByaW5jaXBsZXMuIFRvIGFjY2VwdCB0aGVzZSB1bmRlcmx5aW5nIHByaW5jaXBsZXMsIGl0IGlzIG5lY2Vzc2FyeSB0bwoMc3R1ZHksIGFuZCB0byBtZWRpdGF0ZSB1cG9uIHdoYXQgd2Ugc3R1ZHkuIFRoZSBvdXRsaW5lIHRoYXQgZm9sbG93cyB3aWxsCmdpdmUgdGhlIGd1aWRhbmNlIG5lY2Vzc2FyeS4gT2xlcmd5IGFyZSBhc2tlZCB0byBwdXQgdGhpcyBjb3Vyc2Ugb2YKc3R1ZHkgYmVmb3JlIGFsbCBjYW5kaWRhdGVzIGFuZCB0byBoZWxwIHRoZW0gdW5kZXJzdGFuZCB0aGUgdGVybXMgdXNlZCwKdW50aWwgc3VjaCB0aW1lIGFzIGl0IGlzIHBvc3NpYmxlIHRvIHRyYW5zbGF0ZSB0aGUgdmFyaW91cyB0aGVvc29waGljYWwKb3IgbmVlLVBsYXRvbmljIHRlcm1zIGludG8gbW9kZXJuIENocmlzdGlhbiB0ZXJtaW5vbG9neTsgZm9yIHdlIG11c3QgcmUtCm1lbWJlciB0aGF0IHRoZSBMaWJlcmFsIENhdGhvbGljIENodXJjaCBoYXMgbXVjaCBpbiBjb21tb24gd2l0aCB0aGUgbmVvLQpQbGF0b25pYyBwaGlsb1NwaHkgYXMgaXQgaXMgc28gY2xlYXJseSBzZXQgZm9ydGggaW4gdGhlIFN0YXRlbWVudCBvZgpQcmluY2lwbGVzLgpUZXh0IGJvb2tzIGdpdmluZyB0aGlzIG5lZS1QbGF0b25pYyBhcHByb2FjaCB0byBDaHJpc3RpYW5pdHkgYXJlCnRoZSBncmVhdCAubWVlZCBvZiB0aGUgQ2h1cmNoLCBidXQgaXQgaXMgb2J2aW91c2x5IHRvbyB5b3VuZyBhIG1vdmVtZW50CnRvIGhhdmUgcHJvZHVjZWQgaXRzIG93biB0ZXh0IGJvb2tzLiBJbiBhbGwgdW5pdmVyc2l0aWVzLCB0aGUgcHJvZHVjdGlvbgpvZiB0ZXh0IGJvb2tzIGlzIGEgbmV2ZXIgZW5kaW5nIHByb2Nlc3MsIHNpbmNlIHdoYXQgcGFzc2VzIGZvciBzY2llbmNlCnRvZGF5IG11c3Qgb2Z0ZW4gYmUgY2FzdCBhc2lkZSB0b21vcnJvdyBhcyBvYnNvbGV0ZS4gVGhlIG1hbiB3aG8gZWFybmVkCmEgdW5pdmVyc2l0eSBkZWdyZWUsIC0tIGxldCB1cyBzYXkgaW4gUHN5Y2hvbG9neSAtLSB0ZW4geWVhcnMgYWdvLCBhbmQKd2hvIGhhcyBub3Qga2VwdCB1cCB0byBkYXRlLCBoYXMgYSBkZWdyZWUgdGhhdCBtZWFucyB2ZXJ5IGxpdHRsZS4gU28gaXQKaXMgd2l0aCBEb2N0b3JzIG9mIERpdmluaXR5IGZyb20gdGhlIFJvbWFuLCBCYXB0aXN0LCBNZXRob2Rpc3QsIGFuZCBvdGhlcgpzZW1pbmFyaWVzLiBJdCBtb3N0bHkgbWVhbnMgdGhhdCBoZSBoYXMgcmVjZWl2ZWQgdHJhaW5pbmcgKG5vdCBhbHdheXMKZWR1Y2F0aW9uKSBhdCBhIGRlbm9taW5hdGlvbmFsIGluc3RpdHV0aW9uLCBiZWhpbmQgc2VjdGFyaWFuIHdhbGxzIHRoYXQKc2h1dCBvdXQgd2lkZXIga25vd2xlZGdlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSBvZiBtYW55IG9mIHRoZSBtZW4KYW5kIHdvbWVuIGNhbGxpbmcgdGhlbXNlbHZlcyAiRG9jdG9yIiBpbiB0aGUgVW5pdGVkIFN0YXRlcy4KVGhlcmUgaXMgbm8gbG9naWNhbCByZWFzb24gd2J5IG1pZC1WaWN0b3JpYW4gdGhlb2xvZ3kgc2hvdWxkIGhvbGQKdGhlIGZpZWxkIHRvZGF5IGFnYWluc3QgbW9yZSBhZHZhbmNlZCBjb25jZXB0aW9ucyBvZiBldm9sdXRpb24sIG1hbiBhbmQKR29kLCBvciB0aGF0IGRlZ3JlZXMgYmVzdG93ZWQgaW4gdGhlIG5hbWUgb2YgVGhlb2xvZ3kgc2hvdWxkIGJlIGdpdmVuCnRvbyBtdWNoIHJlc3BlY3QuIFRoZSBMaWJlcmFsIENhdGhvbGljIENodXJjaCBtdXN0IHdvcmsgb3V0IGl0cyBvd24Kc3RhbmRhcmRzLCB3aGljaCBzaG91bGQgYmUgaGlnaCwgZW1icmFjaW5nIGEga25vd2xlZGdlIG9mIHdvcmxkIGN1bHR1cmUsCmFsbCByZWxpZ2lvbnMsIHBoaWxvc29waGllcyBhbmQgc2NpZW5jZS4gSW4gdGhlIG1lYW50aW1lIHdlIG1heSB3ZWxsIGJlLQpnaW4gd2l0aCB0aGUgdHJhaW5pbmcgYW5kIGNvbnRyZcKxIG8uZiB0aGUgaHVtYW4gaW5zdHJ1bWVuICwgdGhlIEozRUgnIEJFPmwnbC0gXyBfIF8gXyBfX18sXywuLi4sCmFsaXR5LCBhcyBvdXRsaW5lZCBpbiB0aGUgZm9sbG93aW5nIGNvdXJzZSBvZiBzdHVkeS4KCgorIENIQVJMRVMgSEFNUFRPTgpSZWdpb25hcnkgQmlzaG9wIGZvciB0aGUKVW5pdGVkIFN0YXRlcyBhbmQgQ2FuYWRhLgoKTG9zIEFuZ2VsZXMsCkFzY2Vuc2lvbiwKMTk0MS4KDCDigKIK4oCiLgpDRS0yLjMKCgpUSEUgUEFUSCAnVE8gVEhFIFBSSUVTVEhPT0QKCi0nYnktCgpUaGUgwrdSZXYuIEJydWNlIEdvcmRvbiBLaW5nc2xleQoKUGggLiBELiAsIE51cyAu4oCiIEQuCgoKWW91IGFyZSBzZWVraW5nIGFkbWlzc2lvbiB0byBIb2x5IE9yZGVycyBpbiBvdXIgTGliZXJhbCBDYXRob2xpYwpDaHVyY2guIFRoaXMgc3RlcCBpcyBzbyBzZXJpb3VzIHRoYXQgbm9uZSBzaG91bGQgY29udGVtcGxhdGUgaXQgd2l0aG91dApyZWFsaXppbmcgYWxsIHRoYXQgaXMgZW50YWlsZWQuIEZvciBpdCBob2xkcyBvdXQgdGhlIG9wcG9ydHVuaXR5IGFuZCBhbC0Kc28gdGhlIC5vYmxpZ2F0aW9uIHRvIGVudGVyIHVwb24gYSBuZXcgbGlmZSB3aGljaCwgaWYgZm9sbG93ZWQgd2l0aCBjb24tCnN0YW50IGwgb3lhbHR5LCB6ZWFsLCB1bnNlbGZpc2huZXNzIGFuZCB1bmRlcnN0YW5kaW5nLCBzaG91bGQgbGVhZCB0byB0aGUKZmVldCBvZiBvdXIgTG9yZCBDaHJpc3QgSGltc2VsZiwgc28gdGhhdCwgaW4gaG93ZXZlciBodW1ibGUgYSB3YXksIHRoZQphc3BpcmFudCBtYXkgYmVjb21lIGFuIG91dHBvc3Qgb2YgSGlzIGNvbnNjaW91c25lc3MgYW5kIGEgZGlzcGVuc2VyIG9mCkhpcyBibGVzc2luZ3MgZmFyIGFuZCB3aWRlLiBUaGUgd29ybGQgc3RhbmRzIGluIG5lZWQgb2YgZmFpdGhmdWwsIGNvbnNlLQpjcmF0ZWQgc2VydmFudHMgb2YgdGhlIE1hc3RlciB3aG8gY2FuIGZlZWQgdGhlIGh1bmdyeSB3aXRoIHRoZSBicmVhZCBvZgp0aGUgaGlnaGVyIHdpc2RvbSwgYmVzdG93IHRoZSBzYWNyYW1lbnRhbCBnaWZ0cywgYWR2YW5jZSB0aGUgc3Bpcml0dWFsaXR5Cm9mIG1hbmtpbmQsIGFuZCBsZWFkIHRoZSBhZmZsaWN0ZWQgZnJvbSBlYXJ0aGx5IHNvcnJvdyBhbmQgcGFpbiB0byB0aGUKdmFsZSBvZiByZXN0IGFuZCBqb3kgd2hlcmUgZHdlbGxzIGluIHV0dGVyIGZ1bG5lc3MgdGhhdCBsb3ZlIG9mIEdvZCB3aGljaCwKbGlrZSB0aGUgcGVhY2Ugb2YgR29kLCBwYXNzZXRoIHVuZGVyc3RhbmRpbmcuCkJ1dCB0byBhY2NvbXBsaXNoIHRoZXNlIGZhci1yZWFjaGluZyBwb3NzaWJpbGl0aWVzIGEgcGVyaW9kIG9mIHRyYWluLQppbmcsIGludGVuc2UgYW5kIHVucmVtaXR0aW5nLCBpcyBlbWluZW50bHkgbmVjZXNzYXJ5LiBOb3RoaW5nIHNob3VsZCwgYW5kCm5vdGhpbmcgY2FuLCBzdGFuZCBpbiB0aGUgd2F5LCBwcm92aWRlZCB0aGF0IHRoZSBzZWVrZXIgYmUgc3VmZmljaWVudGx5Cm9uZS1wb2ludGVkIGluIGhpcyBkZXRlcm1pbmF0aW9uIHRvIG92ZXJjb21lIGFsbCBvYnMgdCBhY2xlcy4gMTEgVGhlIGRhaWx5CnJvdW5kLiwgdGhlIGNvbW1vbiB0IGEgc2sgLCAxMSAtIC0gZXZlcnl0aGkgbiBnLCBzbWFsbCBvciBncmVhdCAsIC0tIGlmIGRvbmUgd2kgdCBoCnBlcmZlY3Rpb24gYW5kIGxveWFsdHksIGNhbiBiZSBtYWRlIGEgc3RlcHBpbmctc3RvbmUgdG8gb3VyIGZpbmFsIGFjaGlldmUtCm1lbnQuIEVhY2ggcGVyc29uIHdlIG1lZXQgbWF5IGJlIGxvb2tlZCB1cG9uIGFzIGFuIG9wcG9ydHVuaXR5IGZvciB0aGUKZ2l2aW5nIGZvcnRoIG9mIHRoYXQgbG92ZSB3aGljaCwgYXMgcmVwcmVzZW50YXRpdmVzIG9mIHRoZSBNYXN0ZXIsIHNob3VsZApldmVyIGZpbGwgb3VyIGhlYXJ0cy4gV2l0aCB0aGlzIG1ldGhvZCBvZiBsaWZlIGFsd2F5cyBmb2xsb3dlZCwgYW5kCmNvdXBsZWQgd2l0aCB0aGUgbmVjZXNzYXJ5IGtub3dsZWRnZSwgd2UgYXJlIGJvdW5kIHRvIHN1Y2NlZWQsIGFuZCB1bHRpLQptYXRlbHkgdG8gYmVjb21lIG91cnNlbHZlcyBDaHJpc3RzIGluIG1pbmlhdHVyZS4KS25vd2xlZGdlLCB5ZXMsIHRoYXQgdG9vIG11c3QgYmUgb3VycyBpZiB3ZSBhcmUgdG8gbGVhZCBvdXIgZmxvY2tzCmFyaWdodC4gQSBncmVhdCBUZWFjaGVyIGhhcyByZW1hcmtlZCwgMTEgQWxsIGtub3dsZWRnZSBpcyB1c2VmdWwsIGFuZCBvbmUKZGF5IHlvdSB3aWxsIGhhdmUgYWxsIGtub3dsZWRnZTsgYnV0IHdoaWxlIHlvdSBoYXZlIG9ubHkgcGFydCwgdGFrZSBjYXJlCnRoYXQgaXQgaXMgdGhlIG1vc3QgdXNlZnVsIHBhcnQuIEdvZCBpcyBXaXNkb20gYXMgd2VsbCBhcyBMb3ZlOyBhbmQgdGhlCm1vcmUgd2lzZG9tIHlvdSBoYXZlLCB0aGUgbW9yZSB5b3UgY2FuIG1hbmlmZXN0IG9mIEhpbS4gU3R1ZHkgdGhlbiwgYnV0CnN0dWR5IGZpcnN0IHRoYXQgd2hpY2ggd2lsbCBtb3N0IGhlbHAgeW91IHRvIGhlbHAgb3RoZXJzLiAxMQpXaXRoIHRoZXNlIHdpc2Ugd29yZHMgaW4gbWluZCB3ZSBoYXZlIHNlbGVjdGVkIGEgc2V0IG9mIGJvb2tzIHdoaWNoLAphcyBhIHByZWxpbWluYXJ5LCB3aWxsIGJlIHdlbGwgd29ydGggc3R1ZHlpbmcgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBvci0KZGluYXRpb25zIGluIG91ciBDaHVyY2guIE90aGVyIGxpdGVyYXR1cmUgbWF5IGJlIGEgZGRlZCBmcm9tIHRpbWUgdG8gdGltZSwKYnV0IHRoZXNlIGJvb2tzIGF0IGxlYXN0IHdpbGwgZm9ybSBhIHNvbGlkIGJhc2lzLCBhbmQgdGhleSBzaG91bGQgaWYgcG9zLQpzaWJsZSBiZSBpbiB0aGUgbGlicmFyeSBvZiBldmVyeSBvbmUgb2Ygb3VyIGNsZXJneS4gVGhlaXIgcHVyY2hhc2Ugd2lsbAppbnZvbHZlIGEgY29uc2lkZXJhYmxlIGV4cGVuc2UsIGJ1dCBpdCBpcyB0YWtlbiBmb3IgZ3JhbnRlZSB0aGF0IHRob3NlCndobyB3aXNoIHRvIGRldm90ZSB0aGVpciBsaXZlcyB0byB0aGUgc2VydmljZSBvZiBDaHJpc3QncyBDaHVyY2ggZXhwZWN0CnRvIG1ha2UgYSBnb29kIG1hbnkgc2FjcmlmaWNlcyBvZiBtb25leSwgdGltZSBhbmQgc3RyZW5ndGguClRoZSB3b3JrcyB0byBiZSB1c2VkIG1heSBiZSBkaXZpZGVkIGludG8gdGhyZWUgY2F0ZWdvcmllczotCigxKSBCb29rcyB0byBiZSByZWFkIGNhcmVmdWxseTsKKDIpIEJvb2tzIHRvIGJlIHN0dWRpZWQgaW4gbWludXRlIGRldGFpbCwKc28gdGhhdCB0aGUgc3R1ZGVudCBtYXkgYmUgYWJsZSB0byBwYXNzCmFuIGV4YW1pbmF+aW9uIGluIHRoZWlyIGNvbnRlbnRzIGFuZCBpbgp0aGUgaW5mZXJlbmNlcyBhcmlzaW5nIGZyb20gdGhlbTsKDCBHRS0yLjQKCgooMykgQm9va3MgdG8gYmUgdXNlZCBhcyBndWlkZXMgdG8gaW5uZXIKbGlmZSBhbmQgc3Bpcml0dWFsIHVuZm9sZG1lbnQuClRoZSBib29rcyBpbiBDbGFzcyAoMSkgbWF5IGJlIGJvcnJvd2VkIGZyb20gYSBsaWJyYXJ5LCBpZiB0aGUgc3R1LQpkZW50IGNhbm5vdCBwdXJjaGFzZSB0aGVtLiBBbiBlZmZvcnQgd2lsbCBiZSBtYWRlIHRvIGVzdGFibGlzaCBhIENodXJjaApsZW5kaW5nIGxpYnJhcnkgZnJvbSB3aGljaCB0aGV5IG1heSBiZSBib3Jyb3dlZC4gQm9va3MgaW4gQ2xhc3MgKDIpIGFuZAooMykgc2hvdWxkIGJlIHB1cmNoYXNlZCBmb3IgdGhlIHN0dWRlbnQncyBvd24gcGVyc29uYWwgbGlicmFyeS4gQSBjYXRhLQpsb2cgb2YgdGhlIGJvb2tzIGFuZCBwYW1waGxldHMgZm9yIHN0dWR5LCB3aXRoIHByaWNlcyBhbmQgb3JkZXJpbmcgaW5mb3ItCm1hdGlvbiwgaXMgZ2l2ZW4gYXQgdGhlIGVuZCBvZiB0aGlzIG91dGxpbmUuCkl0IGlzIGhhcmRseSBuZWNlc3NhcnkgdG8gc3RhdGUgdGhhdCBpdCBpcyBhbiBlc3NlbnRpYWwgcHJlbGltaW5hcnkKZm9yIGFueW9uZSBzZWVraW5nIEhvbHkgT3JkZXJzIGluIHRoZSBMaWJlcmFsIENhdGhvbGljIENodXJjaCwgdG8gY2FyZS0KZnVsbHkgc3R1ZHkgdGhlICJTdGF0ZW1lbnQgb2YgUHJpbmNpcGxlcyBhbmQgU3VtbWFyeSB0byBEb2N0cmluZSAxMSBhbmQKdGhlIDExIExpdHVyZ3kiIC0tIGVzcGVjaWFsbHkgdGhlIHByZWZhY2UgLS0gdG8gYXNzdXJlIGhpbXNlbGYgdGhhdCBoZSBjYW4KaG9uZXN0bHkgYWNjZXB0IGFuZCB0ZWFjaCB0aGUgZnVuZGFtZW50YWwgdGVhY2hpbmdzIHRoZXJlaW4gc2V0IGZvcnRoLgpUaGVzZSB0d28gZG9jdW1lbnRzIG11c3QgdGhlcmVmb3JlIGZvcm0gdGhlIHN0YXJ0aW5nIHBvaW50IGluIGhpcyBzdHVkeS4KClRIRSBMSUJFUkFMIENBVEhPTElDIC5PUkRFUlMgLgoKVGhlIG9yZGluYXRpb25zIGV4aXN0aW5nIGluIG91ciBDaHVyY2gsIHdoaWNoIGhhdmUgYmVlbiBoYW5kZWQgZG93bgp1bmJyb2tlbiBmcm9tIHRoZSBlYXJsaWVzdCB0aW1lcywgYXJlIGRpdmlkZWQgaW50byB0d28gZ3JvdXBzLiBGaXJzdApjb21lIHRoZSBNaW5vciBPcmRlcnMsIGxhdGVyIHRoZSBNYWpvciBPcmRlcnMuIEF0IHRoZSBoZWFkIG9mIGVhY2ggZGktCnZpc2lvbiBpcyB3aGF0IG1heSBiZSBsb29rZWQgdXBvbiBhcyBhIHByZWxpbWluYXJ5IHN0ZXAuCgpNSU5PUiBPUkRFUlMKClByZWxpbWluYXJ5IHN0ZXA6IENsZXJpYwoxLiBEb29ya2VlcGVyCjIuIFJlYWRlcgozLiBFeG9yY2lzdAo0LiBBY29seXRlCk1BSk9SIE9SREVSUwoKUHJlbGltaW5hcnkgc3RlcDogU3ViIGRlYWNvbgoxLiBEZWFjb24KMi4gUHJpZXN0CjMuIEJpc2hvcApCZWZvcmUgcmVjZWl2aW5nIGVhY2ggb3JkaW5hdGlvbiB0aGUgY2FuZGlkYXRlIGlzIHJlcXVpcmVkIHRvIHN0dWR5Cm1vc3QgY2FyZWZ1bGx5IHRoZSByZW1hcmtzIHBlcnRhaW5pbmcgdG8gaXQgYm90aCBpbiB0aGUgTGl0dXJneSBvZiB0aGUKTGliZXJhbCBDYXRob2xpYyBDaHVyY2ggYW5kIGFsc28gaW4gdGhlIG1vbnVtZW50YWwgd29yaywgIlRoZSBTY2llbmNlIG9mCnRoZSBTYWNyYW1lbnRzLCIgYnkgb3VyIGxhdGUgUHJlc2lkaW5nIEJpc2hvcCwgQy4gVy4gTGVhIGRiZWF0ZXIuIEVzcGVjaWFsLQpseSBzaG91bGQgaGUgc3R1ZHkgdGhlIENoYXJnZXMgZ2l2ZW4gaW4gdGhlIHNldmVyYWwgT3JkZXJzLCBmb3IgdGhlc2Ugc2hvdwpmb3J0aCB0aGUgY2hhcmFjdGVyIHdvcmsgd2hpY2ggc2hvdWxkIGVuZ2FnZSB0aGUgaW5kaXZpZHVhbCBpbiBlYWNoIE9yZGVyLAphbmQgdGhlIHVuZm9sZG1lbnQgb2Ygd2hpY2ggaXQgaXMgb25lIGFpbSBvZiB0aGlzIGNvdXJzZSB0byBmb3J3YXJkLgoKVEhFIE1JTk9SIE9SREVSUwoKVEhFIE9SREVSIF9PRiBDTEVSSUMgLQoKVGhpcyBzaG91bGQgbWFyayB0aGUgYmVnaW5uaW5nIG9mIGEgZGVmaW5pdGUgZGVkaWNhdGlvbiB0byB0aGUgaGlnaC0KZXIgbGlmZS4gVGhlIG9yZGluYW5kIGlzIGV4cGVjdGVkIHRvIGhhdmUgYnJva2VuIGF3YXkgZnJvbSB0aGUgZW50aWNlbWVudHMKb2YgZWFydGguIFdoaWxlIHN0aWxsIGluIHRoZSB3b3JsZCwgaGUgc2hvdWxkIG5vdCBiZSBvZiB0aGUgd29ybGQuClRvIHByZXBhcmUgZm9yIHRoaXMgb3JkaW5hdGlvbiB3ZSBzdGFydCBmcm9tIHNvbGlkIGJlZHJvY2sgYW5kIHRoZXJlLQoMIENFLTIuNQoKCmZvciB1bmRlcnRha2UgdGhlIGNvbnRyb2wgb2YgdGhlIGxvd2VzdCBtYW5pZmVzdGF0aW9uLCB0aGUgcGh5c2ljYWwgYm9keSwKd2hpY2ggYW5jaG9ycyB1cyB0byBlYXJ0aC4gQWxsIGFydGlmaWNpYWxpdHkgbXVzdCBiZSBhdm9pZGVkLCAtIGF3a3dhcmQKZ2VzdHVyZXMsIHN0cmFuZ2UgbWFubmVyaXNtcywgc2xvdmVubHkgaGFiaXRzLCBleGFnZ2VyYXRlZCBzdGF0ZW1lbnRzLgpBbmQgaW4gdGhlaXIgcGxhY2Ugc2hvdWxkIGFyaXNlIGEgZGlnbml0eSBhbmQgY2hhcm0sIGEgYmVhdXR5IG9mIG1vdmVtZW50CmFuZCBzcGVlY2ggLS0gY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB0cnVlIHNwaXJpdHVhbCBub2JsZW1hbi4KVGhpcyBpcyB0aGUgdGltZSB0byBwcmFjdGljZSBhIGNhcmVmdWwgcHVyaWZpY2F0aW9uIG9mIHRoZSBwaHlzaWNhbApzeXN0ZW0sIGlmIHRoaXMgaGFzIG5vdCBhbHJlYWR5IGJlZW4gY29tbWVuY2VkLiBOb3RoaW5nIGNvYXJzZSwgdW5jbGVhbgpvciBwb2lzb25vdXMgc2hvdWxkIGVudGVyIHRoZSBib2R5IHdoaWNoIGhhcyBiZWVuIGNhbGxlZCB0aGUgdGVtcGxlIG9mCnRoZSBIb2x5IEdob3N0LiBUaGVyZWZvcmUgaG93IGNvdWxkIGEgc2VsZi1yZXNwZWN0aW5nIENsZXJpYyBwb2lzb24gaGlzCmJvZHkgd2l0aCBzdHVwaWZ5aW5nIGRydWdzLCB0b2JhY2NvLCBhbGNvaG9sLCBvciB0aGUgZmxlc2ggb2YgZGVhZCBhbmktCm1hbHM/IE9uZSB3b3VsZCB0aGluayBzdWNoIGhhYml0cyB0byBiZSBpbXBvc3NpYmxlIGZvciBhbnkgcGVyc29uIG9mCmZpbmVyIHR5cGUuIENsZWFybHkgdGhleSBhcmUgb3V0IG9mIGtlZXBpbmcgZm9yIGEgY29uc2VjcmF0ZWQgbWFuIG9mCkdvZC4gSG93IGNhbiBhIGZhaXRoZnVsIGZvbGxvd2VyIG9mIHRoZSBMb3JkIG9mIExvdmUgZGlzcmVnYXJkIHRoZSBjb20tCm1hbmQ6IDExIFRob3Ugc2hhbHQgbm90IGtpbGwiLCBhbmQgZGViYXNlIGhpbXNlbGYgYnkgZWF0aW5nIHRoZSBjb3Jwc2Ugb2YKYSBtdXJkZXJlZCBhbmltYWwgYnJvdGhlciBhbmQgdGhlbiBlbnRlciB0aGUgcHJlc2VuY2Ugb2YgdGhlIGJsZXNzZWQKTWFzdGVyIG9mIENvbXBhc3Npb24gd2l0aCBhIGxpZSBpbiBoaXMgaGVhIHJ0IGFuZCB3aXRoIGhhbmRzIGJlc21lYXJlZAp3aXRoIGJsb29kPwpUaGUgZm9sbG93aW5nIGJvb2tzIGFyZSB0byBiZSB1c2VkIGluIHByZXBhcmF0aW9uIGZvciB0aGlzIE9yZGVyIG9mCkNsZXJpYzoKCkNMRVJJQyAtLSBQaHlzaWNhbCAtLQoKKDEpIEZvciBDYXJlZnVsIFJlYWRpbmc6CgpUaGUgSGlkZGVuIFNpZGUgb2YgVGhpbmdzLCBieSBDLlcuIExlYWRiZWF0ZXIuCkNoYXB0ZXJzIDEgJiAyIEludHJvZHVjdG9yeQpDaGFwdGVyIDMgUGxhbmV0cwpDaGFwdGVyIDQgVGhlIFN1bgpDaGFwdGVyIDUgTmF0dXJhbCBTdXJyb3VuZGluZ3MKQ2hhcHRlciA4IENlcmVtb25pZXMKQ2hhcHRlciA5IFNvdW5kcwpDaGFwdGVyIDE0IE91ciBIYWJpdHMKQ2hhcHRlciAxNSBQaHlzaWNhbCBFbnZpcm9ubWVudAoKU29tZSBHbGltcHNlcyBvZiBPY2N1bHRpc20sIGJ5IEMuVy4gTGVhZGJlYXRlci4KQ2hhcHRlciBvbiBWZWdldGFyaWFuaXNtLgoKV2F5cyB0byBQZXJmZWN0IEhlYWx0aCwgYnkgSXJ2aW5nIFMuIENvb3Blci4KQSBjb250aW51YWwgZ3VpZGUgdG8KcGh5c2ljYWwgd2VsbC1iZWluZy4KCigyKSBGb3IgRGV0YWlsZWQgU3R1ZHk6CgpBbi4gT3V0bGluZSBvZiBUaGVvc29waHksIGJ5IEMuVy4gTGVhZGJlYXRlci4KCkNlcmVtb25pZXMgb2YgdGhlIExpYmVyYWwgQ2F0aG9saWMgUml0ZSwKYnkgSXJ2aW5nIFMuIENvb3Blci4KUGFydCAxLiBUaGUgU2FuY3R1YXJ5LCBldGMuClBhcnQgMiAoQSBwcGVuZGl4KSBUaGUgU2VydmVyIGF0IE1hc3MuCgooMykgRm9ydHBpLnJpdHVhbCBVbmZvbGRtZW50IChEYWlseSBSZWFkaW5nICYgTWVkaXRhdGlvbik6CgpBdCB0aGUgRmVldCBvZiB0aGUgTWFzdGVyLCBieSBKLiBLcmlzaG5hbXVydGkuCgwgQ0UtMi42CgoKLSBUSEUgT1JERVIgT0YgRE9PUktFRVBFUiAtCgpUaGUgdHJhaW5pbmcgb2YgdGhlIGVtb3Rpb25zIGlzIHRoZSBzcGVjaWFsIGR1dHkgb2YgdGhlIERvb3JrZWVwZXIuClRoaXMgaXMgc29tZXRoaW5nIGZhciBtb3JlIHRoYW4gYSBtZXJlIHByZXZlbnRpb24gb2YgdGhvc2UgZW1vdGlvbnMgd2hpY2gKYXJlIHVuZGVzaXJhYmxlLiBJdCBpcyBhIGRlZmluaXRlLCBwb3NpdGl2ZSwgZmFubmluZyBpbnRvIGZsYW1lIG9mIHRoZQpoaWdoZXIgZmVlbGluZ3MsIHNvIHRoYXQgdGhleSBzaGFsbCBmb3JtIGEgY29uc3RhbnQgYmFja2dyb3VuZCB0byB0aGUKbmF0dXJlLCBldmVyIHJlYWR5IHRvIHNwcmluZyBpbnRvIGFjdGlvbiB3aGVuIHRoZSBlbmVyZ2llcyBvZiB0aGUgbWFuCmFyZSByZWxlYXNlZCBmcm9tIG90aGVyIG9jY3VwYXRpb25zLiBJdCB3aWxsIGJlIG5vdGVkIHRoYXQgYWxsIHRoZSBmaW5lcgplbW90aW9ucyBsZWFkIHRvIGxvdmUuIFRoaXMgbWF5IGJlIHRoZSBsb3ZlIGZvciB0aG9zZSBtb3JlIGFkdmFuY2VkIHRoYW4Kb3Vyc2VsdmVzLCAtLSBsb3ZlIGZvciB0aGUgYmxlc3NlZCBDaHJpc3QsIGZvciB0aGUgTWFzdGVyLVNhaW50cywgZm9yIHRoZQpIb2x5IEFuZ2VscywgLS0gYSBsb3ZlIHJldHVybmVkIGJ5IFRoZW0gd2l0aCBhZGRlZCByaWNobmVzcyBpbW1lZGlhdGVseQppdCBpcyBvZmZlcmVkLiDCtyBJdCBtYXkgYmUgbG92ZSBmb3Igb3VyIGZlbGxvdyB0cmF2ZWxsZXJzIG9uIGxpZmUncyBwYXRoLQp3YXksIC0tIG91ciBmYW1pbHksIG91ciBmcmllbmRzLCBvdXIgY2hhbmNlIGFjcXVhaW50YW5jZXMsIG91ciBicmV0aHJlbgppbiBvdGhlciBsYW5kcyBhbmQgY2xpbWVzLiBJdCBtYXkgYmUgbG92ZSBmb3IgdGhvc2UgYXQgcHJlc2VudCBsb3dlciB0aGFuCndlIGluIHRoZSBncmVhdCBtYXJjaCBiYWNrIHRvIEdvZCwgLSBsb3ZlIGZvciBvdXIgeW91bmdlciBicm90aGVycywgdGhlCmFuaW1hbHMsIHRoZSBwbGFudHMsIGV2ZW4gdGhlIHRoaW5ncyBvZiB0aGUgbWluZXJhbCBraW5nZG9tIC0gdGhlIG9iamVjdHMKd2hpY2ggd2UgdXNlLCBzaW5jZSB0aGV5LCB0b28sIGhhdmUgbGlmZSB3aGljaCBpcyBzZWVraW5nIHRvIHRyYW5zY2VuZAp0aG9zZSByaWdpZCBlbmNhc2VtZW50cyBhbmQgcmVhY2ggYSB3aWRlciBmcmVlZG9tLiBUaGluayB3aGF0IGl0IHdpbGwKbWVhbiBpZiB0aGlzIGFsbC1lbWJyYWNpdmUgbG92ZSBzbyBmaWxscyBvdXIgaGVhcnRzIHRoYXQgZXZlcnl0aGluZywgZnJvbQp0aGUgaGlnaGVzdCB0byB0aGUgbG93ZXN0LCBpcyBpbmNsdWRlZCB3aXRoaW4gaXRzIG1pZ2h0eSBzcGFuIQpBIHJlbWFya2FibGUgaW52ZXN0bWVudCwgaW5kZWVkLCBpcyBMb3ZlLiBJdCBhZGRzIHRvIHRoZSBsb3ZlIG5hdHVyZQpvZiBib3RoIHRoZSBnaXZlciBhbmQgdGhlIHJlY2VpdmVyLiBJdCBiaW5kcyBtb3JlIGZpcm1seSB0aGUgcHJlY2lvdXMKbGluayBvZiBsb3ZlIHdoaWNoIHNob3VsZCB1bml0ZSB0aGUgd29ybGRzLiBXaGVuZXZlciBhIHRydWx5IHVuc2VsZmlzaApsb3ZlIGlzIGZlbHQgaXQgYmxlc3NlcyBhbGwgTmF0dXJlLCByYWlzaW5nIGl0IGFuIGluZmluaXRlc3NpbWFsIGRlZ3JlZQpvbiBpdHMgdXB3YXJkIGpvdXJuZXkuCkhlcmUgaXMgYSBsaXN0IG9mIGJvb2tzIHVzZWZ1bCBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIE9yZGVyIG9mIERvb3ItCmtlZXBlcjoKCkRPT1JLRUVQRVIgLS0gRW1vdGlvbmFsIC0tCgooMSkgRm9yIENhcmVmdWwgUmVhZGluZzoKClRoZSBIaWRkZW4gU2lkZSBvZiBUaGluZ3MsCkNoYXB0ZXIgMTAgUHVibGljIE9waW5pb24KQ2hhcHRlciAxNyBPdXIgQW11c2VtZW50cwpDaGFwdGVyIDE4IFdoYXQgV2UgQXJlCkNoYXB0ZXIgMjMgT3VyIFJlbGF0aW9ucyB0byBMb3dlciBLaW5nZG9tcwoKU29tZSBHbGltcHNlcyBvZiBPY2N1bHRpc20KKFJlbWFpbmRlciBvZiB0aGUgYm9vaykKClRoZSBJbm5lciBMaWZlLCBieSBDLiBXLiBMZWFkYmVhdGVyLgoKKDIpIEZvciBEZXRhaWxlZCBTdHVkeToKCkEgVGV4dGJvb2sgb2YgVGhlb3NvcGh5LCBieSBDLlcuIExlYWRiZWF0ZXIuCgpDZXJlbW9uaWVzIG9mIHRoZSBMaWJlcmFsIENhdGhvbGljIFJpdGUsClBhcnQgSUkgLSBUaGUgSG9seSBFdWNoYXJpc3QuCgooMykgRm9yIFNwaXJpdHVhbCBVbmZvbGRtZW50IChEYWlseSBSZWFkaW5nICYgTWVkaXRhdGlvbikKSSBQcm9taXNlLCBieSBDLiBKaW5hcmFqYWRhc2EuCkluIEhpcyBOYW1lLCBieSBDLiBKaW5hcmFqYWRhc2EuClRoZSBDb25zZWNyRSE6dGVkIExpZmUsLiBieSBDbGFyYSBRb2RkCgwgLSBUSEUgT1JERVIgT0YgUkVBREVSIC0KCkZvciB0aGlzIE9yZGVyPiB0aGUgdHJhaW5pbmcgb2YgdGhlIG1pbmQgaXMgdGhlIGVzcGVjaWFsIG9ibGlnYXRpb24uCkhvdyB0cnVseSBkb2VzIHRoYXQgZ3JlYXQgSGluZHUgc2NyaXB0dXJlLCB0aGUgQmhhZ2F2YWQgR2l0YSwgc3BlYWsgb2YKdGhpcyB1bnJ1bHkgbWVtYmVyLCB0aGUgbWluZCwgYXMgMTEgaGFyZCB0byBjdXJiIGFzIHRoZSB3aW5kLiAxMSBCdXQgYnkgY29uLQpzdGFudCBwcmFjdGljZSBpdCBjYW4gYmUgZG9uZS4KQXMgc29vbiBhcyB3ZSBjb21tZW5jZSBvdXIgZWZmb3J0cyBhdCBtZW50YWwgY29uY2VudHJhdGlvbiwgdGhlcmUKY29tZXMgdGhlIHJlYWxpemF0aW9uIHRoYXQgdGhpcyB3YW5kZXJpbmcgbWluZCBpcyBub3Qgb3VyIHJlYWwgc2VsZi4gSXQKaXMgYSBnaWZ0IGZyb20gR29kIGJlc3Rvd2VkIHVwb24gdXMgZm9yIHVzZSBpbiB0aGUgaGVscGluZyBvZiBvdXIgZmVsbG93cy4KQSBkdWxsLCBmZWVibGUgbWluZCBpcyBub3QgbmVhcmx5IHNvIHZhbHVhYmxlIGZvciB0aGlzIHB1cnBvc2UgYXMgYSBrZWVuLAplZmZpY2llbnQgbWluZC4gTm8gdGhvdWdodHMgc2hvdWxkIGV2ZXIgcGFzcyB0aHJvdWdoIG91ciBtaW5kIHdoaWNoIGFyZQpub3QgdHJ1ZSwga2luZCBhbmQgaGVscGZ1bC4gQnkgY29yb211bmljYXRpbmcgcGVyZmVjdGx5IHRoZSByZXN1bHRzIG9mCm91ciBzdHVkaWVzIHRvIG90aGVycywgd2UgbWF5IHNvIGluc3BpcmUgdGhlbSB0aGF0IHRoZXkgYWxzbyB3aWxsIGRldmVsb3AKdGhlaXIgbWluZHMgdG8gZnVsbGVyIGV4cHJlc3Npb24gYW5kIHNvIGdpdmUgb3V0IHRoZSBXaXNkb20gdG8gZXZlci13aWRlbi0KaW5nIGdyb3VwcyBvZiBwZW9wbGUgLiBBbmQgc28gYW4gZW5kbGVzcyBjaGFpbiBtYXkgYmUgYnVpbHQgd2hpY2ggaW4gcmUtCnN1bHRzIGZvciBnb29kIGNhbiBsb25nIG91dGxpdmUgb3VyIGVhcnRobHkgdXNlZnVsbmVzcyBhbmQgaW5mbHVlbmNlIGdlbi0KZXJhdGlvbnMgeWV0IHVuYm9ybiAuIMK3CkFwcHJvcHJpYXRlIGhvb2tzIHQgbyBiZSB1c2VkIGluIHByZXBhcmF0aW9uIGZvciB0aGlzIE9yZGVyIG9mIFJlYWRlcgphcmUgYXMgZm9sbG93czoKClJFQURFUiAtLSBNZWh0YTEKCigxKSBGb3IgQ2FyZWZ1bCBSZWFkaW5nOgoKVGhlIEhpZGRlbiAuIFNpZGUgb2YgVGhpbmdzLApDaGFwdGVyIDE2IE1lbnRhbCBDb25kaXRpb25zCkNoYXB0ZXIgMTkgV2hhdCBXZSBUaGluawpDaGFwdGVyIDIxIENvbGxlY3QgaSB2ZSBUaG91Z2h0CgpUaG91Z2h0IEZvcm1zICwgYnkgRHIuIEE6XyBCZXNhbnQgYW5kIEMuVy4gTGVhZC0KYmVhdGVyLgoKKDIpIEZvciBEZXRhaWxlZCBTdHVkeSA6CgpDb25jZW50cmF0aW9uOiBBIFByYWN0aWNhbCBDb3Vyc2UsCmJ5IEVybmVzdCBXb29kLgooUHJhY3RpY2UgdGhlIGV4ZXJjaXNlcyBnaXZlbiB0aGVyZWluKQoKQ2VyZW1vbmllcyBvZiB0aGUgTGliZXJhbCBDYXRob2xpYyBSaXRlICwKUGFydCBJSUkgLCBPdGhlciBTZXJ2aWNlcyBhbmQgT2ZmaWNlcyAuCgooMykgRm9yIFNwaXJpdHVhbCBVbmZvbGRtZW50OgoKTWVkaXRhdGlvbiBmb3IgQmVnaW5uZXJzLCBieSBKIC4gSSAuIFdlZGd3b29kLgooRm9yIHByYWN0aWNlIHVzZSB0aGUgcHJldmlvdXMgYm9va3MgLiApCgpOb3RlOiBEdXJpbmcgdGhpcyBwZXJpb2Qgb2YgcHJlcGFyYXRpb24sIHRoZSBjYW5kaWRhdGUgZm9yIFJlYWRlciBzaG91bGQKbWFrZSBjZXJ0YWluIHRoYXQgaGUgaXMgYWJsZSB0byByZWFkIGFsb3VkIGNsZWFybHkgYW5kIGJlYXV0aWZ1bGx5IC0tIGEKdGhpbmcgZmV3IHBlb3BsZSBjYW4gcmVhbGx5IGRvLiBHZXQgYSBnb29kIHNjaG9vbCB0ZWFjaGVyIHRvIGdpdmUgc29tZQpwcml2YXRlIHR1dG9yaW5nIGV2ZW5pbmdzLiBJbiBtb3N0IGNpdGllcyBvbmUgY2FuIGZpbmQgYSByZWNvcmRpbmcgc3R1ZGlvCndoaWNoIHdpbGwgbWFrZSBhIDExIHRyYW5zY3JpcHRpb24gMTEgcmVjb3JkIG9mIG9uZSAxIHMgdm9pY2UgZm9yIGFib3V0IHR3bwpkb2xsYXJzLiBXaGVuIG9uZSBmZWVscyB0aGEgdCBvbmUgaGFzIGF0dGFpbmVkIHN1aXRhYmxlIHByb2ZpY2llbmN5IGluCnJlYWRpbmcsIHN1Y2ggYSByZWNvcmQgc2hvdWxkIGJlIG1hZGUsIGFuZCBvbmUgY2FuIGxlYXJuIGEgZ3JlYXQgZGVhbCBmcm9tCml0IGluIHJlZ2FyZCB0byBwZWN1bGlhcml0aWVzIG9mIGVudW5jaWF0aW9uLCB0b25lIG9mIHZvaWNlLCBjbGFyaXR5LCBldGMuCgwgT0UtMi44CgoKUmVhZGluZyBib29rcywgbWFnYXppbmVzLCBldGMuIGFsb3VkIHRvIHNvbWVvbmUgaW4gdGhlIGhvbWUgaXMgZXhjZWxsZW50CnByYWN0aWNlLCBhbmQgc2hvdWxkIGJlIGRvbmUgZnJlcXVlbnRseS4gT25lIHdobyBpcyB0byBtaW5pc3RlciB0byB0aGUKcHVibGljIGNhbm5vdCBiZSB0b28gY2FyZWZ1bCBpbiB0aGVzZSBtYXR0ZXJzLiBUaGUgQ2h1cmNoIHdpbGwgYmUganVkZ2VkCmJ5IGl0cyBtaW5pc3RlcnMuIFRoZWlyIGN1bHR1cmUgYW5kIGVkdWNhdGlvbiB3aWxsIGJlIGp1ZGdlZCB2ZXJ5IGxhcmdlLQpseSBieSB0aGVpciBzcGVlY2guCklmIG9uZSBjYW4gYWZmb3JkIHRoZSBjb3N0IChhYm91dCAkNjApIGEgc21hbGwsIGhvbWUtcmVjb3JkaW5nIG91dC0KZml0IHdpdGggbWljcm9waG9uZSBpcyBhIGdyZWF0IGhlbHAuIExhcmdlciBjaHVyY2hlcyBzaG91bGQgaGF2ZSB0aGVzZQpmb3IgdXNlIGluIHRyYWluaW5nIHRoZWlyIGNsZXJneSwgYXMgd2VsbCBhcyBmb3Igb3RoZXIgcHVycG9zZXMuCgwgMH4yLjE5CgoKQVBQRU5ESVgKCkNhdGFsb2cgYW5kIFByaWNlIExpc3QgYmYgUmVjb21tZW5kZWQgQm9va3MKCk5PVEU6IFRoaXMgbGlzdCBpcyBkaXZpZGVkIGludG8gdHdvIHNlwrdjIHRpb25zIDstIEdsfnNzICgxKSBhcmUgYm9va3MgZm9yCiJjYXJlZnVsIHJlYWRpbmciIGFuZCBtYXkgYmUgYm9ycm93ZWQgb3IgcmVhZCBhdCBhIGxpYnJhcnkuIEhveS8tCmV2ZXIsIGl0IGlzIGhpZ2hseSByZWNvbW1lbmTCt2UgZCB0aGF0IHRoZSBwcm9zcGXCt2N0aXZlIFByaWVzdCBvYnRhaW4KYXMgbWFueSBvZiB0aGVtIGFzIHBvc3NpYmxlIGFzIGEuIMK3bnVjbGV1c8K3IGZvciBoaXMgZnV0dXJlIHBhcmlzaApsaWJyYXJ5Li4gQ2xhc3MgKDIpIGFuZCAoMykgYXJlIGJvb2tzIGZvciDCt2RldCBhaWxlZCBzdHVkankgYW5kIG1lZGktCnRhdGlvbiwgYW5kIHNob3RsbGQgaWYgYXQgYWxsIHBvc3NpYmxlIGJlIG93bmV0bCBieSB0aGUgc3R1ZGVudCDigKIuCkl0IMK3IGlzIHByb2JhYmxlIHRoYXQgYWxsIHRoZSBib29rcyBsaXN0ZWQgLmNhbiBiZSBvYnRhaW5lZCB0aHLCt28gdWdoIMK3CnRoZSBTdCAuLSBBbGJhbiBQcmVzcy7CtyBJbiB0aGUgbGlzdCB0aGUgYXBwcm94aW1hdGUgcHJpY2VzIC4uIGFyZSBnaXZlbi4KUHVibGlzaGVycyBhcmUgc2hvd24gYnkgaW5pdGlhbHMgaW4gYnJhY2tldHMsLiAoUy5BLi1QLikgaW5kaWMmdGluZyDCtwp0aGUgU3QgLi4gQWxiYW4gUDpyZXNzICwsIChULlAuwrcpIC4gdGhlIFRoZW9zb3BoaWNhbCBQcmVzcyAsLiAoVC4nLiBQwrc6SC4pIHRoZQpUaGVvc28ncGhpY2FsIC5QdWJsaXNoaW5nIEhvdXNlLi4gT3RoZXIgcHVibGlzaGVycyBhcmUgZ2k6dmVuIC1pIG4gOmYndWxMCkNvbmNlcm5pbmcgMT8taGUgYXV0aG9yOlN+ajrCtyDCt2l0IHNob3VsZCBiZSBub3RlZCB0aGF0IHRoZSBKIC4uci4gV2VkZ3dvb2QKbGlzdGVkIGlzIG91ciBmaXJzdCBQcmVzaWRpbmcgQmlzaG9wLCBDLlcuIExlYWRiZWF0ZXIgdGhlIHNlY29uZCwKYW5kIEZ+IFcuwrcgUGlnb3R0IHRoZSB0aGlyZCBhbmQgcHJlc2VudC4uIEkuIFMuIENvdXBlciBpcyBvdXIgbGF0ZQpSZWdpb25hcnksIEdlb2ZmcmV5IEhvZHNvbiBpcyBxLiBQcmllc3QsIMK3SS9yLiBBbm5pZSBCZXNhbnQgd2NpOnMsIGFuZApNci4gOkPigKIgSmluYXJhamFkYXNhIGlzLC4gYSBncmVhdCBmcmllbmQgb2YgdGhlIEwgYy5vLiwuIGFzIGFsc28gUHJvLmYgLgpFcm5lc3QgV29vZC4KCgpUaGUgSGlkZGVuIFNpZGUgLW9mIFRoaW5ncyAtIC0gLSAtIC0gLSAtIGMudy4gTGVhZGJlYXRlciAoVCDigKJQLikKU29tZSBHbGltcHNlcyBvZiBPY2N1bHRpc20gSUkgSUkgSUkgSUkKClRoZSBJbm5lciBMaWZlIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gSUkgSUkgSUkgMTEKCkkgbnZpc2libGUgSGVscGVycyAtIC0gLSAtIC0gLSAtfi0tLX4tLS1+IElJIElJIElJIDExCgpEcmVhbXM6IFdNdCBUaGV5IEFyZSDCt2FuZCBIb3cKVGhleSBhcmUgQ2F1c2VkIC0gLSAtIC0gLSBJSSBJSSBJSSBJSSAsNzUKTWFuIC4gVmlzaWJsZSBhbmQgSW52aXNpYmxlIElJIGxsIElJIElJCjUuMDAKQ2xhaXJ2b3lhbmNlIC0gLSAtIC0gLSAtIC0gSUkgSUkgSUkgSUkKMS43NQpUaGUgT3RoZXIgU2lkZSBvZiBEZWF0aCAtIC0gLSAtIC0gLSAtIC0gSUkgSUkgMTEgSUkKNS4wMApHbGltcHNlJ3Mgb2YgTWFzb25pYyBIaXN0b3J5IC0gLSAtIC0gLSAtIElJIElJIElJIDExCjQuMDAKVGhlIEJlZ2lubmluZ3Mgb2YgdGhlIFNpeHRoClJvb3QgUmFjZSBJSSBJSSBJSSBJSSAyLjAwClRoZSBNYXN0ZXJzIGFuZCB0aGUgUGF0aCAtIC0gLSBJSSBJSSAxMSBJSQozLjAwClRob3VnaHQgRm9ybXMsLiBEci4gQS4gQmVzYW50ICYgQy5XLiBMRWxhZGJlYXRlciAoVC5mLikgMy4yNQpXYXlzIHRvIFBlcmZlY3QgSGVhbHRoIC0gLSAtIC0gLi4nLiAtIElydmluZyBzLiBDb29wZXIgKFQuUC4pIDEuMDAKZmxceXN0aWNpc20gLi4uIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSB+ci4gQS4gQmVzYW50IChULlAuKSAxLjI1CkEgU3R1ZHkgaW4gQ29uc2Npb3VzbmVzcyBJSSBJSSBJSSBJSSBJSQotMiAuMDAKRm91ciBHcmVhdCBSZWxpZ2lvbnMsLi0gLSAtIC0gLSAtIC0gSUkgSUkgSUkgSUkgSUkgMS4wMApUaGUgQW5nZWxpYyBIb3N0cyBHZW9mZnJleSBIb2Rzb24gKFQuUC4pIDEuNzUKVGhlIElubmVyIFNpZGUgb2YgQ2h1cmNoIFdvcnNoaXAgLSBJSSBJSSBJSSBJSSBJSQoxLjAwCmZsJ2x2c3RpY2lzbSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSBFdmVseW4gVW5kZXJoaWxsIChULlAuKSA1LjAwClZhcmlldGllcyBvZiBQc3ljaGlzbSwgLSAtIC0gLSAtIC0gLSAtIC0gSi4gSS4gV2VkZ3dvb2QgKCBULlDCty4gKSAsLjc1CkFydCBhbmQgLnRoZSBFbW90aW9ucyBDIH4gSmluYXJhamFkYXNhIChULlAuKSAsMzUKVGhlIERpdmluZSBWaXNpb24gLSAtIElJIElJIElJIMK3IDExIElJCjEuMDAKVGhlIC5HcmVhdCBUZWFjaGVycyAtIC0gLSAtIC0gLSAtIC0gLSBIZXJiZXJ0IFdoeXRlICgrLlAuKSAsNzUKVGhlIERlY2xpbmUgYW5kLiBGYWxsIG9mIHRoZSBSb21hbgpFbXBpcmUsICgyIFZvbHMgLiApIEdpYmJvbiAoYWJvdXQpIDMuMDAKKE1vZGVybiBMaWJyYXJ5IFNlcmllcywuIGF0IGxvY2FsIGJvMGtzZS5sIGxlciBzKQpBIFNob3J0IEhpc3Rvcnkgb2YgdGhlIEpld3MgLSAtIC0gLSAtIC0gQ2xlbWVudCBXb29kIHthYm91dCkgLjEwCihIYWxkZW1hbiBKdWxpdXMgMTFCbHVlIEJvb2siIHNlcmllcykKDCDigKIKCkNFLTIuMjAKCgpSZWxpZ2lvbnMgYW5kIFBoaWxvc29waGllcyBpbiB0aGUgVS5TLkEuIC0gSnVsaXVzIEEuIFdlYmVyCihXZXR6ZWwgUHVibGlzaGluZyBDby4sIElubi4sIExvcyBBbmdlbGVzKSAoYWJvdXQpICcgJDMuMDAKQ0xBU1MgaTNsXyBBTkQgX0xsbCBCT09LIExJU1QKCkFuIE91dGxpbmUgb2YgVGhlb3NvcGh5IC0gLSAtIC0gLSAtIGMuIHcuIExlYWRiZWF0ZXIgKFQuIFAuKSAuNDUKQSBUZXh0Ym9vayBvZiBUaGVvc29waHkgLSAtIC0gLSAtIC0gLSAtIEkgSSBJSSBJSSBJSSBJSSBJSQoxLjI1ClRoZSBTY2llbmNlIG9mIHRoZSBTYWNyYW1lbnRzIElJIElJIElJIElJIElJIElJCjUuMDAKVGhlIENocmlzdGlhbiBDcmVlZCAtIC0gLSAtIC0gSUkgSUkgSUkgSUkgSUkgSUkKMy4wMApUaGUgSGlkZGVuIFNpZGUgb2YgQ2hyaXN0aWFuCkZlc3RpdmFscyAtIC0gLSAtIC0gLSAtIDExIDExIElJIElJIElJCihTLkEgLiBQIC4gKSA0LjAwClRhbGtzIG9uIHRoZSBQYXRoIG9mIE9jY3VsdGlzbQooMyBWb2xzLiktIC0gLSAtIC1Eci4gQS4gQmVzYW50ICYgQy4gVy4gTGVhZGJlYXRlciAoVCAuUC4pIDkuMDAKVGhvdWdodCAtUG93ZXIsIEl0cyBDb250cm9sIGFuZApDdWx0dXJlIC0gLSAtIC0gLSAtIC0gLSBEci4gQS4gQmVzYW50IChUIC5QLikgMS4yNQpUaGUgTGF3cyBvZiB0aGUgSGlnaGVyIExpZmUgLSAtIC0gLSAtIC0gMTEgSUkgSUkgSUkgSUkKLjI1CkluIHRoZSBPdXRlciBDb3VydCAtIC0gLSAtIC0gLSAtIC0gMTEgSUkgSUkgSUkgSUkKMS4wMApUaGUgRG9jdHJpbmUgb2YgdGhlIEhlYXJ0IC0gLSAtIC0gLSAxMSBJSSBJSSBJSSBJSQosMzUKVGhlIEFuY2llbnQgV2lzZG9tIElJIElJIElJIElJIElJCjIuMjUKRXNvdGVyaWMgQ2hyaXN0aWFuaXR5IC0gLSAtIC0gLSAtIDExIElJIElJIElJIElJCjIuMjUKQ2VyZW1vbmllcyBvZiB0aGUgTGliZXJhbCAuLgpDYXRob2xpYyBSaXRlIChsb29zZS1sZWFmKSAtIC0gLSAtIElydmluZyBTLiBDb29wZXIgKFMuQS5QLikgMi41MApNZWRpdGF0aW9uIGZvciBCZWdpbm5lcnMgLSAtIC0gLSAtIEouIEkuIFdlZGd3b29kIChULlAuKSAuMzUKUmVsaWdpb24gZm9yIEJlZ2lubmVycyAtIC0gLSAtIC0gRi4gdy4gUGlnb3R0IChULlAuSC4pIDEuNzUKVGhlIFBhcnRpbmcgb2YgdGhlIFdheXMgLSAtIC0gLSAxMSAxMSAxMSAxMSAxMSAxLjI1CkkgUHJvbWlzZSAtIC0gLS0gLSAtIC0gQy4gSmluYXJhamFkYXNhIChULlAuKSAsNzUKSW4gSGlzIE5hbWUgLSAtIC0gMTEgMTEgMTEgMTEgMTEgLjUwCm9pLi4uLi47Ozs7Li4uXyBfX19fX19fXyBUaGUgTGF3IG9mLiBDaHJpc3QgLSAtIC0gLSBfIDExIDExIDExCjIuNWMgLS0iPT0tLS0tLS0uLi4uLT06CkxlY3R1cmUgTm90ZXMgLSAtIC0gSUkgSUkgSUkgSUkgMTEKMS4yNQpBdCB0aGUgRmVldCBvZiB0aGUgTWFzdGVyIC0gLSAtIC0gLSBKLiBLcmlzaG5hbXVydGkgSUkKLjUwClRoZSBDb25zZWNyYXRlZCBMaWZlIC0gLSAtIC0gLSBDbGFyYSBNLiBDb2RkIElJICw3NQpDb25jZW50cmF0aW9uOiBBIFByYWN0aWNhbCBDb3Vyc2UgRXJuZXN0IFdvb2QgSUkKMS4wMApNZW1vcnkgVHJhaW5pbmcgLSAtIC0gLSAtIC0gLSAtIC0gSUkgSUkgSUkgSUkKMS4yNQpUaGUgSW1pdGF0aW9uIG9mIENocmlzdCAtIC0gLSAtIC0gU3QuIFRob21hcyBhIEtlbXBpcyA/PwooQW55IGJvb2sgc3RvcmUgaGFzIG9yIGNhbiBnZXQgaXQpCkNyZWRvIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSBXLiBILiBQaXRraW4gKFMuQS5QLikgLjE1ClRodXMgSGF2ZSBJIEhlYXJkIC0gLSAtIC0gLSAtIC0gLSBHZW9mZnJleSBIb2Rzb24gKFQuUC4pIDEuMjUKU3RhdGVtZW50IG9mIFByaW5jaXBsZXMsIFN1bW1hcnkKb2YgRG9jdHJpbmUsIGFuZCBUYWJsZSBvZiB0aGUKQXBvc3RvbGljIFN1Y2Nlc3Npb24gaW4gdGhlIEwuQy5DLi0gKFMuQS5QLikgLjE1CkxpdHVyZ3kgb2YgdGhlIEwuQy5DLiAobm93IG91dCBvZiBwcmludCkgSUkgMS43NQoMIENFLTIuOQoKCi0gVEhFIE9SREVSIE9GIEVYT1JDSVNUIC0KClRoZSBvcmRpbmF0aW9ucyBvZiBDbGVyaWMsIERvb3JrZWVwZXIgYW5kIFJlYWRlciBoYXZlIGJlZW4gcHJvY2VlZC0KLmluZyBpbiBhbiBhc2NlbmRpbmcgc2VyaWVzLCBiZWluZyBpbnRlbmRlZCB0byBhY3QgcmVzcGVjdGl2ZWx5IG9uIHRoZQpwaHlzaWNhbCBib2R5LCBvbiB0aGUgZW1vdGlvbnMgYW5kIG9uIHRoZSBtaW5kLiBOb3cgd2UgY29tZSB0byB0aGUgb3ItCmRpbmF0aW9uIG9mIEV4b3JjaXN0IHdoaWNoIGlzIGVzcGVjaWFsbHkgY29uY2VybmVkIHdpdGggdGhlIHdpbGwsIGFuZAp3aGljaCBpcyBpbnRlbmRlZCB0byBkZXZlbG9wIHRoaXMgd2lsbCBhbmQgdG8gZ2l2ZSB0aGUgc291bCBmdWxsZXIgY29udHJvbApvZiBpdHMgbG93ZXIgc2VsZi4KQWxsIHRob3NlIHdobyBlbnRlciB0aGUgcmFua3Mgb2YgQ2hyaXN0J3MgY2xlcmd5IHdpbGwgZmluZCBpdCBhbiBhZC0KdmFudGFnZSB0byBrbm93IGJ5IGFjdHVhbCBleHBlcmllbmNlLCBzbyBmYXIgYXMgbWF5IGJlLCB0aG9zZSB0aGluZ3Mgb2YKd2hpY2ggdGhleSBzcGVhayAuIFRoZXkgY2FuIHRoZW4gY29tZSBpbnRvIGEgY2xvc2VyIHBlcnNvbmFsIGNvbXJhZGVzaGlwCndpdGggdGhlIHJlY2lwaWVudHMgb2YgdGhlaXIgYWR2aWNlLiBFeGFtcGxlIGlzIGFsd2F5cyBiZXR0ZXIgdGhhbiBwcmUtCmNlcHQuIElmIHRoZSBjbGVyZ3kgdGhlbXNlbHZlcyBoYXZlIGF0dGFpbmVkIG1hc3Rlcnkgb3ZlciB0aGVpciBsb3dlcgpuYXR1cmVzLCBob3cgbXVjaCBtb3JlIGVmZmVjdGl2ZSB3aWxsIGJlIHRoZWlyIHNhZ2Ugd29yZHMgb2YgY291bnNlbCBhcwp0aGV5IHN0YW5kIHNpZGUgYnkgc2lkZSwgaW4gdXRtb3N0IGJyb3RoZXJob29kLCB3aXRoIHRoZSBhc3BpcmluZyBtZW1iZXJzCm9mIHRoZWlyIGZsb2NrLiBUaGVyZWZvcmUsIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgd2lsbCBpcyBvZiBlbm9ybW91cwppbXBvcnRhbmNlIHNvIHRoYXQgd2UgY2FuIG92ZXJjb21lIG91ciBtYW55IGZyYWlsdGllcyBhbmQgaGVscCBvdXIgYnJldGhyZW4KdGhlIGJldHRlciB0byBkbyB0aGUgc2FtZS4gQnV0IGluIHRoZSBnaXZpbmcgb2Ygb3VyIHdpZGVyIGtub3dsZWRnZSBsZXQKdGhlcmUgYmUgbmV2ZXIgYW55IGNvbGRuZXNzIG5vciBhdXN0ZXJpdHksIGJ1dCBhbHdheXMgYSBoZWFydCBmaWxsZWQgd2l0aApzeW1wYXRoeSBhbmQgbG92ZS4KTm90aWNlIHRoYXQgYXQgdGhpcyBvcmRpbmF0aW9uIHRoZSBCaXNob3AgaGFuZHMgdGhlIGNhbmRpZGF0ZSBhCnN3b3JkLCB3aGljaCBpcyBhIHN5bWJvbCBvZiB0aGUgd2lsbC4gQ29tcGFyZSB0aGlzIHN3b3JkIHdpdGggdGhlIFN3b3JkCm9mIHRoZSBTcGlyaXQsIG1lbnRpb25lZCBpbiBKb2huIEJ1bnlhbidzIFBpbGdyaW0ncyBQcm9ncmVzcyBhbmQgd2l0aCB0aGUKTmVlZGZ1bCBTd29yZCBvZiBTaWVnZnJpZWQgaW4gUmljaGFyZCBXYWduZXIncyBSaW5nIG9mIHRoZSBOaWJlbHVuZywgYQp3b3JrIG9mIGRlZXAgaW5uZXIgc2lnbmlmaWNhbmNlLiBCZWZvcmUgdGhlIGNvbnF1ZXJpbmcgU3dvcmQgb2YgdGhlIFdpbGwsCmRpZmZpY3VsdGllcyBzaG91bGQgdmFuaXNoIGFzIGhhcnNobmVzcyBpcyBuZWNlc3NhcnksIGJ1dCByYXRoZXIgdGhlIGlyLQpyZXNpc3RpYmxlIHdhcm10aCBvZiBhbiBhbGwtY29tcGVsbGluZyBMb3ZlIGd1aWRlZCBieSBXaXNkb20uIFN1Y2ggV2lzZG9tCmkgcyBzeW1ib2xpIHplZCBieSB0aGUgQm9vayAtLSB0aGUgb3RoZXIgdG9rZW4gYmVzdG93ZWQgYXQgdGhlIGhhbmRzIG9mIGhlCkJpc2hvcCAuCkhlcmUgaXMgYSBoZWxwZnVsIGNvdXJzZSBwcmVwYXJhdG9yeSB0byB0aGlzIE9yZGVyIG9mIEV4b3JjaXN0OgoKRVhPUkNJU1QgV2lsbCAtLQoKKDEpIEZvciBDYXJlZnVsIFJlYWRpbmc6CgpUaGUgSGlkZGVuIFNpJmUgb2YgVGhpbmdzLApDaGFwdGVyIDYgwrcuIE5hdHVyZSBTcGlyaXRzCkNoYXB0ZXIgNyBDZW50ZXJzIG9mIE1hZ25ldGlzbQpDaGFwdGVyIDExIE9jY2FzaX5uYWwgRXZlbnRzCkNoYXB0ZXIgMTIgVW5zZWVuIEJlaW5ncwpDaGFwdGVyIDEzIE91ciBBdHRpdHVkZSBUb3dhcmRzIFRoZXNlCkluZmx1ZW5jZXMKQ2hhcHRlciAxNCBXaGF0IFdlIERvCgpJbnZpc2libGUgSGVscGVycywgYnkgQy4gVy4gTGVhZGJlYXRlci4KCkRyZWFtcyAsIGJ5IEMuIFcuIExlYWRiZWF0ZXIuCgpUaGUgQW5nZWxpYyBIb3N0cywgYnkgR2VvZmZyZXkgSG9kc29uIC4KCigyKSBGb3IgRGV0YWlsZWQgU3R1ZHk6CgpUaG91Z2h0IFBvd2VyLCBJdHMgQ29udHJvbAphbmQgQ3VsdHVyZSwgYnkgRHIgLiBBLiBCZXNhbnQuCgwgQ0UtMi4xMAoKCk1lbW9yeSBUcmFpbmluZywgYnkgRWx0bmVzdCBXb29kLgoKQ2VyZW1vbmllcyBvZiB0aGUgTGliZXJhbCBDYXRob2xpYyBSaXRlLApQYXJ0IElWIC0gVGhlIExpdHVyZ2ljYWwgWWVhci4KCigzKSBGb3IgU3Bpcml0dWFsIFVuZm9sZG1lbnQ6CgpUaGUgTGF3cyBvZiB0aGUgSGlnaGVyIEpMaWZlLCBieSBEci4gQeKAoiAuQmVzYW50LgooRm9yIGFzc2ltaWxhdGlvbiBhbmQgcHJhY3RpY2UuIENvbi0KdGludWUgbWVkaXRhdGlvbiBvbiBwcmV2aW91cyBib29rcy4pCgpOb3RlOiBEdXJpbmcgdGhpcyBwZXJpb2Qgb2YgcHJlcGFyYXRpb24sIHRoZSBjYW5kaWRhdGUgZm9yIEV4b3JjaXN0CnNob3VsZCBhZGQgdG8gaGlzIGFiaWxpdHkgdG8gcmVhZCB3ZWxsIGFsb3VkLCB0aGUgYWJpbGl0eSB0byBzcGVhayB3ZWxsCmluIHB1YmxpYy4gRm9yIHRoaXMgLml0IGlzIHJlY29tbWVuZGVkIHRoYSB0IGhlIGF0dGVuZCBhIHB1YmxpYyBzcGVha2luZwpjbGFzcywgaWYgb25lIGlzIGF2YWlsYWJsZSBpbiBldmVuaW5nIHNlc3Npb25zIGF0IGEgbG9jYWwgc2Nob29sIG9yIEFkdWx0CkVkdWNhdGlvbiBwcm9qZWN0LiBUaGVyZSBzaG91bGQgYmUgY29uc3RhbnQgcHJhY3RpY2UgaW4gbWFyc2hhbGxpbmcgb25lJ3MKa25vd2xlZGdlIGFuZCBvbmUncyB0aG91Z2h0cyBpbiBhIGxvZ2ljYWwgbWFubmVyIGFuZCBwcmVzZW50aW5nIHRoZW0gY2xlYXItCmx5LCBjb25jaXNlbHkgYW5kICdiZWF1dGlmdWxseSwgYm90aCBpbiB3cml0aW5nIGFuZCB2b2NhbGx5LiBPbmUgc2hvdWxkCm5lZ2xlY3Qgbm8gb3Bwb3J0dW5pdHkgdG8gYWRkcmVzcyBhIGdhdGhlcmluZywgZm9yIGVhY2ggc3VjaCBleHBlcmllbmNlLAppZiBhcHByb2FjaGVkIHdpdGggc3VpdGFibGUgcHJlcGFyYXRpb24sIHdpbGwgZnVybmlzaCBtb3N0IHZhbHVhYmxlIHByYWMtCnRpY2UuIFRoZSByZW1hcmtzIGluIHRoZSBub3RlIHRvIHRoZSBPcmRlciBvZiBSZWFkZXIgYXBwbHkgd2l0aCBlcXVhbApmb3JjZSBpbiB0aGUgYXJ0IG9mIHNwZWFraW5nIG9yIHdyaXRpbmcuIFJlbWVtYmVyLCBhbG1vc3QgYW55IG1hbiB3aXRoCmdvb2QgbHVuZ3MgY2FuIGxlYXJuIHRvIGhhcnJhbmd1ZSBhbiBhdWRpZW5jZSBmb3IgYW4gaG91ciBhbmQgYSBoYWxmLAprZWVwaW5nIHRoZW0gZW50ZXJ0YWluZWQsIC0gYnV0IHdpdGggYSBzcGVlY2ggZXZlcnkgd29yZCBvZiB3aGljaCB3aWxsCmJlIC4uIGZvcmdvdHRlbiBieSB0aGUgbmV4dCBkYXkuIEl0IHRha2VzIHNvbWUgcmVhbCBncmVhdG5lc3MgdG8gYmUgYWJsZQp0byBnZXQgYWNyb3NzIGEgbWVzc2FnZSBpbiBhIGZldyB3ZWxsLWNob3NlbiBwaHJhc2VzLCBpbiBhIG1hbm5lciB3aGljaApjYXIgcmllcyBjb252aWN0aW9uIGFuZCB3aGljaCB3aSBsIGwgaSBtcHJlc3MgYW5kIHN0aXIgb25lJ3MgaGVhciBlcnMgYW5kCm1vdmUgdGhlbSB0byBjaGFuZ2UgdGhlaXIgbGl2ZXMuIExpbmNvbG7CtycgcyBHZXR0eXNidXJnIMK3IEFkZHJlc3MgaS5zIGFuIG91dC0Kc3RhbmRpbmcgbW9kZWwgZm9yIGFsbCB0aW1lIG9mIHRoZSBhY21lIG9mIHB1YmxpYyBzcGVha2luZy4KDCBUaGUgb3JkaW5hdGlvbiB0byB0aGlzIE9yZGVyIGlzIGludGVuZGVkIHRvIHN0aW11bGF0ZSB0aGUgaW50dWl0aW9uLgpUaGlzIHJlbWFya2FibGUgZmFjdWx0eSBpcyBoaWdoZXIgYW5kIG1vcmUgZGlyZWN0IHRoYW4gdGhlIG1pbmQuIENvbS0KcGFyZWQgd2l0aCBpdHMgcmFwaWRpdHkgb2YgYWN0aW9uLCB0aGUgb3JkaW5hcnkgbWVudGFsIHByb2Nlc3NlcyBzZWVtCnNsb3cgYW5kIGN1bWJyb3VzIGluZGVlZC4gRm9yIHdoZW4gaXQgaGFzIGJlZW4gcGVyZmVjdGVkLCBhZnRlciBsb25nIGFuZApwZXJzaXN0ZW50IGVmZm9ydCwgaXRzIHBvc3Nlc3NvciBpcyBlbmFibGVkIGluZmFsbGlibHkgYW5kIGluc3RhbnRhbmVvdXMtCmx5IHRvIGRpc3Rpbmd1aXNoIHRydXRoIGZyb20gZXJyb3IuIFNob3VsZCBoZSBkZXNpcmUgaW5mb3JtYXRpb24gdXBvbgphbnkgc3ViamVjdCwgdGhlIGFuc3dlciB3aWxsIGJlIGltbWVkaWF0ZWx5IGZvcnRoY29taW5nLiBFdmVyeSBhc3BlY3Qgb2YKdGhlIHByb2JsZW0gd2lsbCBiZSBzcHJlYWQgbGlrZSBhbiBvcGVuIGJvb2sgYmVmb3JlIGhpcyBhd2FrZW5lZCBnYXplLgpIZSB3aWxsIHNlZSBhdCBhIGdsYW5jZSB0aGUgbWFueSByYW1pZmljYXRpb25zIGFyaXNpbmcgZnJvbSB0aGUgY2F1c2VzCnNldCBhdCB3b3JrLCBhbmQgd2l0aCB1bmVycmluZyB2aXNpb24gaGUgd2lsbCBub3RlIHRoZSBpbmV2aXRhYmxlIGNvbmNsdS0Kc2lvbi4gU2hvdWxkIGhlIHdpc2ggdG8gaGVscCBhIGZlbGxvdyBtb3J0YWwgYW5kIHNlZWsgdGhlIG1vc3QgZWZmZWN0aXZlCm1lYW5zIG9mIHNvIGRvaW5nLCBoZSBjYW4gZW50ZXIgaW50byB0aGF0IHBlcnNvbidzIHZlcnkgY29uc2Npb3VzbmVzcywKc2VlaW5nIHRoaW5ncyBhcyBoZSBzZWVzIHRoZW0sIHNlbnNpbmcgaGlzIHRob3VnaHRzLCBzaGFyaW5nIGhpcyBzb3Jyb3dzCmFuZCBsaW1pdGF0aW9ucywgZW50ZXJpbmcgaW50byBoaXMgam95cy4gU3VjaCBhIG1hZ25pZmljZW50IHBlcmZlY3Rpb24Kb2YgdGhpcyBmYWN1bHR5IGlzIHZlcnkgcmFyZSBpbmRlZWQsIGFuZCB0YWtlcyBtYW55IHllYXJzLCAtLSB5ZXMsIG1hbnkKbGl2ZXMgLS0gdG8gYWNoaWV2ZS4gQnV0IGl0IGlzIHdvcnRoIGFsbCB0aGUgZWZmb3J0IGV4cGVuZGVkIHNpbmNlIGl0CmJyaW5ncyBpbnRvIGNvbnRyb2xsZWQgYWN0aXZpdHkgdGhhdCB3aGljaCBoYXMgYmVlbiBjYWxsZWQgInRoZSBDaHJpc3QKU3Bpcml0IiB3aGljaCBzZWVrcyBldmVyIHRvIHBvdXIgaXRzZWxmIGZvcnRoIHVucmVzZXJ2ZWRseSBmb3IgdGhlIHVwLQpsaWZ0aW5nIG9mIHRoZSB3b3JsZC4gR3JlYXQgbXVzaWNpYW5zLCBwYWludGVycywgaW52ZW50b3JzLCBwaGlsYW50aHJvLQpwaXN0cyBzb21ldGltZXMgZ2V0IGZsYXNoZXMgb2YgdGhpcyBncmVhdCBmYWN1bHR5LCBhbmQgdGhlbiBhcyBxaGlja2x5CnRoZSBpbnNwaXJhdGlvbiBpcyB3b250IHRvIHZhbmlzaC4gSG93ZXZlciwgd2Ugd2hvIGFyZSBwbGVkZ2VkIHRvIHRoZQpob2x5IHNlcnZpY2Ugb2YgdGhlIE1hc3Rlciwgd291bGQgZG8gd2VsbCB0byB0cmFpbiBvdXJzZWx2ZXMgd2l0aCB0aGUKZml4ZWQgZGV0ZXJtaW5hdGlvbiB0byBkZXZlbG9wIGFuZCBob2xkIHRoaXMgcG93ZXIsIG5vdCBmb3Igc3Bhc21vZGljCmVmZm9ydHMgYnV0IGZvciBhIGNvbnN0YW50IHVzZSB3aGVuZXZlciB0aGUgbmVlZCBhcmlzZXMuIEV2ZW4gdGhvdWdoIHRoZQpmdWxuZXNzIG9mIHRoaXMgcG93ZXIgbWF5IG5vdCBiZSBhdHRhaW5lZCBpbiB0aGlzIGxpZmUsIHdlIGF0IGxlYXN0IG1heQp1bmZvbGQgdGhlIGZpcnN0IHN0YWdlcyBlZiBpdHMgdXNlZnVsIG5hdHVyZSBhbmQgc28gaW5jcmVhOnMtZSBvdXIgb3dlcsK3XywuLC0ucC4uLi0uLi0tLS4uLi4tLS0Kc2VydmljZSBtYW5pZm9sZC4gTGV0IHVzIHRyeSB0byBmZWVsIGludGVuc2UgbG92ZSBmb3IgZXZlcnkgcGVyc29uIHdlCm1lZXQsIHRvIHBsdW1iIHRoZSBkZXB0aHMgb2YgaGlzIGJlaW5nIHdpdGggYSB2aWV3IHRvIGdpdmluZyBvdXIgdW5kaXZpZC0KZWQgc3ltcGF0aHkgYW5kIGhlbHAuIEhvd2V2ZXIgcG9vciwgaG93ZXZlciBvbGQsIGhvd2V2ZXIgdW5hdHRyYWN0aXZlCm91ciBuZWlnaGJvciBtYXkgYmUgLCBsZXQgdXMgc2hvd2VyIGhpbSB3aXRoIGEgc3VzdGFpbmVkIGFmZmVjdGlvbiBhbmQKdW5kZXJzdGFuZGluZy4gVGhlbiBzb21lIGhhcHB5IGRheSB0aGUgZmxvb2RnYXRlcyBvZiB0aGlzIHd0bWRyb3VzIGZhY3VsLQp0eSBvZiB0aGUgaW50dWl0aW9uIHdpbGwgYmUgb3BlbmVkLiBXZSBzaGFsbCBrbm93IGJleW9uZCBhIGRvdWJ0IHRoYXQgaW4KYSBtYXJ2ZWxsb3VzIHdheSB3ZSBhcmUgdGhlIHNhbWUgY29uc2Npb3VzbmVzcyBhcyBvdXIgYnJvdGhlciwgYmUgaGUgaHVtYW4sCmFuaW1hbCBvciBhbnkgb3RoZXIgZm9ybSBvZiBleGlzdGVuY2UgLiBBbmQgd2Ugc2hhbGwgcHJvdmUgdGhlIHN1YmxpbWUKdHJ1dGggdGhhdCB0aGVyZSBpcyBidXQgT25lIExpZmUgd2hpY2ggaXMgR29kLgpIZWxwZnVsIHJlYWRpbmcgZm9yIHRoaXMgT3JkZXIgb2YgQWNvbHl0ZSBpcyBnaXZlbiBhcyBmb2xsb3dzOgoKKDEpIEZvciBDYXJlZnVsIFJlYWRpbmc6CgpNeXN0aWNpc20sIGJ5IERyLiBBLiBCZXNhbnQuCgpNeXN0aWNpc20sIGJ5IEV2ZWx5biBVbmRlcmhpbGwuCgpWYXJpZXRpZXMgb2YgUHN5Y2hpc20sIGJ5IEouIEkuIFdlZGd3b29kLgoKQXJ0IGFuZCB0aGUgRW1vdGlvbnMsIGJ5IEMuIEppbmFyYWphZGFzYS4KClRoZSBEaXZpbmUgVmlzaW9uLCBieSBDLiBKaW5hcmFqYWRhc2EuCgpUaGUgSW5uZXIgU2lkZSBvZiBDaHVyY2ggV29yc2hpcCwgYnkgR2VvZmZyZXkgSG9kc29uLgoMIENFLTIuMTIKCgooMikgRm9yIERldGFpbGVkIFN0dWR5OgoKSW4gdGhlIDAxIWx0ZXIgQ291cnQsIGJ5IERyLiBBLiBCZXNhbnQuCgpDZXJlbW9uaWVzIG9mIHRoZSBMaWJlcmFsIENhdGhvbGljIFJpdGUsClBhcnQgViwgRXBpc2NvcGFsIEZ1bmN0aW9uczsKCigzKSBGb3IgU3Bpcml0dWFsIFVuZm9sZG1lbnQ6IChEYWlseSByZWFkaW5nICYgbWVkaXRhdGlvbikKCsK3VGhlIERvLmMgdHJpbmUgb2YgdGhlIEhlYXJ0LCBieSBEci4gQS4gQmVzYW50LgoKVGhlIExhdyBvZiBDaHJpc3QsIGJ5IEMuIEppbmFyYWphZGFzYS4KClRoZSBJbWl0YXRpb24gb2YgQ2hyaXN0LCBieSBTdC4gVGhvbWFzIGEgS2VtcGlzLgoMIENFLTIuMTMKCgpUSEUgTUFKT1IgT1JERVJTCgotIFRIRSBTVUJESUFDT05BVEUgLQoKV2Ugbm93IGNvbWUgdG8gdGhlIE1ham9yIE9yZGVycyB3aGljaCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZQpTdWJkaWFjb25hdGUsIGNvbmZlciBkZWZpbml0ZSBwb3dlcnMuIFRoZSBTdWJkZWFjb24gaXMsIGluIGEgd2F5LCBhbgphcHByZW50aWNlIHRvIHRoZSBEZWFjb24gYW5kIGl0IGlzIGhpcyBkdXR5IHRvIHByZXBhcmUgaGltc2VsZiBmb3IgdGhhdApoaWdoZXIgb3JkaW5hdGlvbiAudG8gdGhlIERpYWNvbmF0ZSB3aGljaCBzaG91bGQgZm9sbG93IGluIHRoZSBjb3Vyc2Ugb2YKdGltZS4gwrdUaGUgQmlzaG9wIGFzc2lzdHMgaGltIGluIHRoaXMgdGFzayBvZiBwcmVwYXJhdGlvbiBieSB3aWRlbmluZwp0aGUgZW9ubmVjdGlvbiBiZXR3ZWVuIGhpcyBzb3VsIG9yIGVnbyBhbmQgaGlzIHBlcnNvbmFsaXR5LiBUaGlzIGlzIGEKd2lzZSBwcm9jZWR1cmUgYmVjYXVzZSBhdCB0aGUgRGlhY29uYXRlIG9yZGluYXRpb24gYSBsaW5rIHdpbGwgYmUgbWFkZQpiZXR3ZWVuIHRoaXMgdmVyeSBzb3VsIG9mIHRoZSBjYW5kaWRhdGUgYW5kIHRoZSBDaHJpc3QgSGltc2VsZi4gVGh1cwp0aGVyZSBtdXN0IGJlIGFuIGFtcGxlIHBhdGh3YXkgYWwub25nIHdoaWNoIHRoZSBwcmVjaW91cyBpbmZsdWVuY2UgbWF5CnBhc3MuClRoZSBzb3VsIGl0c2VsZiBpbiBpdHMgaGlnaGVyIG1lbnRhbCByZWFsbSBtdXN0IGFsc28gcmVjZWl2ZSBpdHMKYXBwcm9wcmlhdGUgdHJhaW5pbmcuIEl0IGlzIHRvIGJlIHN0cmVuZ3RoZW5lZCBieSBsb2Z0eSB0aG91Z2h0cyBhbmQKYWJzdHJhY3QgLmlkZWFzLiBBIHNlcmVuZSBhbmQgam95b3VzIGF0dGl0dWRlIHNob3VsZCBpbnZhcmlhYmx5IGJlIG1haW4tCnRhaW5lZC4gQnkgY29uc3RhbnQgd2F0Y2hmdWxuZXNzIG92ZXIgdGhlIGxvd2VyIG5hdHVyZSwgYnkgdGhlIG1vc3QgZWwtCmV2YXRlZCBhY3Rpdml0eSBvZiB0aGUgbWluZCBhbmQgYnkgZmVydmVudCBzYW5jdGl0eSBvZiBsaWZlIGl0IHdpbGwgcmVhZC0KaWx5IGJlIHNlZW4gdGhhdCB0aGUgU3ViZGVhY29uIHdpbGwgcHJlcGFyZSBoaW1zZWxmIHRvIHJlY2VpdmUgdGhlIG1heGltdW0KYmVuZWZpdCB3aGVuIGF0IHRoZSBuZXh0IG9yZGluYXRpb24gdGhlIGxpbmsgaXMgbWFkZSB3aXRoIGhpcyBMb3JkLgpJbiBoaXMgcHJlcGFyYXRvcnkgc3R1ZHkgZm9yIHRoaXMgb3JkZXIgb2YgU3ViZGVhY29uLCB0aGUgY2FuZGlkYXRlCnNob3VsZCBhZGQgY29uc2lkZXJhYmx5IHRvIGhpcyBnZW5lcmFsIGtub3dsZWRnZSBieSBzdHVkeWluZyBwbGVudGlmdWxseQpzdWNoIHRoaW5ncyBhcyBhcmUgcmVxdWlzaXRlIGFuZCBuZWNlc3NhcnkgZm9yIHRoZSBjbGVyZ3kgb2Ygb3VyIENodXJjaC4KRmRyIGJ5IHRoZSB0aW1lIHRoYXQgdGhlIG5leHQgb3JkaW5hdGlvbiwgdGhhdCBvZiB0aGUgRGVhY29uLCBpcyBhY2hpZXZlZApoZSBzaG91bGQgaGF2ZSBjb21wbGV0ZWQgYSBjb21wcmVoZW5zaXZlIHN1cnZleSBvZiB0aGUgd2lzZG9tIHNpZGUgb2YKb3VyIExpYmVyYWwgQ2F0aG9saWMgcGhpbC5vIHNvcGh5LCB0aHVzIGxlYXZpbmcgdGhlIHBlcmlvZCBiZXR3ZWVuIERpYWNvbmF0ZQphbmQgUHJpZXN0aG9vZCBmb3IgcmVzZWFyY2ggaW50byBjb2duYXRlIGZpZWxkcyBhbmQgZm9yIGEgZGV0YWlsZWQgYW5kCi4uLi0uLjs7Ozs7Oy4uLi4sLi5fX19fLl8gLTptOi1vIHJlIGZhciByZWFjaGluZyBhcHBsaWNhdGlvbiBvZiB0aGUga25vd2xlZGdlIG5vdyBvYnRhaW5lZCBmb3IgdGhlIHN1Yy0KY2Vzc2Z1bCBidWlsZGluZyB1cCBvZiBhIHBhcmlzaCwgLS0gYSBwcm9qZWN0IGV2ZXJ5IHByaWVzdCBpcyBleHBlY3RlZAp0byB1bmRlcnRha2UuClRoZSBjb3Vyc2Ugb2Ygc3R1ZHkgd2hpY2ggZm9sbG93cyBpcyByZWNvbW1lbmRlZCB0byB0aGUgY2FuZGlkYXRlCmZvciBTdWJkZWFjb24sIHRvIGhlbHAgaGltIHRvIGVudmlzYWdlIHRoZSBtaXNzaW9uIG9mIEhvbHkgT3JkZXJzIGFzIGEKc2VsZi1vZmZlcmluZyB0byB0aGUgQ2hyaXN0OgoKKCdsKSBGb3IgQ2FyZWZVbCAuUmVhZGluZzoKCk1hbiBWaXNpYmxlIGFuZCA6RW52aTpzIGlibGUsIGJ5IERyLiBBLiBCZXNhbnQgYW5kCkMuIFcuIExlYWRiZWF0ZXIuCk9sYWlydm95YW5jaWUuLCBieSBvLiBXLiBMZWFkYmVhdGVyLgoKVGhlIE90aGVyIFNpZGUgb2YgRGVhdGgsIGJ5IE8uIFcuIExlYWRiZWF0ZXIuCgpUaGUgRGVjbGluZSBhbmQgRmFsbCBvZiB0aGUKUm9tYW4gwrcgRW1waXJlLCBieSBHaWJib24uCkNoYXB0ZXJzIDE1LCAxNiwgMjAsIDIxLCAyMywKMjgsIDM3LCA0NSAobGFzdCAzIHBhcmFncmFwaHMKb25seSksIDQgNywgNDkgKGZpcnN0IDkgcGFyYS0KZ3JhcGhzIG9ubHkpJywgNTQsIDYwIChmaXJzdCAyCnBhcmFncmFwaHMgb25seSknLSBUaGVzZSBwb3J0aW9ucwpkZWFsIHdpdGggdGhlIGhpc3Rvcnkgb2YgdGhlCkNocmlzdGlhbiBDaHVyY2ggZG93biB0byB0aGUKR3JlYXQgU2NoaXNtIGJldHdlZW4gdGhlIEVhc3QKYW5kIHRoZSBXZXN0IC4KDC4uCkMhZi0yLjE0CgoKVGhlIEhpZGRlbiBTaWRlIG9mIFRoaW5ncywKQ2hhcHRlciAyMiBPdXIgUmVsYXRpb24gdG8gQ2hpbGRyZW4KQ2hhcHRlciAyNCBUaCcuZSBSZXN1bHRzIG9mIHRoZSBLbm93bGVkZ2UuClRoZSBHcmVhdCBUZWFjaGVycy4sLiBieSBIZXJiZXJ0IFdsenkndGV+CigyKSBGb3IgRGV0YWlsZWQgU3R1Y3p5OgpUaGUgLkFuY2llbnQgV2lzZG9tLCBieSBEci4gQS4gQmVzYW50LgpUaGUgU2NpZW5jZSBvZiB0aGUgU2FjcmFtZW50cywgYnkgby53LiBMZWFkYmVhdGVyLgpSZWxpZ2lvbiBmb3IgQmVnaW5uZXJzLCBieSBGLiBXLiBQaWdvdHQuCkNsbCdlZG8sIGJ5IFdpbGxpYW0gSC4tIFBpdGtpbi4KKDMpIEZvciBTcGlyaXR1YWwgVW5mb2xkbWVudDogKERhaWx5IHJlYWRpbmcgJiBtZWRpdGF0aW9uKQoKVGh1cyBIYXZlIEkgSGVhcmQsIGJ5IEdlb2ZmcmV5IEhvZHNvbi4KUHJhY3RpY2UgdGhlIEludGVudCBhbmQgQ29sbGVjdCBmb3IgdGhlIFdlZWsKdGhyb3VnaG91dCB0aGUgQ2hyaXN0aWFuIFllYXIgYXMgZ2l2ZW4gaW4gdGhlCkxpdHVyZ3kgb2YgdGhlIExpYmVyYWwgLkNhdGhvbGljIENodXJjaC4KDCBDRS0yLjE1CgoKLSBUSEUgRElBQ09OQVRFIC0KCkF0IHRoaXMgb3JkaW5hdGlvbiAidGhlIGZpcnN0IGRyaWxsIGlzIGRyaXZlbiB0aHJvdWdoIHRoZSByb2NrLCBhbmQKYSBkZWZpbml0ZSBsaW5rIGlzIG1hZGUsIHRoZSBpbnRlbGxpZ2VuY2UgYmVpbmcgam9pbmVkIHRvIHRoZSBjb3JyZXNwb25kLQppbmcgcHJpbmNpcGxlIGluIHRoZSBDaHJpc3QsIHNvIHRoYXQgdGhlIGxhdHRlciBjYW4gaW5mbHVlbmNlIHRoZSBmb3JtZXIsCmFuZCBzdGlyIGl0IGludG8gYmVuZWZpY2VudCBhY3Rpdml0eS4iIEp1c3Qgd2hhdCB0aGUgRGVhY29uIHdpbGwgbWFrZSBvZgp0aGlzIGdpZnQgZGVwZW5kcyB1cCdlbiBoaW1zZWxmIGFsb25lLiBUaGUgb3Bwb3J0dW5pdHkgaXMgdGhlcmUsIHRoZSBwb3ctCmVyIGhhcyBkZXNjZW5kZWQuIEl0IGlzIGVudGlyZWx5IHVwIHRvIGhpbSB3aGV0aGVyIGl0IHNoYWxsIGxpZSBmYWxsb3cKb3IgYmVjb21lIGEgZ2xvcmlvdXMgZm91bmRhdGlvbiB1cG9uIHdoaWNoIHRvICdidWlsZCBmb3IgdGhlIHlldCBoaWdoZXIKb3JkaW5hdGlvbiBvZiB0aGUgUHJpZXN0aG9vZC4KRnJvbSB0aGlzIHRpbWUgb253YXJkIC51bnRpbCAuInRoZSBpcnJldm9jYWJsZSBhY3Qgc2hhbGwgYmUgYWNjb20tCnBsaXNoZWQsIiB3aGk5aCBzaGFsbCBsYXkgdXBvbiB0aGUgRGVhY29uICJ0aGUgc3dlZXQgYnV0IGhlYXZ5IGJ1cmRlbiBvZgp0aGUgcHJpZXN0aG9vZCAxMSAsIGl0IGlzIGluY3VtYmVudCB0aH50IGhlIGdhdGhlciB1cCBhbGwgaGlzIGxvb3NlIHN0cn5ucXMKb2Ygb3VyIHN1YmxpbWUgV2lzZG9tLVJlbGlnaW9uLCBtYWtpbmcgdGhlbSBpbnRvIG9uZSBzcGxlbmRpZCBvcmdhbmlzbSBvZgpldmVyLXJlYWR5IGtub3dsZWRnZSB3aGljaCBjYW4gYmUgdXNlZCBpbnN0YW50bHkgZm9yIHRoZSBoZWxwaW5nIG9mIHRoZQp3b3JsZC4KQW5kIHNvIHRoZXNlIGJvb2tzIGFyZSBnaXZlbiBhc8K3IGEgbWluaW11bSBjb3Vyc2Ugb2Ygc3R1ZHkgdG8gYWR2YW5jZQpzdWNoIGFjaGlldmVtZW50LCB0byBhc3Npc3QgdGhlIGNhbmRpZGF0ZSBmb3IgRGVhY29uIHRvIGJlY29tZSBhIHRydWUKVGVhY2hlciBhbmQgUHJlYWNoZXI6CgooMSkgRm9yIENhcmVmdWwgUmVhZGluZzoKCkEgU3R1ZHkgaW4gQ29uc2Npb3VzbmVzcywgYnkgRHIgLiBBLiBCZXNhbnQuCgpGb3VyIEdyZWF0IFJlbGlnaW9ucywgYnkgRHIgLiBBLiBCZXNhbnQuCgpHbGltcHNlcyBvZiBNYXNvbmljIEhpIHN0IHBjeV8sIGIgQy4gdy4gTGVhZGJlYXRlRi5fIF9fLj09PSItLS0tfl8uLjssLi4uLCw7Oi0tIicKKGZvciBsaWdodCBvbiB0aGUgRWd5cHRpYW4sCkpld2lzaCBhbmQgR3JlZWsgUmVsaWdpb25zKQoKU29tZSBnb29kIHdvcmsgb24gQ2hyaXN0aWFuIEhpc3RvcnkgZnJvbQp0aGUgR3JlYXQgU2NoaXNtIHRvIHRoZSBwcmVzZW50IGRheS4KKHlldCB0byBiZSBzZWxlY3RlZCkKSGlzdG9yeSBvZiB0aGUgTGliZXJhbCBDYXRob2xpYyBDaHVyY2guCihwdWJsaXNoZWQgYXMgeWV0IG9ubHkgaW4gc2VyaWFsIGZvcm0KaW4gVEhFIExJQkVSQUwgQ0FUSE9MSUMpCgpBIFNob3J0IEhpc3Rvcnkgb2YgdGhlIEpld3MsIGJ5IENsZW1lbnQgV29vZC4KKG9uZSBvZiB0aGUgIkxpdHRsZSBCbHVlIEJvb2sgMTEgc2VyaWVzCm9mIEhhbGRlbWFuLUp1bGl1cykKClRoZSBCZWdpbm5pbmdzIG9mIHRoZSA6c2l4dGggUm9vdCBSYWNlLApieSBDLiBXLiBMZWFkYmVhdGVyLgpUaGUgTWFzdGVycyBhbmQgdGhlIFBhdGgsIGJ5IEMuIFcuIExlYWRiZWF0ZXIuClJlbGknZyBpb25zIGFuZCBQaGlsb3NvcGhpZXMgaW4gdGhlIFUuUyAuIEEgfiAsCmJ5IEp1bGl1cyBBLiBXZWJlci4KCigyKSBGb3IgRGV0YWlsLmVkIFN0dWR5OgoKRXNvdGVyaWMgQ2hyaXN0aWFuaXR5LCBieSBEciAuIEHigKLigKIgQmVzYW50LgoMIENFLTIuMTYKCgpUaGUgQ2hyaXN0aWFuIENyZWVkLCBieSBDLiBXLiBMZWFkYmVhdGVyLgoKVGhlIEhpZGRlbiBTaWRlIG9mIENocmlzdGlhbiBGZXN0aXZhbHMsCmJ5IEMuIFcuIExlYWRiZWF0ZXIuClRoZSBTdGF0ZW1lbnQgb2YgUHJpbmNpcGxlcywgU3VtbWFyeQpvZiBEb2N0cmluZSwgYW5kIFRhYmxlIG9mIHRoZSBBcG8tCnN0b2xpYyBTdWNjZXNzaW9uIGluIHRoZSBMLkMuQy4sIC0gT2ZmaWNpYWwgRG9jdW1lbnQuCgpUaGUgUGFydGluZyBvZiB0aGUgV2F5cywgYnkgRi4gVy4gUGlnb3R0LAoKVGhlIExpdHVyZ3kgb2YgdGhlIExpYmVyYWwgQ2F0aG9saWMgQ2h1cmNoLgoKKDMpIEZvciBTcGlyaXR1YWwgVW5mb2xkbWVudDogKERhaWx5IHJlYWRpbmcgJiBtZWRpdGF0aW9uKQoKVGFsa3Mgb24gdGhlIFBhdGggb2YgT2NjdWx0aXNtLCBieSBEci4gQS4gQmVzYW50IGFuZAooQSBjb21tZW50YXJ5IG9uICJBdCB0aGUgQy4gVy4gTGVhZGJlYXRlci4KRmVldCBvZiB0aGUgSlZsYXMgdGVyIDExICwgMTEgVGhlClZvaWNlIG9mIHRoZSBTaWxlbmNlIDExICwgYW5kCjExIExpZ2h0IG9uIHRoZSBQYXRoLiAxMQoMIEkKCgpDRS0yLjE3CgoKLSBUSEUgUFJJRVNUSDAwUCAtCgpOb3cgYXQgbGFzdCBjb21lcyB0aGUgb3Bwb3J0dW5pdHkgZm9yIHdoaWNoIHRoZSBvcmRpbmFuZCBoYXMgYmVlbgpzdHJpdmluZywgLS0gdGhlIHdvbmRyb3VzIGdpZnQgYW5kIHByaWNlbGVzcyBwcml2aWxlZ2Ugb2YgdGhlIFByaWVzdGhvb2QuCldlIHdpbGwgZG8gd2VsbCB0byBwb25kZXIgb3ZlciB0aGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgc3RlcCB0byB3aGljaAptYXkgd2VsbCBiZSBhdHRhY2hlZCB0aGUgYWRqZWN0aXZlIDExIHN1YmxpbWUgMTEg4oCiIEl0IGlzIGEgbW9tZW50b3VzIGhhcHBlbi0KaW5nIGluIHRoZSBsaWZlIG9mIGFueSBtYW4gdG8gYmUgcGxhY2VkIGluIGRpcmVjdCBjb21tdW5pY2F0aW9uIHdpdGggaGlzCkxvcmQgc28gdGhhdCB0aHJvdWdoIGEgcG93ZXIgbm90IGhpcyBvd24gaGUgbWF5IHRyYW5zbWl0IGluIHRoZSBhY3Qgb2YKQmxlc3Npbmcgc29tZSBvZiB0aGUgaGFwcGluZXNzIG9mIHRoZSBDaHJpc3Q7IGhlIG1heSBnaXZlIHRvIHRoZSAibGl0dGxlCm9uZXMgMTEgb2YgdGhlIE1hc3Rlciwgd2hldGhlciB0aGV5IGJlIGJhYmVzLCBjaGlsZHJlbiBvciBhZHVsdHMsIGEgdmlydHVhbApyZWJpcnRoIGJ5IHRoZSBTYWNyYW1lbnQgb2YgQmFwdGlzbSB3aXRoIGl0cyBwb3dlcmZ1bCBpbmZsdWVuY2UgZm9yIGdvb2QKYW5kIGl0cyBnaWZ0IG9mIGEgZ3VhcmRpYW4gYW5nZWw7IGhlIG1heSAxMSBsaWZ0IHRoZSBoZWF2eSBidXJkZW4gb2YgdGhlCnNvcnJvdyBhbmQgc2luIG9mIHRoZSB3b3JsZCBieSB0aGUgZ3JhY2Ugb2YgQWJzb2x1dGlvbiAxMSA7IGhlIG1heSBieSBIb2x5ClVuY3Rpb24gYXNzdWFnZSBpbmZpcm1pdGllcyBib3RoIG9mIGJvZHkgYW5kIG9mIG1pbmQ7IGhlIG1heSBqb2luIGJ5Ck1hdHJpbW9ueSBtYW4gYW5kIHdvbWFuIGluIGEgYmxlc3NlZCB1bmlvbiBvZiBzb3VsczsgYW5kIGhlIG1heSBjZWxlYnJhdGUKZGFpbHkgZm9yIHRoZSByZW1haW5kZXIgb2YgaGlzIGxpZmUgdGhlIG1hcnZlbHMgb2YgdGhlIEV1Y2hhcmlzdCwgdGhhdApzdHVwZW5kb3VzIGFuZCBob2x5IGRvd24tcG91cmluZyBmcm9tIG9uIGhpZ2ggd2hlbiBpbiB0aGUgcHJlc2VuY2Ugb2YKQW5nZWxzIGFuZCBBcmNoYW5nZWxzLCB5ZWE7IG9mIHRoZSBDaHJpc3QgSGltc2VsZiwgaHVtYW5pdHkgYW5kIGFsbCB0aGF0CmxpdmVzIGFyZSByYWlzZWQgeWV0IGEgbGl0dGxlIGh0Z2hlciBpbiB0aGVpciBob21ld2FyZCB3YXkgdG8gR29kLgpCdXQgdG8gYWNjb21wbGlzaCB0aGVzZSByZXN1bHRzIGFuZCBnaXZlIGJhY2sgdG8gdGhlIHdvcmxkIHNvbWUgb2YKdGhlIGJlbmVmaXRzIGhlIGhpbXNlbGYgaGFzIHJlY2VpdmVkIHNvIGFidW5kYW50bHksIHRoZSBQcmllc3Qgc2hvdWxkCmhhdmUgdGhvc2UgdG8gd2hvbSBoZSBjYW4gbWluaXN0ZXIgZXZlbiBhcyBoZSBoYXMgYmVlbiBtaW5pc3QuZSByZWQgdW50by4KSGUgc2hvdWxkIGZvcm0gYSBwYXJpc2guIEFzIG1lbnRpb25lZCBiZWZvcmUsIHRoaXMgaXMgZXhwZWN0ZWQgb2YgaGltLgpJdCBpcyBidXQgYSBzbWFsbCByZXR1cm4gZm9yIHRoZSBwcmVjaW91cyBnaWZ0IHdoaWNoIG1lcmVseSBodW1hbiBoYW5kcwpjb3VsZCBuZXZlciBoYXZlIGJlc3Rvd2VkLiBUbyBzaG93IG9ubHkgdGhlIGN1c3RvbWFyeSBhcHByZWNpYXRpb24KbWVhc3VyZWQgYnkgYWNjZXB0ZWQgc3RhbmRhcmRzIGFtb25nIHJpZ2h0LXRoaW5raW5nIG1lbiwgaGlzIGxpZmUgZnJvbQpub3cgb253YXJkIHNob3VsZCBiZSBjb25zZWNyYXRlZCB0byB0aGUgdGFzayBvZiBvZmZlcmluZyBhIGh1bmdyeSBodW1hbi0KfiAtLS06Oj0tLT09LS0tLS0tLWktCsK3IHQuLi4ubCF5fnRfCmhlIGJsZXNzaW5ncyBoZSBoYXMgcmVjZWl2ZWQuIEFuZCBzbyB0aGUgcHJpZV9zIGUgYSAubWFuLTAuTC0tLS0iIiInPX5+LAphY3Rpb24sIGV2ZXIgZGlzcGVuc2luZyB0aGUgc2FjZXJkb3RhbCBwb3dlcnMgYW5kIGxlYWRpbmcgaGlzIGJyZXRocmVuCm5lYXJlciB0byBHb2QuCk5ldmVyIG5lZWQgaGUgYmUgaWRsZS4gRXZlcnkgZGF5LCB3aXRoIHRoZSBleGNlcHRpb25zIG9mIEdvb2QKRnJpZGF5IGFuZCB0aGUgU2F0dXJkYXkgd2hpY2ggZm9sbG93cywgdGhlIG5ldyBQcmllc3QgbWF5IGNlbGVicmF0ZSB0aGUKRXVjaGFyaXN0LiBUaGlzIGlzIGEgcHJpdmlsZWdlIG5vdCBsaWdodGx5IHRvIGJlIHR1cm5lZCBhc2lkZS4gSWYKdGhlcmUgYmUgbm8gb3JhdG9yeSwgbWFrZSBvbmUuIElmIHRoZXJlIGJlIGxhY2sgb2YgdGltZSwgZ2V0IG91dCBvZiBiZWQKaGFsZiBhbiBob3VyIGVhcmxpZXIgZWFjaCBtb3JuaW5nLiBJZiB0aGVyZSBiZSBub2lzZSBpbiB0aGUgaG91c2UswrcKYnVpbGQgYW4gdW5wcmV0ZW50aW91cyByb29tIGF0IHRoZSBmdXJ0aGVyIGVuZCBvZiB0aGUgbG90LiBCdXQgYmUgbG95YWwuCk1lYW4gYnVzaW5lc3MuIExldCBpdCBuZXZlciBiZSBzYWlkIHRoYXQgd2UgaGF2ZSBiYWNrLWRvb3IgcHJpZXN0cyB3aG8Kc2xpZGUgb3V0IG9mIHRoZWlyIG9ibGlnYXRpb25zIGFuZCB3aG9zZSBtYWluIG9iamVjdCBpcyB0byBsb29rIHNhbmN0aS0KbW9uaW91cyBhbmQgc3RydXQgYXJvdW5kIGluIHZlc3RtZW50cy4gQW5+IGxldCB1cyBiZSBzdXJlIHRvIGluY2x1ZGUgaW4Kb3VyIGRhaWx5IEV1Y2hhcmlzdHMgdGhvc2Ugc28gb2Z0ZW4gbmVnbGVjdGVkIGJ5IG91ciBicm90aGVyIG9yZ2FuaXphLQp0aW9ucy4gU2VhcmNoIHRoZSBuZXdzcGFwZXJzIGFuZCBnaXZlIHRvIHRoZSBBbmdlbHMgdGhlIG5hbWVzIG9mIHN1Y2gKYXMgYXJlIGluIG5lZWQgb2YgaGVscCwgd2hldGhlciB0aGV5IGJlIGNodXJjaCBtZW1iZXJzIG9yIG5vdCwgLS0gdGhlCnBvb3IsIHRoZSBvcHByZXNzZWQsIHRoZSBwcmlzb25lcnMsIHRoZSB2aWN0aW1zIG9mIHN1ZGRlbiBkZWF0aCwgdGhlIGV4LQplY3V0ZWQgY3JpbWluYWxzLiBUaGluayB3aGF0IGl0IHdpbGwgbWVhbiB0byB0aGUgdGVycm9yaXplcSBzb3VsIHRvCmF3YWtlbiBpbiB0aGUgbGFuZCBvZiB0aGUgYmV5b25kIGluIHRoZSBwcmVzZW5jZSBvZiBhIGJlYXV0aW91cywgY29tcGFzLQpzaW9uYXRlIEFuZ2VsLgpJbiBmb3JtaW5nIGEgcGFyaXNoIG9uZSBtZXRob2QgaXMgdG8gc3RhcnQgd2l0aCBhIGdyb3VwIG9mIGZyaWVuZHMKd2hvIGNhbiBtYWtlIGEgcmVsaWFibGUgbnVjbGV1cy4gQWRkIHRvIHRoZWlyIG51bWJlciBieSBnaXZpbmcgYSBzZXJpZXMKb2Ygd2VsbC1wbGFubmVkIHRhbGtzIG9uIHRoZSBnbG9yaWVzIG9mIG91ciBwaGlsb3NwbDp6eSctcmVsaWdpb24uIEV4cGxhaW4KY2FyZWZ1bGx5LCBzZW50ZW5jZSBieSBzZW50ZW5jZSwgdGhlIHNldmVyYWwgc2FjcmFtZW50cy4gQW5kIHdoZW4gc3VmLQpmaWNpZW50IHBhcmlzaGlvbmVycyBoYXZlIGJlZW4gY29sbGVjdGVkLCBwdXJjaGFzZSB0aGUgbGFuZCBhbmQgYnVpbGQKdGhlIGNodXJjaC4gQnV0IHRyeSBuZXZlciB0byBhbGxvdyB0aGUgZmFpbnRlc3Qgc2hhZG93IG9mIGEgZGVidCB0bwppbXBlZGUgcHJvZ3Jlc3MgYW5kIGhhcnJvdyB0aGUgbWluZC4KDCBDRS0yLjE4CgoKV2UgbXVzdCBuZWVkcyBiZSB0aGUgbGVhZGVycyBvZiBvdXIgZmxvY2tzIGluIGEgY29tcHJlaGVuc2l2ZSBzZW5zZS4KQW5kIHNvIGxldCB0aGVyZSBiZSBkZXZlbG9wZWQtIHRoZSBxdWFsaWZpY2F0aW9ucyBvZiB0aGUgZXhlY3V0aXZlLCB0aGUKZWR1Y2F0b3IsIHRoZSBzYWNyYW1lbnRhbGlzdCwgdGhlIGFydGlzdCwgYW5kIHRoZSBzcGlyaXR1YWwgaGVscGVyLgpUaGluayBpbiBob3cgbWFueSBuZXcgYW5kIGVmZmVjdGl2ZSB3YXlzIGJlYXV0eSBjYW4gYmUgaW50cm9kdWNlZCBpbnRvCnRoZSBjaHVyY2ggYnVpbGRpbmcuIFBsYW4gbWFueSBhdmVudWVzIG9mIGN1bHR1cmFsIGFkdmFuY2VtZW50IGZvciB0aGUKcGFyaXNoaW9uZXJzIGluIHN1Y2ggc3ViamVjdHMgYXMgdGhlIENocmlzdGlhbiBGYXRoZXJzIGFuZCBTYWludHMsIHRoZQpGZWxsb3dzaGlwIG9mIEZhaXRocywgTWFzdGVyIFNhaW50cyBvZiBSZWxpZ2lvbnMsIHRoZSBsYXRlc3QgaW4gbW9kZXJuCnNjaWVuY2UgaW4gcmVsYXRpb24gdG8gbWFuJ3Mgc3Bpcml0dWFsIG5hdHVyZSwgdGhlIHNwaXJpdHVhbCBpbmZsdWVuY2UKb2YgdGhlIGZpbmVzdCBtdXNpYywgZHJhbWEsIHBvZXRyeSwgYXJjaGl0ZWN0dXJlLCBwYWludGluZ8K3LCBzY3VscHR1cmUsCmFuZCBhbHNvIHRoZSBkYW5jZS4gLS0gZm9yIHRoYXQgYXQgaXRzIGJlc3QgaXMgb25lIG9mIHRoZSBzZXZlbiBncmVhdAphcnRzIHdpdGggYSBkaXN0aW5jdGl2ZSBtZXNzYWdlIHRvIHRoZSB3b3JsZC4gRGlzY292ZXIgdGhlIHN0cm9uZyBwb2ludHMKb2YgZWFjaCBwYXJpc2hpb25lciBhbmQgc2V0IGhpbSB0byB3b3JrLCBmb3IgYnkgd29yayB3ZSBnYWluIGVudGh1c2lhc20uClNtb290aCBvdXQgYWxsIGRpZmZpY3VsdGllcyBieSB0YWN0LCBieSB0b2xlcmFuY2UgYW5kIGJ5IHRoYXQgbG92ZSB3aGljaApsaWtlIHRoZSB3YXJtdGggb2YgdGhlIHN1biBzaGFsbCBjb21mb3Z0IGV2ZXJ5IGhlYXJ0LiBUaGluayBjYXJlZnVsbHkKb2YgdGhlIHZhbHVlIGFuZCBtZXRob2RpemF0aW9uIG9mIGNvbW1pdHRlZXMgLiBCdXQgZG8gbm90IGJlIHN3ZXB0IGFzaWRlCmJ5IG5vbi1lc3NlbnRpYWxzLiBSZW1lbWJlciB0aGF0IHdlIGFyZSB0aGUgcmVwcmVzZW50YXRpdmVzIG9mIG5vbmUKb3RoZXIgdGhhbiB0aGUgQ2hyaXN0LCBhbmQgdGhhdCBIaXMgcHVycG9zZSBzaG91bGQgZG9taW5hdGUgb3VyIHRob3VnaHQuCkFuZCBsZXQgdXMgbm90IGZvcmdldCB0aGF0IG9uZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgZHV0aWVzIG9mIHRoZQpQcmllc3QgaXMgdG8gdHJhaW4gaGlzIGNvbmdyZWdhdGlvbiBzbyB0aGF0IHllYXIgYnkgeWVhciBhbmQgbW9udGggYnkKbW9udGggdGhleSB3aWxsIGFkdmFuY2UgaW4gc3Bpcml0dWFsaXR5IGFuZCBlbnRlciBlcmUgbG9uZyB0aGF0IHBhdGgKd2hpY2ggbGVhZHMgdG8gdGhlICJtZWFzdXJlIG9mIHRoZSBzdGF0dXJlIG9mIHRoZSBmdWxuZXNzIG9mIENocmlzdCAxMSAsCnRvIHRoZSBnbG9yaWVzIHdoaWNoIGF3YWl0IGVhY2ggaHVtYW4gc291bC4KQmVmb3JlIHRoZSBvcmRpbmF0aW9uIHRvIHRoZSBQcmllc3Rob29kIHlvdSB3aWxsIGJlIGFza2VkIHRvIHN1Ym1pdAphIGNhcmVmdWxseSBjb25zaWRlcmVkIHNjaGVtZSBmb3IgdGhlIGJ1aWxkaW5nIHVwIG9mIGEgcGFyaXNoIHdoaWNoCnNob3VsZCBlbWJyYWNlIHlvdXIgaW50ZW5kZWQgYWN0aXZpdGllcyBvdmVyIGEgc3BhbiBvZiB5ZWFycy4gSXQgc2hvdWxkCmNvbnRhaW4gYW1wbGUgZXZpZGVuY2Ugb2Ygb3JpZ2luYWwgcmVzZWFyY2ggYW5kIHNlcnZlIGFzIGEgZGlzdGluY3QKY29udHJpYnV0aW9uIHRvIHRoZSB3b3JrIG9mIG91ciBDaHVyY2guIFdoYXRldmVyIGJvb2tzIGFyZSBjb25zdWx0ZWQKc2hvaTppbDogYmUgcy5wZUdpfmllUS4gYXMgYSBjb21wbGV0ZSBiNC4tYmxpb2dyYXBoeSwgZ8KxLXZpLS1uZyBhdHR0LWhvciAsIGTCsXRpLWMtbi1zLCB+LS0tLS0tLS4KYW5kIHRoZSBwYWdlIG51bWJlcnMgb2YgZXh0cmFjdHMuIFRoaXMgZXNzYXkgc2hvdWxkIGJlIG9mIGNvbnNpZGVyYWJsZQpsZW5ndGgsIHByZWZlcmFibHkgdHlwZXdyaXR0ZW4sIGRvdWJsZSBzcGFjZWQuIEl0IHNob3VsZCBhc3N1bWUgdGhlCmRpZ25pdHkgb2YgYSB1bml2ZXJzaXR5IHRoZXNpcyBmb3IgdGhlIGRlZ3JlZSBvZiBNYXN0ZXIgb3IgRG9jdG9yLiBBCnRoZXNpcyBhbHNvIHdpbGwgYmUgcmVxdWlyZWQgcHJpb3IgdG8gdGhlIERpYWNvbmF0ZSBvcmRpbmF0aW9uLiBBbmQgZm9yCnRoaXMsIHBhcnRpY3VsYXJzIHdpbGwgYmUgZ2l2ZW4gb24gYXBwbGljYXRpb24sIGF0IHRoZSBwcm9wZXIgdGltZS4KVGh1cywgbXkgYnJvdGhlcnMsIHdlIGhhdmUgZW50ZXJlZCB1cG9uIGEgbWlnaHR5IHVuZGVydGFraW5nIGZvcgp0aGUgZ3JlYXRlciBnbG9yeSBvZiBHb2QuIE1heSB3ZSBiZSBzdHJvbmcgYW5kIG9mIGEgZ29vZCBjb3VyYWdlLApyZWFsaXppbmcgdGhhdCBpbiB0aGUgcG93ZXIgb2YgdGhlIENocmlzdCBhbmQgb2Ygb3VyIG93biBldGVybmFsIHNlbHZlcwpzdWNjZXNzIG11c3QgYXNzdXJlZGx5IGJlIG91cnMgYm90aCBub3cgYW5kIGluIHRoZSB5ZWFycyB0byBjb21lIC4KCgpCLiBHLiBLSU5HU0xFWS4KDCBjIEF2YyFMIWUsCkxvfiBBbmktIWYnbDwnIXMsIENhbGlmb3JuaWlhCgoKUmV2LiBKLiBMLiBIYWRhd2F5LgoKUC4gby4gQm94IDM0MywKfiAuLi4uLgoKCsK3MCBTYW4gRnJhbmNpc2NvLCBDYWxpZi4KCgpQcmludGVkIG1hdHRlcg==
sabato 1 gennaio 2000
[AL CORPUS] Clergy Training Course [1/1]
Iscriviti a:
Commenti sul post (Atom)
[AL CORPUS] Occult Chemistry [2/2]
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...
-
XFwiXiAKCgpzICwgCgoKLl4gCgoKT0NDVUxUIENIRU1JU1RSWSAKCgpDbGFpcnZveWFudCBPYnNlcnZhdGlvbnMgb24gdGhlIApDaGVtaWNhbCBFbGVtZW50cyAKCgpCWSAKCgpBTk5J...
-
VEhPVUdIVC1GT1JNUyAKCgpCWSAKCkFOTklFIEJFU0FOVCAKCkFORCAKCkMuIFcuIExFQUQgQkVBVEVSIAoKCldJVEggRklGVFktRUlHSFQgSUxMVVNUUkFUSU9OUyAKCgpMT05ET04g...
Nessun commento:
Posta un commento