dGhlIGZvbGxvd2luZyBpcyB0aGUgcHJvcG9zZWQgY29tbXVuaXF1ZSBpIHdpbGwgaXNzdWUg cGVuZGluZyBib2FyZCBvZiBkaXJlY3RvciBhcHByb3ZhbAoKcnxwCgoKZmlyc3Qgb2YgYWxs LCB3ZSBhcmUgYnVveWVkIGJ5IG91ciBwZXJjZWl2ZWQgYWNjZXNwdGFuY2Ugb2YgY2hhbm5l bCBwb2lsY3ksIGFzIGRpbGluZWF0ZWQgdG8geW91IGluIGEgcmVjZW50bHkgZGlzdHJpYnV0 ZWQgZW1haWwuIGluIGxpZXUgb2Ygbm8gb2JqZWN0aW9ucywgdGhlc2UgcnVsZXMgYXJlIGhl cmVieSBhZGFwdGVkLiBhcyB3aXRuZXNzZWQsIHRoZXNlIGFyZSB2ZXJ5IGxvb3NleSBnb29z ZXkgcnVsZXMsIGFuZCB0aHVzIGZhciwgbm8gZXRyZW1lIG1lYXN1cmVzIGhhdmUgYmVlbiBu ZWNlc3NhcnkuIGluIGEgcHJlZW1wdGl2ZSBhY3Rpb24sIHRoZSBmb2xsb3dpbmcgaXNzdWUg bmVlZHMgdG8gYmUgYWRkcmVzc2VkLgphcyB3ZSBhbGwga25vdywgc29tZXRpbWVzIGl0IGNv bWVzIHRvIGxpZ2h0IHRoYXQgYWRkaXRpb25hbCBjbGFyaWZpY2F0aW9uIG9yIGFkYXB0YXRp b24gb2Ygd2hhdCBpcyBvciBpc250IGFjY2VwdGFibGUgYmVoYXZpb3IgbXVzdCBiZSBlbmpv aW5lZCwgdGhpcyBpcyB0aGUgcmVhc29uIGZvciB0aGUgYmlsbCBvciByaXRlcywgc28gZXhl cmNpc2UgeW91ciByaXRlIHRvIGJlIGhlYXJkCgp0aGUgZmlyc3QgYW1lbmRtZW50OgoKQXJ0 aWNsZSBJCkNvbmdyZXNzIHNoYWxsIG1ha2Ugbm8gbGF3IHJlc3BlY3RpbmcgYW4gZXN0YWJs aXNobWVudCBvZiByZWxpZ2lvbiwgb3IgcHJvaGliaXRpbmcgdGhlIGZyZWUgZXhlcmNpc2Ug dGhlcmVvZjsgb3IgYWJyaWRnaW5nIHRoZSBmcmVlZG9tIG9mIHNwZWVjaCwgb3Igb2YgdGhl IHByZXNzOyBvciB0aGUgcmlnaHQgb2YgdGhlIHBlb3BsZSBwZWFjZWFibHkgdG8gYXNzZW1i bGUsIGFuZCB0byBwZXRpdGlvbiB0aGUgR292ZXJubWVudCBmb3IgYSByZWRyZXNzIG9mIGdy aWV2YW5jZXMuIAoKbm93LCBhbG9uZyB0aGF0IGxpbmUsIElSQyBvZiBjb3Vyc2UsIGlzIG5v dCBzdWJqZWN0IHRvIHRoZSBiaWxsIG9mIHJpdGVzLCBlcmdvIGFuZCBoZXJldG9mb3JlLCBs ZXQgaXQgYmUga25vd24gdGhhdCBiZWhhdmlvciBvZiB1c2VycywgaW5jbHVkaW5nIG9wcyBz aGFsbCBiZSBzdWJqZWN0IHRvIHRoZSBvcGluaW9ucyBhbmQgd2hpbXMgb2YgY2hhbm5lbCBt YW5hZ2VtZW50LCBhcyBndWlkZWQgYWRkaXRpb25hbGx5IGFuZCBpbiBjb250ZXh0IGJ5IHRo ZSBvcGluaW9ucyBvZiB0aG9zZSB3aG8gYXJlIG9wcGVkLCBuYW1lbHkgeW91IGFsbC4gdGhl IGZvbGxvd2luZyBwcm9wb3NhbCBpcyB0YWJsZWQgZm9yIGRpc2N1c3Npb24uIGluIG90aGVy IHdvcmRzIHNwZWFrIG5vdyBvciBmb3JldmVyIGhvbGQgeW91ciBwaWVjZS9wZWFjZS4gb25j ZSBhZG9wdGVkLCBhY3Rpb25zIHdpbGwgYmUgdGFrZW4gdG8gZW5zdXJlIGl0cyBjb21wbGlh bmNlLgoKYWRkaXRpb25hbCByZXdsLCBhcnRpY2xlIDExCgp0aG91Z2ggc2hhbHQgbm90IGFj dCBpbiBhIHNleHVhbGx5IHByZWRhdG9yeSBtYW5uZXIgdG93YXJkcyBhbnkgbWFsZSBvciBm ZW1hbGUgZ3Vlc3Qgb3Igb3BlciBpbiB0aGUgY2hhbm5lbCwgb3IgaW4gcHJpdmF0ZSBtZXNz YWdlLiAKCml0IGhhcyBiZWVuIGJyb3VnaHQgdG8gbGl0ZSBub3cgYW5kIGFnYWluLCB0aGF0 IHN1Y2ggY29uZGl0aW9ucyBkbyBleGlzdCBhdCB0aW1lcywgYW5kIGFzIGEgZ2VuZXJhbCB3 YXJuaW5nIHRvIHRob3NlIHdobyBtYXkgaGF2ZSBwYXJ0aWNpcGF0ZWQsIHRoaXMgY2FuIG5v dCBhbmQgd2lsbCBub3QgYmUgdG9sZXJhdGVkLiBvZiBjb3Vyc2UgaXRzIGlyYyBhbmQgd2Ug YWxsIGxpa2UgdG8gZm9vbCBhcm91bmQgYW5kIGhhdmUgZnVuLCBidXQgb3ZlcnRseSBzZXh1 YWxseSBhZ2dyZXNzaXZlIGJlaGF2aW9yIGluIGNoYW5uZWwgb3IgcHJpdmF0ZSBtZXNzYWdl IHNob3VsZCBiZSBzdW10aGluZyB3ZSBjYW4gYWxsIHJpc2UgYWJvdmUuIG1ha2luZyB1c2Vy cyBmZWVsIHVuY29tZm9ydGFibGUgYW5kL29yIGJlaW5nIHJ1biBvZmYgYnkgc29saWNpdGF0 aW9uLCBlaXRoZXIgaW4gY2hhbm5lbCBvciBwcml2YXRlLCBzaG91bGQgYmUgYXZvaWRlZC4g aW4gYWRkaXRpb24sIGRpbGluZWF0aW5nIGluZm9ybWF0aW9uIGFib3V0IHJlZ3VsYXIgdXNl cnMgdG8gcmVsYXRpdmUgbmV3Y29tZXJzLCBhcyB0byB0aG9zZSB3aG8gY2FuIG9yIG1pZ2h0 IGJlIGhpdCBvbiBpcyByZXRhcmRlZC4gc28gaWYgeW91IGFyZSBhIHJldGFyZCwgdGhlbiBr bm9jayB0aGUgY3JhcCBvZmYsIGlmIHlvdSBhcmUgbm90LCB0aGVuIG9mIGNvdXJzZSwgdGhp cyBpcyBub3QgbWVhbnQgZm9yIHlvdS4gYW55bW9yZSBydW5uaW5nIG9mZiBvZiB1c2VycyB0 aHJ1IHNvbGljaXRhdGlvbiBvciBqdXN0IG91dHJpdGUgcGVzdGVyaW5nIHdpbGwgYmUgbG9v a2VkIG9uIGluIGFuIHVuZmF2b3JhYmxlIGxpdGUgYW5kIHdpbGwgbGVhZCB0byBiZWluZyBi YW5uZWQsIHJlZ3JkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGEgdXNlciBvciBhbiBvcC4gZXJn bywgdGhvc2Ugd2hvIG1heSBoYXZlIGluZHVsZ2VkIGluIHN1Y2ggYWdncmVzc2lvbiBpbiB0 aGUgcGFzdCwgeW91IGFyZSBvbiBub3RpY2UsIHNvIGNoaWxsIHRoZSBmcmljayBvdXQgb3Ig YmUgZ29uZS4KCg==