CSAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgSXZ5IHYyLjAuMC1iZXRhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcwogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ09OVEVOVFMKMS4gV2hhdCBpcyBBcGFjaGUgSXZ5PwoyLiBTdGF0dXMgb2YgdGhpcyByZWxlYXNlCjMuIE1ham9yIENoYW5nZXMgaW4gdGhpcyBSZWxlYXNlCjQuIE1pZ3JhdGluZyBmcm9tIEpheWFzb2Z0IEl2eSB0byBBcGFjaGUgSXZ5CjUuIEhvdyB0byBHZXQgSW52b2x2ZWQKNi4gSG93IHRvIFJlcG9ydCBJc3N1ZXMKNy4gQ29tbWl0dGVycyBhbmQgQ29udHJpYnV0b3JzIGZvciB0aGlzIHJlbGVhc2UKOC4gTGlzdCBvZiBDaGFuZ2VzIGluIHRoaXMgUmVsZWFzZSAgIAogICAKICAgCjEuIFdoYXQgaXMgQXBhY2hlIEl2eT8KCkFwYWNoZSBJdnkgaXMgYSB0b29sIGZvciBtYW5hZ2luZyAocmVjb3JkaW5nLCB0cmFja2luZywgcmVzb2x2aW5nIGFuZCByZXBvcnRpbmcpIApwcm9qZWN0IGRlcGVuZGVuY2llcy4gCkl0IGlzIGNoYXJhY3Rlcml6ZWQgYnkgdGhlIGZvbGxvd2luZzoKCiAgIDEuIGZsZXhpYmlsaXR5IGFuZCBjb25maWd1cmFiaWxpdHkgCiAgIAkJQXBhY2hlIEl2eSBpcyBlc3NlbnRpYWxseSBwcm9jZXNzIGFnbm9zdGljIGFuZCBpcyBub3QgdGllZCB0byBhbnkgCiAgIAkJbWV0aG9kb2xvZ3kgb3Igc3RydWN0dXJlLiAKICAgCQlJbnN0ZWFkIGl0IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgZmxleGliaWxpdHkgYW5kIGNvbmZpZ3VyYWJpbGl0eSAKICAgCQl0byBiZSBhZGFwdGVkIHRvIGEgYnJvYWQgcmFuZ2Ugb2YgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBidWlsZCAKICAgCQlwcm9jZXNzZXMuCiAgIDIuIHRpZ2h0IGludGVncmF0aW9uIHdpdGggQXBhY2hlIEFudAogICAJCXdoaWxlIGF2YWlsYWJsZSBhcyBhIHN0YW5kYWxvbmUgdG9vbCwgQXBhY2hlIEl2eSB3b3JrcyBwYXJ0aWN1bGFybHkgd2VsbCAKICAgCQl3aXRoIEFwYWNoZSBBbnQgcHJvdmlkaW5nIGEgbnVtYmVyIG9mIHBvd2VyZnVsIEFudCB0YXNrcyByYW5naW5nIAogICAJCWZyb20gZGVwZW5kZW5jeSByZXNvbHV0aW9uIHRvIGRlcGVuZGVuY3kgcmVwb3J0aW5nIGFuZCBwdWJsaWNhdGlvbi4KCjIuIFN0YXR1cyBvZiB0aGlzIHJlbGVhc2UgCgpUaGlzIGlzIHRoZSBmaXJzdCByZWxlYXNlIG9mIEl2eSBzaW5jZSBpdCBoYXMgZ3JhZHVhdGVkIGFzIGEgc3ViIHByb2plY3Qgb2YgQXBhY2hlIEFudC4gCkFzIGEgYmV0YSB2ZXJzaW9uLCB3ZSBlbmNvdXJhZ2UgdGhlIHVzZSBvZiB0aGlzIHZlcnNpb24gZm9yIHRlc3RpbmcgYW5kIHZhbGlkYXRpb24uClN0aWxsIEFQSSBhbmQgZmVhdHVyZXMgYXJlIHN0aWxsIGxpa2VseSB0byBjaGFuZ2UgdW50aWwgZmluYWwgMi4wLjAgdmVyc2lvbi4gCgpUaGUgY3VycmVudCBwcm9kdWN0aW9uIHF1YWxpdHkgdmVyc2lvbiBpcyBzdGlsbCAxLjQuMSwgd2hpY2ggaGFzIG5vdCBiZWVuIHByb2R1Y2VkIAp3aXRoaW4gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgoKMy4gTWFqb3IgQ2hhbmdlcyBpbiB0aGlzIFJlbGVhc2UKClRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCBoYXMgY2hhbmdlZCBiZXR3ZWVuIHZlcnNpb24gMS40LjEgYW5kIHRoaXMgdmVyc2lvbiBvZiAKQXBhY2hlIEl2eS4KClRoaXMgbmV3IHZlcnNpb24gb2YgQXBhY2hlIEl2eSBpcyBhbG1vc3QgZnVsbHkgY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIGFzIGxvbmcgCmFzIHlvdSBkbyBub3QgdXNlIGN1c3RvbSBwbHVnaW5zOiBJdnkgQVBJIGhhcyBjaGFuZ2VkLCBidXQgbm90IGl0cyBiZWhhdmlvci4KClNvbWUgdGFza3MgYW5kIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMgaGF2ZSBiZWVuIHJlbmFtZWQsIGJ1dCB0aGUgb2xkIHZlcnNpb25zCmFyZSBzdGlsbCBhdmFpbGFibGUsIHRoZXkgYXJlIG9ubHkgZGVwcmVjYXRlZCAoeW91IHdpbGwgc2VlIGRlcHJlY2F0ZWQgd2FybmluZ3MpLiAKCjMuMS4gSmF2YSBQYWNrYWdlIE5hbWUgQ2hhbmdlcwoKQWxsIG9mIHRoZSBJdnkgSmF2YSBwYWNrYWdlIG5hbWVzIGhhdmUgY2hhbmdlZCBpbiBBcGFjaGUgSXZ5LiBUaGV5IG5vdyBzdGFydCAKd2l0aCBvcmcuYXBhY2hlIHJhdGhlciB0aGFuIGZyLmpheWFzb2Z0LiBUaGVyZSBoYXZlIGJlZW4gb3RoZXIgY2hhbmdlcyBhcyB3ZWxsLiAKSW1wb3J0YW50IHJlZmFjdG9yaW5ncyBoYXZlIGRvbmUgb24gdGhlIHNvdXJjZSBjb2RlIHRvIGVhc2UgdGhlIHVuZGVyc3RhbmRpbmcKb2YgSXZ5IGludGVybmFsIGFyY2hpdGVjdHVyZSBieSBuZXcgZGV2ZWxvcGVycy4KCkEgY2xhc3MgbmFtZWQgb3JnLmFwYWNoZS5pdnkuSXZ5MTQgaXMgcHJvdmlkZWQgd2l0aCBhbiBBUEkgY29tcGF0aWJsZSB3aXRoIHRoZQpmci5qYXlhc29mdC5JdnkgY2xhc3Mgb2YgSXZ5IDEuNC4xLCB0byBlYXNlIG1pZ3JhdGlvbiB0byB0aGlzIG5ldyB2ZXJzaW9uLgoKMy4yLiBDb25maWd1cmF0aW9uIHJlcGxhY2VkIGJ5IFNldHRpbmdzCgpDb25maWd1cmF0aW9uIHVzZWQgdG8gaGF2ZSB0d28gbWVhbmluZ3MgaW4gcHJpb3IgSXZ5IHZlcnNpb25zLCBjYXVzaW5nIHNvbWUgY29uZnVzaW9uCndpdGggbmV3IHVzZXJzLgpUbyBhdm9pZCB0aGlzIGNvbmZ1c2lvbiwgQXBhY2hlIEl2eSBjYWxscyBzZXR0aW5ncyBpbnN0ZWFkIG9mIGNvbmZpZ3VyYXRpb24gdGhlIGZpbGVzCnVzZWQgdG8gY3VzdG9taXplIEl2eS4gQ29uZmlndXJhdGlvbiBpcyBzdGlsbCB1c2VkIGZvciBtb2R1bGUgY29uZmlndXJhdGlvbnMuCgpCZXNpZGVzIHRoZSBjaGFuZ2VzIGluIHRoZSBkb2N1bWVudGF0aW9uLCB0aGlzIHJlbmFtaW5nIGFsc28gaW1wbHkgYSBtb2RpZmljYXRpb24KaW4gc2V0dGluZ3MgZmlsZXMsIHdoaWNoIG5vdyB1c2UgaXZ5c2V0dGluZ3MgYXMgcm9vdCBlbGVtZW50IGluc3RlYWQgb2YgaXZ5Y29uZiwKYW5kIHNldHRpbmdzIGluc3RlYWQgb2YgY29uZiBlbGVtZW50IHRvIGRlZmluZSB0b3AgbGV2ZWwgZGVmYXVsdHMgKHN1Y2ggYXMgCmRlZmF1bHRDYWNoZSwgLi4uKS4KUHJldmlvdXMgbmFtZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIHNvIHByZXZpb3VzIHNldHRpbmdzIGZpbGVzIGNhbiBzdGlsbCBiZSB1c2VkLCBidXQgCnlvdSB3aWxsIHNlZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcuCgozLjMuIFJldmlldyBvZiBzZXR0aW5ncyBsb2FkaW5nCgpUaGlzIG5ldyBJdnkgdmVyc2lvbiBleHBlcmllbmNlIHdpdGggYSBuZXcgd2F5IG9mIGxvYWRpbmcgdGhlIHNldHRpbmdzLiBUaGUgY29uZmlndXJlIHRhc2sKaXMgZGVwcmVjYXRlZCwgYW5kIHJlcGxhY2VkIGJ5IGEgc2V0dGluZ3MgZGF0YXR5cGUuIEJ5IHVzaW5nIHRoZSBzZXR0aW5ncyBkYXRhdHlwZSwgeW91IGNhbgplYXNpbHkgdXNlIHNldmVyYWwgc2V0dGluZ3MgaW5zaWRlIG9uZSBBbnQgYnVpbGQgc2NyaXB0LCBhbmQgdXNlIGEgc2NvcGUgdG8gdGVsbCBJdnkgd2hpY2gKc2V0dGluZ3MgdG8gdXNlIHdoZW4gY2FsbGluZyBhIHRhc2sgd2hpY2ggcmVxdWlyZXMgc29tZSBzZXR0aW5ncy4KClRoaXMgaXMgc3RpbGwgYW4gZXhwZXJpbWVudCB0aG91Z2gsIHNvIGZlZWRiYWNrIGlzIHZlcnkgd2VsY29tZSBpbiB0aGUgbWFpbGluZyBsaXN0cy4KCjMuNC4gUHVibGljIHJlc29sdmVyIGluIGRlZmF1bHQgc2V0dGluZ3MgaXMgbm93IGliaWJsaW8gaW4gbTIgY29tcGF0aWJsZSBtb2RlCgpJbiBwcmV2aW91cyB2ZXJzaW9ucyBJdnkgdXNlZCB0byB1c2UgdGhlIGl2eXJlcCByZXNvbHZlciBhcyBkZWZhdWx0IHB1YmxpYyByZXNvbHZlciwgCmJ1dCBpdnlyZXAgaXMgbm8gbG9uZ2VyIG1haW50YWluZWQsIHdoaWxlIG1hdmVuIDIgcmVwb3NpdG9yeSBvbiBpYmlibGlvIGlzIGdyb3dpbmcgcmFwaWRseS4KClNpbmNlIEl2eSBpcyBjb21wYXRpYmxlIHdpdGggbWF2ZW4gMiByZXBvc2l0b3J5LCBkZWZhdWx0aW5nIHRvIHRoZSBpYmlibGlvIG1hdmVuIDIgCnJlcG9zaXRvcnkgbWFrZXMgbW9yZSBzZW5zZS4KCklmIHlvdSBoYXZlIGFueSBpc3N1ZSBvZiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlc2UgbmV3IHNldHRpbmdzLCB5b3UgY2FuIHNpbXBseSAKc2V0IHRoZSBmb2xsb3dpbmcgYW50IHByb3BlcnR5IGJlZm9yZSBsb2FkaW5nIHRoZSBzZXR0aW5ncyAoaW1wbGljaXRseSBvciBleHBsaWNpdGx5KToKaXZ5LjE0LmNvbXBhdGlibGU9dHJ1ZQoKMy41LiBSZWxhdGl2ZSBwYXRocyByZXNvbHV0aW9uCgpSZWxhdGl2ZSBwYXRocyByZXNvbHV0aW9uIGluIEl2eSB1c2VkIHRvIGJlIHJlc29sdmVkIGFnYWluc3QgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAKU29tZSB3b3JrIGlzIGluIHByb2dyZXNzIGluIHRoaXMgYXJlYSwgY3VycmVudGx5IHJlbGF0aXZlIHBhdGggcmVzb2x1dGlvbiBmb3IgdGhlIGluY2x1c2lvbgpvZiBjb25maWd1cmF0aW9uIGZpbGVzIGluIEl2eSBmaWxlcyBoYXMgYmVlbiBtb2RpZmllZCB0byB3b3JrIHJlbGF0aXZlIHRvIHRoZSBJdnkgZmlsZSBpbiB3aGljaAp0aGUgY29uZmlndXJhdGlvbnMgYXJlIGluY2x1ZGVkLgoKVGhpcyBtYXkgYnJlYWsgeW91ciBkZXBlbmRlbmN5IHJlc29sdXRpb24gaWYgeW91IHVzZWQgdG8gdXNlIHJlbGF0aXZlIHBhdGhzIGZvciBjb25maWd1cmF0aW9uCmZpbGUgaW5jbHVzaW9uLgoKMy42IEl2eXJlcCBpdnlyb290IGF0dHJpYnV0ZSBpcyBub3cgbWFuZGF0b3J5CgpJZiB5b3Ugc3RpbGwgdXNlIHRoZSBpdnlyZXAgcmVzb2x2ZXIsIHlvdSB3aWxsIG5lZWQgdG8gcHJvdmlkZSBhbiBpdnlyb290LgpUbyByZXN0b3JlIHRoZSBwcmV2aW91cyBiZWhhdmlvciwgdXNlIGl2eXJvb3Q9Imh0dHA6Ly9pdnlyZXAuamF5YXNvZnQub3JnLyIuCgpTaW5jZSBJdnlyZXAgaXMgbm90IG1haW50YWluZWQgYW55bW9yZSwgd2UgcmVjb21tZW5kIG1vdmluZyBhd2F5IGZyb20gdGhpcyByZXBvc2l0b3J5IGFueXdheS4KCjQuIE1pZ3JhdGluZyBmcm9tIEpheWFzb2Z0IEl2eSB0byBBcGFjaGUgSXZ5CgpBcGFjaGUgSXZ5IGlzIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBKYXlhc29mdCBJdnkgYXMgbG9uZyBhcyB5b3UgZG8gbm90IHVzZSAKY3VzdG9tIHBsdWdpbnMuClRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHVzZSBBcGFjaGUgSXZ5IGFzIGEgZHJvcCBpbiByZXBsYWNlbWVudCBvZiBKYXlhc29mdCBJdnkuCgpIb3dldmVyIGR1ZSB0byB0aGUgdGhlIHJlbmFtaW5nIG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gc2V0dGluZ3MgZmlsZXMsIHdlCnN0cm9uZ2x5IHN1Z2dlc3QgdG8gdXBkYXRlIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlczoKLSByZW5hbWUgdGhlIGZpbGVzIGNhbGxlZCBpdnljb25mKi54bWwgaW4gaXZ5c2V0dGluZ3MqLnhtbAotIHJlbmFtZSAnaXZ5Y29uZicgZWxlbWVudCBpbiAnaXZ5c2V0dGluZ3MnCi0gcmVuYW1lICdjb25mJyBlbGVtZW50IG9mIHRob3NlIHNldHRpbmdzIGZpbGUgaW4gJ3NldHRpbmdzJwoKV2UgYWxzbyBzdWdnZXN0IHVzaW5nIHRoZSBuZXcgb3JnLmFwYWNoZS5pdnkuYW50IHBhY2thZ2UgbmFtZSBmb3IgdGhlIGFudGxpYiBkZWNsYXJhdGlvbi4KCk1pZ3JhdGluZyBjdXN0b20gcGx1Z2lucyBjYW4gYmUgZG9uZSBieSB1c2luZyB0aGUgb3JnLmFwYWNoZS5pdnkuSXZ5MTQgY2xhc3MKaW5zdGVhZCBvZiBmci5qYXlhc29mdC5pdnkuSXZ5LCBhbmQgcmVvcmdhbml6aW5nIHlvdXIgaW1wb3J0cyB0byByZWZsZWN0IHRoZSAKY2hhbmdlcyBpbiB0aGUgcGFja2FnZSBuYW1lcy4KCjUuIEhvdyB0byBHZXQgSW52b2x2ZWQKClRoZSBBcGFjaGUgSXZ5IHByb2plY3QgcmVhbGx5IG5lZWRzIGFuZCBhcHByZWNpYXRlcyBhbnkgY29udHJpYnV0aW9ucywgCmluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGhlbHAsIHNvdXJjZSBjb2RlIGFuZCBmZWVkYmFjay4gIElmIHlvdSBhcmUgaW50ZXJlc3RlZAppbiBjb250cmlidXRpbmcsIHBsZWFzZSB2aXNpdCBodHRwOi8vYW50LmFwYWNoZS5vcmcvaXZ5L2dldC1pbnZvbHZlZC5odG1sLgoKNi4gSG93IHRvIFJlcG9ydCBJc3N1ZXMKClRoZSBBcGFjaGUgSXZ5IHByb2plY3QgdXNlcyBKSVJBIGZvciBpc3N1ZSB0cmFja2luZy4gIFBsZWFzZSByZXBvcnQgYW55IAppc3N1ZXMgeW91IGZpbmQgYXQgaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0lWWQoKNy4gQ29tbWl0dGVycyBhbmQgQ29udHJpYnV0b3JzIGZvciB0aGlzIFJlbGVhc2UKCkhlcmUgaXMgdGhlIGxpc3Qgb2YgcGVvcGxlIHdobyBoYXZlIGNvbnRyaWJ1dGVkIHNvdXJjZSBjb2RlIGFuZCBkb2N1bWVudGF0aW9uCnRvIHRoaXMgcmVsZWFzZS4gTWFueSB0aGFua3MgdG8gYWxsIG9mIHRoZW0sIGFuZCBhbHNvIHRvIHRoZSB3aG9sZSBJdnkgY29tbXVuaXR5CmNvbnRyaWJ1dGluZyBpZGVhcyBhbmQgZmVlZGJhY2ssIGFuZCBwcm9tb3RpbmcgdGhlIHVzZSBvZiBJdnkuIFRoZSBsaXN0IHdvdWxkIGJlIHRvbwpsb25nLCBidXQgSXZ5IGNvdWxkbid0IGJlIHdoYXQgaXQgaXMgd2l0aG91dCB5b3UhCgogQ29tbWl0dGVycwoJTWFhcnRlbiBDb2VuZQoJWGF2aWVyIEhhbmluCglHaWxsZXMgU2Nva2FydAoKIENvbnRyaWJ1dG9ycwogICAgSmltIEJvbmFubm8KICAgIEphY29iIEdyeWRob2x0IEplbnNlbgogICAgTWF0dGhpYXMgS2lsaWFuCiAgICBOaWNvbGFzIExhbGV26WUKIAlHZW9mZiBSZWVkeQogICAgSmFzb24gVHJ1bXAKICAgIFRqZWVyZCBWZXJoYWdlbgogICAgSm9obiBXaWxsaWFtcwogICAgSmluZyBYdWUKClNpbmNlIHRoaXMgaXMgb3VyIGZpcnN0IHJlbGVhc2UgYXMgYSBzdWJwcm9qZWN0IG9mIEFudCwgd2UnZCBhbHNvIGxpa2UgdG8gdGFrZSB0aGlzIG9wcG9ydHVuaXR5IAp0byB0aGFuayB0aGUgQXBhY2hlIEFudCBwcm9qZWN0IGZvciBhY2NlcHRpbmcgSXZ5IGFzIGEgc3VicHJvamVjdCwgdGhlIEFwYWNoZSBJbmN1YmF0b3IgY29tbXVuaXR5CmZvciB0aGVpciBndWlkYW5jZSB0byBiZWhhdmUgdGhlICJBcGFjaGUgd2F5IiwgYW5kIG91ciBtZW50b3JzIEFudG9pbmUgTGV2eS1MYW1iZXJ0LCAKU3RlcGhhbmUgQmFpbGxpZXosIFN0ZXZlIExvdWdocmFuIGFuZCBTdGVmYW4gQm9kZXdpZyBmb3IgdGhlaXIgcHJlY2lvdXMgdGltZSBhbmQgaGVscCBkdXJpbmcgCnRoZSBpbmN1YmF0aW9uIHByb2Nlc3MuCiAgICAKOC4gTGlzdCBvZiBDaGFuZ2VzIGluIHRoaXMgUmVsZWFzZQoKRm9yIGEgZnVsbCByZWxlYXNlIGhpc3Rvcnkgb2YgSXZ5IHNlZSB0aGUgZmlsZSBDSEFOR0VTLnR4dAoKRm9yIGRldGFpbHMgYWJvdXQgdGhlIGZvbGxvd2luZyBjaGFuZ2VzLCBjaGVjayBvdXIgSklSQSBpbnN0YWxsIGF0IApodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvaXZ5CgpMaXN0IG9mIGNoYW5nZXMgc2luY2UgSXZ5IDIuMC4wLWFscGhhLTItaW5jdWJhdGluZzoKLSBORVc6IFNoYXJlIGNhY2hlIHdpdGggbG9ja2luZyAoSVZZLTY1NCkKLSBORVc6IHN1cHBvcnQgYXRvbWljIHB1Ymxpc2ggb3BlcmF0aW9uIChJVlktNDkyKSAod2l0aCBjb250cmlidXRpb24gZnJvbSBHZW9mZiBSZWVkeSkKLSBORVc6IGxhdGVzdCBjb21wYXRpYmxlIGNvbmZsaWN0IG1hbmFnZXIgKElWWS02NDgpCi0gTkVXOiBBZGQgYSB0YXNrL2NvZGUgdG8gY3JlYXRlIE0yIFBPTSBmaWxlcyBmcm9tIEl2eSBjb25maWd1cmF0aW9ucyAoSVZZLTQxNikKLSBORVc6IFtCdWlsZF0gUHVibGlzaCB0aGUgaXZ5IHNvdXJjZXMgKElWWS02NDYpICh0aGFua3MgdG8gTmljb2xhcyBMYWxldullKQoKLSBJTVBST1ZFTUVOVDogRWFzZSBwZXJmb3JtYW5jZSBhdWRpdGluZyAoSVZZLTY1NSkKLSBJTVBST1ZFTUVOVDogTWF2ZW4gRGVwZW5kZW5jeSBNYW5hZ2VtZW50IGlzIG5vdCB1c2VkIHRvIGRldGVybWluZSBhcnRpZmFjdCB2ZXJzaW9uIChJVlktNjE2KSAodGhhbmtzIHRvIEppbSBCb25hbm5vKQotIElNUFJPVkVNRU5UOiBzcGxpdCB0aGUgY2FjaGUgaW50byBhbiBkb3dubG9hZGVkIGFydGlmYWN0cyBjYWNoZSBhbmQgYSBtZXRhZGF0YSBjYWNoZSAoSVZZLTYyOCkKLSBJTVBST1ZFTUVOVDogYWRkIHB1Ymxpc2ggdHJpZ2dlcnMgdG8gZXZlbnQgc3lzdGVtIChJVlktNjUwKSAodGhhbmtzIHRvIEphc29uIFRydW1wKQotIElNUFJPVkVNRU5UOiBPbmx5IGRpc3BsYXkgdW5pcXVlIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBkdXJpbmcgUmVzb2x2ZSAoSVZZLTY1MyBJVlktNTE0KSAod2l0aCBjb250cmlidXRpb24gZnJvbSBKb2huIFdpbGxpYW1zKQotIElNUFJPVkVNRU5UOiBBZGRpbmcgb3B0aW9uICdjcCcsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBtYWluIHRvIGJlIGxvYWRlZCBmcm9tIGZpbGUgKElWWS01NDMpICh0aGFua3MgdG8gVGplZXJkIFZlcmhhZ2VuKQotIElNUFJPVkVNRU5UOiBCYXNpY1VSTEhhbmRsZXIgc2hvdWxkIHVzZSBtZXRob2Q9aGVhZCBmb3IgZ2V0VVJMSW5mbyAoSVZZLTYxMSkgKHRoYW5rcyB0byBKaW0gQm9uYW5ubykKLSBJTVBST1ZFTUVOVDogYXJ0aWZhY3Rwcm9wZXJ0eSBzaG91bGQgbm90IG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgcHJvcGVydGllcyAoSVZZLTU4NykKLSBJTVBST1ZFTUVOVDogU3VwcG9ydCAqKHByaXZhdGUpIGFuZCAqKHB1YmxpYykgaW4gdGhlIGNvbmZzIHBhcmFtZXRlciBvZiB0aGUgcmVzb2x2ZSAoSVZZLTU4OCkKLSBJTVBST1ZFTUVOVDogcmVwbGFjZSAqIGJ5ICoocHVibGljKSB3aGVuIHJlc29sdmluZyBpbmxpbmUgKElWWS01ODkpCi0gSU1QUk9WRU1FTlQ6IGl2eSBodG1sIHJlcG9ydHMgbm93IHJlZmVycyBodHRwOi8vYW50LmFwYWNoZS5vcmcgKHBhcnRpYWwgSVZZLTQxNCkKLSBJTVBST1ZFTUVOVDogSW1wcm92ZW1lbnRzIG9uIGhlbGxvIGl2eSBleGFtcGxlIChJVlktNjI2KSAod2l0aCBjb250cmlidXRpb24gZnJvbSBKYWNvYiBHcnlkaG9sdCBKZW5zZW4pCi0gSU1QUk9WRU1FTlQ6IE1ha2UgdGhlIHJvb3QgYXR0cmlidXRlIGluIHRoZSBpdnlyZXAgcmVzb2x2ZXIgbWFuZGF0b3J5IChJVlktNjI1KQotIElNUFJPVkVNRU5UOiBOZXcgdGV4dCByZXByZXNlbnRhdGlvbiBmb3IgbWFpbiBtb2R1bGUgbWV0YWRhdGEgY29uY2VwdHMgKElWWS02NDkpCgotIEZJWDogbTIgaW5jb21wYXRpYmlsaXR5IC0gSVZZIGRvZXMgbm90IHJlY29nbml6ZSBwcm9wZXJ0eSBzZWN0aW9uIChJVlktNjM3KQotIEZJWDogbTIgaW5jb21wYXRpYmlsaXR5IC0gSVZZIGRvZXMgbm90IHJlY29nbml6ZSBwYXJlbnQgcG9tIChJVlktNjM2KQotIEZJWDogQXR0ZW1wdCB0byBkb3dubG9hZCBhIGZpbGUgd2l0aCAmIGluIGl0cyBuYW1lIGNhdXNlcyBTQVhQYXJzZUV4Y2VwdGlvbiBpbiBJdnkgKElWWS02MzUpCi0gRklYOiBCYWQgSXZ5Q29udGV4dCBzY29wZSBjYXVzaW5nIG1lbW9yeSBsZWFrIGFuZCBiYWQgaGFuZGxpbmcgb2Ygc3VicHJvamVjdCBidWlsZHMgKElWWS02MzkpCi0gRklYOiBSZXNvbHV0aW9uIGZhaWx1cmUgd2hlbiBubyBpdnkueG1sIGZpbGUgcHJlc2VudCAoSVZZLTYzMCkKLSBGSVg6ICR7cGFyZW50LnZlcnNpb259IHByb3BlcnR5IGlzIG5vdCByZWNvZ25pemVkIGluIG1hdmVuMiBwb20gKElWWS02MjApCi0gRklYOiBIYW5kbGUgcmVsb2NhdGlvbiB0YWcgaW4gbWF2ZW4gMiBwb20gKElWWS01ODYpCi0gRklYOiBJdnkgZG9lc24ndCB3b3JrIHdpdGggQW50IDEuNi4yIChJVlktNjE0KQotIEZJWDogRW1wdHlTdGFja0V4Y2VwdGlvbiB3aGVuIHVwZ3JhZGluZyBmcm9tIDEuNCB0byAyLjAgKElWWS02MTApCi0gRklYOiBJdnk6cmV0cmlldmUgZmFpbHMgdGhyb3VnaCBwcm94eSBzZXJ2ZXIgKElWWS01MjkpCi0gRklYOiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOiBJbnZhbGlkIHVyaSB3aGVuIHdvcmtpbmcgd2l0aCB2ZXJzaW9uIHJhbmdlcyAoSVZZLTM5MCkKLSBGSVg6IEl2eSBzZXR0aW5ncyBpbmNsdWRlIC10YWcgdXJsIGF0dHJpYnV0ZSBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSAoSVZZLTYwMSkKLSBGSVg6IFN0YXRpYyByZXZpc2lvbiByZXBsYWNlbWVudCBpcyBub3Qgd29ya2luZyB3aGVuIGEgZHluYW1pYyByZXZpc2lvbiBpcyBldmljdGVkIGJ5IGEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IChJVlktNjAzKSAod2l0aCBjb250cmlidXRpb24gZnJvbSBNYXR0aGlhcyBLaWxpYW4pCi0gRklYOiBOdWxsUG9pbnRlckV4Y2VwdGlvbiB3aGlsc3QgcmVzb2x2aW5nIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIChJVlktNTkwKQotIEZJWDogY2FjaGVwYXRoIGJhc2VkIG9uIGEgcmVzb2x2ZSBkb25lIGluIGEgcHJldmlvdXMgYnVpbGQgYnJva2VuIChJVlktNTgzKQotIEZJWDogUmVzb2x2aW5nIGR5bmFtaWMgdmVyc2lvbiBmYWlscyB3aGVuIHVzaW5nIG11bHRpcGxlIHBhdHRlcm5zIGlmIG9ubHkgb25lIHBhdHRlcm4gZmluZCBhIHJldmlzaW9uIGFuZCBvdGhlcnMgZG9uJ3QgKElWWS02MDIpCi0gRklYOiBJbnZhbGlkIGNoYXJhY3RlciBpbiBJdnlSZXRyaWV2ZVRlc3QgY2F1c2luZyBtb3N0IHRlc3RzIHRvIGZhaWwgKElWWS02MDQpCi0gRklYOiBpdnk6c2V0dGluZ3MgYW5kIGl2eTpyZXRyaWV2ZSB3aXRoIGV4cGxpY2l0IGlkIGNhdXNlcyB1bndhcnJhbnRlZCBERVBSRUNBVEVEIHdhcm5pbmcgKHRoYW5rcyB0byBKYWNvYiBHcnlkaG9sdCBKZW5zZW4pCgotIFJFRkFDVE9SSU5HOiBFeHRyYWN0IGEgc2V0dGluZ3MgaW50ZXJmYWNlIGZvciB0aGUgZGlmZmVyZW50IGVuZ2luZXMKCi0gVEFTSzogUmV2aWV3IGFsbCB0dXRvcmlhbHMgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIGluIHN5bmMgd2l0aCAyLjAgKElWWS01OTEpICh3aXRoIGNvbnRyaWJ1dGlvbiBmcm9tIEppbmcgWHVlKQotIFRBU0s6IFNhdGlzZnkgdGhlIFVTIGV4cG9ydCBjb250cm9sIGxhd3MgZm9yIHNvZnR3YXJlICJzcGVjaWFsbHkgZGVzaWduZWQiIHRvIHVzZSBjcnlwdG9ncmFwaHkuIChJVlktNTkzKQo=