看板 FB_announce 關於我們 聯絡資訊
RnJlZUJTRCBRdWFydGVybHkgU3RhdHVzIFJlcG9ydCwgSmFudWFyeS1NYXJjaCAyMDEzCgpJbnRy b2R1Y3Rpb24KCiAgIFRoaXMgcmVwb3J0IGNvdmVycyBGcmVlQlNELXJlbGF0ZWQgcHJvamVjdHMg YmV0d2VlbiBKYW51YXJ5IGFuZCBNYXJjaAogICAyMDEzLiBUaGlzIGlzIHRoZSBmaXJzdCBvZiBm b3VyIHJlcG9ydHMgcGxhbm5lZCBmb3IgMjAxMy4KCiAgIEhpZ2hsaWdodHMgZnJvbSB0aGlzIHN0 YXR1cyByZXBvcnQgaW5jbHVkZSB0aGUgYnVzeSBwcmVwYXJhdGlvbnMgb2YKICAgOC40LVJFTEVB U0UsIHJlc3RvcmF0aW9uIG9mIGJpbmFyeSBwYWNrYWdlIGJ1aWxkaW5nLCBzdGVhZHkgcHJvZ3Jl c3MKICAgb2Ygc2V2ZXJhbCBwb3J0aW5nIGVmZm9ydHMsIGxpa2Ugd29yayBvbiB0aGUgRnJlZUJT RCBwb3J0cyBvZiB4b3JnLAogICBHTk9NRSwgS0RFLCBhbmQgWGZjZSwgYnJpbmdpbmcgRnJlZUJT RCB0byBDdWJpZWJvYXJkIGFuZCBIYWNrYmVycnkKICAgYm9hcmRzLCBkZXZlbG9wbWVudCBvZiBB Uk0gYW5kIEFNRCBHUFUgc3VwcG9ydCwgaW1wcm92aW5nCiAgIHBlcmZvcm1hbmNlIG9mIFVGUy9G RlMgYW5kIGNhbGxvdXRzLCBhbmQgaW50cm9kdWNpbmcgYSBtdWx0aXBhdGggVENQCiAgIGltcGxl bWVudGF0aW9uIGZvciB0aGUgbmV0d29yayBzdGFjay4KCiAgIFRoYW5rcyB0byBhbGwgdGhlIHJl cG9ydGVycyBmb3IgdGhlIGV4Y2VsbGVudCB3b3JrISBUaGlzIHJlcG9ydAogICBjb250YWlucyAz MSBlbnRyaWVzIGFuZCB3ZSBob3BlIHlvdSBlbmpveSByZWFkaW5nIGl0LgoKICAgVGhlIGRlYWRs aW5lIGZvciBzdWJtaXNzaW9ucyBjb3ZlcmluZyB0aGUgcGVyaW9kIGJldHdlZW4gQXByaWwgYW5k CiAgIEp1bmUgMjAxMyBpcyBKdWx5IDd0aCwgMjAxMy4KICAgICBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KClByb2plY3Rz CgogICAgICogRnJlZU5BUwogICAgICogS2VybmVsIEluZm9ybWF0aW9uIGluIFByb2Nlc3MgQ29y ZSBEdW1wcwogICAgICogTmF0aXZlIGlTQ1NJIFN0YWNrCgpGcmVlQlNEIFRlYW0gUmVwb3J0cwoK ICAgICAqIEZyZWVCU0QgQnVnbWVpc3RlciBUZWFtCiAgICAgKiBGcmVlQlNEIENvcmUgVGVhbQog ICAgICogRnJlZUJTRCBQb3J0IE1hbmFnZXJzCiAgICAgKiBGcmVlQlNEIFBvc3RtYXN0ZXIgVGVh bQogICAgICogRnJlZUJTRCBSZWxlYXNlIEVuZ2luZWVyaW5nIFRlYW0KCktlcm5lbAoKICAgICAq IEFNRCBHUFUgS2VybmVsIE1vZGUtU2V0dGluZyAoS01TKSBTdXBwb3J0CiAgICAgKiBBdG9taWMg ImNsb3NlLW9uLWV4ZWMiCiAgICAgKiBjYWxsb3V0KDkpIEltcHJvdmVtZW50cwogICAgICogTXVs dGlwYXRoIFRDUCAoTVBUQ1ApIGZvciBGcmVlQlNECiAgICAgKiByYWNjdDogQmxvY2sgSU8gQWNj b3VudGluZwogICAgICogUmVhZC1vbmx5IFBvcnQgb2YgTmV0QlNEJ3MgVURGIEZpbGUgU3lzdGVt CiAgICAgKiBUQ1AtQU8gQXV0aGVudGljYXRpb24gT3B0aW9uCiAgICAgKiBVRlMvRkZTIFBlcmZv cm1hbmNlIFdvcmsKCkRvY3VtZW50YXRpb24KCiAgICAgKiBJbXByb3ZpbmcgdGhlIERvY3VtZW50 YXRpb24gUHJvamVjdCBJbmZyYXN0cnVjdHJlCiAgICAgKiBUaGUgZW50aXRpZXMgRG9jdW1lbnRh dGlvbiBCcmFuY2gKICAgICAqIFRoZSBGcmVlQlNEIEphcGFuZXNlIERvY3VtZW50YXRpb24gUHJv amVjdAoKQXJjaGl0ZWN0dXJlcwoKICAgICAqIEZyZWVCU0Qgb24gQ3ViaWVib2FyZAogICAgICog RnJlZUJTRC9hcm0gU3VwZXJwYWdlcyBmb3IgQVJNdjcKICAgICAqIEZyZWVCU0QvQVJNIFRvb2xj aGFpbiBJbXByb3ZlbWVudHMKClBvcnRzCgogICAgICogRnJlZUJTRCBIYXNrZWxsIFBvcnRzCiAg ICAgKiBHTk9NRS9GcmVlQlNECiAgICAgKiBLREUvRnJlZUJTRAogICAgICogUHlQeQogICAgICog V2luZTMyIG9uIEZyZWVCU0QvYW1kNjQKICAgICAqIFhmY2UvRnJlZUJTRAogICAgICogeG9yZyBv biBGcmVlQlNECgpNaXNjZWxsYW5lb3VzCgogICAgICogQlhSLlNVIC0tIFN1cGVyIFVzZXIncyBC U0QgQ3Jvc3MgUmVmZXJlbmNlCiAgICAgKiBtZG9jLnN1IC0tIFNob3J0IE1hbnVhbCBQYWdlIFVS THMKICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KCkFNRCBHUFUgS2VybmVsIE1vZGUtU2V0dGluZyAoS01TKSBTdXBw b3J0CgogICBVUkw6IGh0dHBzOi8vd2lraS5mcmVlYnNkLm9yZy9BTURfR1BVCgogICBDb250YWN0 OiBKZWFuLVPDqWJhc3RpZW4gUMOpZHJvbiA8ZHVtYmJlbGxARnJlZUJTRC5vcmc+CiAgIENvbnRh Y3Q6IEouUi4gT2xkcm95ZCA8anJAb3BhbC5jb20+CiAgIENvbnRhY3Q6IEtvbnN0YW50aW4gQmVs b3Vzb3YgPGtpYkBGcmVlQlNELm9yZz4KCiAgIFRoZSBwcm9qZWN0IHByb2dyZXNzZWQgd2VsbCBz aW5jZSBGZWJydWFyeToKCiAgICAgKiBLb25zdGFudGluIGNvbW1pdHRlZCBpcyBUVE0gcG9ydCB0 byAxMC1DVVJSRU5ULgogICAgICogV2l0aCB0aGUgaGVscCBvZiBKb2huIEJhbGR3aW4gKGpoYikg YW5kIEFuZHJpeSBHYXBvbiAoYXZnKSwgdGhlCiAgICAgICBWaWRlbyBCSU9TIHNpdHVhdGlvbiBn cmVhdGx5IGltcHJvdmVkOiB0aGUgcmFkZW9ua21zIGRyaXZlciByZWFkcwogICAgICAgdGhlIEJJ T1Mgc2hhZG93IGNvcHkgaWYgdGhlIHZpZGVvIGNhcmQgaXMgdGhlIHByaW1hcnkgb25lLCBvcgog ICAgICAgcXVlcnkgdGhlIFBDSSBleHBhbnNpb24gUk9NIG90aGVyd2lzZS4gSW4gdGhlIGVuZCwg dGhpcyBjb2RlCiAgICAgICB3aWxsIGJlIHByb2JhYmx5IGNvbW1pdHRlZCB0byB0aGUgUENJIGRy aXZlciBzbyB0aGF0IG90aGVyIHZpZGVvCiAgICAgICBkcml2ZXJzIGJlbmVmaXQgZnJvbSBpdC4K ICAgICAqIEFuZHJpeSBhbHNvIHJlcG9ydGVkIHNldmVyYWwgcHJvYmxlbXMgd2l0aCB0aGUgSTJD IGNvZGUuIE5vdyB0aGF0CiAgICAgICB0aGV5IGFyZSBmaXhlZCwgdGhlIG1vbml0b3JzIHBsdWdn ZWQgaW50byBEVkkgYW5kIEhETUkgY29ubmVjdG9ycwogICAgICAgYXJlIGRldGVjdGVkIGFuZCB0 aGVpciBFRElEIGlzIHJlYWQgY29ycmVjdGx5LiBWR0EgY29ubmVjdG9yIGlzCiAgICAgICBub3Qg dGVzdGVkIHNvIGZhci4KICAgICAqIFRoZXJlIGlzIGEgbG9ja2luZyBwcm9ibGVtIGluIGVpdGhl ciBUVE0gb3IgdGhlIFJhZGVvbiBkcml2ZXIKICAgICAgIHdoaWNoIHByZXZlbnRzIE9wZW5HTCBm cm9tIHdvcmtpbmcgcHJvcGVybHkuIEplYW4tU8OpYmFzdGllbiBpcwogICAgICAgY3VycmVudGx5 IHRyYWNraW5nIHRoaXMgZG93bi4KICAgICAqIEouUi4gT2xkcm95ZCBzdGFydGVkIHRvIHdvcmsg b24gYSA5LVNUQUJMRSBiYWNrcG9ydCBvZiB0aGUgZHJpdmVyCiAgICAgICB3aGljaCBpcyBub3cg d29ya2luZyBxdWl0ZSB3ZWxsLiBIZSBoYWQgdG8gYmFja3BvcnQgc29tZSBmZWF0dXJlcwogICAg ICAgZnJvbSB0aGUgVk0gd2hpY2ggbWF5IG5lZWQgZnVydGhlciByZWZpbmVtZW50IGJ5IHRoZSBW TSBmb2xrcy4KCiAgIFlha2F6IGxlbmRlZCBKZWFuLVPDqWJhc3RpZW4gYSBjb21wdXRlciB3aGlj aCBhbGxvd3MgaGltIHRvIHRlc3QgYQogICBSVjYzMC1iYXNlZCBkaXNjcmV0ZSBjYXJkIGFuZCwg aW4gdGhlIGZ1dHVyZSwgb3RoZXIgUENJZSBjYXJkcy4KICAgU2V2ZXJhbCB1c2VycyBhbHJlYWR5 IGtpbmRseSB0ZXN0ZWQgdGhlIGRyaXZlci4gQmlnIHRoYW5rcyB0byBhbGwKICAgdGhvc2UgY29u dHJpYnV0b3JzIQoKICAgSW4gaXRzIGN1cnJlbnQgc3RhdGUsIHRoZSBkcml2ZXIgYWxsb3dzIHRv IGhhdmUgYSBzaW1wbGUgWCBzZXNzaW9uCiAgIChubyBPcGVuR0wpLCBydW4gY29tbW9uIGFwcGxp Y2F0aW9ucywgd2F0Y2ggbW92aWVzLCBjaGFuZ2UgdGhlCiAgIHJlc29sdXRpb24gYW5kIGVuYWJs ZSBhZGRpdGlvbmFsIG1vbml0b3JzIHdpdGggeHJhbmRyKDEpLiBUaGUgbW9zdAogICBibG9ja2lu ZyBpc3N1ZSBub3cgaXMgdGhlIE9wZW5HTCBkZWFkbG9jayB3aGljaCBwcmV2ZW50cyB0byBydW4K ICAgbW9kZXJuIGNvbXBvc2l0b3JzL2Rlc2t0b3AgZW52aXJvbm1lbnQsIGdhbWVzIGFuZCBXZWJH TCBkZW1vcy4gV2UKICAgYXJlIG5vdCByZWFkeSBmb3IgYSAiQ2FsbCBGb3IgVGVzdGVycyIgeWV0 LgoKT3BlbiB0YXNrczoKCiAgICAxLiBUZXN0IG11bHRpcGxlIGNhcmRzIGNvbmZpZ3VyYXRpb25z IGZvciBWaWRlbyBCSU9TIGlzc3VlcywKICAgICAgIGVzcGVjaWFsbHkgSW50ZWwgaW50ZWdyYXRl ZCBjYXJkICsgUmFkZW9uIGRpc2NyZXRlIGNhcmQsIGFuZCBBTUQKICAgICAgIGludGVncmF0ZWQg Y2FyZCAoSUdQKSArIFJhZGVvbiBkaXNjcmV0ZSBjYXJkLiBObyBuZWVkIHRvIGNoZWNrCiAgICAg ICBjb25maWd1cmF0aW9ucyB3aXRoIG9uZSBzaGFyZWQgY29ubmVjdG9yIHRob3VnaCwgaXQgaXMg bm90CiAgICAgICBzdXBwb3J0ZWQgcmlnaHQgbm93LgogICAgIF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKQXRvbWljICJj bG9zZS1vbi1leGVjIgoKICAgVVJMOiBodHRwczovL3dpa2kuZnJlZWJzZC5vcmcvQXRvbWljQ2xv c2VPbkV4ZWMKCiAgIENvbnRhY3Q6IEppbGxlcyBUam9lbGtlciA8amlsbGVzQEZyZWVCU0Qub3Jn PgoKICAgSWYgdGhyZWFkcyBvciBzaWduYWwgaGFuZGxlcnMgY2FsbCBmb3JrKCkgYW5kIGV4ZWMo KSwgZmlsZQogICBkZXNjcmlwdG9ycyBtYXkgYmUgcGFzc2VkIHVuZGVzaXJhYmx5IHRvIGNoaWxk IHByb2Nlc3Nlcywgd2hpY2ggbWF5CiAgIGxlYWQgdG8gaGFuZ3MgKGlmIGEgcGlwZSBpcyBub3Qg Y2xvc2VkKSwgZXhjZWVkaW5nIHRoZSBmaWxlCiAgIGRlc2NyaXB0b3IgbGltaXQgYW5kIHNlY3Vy aXR5IHByb2JsZW1zIChpZiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMKICAgbG93ZXIgcHJpdmlsZWdl KS4gT25lIHNvbHV0aW9uIGlzIHZhcmlvdXMgbmV3IEFQSXMgdGhhdCBzZXQgdGhlCiAgICJjbG9z ZS1vbi1leGVjIiBmbGFnIGF0b21pY2FsbHkgd2l0aCBhbGxvY2F0aW5nIGEgZmlsZSBkZXNjcmlw dG9yLgogICBTb21lIGV4aXN0aW5nIHNvZnR3YXJlIHdpbGwgdXNlIHRoZSBuZXcgZmVhdHVyZXMg aWYgcHJlc2VudCBvciB3aWxsCiAgIGV2ZW4gcmVmdXNlIHRvIGNvbXBpbGUgd2l0aG91dCB0aGVt LgoKICAgVmFyaW91cyBwYXJ0cyBoYXZlIGJlZW4gcHJlc2VudCBmb3Igc29tZSB0aW1lLgoKICAg SW4gZmlyc3QgcXVhcnRlciBvZiAyMDEzLCBleHRlbnNpb25zIHRvIHJlY3Ztc2coKSwgc29ja2V0 KCksCiAgIHNvY2tldHBhaXIoKSBhbmQgcG9zaXhfb3BlbnB0KCkgaGF2ZSBiZWVuIGFkZGVkLgog ICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwoKQlhSLlNVIC0tIFN1cGVyIFVzZXIncyBCU0QgQ3Jvc3MgUmVmZXJlbmNl CgogICBVUkw6IGh0dHA6Ly9ieHIuc3UvCiAgIFVSTDoKICAgaHR0cDovL2xpc3RzLmZyZWVic2Qu b3JnL3BpcGVybWFpbC9mcmVlYnNkLWhhY2tlcnMvMjAxMy1BcHJpbC8wNDIzMzQuaHRtbAoKICAg Q29udGFjdDogQ29uc3RhbnRpbmUgQS4gTXVyZW5pbiA8Y25zdCsrQEZyZWVCU0Qub3JnPgoKICAg U3VwZXIgVXNlcidzIEJTRCBDcm9zcyBSZWZlcmVuY2UgKEJYUi5TVSkgaXMgYSBuZXcgc291cmNl LWNvZGUgc2VhcmNoCiAgIGVuZ2luZSB0aGF0IGNvdmVycyB0aGUgY29tcGxldGUga2VybmVsIGFu ZCBub24tR05VIHVzZXJsYW5kIHNvdXJjZQogICB0cmVlcyBvZiBGcmVlQlNELCBOZXRCU0QsIE9w ZW5CU0QsIGFuZCBEcmFnb25GbHkgQlNELgoKICAgQlhSLlNVIGlzIG9wdGltaXNlZCB0byBiZSB2 ZXJ5IGZhc3QsIGhhcyBkYWlseSB1cGRhdGVzIG9mIGFsbCB0aGUKICAgdHJlZXMsIGFuZCBhbHNv IGFjdHMgYXMgYSBkZXRlcm1pbmlzdGljIFVSTCBzaG9ydGVuZXIuCgogICBCWFIuU1UgaXMgYmFz ZWQgb24gYW4gT3Blbkdyb2sgZm9yaywgYnV0IGl0IGlzIG1vcmUgdGhhbiBqdXN0CiAgIE9wZW5H cm9rLiBXZSBoYXZlIGZpeGVkIGEgbnVtYmVyIG9mIGFubm95YW5jZXMsIGVsaW1pbmF0ZWQgZmVh dHVyZXMKICAgdGhhdCBqdXN0IG5ldmVyIHdvcmtlZCByaWdodCBmcm9tIHRoZSBvdXRyaWdodCwg YW5kIHByb3ZpZGVkCiAgIGludGVncmF0aW9uIHdpdGggdG9vbHMgbGlrZSBDVlN3ZWIgKGluY2x1 ZGluZyBncmVhdCBtaXJyb3JzIGxpa2UKICAgYWxsYnNkLm9yZyksIEZyZWVCU0QncyBWaWV3VkMg KFNWTiksIGFzIHdlbGwgYXMgR2l0SHViIGFuZCBHaXR3ZWIKICAgZnJvbSBnaXQuZnJlZWJzZC55 b3VyLm9yZywgcGx1cyBhIHRhZCBvZiBvdGhlciBpbXByb3ZlbWVudHMsCiAgIGluY2x1ZGluZyBh IGNvbXBsZXRlIHJld3JpdGUgb2YgYW4gbWRvYyBwYXJzZXIuIExhc3QsIGJ1dCBkZWZpbml0ZWx5 CiAgIG5vdCBsZWFzdCwgaXMgYW4gZXh0ZW5zaXZlIHNldCBvZiBuZ2lueCByZXdyaXRlIHJ1bGVz IHRoYXQgbWFrZXMgaXQKICAgYSBicmVlemUgdG8gdXNlIEJYUi5TVSBhcyBhIGRldGVybWluaXN0 aWMgVVJMIGNvbXBhY3RvciBmb3IKICAgcmVmZXJlbmNpbmcgQlNEIHNvdXJjZSBjb2RlLiBGb3Ig ZXhhbXBsZSwgdGhlCiAgIGh0dHA6Ly9ieHIuc3UvZi9rZXJuL3NjaGVkX3VsZS5jIFVSTCB3aWxs IGF1dG9tYXRpY2FsbHkgcmVkaXJlY3QgdG8KICAgaHR0cDovL2J4ci5zdS9GcmVlQlNEL3N5cy9r ZXJuL3NjaGVkX3VsZS5jIHRocm91Z2ggbmdpbnguCgogICBOb3RlIHRoYXQgYWNjb3JkaW5nIHRv IHRoZSByZWxlYXNlIHNjaGVkdWxlIG9mIEJYUi5TVSwgdGhlcmUgaXMgbm8KICAgSVB2NCBnbHVl IHVudGlsIDIwMTMtMDQtMjQ7IG90aGVyd2lzZSwgdGhlIHNlcnZpY2UgaXMgYXZhaWxhYmxlIHZp YQogICBib3RoIElQdjQgYW5kIElQdjYuIFNlZSB0aGUgMjAxMy0wNC0wMSBhbm5vdW5jZW1lbnQg b24gdGhlCiAgIGZyZWVic2QtaGFja2VycyBtYWlsaW5nIGxpc3QgZm9yIG1vcmUgZGV0YWlscy4K Ck9wZW4gdGFza3M6CgogICAgMS4gRmluZCB1cC10by1kYXRlIGdpdCByZXBvc2l0b3JpZXMgKHNl cnZlZCB3aXRoIEdpdHdlYikgb2YgTmV0QlNECiAgICBhbmQgT3BlbkJTRC4KICAgIDIuIEZpbmQg YSBHaXR3ZWIgbWlycm9yIG9mIEZyZWVCU0QgdGhhdCBpcyBmYXN0ZXIgdGhhbiBHaXRIdWIgYW5k CiAgICAgICBHaXRvcmlvdXMuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpjYWxsb3V0KDkpIEltcHJvdmVtZW50 cwoKICAgVVJMOiBodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35kYXZpZGUvYXNpYS9jYWxsb3V0 X3BhcGVyLnBkZgogICBVUkw6IGh0dHA6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfmRhdmlkZS9hc2lh L2NhbGxvdXRuZy5wZGYKICAgVVJMOiBodHRwOi8vc3Zud2ViLmZyZWVic2Qub3JnL2Jhc2U/dmll dz1yZXZpc2lvbiZyZXZpc2lvbj0yNDc3NzcKCiAgIENvbnRhY3Q6IERhdmlkZSBJdGFsaWFubyA8 ZGF2aWRlQEZyZWVCU0Qub3JnPgogICBDb250YWN0OiBBbGV4YW5kZXIgTW90aW4gPG1hdkBGcmVl QlNELm9yZz4KCiAgIEluIEZyZWVCU0QsIHRpbWVycyBhcmUgcHJvdmlkZWQgYnkgdGhlIGNhbGxv dXQgZmFjaWxpdHksIHdoaWNoIGFsbG93cwogICB0byByZWdpc3RlciBhIGZ1bmN0aW9uIHdpdGgg YW4gYXJndW1lbnQgdG8gYmUgY2FsbGVkIGF0IHNwZWNpZmllZAogICBmdXR1cmUgdGltZS4gVGhl IHN1YnN5c3RlbSBzdWZmZXJlZCBvZiBzb21lIHByb2JsZW1zLCBzdWNoIGFzIHRoZQogICBpbXBv c3NpYmlsaXR5IG9mIGhhbmRsaW5nIGhpZ2gtcmVzb2x1dGlvbiBldmVudHMgb3IgaXRzIGluaGVy ZW50CiAgIHBlcmlvZGljIHN0cnVjdHVyZSwgd2hpY2ggbWF5IGxlYWQgdG8gc3B1cmlvdXMgd2Fr ZXVwcyBhbmQgaGlnaGVyCiAgIHBvd2VyIGNvbnN1bXB0aW9uLiBTb21lIGNvbnN1bWVycywgc3Vj aCBhcyBoaWdoLXNwZWVkIG5ldHdvcmtpbmcsCiAgIFZvSVAgYW5kIG90aGVyIHJlYWwtdGltZSBh cHBsaWNhdGlvbnMgbmVlZCBhIGJldHRlciBwcmVjaXNpb24gdGhhbgogICB0aGUgb25lIGN1cnJl bnRseSBhbGxvd2VkLiBBbHNvLCBlc3BlY2lhbGx5IHdpdGggdGhlIHViaXF1aXR5IG9mCiAgIGxh cHRvcHMgaW4gdGhlIGxhc3QgeWVhcnMsIHRoZSBlbmVyZ3kgd2FzdGVkIGJ5IGludGVycnVwdHMg d2FraW5nCiAgIENQVXMgZnJvbSBzbGVlcCBtYXkgYmUgYSBzZW5zaXRpdmUgZmFjdG9yLiBSZWNl bnQgY2hhbmdlcyBpbiB0aGUKICAgc3Vic3lzdGVtIGFkZHJlc3NlZCB0aG9zZSBsb25nLXN0YW5k aW5nIGlzc3VlcyBhcyB3ZWxsIGFzIGludHJvZHVjZWQKICAgYSBuZXcgcHJvZ3JhbW1pbmcgaW50 ZXJmYWNlIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBuZXcgZmVhdHVyZXMuCgpPcGVuIHRhc2tz OgoKICAgIDEuIEV2YWx1YXRpbmcgaWYgaXQgaXMgd29ydGggdG8gbWlncmF0ZSBhbnkgb2YgdGhl IG90aGVyIGNhbGxvdXQoOSkKICAgICAgIGNvbnN1bWVycyB0byB0aGUgbmV3IGludGVyZmFjZS4K ICAgIDIuIE1vdmUgY2FsbG91dCBjb25zdW1lcnMgc3RpbGwgdXNpbmcgdGhlIGxlZ2FjeQogICAg dGltZW91dCgpL3VudGltZW91dCgpIGludGVyZmFjZSB0byBjYWxsb3V0XyooKSBpbiBvcmRlciB0 byBnZXQgcmlkCiAgICBvZiByZWR1bmRhbnQgY29kZSBhbmQgY2xlYW4gdXAgS1BJLgogICAgIF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwoKRnJlZUJTRCBCdWdtZWlzdGVyIFRlYW0KCiAgIENvbnRhY3Q6IEVpdGFuIEFkbGVy IDxlYWRsZXJARnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IEdhdmluIEF0a2luc29uIDxnYXZpbkBG cmVlQlNELm9yZz4KICAgQ29udGFjdDogT2xla3NhbmRyIFR5bW9zaGVua28gPGdvbnpvQEZyZWVC U0Qub3JnPgoKICAgVGhlIEZyZWVCU0QgQnVnbWVpc3RlciBUZWFtIGFyZSBjb250aW51aW5nIHRv IGV2YWx1YXRlIG9wdGlvbnMgZm9yCiAgIGFsdGVybmF0ZSBidWcgdHJhY2tlcnMgYW5kIGhhdmUg bmFycm93ZWQgdGhlaXIgY2hvaWNlcyB0byB0d28KICAgcG9zc2liaWxpdGllczogQnVnemlsbGEg YW5kIHJvdW5kdXAuCgogICBUaGUgbnVtYmVyIG9mIG5vbi1wb3J0cyBQUnMgaGF2ZSByZW1haW5l ZCByZWxhdGl2ZWx5IHN0YXRpYyBvdmVyIHRoZQogICBsYXN0IHRocmVlIG1vbnRocywgd2l0aCBh cyBtYW55IGNvbWluZyBpbiBhcyBiZWluZyBjbG9zZWQuIFRoZSBudW1iZXIKICAgb2YgcG9ydHMg UFJzIGhhdmUgaW5jcmVhc2VkIHJlY2VudGx5LCBsYXJnZWx5IGR1ZSB0byB0aGUgcG9ydHMgZnJl ZXplCiAgIGZvciB0aGUgdXBjb21pbmcgOC40LVJFTEVBU0UuCgogICBUaGUgQnVnbWVpc3RlciB0 ZWFtIGNvbnRpbnVlIHdvcmsgb24gdHJ5aW5nIHRvIG1ha2UgdGhlIGNvbnRlbnRzIG9mCiAgIHRo ZSBHTkFUUyBQUiBkYXRhYmFzZSBjbGVhbmVyLCBtb3JlIGFjY2Vzc2libGUgYW5kIGVhc2llciBm b3IKICAgY29tbWl0dGVycyB0byBmaW5kIGFuZCByZXNvbHZlIFBScywgYnkgdGFnZ2luZyBQUnMg dG8gaW5kaWNhdGUgdGhlCiAgIGFyZWFzIGludm9sdmVkLCBhbmQgYnkgZW5zdXJpbmcgdGhhdCB0 aGVyZSBpcyBzdWZmaWNpZW50IGluZm8gd2l0aGluCiAgIGVhY2ggUFIgdG8gcmVzb2x2ZSBlYWNo IGlzc3VlLgoKICAgQXMgYWx3YXlzLCBhbnlib2R5IGludGVyZXN0ZWQgaW4gaGVscGluZyBvdXQg d2l0aCB0aGUgUFIgcXVldWUgaXMKICAgd2VsY29tZSB0byBqb2luIHVzIGluICNmcmVlYnNkLWJ1 Z2J1c3RlcnMgb24gRUZuZXQuIFdlIGFyZSBhbHdheXMKICAgbG9va2luZyBmb3IgYWRkaXRpb25h bCBoZWxwLCB3aGV0aGVyIHlvdXIgaW50ZXJlc3RzIGxpZSBpbiB0cmlhZ2luZwogICBpbmNvbWlu ZyBQUnMsIGdlbmVyYXRpbmcgcGF0Y2hlcyB0byByZXNvbHZlIGV4aXN0aW5nIHByb2JsZW1zLCBv cgogICBzaW1wbHkgaGVscGluZyB3aXRoIHRoZSBkYXRhYmFzZSBob3VzZWtlZXBpbmcgKGlkZW50 aWZ5aW5nIGR1cGxpY2F0ZQogICBQUnMsIG9uZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiByZXNv bHZlZCwgZXRjKS4gVGhpcyBpcyBhIGdyZWF0IHdheQogICBvZiBnZXR0aW5nIG1vcmUgaW52b2x2 ZWQgd2l0aCBGcmVlQlNEIQoKT3BlbiB0YXNrczoKCiAgICAxLiBGaW5hbGl6ZSB0aGUgZGVjaXNp b24gb2Ygd2hpY2ggbmV3IGJ1ZyB0cmFja2VyIHRvIHVzZS4KICAgIDIuIEdldCBtb3JlIHVzZXJz IGludm9sdmVkIHdpdGggdHJpYWdpbmcgUFJzIGFzIHRoZXkgY29tZSBpbi4KICAgIDMuIEFzc2lz dCBjb21taXR0ZXJzIHdpdGggY2xvc2luZyBQUnMuCiAgICAgX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpGcmVlQlNEIENv cmUgVGVhbQoKICAgQ29udGFjdDogQ29yZSBUZWFtIDxjb3JlQEZyZWVCU0Qub3JnPgoKICAgQXQg dGhlIGVuZCBvZiAyMDEyLCB0aGUgQ29yZSBUZWFtIGFwcHJvdmVkIHVzaW5nIEdvb2dsZSBBbmFs eXRpY3Mgb24KICAgdGhlIFByb2plY3Qgd2ViIHNpdGUgdG8gZW5hYmxlIHRoZSBEb2N1bWVudGF0 aW9uIEVuZ2luZWVyaW5nIFRlYW0gdG8KICAgY29sbGVjdCBzdGF0aXN0aWNzIG9uIGl0cyB1c2Fn ZSBmb3IgYmV0dGVyIHByb2ZpbGluZy4gSW4gdGhlIGZpcnN0CiAgIHF1YXJ0ZXIgb2YgMjAxMywg dGhlIENvcmUgVGVhbSB3b3JrZWQgd2l0aCB0aGUgRG9jdW1lbnRhdGlvbgogICBFbmdpbmVlcmlu ZyBUZWFtIHRvIGZpbmFsaXplIHRoZSBhc3NvY2lhdGVkIHBvbGljaWVzLgoKICAgRHVlIHRvIHNv bWUgZGViYXRlcyBhcm91bmQgdGhlIHBvbGl0aWNhbCBjb3JyZWN0bmVzcyBvZiBxdW90ZXMgYWRk ZWQKICAgZm9yIHRoZSBmb3J0dW5lKDYpIHV0aWxpdHksIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEg ZmlsZSBoYXMgYmVlbgogICByZW1vdmVkIGZyb20gdGhlIGJhc2Ugc3lzdGVtIGluIC1DVVJSRU5U LgoKICAgSW4gbGlnaHQgb2YgdGhlIHNlY3VyaXR5IGluY2lkZW50LCB0aGUgbGlhaXNvbiByb2xl IGJldHdlZW4gdGhlIENvcmUKICAgVGVhbSBhbmQgdGhlIFNlY3VyaXR5IFRlYW0gaGFzIGJlZW4g cmVzdG9yZWQsIHdpdGggR2F2aW4gQXRraW5zb24KICAgYXNzdW1pbmcgdGhpcyByb2xlLiBUaGUg Q29yZSBUZWFtIHdvcmsgaGFyZCBvbiByZXNvbHZpbmcgdGhlIGN1cnJlbnQKICAgc2l0dWF0aW9u IG9mIHRoZSBiaW5hcnkgcGFja2FnZSBidWlsZGluZyBjbHVzdGVyIGFuZCB0aGUgYXNzb2NpYXRl ZAogICBzZWN1cml0eSBwcm9ibGVtcyBpbiB0aWdodCBjb29wZXJhdGlvbiB3aXRoIHRoZSBQb3J0 cyBNYW5hZ2VtZW50CiAgIFRlYW0sIENsdXN0ZXIgQWRtaW5pc3RhdG9ycywgYW5kIHRoZSBGcmVl QlNEIEZvdW5kYXRpb24gQm9hcmQuIFRoZQogICBjb21wcm9taXNlIHBhZ2UgaXMga2VwdCB1cGRh dGVkIG9uIHRoZSByZXN1bHRzLgoKICAgVGhlIEZyZWVCU0QgUHJvamVjdCBzdWJtaXR0ZWQgYW4g YXBwbGljYXRpb24gZm9yIEdvb2dsZSBTdW1tZXIgb2YKICAgQ29kZSB0aGlzIHllYXIgYWdhaW4u CgogICBUaGVyZSB3YXMgYWNjZXNzIGdyYW50ZWQgZm9yIDIgbmV3IGNvbW1pdHRlcnMgYW5kIDEg Y29tbWl0IGJpdCB3YXMKICAgdGFrZW4gZm9yIHNhZmVrZWVwaW5nIGluIHRoaXMgcXVhcnRlci4K ICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KCkZyZWVCU0QgSGFza2VsbCBQb3J0cwoKICAgVVJMOiBodHRwOi8vd2lr aS5mcmVlYnNkLm9yZy9IYXNrZWxsCiAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL2ZyZWVic2Qt aGFza2VsbC9mcmVlYnNkLWhhc2tlbGwvCgogICBDb250YWN0OiBHw6Fib3IgUMOhbGkgPHBnakBG cmVlQlNELm9yZz4KICAgQ29udGFjdDogQXNoaXNoIFNodWtsYSA8YXNoaXNoQEZyZWVCU0Qub3Jn PgoKICAgV2UgYXJlIHByb3VkIHRvIGFubm91bmNlIEZyZWVCU0QgSGFza2VsbCBUZWFtIGhhcyB1 cGRhdGVkIGV4aXN0aW5nCiAgIHBvcnRzIHRvIHRoZWlyIGxhdGVzdCBzdGFibGUgdmVyc2lvbnMu IFdlIGFsc28gYWRkZWQgbnVtYmVyIG9mIG5ldwogICBwb3J0cywgd2hpY2ggYnJpbmdzIHRoZSBj b3VudCBvZiBIYXNrZWxsIHBvcnRzIGluIEZyZWVCU0QgcG9ydHMgdHJlZQogICB0byBtb3JlIHRo YW4gNDAwLCBmZWF0dXJpbmcgbWFueSBwb3B1bGFyIHNvZnR3YXJlLCBlLmcuIHhtb25hZCwKICAg Z2l0LWFubmV4LCBwYW5kb2Mgb3IgdmFyaW91cyB3ZWIgZnJhbWV3b3JrIGltcGxlbWVudGF0aW9u cy4gQWxsIG9mCiAgIHRoZXNlIHVwZGF0ZXMgd2lsbCBiZSBhdmFpbGFibGUgYXMgcGFydCBvZiB0 aGUgdXBjb21pbmcgOC40LVJFTEVBU0UuCiAgIFdlIGFsc28gY2FtZSB0byBrbm93IHRoYXQgSGFz a2VsbCBwb3J0cyBhcmUgYWxzbyBiZWluZyB1c2VkCiAgIHN1Y2Nlc3NmdWxseSBvbiBEcmFnb25G bHlCU0QncyBkcG9ydHMgdHJlZS4KCiAgIEluIG91ciBkZXZlbG9wbWVudCByZXBvc2l0b3J5LCB0 aGVyZSB3YXMgc29tZSBvcHRpb25hbCBzdXBwb3J0IGFkZGVkCiAgIGZvciBMTFZNLWJhc2VkIGNv ZGUgZ2VuZXJhdGlvbiB1c2luZyB0aGUgR0hDIExMVk0gYmFja2VuZC4gVGhpcyB3b3JrcwogICBt b3N0bHkgb24gRnJlZUJTRCB0b28sIHRob3VnaCBzb21lIG9mIHRoZSBwb3J0cyB3b3VsZCBuZWVk IGZpeGluZyBzbwogICBpdCBpcyBzdGlsbCBjb25zaWRlcmVkIGV4cGVyaW1lbnRhbC4KCk9wZW4g dGFza3M6CgogICAgMS4gVHJ5IHRvIGJ1aWxkIEdIQyB3aXRoIGNsYW5nIChhcyBzeXN0ZW0gY29t cGlsZXIpLgogICAgMi4gQ29tbWl0IHBlbmRpbmcgSGFza2VsbCBwb3J0cyB0byB0aGUgRnJlZUJT RCBwb3J0cyB0cmVlLgogICAgMy4gQWRkIG1vcmUgcG9ydHMgdG8gdGhlIFBvcnRzIENvbGxlY3Rp b24uCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCgpGcmVlQlNEIG9uIEN1YmllYm9hcmQKCiAgIENvbnRhY3Q6IEdh bmJvbGQgVHNhZ2FhbmtodXUgPGdhbmJvbGRARnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IE9sZWtz YW5kciBUeW1vc2hlbmtvIDxnb256b0BGcmVlQlNELm9yZz4KCiAgIEluaXRpYWwgc3VwcG9ydCBv ZiBBbGx3aW5uZXIgQTEwIFNvQyBpcyBjb21taXR0ZWQgdG8gLUNVUlJFTlQuCiAgIEZyZWVCU0Qg aXMgbm93IHJ1bm5pbmcgb24gYm9hcmRzIHN1Y2ggYXMgQ3ViaWVib2FyZCwgSGFja2JlcnJ5IGFu ZAogICBpdCBzdXBwb3J0cyBmb2xsb3dpbmcgcGVyaXBoZXJhbHM6CiAgICAgKiBVU0IgRUhDSQog ICAgICogR1BJTwoKT3BlbiB0YXNrczoKCiAgICAxLiBHZXQgRU1BQyBFdGhlcm5ldCBkcml2ZXIg d29ya2luZy4gTmVlZCBtb3JlIGhlbHAgZnJvbSBuZXR3b3JrCiAgICAgICBkcml2ZXIgZXhwZXJ0 cy4KICAgIDIuIEltcGxlbWVudCBtb3JlIGRyaXZlcnMuCiAgICAgX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpGcmVlQlNE IFBvcnQgTWFuYWdlcnMKCiAgIFVSTDogaHR0cDovL3d3dy5GcmVlQlNELm9yZy9wb3J0cy8KICAg VVJMOiBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2RvYy9lbi9hcnRpY2xlcy9jb250cmlidXRpbmct cG9ydHMvCiAgIFVSTDogaHR0cDovL3BvcnRzbW9uLmZyZWVic2Qub3JnLwogICBVUkw6IGh0dHA6 Ly93d3cuZnJlZWJzZC5vcmcvcG9ydG1nci8KICAgVVJMOiBodHRwOi8vYmxvZ3MuZnJlZWJzZGlz aC5vcmcvcG9ydG1nci8KICAgVVJMOiBodHRwOi8vd3d3LnR3aXR0ZXIuY29tL2ZyZWVic2RfcG9y dG1nci8KICAgVVJMOiBodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wb3J0bWdyCgogICBDb250YWN0 OiBUaG9tYXMgQWJ0aG9ycGUgPHBvcnRtZ3Itc2VjcmV0YXJ5QEZyZWVCU0Qub3JnPgogICBDb250 YWN0OiBQb3J0IE1hbmFnZW1lbnQgVGVhbSA8cG9ydG1nckBGcmVlQlNELm9yZz4KCiAgIFRoZSBw b3J0cyB0cmVlIGNvbnRhaW5zIGFwcHJveGltYXRlbHkgMjQsMzAwIHBvcnRzLCB3aGlsZSB0aGUg UFIKICAgY291bnQgc3RpbGwgaXMgY2xvc2UgdG8gMTYwMC4KCiAgIEluIHRoZSBmaXJzdCBxdWFy dGVyIHdlIGFkZGVkIDQgbmV3IGNvbW1pdHRlcnMsIHRvb2sgaW4gMSBjb21taXQgYml0CiAgIGZv ciBzYWZlIGtlZXBpbmcsIGFuZCByZS1pbnN0YXRlZCAxIGNvbW1pdCBiaXQuCgogICBJbiBGZWJy dWFyeSwgTWFyayBMaW5pbW9uIChsaW5pbW9uKSBzdGVwcGVkIGRvd24gZnJvbSBoaXMgZHV0aWVz IGluCiAgIHRoZSB0ZWFtLiBNYXJrIGhhZCBiZWVuIHRoZSBsb25nZXN0IHNlcnZpbmcgbWVtYmVy IG9mIHRoZSB0ZWFtLiBNYXJrCiAgIGhhZCBzcGVudCBtYW55IGxvbmcgaG91cnMgcmVmYWN0b3Jp bmcgYW5kIGRvY3VtZW50aW5nIHRoZSBwb3J0YnVpbGQKICAgc29mdHdhcmUgdG8gZW5zdXJlIHRo YXQgcG9pbnR5aGF0IHNlcnZpY2VzIGNvdWxkIGJlIHJlc3RvcmVkLgoKICAgQWZ0ZXIgYSBzZWN1 cml0eSByZXZpZXcsIHJlZHBvcnRzLm9yZyB3YXMgdHVybmVkIGJhY2sgb24sIHJlc3RvcmluZwog ICBUaW5kZXJib3ggc2VydmljZXMgdG8gY29udHJpYnV0b3JzLCBhbG9uZyB3aXRoIHBvc3QgY29t bWl0IFFBVHMuIEluCiAgIGFkZGl0aW9uLCBwb2ludHloYXQgaW5mcmFzdHJ1Y3R1cmUgaGFkIGFs c28gdW5kZXJnb25lIGEgcmV2aWV3IGFuZAogICB3b3JrIGJlZ2FpbiBvbiByZXN0b3JpbmcgdGhl IHBhY2thZ2UgYnVpbGQgc3lzdGVtLgoKICAgRXJ3aW4gTGFuc2luZyAoZXJ3aW4pIGFuZCBNYXJ0 aW4gV2lsa2UgKG1pd2kpIHRvb2sgb24gdGhlIHByaW5jaXBsZQogICByb2xlcyBvZiBnZXR0aW5n IHRoZSBwb3J0YnVpbGQgc29mdHdhcmUgaW5zdGFsbGVkIGFuZCBydW5uaW5nIG9uCiAgIHBvaW50 eWhhdC4gQXMgYSByZXN1bHQgb2YgYWxsIHRoZWlyIGhhcmQgd29yaywgcG9ydG1nckAgd2FzIGZp bmFsbHkKICAgYWJsZSB0byByZXN1bWUgZG9pbmcgLWV4cCBydW5zLCBwcmVwYXJpbmcgcGFja2Fn ZXMgZm9yIHRoZSB1cGNvbWluZwogICA4LjQgcmVsZWFzZSwgYXMgd2VsbCBhcyBnZXR0aW5nIGEg c2V0IG9mIDkuMSBwYWNrYWdlcyByZXRyb2FjdGl2ZWx5CiAgIHByZXBhcmVkLgoKICAgQWZ0ZXIg bWFueSBsb25nIHllYXJzIG9mIGJlaW5nIHRoZSBkZWZhY3RvIHN0YW5kYXJkIGZvciB0aGUgUHJv amVjdCwKICAgQ1ZTIHN1cHBvcnQgZm9yIHRoZSBwb3J0cyB0cmVlIG9mZmljaWFsbHkgZW5kZWQg b24gRmVicnVhcnkgMjguCgogICBUaGUgcG9ydHMgdHJlZSB3YXMgdGFnZ2VkIHdpdGggUkVMRUFT RV83X0VPTCwgdG8gY29pbmNpZGUgd2l0aCB0aGUKICAgZW5kIG9mIGxpZmUgZm9yIEZyZWVCU0Qg Ny5YLgoKICAgQmVhdCBHYWV0emkgKGJlYXQpIHN0ZXBwZWQgZG93biBmcm9tIGhpcyBkdXRpZXMg b24gcG9ydG1nckAgaW4gTWFyY2guCiAgIEFtb25nIGhpcyBub3RhYmxlIGNvbnRyaWJ1dGlvbnMs IHdhcyB0aGUgdGFzayBvZiBtaWdyYXRpbmcgdGhlIFBvcnRzCiAgIFRyZWUgZnJvbSB0aGUgb2xk IENWUyByZXBvIHRvIFN1YnZlcnNpb24uCgogICBCcnlhbiBEcmV3ZXJ5IChiZHJld2VyeSkgam9p bmVkIHRoZSBQb3J0cyBNYW5hZ2VtZW50IHRlYW0gaW4gTWFyY2gsCiAgIGJyaW5naW5nIHdpdGgg aGltIGhpcyB3ZWFsdGggb2Yga25vd2xlZGdlIGFuZCBza2lsbCBmcm9tIG1haW50YWluaW5nCiAg IHBvcnR1cGdyYWRlLCBwb3J0bWFzdGVyLCBhc3Npc3Rpbmcgd2l0aCBwa2duZywgYXMgd2VsbCBh cwogICBjby1kZXZlbG9waW5nIHBvdWRyaWVyZS4KCk9wZW4gdGFza3M6CgogICAgMS4gTW9zdCBw b3J0cyBQUnMgYXJlIGFzc2lnbmVkLCB3ZSBub3cgbmVlZCB0byBmb2N1cyBvbiB0ZXN0aW5nLAog ICAgICAgY29tbWl0dGluZyBhbmQgY2xvc2luZy4KICAgICBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCkZyZWVCU0QgUG9z dG1hc3RlciBUZWFtCgogICBDb250YWN0OiBEYXZpZCBXb2xmc2tpbGwgPHBvc3RtYXN0ZXJARnJl ZUJTRC5vcmc+CgogICBJbiB0aGUgZmlyc3QgcXVhcnRlciBvZiAyMDEzLCB0aGUgRnJlZUJTRCBQ b3N0bWFzdGVyIFRlYW0gaGFzCiAgIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgaXRlbXMgdGhh dCBtYXkgYmUgaW50ZXJlc3Qgb2YgdGhlIGdlbmVyYWwKICAgcHVibGljOgoKICAgICAqIENoYW5n ZXMgaW4gY29uZmlndXJhdGlvbiBvZiBNYWlsbWFuLW1hbmFnZWQgbGlzdHM6IGFsbG93IHRvCiAg ICAgICBhY2NlcHQgdGhlIGFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZSBNSU1FIHR5cGUgKGlu IGFkZGl0aW9uIHRvCiAgICAgICB0aGUgYXBwbGljYXRpb24veC1wa2NzNy1zaWduYXR1cmUgTUlN RSB0eXBlKSwgdGh1cyBwZXJtaXR0aW5nCiAgICAgICBTL01JTUUgc2lnbmF0dXJlcyBvbiBsaXN0 IG1haWwuCiAgICAgKiBOZXcgbGlzdHM6IGZyZWVic2Qtb3BzLWFubm91bmNlIC0tIGFubm91bmNl bWVudHMgb2YKICAgICAgIGluZnJhc3RydWN0dXJlIGlzc3VlcywgYW5kIGZyZWVic2QtcGtnIC0t IGRpc2N1c3Npb24gb2YgYmluYXJ5CiAgICAgICBwYWNrYWdlIG1hbmFnZW1lbnQgYW5kIHBhY2th Z2UgdG9vbHMuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCgpGcmVlQlNEIFJlbGVhc2UgRW5naW5lZXJpbmcgVGVh bQoKICAgVVJMOiBodHRwOi8vd3d3LmZyZWVic2Qub3JnL3JlbGVhc2VzLzguNFIvc2NoZWR1bGUu aHRtbAoKICAgQ29udGFjdDogRnJlZUJTRCBSZWxlYXNlIEVuZ2luZWVyaW5nIFRlYW0gPHJlQEZy ZWVCU0Qub3JnPgoKICAgRnJlZUJTRCA4LjQtUkMxIGp1c3QgZ290IG91dCB0aGUgZG9vciBhbmQg d2UgYXJlIHBsYW5uaW5nIFJDMi4gQQogICBjb3VwbGUgb2YgY3JpdGljYWwgZml4ZXMgaGF2ZSBj b21lIGluIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiBSQzIuCiAgIFRoZSBzY2hlZHVsZSBoYXMg c2xpcHBlZCBhYm91dCAxMCBkYXlzIHNvIGZhci4gV2UgYXJlIGV4cGVjdGluZyB0aGUKICAgZmlu YWwgcmVsZWFzZSBieSB0aGUgZW5kIG9mIEFwcmlsLiBQYWNrYWdlcyBmb3IgOC40IGhhdmUgYmVl bgogICBwcm92aWRlZCBieSBhIGZ1bGx5IG9wZXJhdGlvbmFsIHBhY2thZ2UgYnVpbGRpbmcgY2x1 c3Rlci4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KCkZyZWVCU0QvYXJtIFN1cGVycGFnZXMgZm9yIEFSTXY3Cgog ICBVUkw6CiAgIGh0dHA6Ly9zdGF0aWMudXNlbml4Lm9yZy9ldmVudHMvb3NkaTAyL3RlY2gvZnVs bF9wYXBlcnMvbmF2YXJyby9uYXZhcnJvLnBkZgogICBVUkw6IGh0dHBzOi8vd2lraS5mcmVlYnNk Lm9yZy9BUk1TdXBlcnBhZ2VzIFVSTDoKICAgaHR0cHM6Ly9naXRodWIuY29tL3NlbWloYWxmLWJv ZGVrLXpiaWduaWV3L2ZyZWVic2QtYXJtLXN1cGVycGFnZXMuZ2l0CgogICBDb250YWN0OiBaYmln bmlldyBCb2RlayA8emJiQHNlbWloYWxmLmNvbT4KICAgQ29udGFjdDogR3J6ZWdvcnogQmVybmFj a2kgPGdqYkBzZW1paGFsZi5jb20+CiAgIENvbnRhY3Q6IFJhZmHFgiBKYXdvcm93c2tpIDxyYWpA c2VtaWhhbGYuY29tPgoKICAgQVJNIGFyY2hpdGVjdHVyZSBpcyBtb3JlIGFuZCBtb3JlIHByZXZh aWxpbmcsIG5vdCBvbmx5IGluIHRoZSBtb2JpbGUKICAgYW5kIGVtYmVkZGVkIHNwYWNlLiBBbW9u ZyB0aGUgbW9yZSBpbnRlcmVzdGluZyBpbmR1c3RyeSB0cmVuZHMKICAgZW1lcmdpbmcgaW4gdGhl IHJlY2VudCBtb250aHMgaGFzIGJlZW4gdGhlICJBUk0gc2VydmVyIiBjb25jZXB0LgogICBTb21l IHRvcC10aWVyIGNvbXBhbmllcyBzdGFydGVkIGRldmVsb3Bpbmcgc3lzdGVtcyBsaWtlIHRoaXMg YWxyZWFkeQogICAoRGVsbCwgSFApLgoKICAgS2V5IHRvIEZyZWVCU0Qgc3VjY2VzcyBpbiB0aGVz ZSBuZXcgYXJlYXMgYXJlIHNvcGhpc3RpY2F0ZWQgZmVhdHVyZXMsCiAgIGFtb25nIHRoZW0gYXJl IHN1cGVycGFnZXMuCgogICBUaGUgb2JqZWN0aXZlIG9mIHRoaXMgcHJvamVjdCBpcyB0byBwcm92 aWRlIEZyZWVCU0QvYXJtIHdpdGggdGhlCiAgIHN1cGVycGFnZXMgc3VwcG9ydCwgd2hpY2ggd2ls bCBhbGxvdyBmb3IgZWZmaWNpZW50IHVzZSBvZiBUTEIKICAgdHJhbnNsYXRpb25zIChlbmxhcmdl IFRMQiBjb3ZlcmFnZSksIGxlYWRpbmcgdG8gaW1wcm92ZWQgcGVyZm9ybWFuY2UKICAgaW4gbWFu eSBhcHBsaWNhdGlvbnMgYW5kIHNjYWxhYmlsaXR5LiBJbmRpY2F0ZWQgZnVuY3Rpb25hbGl0eSBp cwogICBpbnRlbmRlZCB0byB3b3JrIG9uIEFSTXY3LWJhc2VkIHByb2Nlc3NvcnMsIGhvd2V2ZXIg Y29tcGF0aWJpbGl0eQogICB3aXRoIEFSTXY2IHdpbGwgYmUgcHJlc2VydmVkLgoKICAgQ3VycmVu dCBzdXBwb3J0IHN0YXR1czoKICAgICAqIFBvcnQgb2YgdGhlIHB2X2VudHJ5IGFsbG9jYXRvci4K ICAgICAqIFN3aXRjaCB0byAiQVBbMjoxXSIgYWNjZXNzIHBlcm1pc3Npb25zIG1vZGVsLgogICAg ICogUFRFLWJhc2VkLCBwYWdlLXJlZmVyZW5jZWQvbW9kaWZpZWQgZW11bGF0aW9uLgogICAgICog Rml4ZXMgcmVnYXJkaW5nIHBhZ2UgcmVwbGFjZW1lbnQgc3RyYXRlZ3kuCiAgICAgKiBDb2RlIG9w dGltaXphdGlvbnMgYW5kIGJ1ZyBmaXhlcy4KCiAgIE5leHQgc3RlcHM6CiAgICAgKiBEaXJ0eSBw YWdlcyBtYW5hZ2VtZW50LgogICAgICogR3JhZHVhbCBpbnRlZ3JhdGlvbiB0byBGcmVlQlNEIC1D VVJSRU5ULgogICAgICogRnVydGhlciBwbWFwIG9wdGltaXphdGlvbnMuCiAgICAgKiBGcmFnbWVu dGF0aW9uIGNvbnRyb2wgbWFuYWdlbWVudC4KICAgICAqIFRlc3RpbmcgYW5kIGJlbmNobWFya2lu Zy4KCk9wZW4gdGFza3M6CgogICAgMS4gU3VwcG9ydCBmb3IgbXVsdGlwbGUgcGFnZSBzaXplcy4K ICAgIDIuIEltcGxlbWVudGF0aW9uIG9mIHBhZ2UgcHJvbW90aW9uLCBkZW1vdGlvbiBhbmQgZXZp Y3Rpb24KICAgIG1lY2hhbmlzbXMuCiAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCkZyZWVCU0QvQVJNIFRvb2xjaGFp biBJbXByb3ZlbWVudHMKCiAgIENvbnRhY3Q6IEFuZHJldyBUdXJuZXIgPGFuZHJld0BGcmVlQlNE Lm9yZz4KCiAgIENsYW5nIGhhcyBiZWVuIG1hZGUgdGhlIGRlZmF1bHQgY29tcGlsZXIgb24gQVJN LiBBIG51bWJlciBvZiBpc3N1ZXMKICAgd2l0aCBMTFZNIGFuZCBjbGFuZyBoYXZlIGJlZW4gZm91 bmQsIHJlcG9ydGVkLCBhbmQgZml4ZWQgdXBzdHJlYW0uCgogICBBbiBpc3N1ZSB3aGVyZSBzb21l IEFSTSBFQUJJIGFwcGxpY2F0aW9ucyBjb21waWxlZCB3aXRoIGNsYW5nIGNyYXNoCiAgIGhhcyBi ZWVuIHJlcG9ydGVkIHVwc3RyZWFtIHdpdGggYSBwYXRjaCBhbmQgd2lsbCBiZSBicm91Z2h0IGlu dG8gdGhlCiAgIEZyZWVCU0QgdHJlZSB3aGVuIGl0IGlzIGFjY2VwdGVkLiBUaGUgb25seSBvdGhl ciBpc3N1ZSBibG9ja2luZwogICBtb3ZpbmcgdG8gdGhlIEFSTSBFQUJJIGlzIEMrKyBleGNlcHRp b25zIGZhaWwgdG8gd29yayBjb3JyZWN0bHkgd2l0aAogICBzaGFyZWQgb2JqZWN0cy4gVGhpcyB3 aWxsIG5lZWQgdXMgdG8gZWl0aGVyIGltcG9ydCBsaWJ1bndpbmQgb3IKICAgaW1wbGVtZW50IHRo ZSBmdW5jdGlvbnMgbGliZ2NjX3MgcmVxdWlyZXMgdG8gZmluZCB0aGUgY29ycmVjdCB1bndpbmQK ICAgdGFibGUuCgpPcGVuIHRhc2tzOgoKICAgIDEuIEZpeCBleGNlcHRpb24gaGFuZGxpbmcgZm9y IEVBQkkuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCgpGcmVlTkFTCgogICBVUkw6IGh0dHA6Ly93d3cuRnJlZU5B Uy5vcmcvCgogICBDb250YWN0OiBBbGZyZWQgUGVybHN0ZWluIDxhbGZyZWRARnJlZUJTRC5vcmc+ CiAgIENvbnRhY3Q6IEpvc2ggUGFldHplbCA8anBhZXR6ZWxARnJlZUJTRC5vcmc+CgogICBGcmVl TkFTIDguMy4xLVJFTEVBU0UtcDIgd2lsbCBoaXQgU291cmNlZm9yZ2UgdGhlIHNlY29uZCB3ZWVr IG9mCiAgIEFwcmlsLCBhbmQgc2hvdWxkIGVuZCB1cCBhcyB0aGUgbGFzdCBGcmVlTkFTIHJlbGVh c2UgYmFzZWQgb24KICAgRnJlZUJTRCA4LlggSXQncyBjdXJyZW50bHkgdGhlIG9ubHkgRnJlZSBP cGVuIFNvdXJjZSBOQVMgcHJvZHVjdAogICBhdmFpbGFibGUgd2l0aCBhbnkgZm9ybSBvZiBaRlMg ZW5jcnlwdGlvbiAocHJvdmlkZWQgYnkgR0VMSSkuCgpPcGVuIHRhc2tzOgoKICAgIDEuIFRoZSB0 ZWFtIGlzIGhhcmQgYXQgd29yayBvbiBnZXR0aW5nIGEgRnJlZUJTRCA5LlgtYmFzZWQgcmVsZWFz ZQogICAgb2YgRnJlZU5BUyByZWFkeS4gQ3VycmVudGx5IHRoZXJlIGFyZSBzZXZlcmFsIG5pZ2h0 bHkgc25hcHNob3RzCiAgICAgICBhdmFpbGFibGUuCiAgICAyLiBBZGQgSEFTVCB0byB0aGUgd2Vi aW50ZXJmYWNlLgogICAgMy4gTWlncmF0ZSB0byBORlN2NC4KICAgIDQuIEludGVncmF0ZSBmb3Vu ZGF0aW9uIHNwb25zb3JlZCBrZXJuZWwgaVNDU0kgdGFyZ2V0LgogICAgIF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKR05P TUUvRnJlZUJTRAoKICAgVVJMOiBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2dub21lCiAgIFVSTDog aHR0cDovL3d3dy5mcmVlYnNkLm9yZy9nbm9tZS9kb2NzL2RldmVsZmFxLmh0bWwKICAgVVJMOiBo dHRwOi8vd3d3Lm1hcmN1c2NvbS5jb206ODA4MC92aWV3dmMvdmlld3ZjLmNnaS9tYXJjdXNjb20K ICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vamxtZXNzNzcvbWF0ZS1wb3J0cwoKICAgQ29udGFj dDogRnJlZUJTRCBHTk9NRSB0ZWFtIDxnbm9tZUBGcmVlQlNELm9yZz4KCiAgIFRoZSBHTk9NRS9G cmVlQlNEIFRlYW0gaGFzIHJlY2VudGx5IG1lcmdlZCBHbGliIDIuMzQsIEd0aysgMi4yNC4xNwog ICBhbmQgR3RrKyAzLjYuNCBpbnRvIHBvcnRzLCB0aGUgQysrIGJpbmRpbmdzIGFsc28gaGF2ZSBn b3QgdXBkYXRlcy4gSW4KICAgYWRkaXRpb25hbCAibG93LWxldmVsIiBHTk9NRSBwb3J0cyByZWNl aXZlZCB1cGRhdGVzLCBsaWtlIGxpYnNvdXAsCiAgIGdvYmplY3QtaW50cm9zcGVjdGlvbiwgYXRr IGFuZCB2YWxhIGZvciBleGFtcGxlLiBUaGUgdGVsZXBhdGh5IHN0YWNrCiAgIGFuZCBlbXBhdGh5 IHdoZXJlIGFsc28gdXBkYXRlZC4KCiAgIFRoZSBVU0VfR05PTUUgbWFjcm8gaGFzIHJlY2VpdmVk IHN1cHBvcnQgZm9yIDpydW4gYW5kIDpidWlsZCB0YXJnZXRzCiAgIHRoYW5rcyB0byBKZXJlbXkg TWVzc2VuZ2VyIChtZXp6KS4gQ3VycmVudGx5IG9ubHkgbGlieG1sMiBhbmQgbGlieHNsdAogICBz dXBwb3J0IHRoZXNlIHRhcmdldHMuCgogICBVU0VfR05PTUU9cGtnY29uZmlnIGlzIGJlaW5nIGRl cHJlY2F0ZWQgaW4gZmF2b3Igb2YKICAgVVNFX1BLR0NPTkZJRz1idWlsZC4gVGhlIGZvcm1lciBh bHNvIGFkZHMgYSBydW4gZGVwZW5kZW5jeSBvbgogICBwa2ctY29uZmlnLCB3aGljaCBpcyBub3Qg cmVxdWlyZWQuIEEgZmlyc3QgcGFzcyB3YXMgZG9uZSB0byBnZXQgcmlkCiAgIG9mIHRoaXMgaW4g dGhlIEdsaWIgdXBkYXRlIHRvIDIuMzQuIEluIGNvb3BlcmF0aW9uIHdpdGggdGhlIFgxMQogICBU ZWFtLCB0aGUgdXNhZ2Ugb2YgVVNFX0dOT01FPXBrZ2NvbmZpZyBpbiBYIGNvbXBvbmVudHMgd2ls bCBiZQogICByZW1vdmVkLiBBZnRlciB0aGUgZmFsbG91dCBmcm9tIHRoaXMgaXMgaGFuZGxlZCBh bmQgc3RyYW5nbGVycyBhcmUKICAgY29udmVydGVkLCB0aGUgVVNFX0dOT01FIG9wdGlvbiB3aWxs IGJlIHJlbW92ZWQuCgogICBJbiBhZGRpdGlvbiBVU0VfR05PTUU9Z25vbWVoYWNrIGlzIGRlcHJl Y2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KICAgUGxlYXNlIHJlcGxhY2UgaXQgd2l0aCBV U0VTPXBhdGhmaXguCgogICBUaGUgR05PTUUgZGV2ZWxvcG1lbnQgcmVwb3NpdG9yeSBoYXMgc3dp dGNoZWQgZnJvbSBDVlMgdG8gU1ZOLiBDVlMKICAgd2lsbCBub3QgZ2V0IGFueSBtb3JlIHVwZGF0 ZXMuIFVzZXMgY2FuIGdldCBhIG5ldyB2ZXJzaW9uIG9mIHRoZQogICBtYXJjdXNtZXJnZSBzY3Jp cHQgdGhhdCBzdXBwb3J0cyBTVk4gZnJvbSBpdHMgaG9tZSBwYWdlLCBhbmQgc2hvdWxkCiAgIHJl bW92ZSB0aGUgb2xkIENWUyBjaGVja291dCAicG9ydHMiIGRpci4KCiAgICAgKiBTVk4gYW5vbnlt b3VzIHJvb3Q6IHN2bjovL2NyZW1lLWJydWxlZS5tYXJjdXNjb20uY29tLyBvcgogICAgICAgc3Zu Oi8vc3VzaGkubWFyY3VzY29tLmNvbS8gKElQdjYpCiAgICAgKiBWaWV3VkM6IGh0dHA6Ly93d3cu bWFyY3VzY29tLmNvbTo4MDgwL3ZpZXd2Yy92aWV3dmMuY2dpL21hcmN1c2NvbQoKICAgT24tZ29p bmcgZWZmb3J0czoKCiAgICAgKiBnbGliIDIuMzYsIHBhbmdvIDEuMzQuMCwgZ3RrIDMuOC4wIGFu ZCBnb2JqZWN0LWludHJvc3BlY3Rpb24KICAgICAgIDEuMzYuMCB3aGVyZSB1cGRhdGVkIGluIHRo ZSBHTk9NRSBkZXZlbG9wbWVudCByZXBvc2l0b3J5LgogICAgICogR3VzdGF1IFBlcmV6IGkgUXVl cm9sIHN0ZXBwZWQgdXAgYW5kIHN0YXJ0ZWQgd29yayBvbiB1cGRhdGluZyB0aGUKICAgICAgIG9s ZCBHTk9NRSAzLjQgcG9ydHMgdG8gMy42LiBBdCB0aGUgbW9tZW50IG9mIHdyaXRpbmcgdGhlc2Ug YXJlCiAgICAgICBub3QgYXZhaWxhYmxlIGluIHRoZSBHTk9NRSBkZXZlbG9wbWVudCByZXBvc2l0 b3J5IGp1c3QgeWV0LiBGb3IKICAgICAgIGhpcyBlZmZvcnRzLCBoZSB3YXMgYXdhcmRlZCBhIEZy ZWVCU0QgR05PTUUgdGVhbSBtZW1iZXJzaGlwLgogICAgICogSmVyZW15IE1lc3NlbmdlciAobWV6 eikgaGFzIGNvbXBsZXRlZCBNYXRlIDEuNiB3aGljaCB3aWxsIGJlCiAgICAgICBhcnJpdmluZyBp biBwb3J0cyBuZWFyIHlvdSB3aGVuIGRlZW1lZCBzdGFibGUgZW5vdWdoLgoKICAgSWYgeW91IHdh bnQgdG8gaGVscCB3aXRoIGtlZXBpbmcgdGhlIGRvY3VtZW50YXRpb24gdXBkYXRlZCBvciBoZWxw aW5nCiAgIG91dCBpbiBvdGhlciB3YXlzLCBldmVuIGlmIGl0IG9ubHkgcGFydHMgZm9yIHRoZSBH bGliL0d0ay9HTk9NRSBzdGFjawogICB5b3UgYXJlIGludGVyZXN0ZWQgaW4sIHBsZWFzZSBjb250 YWN0IHVzIQoKT3BlbiB0YXNrczoKCiAgICAxLiBVcGRhdGUgdGhlIEZyZWVCU0Qub3JnL2dub21l IHdlYnNpdGUsIGluIHBhcnRpY3VsYXIgdGhlIGRldmVsb3BlcgogICAgICAgaW5mb3JtYXRpb24g YWJvdXQgVVNFX0dOT01FLCBtYXliZSBwdXQgdGhhdCBzZWN0aW9uIGluIHRoZQogICAgUG9ydGVy J3MgSGFuZGJvb2sgaW5zdGVhZC4KICAgIDIuIE1lcmdlIG1vcmUgdXBkYXRlZCBwb3J0cyBmcm9t IE1DIHRvIHBvcnRzLgogICAgMy4gVGVzdGluZyBsYXRlc3QgR2xpYi9HdGsgcmVsZWFzZXMgd2l0 aCBleGlzdGluZyBwb3J0cywgYW5kIGltcG9ydAogICAgaXQgaW50byBwb3J0cyB3aGVuIGl0IGlz IHJlYWR5LgogICAgNC4gQWZ0ZXIgcG9ydGluZyBHTk9NRSAzLjYgcnVuIHRlc3RzIGFuZCBmaXgg YnVncy4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KCkltcHJvdmluZyB0aGUgRG9jdW1lbnRhdGlvbiBQcm9qZWN0 IEluZnJhc3RydWN0cmUKCiAgIFVSTDogaHR0cDovL3N2bndlYi5mcmVlYnNkLm9yZy9kb2MvcHJv amVjdHMveG1sLXRvb2xzLwoKICAgQ29udGFjdDogR8OhYm9yIEvDtnZlc2TDoW4gPGdhYm9yQEZy ZWVCU0Qub3JnPgoKICAgVGhlcmUgaXMgYW4gb24tZ29pbmcgd29yayB0byBpbXByb3ZlIHRoZSBk b2N1bWVudGF0aW9uIGluZnJhc3RydWN0dXJlCiAgIGFuZCBtb2Rlcm5pemUgb3VyIGRvY3VtZW50 YXRpb24gdG9vbGNoYWluLiBUaGUgd29yayBjYW4gYmUgZm91bmQgaW4KICAgdGhlIHhtbC10b29s cyBicmFuY2ggYW5kIGlzIHZlcnkgbmVhciB0byBjb21wbGV0aW9uLiBUaGUgaW1wcm92ZW1lbnRz CiAgIGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKCiAgICAgKiBVcGdyYWRlIHRvIERvY0Jvb2sgNC41 LgogICAgICogVXNlIFhTTFQgaW5zdGVhZCBvZiBEU1NTTCB0byByZW5kZXIgWEhUTUwtYmFzZWQg b3V0cHV0LgogICAgICogR2VuZXJhdGUgUERGIGZyb20gUFMgYW5kIHNpbXBsaWZ5IGltYWdlIHBy b2Nlc3NpbmcuCiAgICAgKiBGaXggbWFrZSBsaW50IGFuZCB2YWxpZGF0ZSB0aGUgd2hvbGUgZG9j dW1lbnRhdGlvbiBzZXQuCiAgICAgKiBGaXggcmVuZGVyaW5nIG9mIFRPQyBlbGVtZW50cy4KICAg ICAqIEZpeCBtaXN1c2VkIGxpbmsgZWxlbWVudHMgdGhhdCByZXN1bHRlZCBpbiBhIGNvcnJ1cHQg cmVuZGVyaW5nLgogICAgICogVXNlIG1vcmUgaHVtYW4tZnJpZW5kbHkgcHVibGljYXRpb24gZGF0 YSBhbmQgcmVsZWFzZSBpbmZvCiAgICAgICByZW5kZXJpbmcuCiAgICAgKiBBZGQgc3VwcG9ydCBm b3IgWEluY2x1ZGUgaW4gRG9jQm9vayBkb2N1bWVudHMuCiAgICAgKiBBZGQgc3VwcG9ydCBmb3Ig cHJvZmlsaW5nIHdpdGggYXR0cmlidXRlcy4KICAgICAqIEFkZCBzdXBwb3J0IGZvciBTY2hlbWF0 cm9uIGNvbnN0cmFpbnRzLgogICAgICogQWRkIGV4cGVyaW1lbnRhbCBlcHViIHN1cHBvcnQuCiAg ICAgKiBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIFhTTC1GTy1iYXNlZCBwcmludGVkIG91 dHB1dC4KICAgICAqIENsZWFuIHVwIG9ic29sZXRlIFNHTUwgY29uc3RydWN0cy4KICAgICAqIENs ZWFuIHVwIGNhdGFsb2dzLgogICAgICogRHJvcCBIVE1MIFRpZHkgc2luY2UgaXQgaXMgbm90IG5l ZWRlZCBhbnkgbW9yZS4KCiAgIFRoZSBjaGFuZ2VzIGVsaW1pbmF0ZSBzb21lIGRlcGVuZGVuY2ll cyBhbmQgc3dpdGNoIHRoZSBkb2MgcmVwb3NpdG9yeQogICB0byBhIHJlYWwgWE1MIHRvb2xjaGFp biB3aXRoIHByb3BlciB2YWxpZGF0aW9uIGFuZCBtb3JlIGFkdmFuY2VkCiAgIHJlbmRlcmluZyB0 b29scy4gVGhlIG9ubHkgZXhjZXB0aW9ucyBhcmUgSmFkZSBhbmQgdGhlIERTU1NMCiAgIHN0eWxl c2hlZXRzLCB3aGljaCBhcmUgc3RpbGwgbmVlZGVkIGZvciBwcmludGVkIG91dHB1dC4KCk9wZW4g dGFza3M6CgogICAgMS4gRml4IHJlbmRlcmluZyBwcm9ibGVtcyB3aXRoIGltYWdlcyBpbiBwcmlu dGVkIGZvcm1hdHMuCiAgICAyLiBVcGRhdGUgdGhlIERvY3VtZW50YXRpb24gUHJpbWVyIHRvIHJl ZmxlY3QgY2hhbmdlcy4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCktERS9GcmVlQlNECgogICBVUkw6IGh0dHA6 Ly9GcmVlQlNELmtkZS5vcmcKICAgVVJMOiBodHRwOi8vRnJlZUJTRC5rZGUub3JnL2FyZWE1MS5w aHAKCiAgIENvbnRhY3Q6IEtERSBGcmVlQlNEIDxrZGVARnJlZUJTRC5vcmc+CgogICBUaGUgS0RF L0ZyZWVCU0QgVGVhbSBpcyB2ZXJ5IHByb3VkIHRvIGhhdmUgU2NoYWljaCBBbG9uc28gKGFzY2hh aSkKICAgam9pbmluZyB0aGUgdGVhbS4gV2VsY29tZSEKCiAgIFRoZSBLREUvRnJlZUJTRCBUZWFt IGhhdmUgY29udGludWVkIHRvIGltcHJvdmUgdGhlIGV4cGVyaWVuY2Ugb2YgS0RFCiAgIHNvZnR3 YXJlIGFuZCBRdCB1bmRlciBGcmVlQlNELiBUaGUgbGF0ZXN0IHJvdW5kIG9mIGltcHJvdmVtZW50 cwogICBpbmNsdWRlOgoKICAgICAqIEZpeCBwcm9ibGVtcyBlc3RhYmxpc2hpbmcgVURQIGNvbm5l Y3Rpb25zLgoKICAgVGhlIFRlYW0gaGF2ZSBhbHNvIG1hZGUgbWFueSByZWxlYXNlcyBhbmQgdXBz dHJlYW1lZCBtYW55IGZpeGVzIGFuZAogICBwYXRjaGVzLiBUaGUgbGF0ZXN0IHJvdW5kIG9mIHJl bGVhc2VzIGluY2x1ZGU6CgogICAgICogS0RFIFNDOiA0LjkuNSwgNC4xMC4xIChwb3J0cykKICAg ICAqIFF0OiA1LjAuMCAoYXJlYTUxKSBhbmQgNC44LjQgKHBvcnRzKQogICAgICogUHlRdDogNC45 LjYgKHBvcnRzKTsgUVNjaW50aWxsYSAyLjcgKHBvcnRzKTsgU0lQOiA0LjE0LjIgKGFyZWE1MSkK ICAgICAgIGFuZCA0LjE0LjMgKHBvcnRzKQogICAgICogS0RldmVsb3A6IDQuNC4xIChwb3J0cyk7 IEtEZXZQbGF0Zm9ybTogMS40LjEgKHBvcnRzKQogICAgICogQ2FsbGlncmE6IDIuNS41LCAyLjYu MiAocG9ydHMpCiAgICAgKiBBbWFyb2s6IDIuNy4wCiAgICAgKiBDTWFrZTogMi44LjEwLjIKICAg ICAqIERpZ2lrYW0gKGFuZCBLSVBJLXBsdWdpbnMpOiAzLjEuMCAoYXJlYTUxKQogICAgICogUXRD cmVhdG9yOiA0LjYuMSAocG9ydHMpCiAgICAgKiBLREUgVGVsZXBhdGh5IDAuNi4wIChhcmVhNTEp CiAgICAgKiBtYW55IHNtYWxsZXIgcG9ydHMKCiAgIEFzIGEgcmVzdWx0IC0tIGFjY29yZGluZyB0 byBQb3J0U2NvdXQgLS0gd2UgaGF2ZSA0MzEgcG9ydHMsIG9mIHdoaWNoCiAgIDkzLjUlIChmcm9t IDkxJSkgYXJlIHVwLXRvLWRhdGUuCgogICBUaGUgVGVhbSBhcmUgYWx3YXlzIGxvb2tpbmcgZm9y IG1vcmUgdGVzdGVycyBhbmQgcG9ydGVycyBzbyBwbGVhc2UKICAgY29udGFjdCB1cyBhbmQgdmlz aXQgb3VyIGhvbWUgcGFnZS4KCk9wZW4gdGFza3M6CgogICAgMS4gVXBkYXRpbmcgb3V0LW9mLWRh dGUgcG9ydHMsIHNlZSBQb3J0U2NvdXQgZm9yIGEgbGlzdC4KICAgICBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCktlcm5l bCBJbmZvcm1hdGlvbiBpbiBQcm9jZXNzIENvcmUgRHVtcHMKCiAgIENvbnRhY3Q6IE1pa29sYWog R29sdWIgPHRyb2NpbnlAZnJlZWJzZC5vcmc+CgogICBXaGVuIGRvaW5nIHBvc3Rtb3J0ZW0gYW5h bHlzaXMgb2YgYSBjcmFzaGVkIHByb2Nlc3MgaXQgaXMgc29tZXRpbWVzCiAgIHZlcnkgdXNlZnVs IHRvIGhhdmUga2VybmVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9jZXNzIGF0IHRoZQogICBt b21lbnQgb2YgdGhlIGNyYXNoLCBsaWtlIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBvciByZXNvdXJj ZSBsaW1pdHMuCiAgIEZvciBhIGxpdmUgcHJvY2VzcyB0aGlzIGluZm9ybWF0aW9uIGNhbiBiZSBv YnRhaW5lZCB2aWEgc3lzY3RsKDMpCiAgIGludGVyZmFjZSBlLmcuIHVzaW5nIHByb2NzdGF0KDEp LgoKICAgVGhlIGFpbSBvZiB0aGUgcHJvamVjdCBpcyB0byBhZGQgYWRkaXRpb25hbCBub3RlcyB0 byBhIHByb2Nlc3MgY29yZQogICBkdW1wLCB3aGljaCBpbmNsdWRlIHByb2Nlc3MgaW5mb3JtYXRp b24gZnJvbSB0aGUga2VybmVsIGF0IHRoZSBtb21lbnQKICAgb2YgdGhlIHByb2Nlc3MgY3Jhc2gs IHRlYWNoIGxpYnByb2NzdGF0KDMpIHRvIGV4dHJhY3QgdGhpcwogICBpbmZvcm1hdGlvbiBhbmQg bWFrZSBwcm9jc3RhdCgxKSB1c2UgdGhpcyBmdW5jdGlvbmFsaXR5LgoKICAgQXQgdGhlIG1vbWVu dCBhbGwgbmVjZXNzYXJ5IGNvZGUgY2hhbmdlcyBhcmUgY29tbWl0dGVkIHRvIEhFQUQgYW5kCiAg IGFyZSBnb2luZyB0byBiZSBtZXJnZSB0byBzdGFibGUvOSBpbiAxIG1vbnRoLgogICAgIF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwoKbWRvYy5zdSAtLSBTaG9ydCBNYW51YWwgUGFnZSBVUkxzCgogICBVUkw6IGh0dHA6Ly9t ZG9jLnN1LwogICBVUkw6IGh0dHA6Ly9uZ2lueC5jb25mLm1kb2Muc3UvbWRvYy5zdS5uZ2lueC5j b25mCiAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL2Nuc3QvbWRvYy5zdQogICBVUkw6CiAgIGh0 dHA6Ly9saXN0cy5mcmVlYnNkLm9yZy9waXBlcm1haWwvZnJlZWJzZC1kb2MvMjAxMy1GZWJydWFy eS8wMjE0NjUuaHRtbAoKICAgQ29udGFjdDogQ29uc3RhbnRpbmUgQS4gTXVyZW5pbiA8Y25zdCsr QEZyZWVCU0Qub3JnPgoKICAgbWRvYy5zdSBpcyBhIGRldGVybWluaXN0aWMgVVJMIHNob3J0ZW5l ciBmb3IgQlNEIG1hbnVhbCBwYWdlcywKICAgd3JpdHRlbiBlbnRpcmVseSBpbiBuZ2lueC5jb25m LgoKICAgU2luY2UgdGhlIG9yaWdpbmFsIGFubm91bmNlbWVudCwgT1MgdmVyc2lvbiBzdXBwb3J0 IGhhcyBiZWVuIGFkZGVkCiAgIChlLmcuIC9mOTEvIGFuZCAvRnJlZUJTRC05LjEvIGV0Yy4pLCBh cyB3ZWxsIGFzIGR5bmFtaWMgbXVsdGktZmxhdm91cgogICB3ZWItcGFnZXMgd2l0aCBtdWx0aXBs ZSBsaW5rcyAoZS5nLiBodHRwOi8vbWRvYy5zdS9mLGQvaWZuZXQuOSBhbmQKICAgaHR0cDovL21k b2Muc3UvLS9tZG9jKSwgd2hpY2ggZXZlbiBsZXQgeW91IHNwZWNpZnkgdGhlIHZlcnNpb25zIHRv bwogICAoZS5nLiBodHRwOi8vbWRvYy5zdS9mOTEsbjYwLG81MixkL21kb2MpLgoKICAgVGhlIHNv dXJjZSBjb2RlIGZvciB0aGUgd2hvbGUgc2l0ZSBpcyBhdmFpbGFibGUgdW5kZXIgYSBCU0QgbGlj ZW5jZS4KCk9wZW4gdGFza3M6CgogICAgMS4gRm9yayBpdCBvbiBHaXRIdWIgKHNlZSBsaW5rcykh CiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCgpNdWx0aXBhdGggVENQIChNUFRDUCkgZm9yIEZyZWVCU0QKCiAgIFVS TDogaHR0cDovL2NhaWEuc3dpbi5lZHUuYXUvdXJwL25ld3RjcC9tcHRjcC90b29scy5odG1sCiAg IFVSTDogaHR0cDovL2NhaWEuc3dpbi5lZHUuYXUvbmV3dGNwL21wdGNwLwogICBVUkw6IGh0dHA6 Ly9jYWlhLnN3aW4uZWR1LmF1L3JlcG9ydHMvMTMwNDI0QS9DQUlBLVRSLTEzMDQyNEEucGRmCiAg IFVSTDogaHR0cHM6Ly9wdWIuYWxsYnNkLm9yZy9GcmVlQlNELXNuYXBzaG90cy8KCiAgIENvbnRh Y3Q6IE5pZ2VsIFdpbGxpYW1zIDxuandpbGxpYW1zQHN3aW4uZWR1LmF1PgogICBDb250YWN0OiBM YXdyZW5jZSBTdGV3YXJ0IDxsYXN0ZXdhcnRAc3dpbi5lZHUuYXU+CiAgIENvbnRhY3Q6IEdyZW52 aWxsZSBBcm1pdGFnZSA8Z2FybWl0YWdlQHN3aW4uZWR1LmF1PgoKICAgV2UgaGF2ZSBiZWVuIHdv cmtpbmcgdG8gY3JlYXRlIGEgQlNELWxpY2Vuc2VkIGltcGxlbWVudGF0aW9uIG9mCiAgIE11bHRp cGF0aCBUQ1AgLS0gYSBzZXQgb2YgVENQIGV4dGVuc2lvbnMgdGhhdCBhbGxvdyBmb3IgdHJhbnNw YXJlbnQKICAgbXVsdGlwYXRoIG9wZXJhdGlvbiB3aXRoIG11bHRpcGxlIElQIGFkZHJlc3NlcyBh cyBzcGVjaWZpZWQgaW4KICAgZXhwZXJpbWVudGFsIFJGQzY4MjQuCgogICBXZSBtYWRlIG91ciBm aXJzdCB2MC4xIHB1YmxpYyByZWxlYXNlIG9uIDIwMTMtMDMtMTEgYW5kIHJlY2VudGx5CiAgIHJl bGVhc2VkIHYwLjMgb24gMjAxMy0wNC0xNi4gVGhlIGNvZGUgaXMgY3VycmVudGx5IGNvbnNpZGVy ZWQgdG8gYmUKICAgb2YgYWxwaGEgcXVhbGl0eS4gV2UgYXJlIHdvcmtpbmcgdG93YXJkcyBwdXNo aW5nIHRoZSBjb2RlIGludG8gYQogICBGcmVlQlNEIFN1YnZlcnNpb24gcmVwb3NpdG9yeSBwcm9q ZWN0IGJyYW5jaCB0byBjb250aW51ZSB0aGUgb24tZ29pbmcKICAgZGV2ZWxvcG1lbnQgZWZmb3J0 IGluIGEgbW9yZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGxvY2F0aW9uLiBBcyBwYXJ0IG9mCiAgIHRo aXMgbW92ZSwgd2UgaG9wZSB0byBiZWdpbiByZWxlYXNpbmcgcmVndWxhciBzbmFwc2hvdCBpbnN0 YWxsZXIgSVNPcwogICBvZiB0aGUgTVBUQ1AgcHJvamVjdCBicmFuY2ggY291cnRlc3kgb2YgSGly b2tpIFNhdG8gYW5kIHRoZQogICBhbGxic2Qub3JnIGRhaWx5IHNuYXBzaG90IGluZnJhc3RydWN0 dXJlLgoKICAgV2UgYXJlIGFib3V0IHRvIHJlbGVhc2UgYSBDQUlBIHRlY2huaWNhbCByZXBvcnQg MTMwNDI0QSBlbnRpdGxlZAogICAiRGVzaWduIE92ZXJ2aWV3IG9mIE11bHRpcGF0aCBUQ1AgdmVy c2lvbiAwLjMgZm9yIEZyZWVCU0QgMTAiIG9uCiAgIDIwMTMtMDQtMjQgd2hpY2ggcHJvdmlkZXMg YSBoaWdoLWxldmVsIGRlc2lnbiBhbmQgYXJjaGl0ZWN0dXJlCiAgIG92ZXJ2aWV3IG9mIHRoZSB2 MC4zIGNvZGUgcmVsZWFzZS4KCiAgIEdvaW5nIGZvcndhcmQsIHdlIGV4cGVjdCB0byBjb250aW51 ZSBkZXZlbG9wbWVudCBhbmQgcmVsZWFzZQogICBhZGRpdGlvbmFsIHRlY2huaWNhbCByZXBvcnRz IGFuZCBhY2FkZW1pYyBwYXBlcnMgY292ZXJpbmcgdG9waWNzCiAgIHN1Y2ggYXMgcGVyZm9ybWFu Y2UgYW5hbHlzaXMgYW5kIG11bHRpcGF0aCBjb25nZXN0aW9uCiAgIGNvbnRyb2wvc2NoZWR1bGlu Zy4KCk9wZW4gdGFza3M6CgogICAgMS4gVGhlIGNvZGUgaXMgY3VycmVudGx5IG9mIGFscGhhIHF1 YWxpdHkgc28gd2Ugd2VsY29tZSBhbGwgdGVzdGluZwogICAgICAgZmVlZGJhY2ssIGJ1dCBwbGVh c2UgZmFtaWxpYXJpemUgeW91cnNlbGYgd2l0aCB0aGUgUkVBRE1FIGZpbGUKICAgIGFuZCAiS25v d24gTGltaXRhdGlvbnMiIHNlY3Rpb24gaW4gcGFydGljdWxhciBiZWZvcmUganVtcGluZyBpbi4K ICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KCk5hdGl2ZSBpU0NTSSBTdGFjawoKICAgVVJMOiBodHRwczovL3dpa2ku ZnJlZWJzZC5vcmcvTmF0aXZlJTIwaVNDU0klMjB0YXJnZXQKCiAgIENvbnRhY3Q6IEVkd2FyZCBU b21hc3ogTmFwaWVyYWwvYSA8dHJhc3pARnJlZUJTRC5vcmc+CgogICBGb2N1cyBvZiB0aGUgcHJv amVjdCB3YXMgZXh0ZW5kZWQgdG8gYWxzbyBpbmNsdWRlIGEgbmV3IGlTQ1NJCiAgIGluaXRpYXRv ci4gQ29tcGFyZWQgdG8gdGhlIG9sZCBvbmUsIGl0IGlzIG1vcmUgcmVsaWFibGUsIG11Y2ggbW9y ZQogICB1c2VyLWZyaWVuZGx5LCBhbmQgc29tZXdoYXQgZmFzdGVyLiBJdCB1c2VzIGV4YWN0bHkg dGhlIHNhbWUKICAgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdCBhcyB0aGUgb2xkIG9uZSB0byBt YWtlIG1pZ3JhdGlvbiBlYXNpZXIuCgogICBBcyBmb3IgdGhlIHRhcmdldCBzaWRlLCBpdCB3YXMg dmVyaWZpZWQgdG8gd29yayBwcm9wZXJseSBhZ2FpbnN0CiAgIG1ham9yIGluaXRpYXRvcnMgKEZy ZWVCU0QsIExpbnV4LCBTb2xhcmlzLCBXaW5kb3dzIGFuZCBWTVdhcmUgRVNYKS4KCiAgIFRoaXMg cHJvamVjdCBpcyBiZWluZyBzcG9uc29yZWQgYnkgRnJlZUJTRCBGb3VuZGF0aW9uLgoKT3BlbiB0 YXNrczoKCiAgICAxLiBSRE1BIHN1cHBvcnQsIGZvciBib3RoIHRoZSB0YXJnZXQgYW5kIHRoZSBp bml0aWF0b3IuCiAgICAyLiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCiAgICAgX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CgpQeVB5CgogICBVUkw6IGh0dHA6Ly93aWtpLkZyZWVCU0Qub3JnL1B5UHkKCiAgIENvbnRhY3Q6 IERhdmlkIE5heWxvciA8ZGJuQEZyZWVCU0Qub3JnPgoKICAgUHlQeSBoYXMgYmVlbiBzdWNjZXNz ZnVsbHkgdXBkYXRlZCB0byAyLjAtYmV0YTEgd2l0aCAyLjAtYmV0YTIKICAgZmluaXNoaW5nIHRy YW5zbGF0aW5nIGFuZCBvdGhlciB0ZXN0cy4gTWFueSBtYWpvciBjaGFuZ2VzIHdlcmUgbWFkZQog ICB0byB0aGUgUHlQeSBwb3J0IGZyIHRoZSAyLjAtYmV0YTEgcmVsZWFzZSwgdGhlc2UgaW5jbHVk ZToKCiAgICAgKiBSZXdvcmtpbmcgdGhlIGJ1aWxkIHNjcmlwdC4KICAgICAqIE9wdGlvbmFsbHkg dXNlIHB5cHkgKHdoZW4gYXZhaWxhYmxlKSBmb3Igc2VsZi10cmFuc2xhdGluZy4KICAgICAqIFJl ZmluZSBtZW1vcnkgY2hlY2tzLgogICAgICogRml4IHRoZSB0ZXN0IHRhcmdldC4KCiAgIEFsdGhv dWdoIHRoZSBwb3J0IGlzIGluIGEgaGVhbHRoeSBzdGF0ZTsgUHlQeSBvbiBGcmVlQlNEIGhhcyBz b21lCiAgIHJvdWdoIGVkZ2VzIChzZWUgbWFrZSB0ZXN0IGZvciBleGFtcGxlcyBvZiByb3VnaG5l c3MpLgoKT3BlbiB0YXNrczoKCiAgICAxLiBGaXggZmFpbGVkIHVuaXQgdGVzdHMuCiAgICAyLiBJ bnRlZ3JhdGUgUHlQeSBpbnRvIGJzZC5weXRob24ubWsuCiAgICAzLiBTZWUgdGhlIHByb2plY3Qg cGFnZSBmb3IgbW9yZSBpdGVtcy4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCnJhY2N0OiBCbG9jayBJTyBBY2Nv dW50aW5nCgogICBVUkw6IGh0dHBzOi8vd2lraS5mcmVlYnNkLm9yZy9SdWRvbGZUb21vcmkvSU9M aW1pdHMKCiAgIENvbnRhY3Q6IFJ1ZG9sZiBUb21vcmkgPHJ1ZG90QEZyZWVCU0Qub3JnPgoKICAg VGhpcyBwcm9qZWN0IGFkZHMgdGhlIGJsb2NrIElPIGFjY2VzcyBhY2NvdW50aW5nIHRvIHRoZSBy YWNjdC9yY3RsCiAgIHJlc291cmNlIGxpbWl0aW5nIGZyYW1ld29yaywgYSB3b3JraW5nIHByb3Rv dHlwZSBpbXBsZW1lbnRhdGlvbiBpcwogICBhdmFpbGFibGUuCiAgICAgX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpSZWFk LW9ubHkgUG9ydCBvZiBOZXRCU0QncyBVREYgRmlsZSBTeXN0ZW0KCiAgIFVSTDogaHR0cHM6Ly9n aXRodWIuY29tL3dpbGxpYW1kZXZyaWVzL1VERgoKICAgQ29udGFjdDogV2lsbCBEZVZyaWVzIDx3 aWxsaWFtLmRldnJpZXNAZ21haWwuY29tPgoKICAgQW4gaW5pdGlhbCByZWFkLW9ubHkgcG9ydCBv ZiBOZXRCU0QncyBVREYgZmlsZSBzeXN0ZW0gaGFzIGJlZW4KICAgbGFyZ2VseSBjb21wbGV0ZWQu IChUaGUgVURGIGZpbGUgc3lzdGVtIGlzIG9mdGVuIHVzZWQgb24gQ0QsIERWRCBhbmQKICAgQmx1 LVJheSBkaXNjcy4pIFRoaXMgcG9ydCBwcm92aWRlcyBhIG51bWJlciBvZiBhZHZhbnRhZ2VzIG92 ZXIKICAgRnJlZUJTRCdzIGN1cnJlbnQgVURGIGltcGxlbWVudGF0aW9uLCB3aGljaCBpbmNsdWRl OgoKICAgICAqIFN1cHBvcnQgZm9yIHZlcnNpb24gMi42MCBvZiB0aGUgVURGIGZpbGUgc3lzdGVt IHNwZWNpZmljYXRpb24uCiAgICAgICBGcmVlQlNEJ3MgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBv bmx5IHBhcnRpYWxseSBzdXBwb3J0cyB2ZXJzaW9uCiAgICAgICAxLjUgb2YgdGhlIHN0YW5kYXJk LCB3aGljaCB3YXMgcmVsZWFzZWQgaW4gMTk5Ny4gU2luY2UgV2luZG93cwogICAgICAgYW5kIG90 aGVyIHN5c3RlbXMgc3VwcG9ydCBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBzeXN0ZW0sIG91 cgogICAgICAgdXNlcnMgYXJlIGxlZnQgd2l0aG91dCB0aGUgYWJpbGl0eSB0byByZWFkIHNvbWUg bWVkaWEgd3JpdHRlbiBieQogICAgICAgdGhlc2Ugc3lzdGVtcy4gSW4gYWRkaXRpb24sIEJsdS1S YXkgZGlzY3MgYXJlIGNvbW1vbmx5IHdyaXR0ZW4KICAgICAgIHVzaW5nIHZlcnNpb24gMi41MCBv ciAyLjYwLgogICAgICogVGhlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgdGhlIG93bmVyIGFuZCBncm91 cCBmb3IgYWxsIHRoZSBmaWxlcyBhbmQKICAgICAgIGRpcmVjdG9yaWVzIG9uIGEgVURGIHZvbHVt ZSB1c2luZyBtb3VudCBvcHRpb25zLgogICAgICogVGhlIGFiaWxpdHkgdG8gc2V0IHRoZSBvd25l ciBhbmQgZ3JvdXAgZm9yIGZpbGVzIGFuZCBkaXJlY3RvcmllcwogICAgICAgdGhhdCBsYWNrIGRl ZmluZWQgb3duZXIgb3IgZ3JvdXAgaW5mb3JtYXRpb24gdXNpbmcgbW91bnQgb3B0aW9ucy4KICAg ICAgIChUaGUgVURGIHNwZWNpZmljYXRpb24gYWxsb3dzIGZvciBmaWxlcyBhbmQgZGlyZWN0b3Jp ZXMgd2l0aG91dAogICAgICAgb3duZXJzIG9yIGdyb3Vwcy4pCiAgICAgKiBUaGUgYWJpbGl0eSB0 byBvdmVycmlkZSB0aGUgbW9kZSBmb3IgYWxsIGRpcmVjdG9yaWVzIGFuZCBmaWxlcwogICAgICAg b24gYSB2b2x1bWUgdXNpbmcgbW91bnQgb3B0aW9ucy4KICAgICAqIFN1cHBvcnQgZm9yIG1vdW50 aW5nIHByZXZpb3VzIHZlcnNpb25zIG9mIGluY3JlbWVudGFsbHkgcmVjb3JkZWQKICAgICAgIG1l ZGlhLCBsaWtlIENELVJzLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKVENQLUFPIEF1dGhlbnRpY2F0aW9uIE9w dGlvbgoKICAgVVJMOiBodHRwOi8vc3Zud2ViLmZyZWVic2Qub3JnL2Jhc2UvdXNlci9hbmRyZS90 Y3AtYW8vCgogICBDb250YWN0OiBBbmRyw6kgT3BwZXJtYW5uIDxhbmRyZUBGcmVlQlNELm9yZz4K CiAgIFdvcmsgaXMgdW5kZXIgd2F5IHRvIGltcGxlbWVudCBUQ1AtQU8gKFRDUCBBdXRoZW50aWNh dGlvbiBPcHRpb24pCiAgIGFjY29yZGluZyB0byBSRkM1OTI1IGFuZCBSRkM1OTI2LiBUQ1AtQU8g aXMgYW4gZXh0ZW5zaW9uIHRvIFRDUC1NRDUKICAgc2lnbmF0dXJlcyBjb21tb25seSB1c2VkIGlu IHJvdXRlcnMgdG8gc2VjdXJlIEJHUCByb3V0aW5nIHByb3RvY29sCiAgIHNlc3Npb25zIGFnYWlu c3Qgc3Bvb2ZpbmcgYXR0YWNrcy4gVGhlIHdvcmsgaXMgdW5kZXIgY29udHJhY3QgYW5kCiAgIHNw b25zb3JlZCBieSBKdW5pcGVyIE5ldHdvcmtzLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKVGhlIGVudGl0aWVz IERvY3VtZW50YXRpb24gQnJhbmNoCgogICBVUkw6IGh0dHA6Ly9zdm53ZWIuZnJlZWJzZC5vcmcv ZG9jL3Byb2plY3RzL2VudGl0aWVzLwoKICAgQ29udGFjdDogUmVuw6kgTGFkYW4gPHJlbmVARnJl ZUJTRC5vcmc+CgogICBUaGUgZW50aXRpZXMgYnJhbmNoIHdhcyBjcmVhdGVkIHRvIHJlZHVjZSBk dXBsaWNhdGlvbiBvZiBjb21taXR0ZXIKICAgZW50aXRpZXMuIEN1cnJlbnRseSB0aGVyZSBpcyBv bmUgaW4gYXV0aG9ycy5lbnQgKHdpdGggZW1haWwKICAgYWRkcmVzc2VzKSBhbmQgYW5vdGhlciBv bmUgaW4gZGV2ZWxvcGVycy5lbnQgKHdpdGhvdXQgZW1haWwKICAgYWRkcmVzc2VzKS4gVGhpcyBz ZWVtcyB0byBiZSBhIGxlZnRvdmVyIGZyb20gdGhlIGRvYy93d3cgc3BsaXQgaW4KICAgZWFybGll ciB0aW1lcy4gVG8gcmVtZWR5IHRoaXMsIGRldmVsb3BlcnMuZW50IGlzIG1lcmdlZCBpbnRvCiAg IGF1dGhvcnMuZW50IGFuZCBlbnRpdGllcyB3aXRoIGVtYWlsIGFkZHJlc3NlcyBhcmUgcG9zdGZp eGVkIGFzIHN1Y2guCiAgIEFwYXJ0IGZyb20gdGhlIGluc3RydWN0aW9ucyBmb3IgdGhlIGluaXRp YWwgY29tbWl0LCB0aGVyZSBzaG91bGQgYmUKICAgbGl0dGxlIHVzZXItdmlzaWJsZSBjaGFuZ2Vz LiBTb21lIHJlbGF0ZWQgY2xlYW51cHMsIGxpa2UgY2xlYW5pbmcgdXAKICAgdGVhbSBkZWZpbml0 aW9ucywgcmVwbGFjaW5nIGxpdGVyYWwgbmFtZXMgYnkgZW50aXRpZXMgZnJvbQogICBhdXRob3Jz LmVudCwgYW5kIGFkZGluZyBtaXNzaW5nIG5hbWVzIHRvIGF1dGhvcnMuZW50IGFyZSBhbHNvIG1h ZGUuCgpPcGVuIHRhc2tzOgoKICAgIDEuIEZpbmlzaCBwcm9jZXNzaW5nIG9mIHRoZSA8ZW1haWw+ IHRhZy4KICAgIDIuIFNlbmQgb3V0IGEgQ0ZULgogICAgMy4gTWVyZ2UgYmFjayBpbnRvIGhlYWQg YnJhbmNoLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwoKVGhlIEZyZWVCU0QgSmFwYW5lc2UgRG9jdW1lbnRhdGlv biBQcm9qZWN0CgogICBVUkw6IGh0dHA6Ly93d3cuRnJlZUJTRC5vcmcvamEvCiAgIFVSTDogaHR0 cDovL3d3dy5qcC5GcmVlQlNELm9yZy9kb2MtanAvCgogICBDb250YWN0OiBIaXJva2kgU2F0byA8 aHJzQEZyZWVCU0Qub3JnPgogICBDb250YWN0OiBSeXVzdWtlIFN1enVraSA8cnl1c3VrZUBGcmVl QlNELm9yZz4KCiAgIFdlYiBwYWdlIChodGRvY3MpOiBOZXdzZmxhc2ggYW5kIHNvbWUgb3RoZXIg dXBkYXRlcyBpbiB0aGUgRW5nbGlzaAogICB2ZXJzaW9uIGhhdmUgYmVlbiB0cmFuc2xhdGVkIHRv IGtlZXAgdGhlbSB1cC10by1kYXRlLiBTcGVjaWZpY2FsbHksCiAgIHRoZSByZWxlYXNlIHJlbGF0 ZWQgY29udGVudHMgd2VyZSB1cGRhdGVkIGluIHRoaXMgcGVyaW9kLgoKICAgQm9va3M6IEZyZWVC U0QgSGFuZGJvb2sgaGFzIGNvbnN0YW50bHkgYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBsYXN0CiAg IHJlcG9ydDsgcGFydGljdWxhcmx5LCAicG9ydHMiLCAiZGVza3RvcCIgc2VjdGlvbiB3ZXJlIGxh cmdlbHkKICAgdXBkYXRlZC4gU29tZSBwcm9ncmVzcyBoYXMgYmVlbiBtYWRlIGluIHRoZSAiYWR2 YW5jZWQtbmV0d29ya2luZyIKICAgc2VjdGlvbiwgY29udHJpYnV0ZWQgYnkgYSBuZXcgdHJhbnNs YXRvci4KCiAgICJXcml0aW5nIEZyZWVCU0QgUHJvYmxlbSBSZXBvcnRzIiBhcnRpY2xlIGlzIG5v dyBpbiBzeW5jIHdpdGggdGhlCiAgIEVuZ2xpc2ggdmVyc2lvbi4KCk9wZW4gdGFza3M6CgogICAg MS4gRnVydGhlciB0cmFuc2xhdGlvbiB3b3JrIG9mIG91dGRhdGVkIGRvY3VtZW50cyBpbiBqYV9K UC5ldWNKUAogICAgICAgc3VidHJlZS4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KClVGUy9GRlMgUGVyZm9ybWFu Y2UgV29yawoKICAgVVJMOiBodHRwOi8vd3d3Lm1ja3VzaWNrLmNvbS9wdWJsaWNhdGlvbnMvZmFz dGVyX2ZzY2sucGRmCgogICBDb250YWN0OiBLaXJrIE1jS3VzaWNrIDxtY2t1c2lja0BtY2t1c2lj ay5jb20+CgogICBTb21lIHdvcmsgb24gdGhlIHBlcmZvcm1hbmNlIG9mIFVGUy9GRlMgaGFzIGJl ZW4gcmVjZW50bHkgY29tbWl0dGVkCiAgIHRvIEhFQUQuIFRoZSBwdXJwb3NlIG9mIHRoZSBjb3Jy ZXNwb25kaW5nIGNoYW5nZSB0byB0aGUgRkZTIGxheW91dAogICBwb2xpY3kgaXMgdG8gcmVkdWNl IHRoZSBydW5uaW5nIHRpbWUgZm9yIGEgZnVsbCBmaWxlIHN5c3RlbSBjaGVjay4KICAgSXQgYWxz byByZWR1Y2VzIHRoZSByYW5kb20gYWNjZXNzIHRpbWUgZm9yIGxhcmdlIGZpbGVzIGFuZCBzcGVl ZHMgdXAKICAgdGhlIHRyYXZlcnNhbCB0aW1lIGZvciBkaXJlY3RvcnkgdHJlZSB3YWxrcy4KCiAg IFRoZSBrZXkgaWRlYSBpcyB0byByZXNlcnZlIGEgc21hbGwgYXJlYSBpbiBlYWNoIGN5bGluZGVy IGdyb3VwCiAgIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgaW5vZGUgYmxvY2tzIGZvciB0aGUg dXNlIG9mIG1ldGFkYXRhLAogICBzcGVjaWZpY2FsbHkgaW5kaXJlY3QgYmxvY2tzIGFuZCBkaXJl Y3RvcnkgY29udGVudHMuIFRoZSBuZXcgcG9saWN5CiAgIGlzIHRvIHByZWZlcmVudGlhbGx5IHBs YWNlIG1ldGFkYXRhIGluIHRoZSBtZXRhZGF0YSBhcmVhIGFuZAogICBldmVyeXRoaW5nIGVsc2Ug aW4gdGhlIGJsb2NrcyB0aGF0IGZvbGxvdyB0aGUgbWV0YWRhdGEgYXJlYS4KCiAgIFRoZSBzaXpl IG9mIHRoaXMgYXJlYSBjYW4gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBmaWxlc3lzdGVtIHVzaW5n CiAgIG5ld2ZzKDgpIG9yIGNoYW5nZWQgaW4gYW4gZXhpc3RpbmcgZmlsZXN5c3RlbSB1c2luZyB0 dW5lZnMoOCkuIEJvdGgKICAgdXRpbGl0aWVzIHVzZSB0aGUgLWsgaGVsZC1mb3ItbWV0YWRhdGEt YmxvY2tzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZQogICBhbW91bnQgb2Ygc3BhY2UgdG8gYmUgaGVs ZCBmb3IgbWV0YWRhdGEgYmxvY2tzIGluIGVhY2ggY3lsaW5kZXIKICAgZ3JvdXAuIEJ5IGRlZmF1 bHQsIG5ld2ZzKDgpIHNldHMgdGhpcyBhcmVhIHRvIGhhbGYgb2YgbWluZnJlZQogICAodHlwaWNh bGx5IDQlIG9mIHRoZSBkYXRhIGFyZWEpLgoKICAgQXMgd2l0aCBhbGwgbGF5b3V0IHBvbGljaWVz LCBpdCBvbmx5IGFmZmVjdCBsYXlvdXRzIG9mIHRoaW5ncwogICBhbGxvY2F0ZWQgYWZ0ZXIgaXQg aXMgcHV0IGluIHBsYWNlLiBTbyB0aGVzZSBjaGFuZ2VzIHdpbGwgcHJpbWFyaWx5CiAgIGJlIG5v dGljYWJsZSBvbiBuZXdseSBjcmVhdGVkIGZpbGUgc3lzdGVtcy4KCiAgIEZpbGUgc3lzdGVtIGNo ZWNrcyBoYXZlIGJlZW4gc3BlZCB1cCBieSBjYWNoaW5nIHRoZSBjeWxpbmRlciBncm91cAogICBt YXBzIGluIHBhc3MxIHNvIHRoYXQgdGhleSBkbyBub3QgbmVlZCB0byBiZSByZWFkIGFnYWluIGlu IHBhc3M1LiBBcwogICB0aGlzIG5lYXJseSBkb3VibGVzIHRoZSBtZW1vcnkgcmVxdWlyZW1lbnQg Zm9yIGZzY2soOCksIHRoZSBjYWNoZSBpcwogICB0aHJvd24gYXdheSBpZiBvdGhlciBtZW1vcnkg bmVlZHMgaW4gZnNjayg4KSB3b3VsZCBvdGhlcndpc2UgZmFpbC4KICAgVGh1cywgdGhlIG1lbW9y eSBmb290cHJpbnQgb2YgZnNjayg4KSByZW1haW5zIHVuY2hhbmdlZCBpbiBtZW1vcnkKICAgY29u c3RyYWluZWQgZW52aXJvbm1lbnRzLiBUaGlzIG9wdGltaXphdGlvbiB3aWxsIGJlIGV2aWRlbnQg b24gYWxsCiAgIFVGUy9GRlMgZmlsZXN5c3RlbXMuCgogICBUaGlzIHdvcmsgd2FzIGluc3BpcmVk IGJ5IGEgcGFwZXIgcHJlc2VudGVkIGF0IFVzZW5peCdzIEZBU1QgJzEzLgoKT3BlbiB0YXNrczoK CiAgICAxLiBNRkMgdG8gOS1TVEFCTEUgYW5kIHBvc3NpYmx5IDgtU1RBQkxFIHNob3VsZCBoYXBw ZW4gYnkgTWF5IHVubGVzcwogICAgICAgcHJvYmxlbXMgYXJpc2Ugd2l0aCB0aGVzZSBjaGFuZ2Vz IGluIEhFQUQuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCgpXaW5lMzIgb24gRnJlZUJTRC9hbWQ2NAoKICAgVVJM OiBodHRwOi8vd2lraS5mcmVlYnNkLm9yZy9pMzg2LVdpbmUKCiAgIENvbnRhY3Q6IERhdmlkIE5h eWxvciA8ZGJuQEZyZWVCU0Qub3JnPgoKICAgVGhlIGkzODYtd2luZSBwb3J0IChmb3JtYWxseSB3 aW5lLWZic2Q2NCkgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHBvcnRzCiAgIGNvbGxlY3Rpb24gKGFz IGVtdWxhdG9ycy9pMzg2LXdpbmUtZGV2ZWwpLiBBbHRob3VnaCB0aGUgcG9ydCBjYW4gb25seQog ICBiZSBjb21waWxlZCB1bmRlciBhIHg4NiAzMi1iaXQgc3lzdGVtIHRoZSByZXN1bHRpbmcgcGFj a2FnZSBjYW4gYmUKICAgaW5zdGFsbGVkIG9uIGEgeDg2IDY0LWJpdCBzeXN0ZW0gYW5kIGVuYWJs ZSBydW5uaW5nIG9mIDMyLWJpdAogICBNaWNyb3NvZnQgV2luZG93cyBwcm9ncmFtcy4KCiAgIFBh Y2thZ2VzIGZvciB0aGUgcG9ydCBhcmUgaW4gZGV2ZWxvcG1lbnQgYW5kIHNob3VsZCBiZSBhbm5v dW5jZWQKICAgc2hvcnRseSBvbiB0aGUgZnJlZWJzZC1xdWVzdGlvbnMgYW5kIGZyZWVic2QtZW11 bGF0aW9uIG1haWxpbmcgbGlzdHMuCgogICBUaGVyZSBhcmUgc29tZSBpc3N1ZXMgd2l0aCBXaW5l MzIgb24gRnJlZUJTRC9hbWQ2NCAtLSBwb3NzaWJseQogICByZWxhdGVkIHRvIEZyZWVCU0QzMl9D T01QQUNULCBvciBvdGhlciBnZW5lcmFsIDMyLzY0LWJpdCBpc3N1ZXMgLS0KICAgdGhhdCBjb3Vs ZCBkbyB3aXRoIHNvbWUgZm9jdXMuCgpPcGVuIHRhc2tzOgoKICAgIDEuIFBvcnQgd2luZTY0IHRv IEZyZWVCU0QuCiAgICAyLiBQb3J0IFdvVzY0ICh3aW5lMzIgYW5kIHdpbmU2NCB0b2dldGhlcikg dG8gRnJlZUJTRC4KICAgIDMuIEZpeCAzMi0gYW5kIDY0LWJpdCBpc3N1ZXMgKHN1Y2ggYXMgSW50 ZWwgZ3JhcGhpY3Mgbm90CiAgICAgICBhY2NlbGVyYXRpbmcpLgogICAgIF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKWGZj ZS9GcmVlQlNECgogICBVUkw6IGh0dHBzOi8vd2lraS5GcmVlQlNELm9yZy9YZmNlCiAgIFVSTDoK ICAgaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+b2xpdmllcmQvcGF0Y2hlcy9taWRvcmktMC40 LjlfMC41LjAuZGlmZgoKICAgQ29udGFjdDogRnJlZUJTRCBYZmNlIFRlYW0gPHhmY2VARnJlZUJT RC5vcmc+CgogICBUaGUgWGZjZSBGcmVlQlNEIFRlYW0gaGFzIHVwZGF0ZWQgbWFueSBwb3J0cywg ZXNwZWNpYWxseToKCiAgICAgKiB0dW1ibGVyOiAwLjEuMjcgKGFkZCBuZXcgb3B0aW9uLCBDT1ZF UikKICAgICAqIFBhcm9sZTogMC41LjAKICAgICAqIHhmZGVza3RvcDogNC4xMC4yCiAgICAgKiBN aWRvcmk6IDAuNC45IChmdWxsIGNvbXBhdGlibGUgd2l0aCBWYWxhIDAuMTgpLCAwLjUuMCBpcwog ICAgICAgYXZhaWxhYmxlIChzZWUgbGlua3MpCiAgICAgKiBPcmFnZTogNC44LjQKICAgICAqIHhm Y2U0LXRlcm1pbmFsOiAwLjYuMSAocmVuYW1lZCBieSB1cHN0cmVhbSwgcHJldmlvdXMgbmFtZSB3 YXMKICAgICAgIFRlcm1pbmFsKQoKICAgVGhpcyBsYXN0IGFwcGxpY2F0aW9uIGNvbnRhaW5zIGRy b3AtZG93biBmdW5jdGlvbmFsaXR5LCBuZXcgd2luZG93CiAgIHNsaWRlcyBkb3duIGZyb20gdGhl IHRvcCBvZiB0aGUgc2NyZWVuIHdoZW4ga2V5ICh3ZSBjYW4gZGVmaW5lCiAgIGtleWJvYXJkIHNo b3J0Y3V0KSBpcyBwcmVzc2VkLgoKT3BlbiB0YXNrczoKCiAgICAxLiBSZXBsYWNlIGxpYnhmY2U0 Z3VpIChkZXByZWNhdGVkIGFuZCBub3QgbWFpbnRhaW5lZCBieSB1cHN0cmVhbSkKICAgIGJ5IGxp YnhmY2U0dWkgaW4gb3JkZXIgdG8gZW5oYW5jZSBzdXBwb3J0IHBhbmVsIHBsdWdpbnMgZm9yIFhm Y2UgPj0KICAgICAgIDQuMTAuCiAgICAyLiBXb3JrIG9uIE1pZG9yaSBHdGszIHBvcnQuCiAgICAz LiBGaXggZ3RrLXhmY2UtZW5naW5lIHdpdGggR3RrKyA+PTMuNi4KICAgICBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCnhv cmcgb24gRnJlZUJTRAoKICAgVVJMOiBodHRwOi8vd2lraS5mcmVlYnNkLm9yZy9Yb3JnCiAgIFVS TDogaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+emVpc2luZy94b3JnLTcuNy5kaWZmCiAgIFVS TDogaHR0cDovL3RyaWxsaWFuLmNocnVldGVydGVlLmNoL3BvcnRzL2Jyb3dzZXIvdHJ1bmsKICAg VVJMOiBodHRwOi8vdHJpbGxpYW4uY2hydWV0ZXJ0ZWUuY2gvcG9ydHMvYnJvd3Nlci9icmFuY2hl cy94b3JnLTcuNwoKICAgQ29udGFjdDogRnJlZUJTRCBYMTEgVGVhbSA8eDExQEZyZWVCU0Qub3Jn PgogICBDb250YWN0OiBOaWNsYXMgWmVpc2luZyA8emVpc2luZ0BGcmVlQlNELm9yZz4KICAgQ29u dGFjdDogS29vcCBNYXN0IDxrd21ARnJlZUJTRC5vcmc+CgogICBNb3N0IG9mIHRoZSB3b3JrIGR1 cmluZyB0aGlzIHBlcmlvZCBoYXMgYmVlbiBpbiB1cGRhdGluZywgdGVzdGluZyBhbmQKICAgc3Rh YmlsaXppbmcgdGhlIGRldmVsb3BtZW50IHJlcG9zaXRvcnkuIEEgbnVtYmVyIG9mIHhvcmcgYXBw bGljYXRpb25zCiAgIGFuZCB2YXJpb3VzIG90aGVyIGxlYWYgcG9ydHMgaGFzIGJlZW4gY29tbWl0 dGVkIGFzIHBhcnQgb2YgdGhpcwogICBlZmZvcnQuIEFmdGVyIHRoaXMgYSBDRlQgd2FzIHNlbnQg b3V0IGFza2luZyBmb3IgaGVscCBpbiB0ZXN0aW5nIHRoZQogICByZW1haW5pbmcgYml0cyBpbiBk ZXZlbG9wbWVudCwgaW5jbHVkaW5nIHVwZGF0ZXMgdG8gYWxsIG1ham9yCiAgIGxpYnJhcmllcyBh bmQgeG9yZy1zZXJ2ZXIuCgogICBDdXJyZW50bHksIHRoZSBDRlQgcGF0Y2ggaGFzIGJlZW4gc3Vi bWl0dGVkIGZvciBhbiBleHAtcnVuIHRvIGlyb24KICAgb3V0IGFueSBmaW5hbCBidWdzLiBUaGUg cGxhbiBpcyB0byBtZXJnZSBpdCBzb21ldGltZSBhZnRlciBGcmVlQlNECiAgIDguNCBpcyByZWxl YXNlZCBhbmQgdGhlIHBvcnRzIHRyZWUgaXMgcmVvcGVuZWQgZm9yIGNvbW1pdHMuCgogICBXb3Jr IGlzIGFsc28gb24tZ29pbmcgdG8gcG9ydCBuZXcgdmVyc2lvbnMgb2YgTUVTQSBhbmQgT3BlbkdM LCBhcwogICB3ZWxsIGFzIGEgbmV3IHZlcnNpb24gb2YgeG9yZy1zZXJ2ZXIsIGFuZCBwZXJoYXBz IGluIHRoZSBmdXR1cmUsCiAgIFdheWxhbmQuIFRoZXNlIGFyZSBjb25zaWRlcmVkIG1vcmUgbG9u Zy10ZXJtIGdvYWxzIGFuZCBhcmUgbm90CiAgIHRhcmdldGVkIGZvciB0aGUgY3VycmVudCB1cGRh dGUuCgpPcGVuIHRhc2tzOgoKICAgIDEuIERlY2lkZSBob3cgdG8gaGFuZGxlIHRoZSBuZXcgYW5k IG9sZCB4b3JnIGRpc3RyaWJ1dGlvbnMuIEluCiAgICByZWNlbnQgeG9yZywgYSBsb3Qgb2YgbGVn YWN5IGRyaXZlciBzdXBwb3J0IGhhcyBiZWVuIGRyb3BwZWQsCiAgICB0aGVyZWZvcmUgd2UgbmVl ZCB0byBtYWludGFpbiB0d28geG9yZyBkaXN0cmlidXRpb25zIHRvIG5vdCBsb3NlIGEKICAgIGxv dCBvZiBoYXJkd2FyZSBkcml2ZXJzLiBDdXJyZW50bHksIHRoaXMgaXMgZG9uZSBieSBzZXR0aW5n IHRoZSBmbGFnCiAgICAgICBXSVRIX05FV19YT1JHIGluIC9ldGMvbWFrZS5jb25mLCBidXQgYSBt b3JlIHByYWN0aWNhbCBzb2x1dGlvbiBpcwogICAgICAgbmVlZGVkLiBUaGlzIGlzIGVzcGVjaWFs bHkgaW1wb3J0YW50IHNpbmNlIHRoZSBmbGFnIGlzIG5vdCB2ZXJ5CiAgICAgICB1c2VyLWZyaWVu ZGx5LCBhbmQgc2luY2UgdGhlcmUgY3VycmVudGx5IHdpbGwgYmUgbm8gb2ZmaWNpYWwKICAgICAg IHBhY2thZ2VzIGZvciB0aGUgbmV3IGRpc3RyaWJ1dGlvbi4KICAgIDIuIENvbnRpbnVlIHRvIHRl c3QgYW5kIHVwZGF0ZSB4b3JnIHJlbGF0ZWQgcG9ydHMuIFRoZXJlIGFyZSBuZXcKICAgICAgIHZl cnNpb25zIG9mIHhzZXJ2ZXIsIGFzIHdlbGwgYXMgTUVTQSBhbmQgcmVsYXRlZCBPcGVuR0wgbGli cmFyaWVzCiAgICAgICB3aGljaCBuZWVkcyB0byBiZSBwb3J0ZWQgYW5kIGV2ZW50dWFsbHkgaW50 ZWdyYXRlZCBpbnRvIHRoZSBwb3J0cwogICAgICAgdHJlZS4KICAgIDMuIFBvcnQgV2F5bGFuZC4g VGhlIGZ1dHVyZSBvZiBncmFwaGljYWwgZW52aXJvbm1lbnRzIGluIG9wZW4gc291cmNlCiAgICAg ICBvcGVyYXRpbmcgc3lzdGVtcyBzZWVtcyB0byBiZSBXYXlsYW5kLiBUaGlzIG5lZWRzIHRvIGJl IHBvcnRlZCB0bwogICAgICAgRnJlZUJTRCBzbyB0aGF0IGEgd2lkZXIgYXVkaWVuY2UgY2FuIHRl c3QgaXQsIGFuZCBzbyB0aGF0IGl0CiAgICAgICBldmVudHVhbGx5IGNhbiBiZSBpbnRlZ3JhdGVk IGludG8gdGhlIHBvcnRzIHRyZWUsIHBlcmhhcHMgYXMgYQogICAgICAgcmVwbGFjZW1lbnQgZm9y IHRoZSBjdXJyZW50IHhvcmcuCiAgICA0LiBMb29rIGludG8gcmVwbGFjZW1lbnRzIGZvciBIQUwu IEhBTCBpcyB1c2VkIGZvciBob3QtcGx1Z2dpbmcgb2YKICAgICAgIGRldmljZXMsIGJ1dCBpdCBo YXMgYmVlbiBsb25nIGFiYW5kb25lZCBieSBMaW51eC4gQSByZXBsYWNlbWVudCwKICAgICAgIHBl cmhhcHMgYnVpbGQgb24gdG9wIG9mIGRldmQgd291bGQgYmUgbmljZSB0byBoYXZlLiBUaGlzIHdv cmsKICAgICAgIHNob3VsZCBiZSBjb29yZGluYXRlZCB3aXRoIHRoZSBGcmVlQlNEIEdOT01FIGFu ZCBLREUgdGVhbXMuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmZyZWVic2QtYW5ub3VuY2VAZnJlZWJzZC5vcmcgbWFpbGluZyBs aXN0Cmh0dHA6Ly9saXN0cy5mcmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVic2QtYW5u b3VuY2UKVG8gdW5zdWJzY3JpYmUsIHNlbmQgYW55IG1haWwgdG8gImZyZWVic2QtYW5ub3VuY2Ut dW5zdWJzY3JpYmVAZnJlZWJzZC5vcmci