From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: From: Roland Hieber Date: Thu, 4 Apr 2019 18:42:11 +0200 Message-Id: <20190404164214.15165-1-rhi@pengutronix.de> MIME-Version: 1.0 Subject: [ptxdist] [PATCH 1/4] doc: ref_manual: split up into multiple files List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ptxdist-bounces@pengutronix.de Sender: "ptxdist" To: ptxdist@pengutronix.de Cc: Roland Hieber VGhlIHJlZmVyZW5jZSBtYW51YWwgaGFzIGdvdHRlbiBxdWl0ZSBiaWcgbm93LiBTcGxpdCBpdCB1 cCBpbnRvIHRocmVlCmZpbGVzIHNvIGl0IGlzIGVhc2llciB0byBuYXZpZ2F0ZSBmb3IgZWRpdGlu Zy4KCk5vIGZ1cnRoZXIgY2hhbmdlIHRvIHRoZSBjb250ZW50LgoKU2lnbmVkLW9mZi1ieTogUm9s YW5kIEhpZWJlciA8cmhpQHBlbmd1dHJvbml4LmRlPgotLS0KIGRvYy9yZWZfbWFrZV9tYWNyb3Mu aW5jICAgICAgfCAgODM0ICsrKysrKysrKysrKysrKysrKwogZG9jL3JlZl9tYWtlX3ZhcmlhYmxl cy5pbmMgICB8ICA0NDQgKysrKysrKysrKwogZG9jL3JlZl9tYW51YWwucnN0ICAgICAgICAgICB8 IDE1NDIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZG9jL3JlZl9ydWxlX2Zp bGVfbGF5b3V0LmluYyB8ICAyNjEgKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE1NDIgaW5zZXJ0 aW9ucygrKSwgMTUzOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2MvcmVmX21h a2VfbWFjcm9zLmluYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9yZWZfbWFrZV92YXJpYWJsZXMu aW5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3JlZl9ydWxlX2ZpbGVfbGF5b3V0LmluYwoKZGlm ZiAtLWdpdCBhL2RvYy9yZWZfbWFrZV9tYWNyb3MuaW5jIGIvZG9jL3JlZl9tYWtlX21hY3Jvcy5p bmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMDFmNTNjOGQ1NmMK LS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcmVmX21ha2VfbWFjcm9zLmluYwpAQCAtMCwwICsxLDgz NCBAQAorLi4gX3JlZmVyZW5jZV9tYWNyb3M6CisKK1J1bGUgRmlsZSBNYWNybyBSZWZlcmVuY2UK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUnVsZXMgZmlsZXMgaW4gUFRYZGlzdCBhcmUg dXNpbmcgbWFjcm9zIHRvIGdldCB0aGluZ3Mgd29yay4gSXRzIGhpZ2hseQorcmVjb21tZW5kZWQg dG8gdXNlIHRoZXNlIG1hY3JvcyBpbnN0ZWFkIG9mIGRvaW5nIHNvbWV0aGluZyBieSBvdXJzZWxm LiBVc2luZyB0aGVzZQorbWFjcm9zIGlzIHBvcnRhYmxlIGFuZCBzdWNoIGVhc2llciB0byBtYWlu dGFpbiBpbiB0aGUgY2FzZSBhIHByb2plY3Qgc2hvdWxkIGJlCit1cGdyYWRlZCB0byBhIG1vcmUg cmVjZW50IFBUWGRpc3QgdmVyc2lvbi4KKworVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgcHJl ZGVmaW5lZCBtYWNyb3MgaW4gUFRYZGlzdCBhbmQgdGhlaXIgdXNhZ2UuCisKK1doZW5ldmVyIG9u ZSBvZiB0aGVzZSBtYWNyb3MgaW5zdGFsbHMgc29tZXRoaW5nIHRvIHRoZSB0YXJnZXQncyByb290 IGZpbGVzeXN0ZW0sCitpdCBhbHNvIGFjY2VwdHMgdXNlciBhbmQgZ3JvdXAgSURzIHdoaWNoIGFy ZSBjb21tb24gaW4gYWxsIGZpbGVzeXN0ZW1zIExpbnV4CitzdXBwb3J0cy4gVGhlc2UgSURzIGNh biBiZSBnaXZlbiBhcyBudW1lcmljYWwgdmFsdWVzIGFuZCBhcyB0ZXh0IHN0cmluZ3MuCitJbiB0 aGUgY2FzZSB0ZXh0IHN0cmluZ3MgYXJlIGdpdmVuIFBUWGRpc3QgY29udmVydHMgdGhlbSBpbnRv IHRoZQorY29ycmVzcG9uZGluZyBudW1lcmljYWwgdmFsdWUgYmFzZWQgb24gdGhlIEJTUCBsb2Nh bCBmaWxlcyA6ZmlsZTpgcGFzc3dkYCBhbmQgOmZpbGU6YGdyb3VwYC4KK0lmIG1vcmUgdGhhbiBv bmUgZmlsZSB3aXRoIHRoZXNlIG5hbWVzIGFyZSBwcmVzZW50IGluIHRoZSBCU1AgUFRYZGlzdCBm b2xsb3dzCitpdHMgcmVndWxhciBydWxlcyB3aGljaCBvbmUgaXQgcHJlZmVycy4KKworTWFueSBw YXRocyBzaG93biBoZXJlIGNvbnRhaW5zIHNvbWUgcGFydHMgaW4gYW5nbGUgYnJhY2tldHMuIFRo ZXNlIGhhdmUKK3NwZWNpYWwgbWVhbmluZ3MgaW4gdGhpcyBkb2N1bWVudC4KKworKio8cGxhdGZv cm0+KioKKyAgVGhlIG5hbWUgb2YgYSBwbGF0Zm9ybS4gQ29ycmVzcG9uZHMgdG8gdGhlIHZhcmlh YmxlCisgIGBgUFRYQ09ORl9QTEFURk9STWBgCisqKjxwbGF0Zm9ybS1zcmM+KioKKyAgVGhlIGRp cmVjdG9yeSB3aGVyZSB0aGUgcGxhdGZvcm0gaXMgZGVmaW5lZC4gQ29ycmVzcG9uZHMgdG8gdGhl IHZhcmlhYmxlCisgIGBgUFRYRElTVF9QTEFURk9STUNPTkZJR0RJUmBgCisqKjxwbGF0Zm9ybS1k aXI+KioKKyAgQ29uY2F0ZW5hdGVkIGRpcmVjdG9yeSBuYW1lIHdpdGggYSBsZWFkaW5nICpwbGF0 Zm9ybS0qIGFuZCB0aGUgbmFtZSBvZiB0aGUKKyAgc2VsZWN0ZWQgcGxhdGZvcm0gbmFtZSwgZS5n LiA8cGxhdGZvcm0+LiBJZiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZQorICBwbGF0 Zm9ybSBpcyAqZm9vKiwgdGhlIGZpbmFsIGRpcmVjdG9yeSBuYW1lIGlzICpwbGF0Zm9ybS1mb28q LgorICBDb3JyZXNwb25kcyB0byB0aGUgdmFyaWFibGUgYGBQVFhESVNUX1BMQVRGT1JNRElSYGAK KworLi4gbm90ZTo6IFRoZSBsaXN0IG9mIHN1cHBvcnRlZCBtYWNyb3MgaXMgbm90IGNvbXBsZXRl IHlldC4KKwordGFyZ2V0aW5mbworfn5+fn5+fn5+fgorCitVc2FnZToKKworLi4gY29kZS1ibG9j azo6IG1ha2UKKworICQoY2FsbCB0YXJnZXRpbmZvKQorCitHaXZlcyBhIGZlZWRiYWNrLCB3aGF0 IGJ1aWxkICpzdGFnZSogaXMganVzdCBzdGFydGVkLiBUaGF0J3Mgd2h5IGl0CitzaG91bGQgYWx3 YXlzIGJlIHRoZSBmaXJzdCBjYWxsIGZvciBlYWNoICpzdGFnZSouIEZvciB0aGUgcGFja2FnZQor KmZvbyogYW5kIHRoZSAqY29tcGlsZSBzdGFnZSogaXQgd2lsbCBvdXRwdXQ6CisKKy4uIGNvZGUt YmxvY2s6OiBiYXNoCisKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhcmdldDogZm9vLmNvbXBp bGUKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0b3VjaAorfn5+fn5+CisKK1VzYWdlOgorCisu LiBjb2RlLWJsb2NrOjogbWFrZQorCisgJChjYWxsIHRvdWNoKQorCitHaXZlcyBhIGZlZWRiYWNr LCB3aGF0IGJ1aWxkICpzdGFnZSogaXMganVzdCBmaW5pc2hlZC4gVGhhdCdzIHdoeSBpdAorc2hv dWxkIGFsd2F5cyBiZSB0aGUgbGFzdCBjYWxsIGZvciBlYWNoICpzdGFnZSouIEZvciB0aGUgcGFj a2FnZQorKmZvbyogYW5kIHRoZSAqY29tcGlsZSBzdGFnZSogaXQgd2lsbCBvdXRwdXQ6CisKKy4u IGNvZGUtYmxvY2s6OiBiYXNoCisKKyBmaW5pc2hlZCB0YXJnZXQgZm9vLmNvbXBpbGUKKworY2xl YW4KK35+fn5+CisKK1VzYWdlOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgJChjYWxsIGNs ZWFuLCA8ZGlyZWN0b3J5IHBhdGg+KQorCitSZW1vdmVzIHRoZSBnaXZlbiBkaXJlY3RvcnkgYGA8 ZGlyZWN0b3J5IHBhdGg+YGAKKworLi4gX2luc3RhbGxfY29weToKKword29ybGQvZ2V0LCB3b3Js ZC9leHRyYWN0LCB3b3JsZC9wcmVwYXJlLCB3b3JsZC9jb21waWxlLCB3b3JsZC9pbnN0YWxsCit+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4KKworVXNhZ2U6CisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAkKGNhbGwg d29ybGQvZ2V0LCA8UEtHPikKKworVGhlIHNhbWUgZm9yIGFsbCBvdGhlciBtYWNyb3MuIFRoZXNl IGFyZSB0aGUgZGVmYXVsdCBidWlsZCBjb21tYW5kcyBmb3IgdGhlCitjb3JyZXNwb25kaW5nIHN0 YWdlcy4gRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGRlZmF1 bHQKK3N0YWdlcyBiZWxvdy4KKworY29tcGlsZQorfn5+fn5+fgorCitVc2FnZToKKworLi4gY29k ZS1ibG9jazo6IG1ha2UKKworICQoY2FsbCBjb21waWxlLCA8UEtHPiwgPGJ1aWxkIGFyZ3VtZW50 cz4pCisKK1RoaXMgbWFjcm8gaXMgdmVyeSBzaW1pbGFyIHRvIGBgd29ybGQvY29tcGlsZWBgLiBU aGUgb25seSBkaWZmZXJlbmNlcyBpcwordGhhdCBpcyB1c2VzIHRoZSBzcGVjaWZpZWQgYGBidWls ZCBhcmd1bWVudHNgYCBpbnN0ZWFkIG9mCitgYDxQS0c+X01BS0VfT1BUYGAuIFRoaXMgaXMgdXNl ZnVsbCBpZiBgYG1ha2VgYCBuZWVkcyB0byBiZSBjYWxsZWQgbW9yZQordGhhbiBvbmNlIGluIHRo ZSBjb21waWxlIHN0YWdlLgorCit3b3JsZC9leGVjdXRlLCBleGVjdXRlCit+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+CisKK1VzYWdlOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgJChjYWxsIGV4 ZWN1dGUsIDxQS0c+LCA8Y29tbWFuZCB3aXRoIGFyZ3VtZW50cz4pCisgJChjYWxsIHdvcmxkL2V4 ZWN1dGUsIDxQS0c+LCA8Y29tbWFuZCB3aXRoIGFyZ3VtZW50cz4pCisKK1RoZXNlIG1hY3JvcyBt YWtlIGl0IHBvc3NpYmxlIHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvbW1hbmRzIGR1cmluZyB0aGUK K2J1aWxkIHN0YWdlcy4gVGhpcyBpcyB1c2VmdWxsIGJlY2F1c2UgdGhlIGVudmlyb25tZW50IGlz IGlkZW50aWNhbCB0byB0aGUKK2RlZmF1bHQgYnVpbGQgY29tbWFuZHMgYGB3b3JsZC8qYGAuCisK K2Bgd29ybGQvZXhlY3V0ZWBgIGFsc28gaGFuZGxlcyB0aGUgZ2VuZXJpYyBzZXR1cCBoYW5kbGVk IGluIHRoZSBjdXJyZW50CitidWlsZCBzdGFnZS4gRm9yIGBgcHJlcGFyZWBgIHRoaXMgbWVhbnMg dGhhdCwgZm9yIG91dCBvdCB0cmVlIGJ1aWxkcywgdGhlCitidWlsZCBkaXJlY3RvcnkgaXMgZGVs ZXRlZCBwcmlvciB0byBleGVjdXRpbmcgdGhlIHNwZWNpZmllZCBjb21tYW5kLgorRm9yIGBgaW5z dGFsbGBgIHRoZSBwYWNrYWdlIGRpcmVjdG9yeSBpcyBkZWxldGVkLgorCitXaGVuIGBgLS12ZXJi b3NlYGAgaXMgdXNlZCB0aGVuIHRoZSBmdWxsIGNvbW1hbmQgaXMgbG9nZ2VkLiBXaXRoCitgYC0t cXVpZXRgYCBib3RoIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSByZWRpcmVjdGVkIHRvIHRoZSBsb2dm aWxlLgorCitpbnN0YWxsX2NvcHkKK35+fn5+fn5+fn5+fn4KKworVXNhZ2U6CisKKy4uIGNvZGUt YmxvY2s6OiBtYWtlCisKKyAkKGNhbGwgaW5zdGFsbF9jb3B5LCA8cGFja2FnZT4sIDxVSUQ+LCA8 R0lEPiwgPHBlcm1pc3Npb24+LCA8c291cmNlPiBbLCA8ZGVzdD4gWywgPHN0cmlwPiBdXSkKKwor SW5zdGFsbHMgZ2l2ZW4gZmlsZSBvciBkaXJlY3RvcnkgaW50bzoKKworKiB0aGUgcHJvamVjdCdz IGBgPHBsYXRmb3JtLWRpcj4vcm9vdC9gYAorKiBhbiBpcGtnL29wa2cgcGFja2V0IGluIHRoZSBw cm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9gYAorCitTb21lIG9mIHRoZSBwYXJh bWV0ZXJzIGhhdmUgZml4ZWQgbWVhbmluZ3M6CisKKyoqPHBhY2thZ2U+KioKKyAgTmFtZSBvZiB0 aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgorKio8VUlEPioqCisgIFVzZXIg SUQgdGhlIGZpbGUgc2hvdWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mgcm9vdCBmaWxlc3lzdGVtCisq KjxHSUQ+KioKKyAgR3JvdXAgSUQgdGhlIGZpbGUgc2hvdWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mg cm9vdCBmaWxlc3lzdGVtCisqKjxwZXJtaXNzaW9uPioqCisgIFBlcm1pc3Npb24gKGluIGFuIG9j dGFsIHZhbHVlKSB0aGUgZmlsZSBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290IGZpbGVz eXN0ZW0KKworVGhlIHJlbWFpbmluZyBwYXJhbWV0ZXJzIHZhcnkgd2l0aCB0aGUgdXNlIGNhc2U6 CisKK1RoZSBgYDxzb3VyY2U+YGAgcGFyYW1ldGVyIGNhbiBiZToKKworKiBhIGRpcmVjdG9yeSBw YXRoIHRoYXQgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIHRhcmdldCdzIHJvb3QgZmlsZXN5c3Rl bS4KKyAgSW4gdGhpcyBjYXNlIHRoZSA8ZGVzdGluYXRpb24+IG11c3QgYmUgb21pdHRlZC4KKyAg VGhlIGdpdmVuIHBhdGggbXVzdCBhbHdheXMgc3RhcnQgd2l0aCBhIGBgL2BgIGFuZCBtZWFucyB0 aGUgcm9vdAorICBvZiB0aGUgdGFyZ2V0J3MgZmlsZXN5c3RlbS4KKyogYW4gYWJzb2x1dGUgcGF0 aCB0byBhIGZpbGUgdGhhdCBzaG91bGQgYmUgY29waWVkIHRvIHRoZSB0YXJnZXQncyByb290Cisg IGZpbGVzeXN0ZW0uIFRvIGF2b2lkIGZpeGVkIHBhdGhzLCBhbGwgcGFja2FnZXMgYXJlIHByb3Zp ZGluZyB0aGUKKyAgPFBLRz5fRElSIHZhcmlhYmxlLiBTbywgdGhpcyBwYXJhbWV0ZXIgaW4gb3Vy CisgICpmb28qIGV4YW1wbGUgcGFja2FnZSBjYW4gYmUgYSBgYCQoRk9PX0RJUikvZm9vYGAuCisq IGEgbWludXMgc2lnbiAoYGAtYGApLiBQVFhkaXN0IHVzZXMgdGhlIDxkZXN0aW5hdGlvbj4KKyAg cGFyYW1ldGVyIGluIHRoaXMgY2FzZSB0byBsb2NhdGUgdGhlIGZpbGUgdG8gY29weSBmcm9tLiAK KyAgVGhlIDxkZXN0aW5hdGlvbj4gaXMgdXNlcyBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIDpyZWY6 YHBhY2thZ2UgaW5zdGFsbAorICBkaXJlY3Rvcnk8cGtnX3BrZ2Rpcj5gLiBUaGlzIG9ubHkgd29y a3MgaWYgdGhlIHBhY2thZ2UgdXNlcyB0aGUgZGVmYXVsdAorICBvciBhIHNpbWlsYXIgKmluc3Rh bGwqIHN0YWdlLiBGb3Igb3VyICpmb28qIGV4YW1wbGUgdXNlZCBzb3VyY2UgZmlsZSBpcworICBg YDxwbGF0Zm9ybS1kaXI+L3BhY2thZ2VzL2Zvby0xLjEuMC88ZGVzdGluYXRpb24+YGAuCisKK1Ro ZSBgYDxkZXN0PmBgIHBhcmFtZXRlciBjYW4gYmU6CisKKyogb21pdHRlZCBpZiBhIGRpcmVjdG9y eSBpbiB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0gc2hvdWxkIGJlIGNyZWF0ZWQuCisgIEZvciB0 aGlzIGNhc2UgdGhlIGRpcmVjdG9yeSB0byBiZSBjcmVhdGVkIGlzIGluIHRoZSA8c291cmNlPiBw YXJhbWV0ZXIuCisqIGFuIGFic29sdXRlIHBhdGggYW5kIGZpbGVuYW1lIHdpdGggaXRzIHJvb3Qg aW4gdGFyZ2V0J3Mgcm9vdCBmaWxlc3lzdGVtLgorICBJdCBtdXN0IHN0YXJ0IHdpdGggYSBzbGFz aCAoYGAvL2BgKS4gSWYgYWxzbyB0aGUgPHNvdXJjZT4KKyAgcGFyYW1ldGVyIHdhcyBnaXZlbiwg dGhlIGZpbGUgY2FuIGJlIHJlbmFtZWQgd2hpbGUgY29weWluZy4KKyAgSWYgdGhlIDxzb3VyY2U+ IHBhcmFtZXRlciB3YXMgZ2l2ZW4gYXMgYSBtaW51cworICBzaWduIChgYC1gYCkgdGhlIDxkZXN0 aW5hdGlvbj4gaXMgYWxzbyB1c2VkIHRvCisgIGxvY2F0ZSB0aGUgc291cmNlLiBGb3Igb3VyICpm b28qIGV4YW1wbGUgcGFja2FnZSBpZiB3ZSBnaXZlCisgIDxkZXN0aW5hdGlvbj4gYXMgYGAvdXNy L2Jpbi9mb29gYCwgUFRYZGlzdAorICBjb3BpZXMgdGhlIGZpbGUgYGA8cGxhdGZvcm0tZGlyPi9w YWNrYWdlcy9mb28tMS4xLjAvdXNyL2Jpbi9mb29gYAorCitUaGUgYGA8c3RyaXA+YGAgaXMgYSBj b21wbGV0ZSBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gcHJldmVudAordGhpcyBtYWNybyBmcm9tIHRo ZSByZWd1bGFyIHN0cmlwcGluZyBwcm9jZXNzIGl0IGRvZXMgb24gZmlsZXMuIE1vc3Qgb2YgdGhl IGNhc2VzCitzdHJpcHBpbmcgZGVidWcgaW5mb3JtYXRpb24gZnJvbSBmaWxlcyBpcyBpbnRlbmRl ZC4gQnV0IHNvbWUga2luZCBvZiBmaWxlcyBnZXR0aW5nCitkZXN0cm95ZWQgd2hlbiB0aGlzIHN0 cmlwcGluZyBoYXBwZW5zIHRvIHRoZW0uIE9uZSBleGFtcGxlIGlzIGEgTGludXgga2VybmVsIG1v ZHVsZS4KK0lmIGl0IGdldHMgc3RyaXBwZWQsIGl0IGNhbid0IGJlIGxvYWRlZCBpbnRvIHRoZSBr ZXJuZWwgYW55bW9yZS4KKworKipmdWxsIHN0cmlwKioKKyAgZnVsbHkgc3RyaXAgdGhlIGZpbGUg d2hpbGUgaW5zdGFsbGluZyB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzICoqeSoqIG9yIG5vdAorICBn aXZlbiBhdCBhbGwgKGRlZmF1bHQgY2FzZSkuCisqKnBhcnRpYWxseSBzdHJpcCoqCisgIG9ubHkg c3RyaXBzIHJlYWwgZGVidWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmlsZSB3aGVuIHRoaXMgcGFy YW1ldGVyIGlzCisgICoqayoqLiBVc2VmdWwgdG8ga2VlcCBMaW51eCBrZXJuZWwgbW9kdWxlIGxv YWRhYmxlIGF0IHJ1bi10aW1lCisqKm5vIHN0cmlwKioKKyAgcHJlc2VydmUgdGhlIGZpbGUgZnJv bSBiZWluZyBzdHJpcHBlZCB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzIG9uZSBvZiB0aGUKKyAgZm9s bG93aW5nOiAqKjAqKiwgKipuKiosICoqbm8qKiwgKipOKiogb3IgKipOTyoqLgorCitEdWUgdG8g dGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBtYWNybywgaGVyZSBhcmUgc29tZSB1c2FnZSBleGFtcGxl czoKKworQ3JlYXRlIGEgZGlyZWN0b3J5IGluIHRoZSByb290IGZpbGVzeXN0ZW06CisKKy4uIGNv ZGUtYmxvY2s6OiBtYWtlCisKKyAkKGNhbGwgaW5zdGFsbF9jb3B5LCBmb28sIDAsIDAsIDA3NTUs IC9ob21lL3VzZXItZm9vKQorCitDb3B5IGEgZmlsZSBmcm9tIHRoZSBwYWNrYWdlIGJ1aWxkIGRp cmVjdG9yeSB0byB0aGUgcm9vdCBmaWxlc3lzdGVtOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQor CisgJChjYWxsIGluc3RhbGxfY29weSwgZm9vLCAwLCAwLCAwNzU1LCAkKEZPT19ESVIpL2Zvbywg L3Vzci9iaW4vZm9vKQorCitDb3B5IGEgZmlsZSBmcm9tIHRoZSBwYWNrYWdlIGJ1aWxkIGRpcmVj dG9yeSB0byB0aGUgcm9vdCBmaWxlc3lzdGVtIGFuZCByZW5hbWUKK2l0OgorCisuLiBjb2RlLWJs b2NrOjogbWFrZQorCisgJChjYWxsIGluc3RhbGxfY29weSwgZm9vLCAwLCAwLCAwNzU1LCAkKEZP T19ESVIpL2ZvbywgL3Vzci9iaW4vYmFyKQorCitDb3B5IGEgZmlsZSBmcm9tIHRoZSBwYWNrYWdl IGluc3RhbGwgZGlyZWN0b3J5IHRvIHRoZSByb290IGZpbGVzeXN0ZW06CisKKy4uIGNvZGUtYmxv Y2s6OiBtYWtlCisKKyAkKGNhbGwgaW5zdGFsbF9jb3B5LCBmb28sIDAsIDAsIDA3NTUsIC0sIC91 c3IvYmluL2ZvbykKKworLi4gX2luc3RhbGxfdHJlZSxyZWZlcmVuY2U6CisKK2luc3RhbGxfdHJl ZQorfn5+fn5+fn5+fn5+CisKK1VzYWdlOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgJChj YWxsIGluc3RhbGxfdHJlZSwgPHBhY2thZ2U+LCA8VUlEPiwgPEdJRD4sIDxzb3VyY2UgZGlyPiwg PGRlc3RpbmF0aW9uIGRpcj4pCisKK0luc3RhbGxzIHRoZSB3aG9sZSBkaXJlY3RvcnkgdHJlZSB3 aXRoIGFsbCBmaWxlcyBmcm9tIHRoZSBnaXZlbiBkaXJlY3RvcnkgaW50bzoKKworKiB0aGUgcHJv amVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcm9vdC9gYAorKiBhbiBpcGtnIHBhY2tldCBpbiB0aGUg cHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvYGAKKworU29tZSBvZiB0aGUgcGFy YW1ldGVycyBoYXZlIGZpeGVkIG1lYW5pbmdzOgorCisqKjxwYWNrYWdlPioqCisgIE5hbWUgb2Yg dGhlIElQS0cvT1BLRyB0aGUgbWFjcm8gc2hvdWxkIHdvcmsgb24KKyoqPFVJRD4qKgorICBVc2Vy IElEIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgc2hvdWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mg cm9vdCBmaWxlc3lzdGVtCisgIG9yIGBgLWBgIHRvIGtlZXAgdGhlIFVJRCBmcm9tIHRoZSBzb3Vy Y2UgdHJlZQorKio8R0lEPioqCisgIEdyb3VwIElEIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMg c2hvdWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mgcm9vdCBmaWxlc3lzdGVtCisgIG9yIGBgLWBgIHRv IGtlZXAgdGhlIEdJRCBmcm9tIHRoZSBzb3VyY2UgdHJlZQorKio8c291cmNlIGRpcj4qKgorICBU aGlzIGlzIHRoZSBwYXRoIHRvIHRoZSB0cmVlIG9mIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyB0byBi ZSBpbnN0YWxsZWQuIEl0IGNhbgorICBiZSBgYC1gYCB0byB1c2UgdGhlIHBhY2thZ2UgZGlyZWN0 b3J5IG9mIHRoZSBjdXJyZW50IHBhY2thZ2UgaW5zdGVhZAorKio8ZGVzdGluYXRpb24gZGlyPioq CisgIFRoZSBiYXNlbmFtZSBvZiB0aGUgdG8tYmUtaW5zdGFsbGVkIHRyZWUgaW4gdGhlIHJvb3Qg ZmlsZXN5c3RlbQorCitOb3RlOiBUaGlzIGluc3RhbGxhdGlvbiBtYWNybworCisqIHVzZXMgdGhl IHNhbWUgcGVybWlzc2lvbiBmbGFncyBpbiB0aGUgZGVzdGluYXRpb24gZGlyIGFzIGZvdW5kCisg IGluIHRoZSBzb3VyY2UgZGlyLiBUaGlzIGlzIHZhbGlkIGZvciBkaXJlY3RvcmllcyBhbmQgcmVn dWxhciBmaWxlcworKiBza2lwcyBhbGwgZGlyZWN0b3JpZXMgd2l0aCBuYW1lcyBsaWtlIGBgLnN2 bmBgLCBgYC5naXRgYCwgYGAucGNgYCBhbmQKKyAgYGBDVlNgYCBpbiB0aGUgc291cmNlIGRpcmVj dG9yeQorCitFeGFtcGxlczoKKworSW5zdGFsbCB0aGUgd2hvbGUgdHJlZSBmb3VuZCBpbiBgYC9o b21lL2piZS9mb29gYCB0byB0aGUgcm9vdCBmaWxlc3lzdGVtCithdCBsb2NhdGlvbiBgYC91c3Iv c2hhcmUvYmFyYGAuCisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAkKGNhbGwgaW5zdGFsbF90 cmVlLCBmb28sIDAsIDAsIC9ob21lL2piZS9mb28sIC91c3Ivc2hhcmUvYmFyKQorCitJbnN0YWxs IGFsbCBmaWxlcyBmcm9tIHRoZSB0cmVlIGZvdW5kIGluIHRoZSBjdXJyZW50IHBhY2thZ2UgRk9P IHRvIHRoZSByb290CitmaWxlc3lzdGVtIGF0IGxvY2F0aW9uIGBgL3Vzci9zaGFyZS9iYXJgYC4K KworLi4gY29kZS1ibG9jazo6IG1ha2UKKworICQoY2FsbCBpbnN0YWxsX3RyZWUsIGZvbywgMCwg MCwgLSwgL3Vzci9zaGFyZS9iYXIpCisKK0lmIHRoZSBjdXJyZW50IHBhY2thZ2UgaXMgYGBmb28t MS4wYGAgdGhlIGJhc2UgcGF0aCBmb3IgdGhlIGRpcmVjdG9yeSB0cmVlCit3aWxsIGJlIGBgJChQ S0dESVIpL2Zvby0xLjAvdXNyL3NoYXJlL2JhcmBgLgorCitpbnN0YWxsX2FsdGVybmF0aXZlX3Ry ZWUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitVc2FnZToKKworLi4gY29kZS1ibG9jazo6 IG1ha2UKKworICQoY2FsbCBpbnN0YWxsX2FsdGVybmF0aXZlX3RyZWUsIDxwYWNrYWdlPiwgPFVJ RD4sIDxHSUQ+LCA8ZGVzdGluYXRpb24gZGlyPikKKworSW5zdGFsbHMgdGhlIHdob2xlIHNvdXJj ZSBkaXJlY3RvcnkgdHJlZSB3aXRoIGFsbCBmaWxlcyBmcm9tIHRoZSBnaXZlbiBkaXJlY3Rvcnkg aW50bzoKKworKiB0aGUgcHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcm9vdC9gYAorKiBhbiBp cGtnIHBhY2tldCBpbiB0aGUgcHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvYGAK KworVGhlIGBgPGRlc3RpbmF0aW9uIGRpcj5gYCBpcyB1c2VkIGxpa2UgaW4gdGhlIGBgaW5zdGFs bF9hbHRlcm5hdGl2ZWBgIHRvIGxldAorUFRYZGlzdCBzZWFyY2ggaW4gdGhlIHNhbWUgZGlyZWN0 b3JpZXMgYW5kIG9yZGVyIGZvciB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgorCitTb21lIG9mIHRoZSBw YXJhbWV0ZXJzIGhhdmUgZml4ZWQgbWVhbmluZ3M6CisKKyoqPHBhY2thZ2U+KioKKyAgTmFtZSBv ZiB0aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgorKio8VUlEPioqCisgIFVz ZXIgSUQgdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQn cyByb290IGZpbGVzeXN0ZW0KKyAgb3IgYGAtYGAgdG8ga2VlcCB0aGUgVUlEIGZyb20gdGhlIHNv dXJjZQorKio8R0lEPioqCisgIEdyb3VwIElEIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgc2hv dWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mgcm9vdAorICBmaWxlc3lzdGVtIG9yIGBgLWBgIHRvIGtl ZXAgdGhlIEdJRCBmcm9tIHRoZSBzb3VyY2UKKyoqPGRlc3RpbmF0aW9uIGRpcj4qKgorICBUaGUg YmFzZW5hbWUgb2YgdGhlIHRvLWJlLWluc3RhbGxlZCB0cmVlIGluIHRoZSByb290IGZpbGVzeXN0 ZW0KKworLi4gbm90ZTo6IFRoaXMgaW5zdGFsbGF0aW9uIG1hY3JvCisKKyAgKiB1c2VzIHRoZSBz YW1lIHBlcm1pc3Npb24gZmxhZ3MgaW4gdGhlIGRlc3RpbmF0aW9uIGRpciBhcyBmb3VuZCBpbiB0 aGUgc291cmNlCisgICAgZGlyLiBUaGlzIGlzIHZhbGlkIGZvciBkaXJlY3RvcmllcyBhbmQgcmVn dWxhciBmaWxlcworICAqIHNraXBzIGFsbCBkaXJlY3RvcmllcyB3aXRoIG5hbWVzIGxpa2UgYGAu c3ZuYGAsIGBgLmdpdGBgLCBgYC5wY2BgIGFuZCBgYENWU2BgCisgICAgaW4gdGhlIHNvdXJjZSBk aXJlY3RvcnkKKworRXhhbXBsZXM6CisKK0luc3RhbGwgdGhlIHdob2xlIHRyZWUgZm91bmQgaW4g cHJvamVjdCdzIGBgcHJvamVjdHJvb3QvdXNyL3NoYXJlL2JhcmBgCit0byB0aGUgcm9vdCBmaWxl c3lzdGVtIGF0IGxvY2F0aW9uIGBgL3Vzci9zaGFyZS9iYXJgYC4KKworLi4gY29kZS1ibG9jazo6 IG1ha2UKKworICQoY2FsbCBpbnN0YWxsX2FsdGVybmF0aXZlX3RyZWUsIGZvbywgMCwgMCwgL3Vz ci9zaGFyZS9iYXIpCisKK1RvIGluc3RhbGwgbm90aGluZywgdXNlIGEgc3ltbGluayB0byBgYC9k ZXYvbnVsbGBgIGluc3RlYWQgb2YgdGhlIGJhc2UKK2RpcmVjdG9yeS4gU2VlIDpyZWY6YGluc3Rh bGxfYWx0ZXJuYXRpdmVgIGZvciBtb3JlIGRldGFpbHMuCisKKy4uIF9pbnN0YWxsX2FsdGVybmF0 aXZlOgorCitpbnN0YWxsX2FsdGVybmF0aXZlCit+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1VzYWdl OgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgJChjYWxsIGluc3RhbGxfYWx0ZXJuYXRpdmUs IDxwYWNrYWdlPiwgPFVJRD4sIDxHSUQ+LCA8cGVybWlzc2lvbj4sIDxkZXN0aW5hdGlvbj4pCisK K0luc3RhbGxzIGdpdmVuIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGludG86CisKKyogdGhlIHByb2pl Y3QncyBgYDxwbGF0Zm9ybS1kaXI+L3Jvb3QvYGAKKyogYW4gaXBrZy9vcGtnIHBhY2tldCBpbiB0 aGUgcHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvYGAKKworVGhlIGJhc2UgcGFy YW1ldGVycyBhbmQgdGhlaXIgbWVhbmluZ3M6CisKKyoqPHBhY2thZ2U+KioKKyAgTmFtZSBvZiB0 aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgorKio8VUlEPioqCisgIFVzZXIg SUQgdGhlIGZpbGUgc2hvdWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mgcm9vdCBmaWxlc3lzdGVtCisq KjxHSUQ+KioKKyAgR3JvdXAgSUQgdGhlIGZpbGUgc2hvdWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mg cm9vdCBmaWxlc3lzdGVtCisqKjxwZXJtaXNzaW9uPioqCisgIFBlcm1pc3Npb24gKGluIGFuIG9j dGFsIHZhbHVlKSB0aGUgZmlsZSBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290IGZpbGVz eXN0ZW0KKworVGhlIHBhcmFtZXRlciA8ZGVzdGluYXRpb24+IGlzIG1lYW50IGFzIGFuIGFic29s dXRlIHBhdGgKK2FuZCBmaWxlbmFtZSBpbiB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0uIFBUWGRp c3Qgc2VhcmNoZXMgZm9yIHRoZSBzb3VyY2UKK29mIHRoaXMgZmlsZSBpbjoKKworKiB0aGUgbG9j YWwgcHJvamVjdAorKiBpbiB0aGUgdXNlZCBwbGF0Zm9ybQorKiBQVFhkaXN0J3MgaW5zdGFsbCBw YXRoCisqIGluIHRoZSBjdXJyZW50IHBhY2thZ2UKKworQXMgdGhpcyBzZWFyY2ggYWxnb3JpdGht IGlzIGNvbXBsZXgsIGhlcmUgYW4gZXhhbXBsZSBmb3IgdGhlIGZpbGUKK2BgL2V0Yy9mb29gYCBp biBwYWNrYWdlIGBgRk9PYGAuIFBUWGRpc3Qgd2lsbCBzZWFyY2ggZm9yIHRoaXMKK2ZpbGUgaW4g dGhlIGZvbGxvd2luZyBvcmRlcjoKKworKiBwcm9qZWN0J3MgZGlyZWN0b3J5IGBgcHJvamVjdHJv b3QuPHBsYXRmb3JtPi9ldGMvZm9vYGAKKyogcHJvamVjdCdzIGRpcmVjdG9yeSBgYHByb2plY3Ry b290L2V0Yy9mb28uPHBsYXRmb3JtPmBgCisqIHBsYXRmb3JtJ3MgZGlyZWN0b3J5IGBgPHBsYXRm b3JtLXNyYz4vcHJvamVjdHJvb3QvZXRjL2Zvby48cGxhdGZvcm0+YGAKKyogcHJvamVjdCdzIGRp cmVjdG9yeSBgYHByb2plY3Ryb290L2V0Yy9mb29gYAorKiBwbGF0Zm9ybSdzIGRpcmVjdG9yeSBg YDxwbGF0Zm9ybS1zcmM+L3Byb2plY3Ryb290L2V0Yy9mb29gYAorKiBwdHhkaXN0J3MgZGlyZWN0 b3J5IGBgcHJvamVjdHJvb3QvZXRjL2Zvb2BgCisqIHBhY2thZ2UncyBkaXJlY3RvcnkgYGAkKEZP T19QS0dESVIpL2V0Yy9mb29gYAorKiBwYWNrYWdlJ3MgZGlyZWN0b3J5IGBgJChGT09fRElSKS9l dGMvZm9vYGAKKworVGhlIGdlbmVyaWMgcnVsZXMgYXJlIGxvb2tpbmcgbGlrZSB0aGUgZm9sbG93 aW5nOgorCisqIGBgJChQVFhESVNUX1dPUktTUEFDRSkvcHJvamVjdHJvb3QkKFBUWERJU1RfUExB VEZPUk1TVUZGSVgpL2V0Yy9mb29gYAorKiBgYCQoUFRYRElTVF9XT1JLU1BBQ0UpL3Byb2plY3Ry b290L2V0Yy9mb28kKFBUWERJU1RfUExBVEZPUk1TVUZGSVgpYGAKKyogYGAkKFBUWERJU1RfUExB VEZPUk1DT05GSUdESVIpL3Byb2plY3Ryb290L2V0Yy9mb28kKFBUWERJU1RfUExBVEZPUk1TVUZG SVgpYGAKKyogYGAkKFBUWERJU1RfV09SS1NQQUNFKS9wcm9qZWN0cm9vdC9ldGMvZm9vYGAKKyog YGAkKFBUWERJU1RfUExBVEZPUk1DT05GSUdESVIpL3Byb2plY3Ryb290L2V0Yy9mb29gYAorKiBg YCQoUFRYRElTVF9UT1BESVIpL3Byb2plY3Ryb290L2V0Yy9mb29gYAorKiBgYCQoRk9PX1BLR0RJ UikvZXRjL2Zvb2BgCisqIGBgJChGT09fRElSKS9ldGMvZm9vYGAKKworTm90ZTogWW91IGNhbiBn ZXQgdGhlIGN1cnJlbnQgdmFsdWVzIGZvciB0aGUgbGlzdGVkIHZhcmlhYmxlcyBhYm92ZSB2aWEg cnVubmluZworUFRYZGlzdCB3aXRoIHRoZSBgYHByaW50YGAgcGFyYW1ldGVyOgorCisuLiBjb2Rl LWJsb2NrOjogYmFzaAorCisgJCBwdHhkaXN0IHByaW50IFBUWERJU1RfUExBVEZPUk1TVUZGSVgK KworYGBpbnN0YWxsX2FsdGVybmF0aXZlYGAgaXMgdXNlZCBieSB1cHN0cmVhbSBQVFhkaXN0IHBh Y2thZ2VzIHRvIGluc3RhbGwKK2NvbmZpZyBmaWxlcy4gSW4gc29tZSByYXJlIHVzZS1jYXNlcyB0 aGUgZmlsZSBzaG91bGQgbm90IGJlIGluc3RhbGxlZCBhdAorYWxsLiBGb3IgZXhhbXBsZSBpZiB0 aGUgY29uZmlnIGZpbGUgaXMgZ2VuZXJhdGVkIGF0IHJ1bnRpbWUgb3IgcHJvdmlkZWQgYnkKK2Eg c3BlY2lhbCBjb25maWd1cmF0aW9uIHBhY2thZ2UuIFRoaXMgaXMgcG9zc2libGUgYnkgY3JlYXRp bmcgYSBzeW1saW5rIHRvCitgYC9kZXYvbnVsbGBgIGluc3RlYWQgb2YgYSBmaWxlIGF0IG9uZSBv ZiB0aGUgbG9jYXRpb25zIGRlc2NyaWJlZCBhYm92ZS4KK1BUWGRpc3Qgc2tpcHMgaW5zdGFsbGlu ZyB0aGUgZmlsZSBpZiBpdCBkZXRlY3RzIHN1Y2ggYSBzeW1saW5rLgorCitpbnN0YWxsX2xpbmsK K35+fn5+fn5+fn5+fgorCitVc2FnZToKKworLi4gY29kZS1ibG9jazo6IG1ha2UKKworICQoY2Fs bCBpbnN0YWxsX2xpbmssIDxwYWNrYWdlPiwgPHBvaW50IHRvPiwgPHdoZXJlPikKKworSW5zdGFs bHMgYSBzeW1ib2xpYyBsaW5rIGludG86CisKKyogdGhlIHByb2plY3QncyBgYDxwbGF0Zm9ybS1k aXI+L3Jvb3QvYGAKKyogYW4gaXBrZy9vcGtnIHBhY2tldCBpbiB0aGUgcHJvamVjdCdzIGBgPHBs YXRmb3JtLWRpcj4vcGFja2FnZXMvYGAKKworVGhlIHBhcmFtZXRlcnMgYW5kIHRoZWlyIG1lYW5p bmdzOgorCisqKjxwYWNrYWdlPioqCisgIE5hbWUgb2YgdGhlIElQS0cvT1BLRyB0aGUgbWFjcm8g c2hvdWxkIHdvcmsgb24KKyoqPHBvaW50IHRvPioqCisgIFBhdGggYW5kIG5hbWUgdGhlIGxpbmsg c2hvdWxkIHBvaW50IHRvLiBOb3RlOiBUaGlzIG1hY3JvIHJlamVjdHMgYWJzb2x1dGUKKyAgcGF0 aHMuIElmIG5lZWRlZCB1c2UgcmVsYXRpdmUgcGF0aHMgaW5zdGVhZC4KKyoqPHdoZXJlPioqCisg IFBhdGggYW5kIG5hbWUgb2YgdGhlIHN5bWJvbGljIGxpbmsuCisKK0EgZmV3IHVzYWdlIGV4YW1w bGVzLgorCitDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIGFzIGBgL3Vzci9saWIvbGliZm9vLnNvYGAg cG9pbnRpbmcgdG8KK2BgbGliZm9vLnNvLjEuMS4wYGAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ogor CisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgJChjYWxsIGluc3RhbGxfbGluaywgZm9vLCBsaWJm b28uc28uMS4xLjAsIC91c3IvbGliL2xpYmZvby5zbykKKworQ3JlYXRlIGEgc3ltYm9saWMgbGlu ayBhcyBgYC91c3IvYmluL2Zvb2BgIHBvaW50aW5nIHRvIGBgL2Jpbi9iYXJgYDoKKworLi4gY29k ZS1ibG9jazo6IG1ha2UKKworICQoY2FsbCBpbnN0YWxsX2xpbmssIGZvbywgLi4vLi4vYmluL2Jh ciwgL3Vzci9iaW4vZm9vKQorCisuLiBfaW5zdGFsbF9hcmNoaXZlOgorCitpbnN0YWxsX2FyY2hp dmUKK35+fn5+fn5+fn5+fn5+fgorCitVc2FnZToKKworLi4gY29kZS1ibG9jazo6IG1ha2UKKwor ICQoY2FsbCBpbnN0YWxsX2FyY2hpdmUsIDxwYWNrYWdlPiwgPFVJRD4sIDxHSUQ+LCA8YXJjaGl2 ZT4gLCA8YmFzZSBwYXRoPikKKworSW5zdGFsbHMgYXJjaGl2ZXMgY29udGVudCBpbnRvOgorCisq IHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9yb290L2BgCisqIGFuIGlwa2cvb3BrZyBw YWNrZXQgaW4gdGhlIHByb2plY3QncyBgYDxwbGF0Zm9ybS1kaXI+L3BhY2thZ2VzL2BgCisKK0Fs bCBwYXJhbWV0ZXJzIGhhdmUgZml4ZWQgbWVhbmluZ3M6CisKKyoqPHBhY2thZ2U+KioKKyAgTmFt ZSBvZiB0aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgorKio8VUlEPioqCisg IFVzZXIgSUQgYWxsIGZpbGVzIGFuZCBkaXJlY3Rvcnkgb2YgdGhlIGFyY2hpdmUgc2hvdWxkIHVz ZSBpbiB0aGUgdGFyZ2V0J3MKKyAgcm9vdCBmaWxlc3lzdGVtLiBBIGBgLWBgIHVzZXMgdGhlIGZp bGUncy9kaXJlY3RvcnkncyBVSUQgaW4gdGhlIGFyY2hpdmUKKyoqPEdJRD4qKgorICBHcm91cCBJ RCB0aGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHNob3VsZCB1c2UgaW4gdGhlIHRhcmdldCdzIHJv b3QgZmlsZXN5c3RlbS4KKyAgQSBgYC1gYCB1c2VzIHRoZSBmaWxlJ3MvZGlyZWN0b3J5J3MgR0lE IGluIHRoZSBhcmNoaXZlCisqKjxhcmNoaXZlPioqCisgIE5hbWUgb2YgdGhlIGFyY2hpdmUgdG8g YmUgdXNlZCBpbiB0aGlzIGNhbGwuIFRoZSBnaXZlbiBwYXRoIGFuZCBmaWxlbmFtZSBpcworICB1 c2VkIGFzIGlzCisqKjxiYXNlIHBhdGg+KioKKyAgQmFzZSBwYXRoIGNvbXBvbmVudCBpbiB0aGUg cm9vdCBmaWxlc3lzdGVtIHRoZSBhcmNoaXZlIHNob3VsZCBiZSBleHRyYWN0ZWQKKyAgdG8uIENh biBiZSBqdXN0IGBgL2BgIGZvciByb290LgorCitpbnN0YWxsX2dsb2IKK35+fn5+fn5+fn5+fgor CitVc2FnZToKKworLi4gY29kZS1ibG9jazo6IG1ha2UKKworICQoY2FsbCBpbnN0YWxsX2dsb2Is IDxwYWNrYWdlPiwgPFVJRD4sIDxHSUQ+LCA8c291cmNlIGRpcj4sIDxkZXN0aW5hdGlvbiBkaXI+ LCA8eWdsb2I+LCA8bmdsb2I+WywgPHN0cmlwPl0pCisKK0luc3RhbGxzIHBhcnRzIG9mIGEgZGly ZWN0b3J5IHRyZWUgd2l0aCBhbGwgZmlsZXMgZnJvbSB0aGUgZ2l2ZW4gZGlyZWN0b3J5CitpbnRv OgorCisqIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9yb290L2BgCisqIGFuIGlwa2cg cGFja2V0IGluIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9gYAorCitT b21lIG9mIHRoZSBwYXJhbWV0ZXJzIGhhdmUgZml4ZWQgbWVhbmluZ3M6CisKKyoqPHBhY2thZ2U+ KioKKyAgTmFtZSBvZiB0aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgorKio8 VUlEPioqCisgIFVzZXIgSUQgdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBzaG91bGQgdXNlIGlu IHRoZSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0KKyAgb3IgYGAtYGAgdG8ga2VlcCB0aGUgVUlE IGZyb20gdGhlIHNvdXJjZSB0cmVlCisqKjxHSUQ+KioKKyAgR3JvdXAgSUQgdGhlIGRpcmVjdG9y aWVzIGFuZCBmaWxlcyBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0K KyAgb3IgYGAtYGAgdG8ga2VlcCB0aGUgR0lEIGZyb20gdGhlIHNvdXJjZSB0cmVlCisqKjxzb3Vy Y2UgZGlyPioqCisgIFRoaXMgaXMgdGhlIHBhdGggdG8gdGhlIHRyZWUgb2YgZGlyZWN0b3JpZXMg YW5kIGZpbGVzIHRvIGJlIGluc3RhbGxlZC4gSXQgY2FuCisgIGJlIGBgLWBgIHRvIHVzZSB0aGUg cGFja2FnZSBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgcGFja2FnZSBpbnN0ZWFkCisqKjxkZXN0 aW5hdGlvbiBkaXI+KioKKyAgVGhlIGJhc2VuYW1lIG9mIHRoZSB0by1iZS1pbnN0YWxsZWQgdHJl ZSBpbiB0aGUgcm9vdCBmaWxlc3lzdGVtCisqKjx5Z2xvYj4qKgorICBBIGxpc3Qgb2YgcGF0aG5h bWUgcGF0dGVybnMuIEFsbCBmaWxlcyBvciBkaXJlY3RvcmllcyB0aGF0IG1hdGNoIF9hbnlfCisg IHBhdHRlcm4gaW4gdGhlIGxpc3QgYXJlIGluc3RhbGxlZC4gTm90ZTogdGhlIHBhdHRlcm5zIG11 c3QgbWF0Y2ggdGhlCisgIHdob2xlIGFic29sdXRlIHBhdGgsIGUuZy4gYGAqL2Zvb2BgLiBBbiBl bXB0eSBsaXN0IGlzIGVxdWl2YWxlbnQgdG8gYQorICBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhbGwg ZmlsZXMuCisqKjxuZ2xvYj4qKgorICBMaWtlIGBgPHlnbG9iPmBgIGJ1dCBhbnkgbWF0Y2hpbmcg ZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2lsbCBub3QgYmUKKyAgaW5zdGFsbGVkLiBGb3IgZGlyZWN0 b3JpZXMsIHRoaXMgaW5jbHVkZXMgdGhlIHdob2xlIGNvbnRlbnRzIG9mIHRoZQorICBkaXJlY3Rv cnkuCisKK0V4Y2VwdCBmb3IgdGhlIHBhdGhuYW1lIHBhdHRlcm5zLCB0aGlzIGNvbW1hbmQgd29y a3MgbGlrZSBgYGluc3RhbGxfdHJlZWBgLgorVGhlIGBgPHlnbG9iPmBgIGFuZCBgYDxuZ2xvYj5g YCBwYXR0ZXJucyBhcmUgY29tYmluZWQ6IE9ubHkgZmlsZXMgdGhhdAorbWF0Y2ggYGA8eWdsb2I+ YGAgYW5kIGRvIG5vdCBtYXRjaCBgYDxuZ2xvYj5gYCBhcmUgaW5zdGFsbGVkLgorCitFeGFtcGxl czoKKworSW5zdGFsbCBhbGwgc2hhcmVkIGxpYnJhcmllcyBmb3VuZCBpbiBgYCQoRk9PX1BLR0RJ UikvdXNyL2xpYi9mb29gYCBleGNlcHQKK2xpYmJhci5zbworCisuLiBjb2RlLWJsb2NrOjogbWFr ZQorCisgJChjYWxsIGluc3RhbGxfZ2xvYiwgZm9vLCAwLCAwLCAtLCAvdXNyL2xpYi9mb28sICou c28sICovbGliYmFyLnNvKQorCitpbnN0YWxsX2xpYgorfn5+fn5+fn5+fn4KKworVXNhZ2U6CisK Ky4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAkKGNhbGwgaW5zdGFsbF9saWIsIDxwYWNrYWdlPiwg PFVJRD4sIDxHSUQ+LCA8cGVybWlzc2lvbj4sIDxsaWJuYW1lPikKKworSW5zdGFsbHMgdGhlIHNo YXJlZCBsaWJyYXJ5IDxsaWJuYW1lPiBpbnRvIHRoZSByb290IGZpbGVzeXN0ZW0uCisKKyogdGhl IHByb2plY3QncyBgYDxwbGF0Zm9ybS1kaXI+L3Jvb3QvYGAKKyogYW4gaXBrZy9vcGtnIHBhY2tl dCBpbiB0aGUgcHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvYGAKKworVGhlIHBh cmFtZXRlcnMgYW5kIHRoZWlyIG1lYW5pbmdzOgorCisqKjxwYWNrYWdlPioqCisgIE5hbWUgb2Yg dGhlIElQS0cvT1BLRyB0aGUgbWFjcm8gc2hvdWxkIHdvcmsgb24KKyoqPFVJRD4qKgorICBVc2Vy IElEIHRoZSBmaWxlIHNob3VsZCB1c2UgaW4gdGhlIHRhcmdldCdzIHJvb3QgZmlsZXN5c3RlbQor Kio8R0lEPioqCisgIEdyb3VwIElEIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgc2hvdWxkIHVz ZSBpbiB0aGUgdGFyZ2V0J3Mgcm9vdCBmaWxlc3lzdGVtCisqKjxwZXJtaXNzaW9uPioqCisgIFBl cm1pc3Npb24gKGFzIGFuIG9jdGFsIHZhbHVlKSB0aGUgbGlicmFyeSBzaG91bGQgdXNlIGluIHRo ZSB0YXJnZXQncyByb290CisgIGZpbGVzeXN0ZW0gKG1vc3RseSAwNjQ0KQorKio8bGlibmFtZT4q KgorICBCYXNlbmFtZSBvZiB0aGUgbGlicmFyeSB3aXRob3V0IGFueSBleHRlbnNpb24gYW5kIHBh dGgKKworVGhlIGBgaW5zdGFsbF9saWJgYCBtYWNybyBzZWFyY2hlcyBmb3IgdGhlIGxpYnJhcnkg YXQgdGhlIG1vc3QKK2NvbW1vbiBkaXJlY3RvcmllcyBgYC9saWJgYCBhbmQgYGAvdXNyL2xpYmBg LiBBbmQgaXQgc2VhcmNoZXMgYWx3YXlzCitpbiB0aGUgcGFja2FnZSdzIGNvcnJlc3BvbmRpbmcg ZGlyZWN0b3J5IGluIGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvYGAuCitJdCBhbHNvIGhhbmRs ZXMgYWxsIHJlcXVpcmVkIGxpbmtzIHRvIG1ha2UgdGhlIGxpYnJhcnkgd29yayBhdCBydW4tdGlt ZS4KKworQW4gZXhhbXBsZS4KKworTGV0cyBhc3N1bWUgdGhlIHBhY2thZ2UgJ2Zvby0xLjAuMCcg aGFzIGluc3RhbGxlZCB0aGUgbGlicmFyeSBgYGxpYmZvb2BgIGludG8KK2l0cyBgYDxwbGF0Zm9y bS1kaXI+L3BhY2thZ2VzL2Zvby0xLjAuMGBgIGF0OgorCisqIHRoZSBsaWI6IGBgPHBsYXRmb3Jt LWRpcj4vcGFja2FnZXMvZm9vLTEuMC4wL3Vzci9saWIvbGliZm9vMS5zby4wLjAuMGBgCisqIGZp cnN0IGxpbms6IGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvZm9vLTEuMC4wL3Vzci9saWIvbGli Zm9vMS5zby4wYGAKKyogc2Vjb25kIGxpbms6IGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvZm9v LTEuMC4wL3Vzci9saWIvbGliZm9vMS5zb2BgCisKKy4uIG5vdGU6OiBUaGUgc2Vjb25kIGxpbmsg aXMgb25seSBuZWVkZWQgIGZvciB0aGUgbGlua2VyIGF0IGJ1aWxkLXRpbWUgdG8KKyAgIHJlc29s dmUgYGAtbGZvbzFgYC4gSXQgaXMgbm90IG5lZWRlZCBhdCBydW4tdGltZSBzbyBgYGluc3RhbGxf bGliYGAgd2lsbAorICAgc2tpcCBpdC4KKworVG8gaW5zdGFsbCB0aGlzIGxpYnJhcnkgYW5kIGl0 cyBjb3JyZXNwb25kaW5nIGxpbmssIHRoZSBmb2xsb3dpbmcgbGluZSBkb2VzIHRoZSBqb2I6CisK Ky4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAkKGNhbGwgaW5zdGFsbF9saWIsIGZvbywgMCwgMCwg MDY0NCwgbGliZm9vMSkKKworTm90ZTogVGhlIHBhY2thZ2UncyBpbnN0YWxsIHN0YWdlIG11c3Qg YmUgJ0RFU1RESVInIGF3YXJlIHRvIGJlIGFibGUgdG8gbWFrZQoraXQgaW5zdGFsbCBpdHMgY29u dGVudCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHBhY2thZ2VzIGRpcmVjdG9yeSAoaW4gb3VyIGV4 YW1wbGUKK2BgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvZm9vLTEuMC4wL2BgIGhlcmUpLgorCitp bnN0YWxsX3JlcGxhY2UKK35+fn5+fn5+fn5+fn5+fgorCitVc2FnZToKKworLi4gY29kZS1ibG9j azo6IG1ha2UKKworICQoY2FsbCBpbnN0YWxsX3JlcGxhY2UsIDxwYWNrYWdlPiwgPGZpbGVuYW1l PiwgPHBsYWNlaG9sZGVyPiwgPHZhbHVlPikKKworUmVwbGFjZSBwbGFjZWhvbGRlciB3aXRoIHZh bHVlIGluIGEgcHJldmlvdXNseSBpbnN0YWxsZWQgZmlsZS4KKworVGhlIHBhcmFtZXRlcnMgYW5k IHRoZWlyIG1lYW5pbmdzOgorCisqKjxwYWNrYWdlPioqCisgIE5hbWUgb2YgdGhlIElQS0cvT1BL RyB0aGUgbWFjcm8gc2hvdWxkIHdvcmsgb24KKyoqPGZpbGVuYW1lPioqCisgIEFic29sdXRlIGZp bGVwYXRoIGluIHRhcmdldCByb290IGZpbGVzeXN0ZW0KKyoqPHBsYWNlaG9sZGVyPioqCisgIEEg c3RyaW5nIGluIHRoZSBmaWxlIHdoaWNoIHNob3VsZCBiZSByZXBsYWNlZC4gVXN1YWxseSBzb21l IHVwcGVyY2FzZSB3b3JkCisgIHN1cnJvdW5kZWQgYnkgQCBzaWducworKio8dmFsdWU+KioKKyAg VGhlIHZhbHVlIHdoaWNoIHNob3VsZCBhcHBlYXIgaW4gdGhlIHJvb3QgZmlsZXN5c3RlbSBpbnN0 ZWFkIG9mIHRoZQorICBwbGFjZWhvbGRlciwgY291bGQgYmUgc29tZSBQVFhDT05GIHZhcmlhYmxl CisKK1RoZSBgYGluc3RhbGxfcmVwbGFjZWBgIG1hY3JvIGNhbiBiZSB1c2VkIGluIHRhcmdldGlu c3RhbGwgc3RhZ2UgdG8gYWRhcHQKK3NvbWUgdGVtcGxhdGUgYW5kIHJlcGxhY2Ugc3RyaW5ncyB3 aXRoIGNvbnRlbnQgZnJvbSBtZW51IHZhcmlhYmxlcyBvciBvdGhlcgorc291cmNlcy4gRm9yIGV4 YW1wbGUgbG9vayBhdCB0aGUgdGltZXpvbmUgeW91IHNldCBpbiB0aGUgcHR4ZGlzdCBtZW51LiBB bgorYGBpbnN0YWxsX3JlcGxhY2VgYCBjYWxsIGluIGBgcnVsZXMvdGltZXpvbmUubWFrZWBgIHJl cGxhY2VzIHRoZSBzdHJpbmcKK2BgQFRJTUVaT05FQGBgIGluIHRoZSBmaWxlIGBgL2V0Yy90aW1l em9uZWBgIGluIHJvb3QgZmlsZXN5c3RlbSB3aXRoIHRoZQorY29udGVudCBvZiB0aGUgbWVudSB2 YXJpYWJsZSBgYFBUWENPTkZfVElNRVpPTkVfTE9DQUxUSU1FYGAuIFRoZSBmaWxlIG11c3QKK2Jl IGluc3RhbGxlZCB3aXRoIHNvbWUgb3RoZXIgYGBpbnN0YWxsXypgYCBjb21tYW5kIGJlZm9yZQor YGBpbnN0YWxsX3JlcGxhY2VgYCBjYW4gYmUgdXNlZC4gQSB0eXBpY2FsIGNhbGwgd291bGQgbG9v ayBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAgICQoU1RBVEVESVIpL3Rp bWV6b25lLnRhcmdldGluc3RhbGw6CisgICAgICAgIC4uLgorICAgCUAkKGNhbGwgaW5zdGFsbF9y ZXBsYWNlLCB0aW1lem9uZSwgL2V0Yy90aW1lem9uZSwgQFRJTUVaT05FQCwgXAorICAgCQkkKFBU WENPTkZfVElNRVpPTkVfTE9DQUxUSU1FKSkKKworLi4gX3BhcmFtX21hY3JvczoKKworLi4gX3B0 eEVuZGlzOgorCitwdHgvZW5kaXMKK35+fn5+fn5+fgorCitUbyBjb252ZXJ0IHRoZSBzdGF0ZSAo c2V0L3Vuc2V0KSBvZiBhIHZhcmlhYmxlIGludG8gYW4gYGBlbmFibGUvZGlzYWJsZWBgCitzdHJp bmcgdXNlIHRoZSBgYHB0eC9lbmRpc2BgIG1hY3JvLgorSWYgdGhlIGdpdmVuIDx2YXJpYWJsZT4g aXMgc2V0IHRoaXMgbWFjcm8gZXhwYW5kcyB0bwordGhlIHN0cmluZyBgYGVuYWJsZWBgLCBpZiB1 bnNldCB0byBgYGRpc2FibGVgYCBpbnN0ZWFkLgorCitVc2FnZToKKworLi4gY29kZS1ibG9jazo6 IG5vbmUKKworIC0tJChjYWxsIHB0eC9lbmRpcywgPHZhcmlhYmxlPiktPHBhcmFtZXRlcj4KKwor QW4gZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IG1ha2UKKworIEZPT19DT05GX09QVCArPSAt LSQoY2FsbCBwdHgvZW5kaXMsRk9PX1ZBUklBQkxFKS1zb21ldGhpbmcKKworRGVwZW5kaW5nIG9u IHRoZSBzdGF0ZSBvZiBGT09fVkFSSUFCTEUgdGhpcyBsaW5lIHJlc3VsdHMgaW50bworCisuLiBj b2RlLWJsb2NrOjogbWFrZQorCisgRk9PX0NPTkZfT1BUICs9IC0tZW5hYmxlLXNvbWV0aGluZyAo aWYgRk9PX1ZBUklBQkxFIGlzIHNldCkKKyBGT09fQ09ORl9PUFQgKz0gLS1kaXNhYmxlLXNvbWV0 aGluZyAoaWYgRk9PX1ZBUklBQkxFIGlzIHVuc2V0KQorCitSZWZlciA6cmVmOmBwdHhEaXNlbmAg Zm9yIHRoZSBvcHBvc2l0ZSBzdHJpbmcgZXhwYW5zaW9uLgorCisuLiBfcHR4RGlzZW46CisKK3B0 eC9kaXNlbgorfn5+fn5+fn5+CisKK1RvIGNvbnZlcnQgdGhlIHN0YXRlIChzZXQvdW5zZXQpIG9m IGEgdmFyaWFibGUgaW50byBhIGBgZGlzYWJsZS9lbmFibGVgYAorc3RyaW5nIHVzZSB0aGUgYGBw dHgvZGlzZW5gYCBtYWNyby4KK0lmIHRoZSBnaXZlbiA8dmFyaWFibGU+IGlzIHNldCB0aGlzIG1h Y3JvIGV4cGFuZHMgdG8KK3RoZSBzdHJpbmcgYGBkaXNhYmxlYGAsIGlmIHVuc2V0IHRvIGBgZW5h YmxlYGAgaW5zdGVhZC4KKworVXNhZ2U6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAtLSQo Y2FsbCBwdHgvZGlzZW4sIDx2YXJpYWJsZT4pLTxwYXJhbWV0ZXI+CisKK0FuIGV4YW1wbGU6CisK Ky4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyBGT09fQ09ORl9PUFQgKz0gLS0kKGNhbGwgcHR4L2Rp c2VuLEZPT19WQVJJQUJMRSktc29tZXRoaW5nCisKK0RlcGVuZGluZyBvbiB0aGUgc3RhdGUgb2Yg Rk9PX1ZBUklBQkxFIHRoaXMgbGluZSByZXN1bHRzIGludG8KKworLi4gY29kZS1ibG9jazo6IG1h a2UKKworIEZPT19DT05GX09QVCArPSAtLWRpc2FibGUtc29tZXRoaW5nIChpZiBGT09fVkFSSUFC TEUgaXMgc2V0KQorIEZPT19DT05GX09QVCArPSAtLWVuYWJsZS1zb21ldGhpbmcgKGlmIEZPT19W QVJJQUJMRSBpcyB1bnNldCkKKworUmVmZXIgOnJlZjpgcHR4RW5kaXNgIGZvciB0aGUgb3Bwb3Np dGUgc3RyaW5nIGV4cGFuc2lvbi4KKworcHR4L3d3bworfn5+fn5+fgorCitUbyBjb252ZXJ0IHRo ZSBzdGF0ZSAoc2V0L3Vuc2V0KSBvZiBhIHZhcmlhYmxlIGludG8gYSBgYHdpdGgvd2l0aG91dGBg CitzdHJpbmcgdXNlIHRoZSBgYHB0eC93d29gYCBtYWNyby4KK0lmIHRoZSBnaXZlbiA8dmFyaWFi bGU+IGlzIHNldCB0aGlzIG1hY3JvIGV4cGFuZHMgdG8KK3RoZSBzdHJpbmcgYGB3aXRoYGAsIGlm IHVuc2V0IHRvIGBgd2l0aG91dGBgIGluc3RlYWQuCisKK1VzYWdlOgorCisuLiBjb2RlLWJsb2Nr Ojogbm9uZQorCisgLS0kKGNhbGwgcHR4L3d3bywgPHZhcmlhYmxlPiktPHBhcmFtZXRlcj4KKwor QW4gZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IG1ha2UKKworIEZPT19DT05GX09QVCArPSAt LSQoY2FsbCBwdHgvd3dvLEZPT19WQVJJQUJMRSktc29tZXRoaW5nCisKK0RlcGVuZGluZyBvbiB0 aGUgc3RhdGUgb2YgRk9PX1ZBUklBQkxFIHRoaXMgbGluZSByZXN1bHRzIGludG8KKworLi4gY29k ZS1ibG9jazo6IG1ha2UKKworIEZPT19DT05GX09QVCArPSAtLXdpdGgtc29tZXRoaW5nIChpZiBG T09fVkFSSUFCTEUgaXMgc2V0KQorIEZPT19DT05GX09QVCArPSAtLXdpdGhvdXQtc29tZXRoaW5n IChpZiBGT09fVkFSSUFCTEUgaXMgdW5zZXQpCisKK3B0eC9pZmRlZgorfn5+fn5+fn5+CisKK1Rv IGNvbnZlcnQgdGhlIHN0YXRlIChzZXQvdW5zZXQpIG9mIGEgdmFyaWFibGUgaW50byBvbmUgb2Yg dHdvIHN0cmluZ3MgdXNlIHRoZQorYGBwdHgvaWZkZWZgYCBtYWNyby4KK0lmIHRoZSBnaXZlbiA8 dmFyaWFibGU+IGlzIHNldCB0aGlzIG1hY3JvIGV4cGFuZHMgdG8KK3RoZSBmaXJzdCBnaXZlbiBz dHJpbmcsIGlmIHVuc2V0IHRvIHRoZSBzZWNvbmQgZ2l2ZW4gc3RyaW5nLgorCitVc2FnZToKKwor Li4gY29kZS1ibG9jazo6IG1ha2UKKworIC0td2l0aC1zb21ldGhpbmc9JChjYWxsIHB0eC9pZmRl ZiwgPHZhcmlhYmxlPiwgPGZpcnN0LXN0cmluZz4sIDxzZWNvbmQtc3RyaW5nKQorCitBbiBleGFt cGxlOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgRk9PX0NPTkZfT1BUICs9IC0td2l0aC1z b21ldGhpbmc9JChjYWxsIHB0eC9pZmRlZixGT09fVkFSSUFCTEUsL3Vzcixub25lKQorCitEZXBl bmRpbmcgb24gdGhlIHN0YXRlIG9mIEZPT19WQVJJQUJMRSB0aGlzIGxpbmUgcmVzdWx0cyBpbnRv CisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyBGT09fQ09ORl9PUFQgKz0gLS13aXRoLXNvbWV0 aGluZz0vdXNyIChpZiBGT09fVkFSSUFCTEUgaXMgc2V0KQorIEZPT19DT05GX09QVCArPSAtLXdp dGgtc29tZXRoaW5nPW5vbmUgKGlmIEZPT19WQVJJQUJMRSBpcyB1bnNldCkKKworcHR4L3RydWVm YWxzZQorfn5+fn5+fn5+fn5+fgorCitUbyBjb252ZXJ0IHRoZSBzdGF0ZSAoc2V0L3Vuc2V0KSBv ZiBhIHZhcmlhYmxlIGludG8gYSBgYHRydWUvZmFsc2VgYAorc3RyaW5nIHVzZSB0aGUgYGBwdHgv dHJ1ZWZhbHNlYGAgbWFjcm8uCitJZiB0aGUgZ2l2ZW4gPHZhcmlhYmxlPiBpcyBzZXQgdGhpcyBt YWNybyBleHBhbmRzIHRvCit0aGUgc3RyaW5nIGBgdHJ1ZWBgLCBpZiB1bnNldCB0byBgYGZhbHNl YGAgaW5zdGVhZC4KKworVXNhZ2U6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAtRHdpdGgt c29tZXRoaW5nPSQoY2FsbCBwdHgvdHJ1ZWZhbHNlLDx2YXJpYWJsZT4pCisKK0FuIGV4YW1wbGU6 CisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyBGT09fQ09ORl9PUFQgKz0gLUR3aXRoLXNvbWV0 aGluZz0kKGNhbGwgcHR4L3RydWVmYWxzZSw8dmFyaWFibGU+KQorCitEZXBlbmRpbmcgb24gdGhl IHN0YXRlIG9mIEZPT19WQVJJQUJMRSB0aGlzIGxpbmUgcmVzdWx0cyBpbnRvCisKKy4uIGNvZGUt YmxvY2s6OiBtYWtlCisKKyBGT09fQ09ORl9PUFQgKz0gLUR3aXRoLXNvbWV0aGluZz10cnVlIChp ZiBGT09fVkFSSUFCTEUgaXMgc2V0KQorIEZPT19DT05GX09QVCArPSAtRHdpdGgtc29tZXRoaW5n PWZhbHNlIChpZiBGT09fVkFSSUFCTEUgaXMgdW5zZXQpCisKK3B0eC9nZXQtYWx0ZXJuYXRpdmUK K35+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhpcyBtYWNybyBjYW4gYmUgdXNlZCB0byBmaW5kIGZp bGVzIG9yIGRpcmVjdG9yaWVzIGluIHRoZSBCU1AgYW5kIFBUWGRpc3QuCitUaGVyZSBhcmUgdHdv IGFyZ3VtZW50cywgKipwcmVmaXgqKiBhbmQgKipmaWxlKiouIFRoZSBzZWFyY2ggcGF0aCBpcyB2 ZXJ5CitzaW1pbGFyIHRvIDpyZWY6YGluc3RhbGxfYWx0ZXJuYXRpdmVgLiBUaGUgZmlyc3QgZXhp c3RpbmcgbG9jYXRpb24gb2YgdGhlCitmb2xsb3dpbmcgcGF0aHMgaXMgcmV0dXJuZWQ6CisKKyog YGAkKFBUWERJU1RfV09SS1NQQUNFKS8kKHByZWZpeCkkKFBUWERJU1RfUExBVEZPUk1TVUZGSVgp LyQoZmlsZSlgYAorKiBgYCQoUFRYRElTVF9XT1JLU1BBQ0UpLyQocHJlZml4KS8kKGZpbGUpJChQ VFhESVNUX1BMQVRGT1JNU1VGRklYKWBgCisqIGBgJChQVFhESVNUX1BMQVRGT1JNQ09ORklHRElS KS8kKHByZWZpeCkvJChmaWxlKSQoUFRYRElTVF9QTEFURk9STVNVRkZJWClgYAorKiBgYCQoUFRY RElTVF9XT1JLU1BBQ0UpLyQocHJlZml4KS8kKGZpbGUpYGAKKyogYGAkKFBUWERJU1RfUExBVEZP Uk1DT05GSUdESVIpLyQocHJlZml4KS8kKGZpbGUpYGAKKyogYGAkKFBUWERJU1RfVE9QRElSKS8k KHByZWZpeCkvJChmaWxlKWBgCisKKworLi4gX2luX3BhdGg6CisKK3B0eC9pbi1wYXRoCit+fn5+ fn5+fn5+fgorCitUaGlzIG1hY3JvIGNhbiBiZSB1c2VkIHRvIGZpbmQgZmlsZXMgb3IgZGlyZWN0 b3JpZXMgaW4gdGhlIEJTUCBhbmQgUFRYZGlzdC4KK1RoZXJlIGFyZSB0d28gYXJndW1lbnRzLCAq KnBhdGggdmFyaWFibGUqKiBhbmQgKipmaWxlKiouIFRoZSAqKnBhdGgKK3ZhcmlhYmxlKiogbXVz dCBiZSBhIHZhcmlhYmxlIG5hbWUgdGhhdCBpcyBhdmFpbGFibGUgaW4gYSBzaGVsbCBjYWxsZWQg YnkKKyoqbWFrZSoqLiBUaGUgdmFyaWFibGUgbXVzdCBjb250YWluIGEgYGA6YGAgc2VwYXJhdGVk IGxpc3Qgb2YgZGlyZWN0b3JpZXMuCitUaGUgKipmaWxlKiogd2lsbCBiZSBzZWFyY2hlZCBpbiB0 aGVzZSBkaXJlY3RvcmllcyBhbmQgdGhlIGZpcnN0IGV4aXN0aW5nCitwYXRoIGlzIHJldHVybmVk LiBQVFhkaXN0IGRlZmluZXMgc2V2ZXJhbCB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgdXNlZCBoZXJl LgorVGhlIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgdXN1YWwgc2VhcmNoIG9yZGVyLgorCistICAq KlBUWERJU1RfUEFUSF9MQVlFUlMqKiBjb250YWlucyBhbGwgbGF5ZXJzIGZyb20gKipQVFhESVNU X1dPUktTUEFDRSoqCisgICB0byAqKlBUWERJU1RfVE9QRElSKioKKworLSAqKlBUWERJU1RfUEFU SCoqIGlzIGxpa2UgKipQVFhESVNUX1BBVEhfTEFZRVJTKiogYnV0IGFsc28gY29udGFpbnMgdGhl CisgICoqUFRYRElTVF9QTEFURk9STUNPTkZJR0RJUioqIGZvciBlYWNoIGxheWVyLgorCistICoq UFRYRElTVF9QQVRIX1NDUklQVFMqKiwgKipQVFhESVNUX1BBVEhfUlVMRVMqKiBhbmQKKyAgKipQ VFhESVNUX1BBVEhfUExBVEZPUk1TKiogYXJlIGxpa2UgKipQVFhESVNUX1BBVEgqKiB3aXRoIHRo ZSBleHRyYQorICBgYHNjcmlwdHMvYGAsIGBgcnVsZXMvYGAgYW5kIGBgcGxhdGZvcm1zL2BgIHN1 YmRpcmVjdG9yeSByZXNwZWN0aXZlbHkuCisKK0hpbnQ6IHVzZSB0aGUgOnJlZjpgcHJpbnQ8Y29t bWFuZF9wcmludD5gIGNvbW1hbmQgdG8gZ2V0IHRoZSBleGFjdCBsaXN0IG9mCitkaXJlY3Rvcmll cyBmb3IgZWFjaCBvZiB0aGVzZSB2YXJpYWJsZXMuCisKKy4uIF9pbl9wbGF0Zm9ybWNvbmZpZ2Rp cjoKKworcHR4L2luLXBsYXRmb3JtY29uZmlnZGlyCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K KworVGhpcyBtYWNybyBpcyBvbmx5IHVzZWZ1bCB3aXRoIG11bHRpcGxlIGxheWVycy4gSXQgaGFz IG9uZSBhcmd1bWVudAorKipmaWxlKiouIFRoZSAqKmZpbGUqKiBpcyBzZWFyY2hlZCBmb3IgaW4g dGhlIHBsYXRmb3JtIGRpcmVjdG9yeSBpbgorYWxsIGxheWVycyBpbiB0aGUgdXN1YWwgc2VhcmNo IG9yZGVyLiBJdCByZXR1cm5zIHRoZSBmaXJzdCBleGlzdGluZyBmaWxlLgorSWYgbm9uZSBleGlz dHMgaXQgcmV0dXJucyBgYCQoUFRYRElTVF9QTEFURk9STUNPTkZJR0RJUikvJChmaWxlKWBgLiBU aGlzCithdm9pZHMgdW5leHBlY3RlZCBlcnJvcnMgZHVlIHRvIGVtcHR5IHZhcmlhYmxlcyBpZiBh IGZpbGUgaXMgbWlzc2luZy4KZGlmZiAtLWdpdCBhL2RvYy9yZWZfbWFrZV92YXJpYWJsZXMuaW5j IGIvZG9jL3JlZl9tYWtlX3ZhcmlhYmxlcy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5mMmI0OTFiNDA3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcmVmX21h a2VfdmFyaWFibGVzLmluYwpAQCAtMCwwICsxLDQ0NCBAQAorVmFyaWFibGVzIFJlZmVyZW5jZQor LS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgcHJvdmlk ZWQgYnkgUFRYZGlzdCB0byBzaW1wbGlmeSBjcmVhdGluZworcnVsZSBmaWxlcy4gRXZlcnkgZGV2 ZWxvcGVyIHNob3VsZCB1c2UgdGhlc2UgdmFyaWFibGVzIGluIGV2ZXJ5IHNpbmdsZQorbGluZSBp biB0aGUgKipydWxlIGZpbGUqKiB0byBhdm9pZCBhbnkgZnVydGhlciBhZGFwdGlvbiB3aGVuIGV4 dGVybmFsIHBhdGhzCithcmUgY2hhbmdlZC4KKworVG8gZ2V0IHRoZWlyIGNvbnRlbnQgcmVsYXRl ZCB0byB0aGUgY3VycmVudCBwcm9qZWN0LCB3ZSBjYW4gc2ltcGx5IHJ1bgorYToKKworOjoKKwor ICAgICQgcHR4ZGlzdCBwcmludCBQVFhESVNUX1RPUERJUgorICAgIC91c3IvbG9jYWwvbGliL3B0 eGRpc3QtfHB0eGRpc3RWZW5kb3JWZXJzaW9ufAorCitSZXBsYWNlIHRoZSBgYFBUWERJU1RfVE9Q RElSYGAgd2l0aCBvbmUgb2YgdGhlIG90aGVyIGdlbmVyaWMgdmFyaWFibGVzCitQVFhkaXN0IHBy b3ZpZGVzLgorCitHbG9iYWwgVmFyaWFibGVzCit+fn5+fn5+fn5+fn5+fn5+CisKK2BgUFRYRElT VF9UT1BESVJgYAorICBQb2ludHMgYWx3YXlzIHRvIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5 IG9mIFBUWGRpc3QuCisKKy4uIF9wdHhkaXN0X3dvcmtzcGFjZToKKworYGBQVFhESVNUX1dPUktT UEFDRWBgCisgIEV2ZXJ5dGhpbmcgdGhhdCByZWZlcmVuY2VzIGBgUFRYRElTVF9XT1JLU1BBQ0Vg YCB3aWxsIHVzZSB0aGUgYWN0aXZlCisgIHByb2plY3Rz4oCZcyBmb2xkZXIuCisKK2BgUFRYRElT VF9TWVNST09UX0NST1NTYGAKKyAgYGBQVFhESVNUX1NZU1JPT1RfQ1JPU1NgYCBwb2ludHMgdG8g YSBkaXJlY3RvcnkgdHJlZSBhbGwgY3Jvc3MgcmVsZXZhbnQKKyAgZXhlY3V0YWJsZXMsIGxpYnJh cmllcyBhbmQgaGVhZGVyIGZpbGVzIGFyZSBpbnN0YWxsZWQgdG8gaW4gdGhlIGN1cnJlbnQKKyAg cHJvamVjdC4gQWxsIG9mIHRoZSBwcm9qZWN04oCZcyBwYWNrYWdlcyBidWlsdCBmb3IgdGhlIGhv c3QgdG8gY3JlYXRlIGRhdGEKKyAgZm9yIHRoZSB0YXJnZXQgYXJlIHNlYXJjaGluZyBpbiB0aGlz IGRpcmVjdG9yeSB0cmVlIGZvciB0aGVpcgorICBkZXBlbmRlbmNpZXMgKGV4ZWN1dGFibGVzLCBo ZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMpLiBVc2UKKyAgYGAkKFBUWERJU1RfU1lTUk9PVF9DUk9T UykvYmluYGAgdG8gaW5zdGFsbCBleGVjdXRhYmxlcywKKyAgYGAkKFBUWERJU1RfU1lTUk9PVF9D Uk9TUykvaW5jbHVkZWBgIGZvciBoZWFkZXIgZmlsZXMgYW5kCisgIGBgJChQVFhESVNUX1NZU1JP T1RfQ1JPU1MpL2xpYmBgIGZvciBsaWJyYXJpZXMuCisKK2BgUFRYRElTVF9TWVNST09UX0hPU1Rg YAorICBgYFBUWERJU1RfU1lTUk9PVF9IT1NUYGAgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IHRyZWUg YWxsIGhvc3QgcmVsZXZhbnQKKyAgZXhlY3V0YWJsZXMsIGxpYnJhcmllcyBhbmQgaGVhZGVyIGZp bGVzIGFyZSBpbnN0YWxsZWQgdG8uIEFsbCBwcm9qZWN04oCZcworICBwYWNrYWdlcyBidWlsdCBm b3IgdGhlIGhvc3QgYXJlIHNlYXJjaGluZyBpbiB0aGlzIGRpcmVjdG9yeSB0cmVlIGZvcgorICB0 aGVpciBkZXBlbmRlbmNpZXMgKGV4ZWN1dGFibGVzLCBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMp LiBVc2UKKyAgYGAkKFBUWERJU1RfU1lTUk9PVF9IT1NUKS9iaW5gYCB0byBpbnN0YWxsIGV4ZWN1 dGFibGVzLAorICBgYCQoUFRYRElTVF9TWVNST09UX0hPU1QpL2luY2x1ZGVgYCBmb3IgaGVhZGVy IGZpbGVzIGFuZAorICBgYCQoUFRYRElTVF9TWVNST09UX0hPU1QpL2xpYmBgIGZvciBsaWJyYXJp ZXMuCisKK2BgUFRYRElTVF9TWVNST09UX1RBUkdFVGBgCisgIGBgUFRYRElTVF9TWVNST09UX1RB UkdFVGBgIHBvaW50cyB0byBhIGRpcmVjdG9yeSB0cmVlIGFsbCB0YXJnZXQKKyAgcmVsZXZhbnQg bGlicmFyaWVzIGFuZCBoZWFkZXIgZmlsZXMgYXJlIGluc3RhbGxlZCB0by4gQWxsIHByb2plY3Ti gJlzCisgIHBhY2thZ2VzIGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGFyZSBzZWFyY2hpbmcgaW4gdGhp cyBkaXJlY3RvcnkgdHJlZSBmb3IKKyAgdGhlaXIgZGVwZW5kZW5jaWVzIChoZWFkZXIgYW5kIGxp YnJhcnkgZmlsZXMpLiBUaGVzZSBmaWxlcyBhcmUgZm9yCisgIGNvbXBpbGUgdGltZSBvbmx5IChm b3IgZXhhbXBsZSB0byBsaW5rIGEgdGFyZ2V0IGV4ZWN1dGFibGUgYWdhaW5zdCBhCisgIHRhcmdl dCBsaWJyYXJ5KSwgbm90IGZvciBydW4tdGltZSEgVXNlCisgIGBgJChQVFhESVNUX1NZU1JPT1Rf VEFSR0VUKS9pbmNsdWRlYGAgZm9yIGhlYWRlciBmaWxlcyBhbmQKKyAgYGAkKFBUWERJU1RfU1lT Uk9PVF9UQVJHRVQpL2xpYmBgIGZvciBsaWJyYXJpZXMuCisKK090aGVyIHVzZWZ1bCB2YXJpYWJs ZXM6CisKK2BgQ1JPU1NfUEFUSGBgCisgIFVzZSB0byBmaW5kIGNyb3NzIHRvb2xzLiBUaGlzIHBh dGggbXVzdCBiZSB1c2VkIHRvIGNyZWF0ZSBhbnl0aGluZyB0aGF0CisgIGRlcGVuZHMgb24gdGhl IHRhcmdldOKAmXMgYXJjaGl0ZWN0dXJlLCBidXQgbmVlZHMgc29tZXRoaW5nIHJ1bm5pbmcgb24g dGhlCisgIGhvc3QgdG8gZG8gdGhlIGpvYi4gRXhhbXBsZXM6CisKKyAgKipDcmVhdGluZyBhIFVC SSBpbWFnZSBmcm9tIHRoZSB0YXJnZXTigJlzIHJvb3QgZmlsZXN5c3RlbSoqCisgICAgICBUaGlz IHdpbGwgbmVlZCBhIHRvb2wgcnVubmluZyBvbiB0aGUgaG9zdCwgYnV0IGl0IHdpbGwgY3JlYXRl IGRhdGEKKyAgICAgIG9yIGNvZGUgdGhhdCBydW5zIG9uIG9yIGlzIHVzZWQgb24gdGhlIHRhcmdl dAorCisgICoqQnVpbGRpbmcgYSBsaWJyYXJ5IGZvciB0aGUgdGFyZ2V0KioKKyAgICAgIElmIHRo aXMgbGlicmFyeSBuZWVkcyBvdGhlciByZXNvdXJjZXMgdG8gYmUgYnVpbHQgKG90aGVyIGxpYnJh cmllcykKKyAgICAgIGl0cyBgYGNvbmZpZ3VyZWBgIGZpbmRzIHRoZSByaWdodCBpbmZvcm1hdGlv biBpbiB0aGlzIHBhdGguCisKK2BgSE9TVF9QQVRIYGAKKyAgVXNlZCB0byBmaW5kIGhvc3QgdG9v bHMuIFRoaXMgcGF0aCBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIGFueXRoaW5nIHRoYXQKKyAgZG9l c24ndCBkZXBlbmQgb24gdGhlIGFyY2hpdGVjdHVyZS4KKworYGBST09URElSYGAKKyAgYGBST09U RElSYGAgcG9pbnRzIHRvIHRoZSByb290IG9mIHRoZSB0YXJnZXTigJlzIHJvb3QgZmlsZXN5c3Rl bSBpbiB0aGUKKyAgY3VycmVudCBwcm9qZWN0LiBVc2VkIGluIHZlcnkgcmFyZSBjYXNlcyAodG8g Y3JlYXRlIHN0cmFuZ2UgcGFja2FnZXMKKyAgYmFzZWQgb24gZGF0YSBpbiB0YXJnZXTigJlzIHJv b3QgZmlsZXN5c3RlbSBmb3IgZXhhbXBsZSkuCisKK2BgUFRYQ09ORl9QTEFURk9STWBgCisgIGBg UFRYQ09ORl9QTEFURk9STWBgIGV4cGFuZHMgdG8gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBz ZWxlY3RlZAorICBwbGF0Zm9ybS4gVGhpcyBuYW1lIGlzIHVzZWQgaW4gdmFyaW91cyBmaWxlIG5h bWVzIGFuZCBwYXRocy4KKworYGBQVFhESVNUX1BMQVRGT1JNU1VGRklYYGAKKyAgYGBQVFhESVNU X1BMQVRGT1JNU1VGRklYYGAgZXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHNl bGVjdGVkCisgIHBsYXRmb3JtLCBidXQgd2l0aCBhIGxlYWRpbmcgZG90LiBUaGlzIGlzIHVzZWQg aW4gdmFyaW91cyBmaWxlcyBQVFhkaXN0CisgIHNob3VsZCBzZWFyY2ggZm9yLgorCisuLiBfcHR4 ZGlzdF9wbGF0Zm9ybWNvbmZpZ2RpcjoKKworYGBQVFhESVNUX1BMQVRGT1JNQ09ORklHRElSYGAK KyAgYGBQVFhESVNUX1BMQVRGT1JNQ09ORklHRElSYGAgcG9pbnRzIHRvIHRoZSBkaXJlY3Rvcnkg dHJlZSBvZiB0aGUKKyAgY3VycmVudGx5IHNlbGVjdGVkIHBsYXRmb3JtLiBUaGlzIHBhdGggaXMg dXNlZCBpbiB2YXJpb3VzIHNlYXJjaAorICBmdW5jdGlvbnMuCisKK2BgUFRYRElTVF9QTEFURk9S TURJUmBgCisgIGBgUFRYRElTVF9QTEFURk9STURJUmBgIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5 IGJ1aWxkIHRyZWUgb2YgdGhlCisgIGN1cnJlbnRseSBzZWxlY3RlZCBwbGF0Zm9ybS4KKworYGBQ QUNLQUdFU2BgLCBgYFBBQ0tBR0VTLXlgYCwgYGBQQUNLQUdFUy1tYGAKKyAgYGBQQUNLQUdFU2Bg IGlzIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgbG93ZXJjYXNlIHBhY2thZ2UgbmFtZXMgdGhh dCBhcmUKKyAgYnVpbHQgYW5kIGluc3RhbGxlZCBkdXJpbmcgdGhlIFBUWGRpc3QgYnVpbGQgcnVu LCBhbmQgaW5zdGFsbGVkIGludG8gdGhlCisgIHRhcmdldCByb290IGZpbGVzeXN0ZW0gd2hlbiBi dWlsZGluZyBpbWFnZXMuCisKKyAgVGhlIGBgLXlgYCB2YXJpYW50IGNvbnRhaW5zIG9ubHkgdGhv c2UgcGFja2FnZXMgdGhhdCBhcmUgc2VsZWN0ZWQgd2l0aAorICBgYFBUWENPTkZfPFBLRz49eWBg LCB3aGlsZSB0aGUgYGAtbWBgIHZhcmlhbnQgY29udGFpbnMgb25seSB0aG9zZSB3aGljaCBhcmUK KyAgc2VsZWN0ZWQgd2l0aCBgYFBUWENPTkZfPFBLRz49bWBgICh1c2VkIGZvciBjb2xsZWN0aW9u cykuCisgIEEgdGFyZ2V0IHBhY2thZ2UgcnVsZSB1c3VhbGx5IGFkZHMgaXRzIG5hbWUgdG8gb25l IG9mIHRob3NlIHZhcmlhYmxlcyBpZiBpdAorICBoYXMgYmVlbiBzZWxlY3RlZC4KKyAgVGhlIHVu aW9uIG9mIHRob3NlIHR3byBzZXRzIHRoZW4gZW5kcyB1cCBpbiBgYFBBQ0tBR0VTYGAuCisKK2Bg RVhUUkFfUEFDS0FHRVNgYCwgYGBFWFRSQV9QQUNLQUdFUy15YGAsIGBgRVhUUkFfUEFDS0FHRVMt bWBgCisgIEluIGFuYWxvZ3kgdG8gYGBQQUNLQUdFU2BgLCB0YXJnZXQgcGFja2FnZXMgdGhhdCBh cmUgYWRkZWQgdG8gdGhlc2UgbGlzdHMgd2lsbAorICBiZSBidWlsdCBub3JtYWxseSBkdXJpbmcg dGhlIGJ1aWxkIHJ1bi4KKyAgSW4gY29udHJhc3QgaG93ZXZlciwgdGhleSBhcmUgbm90IGluc3Rh bGxlZCBpbnRvIGEgcm9vdCBmaWxlc3lzdGVtIGJ5IGRlZmF1bHQKKyAgd2hlbiBidWlsZGluZyBp bWFnZXMsIGFuZCBpbWFnZSBydWxlcyBtdXN0IHJlcXVlc3QgdGhlbSBleHBsaWNpdGVseS4KKyAg VGhpcyBpcyB1c2VmdWwgZm9yIHNwZWNpYWxpemVkIHBhY2thZ2VzIHRoYXQgYXJlIG9ubHkgbmVl ZGVkIGZvciBzcGVjaWZpYworICBpbWFnZXMsIHNlZSA6cmVmOmBtdWx0aV9pbWFnZV9pbmRpdmlk dWFsX3Jvb3RfZmlsZXN5c3RlbXNgLgorCitgYEhPU1RfUEFDS0FHRVNgYCwgYGBDUk9TU19QQUNL QUdFU2BgCisgIFNpbWlsYXIgdG8gYGBQQUNLQUdFU2BgLCB0aGVzZSB2YXJpYWJsZXMgY29udGFp biB0aGUgaG9zdCBhbmQgY3Jvc3MgcGFja2FnZXMKKyAgdGhhdCBhcmUgYnVpbHQgYW5kIGluc3Rh bGxlZCBkdXJpbmcgdGhlIFBUWGRpc3QgYnVpbGQgcnVuLgorICBUaGVyZSBhcmUgYW5hbG9nb3Vz IGBgLXlgYCBhbmQgYGAtbWBgIHZhcmlhbnRzIG9mIHRob3NlIHZhcmlhYmxlcyB0b28uCisKK1Bh Y2thZ2UgU3BlY2lmaWMgVmFyaWFibGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitG b3IgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgYGA8UEtHPmBgIGlzIGEgcGxhY2Vob2xkZXIgZm9y IHRoZSBwYWNrYWdlCituYW1lLiBJdCBpcyBhbHNvIHRoZSBLY29uZmlnIHN5bWJvbCBuYW1lICh3 aXRob3V0IHRoZSBgYFBUWENPTkZfYGAgcHJlZml4KS4KKworUGFja2FnZSBEZWZpbml0aW9uCite Xl5eXl5eXl5eXl5eXl5eXl4KKworYGA8UEtHPmBgCisgIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhl IHBhY2thZ2UgaW5jbHVkaW5nIHZlcnNpb24uIEZvciBtb3N0IHBhY2thZ2VzLAorICB0aGlzIGlz IHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgYXJjaGl2ZSAod2l0aG91dCBzdWZmaXgpIGFuZCB0aGUg c291cmNlCisgIGRpcmVjdG9yeS4gUFRYZGlzdCB3aWxsIHNlYXJjaCBmb3IgcGF0Y2hlcyBpbiBh IGRpcmVjdG9yeSB3aXRoIHRoaXMgbmFtZS4KKyAgVGhpcyBpcyB1c3VhbGx5IGRlZmluZWQgYXMg YGA8bmFtZT4tJCg8UEtHPl9WRVJTSU9OKWBgLiBUaGlzIHZhcmlhYmxlIGlzCisgIHJlcXVpcmVk IGZvciBtb3N0IHBhY2thZ2VzLiBUaGUgb25seSBleGNlcHRpb24gYXJlIHBhY2thZ2VzIHRoYXQg b25seQorICBpbnN0YWxsIHNvbWUgZmlsZXMgaW4gdGhlIHRhcmdldGluc3RhbGwgc3RhZ2UgKGUu Zy4gZnJvbSBwcm9qZWN0cm9vdC8pLgorCitgYDxQS0c+X1ZFUlNJT05gYAorICBUaGUgdmVyc2lv biBvZiB0aGUgcGFja2FnZS4gSXQgaXMgdXNlZCBhcyB0aGUgdmVyc2lvbiBmb3IgdGhlIGlwawor ICBwYWNrYWdlcy4gQXMgc3VjaCwgaXQgaXMgcmVxdWlyZWQgZm9yIGFsbCBwYWNrYWdlcyB0aGF0 IGNyZWF0ZSBzdWNoCisgIHBhY2thZ2VzLiBNb3N0IHRhcmdldCBwYWNrYWdlcyBmYWxsIGluIHRo aXMgY2F0ZWdvcnkuCisKK2BgPFBLRz5fTUQ1YGAKKyAgVGhlIG1kNSBjaGVja3N1bSBvZiB0aGUg c291cmNlIGFyY2hpdmUuIFBUWGRpc3QgY2FsY3VsYXRlcyB0aGUgY2hlY2tzdW0KKyAgYmVmb3Jl IGV4dHJhY3RpbmcgdGhlIGFyY2hpdmUgYW5kIHdpbGwgYWJvcnQgaWYgZG9lcyBub3QgbWF0Y2gu IFVwc3RyZWFtCisgIHByb2plY3Qgb2NjYXNpb25hbGx5IGNoYW5nZSB0aGUgY29udGVudCBvZiBh biBhcmNoaXZlIHdpdGhvdXQgcmVsZWFzaW5nIGEKKyAgbmV3IHZlcnNpb24uIFRoaXMgY2hlY2sg aGVscHMgdG8gZW5zdXJlIHRoYXQgYWxsIGRldmVsb3BlcnMgd29yayB3aXRoIHRoZQorICBzYW1l IHNvdXJjZSBjb2RlLgorCitgYDxQS0c+X1NVRkZJWGBgCisgIFRoZSBhcmNoaXZlIHN1ZmZpeCB3 aXRob3V0IHRoZSBsZWFkaW5nICcuJywgZS5nLiAndGFyLmd6JyBvciAnemlwJy4gVGhpcworICBp cyBvbmx5IHVzZWQgbG9jYWxseSB0byBkZWZpbmUgYGA8UEtHPl9VUkxgYCBhbmQgYGA8UEtHPl9T T1VSQ0VgYC4KKworYGA8UEtHPl9VUkxgYAorICBUaGlzIGlzIHRoZSBkb3dubG9hZCBVUkwgZm9y IHRoZSBzb3VyY2UgYXJjaGl2ZS4gSXQgaXMgYSBzcGFjZSBzZXBhcmF0ZWQKKyAgbGlzdCBvZiBV UkxzLiBQVFhkaXN0IHdpbGwgdHJ5IGVhY2ggVVJMIHVudGlsIGl0IGZpbmRzIG9uZSB0aGF0IHdv cmtzLgorICBUaGVyZSBhcmUgdHdvIG1haW4gcmVhc29ucyB0byBwcm92aWRlIG1vcmUgdGhhbiBv bmUgVVJMOiAxLiBBZGRpdGlvbmFsCisgIG1pcnJvcihzKSBpbiBjYXNlIHRoZSBtYWluIGxvY2F0 aW9uIGlzIHVuYXZhaWxhYmxlLiAyLiBTb21lIHByb2plY3RzIG1vdmUKKyAgb2xkIHZlcnNpb25z IGludG8gYSBzZXBhcmF0ZSBkaXJlY3Rvcnkgd2hlbiBhIG5ldyB2ZXJzaW9uIGlzIHJlbGVhc2Vk LgorICBQcm92aWRpbmcgYm90aCB2ZXJzaW9ucyBvZiB0aGUgVVJMIGVuc3VyZXMgdGhhdCBQVFhk aXN0IHN0aWxsIGhhcyBhCisgIHdvcmtpbmcgVVJMIGFmdGVyIHRoZSBuZXh0IHVwc3RyZWFtIHJl bGVhc2UuCisKKyAgVVJMcyBjYW4gaGF2ZSBvcHRpb25zLiBPcHRpb25zIGFyZSBhcHBlbmRlZCB0 byB0aGUgVVJMIHNlcGFyYXRlZCBieSAnOycuCisgIEZvciBub3JtYWwgZG93bmxvYWRzIHRoZSBm b2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOgorCisgIGBgbm8tY2hlY2stY2VydGlmaWNh dGVgYCB0byBpbmRpY2F0ZSB0aGF0IFNTTCBjZXJ0aWZpY2F0ZSBjaGVja2luZyBzaG91bGQKKyAg YmUgZGlzYWJsZWQuCisKKyAgYGBuby1wcm94eWBgIHRvIGRpc2FibGUgYW55IGNvbmZpZ3VyZWQg cHJveHkuCisKKyAgYGBjb29raWU6PHZhbHVlPmBgIHRvIHNwZWNpZnkgYSBjb29raWUgdGhhdCBz aG91bGQgYmUgc2VudC4KKworICBGaWxlcyBpbiB0aGUgbG9jYWwgZmlsZXN5c3RlbSBjYW4gYmUg YWRkcmVzc2VkIHdpdGggYGBmaWxlOi8vYGAgVVJMcy4gSW4KKyAgdGhpcyBjYXNlLCB0aGUgVVJM IGNhbiBhbHNvIHBvaW50IHRvIGEgZGlyZWN0b3J5LiBJbiB0aGlzIGNhc2UKKyAgYGA8UEtHPl9E SVJgYCB3aWxsIGJlIGEgc3ltbGluayB0byB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeS4gJ2xuZGly Oi8vJworICBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBzaGFkb3cgY29weSBpbnN0ZWFkLiBGb3Ig bG9jYXRpb25zIGluc2lkZSB0aGUgQlNQCisgIHRoZSBVUkwgc2hvdWxkIHVzZSBgYCQoUFRYRElT VF9XT1JLU1BBQ0UpYGAgdG8gZGVmaW5lIHRoZSBjb3JyZWN0CisgIGFic29sdXRlIHBhdGguCisK KyAgSWYgbm8gc291cmNlIGFyY2hpdmUgaXMgYXZhaWxhYmxlLCBQVFhkaXN0IGNhbiBnZXQgdGhl IHNvdXJjZSBmcm9tCisgIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtcy4gJ2dpdCcgYW5kICdzdm4n IGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBOb3RlCisgIHRoYXQgdGhpcyBjYW5ub3QgYmUgdXNl ZCB0byBmb2xsb3cgYSBicmFuY2ghIFBUWGRpc3Qgd2lsbCBjcmVhdGUgdGhlCisgIGFyY2hpdmUg ZGVmaW5lZCBgYDxQS0c+X1NPVVJDRWBgIGFuZCB1c2UgaXQgaWYgYXZhaWxhYmxlLgorCisgIEdp dCBVUkxzIG11c3QgZWl0aGVyIHN0YXJ0IHdpdGggJ2dpdDovLycgb3IgZW5kIHdpdGggJy5naXQn LiBUaGV5IGhhdmUgYQorICBtYW5kYXRvcnkgYGB0YWc9PHRhZ25hbWU+YGAgb3B0aW9uLiBSZWZl ciA6cmVmOmBnaXRTb3VyY2VzYCBob3cgdG8gbWFrZSB1c2Ugb2YKKyAgaXQuCisKKyAgU3ZuIFVS THMgbXVzdCBzdGFydCB3aXRoICdzdm46Ly8nLiBUaGV5IGhhdmUgYSBtYW5kYXRvcnkKKyAgYGBy ZXY9cjxudW1iZXI+YGAgb3B0aW9uLgorCitgYDxQS0c+X1NPVVJDRWBgCisgIFRoZSBsb2NhdGlv biBvZiB0aGUgZG93bmxvYWRlZCBzb3VyY2UgYXJjaGl2ZS4gVGhlcmUgc2hvdWxkIGJlIG5vIHJl YXNvbgorICB0byBzZXQgdGhpcyB0byBhbnl0aGluZyBvdGhlciB0aGFuCisgIGBgJChTUkNESVIp LyQoPFBLRz4pLiQoPFBLRz5fU1VGRklYKWBgLgorCisgIEZvciBsb2NhbCBVUkxzIChgYGZpbGU6 Ly9gYCBvciBgYGxuZGlyOi8vYGApIGBgPFBLRz5fU09VUkNFYGAgbXVzdCBub3QgYmUKKyAgc2V0 LgorCitgYDxQS0c+X0RJUmBgCisgIFRoaXMgaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc291 cmNlIGFyY2hpdmUgaXMgZXh0cmFjdGVkLiBJbiBtb3N0CisgIGNhc2VzIHRoaXMgaXMgc2V0IHRv IGBgJChCVUlMRERJUikvJCg8UEtHPilgYC4gSG93ZXZlciwgaWYgdHdvIHBhY2thZ2VzCisgIHVz ZSB0aGUgc2FtZSBzb3VyY2UgYXJjaGl2ZSwgdGhlbiBzb21ldGhpbmcgZWxzZSBtdXN0IGJlIHVz ZWQgdG8gbWFrZQorICBzdXJlIHRoYXQgdGhleSB1c2UgZGlmZmVyZW50IGRpcmVjdG9yaWVzLiBT ZWUgdGhlIHJ1bGVzIGZvciAnZ2RiJyBhbmQKKyAgJ2dkYnNlcnZlcicgZm9yIGFuIGV4YW1wbGUu CisKK2BgPFBLRz5fTElDRU5TRWBgCisgIFRoZSBsaWNlbnNlIG9mIHRoZSBwYWNrYWdlLiBUaGUg U1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzIHNob3VsZCBiZSB1c2VkCisgIGhlcmUuIFVzZSBgYHBy b3ByaWV0YXJ5YGAgZm9yIHByb3ByaWV0YXJ5IHBhY2thZ2VzIGFuZCBgYGlnbm9yZWBgIGZvcgor ICBwYWNrYWdlcyB3aXRob3V0IHRoZWlyIG93biBsaWNlbnNlLCBlLmcuIG1ldGEgcGFja2FnZXMg b3IgcGFja2FnZXMgdGhhdAorICBvbmx5IGluc3RhbGwgZmlsZXMgZnJvbSBgYHByb2plY3Ryb290 L2BgLgorCitgYDxQS0c+X0xJQ0VOU0VfRklMRVNgYAorICBBIHNwYWNlIHNlcGFyYXRlZCBsaXN0 IG9mIFVSTHMgb2YgbGljZW5zZSB0ZXh0IGZpbGVzLiBUaGUgVVJMcyBtdXN0IGJlCisgIGBgZmls ZTovL2BgIFVSTHMgcmVsYXRpdmUgdG8gYGA8UEtHPl9ESVJgYC4gQWJzb2x1dGUgVVJMcyB1c2lu ZworICBgYCQoUFRYRElTVF9XT1JLU1BBQ0UpYGAgY2FuIGJlIHVzZWQgaW4gY2FzZSB0aGUgbGlj ZW5zZSB0ZXh0IGlzIG1pc3NpbmcKKyAgaW4gdGhlIHVwc3RyZWFtIGFyY2hpdmUuIEFyZ3VtZW50 cyBhcmUgYXBwZW5kZWQgd2l0aCAnOycgYXMgc2VwYXJhdG9yLgorICBUaGUgYGBtZDU9PG1kNXN1 bT5gYCBhcmd1bWVudCBpcyBtYW5kYXRvcnkuIEl0IGRlZmluZXMgdGhlIG1kNSBjaGVja3N1bQor ICBvZiB0aGUgZnVsbCBsaWNlbnNlIHRleHQuIGBgc3RhcnRsaW5lPTxudW1iZXI+O2VuZGxpbmU9 PG51bWJlcj5gYCBjYW4gYmUKKyAgdXNlZCBpbiBjYXNlIHRoZSBzcGVjaWZpZWQgZmlsZSBjb250 YWlucyBtb3JlIHRoYW4ganVzdCB0aGUgbGljZW5zZSB0ZXh0LAorICBlLmcuIGlmIHRoZSBsaWNl bnNlIGlzIGluIHRoZSBoZWFkZXIgb2YgYSBzb3VyY2UgZmlsZS4gRm9yIG5vbiBBU0NJSSBvcgor ICBVVEYtOCBmaWxlcyB0aGUgZW5jb2RpbmcgY2FuIGJlIHNwZWNpZmllZCB3aXRoIGBgZW5jb2Rp bmc9PGVuYz5gYC4KKworRm9yIG1vc3QgcGFja2FnZXMgdGhlIHZhcmlhYmxlcyBkZXNjcmliZWQg YWJvdmUgYXJlIHVuZGVmaW5lZCBieSBkZWZhdWx0LgorSG93ZXZlciwgZm9yIGNyb3NzIGFuZCBo b3N0IHBhY2thZ2VzIHRoZXNlIHZhcmlhYmxlcyBkZWZhdWx0IHRvIHRoZSB2YWx1ZQorb2YgdGhl IGNvcnJlc3BvbmRpbmcgdGFyZ2V0IHBhY2thZ2UgaWYgaXQgZXhpc3RzLgorCitgYDxQS0c+X0NP TkZJR2BgCisgIFRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGEgY29uZmlndXJhdGlvbiBmaWxlIG9m IHNvbWUga2luZCBmb3IgdGhlCisgIHBhY2thZ2VzLiBGb3IgcGFja2FnZXMgd2l0aCBgYDxQS0c+ X0NPTkZfVE9PTGBgIHNldCB0byBgYGtjb25maWdgYCB0aGUKKyAgdmFyaWFibGUgbXVzdCBzcGVj aWZ5IGFuIGFic29sdXRlIHBhdGggdG8gdGhlIGtjb25maWcgZmlsZS4gRm9yIGltYWdlCisgIHBh Y2thZ2VzIHRoYXQgdXNlIGdlbmltYWdlLCBQVFhkaXN0IHdpbGwgbG9vayBmb3IKKyAgYGBjb25m aWcvaW1hZ2VzLyQoPFBLRz5fQ09ORklHKWBgIGluIHRoZSBCU1AgYW5kIFBUWGRpc3QgaW4gdGhl IHVzdWFsCisgIHNlYXJjaCBvcmRlci4KKworYGA8UEtHPl9TVFJJUF9MRVZFTGBgCisgIFdoZW4g UFRYZGlzdCBleHRyYWN0cyBzb3VyY2UgYXJjaGl2ZXMsIGl0IHdpbGwgY3JlYXRlIGBgPFBLRz5f RElSYGAKKyAgZmlyc3QgYW5kIHRoZW4gZXh0cmFjdHMgdGhlIGFyY2hpdmUgdGhlcmUuIElmIGBg PFBLRz5fU1RSSVBfTEVWRUxgYCBpcworICBzZXQgdG8gMSAodGhlIGRlZmF1bHQpIHRoZW4gUFRY ZGlzdCByZW1vdmVzIHRoZSBmaXJzdCBkaXJlY3RvcnkgbGV2ZWwKKyAgZGVmaW5lZCBpbnNpZGUg dGhlIGFyY2hpdmUuIEZvciBtb3N0IHBhY2thZ2VzIHRoYXQgdGhpcyBpcyB0aGUgc2FtZSBhcwor ICBqdXN0IGV4dHJhY3RpbmcgdGhlIGFyY2hpdmUuIEhvd2V2ZXIsIHRoaXMgaXMgdXNlZnVsIGZv ciBwYWNrYWdlcyB3aXRoCisgIGJhZGx5IG5hbWVkIHRvcC1sZXZlbCBkaXJlY3RvcmllcyBvciBw YWNrYWdlcyB3aGVyZSB0aGUgZGlyZWN0b3J5IG11c3QgYmUKKyAgcmVuYW1lZCB0byBhdm9pZCBj b2xsaXNpb25zIChlLmcuIGdkYnNlcnZlcikuCisKKyAgVGhlIG1haW4gdXNlLWNhc2UgZm9yIGBg PFBLRz5fU1RSSVBfTEVWRUxgYCBpcyB0byBzZXQgaXQgdG8gMCBmb3IKKyAgcGFja2FnZXMgd2l0 aG91dCBhIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisKKyAgSW4gdGhlb3J5IGBgPFBLRz5fU1RSSVBf TEVWRUxgYCBjb3VsZCBiZSBzZXQgdG8gMiBvciBtb3JlIHRvIHJlbW92ZSBtb3JlCisgIHRoYW4g b25lIGRpcmVjdG9yeSBsZXZlbC4KKworYGA8UEtHPl9CVUlMRF9PT1RgYAorICBJZiB0aGlzIGlz IHNldCB0byBgYFlFU2BgIHRoZW4gUFRYZGlzdCB3aWxsIGJ1aWxkIHRoZSBwYWNrYWdlIG91dCBv ZgorICB0cmVlLiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBhdXRvY29uZiwgcW1ha2UgYW5k IGNtYWtlIHBhY2thZ2VzLiBUaGUKKyAgZGVmYXVsdCBpcyBgYFlFU2BgIGZvciBjbWFrZSBwYWNr YWdlcyBhbmQgYGBOT2BgIGZvciBldmVyeXRoaW5nIGVsc2UuCisgIEl0IHdpbGwgdXNlIGBgJCg8 UEtHPl9ESVIpLWJ1aWxkYGAgYXMgYnVpbGQgZGlyZWN0b3J5LgorCisgIFRoaXMgaXMgZXNwZWNp YWxseSB1c2VmdWwgZm9yIGBgZmlsZTovL2BgIFVSTFMgdGhhdCBwb2ludCB0byBkaXJlY3Rvcmll cyB0bworICBrZWVwIHRoZSBzb3VyY2UgdHJlZSBmcmVlIG9mIGJ1aWxkIGZpbGVzLgorCitgYDxQ S0c+X1NVQkRJUmBgCisgIFRoaXMgaXMgYSBkaXJlY3RvcnkgcmVsYXRpdmUgdG8gYGA8UEtHPl9E SVJgYC4gSWYgc2V0LCBhbGwgYnVpbGQKKyAgb3BlcmF0aW9ucyBhcmUgZXhlY3V0ZWQgaW4gdGhp cyBkaXJlY3RvcnkgaW5zdGVhZC4gQnkgZGVmYXVsdAorICBgYDxQS0c+X1NVQkRJUmBgIGlzIHVu ZGVmaW5lZCBzbyBhbGwgb3BlcmF0aW9ucyBhcmUgZXhlY3V0ZWQgaW4gdGhlCisgIHRvcC1sZXZl bCBkaXJlY3RvcnkuCisKK0J1aWxkIEVudmlyb25tZW50IGZvciBhbGwgU3RhZ2VzCiteXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitgYDxQS0c+X1BBVEhgYAorICBUaGlzIHZhcmlh YmxlIGRlZmluZXMgdGhlIFBBVEggdXNlZCBieSBhbGwgYnVpbGQgc3RhZ2VzLiBJdCBpcyBldmFs dWF0ZWQKKyAgYXMgaXMsIHNvIGl0IG11c3Qgc3RhcnQgd2l0aCBgYFBBVEg9YGAuIElmIHVuZGVm aW5lZCwgUFRYZGlzdCB3aWxsIHVzZQorICBgYFBBVEg9JChDUk9TU19QQVRIKWBgIGZvciB0YXJn ZXQgcGFja2FnZXMgYGBQQVRIPSQoSE9TVF9QQVRIKWBgIGZvciBob3N0CisgIHBhY2thZ2VzIGFu ZCBgYFBBVEg9JChIT1NUX0NST1NTX1BBVEgpYGAgZm9yIGNyb3NzIHBhY2thZ2VzLiBJdCBtdXN0 IGJlCisgIHNldCBieSBwYWNrYWdlcyB0aGF0IHVzZSB0aGUgdmFyaWFibGUgbG9jYWxseSBpbiB0 aGUgbWFrZSBmaWxlIG9yIGlmIG1vcmUKKyAgZGlyZWN0b3JpZXMgYXJlIGFkZGVkLCBlLmcuIHRv CisgIGBgUEFUSD0kKFBUWERJU1RfU1lTUk9PVF9DUk9TUykvYmluL3F0NTokKENST1NTX1BBVEgp YGAgZm9yIHBhY2thZ2VzIHRoYXQKKyAgdXNlIHFtYWtlIGZyb20gUXQ1LgorCitgYDxQS0c+X0NG TEFHU2BgLCBgYDxQS0c+X0NQUEZMQUdTYGAsIGBgPFBLRz5fTERGTEFHU2BgCisgIENvbXBpbGVy LCBwcmVwcm9jZXNzb3IgYW5kIGxpbmtlciBhcmUgbmV2ZXIgY2FsbGVkIGRpcmVjdGx5IGluIFBU WGRpc3QuCisgIEluc3RlYWQsIHdyYXBwZXIgc2NyaXB0cyBhcmUgY2FsbGVkIHRoYXQgZXhwYW5k IHRoZSBjb21tYW5kIGxpbmUgYmVmb3JlCisgIGNhbGxpbmcgdGhlIGFjdHVhbCB0b29sLiBUaGVz ZSB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgdG8gaW5mbHVlbmNlIHRoZXNlCisgIHdyYXBwZXJzLiBU aGUgc3BlY2lmaWVkIGZsYWdzIGFyZSBhZGRlZCB0byB0aGUgY29tbWFuZCBsaW5lIHdoZW4KKyAg YXBwcm9wcmlhdGUuIEluIG1vc3QgY2FzZXMgdGhpcyBpdCB0aGUgcHJlZmVycmVkIHdheSB0byBh ZGQgYWRkaXRpb25hbAorICBmbGFncy4gQWRkaW5nIHRoZW0gdmlhIGVudmlyb25tZW50IHZhcmlh YmxlcyBvciBgYG1ha2VgYCBhcmd1bWVudHMgY2FuCisgIGhhdmUgdW5leHBlY3RlZCBzaWRlIGVm ZmVjdHMsIHN1Y2ggYXMgYXMgb3ZlcndyaXRpbmcgZXhpc3RpbmcgZGVmYXVsdHMuCisKK2BgPFBL Rz5fV1JBUFBFUl9CTEFDS0xJU1RgYAorICBQVFhkaXN0IGhhcyBzZXZlcmFsIG9wdGlvbnMgaW4g dGhlIHBsYXRmb3JtY29uZmlnIHRoYXQgaW5qZWN0IG9wdGlvbnMgaW4KKyAgdGhlIGNvbXBpbGVy IGNvbW1hbmQgbGluZS4gVGhpcyBpcyB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYWRkIGhhcmRlbmlu ZworICBvcHRpb25zIG9yIGNoYW5nZSB0aGUgZGVidWcgb3B0aW9ucy4gVGhpcyBjYW4gb2NjYXNp b25hbGx5IGNhdXNlIHByb2JsZW1zCisgIGZvciBwYWNrYWdlcyB0aGF0IHVzZSB0aGUgY29tcGls ZXIgaW4gY2VydGFpbiB3YXlzLCBzdWNoIGFzIHRoZSBMaW51eAorICBrZXJuZWwgb3IgdmFyaW91 cyBib290bG9hZGVycy4gV2l0aCB0aGlzIHZhcmlhYmxlIGEgcGFja2FnZSBjYW4gZGlzYWJsZQor ICBpbmRpdmlkdWFsIG9wdGlvbnMgYnkgc2V0dGluZyBpdCB0byBhIHNwYWNlIHNlcGFyYXRlZCBs aXN0IG9mIHRoZQorICBjb3JyZXNwb25kaW5nIEtjb25maWcgc3ltYm9scyAod2l0aG91dCB0aGUg YGBQVFhDT05GX2BgIHByZWZpeCkuCisKK1ByZXBhcmUgU3RhZ2UKK15eXl5eXl5eXl5eXl4KKwor YGA8UEtHPl9DT05GX0VOVmBgCisgIFRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIHByZXBhcmUgc3Rh Z2UuIElmIHVuZGVmaW5lZCwgUFRYZGlzdCB3aWxsIHVzZQorICBgYCQoQ1JPU1NfRU5WKWBgIGZv ciB0YXJnZXQgcGFja2FnZXMsIGBgJChIT1NUX0VOVilgYCBmb3IgaG9zdCBwYWNrYWdlcworICBh bmQgYGAkKEhPU1RfQ1JPU1NfRU5WKWBgIGZvciBjcm9zcyBwYWNrYWdlcy4gSXQgbXVzdCBiZSBz ZXQgYnkgcGFja2FnZXMKKyAgdGhhdCB1c2UgdGhlIHZhcmlhYmxlIGxvY2FsbHkgaW4gdGhlIG1h a2UgZmlsZSBvciBpZiBleHRyYSB2YXJpYWJsZXMgYXJlCisgIGFkZGVkLiBJbiB0aGlzIGNhc2Ug dGhlIGRlZmluaXRpb24gc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGRlZmF1bHQgdmFsdWUuCisKK2Bg PFBLRz5fQ09ORl9UT09MYGAKKyAgVGhpcyB2YXJpYWJsZSBkZWZpbmVzIHdoYXQgdG9vbCBpcyB1 c2VkIHRvIGNvbmZpZ3VyZSB0aGUgcGFja2FnZSBpbiB0aGUKKyAgcHJlcGFyZSBzdGFnZS4gUG9z c2libGUgdmFsdWVzIGFyZToKKworICAgLSBgYE5PYGAgdG8gZG8gbm90aGluZyBpbiB0aGUgcHJl cGFyZSBzdGFnZS4KKyAgIC0gYGBhdXRvY29uZmBgIGZvciBwYWNrYWdlcyB0aGF0IHVzZSBhdXRv Y29uZgorICAgLSBgYHFtYWtlYGAgZm9yIHFtYWtlIGJhc2VkIHBhY2thZ2VzLiBOb3RlOiB0aGUg cmVxdWlyZWQgUXQgdmVyc2lvbiBtdXN0CisgICAgIGJlIHNlbGVjdGVkLgorICAgLSBgYGNtYWtl YGAgZm9yIGNtYWtlIGJhc2VkIHBhY2thZ2VzLiBOb3RlIGBgSE9TVF9DTUFLRWBgIG11c3QgYmUK KyAgICAgc2VsZWN0ZWQgdG8gZW5zdXJlLCB0aGF0IGNtYWtlIGlzIGF2YWlsYWJsZSBmb3IgY29u ZmlndXJhdGlvbi4KKyAgIC0gYGBrY29uZmlnYGAgZm9yIGtjb25maWcgYmFzZWQgcGFja2FnZXMu IE5vdGUgYGA8UEtHPl9DT05GSUdgYCBtdXN0IGJlCisgICAgIHNldCBhcyBkZXNjcmliZWQgYWJv dmUuCisgICAtIGBgcGVybGBgIGZvciBwZXJsIG1vZHVsZXMuCisgICAtIGBgcHl0aG9uYGAgb3Ig YGBweXRob24zYGAgZm9yIFB5dGhvbiBwYWNrYWdlcyB3aXRoIGEgbm9ybWFsIHNldHVwLnB5Lgor CitgYDxQS0c+X0NPTkZfT1BUYGAKKyAgVGhpcyB2YXJpYWJsZSBhZGRzIGFyZ3VtZW50cyB0byB0 aGUgY29tbWFuZC1saW5lIG9mIHRoZSBjb25maWd1cmF0aW9uCisgIHRvb2wuIElmIHVuZGVmaW5l ZCwgUFRYZGlzdCB3aWxsIHVzZSBhIGRlZmF1bHQgdmFsdWUgdGhhdCBkZXBlbmRzIG9uIHRoZQor ICBjb25maWd1cmF0aW9uIHRvb2wgb2YgdGhlIHBhY2thZ2UuIFRoaXMgZGVmYXVsdCB2YWx1ZSBz aG91bGQgYWxzbyBiZSB1c2VkCisgIHdoZW4gYWRkaW5nIGFkZGl0aW9uYWwgb3B0aW9ucy4gVGhl IGZvbGxvd2luZyBkZWZhdWx0cyBleGlzdDoKKworICAgLSBhdXRvY29uZjoKKyAgICAgYGAkKENS T1NTX0FVVE9DT05GX1VTUilgYC9gYCQoSE9TVF9BVVRPQ09ORilgYC9gYCQoSE9TVF9DUk9TU19B VVRPQ09ORilgYAorICAgICBmb3IgdGFyZ2V0L2hvc3QvY3Jvc3MgcGFja2FnZXMuCisgICAtIGNt YWtlOiBgYCQoQ1JPU1NfQ01BS0VfVVNSKWBgL2BgJChIT1NUX0NNQUtFX09QVClgYCBmb3IgdGFy Z2V0L2hvc3QKKyAgICAgcGFja2FnZXMuIENyb3NzIHBhY2thZ2VzIGNhbm5vdCBiZSBidWlsdCB3 aXRoIGNtYWtlCisgICAtIHFtYWtlOiBgYCQoQ1JPU1NfUU1BS0VfT1BUKWBgIGZvciBob3N0IHBh Y2thZ2VzLiBIb3N0IGFuZCBjcm9zcworICAgICBwYWNrYWdlcyBjYW5ub3QgYmUgYnVpbHQgd2l0 aCBxbWFrZS4KKworICBBbGwgb3RoZXIgY29uZmlndXJhdGlvbiB0b29scyBoYXZlIG5vIGRlZmF1 bHQgb3B0aW9ucy4gVGhpcyB2YXJpYWJsZSBpcworICBpZ25vcmVkIGZvciBrY29uZmlnIGFuZCBw eXRob24vcHl0aG9uMy4KKworLi4gX3ZhcnNfY29tcGlsZToKKworQ29tcGlsZSBTdGFnZQorXl5e Xl5eXl5eXl5eXgorCitgYDxQS0c+X01BS0VfRU5WYGAKKyAgVGhpcyB2YXJpYWJsZXMgZGVmaW5l cyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGNvbXBpbGUKKyAgc3Rh Z2UuIEluIG1vc3QgY2FzZXMgdGhpcyB2YXJpYWJsZSByZW1haW5zIHVuZGVmaW5lZCBiZWNhdXNl IGFsbAorICBuZWNlc3NhcnkgZGVmaW5lcyBhcmUgcGlja2VkIHVwIGluIHRoZSBwcmVwYXJlIHN0 YWdlLiBGb3IgcHl0aG9uL3B5dGhvbjMKKyAgcGFja2FnZXMgUFRYZGlzdCB3aWxsIHVzZSB0aGUg ZGVmYXVsdCB2YWx1ZSBmcm9tIGBgPFBLRz5fQ09ORl9FTlZgYC4KKyAgRm9yIHBhY2thZ2VzIHdp dGhvdXQgY29uZmlndXJhdGlvbiB0b29sIHRoaXMgbXVzdCBiZSBzZXQgY29ycmVjdGx5LAorICB1 c3VhbGx5IGJhc2VkIG9uIHRoZSBgYDxQS0c+X0NPTkZfRU5WYGAgZGVmYXVsdCB2YWx1ZXMsIGUs Zy4KKyAgYGAkKENST1NTX0VOVilgYCBmb3IgdGFyZ2V0IHBhY2thZ2VzLgorCitgYDxQS0c+X01B S0VfT1BUYGAKKyAgVGhpcyB2YXJpYWJsZXMgZGVmaW5lcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMg dG8gYmUgZm9yd2FyZGVkIHRvIGBgbWFrZWBgIGluCisgIG9yZGVyIHRvIGJ1aWxkIHRoZSBwYWNr YWdlLiBJdCBkZWZhdWx0cyB0byBub3RoaW5nIHRvIGxldCBgYG1ha2VgYCB0cmFkaXRpb25hbGx5 CisgIGJ1aWxkIHRoZSBmaXJzdCBkZWZpbmVkIHRhcmdldC4KKworYGA8UEtHPl9NQUtFX1BBUmBg CisgIFRoaXMgdmFyaWFibGVzIGluZm9ybXMgUFRYZGlzdCwgaWYgdGhpcyBwYWNrYWdlIGNhbiBi ZSBidWlsdCBpbiBwYXJhbGxlbC4gU29tZQorICAobW9zdGx5IHZlcnkgc21hcnQgc2VsZm1hZGUp IGJ1aWxkc3lzdGVtcyBmYWlsIGRvaW5nIHNvLiBJbiB0aGlzIGNhc2UgdGhpcworICB2YXJpYWJs ZSBjYW4gYmUgc2V0IHRvIGBgTk9gYC4gUFRYZGlzdCB3aWxsIHRoZW4gYnVpbGQgdGhpcyBwYWNr YWdlIHdpdGggb25lCisgIENQVSBvbmx5LiBUaGUgZGVmYXVsdCBpcywgdG8gYnVpbGQgcGFja2Fn ZXMgaW4gcGFyYWxsZWwuCisKKy4uIF92YXJzX2luc3RhbGw6CisKK0luc3RhbGwgU3RhZ2UKK15e Xl5eXl5eXl5eXl4KKworYGA8UEtHPl9JTlNUQUxMX09QVGBgCisgIFRoaXMgdmFyaWFibGUgZGVm YXVsdHMgdG8gYGBpbnN0YWxsYGAgd2hpY2ggaXMgdXNlZCBhcyBhICp0YXJnZXQqIGZvciBgYG1h a2VgYC4KKyAgSXQgY2FuIGJlIG92ZXJ3cml0dGVuIGlmIHRoZSBwYWNrYWdlIG5lZWRzIGEgc3Bl Y2lhbCB0YXJnZXQgdG8gaW5zdGFsbCBpdHMKKyAgcmVzdWx0cy4KKworLi4gX3BrZ19wa2dkaXI6 CisKK2BgPFBLRz5fUEtHRElSYGAKKyAgVGhpcyB2YXJpYWJsZSBtdXN0IG5vdCBiZSBzZXQgYnkg dGhlIHVzZXIuIEl0IGRlZmluZXMgcGFja2FnZQorICBpbnN0YWxsIGRpcmVjdG9yeS4gQWxsIGZp bGVzIHdpbGwgYmUgaW5zdGFsbGVkIHJlbGF0aXZlIHRvIHRoaXMKKyAgZGlyZWN0b3J5LiBJdCBj YW4gYmUgdXNlZCBieSBtYW51YWwgaW5zdGFsbCBzdGFnZXMuIEl0IGlzIGRlZmluZWQgYXMKKyAg YGAkKFBLR0RJUikvJCg8UEtHPilgYCB3aGljaCBleHBhbmRzIHRvCisgIGBgPHBsYXRmb3JtLWRp cj4vcGFja2FnZXMvZm9vLTEuMS4wYGAgb24gb3VyICpmb28qIGV4YW1wbGUuCisKK1RhcmdldGlu c3RhbGwgU3RhZ2UKK15eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlICp0YXJnZXRpbnN0YWxsKiBz dGFnZSBoYXMgbm8gYWRkaXRpb25hbCB2YXJpYWJsZXMuCisKKy4uIF9pbWFnZV9wYWNrYWdlczoK KworSW1hZ2UgUGFja2FnZXMKK15eXl5eXl5eXl5eXl5eCisKK0ltYWdlIHBhY2thZ2VzIHVzZSBh IGRpZmZlcmVudCBzZXQgb2YgdmFyaWFibGVzLiBUaGV5IGhhdmUgdGhlIHNhbWUKK2BgPFBLRz5g YCBhbmQgYGA8UEtHPl9ESVJgYCB2YXJpYWJsZXMgYXMgb3RoZXIgcGFja2FnZXMsIGJ1dCB0aGUg cmVzdCBpcworZGlmZmVyZW50LgorCitgYDxQS0c+X0lNQUdFYGAKKyAgVGhpcyBpcyB0aGUgZmls ZW5hbWUgb2YgdGhlIGltYWdlIHRoYXQgaXMgY3JlYXRlZCBieSB0aGUgcnVsZS4gVGhpcyBpcwor ICB1c3VhbGx5IGBgJChJTUFHRURJUikvPGltYWdlLWZpbGUtbmFtZT5gYC4KKworYGA8UEtHPl9G SUxFU2BgCisgIFRoaXMgaXMgYSBsaXN0IG9mIHRhciBiYWxscyB0aGF0IGFyZSBleHRyYWN0ZWQg dG8gZ2VuZXJhdGUgdGhlIGNvbnRlbnQgb2YKKyAgdGhlIGltYWdlLiBQVFhkaXN0IHdpbGwgYWRk IHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHRvIHRoZXNlIGZpbGVzIHRvCisgIHJlY3JlYXRl IHRoZSBpbWFnZSBhcyBuZWVkZWQuIElmIGEgdGFyIGJhbGwgaXMgY3JlYXRlZCBieSBhbm90aGVy IFBUWGRpc3QKKyAgcGFja2FnZSB0aGVuIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VsZWN0ZWQg aW4gdGhlIG1lbnUgZmlsZS4KKworYGA8UEtHPl9QS0dTYGAKKyAgVGhpcyBpcyBhbm90aGVyIG1l Y2hhbmlzbSB0byBhZGQgZmlsZXMgdG8gdGhlIGltYWdlLiBJdCBjYW4gYmUgdXNlcworICBpbnN0 ZWFkIG9mIG9yIGluIGFkZGl0aW9uIHRvIGBgPFBLRz5fRklMRVNgYC4gSXQgbXVzdCBiZSBzZXQg dG8gYSBsaXN0IG9mCisgIHB0eGRpc3QgcGFja2FnZXMgKHRoZSBsb3dlcmNhc2UgbmFtZSBvZiB0 aGUgcGFja2FnZXMpLiBQVFhkaXN0IHdpbGwgYWRkCisgIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5j aWVzLgorCisgIE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGVuc3VyZSB0aGF0IHRoZSBwYWNrYWdl cyBhcmUgZW5hYmxlZCBvciB0aGF0IGFsbAorICBhbGwgcGFja2FnZSBkZXBlbmRlbmNpZXMgYXJl IHNhdGlzZmllZC4gYGAkKFBUWF9QQUNLQUdFU19JTlNUQUxMKWBgIGNhbgorICBiZSB1c2VkIHRv IHNwZWNpZnkgYWxsIGVuYWJsZWQgcGFja2FnZXMuIE9yIGBgJChjYWxsIHB0eC9jb2xsZWN0aW9u LAorICAkKFBUWERJU1RfV09SS1NQQUNFKS9jb25maWdzLzxjb2xsZWN0aW9uLWZpbGUtbmFtZT4p YGAgY2FuIGJlIHVzZXMgdG8gdG8KKyAgc3BlY2lmeSB0aGUgcGFja2FnZXMgZW5hYmxlZCBieSB0 aGlzIGNvbGxlY3Rpb24uIEluIGJvdGggY2FzZXMgYGA9YGAgbXVzdAorICBiZSB1c2VzIGluc3Rl YWQgb2YgYGA6PWBgIGR1ZSB0byB0aGUgbWFrZWZpbGUgaW5jbHVkZSBvcmRlci4KKworYGA8UEtH Pl9DT05GSUdgYAorICBgYGdlbmltYWdlYGAgcGFja2FnZXMgdXNlIHRoaXMgdG8gc3BlY2lmeSB0 aGUgYGBnZW5pbWFnZWBgIGNvbmZpZ3VyYXRpb24KKyAgZmlsZS4gUFRYZGlzdCB3aWxsIHNlYXJj aCBmb3IgdGhlIHNwZWNpZmllZCBmaWxlIG5hbWUgaW4KKyAgYGBjb25maWcvaW1hZ2VzL2BgIGlu IHRoZSBCU1AsIHBsYXRmb3JtIGFuZCBQVFhkaXN0IGluIHRoZSB1c3VhbCBzZWFyY2gKKyAgb3Jk ZXIuCisKK2BgPFBLRz5fTkZTUk9PVGBgCisgIElmIHRoaXMgaXMgc2V0IHRvIGBgWUVTYGAgdGhl biBQVFhkaXN0IHdpbGwgY3JlYXRlIGEgc3BlY2lhbCBuZnNyb290CisgIGRpcmVjdG9yeSB0aGF0 IGNvbnRhaW5zIG9ubHkgdGhlIGZpbGVzIGZyb20gdGhlIHBhY2thZ2VzIHNwZWNpZmllZCBpbgor ICBgYDxQS0c+X1BLR1NgYC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIG5vcm1hbCBuZnNyb290IGRp cmVjdG9yeSBjb250YWlucworICBjb25mbGljdGluZyBmaWxlcyBmcm9tIG11bHRpcGxlIGltYWdl cy4gVGhlIGNyZWF0ZWQgbmZzcm9vdCBkaXJlY3RvcnkgaXMKKyAgYGA8cGxhdGZvcm0tZGlyPi9u ZnNyb290LzxpbWFnZS1uYW1lPmBgLgorCitgYDxQS0c+X0xBQkVMYGAKKyAgVGhpcyBpcyBhIHRh ciBsYWJlbCB0byBwdXQgb24gYW4gaW1hZ2UuIFRoaXMgaXMgc3VwcG9ydGVkIGJ5CisgIGBgaW1h Z2Utcm9vdC10Z3pgYCBhbmQgaW1hZ2VzIGNyZWF0ZWQgd2l0aCB0aGUgYGBpbWFnZS10Z3pgYCB0 ZW1wbGF0ZS4KZGlmZiAtLWdpdCBhL2RvYy9yZWZfbWFudWFsLnJzdCBiL2RvYy9yZWZfbWFudWFs LnJzdAppbmRleCA0NDQ0ZTAxOTIyMzUuLjY1NDFkYTNlYWEwMCAxMDA2NDQKLS0tIGEvZG9jL3Jl Zl9tYW51YWwucnN0CisrKyBiL2RvYy9yZWZfbWFudWFsLnJzdApAQCAtMSwxNTQ1ICsxLDkgQEAK IFBUWGRpc3QgUmVmZXJlbmNlCiA9PT09PT09PT09PT09PT09PQogCi1WYXJpYWJsZXMgUmVmZXJl bmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBw cm92aWRlZCBieSBQVFhkaXN0IHRvIHNpbXBsaWZ5IGNyZWF0aW5nCi1ydWxlIGZpbGVzLiBFdmVy eSBkZXZlbG9wZXIgc2hvdWxkIHVzZSB0aGVzZSB2YXJpYWJsZXMgaW4gZXZlcnkgc2luZ2xlCi1s aW5lIGluIHRoZSAqKnJ1bGUgZmlsZSoqIHRvIGF2b2lkIGFueSBmdXJ0aGVyIGFkYXB0aW9uIHdo ZW4gZXh0ZXJuYWwgcGF0aHMKLWFyZSBjaGFuZ2VkLgotCi1UbyBnZXQgdGhlaXIgY29udGVudCBy ZWxhdGVkIHRvIHRoZSBjdXJyZW50IHByb2plY3QsIHdlIGNhbiBzaW1wbHkgcnVuCi1hOgotCi06 OgotCi0gICAgJCBwdHhkaXN0IHByaW50IFBUWERJU1RfVE9QRElSCi0gICAgL3Vzci9sb2NhbC9s aWIvcHR4ZGlzdC18cHR4ZGlzdFZlbmRvclZlcnNpb258Ci0KLVJlcGxhY2UgdGhlIGBgUFRYRElT VF9UT1BESVJgYCB3aXRoIG9uZSBvZiB0aGUgb3RoZXIgZ2VuZXJpYyB2YXJpYWJsZXMKLVBUWGRp c3QgcHJvdmlkZXMuCi0KLUdsb2JhbCBWYXJpYWJsZXMKLX5+fn5+fn5+fn5+fn5+fn4KLQotYGBQ VFhESVNUX1RPUERJUmBgCi0gIFBvaW50cyBhbHdheXMgdG8gdGhlIGluc3RhbGxhdGlvbiBkaXJl Y3Rvcnkgb2YgUFRYZGlzdC4KLQotLi4gX3B0eGRpc3Rfd29ya3NwYWNlOgotCi1gYFBUWERJU1Rf V09SS1NQQUNFYGAKLSAgRXZlcnl0aGluZyB0aGF0IHJlZmVyZW5jZXMgYGBQVFhESVNUX1dPUktT UEFDRWBgIHdpbGwgdXNlIHRoZSBhY3RpdmUKLSAgcHJvamVjdHPigJlzIGZvbGRlci4KLQotYGBQ VFhESVNUX1NZU1JPT1RfQ1JPU1NgYAotICBgYFBUWERJU1RfU1lTUk9PVF9DUk9TU2BgIHBvaW50 cyB0byBhIGRpcmVjdG9yeSB0cmVlIGFsbCBjcm9zcyByZWxldmFudAotICBleGVjdXRhYmxlcywg bGlicmFyaWVzIGFuZCBoZWFkZXIgZmlsZXMgYXJlIGluc3RhbGxlZCB0byBpbiB0aGUgY3VycmVu dAotICBwcm9qZWN0LiBBbGwgb2YgdGhlIHByb2plY3TigJlzIHBhY2thZ2VzIGJ1aWx0IGZvciB0 aGUgaG9zdCB0byBjcmVhdGUgZGF0YQotICBmb3IgdGhlIHRhcmdldCBhcmUgc2VhcmNoaW5nIGlu IHRoaXMgZGlyZWN0b3J5IHRyZWUgZm9yIHRoZWlyCi0gIGRlcGVuZGVuY2llcyAoZXhlY3V0YWJs ZXMsIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcykuIFVzZQotICBgYCQoUFRYRElTVF9TWVNST09U X0NST1NTKS9iaW5gYCB0byBpbnN0YWxsIGV4ZWN1dGFibGVzLAotICBgYCQoUFRYRElTVF9TWVNS T09UX0NST1NTKS9pbmNsdWRlYGAgZm9yIGhlYWRlciBmaWxlcyBhbmQKLSAgYGAkKFBUWERJU1Rf U1lTUk9PVF9DUk9TUykvbGliYGAgZm9yIGxpYnJhcmllcy4KLQotYGBQVFhESVNUX1NZU1JPT1Rf SE9TVGBgCi0gIGBgUFRYRElTVF9TWVNST09UX0hPU1RgYCBwb2ludHMgdG8gYSBkaXJlY3Rvcnkg dHJlZSBhbGwgaG9zdCByZWxldmFudAotICBleGVjdXRhYmxlcywgbGlicmFyaWVzIGFuZCBoZWFk ZXIgZmlsZXMgYXJlIGluc3RhbGxlZCB0by4gQWxsIHByb2plY3TigJlzCi0gIHBhY2thZ2VzIGJ1 aWx0IGZvciB0aGUgaG9zdCBhcmUgc2VhcmNoaW5nIGluIHRoaXMgZGlyZWN0b3J5IHRyZWUgZm9y Ci0gIHRoZWlyIGRlcGVuZGVuY2llcyAoZXhlY3V0YWJsZXMsIGhlYWRlciBhbmQgbGlicmFyeSBm aWxlcykuIFVzZQotICBgYCQoUFRYRElTVF9TWVNST09UX0hPU1QpL2JpbmBgIHRvIGluc3RhbGwg ZXhlY3V0YWJsZXMsCi0gIGBgJChQVFhESVNUX1NZU1JPT1RfSE9TVCkvaW5jbHVkZWBgIGZvciBo ZWFkZXIgZmlsZXMgYW5kCi0gIGBgJChQVFhESVNUX1NZU1JPT1RfSE9TVCkvbGliYGAgZm9yIGxp YnJhcmllcy4KLQotYGBQVFhESVNUX1NZU1JPT1RfVEFSR0VUYGAKLSAgYGBQVFhESVNUX1NZU1JP T1RfVEFSR0VUYGAgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IHRyZWUgYWxsIHRhcmdldAotICByZWxl dmFudCBsaWJyYXJpZXMgYW5kIGhlYWRlciBmaWxlcyBhcmUgaW5zdGFsbGVkIHRvLiBBbGwgcHJv amVjdOKAmXMKLSAgcGFja2FnZXMgYnVpbHQgZm9yIHRoZSB0YXJnZXQgYXJlIHNlYXJjaGluZyBp biB0aGlzIGRpcmVjdG9yeSB0cmVlIGZvcgotICB0aGVpciBkZXBlbmRlbmNpZXMgKGhlYWRlciBh bmQgbGlicmFyeSBmaWxlcykuIFRoZXNlIGZpbGVzIGFyZSBmb3IKLSAgY29tcGlsZSB0aW1lIG9u bHkgKGZvciBleGFtcGxlIHRvIGxpbmsgYSB0YXJnZXQgZXhlY3V0YWJsZSBhZ2FpbnN0IGEKLSAg dGFyZ2V0IGxpYnJhcnkpLCBub3QgZm9yIHJ1bi10aW1lISBVc2UKLSAgYGAkKFBUWERJU1RfU1lT Uk9PVF9UQVJHRVQpL2luY2x1ZGVgYCBmb3IgaGVhZGVyIGZpbGVzIGFuZAotICBgYCQoUFRYRElT VF9TWVNST09UX1RBUkdFVCkvbGliYGAgZm9yIGxpYnJhcmllcy4KLQotT3RoZXIgdXNlZnVsIHZh cmlhYmxlczoKLQotYGBDUk9TU19QQVRIYGAKLSAgVXNlIHRvIGZpbmQgY3Jvc3MgdG9vbHMuIFRo aXMgcGF0aCBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIGFueXRoaW5nIHRoYXQKLSAgZGVwZW5kcyBv biB0aGUgdGFyZ2V04oCZcyBhcmNoaXRlY3R1cmUsIGJ1dCBuZWVkcyBzb21ldGhpbmcgcnVubmlu ZyBvbiB0aGUKLSAgaG9zdCB0byBkbyB0aGUgam9iLiBFeGFtcGxlczoKLQotICAqKkNyZWF0aW5n IGEgVUJJIGltYWdlIGZyb20gdGhlIHRhcmdldOKAmXMgcm9vdCBmaWxlc3lzdGVtKioKLSAgICAg IFRoaXMgd2lsbCBuZWVkIGEgdG9vbCBydW5uaW5nIG9uIHRoZSBob3N0LCBidXQgaXQgd2lsbCBj cmVhdGUgZGF0YQotICAgICAgb3IgY29kZSB0aGF0IHJ1bnMgb24gb3IgaXMgdXNlZCBvbiB0aGUg dGFyZ2V0Ci0KLSAgKipCdWlsZGluZyBhIGxpYnJhcnkgZm9yIHRoZSB0YXJnZXQqKgotICAgICAg SWYgdGhpcyBsaWJyYXJ5IG5lZWRzIG90aGVyIHJlc291cmNlcyB0byBiZSBidWlsdCAob3RoZXIg bGlicmFyaWVzKQotICAgICAgaXRzIGBgY29uZmlndXJlYGAgZmluZHMgdGhlIHJpZ2h0IGluZm9y bWF0aW9uIGluIHRoaXMgcGF0aC4KLQotYGBIT1NUX1BBVEhgYAotICBVc2VkIHRvIGZpbmQgaG9z dCB0b29scy4gVGhpcyBwYXRoIG11c3QgYmUgdXNlZCB0byBjcmVhdGUgYW55dGhpbmcgdGhhdAot ICBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgYXJjaGl0ZWN0dXJlLgotCi1gYFJPT1RESVJgYAotICBg YFJPT1RESVJgYCBwb2ludHMgdG8gdGhlIHJvb3Qgb2YgdGhlIHRhcmdldOKAmXMgcm9vdCBmaWxl c3lzdGVtIGluIHRoZQotICBjdXJyZW50IHByb2plY3QuIFVzZWQgaW4gdmVyeSByYXJlIGNhc2Vz ICh0byBjcmVhdGUgc3RyYW5nZSBwYWNrYWdlcwotICBiYXNlZCBvbiBkYXRhIGluIHRhcmdldOKA mXMgcm9vdCBmaWxlc3lzdGVtIGZvciBleGFtcGxlKS4KLQotYGBQVFhDT05GX1BMQVRGT1JNYGAK LSAgYGBQVFhDT05GX1BMQVRGT1JNYGAgZXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgY3VycmVu dGx5IHNlbGVjdGVkCi0gIHBsYXRmb3JtLiBUaGlzIG5hbWUgaXMgdXNlZCBpbiB2YXJpb3VzIGZp bGUgbmFtZXMgYW5kIHBhdGhzLgotCi1gYFBUWERJU1RfUExBVEZPUk1TVUZGSVhgYAotICBgYFBU WERJU1RfUExBVEZPUk1TVUZGSVhgYCBleHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50 bHkgc2VsZWN0ZWQKLSAgcGxhdGZvcm0sIGJ1dCB3aXRoIGEgbGVhZGluZyBkb3QuIFRoaXMgaXMg dXNlZCBpbiB2YXJpb3VzIGZpbGVzIFBUWGRpc3QKLSAgc2hvdWxkIHNlYXJjaCBmb3IuCi0KLS4u IF9wdHhkaXN0X3BsYXRmb3JtY29uZmlnZGlyOgotCi1gYFBUWERJU1RfUExBVEZPUk1DT05GSUdE SVJgYAotICBgYFBUWERJU1RfUExBVEZPUk1DT05GSUdESVJgYCBwb2ludHMgdG8gdGhlIGRpcmVj dG9yeSB0cmVlIG9mIHRoZQotICBjdXJyZW50bHkgc2VsZWN0ZWQgcGxhdGZvcm0uIFRoaXMgcGF0 aCBpcyB1c2VkIGluIHZhcmlvdXMgc2VhcmNoCi0gIGZ1bmN0aW9ucy4KLQotYGBQVFhESVNUX1BM QVRGT1JNRElSYGAKLSAgYGBQVFhESVNUX1BMQVRGT1JNRElSYGAgcG9pbnRzIHRvIHRoZSBkaXJl Y3RvcnkgYnVpbGQgdHJlZSBvZiB0aGUKLSAgY3VycmVudGx5IHNlbGVjdGVkIHBsYXRmb3JtLgot Ci1gYFBBQ0tBR0VTYGAsIGBgUEFDS0FHRVMteWBgLCBgYFBBQ0tBR0VTLW1gYAotICBgYFBBQ0tB R0VTYGAgaXMgYSBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBsb3dlcmNhc2UgcGFja2FnZSBuYW1l cyB0aGF0IGFyZQotICBidWlsdCBhbmQgaW5zdGFsbGVkIGR1cmluZyB0aGUgUFRYZGlzdCBidWls ZCBydW4sIGFuZCBpbnN0YWxsZWQgaW50byB0aGUKLSAgdGFyZ2V0IHJvb3QgZmlsZXN5c3RlbSB3 aGVuIGJ1aWxkaW5nIGltYWdlcy4KLQotICBUaGUgYGAteWBgIHZhcmlhbnQgY29udGFpbnMgb25s eSB0aG9zZSBwYWNrYWdlcyB0aGF0IGFyZSBzZWxlY3RlZCB3aXRoCi0gIGBgUFRYQ09ORl88UEtH Pj15YGAsIHdoaWxlIHRoZSBgYC1tYGAgdmFyaWFudCBjb250YWlucyBvbmx5IHRob3NlIHdoaWNo IGFyZQotICBzZWxlY3RlZCB3aXRoIGBgUFRYQ09ORl88UEtHPj1tYGAgKHVzZWQgZm9yIGNvbGxl Y3Rpb25zKS4KLSAgQSB0YXJnZXQgcGFja2FnZSBydWxlIHVzdWFsbHkgYWRkcyBpdHMgbmFtZSB0 byBvbmUgb2YgdGhvc2UgdmFyaWFibGVzIGlmIGl0Ci0gIGhhcyBiZWVuIHNlbGVjdGVkLgotICBU aGUgdW5pb24gb2YgdGhvc2UgdHdvIHNldHMgdGhlbiBlbmRzIHVwIGluIGBgUEFDS0FHRVNgYC4K LQotYGBFWFRSQV9QQUNLQUdFU2BgLCBgYEVYVFJBX1BBQ0tBR0VTLXlgYCwgYGBFWFRSQV9QQUNL QUdFUy1tYGAKLSAgSW4gYW5hbG9neSB0byBgYFBBQ0tBR0VTYGAsIHRhcmdldCBwYWNrYWdlcyB0 aGF0IGFyZSBhZGRlZCB0byB0aGVzZSBsaXN0cyB3aWxsCi0gIGJlIGJ1aWx0IG5vcm1hbGx5IGR1 cmluZyB0aGUgYnVpbGQgcnVuLgotICBJbiBjb250cmFzdCBob3dldmVyLCB0aGV5IGFyZSBub3Qg aW5zdGFsbGVkIGludG8gYSByb290IGZpbGVzeXN0ZW0gYnkgZGVmYXVsdAotICB3aGVuIGJ1aWxk aW5nIGltYWdlcywgYW5kIGltYWdlIHJ1bGVzIG11c3QgcmVxdWVzdCB0aGVtIGV4cGxpY2l0ZWx5 LgotICBUaGlzIGlzIHVzZWZ1bCBmb3Igc3BlY2lhbGl6ZWQgcGFja2FnZXMgdGhhdCBhcmUgb25s eSBuZWVkZWQgZm9yIHNwZWNpZmljCi0gIGltYWdlcywgc2VlIDpyZWY6YG11bHRpX2ltYWdlX2lu ZGl2aWR1YWxfcm9vdF9maWxlc3lzdGVtc2AuCi0KLWBgSE9TVF9QQUNLQUdFU2BgLCBgYENST1NT X1BBQ0tBR0VTYGAKLSAgU2ltaWxhciB0byBgYFBBQ0tBR0VTYGAsIHRoZXNlIHZhcmlhYmxlcyBj b250YWluIHRoZSBob3N0IGFuZCBjcm9zcyBwYWNrYWdlcwotICB0aGF0IGFyZSBidWlsdCBhbmQg aW5zdGFsbGVkIGR1cmluZyB0aGUgUFRYZGlzdCBidWlsZCBydW4uCi0gIFRoZXJlIGFyZSBhbmFs b2dvdXMgYGAteWBgIGFuZCBgYC1tYGAgdmFyaWFudHMgb2YgdGhvc2UgdmFyaWFibGVzIHRvby4K LQotUGFja2FnZSBTcGVjaWZpYyBWYXJpYWJsZXMKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ Ci0KLUZvciB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBgYDxQS0c+YGAgaXMgYSBwbGFjZWhvbGRl ciBmb3IgdGhlIHBhY2thZ2UKLW5hbWUuIEl0IGlzIGFsc28gdGhlIEtjb25maWcgc3ltYm9sIG5h bWUgKHdpdGhvdXQgdGhlIGBgUFRYQ09ORl9gYCBwcmVmaXgpLgotCi1QYWNrYWdlIERlZmluaXRp b24KLV5eXl5eXl5eXl5eXl5eXl5eXgotCi1gYDxQS0c+YGAKLSAgVGhpcyBpcyB0aGUgbmFtZSBv ZiB0aGUgcGFja2FnZSBpbmNsdWRpbmcgdmVyc2lvbi4gRm9yIG1vc3QgcGFja2FnZXMsCi0gIHRo aXMgaXMgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBhcmNoaXZlICh3aXRob3V0IHN1ZmZpeCkgYW5k IHRoZSBzb3VyY2UKLSAgZGlyZWN0b3J5LiBQVFhkaXN0IHdpbGwgc2VhcmNoIGZvciBwYXRjaGVz IGluIGEgZGlyZWN0b3J5IHdpdGggdGhpcyBuYW1lLgotICBUaGlzIGlzIHVzdWFsbHkgZGVmaW5l ZCBhcyBgYDxuYW1lPi0kKDxQS0c+X1ZFUlNJT04pYGAuIFRoaXMgdmFyaWFibGUgaXMKLSAgcmVx dWlyZWQgZm9yIG1vc3QgcGFja2FnZXMuIFRoZSBvbmx5IGV4Y2VwdGlvbiBhcmUgcGFja2FnZXMg dGhhdCBvbmx5Ci0gIGluc3RhbGwgc29tZSBmaWxlcyBpbiB0aGUgdGFyZ2V0aW5zdGFsbCBzdGFn ZSAoZS5nLiBmcm9tIHByb2plY3Ryb290LykuCi0KLWBgPFBLRz5fVkVSU0lPTmBgCi0gIFRoZSB2 ZXJzaW9uIG9mIHRoZSBwYWNrYWdlLiBJdCBpcyB1c2VkIGFzIHRoZSB2ZXJzaW9uIGZvciB0aGUg aXBrCi0gIHBhY2thZ2VzLiBBcyBzdWNoLCBpdCBpcyByZXF1aXJlZCBmb3IgYWxsIHBhY2thZ2Vz IHRoYXQgY3JlYXRlIHN1Y2gKLSAgcGFja2FnZXMuIE1vc3QgdGFyZ2V0IHBhY2thZ2VzIGZhbGwg aW4gdGhpcyBjYXRlZ29yeS4KLQotYGA8UEtHPl9NRDVgYAotICBUaGUgbWQ1IGNoZWNrc3VtIG9m IHRoZSBzb3VyY2UgYXJjaGl2ZS4gUFRYZGlzdCBjYWxjdWxhdGVzIHRoZSBjaGVja3N1bQotICBi ZWZvcmUgZXh0cmFjdGluZyB0aGUgYXJjaGl2ZSBhbmQgd2lsbCBhYm9ydCBpZiBkb2VzIG5vdCBt YXRjaC4gVXBzdHJlYW0KLSAgcHJvamVjdCBvY2Nhc2lvbmFsbHkgY2hhbmdlIHRoZSBjb250ZW50 IG9mIGFuIGFyY2hpdmUgd2l0aG91dCByZWxlYXNpbmcgYQotICBuZXcgdmVyc2lvbi4gVGhpcyBj aGVjayBoZWxwcyB0byBlbnN1cmUgdGhhdCBhbGwgZGV2ZWxvcGVycyB3b3JrIHdpdGggdGhlCi0g IHNhbWUgc291cmNlIGNvZGUuCi0KLWBgPFBLRz5fU1VGRklYYGAKLSAgVGhlIGFyY2hpdmUgc3Vm Zml4IHdpdGhvdXQgdGhlIGxlYWRpbmcgJy4nLCBlLmcuICd0YXIuZ3onIG9yICd6aXAnLiBUaGlz Ci0gIGlzIG9ubHkgdXNlZCBsb2NhbGx5IHRvIGRlZmluZSBgYDxQS0c+X1VSTGBgIGFuZCBgYDxQ S0c+X1NPVVJDRWBgLgotCi1gYDxQS0c+X1VSTGBgCi0gIFRoaXMgaXMgdGhlIGRvd25sb2FkIFVS TCBmb3IgdGhlIHNvdXJjZSBhcmNoaXZlLiBJdCBpcyBhIHNwYWNlIHNlcGFyYXRlZAotICBsaXN0 IG9mIFVSTHMuIFBUWGRpc3Qgd2lsbCB0cnkgZWFjaCBVUkwgdW50aWwgaXQgZmluZHMgb25lIHRo YXQgd29ya3MuCi0gIFRoZXJlIGFyZSB0d28gbWFpbiByZWFzb25zIHRvIHByb3ZpZGUgbW9yZSB0 aGFuIG9uZSBVUkw6IDEuIEFkZGl0aW9uYWwKLSAgbWlycm9yKHMpIGluIGNhc2UgdGhlIG1haW4g bG9jYXRpb24gaXMgdW5hdmFpbGFibGUuIDIuIFNvbWUgcHJvamVjdHMgbW92ZQotICBvbGQgdmVy c2lvbnMgaW50byBhIHNlcGFyYXRlIGRpcmVjdG9yeSB3aGVuIGEgbmV3IHZlcnNpb24gaXMgcmVs ZWFzZWQuCi0gIFByb3ZpZGluZyBib3RoIHZlcnNpb25zIG9mIHRoZSBVUkwgZW5zdXJlcyB0aGF0 IFBUWGRpc3Qgc3RpbGwgaGFzIGEKLSAgd29ya2luZyBVUkwgYWZ0ZXIgdGhlIG5leHQgdXBzdHJl YW0gcmVsZWFzZS4KLQotICBVUkxzIGNhbiBoYXZlIG9wdGlvbnMuIE9wdGlvbnMgYXJlIGFwcGVu ZGVkIHRvIHRoZSBVUkwgc2VwYXJhdGVkIGJ5ICc7Jy4KLSAgRm9yIG5vcm1hbCBkb3dubG9hZHMg dGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBzdXBwb3J0ZWQ6Ci0KLSAgYGBuby1jaGVjay1jZXJ0 aWZpY2F0ZWBgIHRvIGluZGljYXRlIHRoYXQgU1NMIGNlcnRpZmljYXRlIGNoZWNraW5nIHNob3Vs ZAotICBiZSBkaXNhYmxlZC4KLQotICBgYG5vLXByb3h5YGAgdG8gZGlzYWJsZSBhbnkgY29uZmln dXJlZCBwcm94eS4KLQotICBgYGNvb2tpZTo8dmFsdWU+YGAgdG8gc3BlY2lmeSBhIGNvb2tpZSB0 aGF0IHNob3VsZCBiZSBzZW50LgotCi0gIEZpbGVzIGluIHRoZSBsb2NhbCBmaWxlc3lzdGVtIGNh biBiZSBhZGRyZXNzZWQgd2l0aCBgYGZpbGU6Ly9gYCBVUkxzLiBJbgotICB0aGlzIGNhc2UsIHRo ZSBVUkwgY2FuIGFsc28gcG9pbnQgdG8gYSBkaXJlY3RvcnkuIEluIHRoaXMgY2FzZQotICBgYDxQ S0c+X0RJUmBgIHdpbGwgYmUgYSBzeW1saW5rIHRvIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5LiAn bG5kaXI6Ly8nCi0gIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHNoYWRvdyBjb3B5IGluc3RlYWQu IEZvciBsb2NhdGlvbnMgaW5zaWRlIHRoZSBCU1AKLSAgdGhlIFVSTCBzaG91bGQgdXNlIGBgJChQ VFhESVNUX1dPUktTUEFDRSlgYCB0byBkZWZpbmUgdGhlIGNvcnJlY3QKLSAgYWJzb2x1dGUgcGF0 aC4KLQotICBJZiBubyBzb3VyY2UgYXJjaGl2ZSBpcyBhdmFpbGFibGUsIFBUWGRpc3QgY2FuIGdl dCB0aGUgc291cmNlIGZyb20KLSAgcmV2aXNpb24gY29udHJvbCBzeXN0ZW1zLiAnZ2l0JyBhbmQg J3N2bicgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuIE5vdGUKLSAgdGhhdCB0aGlzIGNhbm5vdCBi ZSB1c2VkIHRvIGZvbGxvdyBhIGJyYW5jaCEgUFRYZGlzdCB3aWxsIGNyZWF0ZSB0aGUKLSAgYXJj aGl2ZSBkZWZpbmVkIGBgPFBLRz5fU09VUkNFYGAgYW5kIHVzZSBpdCBpZiBhdmFpbGFibGUuCi0K LSAgR2l0IFVSTHMgbXVzdCBlaXRoZXIgc3RhcnQgd2l0aCAnZ2l0Oi8vJyBvciBlbmQgd2l0aCAn LmdpdCcuIFRoZXkgaGF2ZSBhCi0gIG1hbmRhdG9yeSBgYHRhZz08dGFnbmFtZT5gYCBvcHRpb24u IFJlZmVyIDpyZWY6YGdpdFNvdXJjZXNgIGhvdyB0byBtYWtlIHVzZSBvZgotICBpdC4KLQotICBT dm4gVVJMcyBtdXN0IHN0YXJ0IHdpdGggJ3N2bjovLycuIFRoZXkgaGF2ZSBhIG1hbmRhdG9yeQot ICBgYHJldj1yPG51bWJlcj5gYCBvcHRpb24uCi0KLWBgPFBLRz5fU09VUkNFYGAKLSAgVGhlIGxv Y2F0aW9uIG9mIHRoZSBkb3dubG9hZGVkIHNvdXJjZSBhcmNoaXZlLiBUaGVyZSBzaG91bGQgYmUg bm8gcmVhc29uCi0gIHRvIHNldCB0aGlzIHRvIGFueXRoaW5nIG90aGVyIHRoYW4KLSAgYGAkKFNS Q0RJUikvJCg8UEtHPikuJCg8UEtHPl9TVUZGSVgpYGAuCi0KLSAgRm9yIGxvY2FsIFVSTHMgKGBg ZmlsZTovL2BgIG9yIGBgbG5kaXI6Ly9gYCkgYGA8UEtHPl9TT1VSQ0VgYCBtdXN0IG5vdCBiZQot ICBzZXQuCi0KLWBgPFBLRz5fRElSYGAKLSAgVGhpcyBpcyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRo ZSBzb3VyY2UgYXJjaGl2ZSBpcyBleHRyYWN0ZWQuIEluIG1vc3QKLSAgY2FzZXMgdGhpcyBpcyBz ZXQgdG8gYGAkKEJVSUxERElSKS8kKDxQS0c+KWBgLiBIb3dldmVyLCBpZiB0d28gcGFja2FnZXMK LSAgdXNlIHRoZSBzYW1lIHNvdXJjZSBhcmNoaXZlLCB0aGVuIHNvbWV0aGluZyBlbHNlIG11c3Qg YmUgdXNlZCB0byBtYWtlCi0gIHN1cmUgdGhhdCB0aGV5IHVzZSBkaWZmZXJlbnQgZGlyZWN0b3Jp ZXMuIFNlZSB0aGUgcnVsZXMgZm9yICdnZGInIGFuZAotICAnZ2Ric2VydmVyJyBmb3IgYW4gZXhh bXBsZS4KLQotYGA8UEtHPl9MSUNFTlNFYGAKLSAgVGhlIGxpY2Vuc2Ugb2YgdGhlIHBhY2thZ2Uu IFRoZSBTUERYIGxpY2Vuc2UgaWRlbnRpZmllcnMgc2hvdWxkIGJlIHVzZWQKLSAgaGVyZS4gVXNl IGBgcHJvcHJpZXRhcnlgYCBmb3IgcHJvcHJpZXRhcnkgcGFja2FnZXMgYW5kIGBgaWdub3JlYGAg Zm9yCi0gIHBhY2thZ2VzIHdpdGhvdXQgdGhlaXIgb3duIGxpY2Vuc2UsIGUuZy4gbWV0YSBwYWNr YWdlcyBvciBwYWNrYWdlcyB0aGF0Ci0gIG9ubHkgaW5zdGFsbCBmaWxlcyBmcm9tIGBgcHJvamVj dHJvb3QvYGAuCi0KLWBgPFBLRz5fTElDRU5TRV9GSUxFU2BgCi0gIEEgc3BhY2Ugc2VwYXJhdGVk IGxpc3Qgb2YgVVJMcyBvZiBsaWNlbnNlIHRleHQgZmlsZXMuIFRoZSBVUkxzIG11c3QgYmUKLSAg YGBmaWxlOi8vYGAgVVJMcyByZWxhdGl2ZSB0byBgYDxQS0c+X0RJUmBgLiBBYnNvbHV0ZSBVUkxz IHVzaW5nCi0gIGBgJChQVFhESVNUX1dPUktTUEFDRSlgYCBjYW4gYmUgdXNlZCBpbiBjYXNlIHRo ZSBsaWNlbnNlIHRleHQgaXMgbWlzc2luZwotICBpbiB0aGUgdXBzdHJlYW0gYXJjaGl2ZS4gQXJn dW1lbnRzIGFyZSBhcHBlbmRlZCB3aXRoICc7JyBhcyBzZXBhcmF0b3IuCi0gIFRoZSBgYG1kNT08 bWQ1c3VtPmBgIGFyZ3VtZW50IGlzIG1hbmRhdG9yeS4gSXQgZGVmaW5lcyB0aGUgbWQ1IGNoZWNr c3VtCi0gIG9mIHRoZSBmdWxsIGxpY2Vuc2UgdGV4dC4gYGBzdGFydGxpbmU9PG51bWJlcj47ZW5k bGluZT08bnVtYmVyPmBgIGNhbiBiZQotICB1c2VkIGluIGNhc2UgdGhlIHNwZWNpZmllZCBmaWxl IGNvbnRhaW5zIG1vcmUgdGhhbiBqdXN0IHRoZSBsaWNlbnNlIHRleHQsCi0gIGUuZy4gaWYgdGhl IGxpY2Vuc2UgaXMgaW4gdGhlIGhlYWRlciBvZiBhIHNvdXJjZSBmaWxlLiBGb3Igbm9uIEFTQ0lJ IG9yCi0gIFVURi04IGZpbGVzIHRoZSBlbmNvZGluZyBjYW4gYmUgc3BlY2lmaWVkIHdpdGggYGBl bmNvZGluZz08ZW5jPmBgLgotCi1Gb3IgbW9zdCBwYWNrYWdlcyB0aGUgdmFyaWFibGVzIGRlc2Ny aWJlZCBhYm92ZSBhcmUgdW5kZWZpbmVkIGJ5IGRlZmF1bHQuCi1Ib3dldmVyLCBmb3IgY3Jvc3Mg YW5kIGhvc3QgcGFja2FnZXMgdGhlc2UgdmFyaWFibGVzIGRlZmF1bHQgdG8gdGhlIHZhbHVlCi1v ZiB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXQgcGFja2FnZSBpZiBpdCBleGlzdHMuCi0KLWBgPFBL Rz5fQ09ORklHYGAKLSAgVGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSBjb25maWd1cmF0aW9uIGZp bGUgb2Ygc29tZSBraW5kIGZvciB0aGUKLSAgcGFja2FnZXMuIEZvciBwYWNrYWdlcyB3aXRoIGBg PFBLRz5fQ09ORl9UT09MYGAgc2V0IHRvIGBga2NvbmZpZ2BgIHRoZQotICB2YXJpYWJsZSBtdXN0 IHNwZWNpZnkgYW4gYWJzb2x1dGUgcGF0aCB0byB0aGUga2NvbmZpZyBmaWxlLiBGb3IgaW1hZ2UK LSAgcGFja2FnZXMgdGhhdCB1c2UgZ2VuaW1hZ2UsIFBUWGRpc3Qgd2lsbCBsb29rIGZvcgotICBg YGNvbmZpZy9pbWFnZXMvJCg8UEtHPl9DT05GSUcpYGAgaW4gdGhlIEJTUCBhbmQgUFRYZGlzdCBp biB0aGUgdXN1YWwKLSAgc2VhcmNoIG9yZGVyLgotCi1gYDxQS0c+X1NUUklQX0xFVkVMYGAKLSAg V2hlbiBQVFhkaXN0IGV4dHJhY3RzIHNvdXJjZSBhcmNoaXZlcywgaXQgd2lsbCBjcmVhdGUgYGA8 UEtHPl9ESVJgYAotICBmaXJzdCBhbmQgdGhlbiBleHRyYWN0cyB0aGUgYXJjaGl2ZSB0aGVyZS4g SWYgYGA8UEtHPl9TVFJJUF9MRVZFTGBgIGlzCi0gIHNldCB0byAxICh0aGUgZGVmYXVsdCkgdGhl biBQVFhkaXN0IHJlbW92ZXMgdGhlIGZpcnN0IGRpcmVjdG9yeSBsZXZlbAotICBkZWZpbmVkIGlu c2lkZSB0aGUgYXJjaGl2ZS4gRm9yIG1vc3QgcGFja2FnZXMgdGhhdCB0aGlzIGlzIHRoZSBzYW1l IGFzCi0gIGp1c3QgZXh0cmFjdGluZyB0aGUgYXJjaGl2ZS4gSG93ZXZlciwgdGhpcyBpcyB1c2Vm dWwgZm9yIHBhY2thZ2VzIHdpdGgKLSAgYmFkbHkgbmFtZWQgdG9wLWxldmVsIGRpcmVjdG9yaWVz IG9yIHBhY2thZ2VzIHdoZXJlIHRoZSBkaXJlY3RvcnkgbXVzdCBiZQotICByZW5hbWVkIHRvIGF2 b2lkIGNvbGxpc2lvbnMgKGUuZy4gZ2Ric2VydmVyKS4KLQotICBUaGUgbWFpbiB1c2UtY2FzZSBm b3IgYGA8UEtHPl9TVFJJUF9MRVZFTGBgIGlzIHRvIHNldCBpdCB0byAwIGZvcgotICBwYWNrYWdl cyB3aXRob3V0IGEgdG9wLWxldmVsIGRpcmVjdG9yeS4KLQotICBJbiB0aGVvcnkgYGA8UEtHPl9T VFJJUF9MRVZFTGBgIGNvdWxkIGJlIHNldCB0byAyIG9yIG1vcmUgdG8gcmVtb3ZlIG1vcmUKLSAg dGhhbiBvbmUgZGlyZWN0b3J5IGxldmVsLgotCi1gYDxQS0c+X0JVSUxEX09PVGBgCi0gIElmIHRo aXMgaXMgc2V0IHRvIGBgWUVTYGAgdGhlbiBQVFhkaXN0IHdpbGwgYnVpbGQgdGhlIHBhY2thZ2Ug b3V0IG9mCi0gIHRyZWUuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGF1dG9jb25mLCBxbWFr ZSBhbmQgY21ha2UgcGFja2FnZXMuIFRoZQotICBkZWZhdWx0IGlzIGBgWUVTYGAgZm9yIGNtYWtl IHBhY2thZ2VzIGFuZCBgYE5PYGAgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KLSAgSXQgd2lsbCB1c2Ug YGAkKDxQS0c+X0RJUiktYnVpbGRgYCBhcyBidWlsZCBkaXJlY3RvcnkuCi0KLSAgVGhpcyBpcyBl c3BlY2lhbGx5IHVzZWZ1bCBmb3IgYGBmaWxlOi8vYGAgVVJMUyB0aGF0IHBvaW50IHRvIGRpcmVj dG9yaWVzIHRvCi0gIGtlZXAgdGhlIHNvdXJjZSB0cmVlIGZyZWUgb2YgYnVpbGQgZmlsZXMuCi0K LWBgPFBLRz5fU1VCRElSYGAKLSAgVGhpcyBpcyBhIGRpcmVjdG9yeSByZWxhdGl2ZSB0byBgYDxQ S0c+X0RJUmBgLiBJZiBzZXQsIGFsbCBidWlsZAotICBvcGVyYXRpb25zIGFyZSBleGVjdXRlZCBp biB0aGlzIGRpcmVjdG9yeSBpbnN0ZWFkLiBCeSBkZWZhdWx0Ci0gIGBgPFBLRz5fU1VCRElSYGAg aXMgdW5kZWZpbmVkIHNvIGFsbCBvcGVyYXRpb25zIGFyZSBleGVjdXRlZCBpbiB0aGUKLSAgdG9w LWxldmVsIGRpcmVjdG9yeS4KLQotQnVpbGQgRW52aXJvbm1lbnQgZm9yIGFsbCBTdGFnZXMKLV5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0KLWBgPFBLRz5fUEFUSGBgCi0gIFRoaXMg dmFyaWFibGUgZGVmaW5lcyB0aGUgUEFUSCB1c2VkIGJ5IGFsbCBidWlsZCBzdGFnZXMuIEl0IGlz IGV2YWx1YXRlZAotICBhcyBpcywgc28gaXQgbXVzdCBzdGFydCB3aXRoIGBgUEFUSD1gYC4gSWYg dW5kZWZpbmVkLCBQVFhkaXN0IHdpbGwgdXNlCi0gIGBgUEFUSD0kKENST1NTX1BBVEgpYGAgZm9y IHRhcmdldCBwYWNrYWdlcyBgYFBBVEg9JChIT1NUX1BBVEgpYGAgZm9yIGhvc3QKLSAgcGFja2Fn ZXMgYW5kIGBgUEFUSD0kKEhPU1RfQ1JPU1NfUEFUSClgYCBmb3IgY3Jvc3MgcGFja2FnZXMuIEl0 IG11c3QgYmUKLSAgc2V0IGJ5IHBhY2thZ2VzIHRoYXQgdXNlIHRoZSB2YXJpYWJsZSBsb2NhbGx5 IGluIHRoZSBtYWtlIGZpbGUgb3IgaWYgbW9yZQotICBkaXJlY3RvcmllcyBhcmUgYWRkZWQsIGUu Zy4gdG8KLSAgYGBQQVRIPSQoUFRYRElTVF9TWVNST09UX0NST1NTKS9iaW4vcXQ1OiQoQ1JPU1Nf UEFUSClgYCBmb3IgcGFja2FnZXMgdGhhdAotICB1c2UgcW1ha2UgZnJvbSBRdDUuCi0KLWBgPFBL Rz5fQ0ZMQUdTYGAsIGBgPFBLRz5fQ1BQRkxBR1NgYCwgYGA8UEtHPl9MREZMQUdTYGAKLSAgQ29t cGlsZXIsIHByZXByb2Nlc3NvciBhbmQgbGlua2VyIGFyZSBuZXZlciBjYWxsZWQgZGlyZWN0bHkg aW4gUFRYZGlzdC4KLSAgSW5zdGVhZCwgd3JhcHBlciBzY3JpcHRzIGFyZSBjYWxsZWQgdGhhdCBl eHBhbmQgdGhlIGNvbW1hbmQgbGluZSBiZWZvcmUKLSAgY2FsbGluZyB0aGUgYWN0dWFsIHRvb2wu IFRoZXNlIHZhcmlhYmxlcyBjYW4gYmUgdXNlZCB0byBpbmZsdWVuY2UgdGhlc2UKLSAgd3JhcHBl cnMuIFRoZSBzcGVjaWZpZWQgZmxhZ3MgYXJlIGFkZGVkIHRvIHRoZSBjb21tYW5kIGxpbmUgd2hl bgotICBhcHByb3ByaWF0ZS4gSW4gbW9zdCBjYXNlcyB0aGlzIGl0IHRoZSBwcmVmZXJyZWQgd2F5 IHRvIGFkZCBhZGRpdGlvbmFsCi0gIGZsYWdzLiBBZGRpbmcgdGhlbSB2aWEgZW52aXJvbm1lbnQg dmFyaWFibGVzIG9yIGBgbWFrZWBgIGFyZ3VtZW50cyBjYW4KLSAgaGF2ZSB1bmV4cGVjdGVkIHNp ZGUgZWZmZWN0cywgc3VjaCBhcyBhcyBvdmVyd3JpdGluZyBleGlzdGluZyBkZWZhdWx0cy4KLQot YGA8UEtHPl9XUkFQUEVSX0JMQUNLTElTVGBgCi0gIFBUWGRpc3QgaGFzIHNldmVyYWwgb3B0aW9u cyBpbiB0aGUgcGxhdGZvcm1jb25maWcgdGhhdCBpbmplY3Qgb3B0aW9ucyBpbgotICB0aGUgY29t cGlsZXIgY29tbWFuZCBsaW5lLiBUaGlzIGlzIHVzZWQsIGZvciBleGFtcGxlLCB0byBhZGQgaGFy ZGVuaW5nCi0gIG9wdGlvbnMgb3IgY2hhbmdlIHRoZSBkZWJ1ZyBvcHRpb25zLiBUaGlzIGNhbiBv Y2Nhc2lvbmFsbHkgY2F1c2UgcHJvYmxlbXMKLSAgZm9yIHBhY2thZ2VzIHRoYXQgdXNlIHRoZSBj b21waWxlciBpbiBjZXJ0YWluIHdheXMsIHN1Y2ggYXMgdGhlIExpbnV4Ci0gIGtlcm5lbCBvciB2 YXJpb3VzIGJvb3Rsb2FkZXJzLiBXaXRoIHRoaXMgdmFyaWFibGUgYSBwYWNrYWdlIGNhbiBkaXNh YmxlCi0gIGluZGl2aWR1YWwgb3B0aW9ucyBieSBzZXR0aW5nIGl0IHRvIGEgc3BhY2Ugc2VwYXJh dGVkIGxpc3Qgb2YgdGhlCi0gIGNvcnJlc3BvbmRpbmcgS2NvbmZpZyBzeW1ib2xzICh3aXRob3V0 IHRoZSBgYFBUWENPTkZfYGAgcHJlZml4KS4KLQotUHJlcGFyZSBTdGFnZQotXl5eXl5eXl5eXl5e XgotCi1gYDxQS0c+X0NPTkZfRU5WYGAKLSAgVGhlIGVudmlyb25tZW50IGZvciB0aGUgcHJlcGFy ZSBzdGFnZS4gSWYgdW5kZWZpbmVkLCBQVFhkaXN0IHdpbGwgdXNlCi0gIGBgJChDUk9TU19FTlYp YGAgZm9yIHRhcmdldCBwYWNrYWdlcywgYGAkKEhPU1RfRU5WKWBgIGZvciBob3N0IHBhY2thZ2Vz Ci0gIGFuZCBgYCQoSE9TVF9DUk9TU19FTlYpYGAgZm9yIGNyb3NzIHBhY2thZ2VzLiBJdCBtdXN0 IGJlIHNldCBieSBwYWNrYWdlcwotICB0aGF0IHVzZSB0aGUgdmFyaWFibGUgbG9jYWxseSBpbiB0 aGUgbWFrZSBmaWxlIG9yIGlmIGV4dHJhIHZhcmlhYmxlcyBhcmUKLSAgYWRkZWQuIEluIHRoaXMg Y2FzZSB0aGUgZGVmaW5pdGlvbiBzaG91bGQgc3RhcnQgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZS4K LQotYGA8UEtHPl9DT05GX1RPT0xgYAotICBUaGlzIHZhcmlhYmxlIGRlZmluZXMgd2hhdCB0b29s IGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBwYWNrYWdlIGluIHRoZQotICBwcmVwYXJlIHN0YWdl LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgotCi0gICAtIGBgTk9gYCB0byBkbyBub3RoaW5nIGluIHRo ZSBwcmVwYXJlIHN0YWdlLgotICAgLSBgYGF1dG9jb25mYGAgZm9yIHBhY2thZ2VzIHRoYXQgdXNl IGF1dG9jb25mCi0gICAtIGBgcW1ha2VgYCBmb3IgcW1ha2UgYmFzZWQgcGFja2FnZXMuIE5vdGU6 IHRoZSByZXF1aXJlZCBRdCB2ZXJzaW9uIG11c3QKLSAgICAgYmUgc2VsZWN0ZWQuCi0gICAtIGBg Y21ha2VgYCBmb3IgY21ha2UgYmFzZWQgcGFja2FnZXMuIE5vdGUgYGBIT1NUX0NNQUtFYGAgbXVz dCBiZQotICAgICBzZWxlY3RlZCB0byBlbnN1cmUsIHRoYXQgY21ha2UgaXMgYXZhaWxhYmxlIGZv ciBjb25maWd1cmF0aW9uLgotICAgLSBgYGtjb25maWdgYCBmb3Iga2NvbmZpZyBiYXNlZCBwYWNr YWdlcy4gTm90ZSBgYDxQS0c+X0NPTkZJR2BgIG11c3QgYmUKLSAgICAgc2V0IGFzIGRlc2NyaWJl ZCBhYm92ZS4KLSAgIC0gYGBwZXJsYGAgZm9yIHBlcmwgbW9kdWxlcy4KLSAgIC0gYGBweXRob25g YCBvciBgYHB5dGhvbjNgYCBmb3IgUHl0aG9uIHBhY2thZ2VzIHdpdGggYSBub3JtYWwgc2V0dXAu cHkuCi0KLWBgPFBLRz5fQ09ORl9PUFRgYAotICBUaGlzIHZhcmlhYmxlIGFkZHMgYXJndW1lbnRz IHRvIHRoZSBjb21tYW5kLWxpbmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24KLSAgdG9vbC4gSWYgdW5k ZWZpbmVkLCBQVFhkaXN0IHdpbGwgdXNlIGEgZGVmYXVsdCB2YWx1ZSB0aGF0IGRlcGVuZHMgb24g dGhlCi0gIGNvbmZpZ3VyYXRpb24gdG9vbCBvZiB0aGUgcGFja2FnZS4gVGhpcyBkZWZhdWx0IHZh bHVlIHNob3VsZCBhbHNvIGJlIHVzZWQKLSAgd2hlbiBhZGRpbmcgYWRkaXRpb25hbCBvcHRpb25z LiBUaGUgZm9sbG93aW5nIGRlZmF1bHRzIGV4aXN0OgotCi0gICAtIGF1dG9jb25mOgotICAgICBg YCQoQ1JPU1NfQVVUT0NPTkZfVVNSKWBgL2BgJChIT1NUX0FVVE9DT05GKWBgL2BgJChIT1NUX0NS T1NTX0FVVE9DT05GKWBgCi0gICAgIGZvciB0YXJnZXQvaG9zdC9jcm9zcyBwYWNrYWdlcy4KLSAg IC0gY21ha2U6IGBgJChDUk9TU19DTUFLRV9VU1IpYGAvYGAkKEhPU1RfQ01BS0VfT1BUKWBgIGZv ciB0YXJnZXQvaG9zdAotICAgICBwYWNrYWdlcy4gQ3Jvc3MgcGFja2FnZXMgY2Fubm90IGJlIGJ1 aWx0IHdpdGggY21ha2UKLSAgIC0gcW1ha2U6IGBgJChDUk9TU19RTUFLRV9PUFQpYGAgZm9yIGhv c3QgcGFja2FnZXMuIEhvc3QgYW5kIGNyb3NzCi0gICAgIHBhY2thZ2VzIGNhbm5vdCBiZSBidWls dCB3aXRoIHFtYWtlLgotCi0gIEFsbCBvdGhlciBjb25maWd1cmF0aW9uIHRvb2xzIGhhdmUgbm8g ZGVmYXVsdCBvcHRpb25zLiBUaGlzIHZhcmlhYmxlIGlzCi0gIGlnbm9yZWQgZm9yIGtjb25maWcg YW5kIHB5dGhvbi9weXRob24zLgotCi0uLiBfdmFyc19jb21waWxlOgotCi1Db21waWxlIFN0YWdl Ci1eXl5eXl5eXl5eXl5eCi0KLWBgPFBLRz5fTUFLRV9FTlZgYAotICBUaGlzIHZhcmlhYmxlcyBk ZWZpbmVzIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgY29tcGlsZQot ICBzdGFnZS4gSW4gbW9zdCBjYXNlcyB0aGlzIHZhcmlhYmxlIHJlbWFpbnMgdW5kZWZpbmVkIGJl Y2F1c2UgYWxsCi0gIG5lY2Vzc2FyeSBkZWZpbmVzIGFyZSBwaWNrZWQgdXAgaW4gdGhlIHByZXBh cmUgc3RhZ2UuIEZvciBweXRob24vcHl0aG9uMwotICBwYWNrYWdlcyBQVFhkaXN0IHdpbGwgdXNl IHRoZSBkZWZhdWx0IHZhbHVlIGZyb20gYGA8UEtHPl9DT05GX0VOVmBgLgotICBGb3IgcGFja2Fn ZXMgd2l0aG91dCBjb25maWd1cmF0aW9uIHRvb2wgdGhpcyBtdXN0IGJlIHNldCBjb3JyZWN0bHks Ci0gIHVzdWFsbHkgYmFzZWQgb24gdGhlIGBgPFBLRz5fQ09ORl9FTlZgYCBkZWZhdWx0IHZhbHVl cywgZSxnLgotICBgYCQoQ1JPU1NfRU5WKWBgIGZvciB0YXJnZXQgcGFja2FnZXMuCi0KLWBgPFBL Rz5fTUFLRV9PUFRgYAotICBUaGlzIHZhcmlhYmxlcyBkZWZpbmVzIGFkZGl0aW9uYWwgcGFyYW1l dGVycyB0byBiZSBmb3J3YXJkZWQgdG8gYGBtYWtlYGAgaW4KLSAgb3JkZXIgdG8gYnVpbGQgdGhl IHBhY2thZ2UuIEl0IGRlZmF1bHRzIHRvIG5vdGhpbmcgdG8gbGV0IGBgbWFrZWBgIHRyYWRpdGlv bmFsbHkKLSAgYnVpbGQgdGhlIGZpcnN0IGRlZmluZWQgdGFyZ2V0LgotCi1gYDxQS0c+X01BS0Vf UEFSYGAKLSAgVGhpcyB2YXJpYWJsZXMgaW5mb3JtcyBQVFhkaXN0LCBpZiB0aGlzIHBhY2thZ2Ug Y2FuIGJlIGJ1aWx0IGluIHBhcmFsbGVsLiBTb21lCi0gIChtb3N0bHkgdmVyeSBzbWFydCBzZWxm bWFkZSkgYnVpbGRzeXN0ZW1zIGZhaWwgZG9pbmcgc28uIEluIHRoaXMgY2FzZSB0aGlzCi0gIHZh cmlhYmxlIGNhbiBiZSBzZXQgdG8gYGBOT2BgLiBQVFhkaXN0IHdpbGwgdGhlbiBidWlsZCB0aGlz IHBhY2thZ2Ugd2l0aCBvbmUKLSAgQ1BVIG9ubHkuIFRoZSBkZWZhdWx0IGlzLCB0byBidWlsZCBw YWNrYWdlcyBpbiBwYXJhbGxlbC4KLQotLi4gX3ZhcnNfaW5zdGFsbDoKLQotSW5zdGFsbCBTdGFn ZQotXl5eXl5eXl5eXl5eXgotCi1gYDxQS0c+X0lOU1RBTExfT1BUYGAKLSAgVGhpcyB2YXJpYWJs ZSBkZWZhdWx0cyB0byBgYGluc3RhbGxgYCB3aGljaCBpcyB1c2VkIGFzIGEgKnRhcmdldCogZm9y IGBgbWFrZWBgLgotICBJdCBjYW4gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIHBhY2thZ2UgbmVlZHMg YSBzcGVjaWFsIHRhcmdldCB0byBpbnN0YWxsIGl0cwotICByZXN1bHRzLgotCi0uLiBfcGtnX3Br Z2RpcjoKLQotYGA8UEtHPl9QS0dESVJgYAotICBUaGlzIHZhcmlhYmxlIG11c3Qgbm90IGJlIHNl dCBieSB0aGUgdXNlci4gSXQgZGVmaW5lcyBwYWNrYWdlCi0gIGluc3RhbGwgZGlyZWN0b3J5LiBB bGwgZmlsZXMgd2lsbCBiZSBpbnN0YWxsZWQgcmVsYXRpdmUgdG8gdGhpcwotICBkaXJlY3Rvcnku IEl0IGNhbiBiZSB1c2VkIGJ5IG1hbnVhbCBpbnN0YWxsIHN0YWdlcy4gSXQgaXMgZGVmaW5lZCBh cwotICBgYCQoUEtHRElSKS8kKDxQS0c+KWBgIHdoaWNoIGV4cGFuZHMgdG8KLSAgYGA8cGxhdGZv cm0tZGlyPi9wYWNrYWdlcy9mb28tMS4xLjBgYCBvbiBvdXIgKmZvbyogZXhhbXBsZS4KLQotVGFy Z2V0aW5zdGFsbCBTdGFnZQotXl5eXl5eXl5eXl5eXl5eXl5eXgotCi1UaGUgKnRhcmdldGluc3Rh bGwqIHN0YWdlIGhhcyBubyBhZGRpdGlvbmFsIHZhcmlhYmxlcy4KLQotLi4gX2ltYWdlX3BhY2th Z2VzOgotCi1JbWFnZSBQYWNrYWdlcwotXl5eXl5eXl5eXl5eXl4KLQotSW1hZ2UgcGFja2FnZXMg dXNlIGEgZGlmZmVyZW50IHNldCBvZiB2YXJpYWJsZXMuIFRoZXkgaGF2ZSB0aGUgc2FtZQotYGA8 UEtHPmBgIGFuZCBgYDxQS0c+X0RJUmBgIHZhcmlhYmxlcyBhcyBvdGhlciBwYWNrYWdlcywgYnV0 IHRoZSByZXN0IGlzCi1kaWZmZXJlbnQuCi0KLWBgPFBLRz5fSU1BR0VgYAotICBUaGlzIGlzIHRo ZSBmaWxlbmFtZSBvZiB0aGUgaW1hZ2UgdGhhdCBpcyBjcmVhdGVkIGJ5IHRoZSBydWxlLiBUaGlz IGlzCi0gIHVzdWFsbHkgYGAkKElNQUdFRElSKS88aW1hZ2UtZmlsZS1uYW1lPmBgLgotCi1gYDxQ S0c+X0ZJTEVTYGAKLSAgVGhpcyBpcyBhIGxpc3Qgb2YgdGFyIGJhbGxzIHRoYXQgYXJlIGV4dHJh Y3RlZCB0byBnZW5lcmF0ZSB0aGUgY29udGVudCBvZgotICB0aGUgaW1hZ2UuIFBUWGRpc3Qgd2ls bCBhZGQgdGhlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgdG8gdGhlc2UgZmlsZXMgdG8KLSAgcmVj cmVhdGUgdGhlIGltYWdlIGFzIG5lZWRlZC4gSWYgYSB0YXIgYmFsbCBpcyBjcmVhdGVkIGJ5IGFu b3RoZXIgUFRYZGlzdAotICBwYWNrYWdlIHRoZW4gdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZWxl Y3RlZCBpbiB0aGUgbWVudSBmaWxlLgotCi1gYDxQS0c+X1BLR1NgYAotICBUaGlzIGlzIGFub3Ro ZXIgbWVjaGFuaXNtIHRvIGFkZCBmaWxlcyB0byB0aGUgaW1hZ2UuIEl0IGNhbiBiZSB1c2VzCi0g IGluc3RlYWQgb2Ygb3IgaW4gYWRkaXRpb24gdG8gYGA8UEtHPl9GSUxFU2BgLiBJdCBtdXN0IGJl IHNldCB0byBhIGxpc3Qgb2YKLSAgcHR4ZGlzdCBwYWNrYWdlcyAodGhlIGxvd2VyY2FzZSBuYW1l IG9mIHRoZSBwYWNrYWdlcykuIFBUWGRpc3Qgd2lsbCBhZGQKLSAgdGhlIG5lY2Vzc2FyeSBkZXBl bmRlbmNpZXMuCi0KLSAgTm90ZSB0aGF0IHRoaXMgd2lsbCBub3QgZW5zdXJlIHRoYXQgdGhlIHBh Y2thZ2VzIGFyZSBlbmFibGVkIG9yIHRoYXQgYWxsCi0gIGFsbCBwYWNrYWdlIGRlcGVuZGVuY2ll cyBhcmUgc2F0aXNmaWVkLiBgYCQoUFRYX1BBQ0tBR0VTX0lOU1RBTEwpYGAgY2FuCi0gIGJlIHVz ZWQgdG8gc3BlY2lmeSBhbGwgZW5hYmxlZCBwYWNrYWdlcy4gT3IgYGAkKGNhbGwgcHR4L2NvbGxl Y3Rpb24sCi0gICQoUFRYRElTVF9XT1JLU1BBQ0UpL2NvbmZpZ3MvPGNvbGxlY3Rpb24tZmlsZS1u YW1lPilgYCBjYW4gYmUgdXNlcyB0byB0bwotICBzcGVjaWZ5IHRoZSBwYWNrYWdlcyBlbmFibGVk IGJ5IHRoaXMgY29sbGVjdGlvbi4gSW4gYm90aCBjYXNlcyBgYD1gYCBtdXN0Ci0gIGJlIHVzZXMg aW5zdGVhZCBvZiBgYDo9YGAgZHVlIHRvIHRoZSBtYWtlZmlsZSBpbmNsdWRlIG9yZGVyLgotCi1g YDxQS0c+X0NPTkZJR2BgCi0gIGBgZ2VuaW1hZ2VgYCBwYWNrYWdlcyB1c2UgdGhpcyB0byBzcGVj aWZ5IHRoZSBgYGdlbmltYWdlYGAgY29uZmlndXJhdGlvbgotICBmaWxlLiBQVFhkaXN0IHdpbGwg c2VhcmNoIGZvciB0aGUgc3BlY2lmaWVkIGZpbGUgbmFtZSBpbgotICBgYGNvbmZpZy9pbWFnZXMv YGAgaW4gdGhlIEJTUCwgcGxhdGZvcm0gYW5kIFBUWGRpc3QgaW4gdGhlIHVzdWFsIHNlYXJjaAot ICBvcmRlci4KLQotYGA8UEtHPl9ORlNST09UYGAKLSAgSWYgdGhpcyBpcyBzZXQgdG8gYGBZRVNg YCB0aGVuIFBUWGRpc3Qgd2lsbCBjcmVhdGUgYSBzcGVjaWFsIG5mc3Jvb3QKLSAgZGlyZWN0b3J5 IHRoYXQgY29udGFpbnMgb25seSB0aGUgZmlsZXMgZnJvbSB0aGUgcGFja2FnZXMgc3BlY2lmaWVk IGluCi0gIGBgPFBLRz5fUEtHU2BgLiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgbm9ybWFsIG5mc3Jv b3QgZGlyZWN0b3J5IGNvbnRhaW5zCi0gIGNvbmZsaWN0aW5nIGZpbGVzIGZyb20gbXVsdGlwbGUg aW1hZ2VzLiBUaGUgY3JlYXRlZCBuZnNyb290IGRpcmVjdG9yeSBpcwotICBgYDxwbGF0Zm9ybS1k aXI+L25mc3Jvb3QvPGltYWdlLW5hbWU+YGAuCi0KLWBgPFBLRz5fTEFCRUxgYAotICBUaGlzIGlz IGEgdGFyIGxhYmVsIHRvIHB1dCBvbiBhbiBpbWFnZS4gVGhpcyBpcyBzdXBwb3J0ZWQgYnkKLSAg YGBpbWFnZS1yb290LXRnemBgIGFuZCBpbWFnZXMgY3JlYXRlZCB3aXRoIHRoZSBgYGltYWdlLXRn emBgIHRlbXBsYXRlLgotCi0uLiBfcmVmZXJlbmNlX21hY3JvczoKLQotUnVsZSBGaWxlIE1hY3Jv IFJlZmVyZW5jZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1SdWxlcyBmaWxlcyBpbiBQ VFhkaXN0IGFyZSB1c2luZyBtYWNyb3MgdG8gZ2V0IHRoaW5ncyB3b3JrLiBJdHMgaGlnaGx5Ci1y ZWNvbW1lbmRlZCB0byB1c2UgdGhlc2UgbWFjcm9zIGluc3RlYWQgb2YgZG9pbmcgc29tZXRoaW5n IGJ5IG91cnNlbGYuIFVzaW5nIHRoZXNlCi1tYWNyb3MgaXMgcG9ydGFibGUgYW5kIHN1Y2ggZWFz aWVyIHRvIG1haW50YWluIGluIHRoZSBjYXNlIGEgcHJvamVjdCBzaG91bGQgYmUKLXVwZ3JhZGVk IHRvIGEgbW9yZSByZWNlbnQgUFRYZGlzdCB2ZXJzaW9uLgotCi1UaGlzIGNoYXB0ZXIgZGVzY3Jp YmVzIHRoZSBwcmVkZWZpbmVkIG1hY3JvcyBpbiBQVFhkaXN0IGFuZCB0aGVpciB1c2FnZS4KLQot V2hlbmV2ZXIgb25lIG9mIHRoZXNlIG1hY3JvcyBpbnN0YWxscyBzb21ldGhpbmcgdG8gdGhlIHRh cmdldCdzIHJvb3QgZmlsZXN5c3RlbSwKLWl0IGFsc28gYWNjZXB0cyB1c2VyIGFuZCBncm91cCBJ RHMgd2hpY2ggYXJlIGNvbW1vbiBpbiBhbGwgZmlsZXN5c3RlbXMgTGludXgKLXN1cHBvcnRzLiBU aGVzZSBJRHMgY2FuIGJlIGdpdmVuIGFzIG51bWVyaWNhbCB2YWx1ZXMgYW5kIGFzIHRleHQgc3Ry aW5ncy4KLUluIHRoZSBjYXNlIHRleHQgc3RyaW5ncyBhcmUgZ2l2ZW4gUFRYZGlzdCBjb252ZXJ0 cyB0aGVtIGludG8gdGhlCi1jb3JyZXNwb25kaW5nIG51bWVyaWNhbCB2YWx1ZSBiYXNlZCBvbiB0 aGUgQlNQIGxvY2FsIGZpbGVzIDpmaWxlOmBwYXNzd2RgIGFuZCA6ZmlsZTpgZ3JvdXBgLgotSWYg bW9yZSB0aGFuIG9uZSBmaWxlIHdpdGggdGhlc2UgbmFtZXMgYXJlIHByZXNlbnQgaW4gdGhlIEJT UCBQVFhkaXN0IGZvbGxvd3MKLWl0cyByZWd1bGFyIHJ1bGVzIHdoaWNoIG9uZSBpdCBwcmVmZXJz LgotCi1NYW55IHBhdGhzIHNob3duIGhlcmUgY29udGFpbnMgc29tZSBwYXJ0cyBpbiBhbmdsZSBi cmFja2V0cy4gVGhlc2UgaGF2ZQotc3BlY2lhbCBtZWFuaW5ncyBpbiB0aGlzIGRvY3VtZW50Lgot Ci0qKjxwbGF0Zm9ybT4qKgotICBUaGUgbmFtZSBvZiBhIHBsYXRmb3JtLiBDb3JyZXNwb25kcyB0 byB0aGUgdmFyaWFibGUKLSAgYGBQVFhDT05GX1BMQVRGT1JNYGAKLSoqPHBsYXRmb3JtLXNyYz4q KgotICBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBwbGF0Zm9ybSBpcyBkZWZpbmVkLiBDb3JyZXNw b25kcyB0byB0aGUgdmFyaWFibGUKLSAgYGBQVFhESVNUX1BMQVRGT1JNQ09ORklHRElSYGAKLSoq PHBsYXRmb3JtLWRpcj4qKgotICBDb25jYXRlbmF0ZWQgZGlyZWN0b3J5IG5hbWUgd2l0aCBhIGxl YWRpbmcgKnBsYXRmb3JtLSogYW5kIHRoZSBuYW1lIG9mIHRoZQotICBzZWxlY3RlZCBwbGF0Zm9y bSBuYW1lLCBlLmcuIDxwbGF0Zm9ybT4uIElmIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0 aXZlCi0gIHBsYXRmb3JtIGlzICpmb28qLCB0aGUgZmluYWwgZGlyZWN0b3J5IG5hbWUgaXMgKnBs YXRmb3JtLWZvbyouCi0gIENvcnJlc3BvbmRzIHRvIHRoZSB2YXJpYWJsZSBgYFBUWERJU1RfUExB VEZPUk1ESVJgYAotCi0uLiBub3RlOjogVGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIG1hY3JvcyBpcyBu b3QgY29tcGxldGUgeWV0LgotCi10YXJnZXRpbmZvCi1+fn5+fn5+fn5+Ci0KLVVzYWdlOgotCi0u LiBjb2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIHRhcmdldGluZm8pCi0KLUdpdmVzIGEgZmVl ZGJhY2ssIHdoYXQgYnVpbGQgKnN0YWdlKiBpcyBqdXN0IHN0YXJ0ZWQuIFRoYXQncyB3aHkgaXQK LXNob3VsZCBhbHdheXMgYmUgdGhlIGZpcnN0IGNhbGwgZm9yIGVhY2ggKnN0YWdlKi4gRm9yIHRo ZSBwYWNrYWdlCi0qZm9vKiBhbmQgdGhlICpjb21waWxlIHN0YWdlKiBpdCB3aWxsIG91dHB1dDoK LQotLi4gY29kZS1ibG9jazo6IGJhc2gKLQotIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gdGFyZ2V0 OiBmb28uY29tcGlsZQotIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRvdWNoCi1+fn5+fn4KLQot VXNhZ2U6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAkKGNhbGwgdG91Y2gpCi0KLUdpdmVz IGEgZmVlZGJhY2ssIHdoYXQgYnVpbGQgKnN0YWdlKiBpcyBqdXN0IGZpbmlzaGVkLiBUaGF0J3Mg d2h5IGl0Ci1zaG91bGQgYWx3YXlzIGJlIHRoZSBsYXN0IGNhbGwgZm9yIGVhY2ggKnN0YWdlKi4g Rm9yIHRoZSBwYWNrYWdlCi0qZm9vKiBhbmQgdGhlICpjb21waWxlIHN0YWdlKiBpdCB3aWxsIG91 dHB1dDoKLQotLi4gY29kZS1ibG9jazo6IGJhc2gKLQotIGZpbmlzaGVkIHRhcmdldCBmb28uY29t cGlsZQotCi1jbGVhbgotfn5+fn4KLQotVXNhZ2U6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0K LSAkKGNhbGwgY2xlYW4sIDxkaXJlY3RvcnkgcGF0aD4pCi0KLVJlbW92ZXMgdGhlIGdpdmVuIGRp cmVjdG9yeSBgYDxkaXJlY3RvcnkgcGF0aD5gYAotCi0uLiBfaW5zdGFsbF9jb3B5OgotCi13b3Js ZC9nZXQsIHdvcmxkL2V4dHJhY3QsIHdvcmxkL3ByZXBhcmUsIHdvcmxkL2NvbXBpbGUsIHdvcmxk L2luc3RhbGwKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1Vc2FnZToKLQotLi4gY29kZS1ibG9jazo6IG1ha2UK LQotICQoY2FsbCB3b3JsZC9nZXQsIDxQS0c+KQotCi1UaGUgc2FtZSBmb3IgYWxsIG90aGVyIG1h Y3Jvcy4gVGhlc2UgYXJlIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbW1hbmRzIGZvciB0aGUKLWNvcnJl c3BvbmRpbmcgc3RhZ2VzLiBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBv ZiB0aGUgZGVmYXVsdAotc3RhZ2VzIGJlbG93LgotCi1jb21waWxlCi1+fn5+fn5+Ci0KLVVzYWdl OgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIGNvbXBpbGUsIDxQS0c+LCA8YnVp bGQgYXJndW1lbnRzPikKLQotVGhpcyBtYWNybyBpcyB2ZXJ5IHNpbWlsYXIgdG8gYGB3b3JsZC9j b21waWxlYGAuIFRoZSBvbmx5IGRpZmZlcmVuY2VzIGlzCi10aGF0IGlzIHVzZXMgdGhlIHNwZWNp ZmllZCBgYGJ1aWxkIGFyZ3VtZW50c2BgIGluc3RlYWQgb2YKLWBgPFBLRz5fTUFLRV9PUFRgYC4g VGhpcyBpcyB1c2VmdWxsIGlmIGBgbWFrZWBgIG5lZWRzIHRvIGJlIGNhbGxlZCBtb3JlCi10aGFu IG9uY2UgaW4gdGhlIGNvbXBpbGUgc3RhZ2UuCi0KLXdvcmxkL2V4ZWN1dGUsIGV4ZWN1dGUKLX5+ fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotVXNhZ2U6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0K LSAkKGNhbGwgZXhlY3V0ZSwgPFBLRz4sIDxjb21tYW5kIHdpdGggYXJndW1lbnRzPikKLSAkKGNh bGwgd29ybGQvZXhlY3V0ZSwgPFBLRz4sIDxjb21tYW5kIHdpdGggYXJndW1lbnRzPikKLQotVGhl c2UgbWFjcm9zIG1ha2UgaXQgcG9zc2libGUgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29tbWFuZHMg ZHVyaW5nIHRoZQotYnVpbGQgc3RhZ2VzLiBUaGlzIGlzIHVzZWZ1bGwgYmVjYXVzZSB0aGUgZW52 aXJvbm1lbnQgaXMgaWRlbnRpY2FsIHRvIHRoZQotZGVmYXVsdCBidWlsZCBjb21tYW5kcyBgYHdv cmxkLypgYC4KLQotYGB3b3JsZC9leGVjdXRlYGAgYWxzbyBoYW5kbGVzIHRoZSBnZW5lcmljIHNl dHVwIGhhbmRsZWQgaW4gdGhlIGN1cnJlbnQKLWJ1aWxkIHN0YWdlLiBGb3IgYGBwcmVwYXJlYGAg dGhpcyBtZWFucyB0aGF0LCBmb3Igb3V0IG90IHRyZWUgYnVpbGRzLCB0aGUKLWJ1aWxkIGRpcmVj dG9yeSBpcyBkZWxldGVkIHByaW9yIHRvIGV4ZWN1dGluZyB0aGUgc3BlY2lmaWVkIGNvbW1hbmQu Ci1Gb3IgYGBpbnN0YWxsYGAgdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGlzIGRlbGV0ZWQuCi0KLVdo ZW4gYGAtLXZlcmJvc2VgYCBpcyB1c2VkIHRoZW4gdGhlIGZ1bGwgY29tbWFuZCBpcyBsb2dnZWQu IFdpdGgKLWBgLS1xdWlldGBgIGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIHJlZGlyZWN0ZWQg dG8gdGhlIGxvZ2ZpbGUuCi0KLWluc3RhbGxfY29weQotfn5+fn5+fn5+fn5+fgotCi1Vc2FnZToK LQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICQoY2FsbCBpbnN0YWxsX2NvcHksIDxwYWNrYWdl PiwgPFVJRD4sIDxHSUQ+LCA8cGVybWlzc2lvbj4sIDxzb3VyY2U+IFssIDxkZXN0PiBbLCA8c3Ry aXA+IF1dKQotCi1JbnN0YWxscyBnaXZlbiBmaWxlIG9yIGRpcmVjdG9yeSBpbnRvOgotCi0qIHRo ZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9yb290L2BgCi0qIGFuIGlwa2cvb3BrZyBwYWNr ZXQgaW4gdGhlIHByb2plY3QncyBgYDxwbGF0Zm9ybS1kaXI+L3BhY2thZ2VzL2BgCi0KLVNvbWUg b2YgdGhlIHBhcmFtZXRlcnMgaGF2ZSBmaXhlZCBtZWFuaW5nczoKLQotKio8cGFja2FnZT4qKgot ICBOYW1lIG9mIHRoZSBJUEtHL09QS0cgdGhlIG1hY3JvIHNob3VsZCB3b3JrIG9uCi0qKjxVSUQ+ KioKLSAgVXNlciBJRCB0aGUgZmlsZSBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290IGZp bGVzeXN0ZW0KLSoqPEdJRD4qKgotICBHcm91cCBJRCB0aGUgZmlsZSBzaG91bGQgdXNlIGluIHRo ZSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0KLSoqPHBlcm1pc3Npb24+KioKLSAgUGVybWlzc2lv biAoaW4gYW4gb2N0YWwgdmFsdWUpIHRoZSBmaWxlIHNob3VsZCB1c2UgaW4gdGhlIHRhcmdldCdz IHJvb3QgZmlsZXN5c3RlbQotCi1UaGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgdmFyeSB3aXRoIHRo ZSB1c2UgY2FzZToKLQotVGhlIGBgPHNvdXJjZT5gYCBwYXJhbWV0ZXIgY2FuIGJlOgotCi0qIGEg ZGlyZWN0b3J5IHBhdGggdGhhdCBzaG91bGQgYmUgY3JlYXRlZCBpbiB0aGUgdGFyZ2V0J3Mgcm9v dCBmaWxlc3lzdGVtLgotICBJbiB0aGlzIGNhc2UgdGhlIDxkZXN0aW5hdGlvbj4gbXVzdCBiZSBv bWl0dGVkLgotICBUaGUgZ2l2ZW4gcGF0aCBtdXN0IGFsd2F5cyBzdGFydCB3aXRoIGEgYGAvYGAg YW5kIG1lYW5zIHRoZSByb290Ci0gIG9mIHRoZSB0YXJnZXQncyBmaWxlc3lzdGVtLgotKiBhbiBh YnNvbHV0ZSBwYXRoIHRvIGEgZmlsZSB0aGF0IHNob3VsZCBiZSBjb3BpZWQgdG8gdGhlIHRhcmdl dCdzIHJvb3QKLSAgZmlsZXN5c3RlbS4gVG8gYXZvaWQgZml4ZWQgcGF0aHMsIGFsbCBwYWNrYWdl cyBhcmUgcHJvdmlkaW5nIHRoZQotICA8UEtHPl9ESVIgdmFyaWFibGUuIFNvLCB0aGlzIHBhcmFt ZXRlciBpbiBvdXIKLSAgKmZvbyogZXhhbXBsZSBwYWNrYWdlIGNhbiBiZSBhIGBgJChGT09fRElS KS9mb29gYC4KLSogYSBtaW51cyBzaWduIChgYC1gYCkuIFBUWGRpc3QgdXNlcyB0aGUgPGRlc3Rp bmF0aW9uPgotICBwYXJhbWV0ZXIgaW4gdGhpcyBjYXNlIHRvIGxvY2F0ZSB0aGUgZmlsZSB0byBj b3B5IGZyb20uIAotICBUaGUgPGRlc3RpbmF0aW9uPiBpcyB1c2VzIGEgcGF0aCByZWxhdGl2ZSB0 byB0aGUgOnJlZjpgcGFja2FnZSBpbnN0YWxsCi0gIGRpcmVjdG9yeTxwa2dfcGtnZGlyPmAuIFRo aXMgb25seSB3b3JrcyBpZiB0aGUgcGFja2FnZSB1c2VzIHRoZSBkZWZhdWx0Ci0gIG9yIGEgc2lt aWxhciAqaW5zdGFsbCogc3RhZ2UuIEZvciBvdXIgKmZvbyogZXhhbXBsZSB1c2VkIHNvdXJjZSBm aWxlIGlzCi0gIGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvZm9vLTEuMS4wLzxkZXN0aW5hdGlv bj5gYC4KLQotVGhlIGBgPGRlc3Q+YGAgcGFyYW1ldGVyIGNhbiBiZToKLQotKiBvbWl0dGVkIGlm IGEgZGlyZWN0b3J5IGluIHRhcmdldCdzIHJvb3QgZmlsZXN5c3RlbSBzaG91bGQgYmUgY3JlYXRl ZC4KLSAgRm9yIHRoaXMgY2FzZSB0aGUgZGlyZWN0b3J5IHRvIGJlIGNyZWF0ZWQgaXMgaW4gdGhl IDxzb3VyY2U+IHBhcmFtZXRlci4KLSogYW4gYWJzb2x1dGUgcGF0aCBhbmQgZmlsZW5hbWUgd2l0 aCBpdHMgcm9vdCBpbiB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0uCi0gIEl0IG11c3Qgc3RhcnQg d2l0aCBhIHNsYXNoIChgYC8vYGApLiBJZiBhbHNvIHRoZSA8c291cmNlPgotICBwYXJhbWV0ZXIg d2FzIGdpdmVuLCB0aGUgZmlsZSBjYW4gYmUgcmVuYW1lZCB3aGlsZSBjb3B5aW5nLgotICBJZiB0 aGUgPHNvdXJjZT4gcGFyYW1ldGVyIHdhcyBnaXZlbiBhcyBhIG1pbnVzCi0gIHNpZ24gKGBgLWBg KSB0aGUgPGRlc3RpbmF0aW9uPiBpcyBhbHNvIHVzZWQgdG8KLSAgbG9jYXRlIHRoZSBzb3VyY2Uu IEZvciBvdXIgKmZvbyogZXhhbXBsZSBwYWNrYWdlIGlmIHdlIGdpdmUKLSAgPGRlc3RpbmF0aW9u PiBhcyBgYC91c3IvYmluL2Zvb2BgLCBQVFhkaXN0Ci0gIGNvcGllcyB0aGUgZmlsZSBgYDxwbGF0 Zm9ybS1kaXI+L3BhY2thZ2VzL2Zvby0xLjEuMC91c3IvYmluL2Zvb2BgCi0KLVRoZSBgYDxzdHJp cD5gYCBpcyBhIGNvbXBsZXRlIG9wdGlvbmFsIHBhcmFtZXRlciB0byBwcmV2ZW50Ci10aGlzIG1h Y3JvIGZyb20gdGhlIHJlZ3VsYXIgc3RyaXBwaW5nIHByb2Nlc3MgaXQgZG9lcyBvbiBmaWxlcy4g TW9zdCBvZiB0aGUgY2FzZXMKLXN0cmlwcGluZyBkZWJ1ZyBpbmZvcm1hdGlvbiBmcm9tIGZpbGVz IGlzIGludGVuZGVkLiBCdXQgc29tZSBraW5kIG9mIGZpbGVzIGdldHRpbmcKLWRlc3Ryb3llZCB3 aGVuIHRoaXMgc3RyaXBwaW5nIGhhcHBlbnMgdG8gdGhlbS4gT25lIGV4YW1wbGUgaXMgYSBMaW51 eCBrZXJuZWwgbW9kdWxlLgotSWYgaXQgZ2V0cyBzdHJpcHBlZCwgaXQgY2FuJ3QgYmUgbG9hZGVk IGludG8gdGhlIGtlcm5lbCBhbnltb3JlLgotCi0qKmZ1bGwgc3RyaXAqKgotICBmdWxseSBzdHJp cCB0aGUgZmlsZSB3aGlsZSBpbnN0YWxsaW5nIHdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgKip5Kiog b3Igbm90Ci0gIGdpdmVuIGF0IGFsbCAoZGVmYXVsdCBjYXNlKS4KLSoqcGFydGlhbGx5IHN0cmlw KioKLSAgb25seSBzdHJpcHMgcmVhbCBkZWJ1ZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmaWxlIHdo ZW4gdGhpcyBwYXJhbWV0ZXIgaXMKLSAgKiprKiouIFVzZWZ1bCB0byBrZWVwIExpbnV4IGtlcm5l bCBtb2R1bGUgbG9hZGFibGUgYXQgcnVuLXRpbWUKLSoqbm8gc3RyaXAqKgotICBwcmVzZXJ2ZSB0 aGUgZmlsZSBmcm9tIGJlaW5nIHN0cmlwcGVkIHdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgb25lIG9m IHRoZQotICBmb2xsb3dpbmc6ICoqMCoqLCAqKm4qKiwgKipubyoqLCAqKk4qKiBvciAqKk5PKiou Ci0KLUR1ZSB0byB0aGUgY29tcGxleGl0eSBvZiB0aGlzIG1hY3JvLCBoZXJlIGFyZSBzb21lIHVz YWdlIGV4YW1wbGVzOgotCi1DcmVhdGUgYSBkaXJlY3RvcnkgaW4gdGhlIHJvb3QgZmlsZXN5c3Rl bToKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICQoY2FsbCBpbnN0YWxsX2NvcHksIGZvbywg MCwgMCwgMDc1NSwgL2hvbWUvdXNlci1mb28pCi0KLUNvcHkgYSBmaWxlIGZyb20gdGhlIHBhY2th Z2UgYnVpbGQgZGlyZWN0b3J5IHRvIHRoZSByb290IGZpbGVzeXN0ZW06Ci0KLS4uIGNvZGUtYmxv Y2s6OiBtYWtlCi0KLSAkKGNhbGwgaW5zdGFsbF9jb3B5LCBmb28sIDAsIDAsIDA3NTUsICQoRk9P X0RJUikvZm9vLCAvdXNyL2Jpbi9mb28pCi0KLUNvcHkgYSBmaWxlIGZyb20gdGhlIHBhY2thZ2Ug YnVpbGQgZGlyZWN0b3J5IHRvIHRoZSByb290IGZpbGVzeXN0ZW0gYW5kIHJlbmFtZQotaXQ6Ci0K LS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAkKGNhbGwgaW5zdGFsbF9jb3B5LCBmb28sIDAsIDAs IDA3NTUsICQoRk9PX0RJUikvZm9vLCAvdXNyL2Jpbi9iYXIpCi0KLUNvcHkgYSBmaWxlIGZyb20g dGhlIHBhY2thZ2UgaW5zdGFsbCBkaXJlY3RvcnkgdG8gdGhlIHJvb3QgZmlsZXN5c3RlbToKLQot Li4gY29kZS1ibG9jazo6IG1ha2UKLQotICQoY2FsbCBpbnN0YWxsX2NvcHksIGZvbywgMCwgMCwg MDc1NSwgLSwgL3Vzci9iaW4vZm9vKQotCi0uLiBfaW5zdGFsbF90cmVlLHJlZmVyZW5jZToKLQot aW5zdGFsbF90cmVlCi1+fn5+fn5+fn5+fn4KLQotVXNhZ2U6Ci0KLS4uIGNvZGUtYmxvY2s6OiBt YWtlCi0KLSAkKGNhbGwgaW5zdGFsbF90cmVlLCA8cGFja2FnZT4sIDxVSUQ+LCA8R0lEPiwgPHNv dXJjZSBkaXI+LCA8ZGVzdGluYXRpb24gZGlyPikKLQotSW5zdGFsbHMgdGhlIHdob2xlIGRpcmVj dG9yeSB0cmVlIHdpdGggYWxsIGZpbGVzIGZyb20gdGhlIGdpdmVuIGRpcmVjdG9yeSBpbnRvOgot Ci0qIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9yb290L2BgCi0qIGFuIGlwa2cgcGFj a2V0IGluIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9gYAotCi1Tb21l IG9mIHRoZSBwYXJhbWV0ZXJzIGhhdmUgZml4ZWQgbWVhbmluZ3M6Ci0KLSoqPHBhY2thZ2U+KioK LSAgTmFtZSBvZiB0aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgotKio8VUlE PioqCi0gIFVzZXIgSUQgdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBzaG91bGQgdXNlIGluIHRo ZSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0KLSAgb3IgYGAtYGAgdG8ga2VlcCB0aGUgVUlEIGZy b20gdGhlIHNvdXJjZSB0cmVlCi0qKjxHSUQ+KioKLSAgR3JvdXAgSUQgdGhlIGRpcmVjdG9yaWVz IGFuZCBmaWxlcyBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0KLSAg b3IgYGAtYGAgdG8ga2VlcCB0aGUgR0lEIGZyb20gdGhlIHNvdXJjZSB0cmVlCi0qKjxzb3VyY2Ug ZGlyPioqCi0gIFRoaXMgaXMgdGhlIHBhdGggdG8gdGhlIHRyZWUgb2YgZGlyZWN0b3JpZXMgYW5k IGZpbGVzIHRvIGJlIGluc3RhbGxlZC4gSXQgY2FuCi0gIGJlIGBgLWBgIHRvIHVzZSB0aGUgcGFj a2FnZSBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgcGFja2FnZSBpbnN0ZWFkCi0qKjxkZXN0aW5h dGlvbiBkaXI+KioKLSAgVGhlIGJhc2VuYW1lIG9mIHRoZSB0by1iZS1pbnN0YWxsZWQgdHJlZSBp biB0aGUgcm9vdCBmaWxlc3lzdGVtCi0KLU5vdGU6IFRoaXMgaW5zdGFsbGF0aW9uIG1hY3JvCi0K LSogdXNlcyB0aGUgc2FtZSBwZXJtaXNzaW9uIGZsYWdzIGluIHRoZSBkZXN0aW5hdGlvbiBkaXIg YXMgZm91bmQKLSAgaW4gdGhlIHNvdXJjZSBkaXIuIFRoaXMgaXMgdmFsaWQgZm9yIGRpcmVjdG9y aWVzIGFuZCByZWd1bGFyIGZpbGVzCi0qIHNraXBzIGFsbCBkaXJlY3RvcmllcyB3aXRoIG5hbWVz IGxpa2UgYGAuc3ZuYGAsIGBgLmdpdGBgLCBgYC5wY2BgIGFuZAotICBgYENWU2BgIGluIHRoZSBz b3VyY2UgZGlyZWN0b3J5Ci0KLUV4YW1wbGVzOgotCi1JbnN0YWxsIHRoZSB3aG9sZSB0cmVlIGZv dW5kIGluIGBgL2hvbWUvamJlL2Zvb2BgIHRvIHRoZSByb290IGZpbGVzeXN0ZW0KLWF0IGxvY2F0 aW9uIGBgL3Vzci9zaGFyZS9iYXJgYC4KLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICQoY2Fs bCBpbnN0YWxsX3RyZWUsIGZvbywgMCwgMCwgL2hvbWUvamJlL2ZvbywgL3Vzci9zaGFyZS9iYXIp Ci0KLUluc3RhbGwgYWxsIGZpbGVzIGZyb20gdGhlIHRyZWUgZm91bmQgaW4gdGhlIGN1cnJlbnQg cGFja2FnZSBGT08gdG8gdGhlIHJvb3QKLWZpbGVzeXN0ZW0gYXQgbG9jYXRpb24gYGAvdXNyL3No YXJlL2JhcmBgLgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIGluc3RhbGxfdHJl ZSwgZm9vLCAwLCAwLCAtLCAvdXNyL3NoYXJlL2JhcikKLQotSWYgdGhlIGN1cnJlbnQgcGFja2Fn ZSBpcyBgYGZvby0xLjBgYCB0aGUgYmFzZSBwYXRoIGZvciB0aGUgZGlyZWN0b3J5IHRyZWUKLXdp bGwgYmUgYGAkKFBLR0RJUikvZm9vLTEuMC91c3Ivc2hhcmUvYmFyYGAuCi0KLWluc3RhbGxfYWx0 ZXJuYXRpdmVfdHJlZQotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVVzYWdlOgotCi0uLiBj b2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIGluc3RhbGxfYWx0ZXJuYXRpdmVfdHJlZSwgPHBh Y2thZ2U+LCA8VUlEPiwgPEdJRD4sIDxkZXN0aW5hdGlvbiBkaXI+KQotCi1JbnN0YWxscyB0aGUg d2hvbGUgc291cmNlIGRpcmVjdG9yeSB0cmVlIHdpdGggYWxsIGZpbGVzIGZyb20gdGhlIGdpdmVu IGRpcmVjdG9yeSBpbnRvOgotCi0qIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9yb290 L2BgCi0qIGFuIGlwa2cgcGFja2V0IGluIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9w YWNrYWdlcy9gYAotCi1UaGUgYGA8ZGVzdGluYXRpb24gZGlyPmBgIGlzIHVzZWQgbGlrZSBpbiB0 aGUgYGBpbnN0YWxsX2FsdGVybmF0aXZlYGAgdG8gbGV0Ci1QVFhkaXN0IHNlYXJjaCBpbiB0aGUg c2FtZSBkaXJlY3RvcmllcyBhbmQgb3JkZXIgZm9yIHRoZSBnaXZlbiBkaXJlY3RvcnkuCi0KLVNv bWUgb2YgdGhlIHBhcmFtZXRlcnMgaGF2ZSBmaXhlZCBtZWFuaW5nczoKLQotKio8cGFja2FnZT4q KgotICBOYW1lIG9mIHRoZSBJUEtHL09QS0cgdGhlIG1hY3JvIHNob3VsZCB3b3JrIG9uCi0qKjxV SUQ+KioKLSAgVXNlciBJRCB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIHNob3VsZCB1c2UgaW4g dGhlIHRhcmdldCdzIHJvb3QgZmlsZXN5c3RlbQotICBvciBgYC1gYCB0byBrZWVwIHRoZSBVSUQg ZnJvbSB0aGUgc291cmNlCi0qKjxHSUQ+KioKLSAgR3JvdXAgSUQgdGhlIGRpcmVjdG9yaWVzIGFu ZCBmaWxlcyBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290Ci0gIGZpbGVzeXN0ZW0gb3Ig YGAtYGAgdG8ga2VlcCB0aGUgR0lEIGZyb20gdGhlIHNvdXJjZQotKio8ZGVzdGluYXRpb24gZGly PioqCi0gIFRoZSBiYXNlbmFtZSBvZiB0aGUgdG8tYmUtaW5zdGFsbGVkIHRyZWUgaW4gdGhlIHJv b3QgZmlsZXN5c3RlbQotCi0uLiBub3RlOjogVGhpcyBpbnN0YWxsYXRpb24gbWFjcm8KLQotICAq IHVzZXMgdGhlIHNhbWUgcGVybWlzc2lvbiBmbGFncyBpbiB0aGUgZGVzdGluYXRpb24gZGlyIGFz IGZvdW5kIGluIHRoZSBzb3VyY2UKLSAgICBkaXIuIFRoaXMgaXMgdmFsaWQgZm9yIGRpcmVjdG9y aWVzIGFuZCByZWd1bGFyIGZpbGVzCi0gICogc2tpcHMgYWxsIGRpcmVjdG9yaWVzIHdpdGggbmFt ZXMgbGlrZSBgYC5zdm5gYCwgYGAuZ2l0YGAsIGBgLnBjYGAgYW5kIGBgQ1ZTYGAKLSAgICBpbiB0 aGUgc291cmNlIGRpcmVjdG9yeQotCi1FeGFtcGxlczoKLQotSW5zdGFsbCB0aGUgd2hvbGUgdHJl ZSBmb3VuZCBpbiBwcm9qZWN0J3MgYGBwcm9qZWN0cm9vdC91c3Ivc2hhcmUvYmFyYGAKLXRvIHRo ZSByb290IGZpbGVzeXN0ZW0gYXQgbG9jYXRpb24gYGAvdXNyL3NoYXJlL2JhcmBgLgotCi0uLiBj b2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIGluc3RhbGxfYWx0ZXJuYXRpdmVfdHJlZSwgZm9v LCAwLCAwLCAvdXNyL3NoYXJlL2JhcikKLQotVG8gaW5zdGFsbCBub3RoaW5nLCB1c2UgYSBzeW1s aW5rIHRvIGBgL2Rldi9udWxsYGAgaW5zdGVhZCBvZiB0aGUgYmFzZQotZGlyZWN0b3J5LiBTZWUg OnJlZjpgaW5zdGFsbF9hbHRlcm5hdGl2ZWAgZm9yIG1vcmUgZGV0YWlscy4KLQotLi4gX2luc3Rh bGxfYWx0ZXJuYXRpdmU6Ci0KLWluc3RhbGxfYWx0ZXJuYXRpdmUKLX5+fn5+fn5+fn5+fn5+fn5+ fn4KLQotVXNhZ2U6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAkKGNhbGwgaW5zdGFsbF9h bHRlcm5hdGl2ZSwgPHBhY2thZ2U+LCA8VUlEPiwgPEdJRD4sIDxwZXJtaXNzaW9uPiwgPGRlc3Rp bmF0aW9uPikKLQotSW5zdGFsbHMgZ2l2ZW4gZmlsZXMgb3IgZGlyZWN0b3JpZXMgaW50bzoKLQot KiB0aGUgcHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcm9vdC9gYAotKiBhbiBpcGtnL29wa2cg cGFja2V0IGluIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9gYAotCi1U aGUgYmFzZSBwYXJhbWV0ZXJzIGFuZCB0aGVpciBtZWFuaW5nczoKLQotKio8cGFja2FnZT4qKgot ICBOYW1lIG9mIHRoZSBJUEtHL09QS0cgdGhlIG1hY3JvIHNob3VsZCB3b3JrIG9uCi0qKjxVSUQ+ KioKLSAgVXNlciBJRCB0aGUgZmlsZSBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290IGZp bGVzeXN0ZW0KLSoqPEdJRD4qKgotICBHcm91cCBJRCB0aGUgZmlsZSBzaG91bGQgdXNlIGluIHRo ZSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0KLSoqPHBlcm1pc3Npb24+KioKLSAgUGVybWlzc2lv biAoaW4gYW4gb2N0YWwgdmFsdWUpIHRoZSBmaWxlIHNob3VsZCB1c2UgaW4gdGhlIHRhcmdldCdz IHJvb3QgZmlsZXN5c3RlbQotCi1UaGUgcGFyYW1ldGVyIDxkZXN0aW5hdGlvbj4gaXMgbWVhbnQg YXMgYW4gYWJzb2x1dGUgcGF0aAotYW5kIGZpbGVuYW1lIGluIHRhcmdldCdzIHJvb3QgZmlsZXN5 c3RlbS4gUFRYZGlzdCBzZWFyY2hlcyBmb3IgdGhlIHNvdXJjZQotb2YgdGhpcyBmaWxlIGluOgot Ci0qIHRoZSBsb2NhbCBwcm9qZWN0Ci0qIGluIHRoZSB1c2VkIHBsYXRmb3JtCi0qIFBUWGRpc3Qn cyBpbnN0YWxsIHBhdGgKLSogaW4gdGhlIGN1cnJlbnQgcGFja2FnZQotCi1BcyB0aGlzIHNlYXJj aCBhbGdvcml0aG0gaXMgY29tcGxleCwgaGVyZSBhbiBleGFtcGxlIGZvciB0aGUgZmlsZQotYGAv ZXRjL2Zvb2BgIGluIHBhY2thZ2UgYGBGT09gYC4gUFRYZGlzdCB3aWxsIHNlYXJjaCBmb3IgdGhp cwotZmlsZSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgotCi0qIHByb2plY3QncyBkaXJlY3Rvcnkg YGBwcm9qZWN0cm9vdC48cGxhdGZvcm0+L2V0Yy9mb29gYAotKiBwcm9qZWN0J3MgZGlyZWN0b3J5 IGBgcHJvamVjdHJvb3QvZXRjL2Zvby48cGxhdGZvcm0+YGAKLSogcGxhdGZvcm0ncyBkaXJlY3Rv cnkgYGA8cGxhdGZvcm0tc3JjPi9wcm9qZWN0cm9vdC9ldGMvZm9vLjxwbGF0Zm9ybT5gYAotKiBw cm9qZWN0J3MgZGlyZWN0b3J5IGBgcHJvamVjdHJvb3QvZXRjL2Zvb2BgCi0qIHBsYXRmb3JtJ3Mg ZGlyZWN0b3J5IGBgPHBsYXRmb3JtLXNyYz4vcHJvamVjdHJvb3QvZXRjL2Zvb2BgCi0qIHB0eGRp c3QncyBkaXJlY3RvcnkgYGBwcm9qZWN0cm9vdC9ldGMvZm9vYGAKLSogcGFja2FnZSdzIGRpcmVj dG9yeSBgYCQoRk9PX1BLR0RJUikvZXRjL2Zvb2BgCi0qIHBhY2thZ2UncyBkaXJlY3RvcnkgYGAk KEZPT19ESVIpL2V0Yy9mb29gYAotCi1UaGUgZ2VuZXJpYyBydWxlcyBhcmUgbG9va2luZyBsaWtl IHRoZSBmb2xsb3dpbmc6Ci0KLSogYGAkKFBUWERJU1RfV09SS1NQQUNFKS9wcm9qZWN0cm9vdCQo UFRYRElTVF9QTEFURk9STVNVRkZJWCkvZXRjL2Zvb2BgCi0qIGBgJChQVFhESVNUX1dPUktTUEFD RSkvcHJvamVjdHJvb3QvZXRjL2ZvbyQoUFRYRElTVF9QTEFURk9STVNVRkZJWClgYAotKiBgYCQo UFRYRElTVF9QTEFURk9STUNPTkZJR0RJUikvcHJvamVjdHJvb3QvZXRjL2ZvbyQoUFRYRElTVF9Q TEFURk9STVNVRkZJWClgYAotKiBgYCQoUFRYRElTVF9XT1JLU1BBQ0UpL3Byb2plY3Ryb290L2V0 Yy9mb29gYAotKiBgYCQoUFRYRElTVF9QTEFURk9STUNPTkZJR0RJUikvcHJvamVjdHJvb3QvZXRj L2Zvb2BgCi0qIGBgJChQVFhESVNUX1RPUERJUikvcHJvamVjdHJvb3QvZXRjL2Zvb2BgCi0qIGBg JChGT09fUEtHRElSKS9ldGMvZm9vYGAKLSogYGAkKEZPT19ESVIpL2V0Yy9mb29gYAotCi1Ob3Rl OiBZb3UgY2FuIGdldCB0aGUgY3VycmVudCB2YWx1ZXMgZm9yIHRoZSBsaXN0ZWQgdmFyaWFibGVz IGFib3ZlIHZpYSBydW5uaW5nCi1QVFhkaXN0IHdpdGggdGhlIGBgcHJpbnRgYCBwYXJhbWV0ZXI6 Ci0KLS4uIGNvZGUtYmxvY2s6OiBiYXNoCi0KLSAkIHB0eGRpc3QgcHJpbnQgUFRYRElTVF9QTEFU Rk9STVNVRkZJWAotCi1gYGluc3RhbGxfYWx0ZXJuYXRpdmVgYCBpcyB1c2VkIGJ5IHVwc3RyZWFt IFBUWGRpc3QgcGFja2FnZXMgdG8gaW5zdGFsbAotY29uZmlnIGZpbGVzLiBJbiBzb21lIHJhcmUg dXNlLWNhc2VzIHRoZSBmaWxlIHNob3VsZCBub3QgYmUgaW5zdGFsbGVkIGF0Ci1hbGwuIEZvciBl eGFtcGxlIGlmIHRoZSBjb25maWcgZmlsZSBpcyBnZW5lcmF0ZWQgYXQgcnVudGltZSBvciBwcm92 aWRlZCBieQotYSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gcGFja2FnZS4gVGhpcyBpcyBwb3NzaWJs ZSBieSBjcmVhdGluZyBhIHN5bWxpbmsgdG8KLWBgL2Rldi9udWxsYGAgaW5zdGVhZCBvZiBhIGZp bGUgYXQgb25lIG9mIHRoZSBsb2NhdGlvbnMgZGVzY3JpYmVkIGFib3ZlLgotUFRYZGlzdCBza2lw cyBpbnN0YWxsaW5nIHRoZSBmaWxlIGlmIGl0IGRldGVjdHMgc3VjaCBhIHN5bWxpbmsuCi0KLWlu c3RhbGxfbGluawotfn5+fn5+fn5+fn5+Ci0KLVVzYWdlOgotCi0uLiBjb2RlLWJsb2NrOjogbWFr ZQotCi0gJChjYWxsIGluc3RhbGxfbGluaywgPHBhY2thZ2U+LCA8cG9pbnQgdG8+LCA8d2hlcmU+ KQotCi1JbnN0YWxscyBhIHN5bWJvbGljIGxpbmsgaW50bzoKLQotKiB0aGUgcHJvamVjdCdzIGBg PHBsYXRmb3JtLWRpcj4vcm9vdC9gYAotKiBhbiBpcGtnL29wa2cgcGFja2V0IGluIHRoZSBwcm9q ZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9gYAotCi1UaGUgcGFyYW1ldGVycyBhbmQg dGhlaXIgbWVhbmluZ3M6Ci0KLSoqPHBhY2thZ2U+KioKLSAgTmFtZSBvZiB0aGUgSVBLRy9PUEtH IHRoZSBtYWNybyBzaG91bGQgd29yayBvbgotKio8cG9pbnQgdG8+KioKLSAgUGF0aCBhbmQgbmFt ZSB0aGUgbGluayBzaG91bGQgcG9pbnQgdG8uIE5vdGU6IFRoaXMgbWFjcm8gcmVqZWN0cyBhYnNv bHV0ZQotICBwYXRocy4gSWYgbmVlZGVkIHVzZSByZWxhdGl2ZSBwYXRocyBpbnN0ZWFkLgotKio8 d2hlcmU+KioKLSAgUGF0aCBhbmQgbmFtZSBvZiB0aGUgc3ltYm9saWMgbGluay4KLQotQSBmZXcg dXNhZ2UgZXhhbXBsZXMuCi0KLUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgYXMgYGAvdXNyL2xpYi9s aWJmb28uc29gYCBwb2ludGluZyB0bwotYGBsaWJmb28uc28uMS4xLjBgYCBpbiB0aGUgc2FtZSBk aXJlY3Rvcnk6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAkKGNhbGwgaW5zdGFsbF9saW5r LCBmb28sIGxpYmZvby5zby4xLjEuMCwgL3Vzci9saWIvbGliZm9vLnNvKQotCi1DcmVhdGUgYSBz eW1ib2xpYyBsaW5rIGFzIGBgL3Vzci9iaW4vZm9vYGAgcG9pbnRpbmcgdG8gYGAvYmluL2JhcmBg OgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIGluc3RhbGxfbGluaywgZm9vLCAu Li8uLi9iaW4vYmFyLCAvdXNyL2Jpbi9mb28pCi0KLS4uIF9pbnN0YWxsX2FyY2hpdmU6Ci0KLWlu c3RhbGxfYXJjaGl2ZQotfn5+fn5+fn5+fn5+fn5+Ci0KLVVzYWdlOgotCi0uLiBjb2RlLWJsb2Nr OjogbWFrZQotCi0gJChjYWxsIGluc3RhbGxfYXJjaGl2ZSwgPHBhY2thZ2U+LCA8VUlEPiwgPEdJ RD4sIDxhcmNoaXZlPiAsIDxiYXNlIHBhdGg+KQotCi1JbnN0YWxscyBhcmNoaXZlcyBjb250ZW50 IGludG86Ci0KLSogdGhlIHByb2plY3QncyBgYDxwbGF0Zm9ybS1kaXI+L3Jvb3QvYGAKLSogYW4g aXBrZy9vcGtnIHBhY2tldCBpbiB0aGUgcHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcGFja2Fn ZXMvYGAKLQotQWxsIHBhcmFtZXRlcnMgaGF2ZSBmaXhlZCBtZWFuaW5nczoKLQotKio8cGFja2Fn ZT4qKgotICBOYW1lIG9mIHRoZSBJUEtHL09QS0cgdGhlIG1hY3JvIHNob3VsZCB3b3JrIG9uCi0q KjxVSUQ+KioKLSAgVXNlciBJRCBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yeSBvZiB0aGUgYXJjaGl2 ZSBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncwotICByb290IGZpbGVzeXN0ZW0uIEEgYGAtYGAg dXNlcyB0aGUgZmlsZSdzL2RpcmVjdG9yeSdzIFVJRCBpbiB0aGUgYXJjaGl2ZQotKio8R0lEPioq Ci0gIEdyb3VwIElEIHRoZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgc2hvdWxkIHVzZSBpbiB0aGUg dGFyZ2V0J3Mgcm9vdCBmaWxlc3lzdGVtLgotICBBIGBgLWBgIHVzZXMgdGhlIGZpbGUncy9kaXJl Y3RvcnkncyBHSUQgaW4gdGhlIGFyY2hpdmUKLSoqPGFyY2hpdmU+KioKLSAgTmFtZSBvZiB0aGUg YXJjaGl2ZSB0byBiZSB1c2VkIGluIHRoaXMgY2FsbC4gVGhlIGdpdmVuIHBhdGggYW5kIGZpbGVu YW1lIGlzCi0gIHVzZWQgYXMgaXMKLSoqPGJhc2UgcGF0aD4qKgotICBCYXNlIHBhdGggY29tcG9u ZW50IGluIHRoZSByb290IGZpbGVzeXN0ZW0gdGhlIGFyY2hpdmUgc2hvdWxkIGJlIGV4dHJhY3Rl ZAotICB0by4gQ2FuIGJlIGp1c3QgYGAvYGAgZm9yIHJvb3QuCi0KLWluc3RhbGxfZ2xvYgotfn5+ fn5+fn5+fn5+Ci0KLVVzYWdlOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIGlu c3RhbGxfZ2xvYiwgPHBhY2thZ2U+LCA8VUlEPiwgPEdJRD4sIDxzb3VyY2UgZGlyPiwgPGRlc3Rp bmF0aW9uIGRpcj4sIDx5Z2xvYj4sIDxuZ2xvYj5bLCA8c3RyaXA+XSkKLQotSW5zdGFsbHMgcGFy dHMgb2YgYSBkaXJlY3RvcnkgdHJlZSB3aXRoIGFsbCBmaWxlcyBmcm9tIHRoZSBnaXZlbiBkaXJl Y3RvcnkKLWludG86Ci0KLSogdGhlIHByb2plY3QncyBgYDxwbGF0Zm9ybS1kaXI+L3Jvb3QvYGAK LSogYW4gaXBrZyBwYWNrZXQgaW4gdGhlIHByb2plY3QncyBgYDxwbGF0Zm9ybS1kaXI+L3BhY2th Z2VzL2BgCi0KLVNvbWUgb2YgdGhlIHBhcmFtZXRlcnMgaGF2ZSBmaXhlZCBtZWFuaW5nczoKLQot Kio8cGFja2FnZT4qKgotICBOYW1lIG9mIHRoZSBJUEtHL09QS0cgdGhlIG1hY3JvIHNob3VsZCB3 b3JrIG9uCi0qKjxVSUQ+KioKLSAgVXNlciBJRCB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIHNo b3VsZCB1c2UgaW4gdGhlIHRhcmdldCdzIHJvb3QgZmlsZXN5c3RlbQotICBvciBgYC1gYCB0byBr ZWVwIHRoZSBVSUQgZnJvbSB0aGUgc291cmNlIHRyZWUKLSoqPEdJRD4qKgotICBHcm91cCBJRCB0 aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIHNob3VsZCB1c2UgaW4gdGhlIHRhcmdldCdzIHJvb3Qg ZmlsZXN5c3RlbQotICBvciBgYC1gYCB0byBrZWVwIHRoZSBHSUQgZnJvbSB0aGUgc291cmNlIHRy ZWUKLSoqPHNvdXJjZSBkaXI+KioKLSAgVGhpcyBpcyB0aGUgcGF0aCB0byB0aGUgdHJlZSBvZiBk aXJlY3RvcmllcyBhbmQgZmlsZXMgdG8gYmUgaW5zdGFsbGVkLiBJdCBjYW4KLSAgYmUgYGAtYGAg dG8gdXNlIHRoZSBwYWNrYWdlIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBwYWNrYWdlIGluc3Rl YWQKLSoqPGRlc3RpbmF0aW9uIGRpcj4qKgotICBUaGUgYmFzZW5hbWUgb2YgdGhlIHRvLWJlLWlu c3RhbGxlZCB0cmVlIGluIHRoZSByb290IGZpbGVzeXN0ZW0KLSoqPHlnbG9iPioqCi0gIEEgbGlz dCBvZiBwYXRobmFtZSBwYXR0ZXJucy4gQWxsIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRoYXQgbWF0 Y2ggX2FueV8KLSAgcGF0dGVybiBpbiB0aGUgbGlzdCBhcmUgaW5zdGFsbGVkLiBOb3RlOiB0aGUg cGF0dGVybnMgbXVzdCBtYXRjaCB0aGUKLSAgd2hvbGUgYWJzb2x1dGUgcGF0aCwgZS5nLiBgYCov Zm9vYGAuIEFuIGVtcHR5IGxpc3QgaXMgZXF1aXZhbGVudCB0byBhCi0gIHBhdHRlcm4gdGhhdCBt YXRjaGVzIGFsbCBmaWxlcy4KLSoqPG5nbG9iPioqCi0gIExpa2UgYGA8eWdsb2I+YGAgYnV0IGFu eSBtYXRjaGluZyBmaWxlcyBvciBkaXJlY3RvcmllcyB3aWxsIG5vdCBiZQotICBpbnN0YWxsZWQu IEZvciBkaXJlY3RvcmllcywgdGhpcyBpbmNsdWRlcyB0aGUgd2hvbGUgY29udGVudHMgb2YgdGhl Ci0gIGRpcmVjdG9yeS4KLQotRXhjZXB0IGZvciB0aGUgcGF0aG5hbWUgcGF0dGVybnMsIHRoaXMg Y29tbWFuZCB3b3JrcyBsaWtlIGBgaW5zdGFsbF90cmVlYGAuCi1UaGUgYGA8eWdsb2I+YGAgYW5k IGBgPG5nbG9iPmBgIHBhdHRlcm5zIGFyZSBjb21iaW5lZDogT25seSBmaWxlcyB0aGF0Ci1tYXRj aCBgYDx5Z2xvYj5gYCBhbmQgZG8gbm90IG1hdGNoIGBgPG5nbG9iPmBgIGFyZSBpbnN0YWxsZWQu Ci0KLUV4YW1wbGVzOgotCi1JbnN0YWxsIGFsbCBzaGFyZWQgbGlicmFyaWVzIGZvdW5kIGluIGBg JChGT09fUEtHRElSKS91c3IvbGliL2Zvb2BgIGV4Y2VwdAotbGliYmFyLnNvCi0KLS4uIGNvZGUt YmxvY2s6OiBtYWtlCi0KLSAkKGNhbGwgaW5zdGFsbF9nbG9iLCBmb28sIDAsIDAsIC0sIC91c3Iv bGliL2ZvbywgKi5zbywgKi9saWJiYXIuc28pCi0KLWluc3RhbGxfbGliCi1+fn5+fn5+fn5+fgot Ci1Vc2FnZToKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICQoY2FsbCBpbnN0YWxsX2xpYiwg PHBhY2thZ2U+LCA8VUlEPiwgPEdJRD4sIDxwZXJtaXNzaW9uPiwgPGxpYm5hbWU+KQotCi1JbnN0 YWxscyB0aGUgc2hhcmVkIGxpYnJhcnkgPGxpYm5hbWU+IGludG8gdGhlIHJvb3QgZmlsZXN5c3Rl bS4KLQotKiB0aGUgcHJvamVjdCdzIGBgPHBsYXRmb3JtLWRpcj4vcm9vdC9gYAotKiBhbiBpcGtn L29wa2cgcGFja2V0IGluIHRoZSBwcm9qZWN0J3MgYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9g YAotCi1UaGUgcGFyYW1ldGVycyBhbmQgdGhlaXIgbWVhbmluZ3M6Ci0KLSoqPHBhY2thZ2U+KioK LSAgTmFtZSBvZiB0aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgotKio8VUlE PioqCi0gIFVzZXIgSUQgdGhlIGZpbGUgc2hvdWxkIHVzZSBpbiB0aGUgdGFyZ2V0J3Mgcm9vdCBm aWxlc3lzdGVtCi0qKjxHSUQ+KioKLSAgR3JvdXAgSUQgdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxl cyBzaG91bGQgdXNlIGluIHRoZSB0YXJnZXQncyByb290IGZpbGVzeXN0ZW0KLSoqPHBlcm1pc3Np b24+KioKLSAgUGVybWlzc2lvbiAoYXMgYW4gb2N0YWwgdmFsdWUpIHRoZSBsaWJyYXJ5IHNob3Vs ZCB1c2UgaW4gdGhlIHRhcmdldCdzIHJvb3QKLSAgZmlsZXN5c3RlbSAobW9zdGx5IDA2NDQpCi0q KjxsaWJuYW1lPioqCi0gIEJhc2VuYW1lIG9mIHRoZSBsaWJyYXJ5IHdpdGhvdXQgYW55IGV4dGVu c2lvbiBhbmQgcGF0aAotCi1UaGUgYGBpbnN0YWxsX2xpYmBgIG1hY3JvIHNlYXJjaGVzIGZvciB0 aGUgbGlicmFyeSBhdCB0aGUgbW9zdAotY29tbW9uIGRpcmVjdG9yaWVzIGBgL2xpYmBgIGFuZCBg YC91c3IvbGliYGAuIEFuZCBpdCBzZWFyY2hlcyBhbHdheXMKLWluIHRoZSBwYWNrYWdlJ3MgY29y cmVzcG9uZGluZyBkaXJlY3RvcnkgaW4gYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9gYC4KLUl0 IGFsc28gaGFuZGxlcyBhbGwgcmVxdWlyZWQgbGlua3MgdG8gbWFrZSB0aGUgbGlicmFyeSB3b3Jr IGF0IHJ1bi10aW1lLgotCi1BbiBleGFtcGxlLgotCi1MZXRzIGFzc3VtZSB0aGUgcGFja2FnZSAn Zm9vLTEuMC4wJyBoYXMgaW5zdGFsbGVkIHRoZSBsaWJyYXJ5IGBgbGliZm9vYGAgaW50bwotaXRz IGBgPHBsYXRmb3JtLWRpcj4vcGFja2FnZXMvZm9vLTEuMC4wYGAgYXQ6Ci0KLSogdGhlIGxpYjog YGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9mb28tMS4wLjAvdXNyL2xpYi9saWJmb28xLnNvLjAu MC4wYGAKLSogZmlyc3QgbGluazogYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9mb28tMS4wLjAv dXNyL2xpYi9saWJmb28xLnNvLjBgYAotKiBzZWNvbmQgbGluazogYGA8cGxhdGZvcm0tZGlyPi9w YWNrYWdlcy9mb28tMS4wLjAvdXNyL2xpYi9saWJmb28xLnNvYGAKLQotLi4gbm90ZTo6IFRoZSBz ZWNvbmQgbGluayBpcyBvbmx5IG5lZWRlZCAgZm9yIHRoZSBsaW5rZXIgYXQgYnVpbGQtdGltZSB0 bwotICAgcmVzb2x2ZSBgYC1sZm9vMWBgLiBJdCBpcyBub3QgbmVlZGVkIGF0IHJ1bi10aW1lIHNv IGBgaW5zdGFsbF9saWJgYCB3aWxsCi0gICBza2lwIGl0LgotCi1UbyBpbnN0YWxsIHRoaXMgbGli cmFyeSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgbGluaywgdGhlIGZvbGxvd2luZyBsaW5lIGRvZXMg dGhlIGpvYjoKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICQoY2FsbCBpbnN0YWxsX2xpYiwg Zm9vLCAwLCAwLCAwNjQ0LCBsaWJmb28xKQotCi1Ob3RlOiBUaGUgcGFja2FnZSdzIGluc3RhbGwg c3RhZ2UgbXVzdCBiZSAnREVTVERJUicgYXdhcmUgdG8gYmUgYWJsZSB0byBtYWtlCi1pdCBpbnN0 YWxsIGl0cyBjb250ZW50IGludG8gdGhlIGNvcnJlc3BvbmRpbmcgcGFja2FnZXMgZGlyZWN0b3J5 IChpbiBvdXIgZXhhbXBsZQotYGA8cGxhdGZvcm0tZGlyPi9wYWNrYWdlcy9mb28tMS4wLjAvYGAg aGVyZSkuCi0KLWluc3RhbGxfcmVwbGFjZQotfn5+fn5+fn5+fn5+fn5+Ci0KLVVzYWdlOgotCi0u LiBjb2RlLWJsb2NrOjogbWFrZQotCi0gJChjYWxsIGluc3RhbGxfcmVwbGFjZSwgPHBhY2thZ2U+ LCA8ZmlsZW5hbWU+LCA8cGxhY2Vob2xkZXI+LCA8dmFsdWU+KQotCi1SZXBsYWNlIHBsYWNlaG9s ZGVyIHdpdGggdmFsdWUgaW4gYSBwcmV2aW91c2x5IGluc3RhbGxlZCBmaWxlLgotCi1UaGUgcGFy YW1ldGVycyBhbmQgdGhlaXIgbWVhbmluZ3M6Ci0KLSoqPHBhY2thZ2U+KioKLSAgTmFtZSBvZiB0 aGUgSVBLRy9PUEtHIHRoZSBtYWNybyBzaG91bGQgd29yayBvbgotKio8ZmlsZW5hbWU+KioKLSAg QWJzb2x1dGUgZmlsZXBhdGggaW4gdGFyZ2V0IHJvb3QgZmlsZXN5c3RlbQotKio8cGxhY2Vob2xk ZXI+KioKLSAgQSBzdHJpbmcgaW4gdGhlIGZpbGUgd2hpY2ggc2hvdWxkIGJlIHJlcGxhY2VkLiBV c3VhbGx5IHNvbWUgdXBwZXJjYXNlIHdvcmQKLSAgc3Vycm91bmRlZCBieSBAIHNpZ25zCi0qKjx2 YWx1ZT4qKgotICBUaGUgdmFsdWUgd2hpY2ggc2hvdWxkIGFwcGVhciBpbiB0aGUgcm9vdCBmaWxl c3lzdGVtIGluc3RlYWQgb2YgdGhlCi0gIHBsYWNlaG9sZGVyLCBjb3VsZCBiZSBzb21lIFBUWENP TkYgdmFyaWFibGUKLQotVGhlIGBgaW5zdGFsbF9yZXBsYWNlYGAgbWFjcm8gY2FuIGJlIHVzZWQg aW4gdGFyZ2V0aW5zdGFsbCBzdGFnZSB0byBhZGFwdAotc29tZSB0ZW1wbGF0ZSBhbmQgcmVwbGFj ZSBzdHJpbmdzIHdpdGggY29udGVudCBmcm9tIG1lbnUgdmFyaWFibGVzIG9yIG90aGVyCi1zb3Vy Y2VzLiBGb3IgZXhhbXBsZSBsb29rIGF0IHRoZSB0aW1lem9uZSB5b3Ugc2V0IGluIHRoZSBwdHhk aXN0IG1lbnUuIEFuCi1gYGluc3RhbGxfcmVwbGFjZWBgIGNhbGwgaW4gYGBydWxlcy90aW1lem9u ZS5tYWtlYGAgcmVwbGFjZXMgdGhlIHN0cmluZwotYGBAVElNRVpPTkVAYGAgaW4gdGhlIGZpbGUg YGAvZXRjL3RpbWV6b25lYGAgaW4gcm9vdCBmaWxlc3lzdGVtIHdpdGggdGhlCi1jb250ZW50IG9m IHRoZSBtZW51IHZhcmlhYmxlIGBgUFRYQ09ORl9USU1FWk9ORV9MT0NBTFRJTUVgYC4gVGhlIGZp bGUgbXVzdAotYmUgaW5zdGFsbGVkIHdpdGggc29tZSBvdGhlciBgYGluc3RhbGxfKmBgIGNvbW1h bmQgYmVmb3JlCi1gYGluc3RhbGxfcmVwbGFjZWBgIGNhbiBiZSB1c2VkLiBBIHR5cGljYWwgY2Fs bCB3b3VsZCBsb29rIGxpa2UgdGhpczoKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICAgJChT VEFURURJUikvdGltZXpvbmUudGFyZ2V0aW5zdGFsbDoKLSAgICAgICAgLi4uCi0gICAJQCQoY2Fs bCBpbnN0YWxsX3JlcGxhY2UsIHRpbWV6b25lLCAvZXRjL3RpbWV6b25lLCBAVElNRVpPTkVALCBc Ci0gICAJCSQoUFRYQ09ORl9USU1FWk9ORV9MT0NBTFRJTUUpKQotCi0uLiBfcGFyYW1fbWFjcm9z OgotCi0uLiBfcHR4RW5kaXM6Ci0KLXB0eC9lbmRpcwotfn5+fn5+fn5+Ci0KLVRvIGNvbnZlcnQg dGhlIHN0YXRlIChzZXQvdW5zZXQpIG9mIGEgdmFyaWFibGUgaW50byBhbiBgYGVuYWJsZS9kaXNh YmxlYGAKLXN0cmluZyB1c2UgdGhlIGBgcHR4L2VuZGlzYGAgbWFjcm8uCi1JZiB0aGUgZ2l2ZW4g PHZhcmlhYmxlPiBpcyBzZXQgdGhpcyBtYWNybyBleHBhbmRzIHRvCi10aGUgc3RyaW5nIGBgZW5h YmxlYGAsIGlmIHVuc2V0IHRvIGBgZGlzYWJsZWBgIGluc3RlYWQuCi0KLVVzYWdlOgotCi0uLiBj b2RlLWJsb2NrOjogbm9uZQotCi0gLS0kKGNhbGwgcHR4L2VuZGlzLCA8dmFyaWFibGU+KS08cGFy YW1ldGVyPgotCi1BbiBleGFtcGxlOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gRk9PX0NP TkZfT1BUICs9IC0tJChjYWxsIHB0eC9lbmRpcyxGT09fVkFSSUFCTEUpLXNvbWV0aGluZwotCi1E ZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIEZPT19WQVJJQUJMRSB0aGlzIGxpbmUgcmVzdWx0cyBp bnRvCi0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSBGT09fQ09ORl9PUFQgKz0gLS1lbmFibGUt c29tZXRoaW5nIChpZiBGT09fVkFSSUFCTEUgaXMgc2V0KQotIEZPT19DT05GX09QVCArPSAtLWRp c2FibGUtc29tZXRoaW5nIChpZiBGT09fVkFSSUFCTEUgaXMgdW5zZXQpCi0KLVJlZmVyIDpyZWY6 YHB0eERpc2VuYCBmb3IgdGhlIG9wcG9zaXRlIHN0cmluZyBleHBhbnNpb24uCi0KLS4uIF9wdHhE aXNlbjoKLQotcHR4L2Rpc2VuCi1+fn5+fn5+fn4KLQotVG8gY29udmVydCB0aGUgc3RhdGUgKHNl dC91bnNldCkgb2YgYSB2YXJpYWJsZSBpbnRvIGEgYGBkaXNhYmxlL2VuYWJsZWBgCi1zdHJpbmcg dXNlIHRoZSBgYHB0eC9kaXNlbmBgIG1hY3JvLgotSWYgdGhlIGdpdmVuIDx2YXJpYWJsZT4gaXMg c2V0IHRoaXMgbWFjcm8gZXhwYW5kcyB0bwotdGhlIHN0cmluZyBgYGRpc2FibGVgYCwgaWYgdW5z ZXQgdG8gYGBlbmFibGVgYCBpbnN0ZWFkLgotCi1Vc2FnZToKLQotLi4gY29kZS1ibG9jazo6IG5v bmUKLQotIC0tJChjYWxsIHB0eC9kaXNlbiwgPHZhcmlhYmxlPiktPHBhcmFtZXRlcj4KLQotQW4g ZXhhbXBsZToKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotIEZPT19DT05GX09QVCArPSAtLSQo Y2FsbCBwdHgvZGlzZW4sRk9PX1ZBUklBQkxFKS1zb21ldGhpbmcKLQotRGVwZW5kaW5nIG9uIHRo ZSBzdGF0ZSBvZiBGT09fVkFSSUFCTEUgdGhpcyBsaW5lIHJlc3VsdHMgaW50bwotCi0uLiBjb2Rl LWJsb2NrOjogbWFrZQotCi0gRk9PX0NPTkZfT1BUICs9IC0tZGlzYWJsZS1zb21ldGhpbmcgKGlm IEZPT19WQVJJQUJMRSBpcyBzZXQpCi0gRk9PX0NPTkZfT1BUICs9IC0tZW5hYmxlLXNvbWV0aGlu ZyAoaWYgRk9PX1ZBUklBQkxFIGlzIHVuc2V0KQotCi1SZWZlciA6cmVmOmBwdHhFbmRpc2AgZm9y IHRoZSBvcHBvc2l0ZSBzdHJpbmcgZXhwYW5zaW9uLgotCi1wdHgvd3dvCi1+fn5+fn5+Ci0KLVRv IGNvbnZlcnQgdGhlIHN0YXRlIChzZXQvdW5zZXQpIG9mIGEgdmFyaWFibGUgaW50byBhIGBgd2l0 aC93aXRob3V0YGAKLXN0cmluZyB1c2UgdGhlIGBgcHR4L3d3b2BgIG1hY3JvLgotSWYgdGhlIGdp dmVuIDx2YXJpYWJsZT4gaXMgc2V0IHRoaXMgbWFjcm8gZXhwYW5kcyB0bwotdGhlIHN0cmluZyBg YHdpdGhgYCwgaWYgdW5zZXQgdG8gYGB3aXRob3V0YGAgaW5zdGVhZC4KLQotVXNhZ2U6Ci0KLS4u IGNvZGUtYmxvY2s6OiBub25lCi0KLSAtLSQoY2FsbCBwdHgvd3dvLCA8dmFyaWFibGU+KS08cGFy YW1ldGVyPgotCi1BbiBleGFtcGxlOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gRk9PX0NP TkZfT1BUICs9IC0tJChjYWxsIHB0eC93d28sRk9PX1ZBUklBQkxFKS1zb21ldGhpbmcKLQotRGVw ZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiBGT09fVkFSSUFCTEUgdGhpcyBsaW5lIHJlc3VsdHMgaW50 bwotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gRk9PX0NPTkZfT1BUICs9IC0td2l0aC1zb21l dGhpbmcgKGlmIEZPT19WQVJJQUJMRSBpcyBzZXQpCi0gRk9PX0NPTkZfT1BUICs9IC0td2l0aG91 dC1zb21ldGhpbmcgKGlmIEZPT19WQVJJQUJMRSBpcyB1bnNldCkKLQotcHR4L2lmZGVmCi1+fn5+ fn5+fn4KLQotVG8gY29udmVydCB0aGUgc3RhdGUgKHNldC91bnNldCkgb2YgYSB2YXJpYWJsZSBp bnRvIG9uZSBvZiB0d28gc3RyaW5ncyB1c2UgdGhlCi1gYHB0eC9pZmRlZmBgIG1hY3JvLgotSWYg dGhlIGdpdmVuIDx2YXJpYWJsZT4gaXMgc2V0IHRoaXMgbWFjcm8gZXhwYW5kcyB0bwotdGhlIGZp cnN0IGdpdmVuIHN0cmluZywgaWYgdW5zZXQgdG8gdGhlIHNlY29uZCBnaXZlbiBzdHJpbmcuCi0K LVVzYWdlOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gLS13aXRoLXNvbWV0aGluZz0kKGNh bGwgcHR4L2lmZGVmLCA8dmFyaWFibGU+LCA8Zmlyc3Qtc3RyaW5nPiwgPHNlY29uZC1zdHJpbmcp Ci0KLUFuIGV4YW1wbGU6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSBGT09fQ09ORl9PUFQg Kz0gLS13aXRoLXNvbWV0aGluZz0kKGNhbGwgcHR4L2lmZGVmLEZPT19WQVJJQUJMRSwvdXNyLG5v bmUpCi0KLURlcGVuZGluZyBvbiB0aGUgc3RhdGUgb2YgRk9PX1ZBUklBQkxFIHRoaXMgbGluZSBy ZXN1bHRzIGludG8KLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotIEZPT19DT05GX09QVCArPSAt LXdpdGgtc29tZXRoaW5nPS91c3IgKGlmIEZPT19WQVJJQUJMRSBpcyBzZXQpCi0gRk9PX0NPTkZf T1BUICs9IC0td2l0aC1zb21ldGhpbmc9bm9uZSAoaWYgRk9PX1ZBUklBQkxFIGlzIHVuc2V0KQot Ci1wdHgvdHJ1ZWZhbHNlCi1+fn5+fn5+fn5+fn5+Ci0KLVRvIGNvbnZlcnQgdGhlIHN0YXRlIChz ZXQvdW5zZXQpIG9mIGEgdmFyaWFibGUgaW50byBhIGBgdHJ1ZS9mYWxzZWBgCi1zdHJpbmcgdXNl IHRoZSBgYHB0eC90cnVlZmFsc2VgYCBtYWNyby4KLUlmIHRoZSBnaXZlbiA8dmFyaWFibGU+IGlz IHNldCB0aGlzIG1hY3JvIGV4cGFuZHMgdG8KLXRoZSBzdHJpbmcgYGB0cnVlYGAsIGlmIHVuc2V0 IHRvIGBgZmFsc2VgYCBpbnN0ZWFkLgotCi1Vc2FnZToKLQotLi4gY29kZS1ibG9jazo6IG5vbmUK LQotIC1Ed2l0aC1zb21ldGhpbmc9JChjYWxsIHB0eC90cnVlZmFsc2UsPHZhcmlhYmxlPikKLQot QW4gZXhhbXBsZToKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotIEZPT19DT05GX09QVCArPSAt RHdpdGgtc29tZXRoaW5nPSQoY2FsbCBwdHgvdHJ1ZWZhbHNlLDx2YXJpYWJsZT4pCi0KLURlcGVu ZGluZyBvbiB0aGUgc3RhdGUgb2YgRk9PX1ZBUklBQkxFIHRoaXMgbGluZSByZXN1bHRzIGludG8K LQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotIEZPT19DT05GX09QVCArPSAtRHdpdGgtc29tZXRo aW5nPXRydWUgKGlmIEZPT19WQVJJQUJMRSBpcyBzZXQpCi0gRk9PX0NPTkZfT1BUICs9IC1Ed2l0 aC1zb21ldGhpbmc9ZmFsc2UgKGlmIEZPT19WQVJJQUJMRSBpcyB1bnNldCkKLQotcHR4L2dldC1h bHRlcm5hdGl2ZQotfn5+fn5+fn5+fn5+fn5+fn5+fgotCi1UaGlzIG1hY3JvIGNhbiBiZSB1c2Vk IHRvIGZpbmQgZmlsZXMgb3IgZGlyZWN0b3JpZXMgaW4gdGhlIEJTUCBhbmQgUFRYZGlzdC4KLVRo ZXJlIGFyZSB0d28gYXJndW1lbnRzLCAqKnByZWZpeCoqIGFuZCAqKmZpbGUqKi4gVGhlIHNlYXJj aCBwYXRoIGlzIHZlcnkKLXNpbWlsYXIgdG8gOnJlZjpgaW5zdGFsbF9hbHRlcm5hdGl2ZWAuIFRo ZSBmaXJzdCBleGlzdGluZyBsb2NhdGlvbiBvZiB0aGUKLWZvbGxvd2luZyBwYXRocyBpcyByZXR1 cm5lZDoKLQotKiBgYCQoUFRYRElTVF9XT1JLU1BBQ0UpLyQocHJlZml4KSQoUFRYRElTVF9QTEFU Rk9STVNVRkZJWCkvJChmaWxlKWBgCi0qIGBgJChQVFhESVNUX1dPUktTUEFDRSkvJChwcmVmaXgp LyQoZmlsZSkkKFBUWERJU1RfUExBVEZPUk1TVUZGSVgpYGAKLSogYGAkKFBUWERJU1RfUExBVEZP Uk1DT05GSUdESVIpLyQocHJlZml4KS8kKGZpbGUpJChQVFhESVNUX1BMQVRGT1JNU1VGRklYKWBg Ci0qIGBgJChQVFhESVNUX1dPUktTUEFDRSkvJChwcmVmaXgpLyQoZmlsZSlgYAotKiBgYCQoUFRY RElTVF9QTEFURk9STUNPTkZJR0RJUikvJChwcmVmaXgpLyQoZmlsZSlgYAotKiBgYCQoUFRYRElT VF9UT1BESVIpLyQocHJlZml4KS8kKGZpbGUpYGAKLQotCi0uLiBfaW5fcGF0aDoKLQotcHR4L2lu LXBhdGgKLX5+fn5+fn5+fn5+Ci0KLVRoaXMgbWFjcm8gY2FuIGJlIHVzZWQgdG8gZmluZCBmaWxl cyBvciBkaXJlY3RvcmllcyBpbiB0aGUgQlNQIGFuZCBQVFhkaXN0LgotVGhlcmUgYXJlIHR3byBh cmd1bWVudHMsICoqcGF0aCB2YXJpYWJsZSoqIGFuZCAqKmZpbGUqKi4gVGhlICoqcGF0aAotdmFy aWFibGUqKiBtdXN0IGJlIGEgdmFyaWFibGUgbmFtZSB0aGF0IGlzIGF2YWlsYWJsZSBpbiBhIHNo ZWxsIGNhbGxlZCBieQotKiptYWtlKiouIFRoZSB2YXJpYWJsZSBtdXN0IGNvbnRhaW4gYSBgYDpg YCBzZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3Rvcmllcy4KLVRoZSAqKmZpbGUqKiB3aWxsIGJlIHNl YXJjaGVkIGluIHRoZXNlIGRpcmVjdG9yaWVzIGFuZCB0aGUgZmlyc3QgZXhpc3RpbmcKLXBhdGgg aXMgcmV0dXJuZWQuIFBUWGRpc3QgZGVmaW5lcyBzZXZlcmFsIHZhcmlhYmxlcyB0aGF0IGNhbiBi ZSB1c2VkIGhlcmUuCi1UaGUgZGlyZWN0b3JpZXMgYXJlIGluIHRoZSB1c3VhbCBzZWFyY2ggb3Jk ZXIuCi0KLS0gICoqUFRYRElTVF9QQVRIX0xBWUVSUyoqIGNvbnRhaW5zIGFsbCBsYXllcnMgZnJv bSAqKlBUWERJU1RfV09SS1NQQUNFKioKLSAgIHRvICoqUFRYRElTVF9UT1BESVIqKgotCi0tICoq UFRYRElTVF9QQVRIKiogaXMgbGlrZSAqKlBUWERJU1RfUEFUSF9MQVlFUlMqKiBidXQgYWxzbyBj b250YWlucyB0aGUKLSAgKipQVFhESVNUX1BMQVRGT1JNQ09ORklHRElSKiogZm9yIGVhY2ggbGF5 ZXIuCi0KLS0gKipQVFhESVNUX1BBVEhfU0NSSVBUUyoqLCAqKlBUWERJU1RfUEFUSF9SVUxFUyoq IGFuZAotICAqKlBUWERJU1RfUEFUSF9QTEFURk9STVMqKiBhcmUgbGlrZSAqKlBUWERJU1RfUEFU SCoqIHdpdGggdGhlIGV4dHJhCi0gIGBgc2NyaXB0cy9gYCwgYGBydWxlcy9gYCBhbmQgYGBwbGF0 Zm9ybXMvYGAgc3ViZGlyZWN0b3J5IHJlc3BlY3RpdmVseS4KLQotSGludDogdXNlIHRoZSA6cmVm OmBwcmludDxjb21tYW5kX3ByaW50PmAgY29tbWFuZCB0byBnZXQgdGhlIGV4YWN0IGxpc3Qgb2YK LWRpcmVjdG9yaWVzIGZvciBlYWNoIG9mIHRoZXNlIHZhcmlhYmxlcy4KLQotLi4gX2luX3BsYXRm b3JtY29uZmlnZGlyOgotCi1wdHgvaW4tcGxhdGZvcm1jb25maWdkaXIKLX5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fgotCi1UaGlzIG1hY3JvIGlzIG9ubHkgdXNlZnVsIHdpdGggbXVsdGlwbGUgbGF5 ZXJzLiBJdCBoYXMgb25lIGFyZ3VtZW50Ci0qKmZpbGUqKi4gVGhlICoqZmlsZSoqIGlzIHNlYXJj aGVkIGZvciBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IGluCi1hbGwgbGF5ZXJzIGluIHRoZSB1 c3VhbCBzZWFyY2ggb3JkZXIuIEl0IHJldHVybnMgdGhlIGZpcnN0IGV4aXN0aW5nIGZpbGUuCi1J ZiBub25lIGV4aXN0cyBpdCByZXR1cm5zIGBgJChQVFhESVNUX1BMQVRGT1JNQ09ORklHRElSKS8k KGZpbGUpYGAuIFRoaXMKLWF2b2lkcyB1bmV4cGVjdGVkIGVycm9ycyBkdWUgdG8gZW1wdHkgdmFy aWFibGVzIGlmIGEgZmlsZSBpcyBtaXNzaW5nLgotCi0uLiBfcnVsZWZpbGU6Ci0KLVJ1bGUgRmls ZSBMYXlvdXQKLS0tLS0tLS0tLS0tLS0tLS0KLQotRWFjaCBydWxlIGZpbGUgcHJvdmlkZXMgUFRY ZGlzdCB3aXRoIHRoZSByZXF1aXJlZCBzdGVwcyAoaW4gUFRYZGlzdCBjYWxsZWQKLSpzdGFnZXMq KSB0byBiZSBkb25lIG9uIGEgcGVyIHBhY2thZ2UgYmFzZToKLQotMS4gZ2V0Ci0yLiBleHRyYWN0 Ci0KLSAgIC0gZXh0cmFjdC5wb3N0Ci0KLTMuIHByZXBhcmUKLTQuIGNvbXBpbGUKLTUuIGluc3Rh bGwKLQotICAgLSBpbnN0YWxsLnBhY2sKLSAgIC0gaW5zdGFsbC51bnBhY2sKLSAgIC0gaW5zdGFs bC5wb3N0Ci0KLTYuIHRhcmdldGluc3RhbGwKLQotICAgLSB0YXJnZXRpbnN0YWxsLnBvc3QKLQot RGVmYXVsdCBzdGFnZSBydWxlcwotfn5+fn5+fn5+fn5+fn5+fn5+fgotCi1BcyBmb3IgbW9zdCBw YWNrYWdlcyB0aGVzZSBzdGVwcyBjYW4gYmUgZG9uZSBpbiBhIGRlZmF1bHQgd2F5LCBQVFhkaXN0 Ci1wcm92aWRlcyBnZW5lcmljIHJ1bGVzIGZvciBlYWNoIHBhY2thZ2UuIElmIGEgcGFja2FnZeKA mXMgcnVsZSBmaWxlIGRvZXMKLW5vdCBwcm92aWRlIGEgc3BlY2lmaWMgc3RhZ2UgcnVsZSwgdGhl IGRlZmF1bHQgc3RhZ2UgcnVsZSB3aWxsIGJlIHVzZWQKLWluc3RlYWQuCi0KLS4uIEltcG9ydGFu dDo6Ci0gIE9taXR0aW5nIG9uZSBvZiB0aGUgc3RhZ2UgcnVsZXMgKipkb2VzIG5vdCBtZWFuKiog dGhhdCBQVFhkaXN0IHNraXBzCi0gIHRoaXMgc3RhZ2UhCi0gIEluIHRoaXMgY2FzZSB0aGUgZGVm YXVsdCBzdGFnZSBydWxlIGlzIHVzZWQgaW5zdGVhZC4KLQotZ2V0IFN0YWdlIERlZmF1bHQgUnVs ZQotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgotCi1JZiB0aGUgKmdldCogc3RhZ2UgaXMgb21pdHRl ZCwgUFRYZGlzdCBydW5zIGluc3RlYWQ6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICAk KFNUQVRFRElSKS88cGtnPi5nZXQ6Ci0gICAgCUAkKGNhbGwgdGFyZ2V0aW5mbykKLSAgICAJQCQo Y2FsbCB0b3VjaCkKLQotV2hpY2ggbWVhbnMgdGhpcyBzdGVwIGlzIHNraXBwZWQuCi0KLUlmIHRo ZSBwYWNrYWdlIGlzIGFuIGFyY2hpdmUgdGhhdCBtdXN0IGJlIGRvd25sb2FkZWQgZnJvbSB0aGUg d2ViLCB0aGUKLWZvbGxvd2luZyBydWxlIG11c3QgZXhpc3QgaW4gdGhpcyBjYXNlOgotCi0uLiBj b2RlLWJsb2NrOjogbWFrZQotCi0gICAgJCg8UEtHPl9TT1VSQ0UpOgotICAgIAlAJChjYWxsIHRh cmdldGluZm8pCi0gICAgCUAkKGNhbGwgZ2V0LCA8UEtHPikKLQotZXh0cmFjdCBTdGFnZSBEZWZh dWx0IFJ1bGUKLV5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0KLUlmIHRoZSAqZXh0cmFjdCog c3RhZ2UgaXMgb21pdHRlZCwgUFRYZGlzdCBydW5zIGluc3RlYWQ6Ci0KLS4uIGNvZGUtYmxvY2s6 OiBtYWtlCi0KLSAgICAkKFNUQVRFRElSKS88cGtnPi5leHRyYWN0OgotICAgIAlAJChjYWxsIHRh cmdldGluZm8pCi0gICAgCUAkKGNhbGwgY2xlYW4sICQoPFBLRz5fRElSKSkKLSAgICAJQCQoY2Fs bCBleHRyYWN0LCA8UEtHPikKLSAgICAJQCQoY2FsbCBwYXRjaGluLCA8UEtHPikKLSAgICAJQCQo Y2FsbCB0b3VjaCkKLQotV2hpY2ggbWVhbnMgYSBjdXJyZW50IGV4aXN0aW5nIGRpcmVjdG9yeSBv ZiB0aGlzIHBhY2thZ2Ugd2lsbCBiZQotcmVtb3ZlZCwgdGhlIGFyY2hpdmUgZ2V0cyBmcmVzaGx5 IGV4dHJhY3RlZCBhZ2FpbiBhbmQgKGlmIGNvcnJlc3BvbmRpbmcKLXBhdGNoZXMgYXJlIGZvdW5k KSBwYXRjaGVkLgotCi1leHRyYWN0LnBvc3QgU3RhZ2UgRGVmYXVsdCBSdWxlCi1eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0KLVRoaXMgaXMgYW4gb3B0aW9uYWwgc3RhZ2UsIG1haW5s eSB1c2VkIHRvIHNvbWVob3cgcHJlcGFyZSBhIHBhY2thZ2UgZm9yIHRoZQotbmV4dCAqcHJlcGFy ZSogc3RhZ2Ugc3RlcC4gVGhpcyBzdGFnZSBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhIGBgY29u ZmlndXJlYGAKLXNjcmlwdCBvdXQgb2YgYW4gYXV0b3Rvb2xpemVkIGBgY29uZmlndXJlLmFjYGAg ZmlsZSBmb3IgZXhhbXBsZS4gVGhpcyBzZXBhcmF0aW9uCi1mcm9tIHRoZSAqZXh0cmFjdCogc3Rh Z2UgaXMgdXNlZnVsIHRvIGJlIGFibGUgdG8gZXh0cmFjdCBhIHBhY2thZ2UgZm9yIGEgcXVpY2sK LWxvb2sgaW50byB0aGUgc291cmNlcyB3aXRob3V0IHRoZSBuZWVkIHRvIGJ1aWxkIGFsbCB0aGUg YXV0b3Rvb2xzIGZpcnN0LiBUaGUKLWF1dG90b29saXplZCBQVFhkaXN0IHRlbXBsYXRlcyBtYWtl cyB1c2Ugb2YgdGhpcyBmZWF0dXJlLiBSZWZlcgotOnJlZjpgYWRkaW5nX3NyY19hdXRvY29uZl90 ZW1wbGF0ZXNgIGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLXByZXBhcmUgU3RhZ2UgRGVmYXVsdCBS dWxlCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgotCi1JZiB0aGUgKnByZXBhcmUqIHN0YWdl IGlzIG9taXR0ZWQsIFBUWGRpc3QgcnVucyBhIGRlZmF1bHQgc3RhZ2UgcnVsZSwKLXdoaWNoIGxv b2tzIGxpa2UgdGhpczoKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICAgICQoU1RBVEVESVIp Lzxwa2c+LnByZXBhcmU6Ci0gICAgCUAkKGNhbGwgdGFyZ2V0aW5mbykKLSAgICAJQCQoY2FsbCB3 b3JsZC9wcmVwYXJlLCA8UEtHPikKLSAgICAJQCQoY2FsbCB0b3VjaCkKLQotV2hhdCBgYHdvcmxk L3ByZXBhcmVgYCBkb2VzIGRlcGVuZHMgb24gc29tZSB2YXJpYWJsZSBzZXR0aW5ncy4KLQotSWYg dGhlIHBhY2thZ2XigJlzIHJ1bGUgZmlsZSBkZWZpbmVzIGBgPFBLRz5fQ09ORl9UT09MYGAgdG8g YGBOT2BgLAotdGhpcyBzdGFnZSBpcyBzaW1wbHkgZG9lcyBub3RoaW5nLgotCi1BbGwgcnVsZXMg ZmlsZXMgY2FuIGNyZWF0ZSB0aGUgYGA8UEtHPl9DT05GX0VOVmBgIHZhcmlhYmxlIGFuZCBzaG91 bGQKLWRlZmluZSBpdCBhdCBsZWFzdCB0byBgYCQoQ1JPU1NfRU5WKWBgICh0aGUgZGVmYXVsdCkg aWYgdGhlIHByZXBhcmUgc3RhZ2UKLWlzIHVzZWQuCi0KLUlmIHRoZSBwYWNrYWdl4oCZcyBydWxl IGZpbGUgZGVmaW5lcyBgYDxQS0c+X0NPTkZfVE9PTGBgIHRvCi1gYGF1dG9jb25mYGAgKGBgRk9P X0NPTkZfVE9PTCA9IGF1dG9jb25mYGAgZm9yIG91ciAqZm9vKiBleGFtcGxlKSwKLVBUWGRpc3Qg dHJlYXRzIHRoaXMgcGFja2FnZSBhcyBhbiBhdXRvdG9vbGl6ZWQgcGFja2FnZSBhbmQKLWBgd29y bGQvcHJlcGFyZWBgIGV4cGFuZHMgdG8gc29tZXRoaW5nIGxpa2UgdGhpczoKLQotLi4gY29kZS1i bG9jazo6IHNoCi0KLSAgICBjZCAkezxQS0c+X0RJUn0vJHs8UEtHPl9TVUJESVJ9ICYmIFwKLSAg ICAJJHs8UEtHPl9QQVRIfSAkezxQS0c+X0NPTkZfRU5WfSBcCi0gICAgCS4vY29uZmlndXJlICR7 PFBLRz5fQ09ORl9PUFR9Ci0KLVRoZSBgYDxQS0c+X0NPTkZfT1BUYGAgc2hvdWxkIGF0IGxlYXN0 IGJlIGRlZmluZWQgdG8KLWBgJChDUk9TU19BVVRPQ09ORl9VU1IpYGAuCi0KLUlmIHRoZSBwYWNr YWdl4oCZcyBydWxlIGZpbGUgZGVmaW5lcyBgYDxQS0c+X0NPTkZfVE9PTGBgIHRvIGBgY21ha2Vg YAotKGBgRk9PX0NPTkZfVE9PTCA9IGNtYWtlYGAgZm9yIG91ciAqZm9vKiBleGFtcGxlKSwgUFRY ZGlzdCB0cmVhdHMgdGhpcwotcGFja2FnZSBhcyBhICpjbWFrZSogYmFzZWQgcGFja2FnZSBhbmQg YGB3b3JsZC9wcmVwYXJlYGAgZXhwYW5kcyB0bwotc29tZXRoaW5nIGxpa2UgdGhpczoKLQotLi4g Y29kZS1ibG9jazo6IHNoCi0KLSAgICBjZCAkezxQS0c+X0RJUn0gJiYgXAotICAgIAkkezxQS0c+ X1BBVEh9ICR7PFBLRz5fQ09ORl9FTlZ9IFwKLSAgICAJY21ha2UgJHs8UEtHPl9DT05GX09QVH0K LQotVGhlIGBgPFBLRz5fQ09ORl9PUFRgYCBzaG91bGQgYXQgbGVhc3QgYmUgZGVmaW5lZCB0bwot YGAkKENST1NTX0NNQUtFX1VTUilgYCBvciBgYCQoQ1JPU1NfQ01BS0VfUk9PVClgYC4KLQotSWYg dGhlIHBhY2thZ2XigJlzIHJ1bGUgZmlsZSBkZWZpbmVzIGBgPFBLRz5fQ09ORl9UT09MYGAgdG8g YGBxbWFrZWBgCi0oYGBGT09fQ09ORl9UT09MID0gcW1ha2VgYCBmb3Igb3VyICpmb28qIGV4YW1w bGUpLCBQVFhkaXN0IHRyZWF0cyB0aGlzCi1wYWNrYWdlIGFzIGEgKnFtYWtlKiBiYXNlZCBwYWNr YWdlIGFuZCBgYHdvcmxkL3ByZXBhcmVgYCBleHBhbmRzIHRvCi1zb21ldGhpbmcgbGlrZSB0aGlz OgotCi0uLiBjb2RlLWJsb2NrOjogc2gKLQotICAgIGNkICR7PFBLRz5fRElSfSAmJiBcCi0gICAg CSR7PFBLRz5fUEFUSH0gJHs8UEtHPl9DT05GX0VOVn0gXAotICAgIAlxbWFrZSAkezxQS0c+X0NP TkZfT1BUfQotCi1UaGUgYGA8UEtHPl9DT05GX09QVGBgIHNob3VsZCBhdCBsZWFzdCBiZSBkZWZp bmVkIHRvCi1gYCQoQ1JPU1NfUU1BS0VfT1BUKWBgLgotCi1jb21waWxlIFN0YWdlIERlZmF1bHQg UnVsZQotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KLQotSWYgdGhlICpjb21waWxlKiBzdGFn ZSBpcyBvbWl0dGVkLCBQVFhkaXN0IHJ1bnMgaW5zdGVhZDoKLQotLi4gY29kZS1ibG9jazo6IG1h a2UKLQotICAgICQoU1RBVEVESVIpLzxwa2c+LmNvbXBpbGU6Ci0gICAgCUAkKGNhbGwgdGFyZ2V0 aW5mbykKLSAgICAJQCQoY2FsbCB3b3JsZC9jb21waWxlLCA8UEtHPikKLSAgICAJQCQoY2FsbCB0 b3VjaCkKLQotRXhjZXB0IGluIHNvbWUgY29ybmVyIGNhc2VzLCBgYHdvcmxkL2NvbXBpbGVgYCBl eHBhbmRzIHRvIHNvbWV0aGluZyBsaWtlCi10aGlzOgotCi0uLiBjb2RlLWJsb2NrOjogc2gKLQot ICAgIGNkICR7PFBLRz5fRElSfSAmJiBcCi0gICAgCSR7PFBLRz5fUEFUSH0gJHs8UEtHPl9NQUtF X0VOVn0gXAotICAgIAkke01BS0V9ICR7PFBLRz5fTUFLRV9PUFR9ICR7UEFSQUxMRUxNRkxBR1N9 Ci0KLVRoZSB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCBoZXJlIGFyZSBkZXNjcmliZWQgaW4gdGhl IDpyZWY6YENvbXBpbGUKLVN0YWdlPHZhcnNfY29tcGlsZT5gIHNlY3Rpb24gb2YgdGhlIHZhcmlh YmxlIHJlZmVyZW5jZS4KLQotYGBQQVJBTExFTE1GTEFHU2BgIGNhbiBiZSB1c2VkIGluIGN1c3Rv bSBjb21waWxlIHN0YWdlcy4gVGhlIGRlZmF1bHQgc3RhZ2UKLXVzZXMgdGhlIHNhbWUgdmFsdWUg aWYgYGA8UEtHPl9NQUtFX1BBUmBgIGlzIHNldCB0byBgYFlFU2BgLgotCi1pbnN0YWxsIFN0YWdl IERlZmF1bHQgUnVsZQotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KLQotSWYgdGhlICppbnN0 YWxsKiBzdGFnZSBpcyBvbWl0dGVkLCBQVFhkaXN0IHJ1bnMgaW5zdGVhZDoKLQotLi4gY29kZS1i bG9jazo6IG1ha2UKLQotICAgICQoU1RBVEVESVIpLzxwa2c+Lmluc3RhbGw6Ci0gICAgCUAkKGNh bGwgdGFyZ2V0aW5mbykKLSAgICAJQCQoY2FsbCB3b3JsZC9pbnN0YWxsLCA8UEtHPikKLSAgICAJ QCQoY2FsbCB0b3VjaCkKLQotRXhjZXB0IGluIHNvbWUgY29ybmVyIGNhc2VzLCBgYHdvcmxkL2lu c3RhbGxgYCBleHBhbmRzIHRvIHNvbWV0aGluZyBsaWtlCi10aGlzOgotCi0uLiBjb2RlLWJsb2Nr Ojogc2gKLQotICAgIGNkICR7PFBLRz5fRElSfSAmJiBcCi0gICAgCSR7PFBLRz5fUEFUSH0gJHs8 UEtHPl9NQUtFX0VOVn0gXAotICAgIAkke01BS0V9ICR7PFBLRz5fSU5TVEFMTF9PUFR9Ci0KLVRo ZSB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCBoZXJlIGFyZSBkZXNjcmliZWQgaW4gdGhlIDpyZWY6 YEluc3RhbGwKLVN0YWdlPHZhcnNfaW5zdGFsbD5gIHNlY3Rpb24gb2YgdGhlIHZhcmlhYmxlIHJl ZmVyZW5jZS4KLQotQXQgdGhlIGVuZCBvZiB0aGlzIHN0YWdlLCBhbGwgcmVsZXZhbnQgZmlsZXMg bXVzdCBiZSBpbnN0YWxsZWQgaW4gdGhlCi06cmVmOmBwYWNrYWdlIGluc3RhbGwgZGlyZWN0b3J5 PHBrZ19wa2dkaXI+YC4KLQotaW5zdGFsbC5wYWNrIFN0YWdlIERlZmF1bHQgUnVsZQotXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgotCi1UaGUgKmluc3RhbGwucGFjayogc2hvdWxkIG5v dCBiZSBvdmVyd3JpdHRlbi4gSXQgY29uc2lzdHMgb2YgdHdvIHN0ZXBzLiBUaGUKLWZpcnN0IGlz LCB0byBtYWtlIHRoZSBpbnN0YWxsZWQgZmlsZXMgcmVsb2NhdGFibGUuIFRoaXMgaXMgbmVjZXNz YXJ5IHRvCi1lbnN1cmUgdGhhdCBldmVyeXRoaW5nIHdvcmtzIGNvcnJlY3RseSBvbmNlIHRoZSBm aWxlcyBhcmUgY29waWVkIHRvCi0qc3lzcm9vdCogaW4gKmluc3RhbGwucG9zdCouIElmIGNyZWF0 aW5nIDpyZWY6YHByZS1idWlsdCBhcmNoaXZlczxkZXZwa2dzPmAKLWlzIGVuYWJsZWQsIHRoZW4g dGhlIHNlY29uZCBzdGVwIGlzIHRvIGNyZWF0ZSB0aGUgYXJjaGl2ZSBmb3IgdGhlIHBhY2thZ2Uu Ci0KLWluc3RhbGwudW5wYWNrIFN0YWdlIERlZmF1bHQgUnVsZQotXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eCi0KLVRoZSAqaW5zdGFsbC51bnBhY2sqIGlzIG9ubHkgZXhlY3V0ZWQg aWYgdXNpbmcgOnJlZjpgcHJlLWJ1aWx0Ci1hcmNoaXZlczxkZXZwa2dzPmAgaXMgZW5hYmxlZC4g SW4gdGhpcyBjYXNlLCBpdCByZXBsYWNlcyBhbGwgcHJldmlvdXMKLXN0YWdlcy4gSGVyZSwgdGhl IHByZS1idWlsdCBpcyBleHRyYWN0LgotCi1pbnN0YWxsLnBvc3QgU3RhZ2UgRGVmYXVsdCBSdWxl Ci1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0KLVRoZSAqaW5zdGFsbC5wb3N0KiBp cyBtb3N0bHkgaW50ZXJuYWwuIEZldyBwYWNrYWdlcyBuZWVkIHRvIGN1c3RvbWl6ZSBpdC4KLUl0 IGNvcGllcyBhbGwgZmlsZXMgZnJvbSB0aGUgOnJlZjpgcGFja2FnZSBpbnN0YWxsIGRpcmVjdG9y eTxwa2dfcGtnZGlyPmAKLWludG8gdGhlIGNvcnJlc3BvbmRpbmcgKnN5c3Jvb3QqLgotCi10YXJn ZXRpbnN0YWxsIFN0YWdlIERlZmF1bHQgUnVsZQotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl4KLQotVGhlcmUgaXMgbm8gZGVmYXVsdCBydWxlIGZvciBhIHBhY2thZ2XigJlzICp0YXJn ZXRpbnN0YWxsKiBzdGF0ZS4gUFRYZGlzdAotaGFzIG5vIGlkZWEgd2hhdCBpcyByZXF1aXJlZCBv biB0aGUgdGFyZ2V0IGF0IHJ1bi10aW1lLiBUaGlzIHN0YWdlIGlzIHVwCi10byB0aGUgZGV2ZWxv cGVyIG9ubHkuIFJlZmVyIHRvIHNlY3Rpb24gOnJlZjpgcmVmZXJlbmNlX21hY3Jvc2AKLWZvciBm dXJ0aGVyIGluZm8gb24gaG93IHRvIHNlbGVjdCBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUg dGFyZ2V04oCZcwotcm9vdCBmaWxlc3lzdGVtLgotCi10YXJnZXRpbnN0YWxsLnBvc3QgU3RhZ2Ug RGVmYXVsdCBSdWxlCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0KLVRo ZSAqdGFyZ2V0aW5zdGFsbC5wb3N0KiBzdGFnZSBkb2VzIG5vdGhpbmcgYnkgZGVmYXVsdC4gSXQg Y2FuIGJlIHVzZWQgdG8KLWRvIHNvbWUgd29yayBhZnRlciB0aGUgKnRhcmdldGluc3RhbGwqIHN0 YWdlLgotCi1Ta2lwcGluZyBhIFN0YWdlCi1+fn5+fn5+fn5+fn5+fn5+Ci0KLUZvciB0aGUgY2Fz ZSB0aGF0IGEgc3BlY2lmaWMgc3RhZ2Ugc2hvdWxkIGJlIHJlYWxseSBza2lwcGVkLCBhbiBlbXB0 eSBydWxlIG11c3QKLWJlIHByb3ZpZGVkOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gICAg JChTVEFURURJUikvPHBrZz4uPHN0YWdlX3RvX3NraXA+OgotICAgIAlAJChjYWxsIHRhcmdldGlu Zm8pCi0gICAgCUAkKGNhbGwgdG91Y2gpCi0KLVJlcGxhY2UgdGhlIDxzdGFnZV90b19za2lwPiBi eSBgYGdldGBgLCBgYGV4dHJhY3RgYCwgYGBwcmVwYXJlYGAsCi1gYGNvbXBpbGVgYCwgYGBpbnN0 YWxsYGAgb3IgYGB0YXJnZXRpbnN0YWxsYGAuCisuLiBpbmNsdWRlOjogcmVmX21ha2VfdmFyaWFi bGVzLmluYworLi4gaW5jbHVkZTo6IHJlZl9tYWtlX21hY3Jvcy5pbmMKKy4uIGluY2x1ZGU6OiBy ZWZfcnVsZV9maWxlX2xheW91dC5pbmMKIAogLi4gX3B0eGRpc3RfcGFyYW1ldGVyX3JlZmVyZW5j ZToKIApkaWZmIC0tZ2l0IGEvZG9jL3JlZl9ydWxlX2ZpbGVfbGF5b3V0LmluYyBiL2RvYy9yZWZf cnVsZV9maWxlX2xheW91dC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5lYTdlYjhjNDkwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvcmVmX3J1bGVfZmlsZV9s YXlvdXQuaW5jCkBAIC0wLDAgKzEsMjYxIEBACisuLiBfcnVsZWZpbGU6CisKK1J1bGUgRmlsZSBM YXlvdXQKKy0tLS0tLS0tLS0tLS0tLS0KKworRWFjaCBydWxlIGZpbGUgcHJvdmlkZXMgUFRYZGlz dCB3aXRoIHRoZSByZXF1aXJlZCBzdGVwcyAoaW4gUFRYZGlzdCBjYWxsZWQKKypzdGFnZXMqKSB0 byBiZSBkb25lIG9uIGEgcGVyIHBhY2thZ2UgYmFzZToKKworMS4gZ2V0CisyLiBleHRyYWN0CisK KyAgIC0gZXh0cmFjdC5wb3N0CisKKzMuIHByZXBhcmUKKzQuIGNvbXBpbGUKKzUuIGluc3RhbGwK KworICAgLSBpbnN0YWxsLnBhY2sKKyAgIC0gaW5zdGFsbC51bnBhY2sKKyAgIC0gaW5zdGFsbC5w b3N0CisKKzYuIHRhcmdldGluc3RhbGwKKworICAgLSB0YXJnZXRpbnN0YWxsLnBvc3QKKworRGVm YXVsdCBzdGFnZSBydWxlcworfn5+fn5+fn5+fn5+fn5+fn5+fgorCitBcyBmb3IgbW9zdCBwYWNr YWdlcyB0aGVzZSBzdGVwcyBjYW4gYmUgZG9uZSBpbiBhIGRlZmF1bHQgd2F5LCBQVFhkaXN0Citw cm92aWRlcyBnZW5lcmljIHJ1bGVzIGZvciBlYWNoIHBhY2thZ2UuIElmIGEgcGFja2FnZeKAmXMg cnVsZSBmaWxlIGRvZXMKK25vdCBwcm92aWRlIGEgc3BlY2lmaWMgc3RhZ2UgcnVsZSwgdGhlIGRl ZmF1bHQgc3RhZ2UgcnVsZSB3aWxsIGJlIHVzZWQKK2luc3RlYWQuCisKKy4uIEltcG9ydGFudDo6 CisgIE9taXR0aW5nIG9uZSBvZiB0aGUgc3RhZ2UgcnVsZXMgKipkb2VzIG5vdCBtZWFuKiogdGhh dCBQVFhkaXN0IHNraXBzCisgIHRoaXMgc3RhZ2UhCisgIEluIHRoaXMgY2FzZSB0aGUgZGVmYXVs dCBzdGFnZSBydWxlIGlzIHVzZWQgaW5zdGVhZC4KKworZ2V0IFN0YWdlIERlZmF1bHQgUnVsZQor Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitJZiB0aGUgKmdldCogc3RhZ2UgaXMgb21pdHRlZCwg UFRYZGlzdCBydW5zIGluc3RlYWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAgICAkKFNU QVRFRElSKS88cGtnPi5nZXQ6CisgICAgCUAkKGNhbGwgdGFyZ2V0aW5mbykKKyAgICAJQCQoY2Fs bCB0b3VjaCkKKworV2hpY2ggbWVhbnMgdGhpcyBzdGVwIGlzIHNraXBwZWQuCisKK0lmIHRoZSBw YWNrYWdlIGlzIGFuIGFyY2hpdmUgdGhhdCBtdXN0IGJlIGRvd25sb2FkZWQgZnJvbSB0aGUgd2Vi LCB0aGUKK2ZvbGxvd2luZyBydWxlIG11c3QgZXhpc3QgaW4gdGhpcyBjYXNlOgorCisuLiBjb2Rl LWJsb2NrOjogbWFrZQorCisgICAgJCg8UEtHPl9TT1VSQ0UpOgorICAgIAlAJChjYWxsIHRhcmdl dGluZm8pCisgICAgCUAkKGNhbGwgZ2V0LCA8UEtHPikKKworZXh0cmFjdCBTdGFnZSBEZWZhdWx0 IFJ1bGUKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0lmIHRoZSAqZXh0cmFjdCogc3Rh Z2UgaXMgb21pdHRlZCwgUFRYZGlzdCBydW5zIGluc3RlYWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBt YWtlCisKKyAgICAkKFNUQVRFRElSKS88cGtnPi5leHRyYWN0OgorICAgIAlAJChjYWxsIHRhcmdl dGluZm8pCisgICAgCUAkKGNhbGwgY2xlYW4sICQoPFBLRz5fRElSKSkKKyAgICAJQCQoY2FsbCBl eHRyYWN0LCA8UEtHPikKKyAgICAJQCQoY2FsbCBwYXRjaGluLCA8UEtHPikKKyAgICAJQCQoY2Fs bCB0b3VjaCkKKworV2hpY2ggbWVhbnMgYSBjdXJyZW50IGV4aXN0aW5nIGRpcmVjdG9yeSBvZiB0 aGlzIHBhY2thZ2Ugd2lsbCBiZQorcmVtb3ZlZCwgdGhlIGFyY2hpdmUgZ2V0cyBmcmVzaGx5IGV4 dHJhY3RlZCBhZ2FpbiBhbmQgKGlmIGNvcnJlc3BvbmRpbmcKK3BhdGNoZXMgYXJlIGZvdW5kKSBw YXRjaGVkLgorCitleHRyYWN0LnBvc3QgU3RhZ2UgRGVmYXVsdCBSdWxlCiteXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoaXMgaXMgYW4gb3B0aW9uYWwgc3RhZ2UsIG1haW5seSB1 c2VkIHRvIHNvbWVob3cgcHJlcGFyZSBhIHBhY2thZ2UgZm9yIHRoZQorbmV4dCAqcHJlcGFyZSog c3RhZ2Ugc3RlcC4gVGhpcyBzdGFnZSBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhIGBgY29uZmln dXJlYGAKK3NjcmlwdCBvdXQgb2YgYW4gYXV0b3Rvb2xpemVkIGBgY29uZmlndXJlLmFjYGAgZmls ZSBmb3IgZXhhbXBsZS4gVGhpcyBzZXBhcmF0aW9uCitmcm9tIHRoZSAqZXh0cmFjdCogc3RhZ2Ug aXMgdXNlZnVsIHRvIGJlIGFibGUgdG8gZXh0cmFjdCBhIHBhY2thZ2UgZm9yIGEgcXVpY2sKK2xv b2sgaW50byB0aGUgc291cmNlcyB3aXRob3V0IHRoZSBuZWVkIHRvIGJ1aWxkIGFsbCB0aGUgYXV0 b3Rvb2xzIGZpcnN0LiBUaGUKK2F1dG90b29saXplZCBQVFhkaXN0IHRlbXBsYXRlcyBtYWtlcyB1 c2Ugb2YgdGhpcyBmZWF0dXJlLiBSZWZlcgorOnJlZjpgYWRkaW5nX3NyY19hdXRvY29uZl90ZW1w bGF0ZXNgIGZvciBmdXJ0aGVyIGRldGFpbHMuCisKK3ByZXBhcmUgU3RhZ2UgRGVmYXVsdCBSdWxl CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitJZiB0aGUgKnByZXBhcmUqIHN0YWdlIGlz IG9taXR0ZWQsIFBUWGRpc3QgcnVucyBhIGRlZmF1bHQgc3RhZ2UgcnVsZSwKK3doaWNoIGxvb2tz IGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IG1ha2UKKworICAgICQoU1RBVEVESVIpLzxw a2c+LnByZXBhcmU6CisgICAgCUAkKGNhbGwgdGFyZ2V0aW5mbykKKyAgICAJQCQoY2FsbCB3b3Js ZC9wcmVwYXJlLCA8UEtHPikKKyAgICAJQCQoY2FsbCB0b3VjaCkKKworV2hhdCBgYHdvcmxkL3By ZXBhcmVgYCBkb2VzIGRlcGVuZHMgb24gc29tZSB2YXJpYWJsZSBzZXR0aW5ncy4KKworSWYgdGhl IHBhY2thZ2XigJlzIHJ1bGUgZmlsZSBkZWZpbmVzIGBgPFBLRz5fQ09ORl9UT09MYGAgdG8gYGBO T2BgLAordGhpcyBzdGFnZSBpcyBzaW1wbHkgZG9lcyBub3RoaW5nLgorCitBbGwgcnVsZXMgZmls ZXMgY2FuIGNyZWF0ZSB0aGUgYGA8UEtHPl9DT05GX0VOVmBgIHZhcmlhYmxlIGFuZCBzaG91bGQK K2RlZmluZSBpdCBhdCBsZWFzdCB0byBgYCQoQ1JPU1NfRU5WKWBgICh0aGUgZGVmYXVsdCkgaWYg dGhlIHByZXBhcmUgc3RhZ2UKK2lzIHVzZWQuCisKK0lmIHRoZSBwYWNrYWdl4oCZcyBydWxlIGZp bGUgZGVmaW5lcyBgYDxQS0c+X0NPTkZfVE9PTGBgIHRvCitgYGF1dG9jb25mYGAgKGBgRk9PX0NP TkZfVE9PTCA9IGF1dG9jb25mYGAgZm9yIG91ciAqZm9vKiBleGFtcGxlKSwKK1BUWGRpc3QgdHJl YXRzIHRoaXMgcGFja2FnZSBhcyBhbiBhdXRvdG9vbGl6ZWQgcGFja2FnZSBhbmQKK2Bgd29ybGQv cHJlcGFyZWBgIGV4cGFuZHMgdG8gc29tZXRoaW5nIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9j azo6IHNoCisKKyAgICBjZCAkezxQS0c+X0RJUn0vJHs8UEtHPl9TVUJESVJ9ICYmIFwKKyAgICAJ JHs8UEtHPl9QQVRIfSAkezxQS0c+X0NPTkZfRU5WfSBcCisgICAgCS4vY29uZmlndXJlICR7PFBL Rz5fQ09ORl9PUFR9CisKK1RoZSBgYDxQS0c+X0NPTkZfT1BUYGAgc2hvdWxkIGF0IGxlYXN0IGJl IGRlZmluZWQgdG8KK2BgJChDUk9TU19BVVRPQ09ORl9VU1IpYGAuCisKK0lmIHRoZSBwYWNrYWdl 4oCZcyBydWxlIGZpbGUgZGVmaW5lcyBgYDxQS0c+X0NPTkZfVE9PTGBgIHRvIGBgY21ha2VgYAor KGBgRk9PX0NPTkZfVE9PTCA9IGNtYWtlYGAgZm9yIG91ciAqZm9vKiBleGFtcGxlKSwgUFRYZGlz dCB0cmVhdHMgdGhpcworcGFja2FnZSBhcyBhICpjbWFrZSogYmFzZWQgcGFja2FnZSBhbmQgYGB3 b3JsZC9wcmVwYXJlYGAgZXhwYW5kcyB0bworc29tZXRoaW5nIGxpa2UgdGhpczoKKworLi4gY29k ZS1ibG9jazo6IHNoCisKKyAgICBjZCAkezxQS0c+X0RJUn0gJiYgXAorICAgIAkkezxQS0c+X1BB VEh9ICR7PFBLRz5fQ09ORl9FTlZ9IFwKKyAgICAJY21ha2UgJHs8UEtHPl9DT05GX09QVH0KKwor VGhlIGBgPFBLRz5fQ09ORl9PUFRgYCBzaG91bGQgYXQgbGVhc3QgYmUgZGVmaW5lZCB0bworYGAk KENST1NTX0NNQUtFX1VTUilgYCBvciBgYCQoQ1JPU1NfQ01BS0VfUk9PVClgYC4KKworSWYgdGhl IHBhY2thZ2XigJlzIHJ1bGUgZmlsZSBkZWZpbmVzIGBgPFBLRz5fQ09ORl9UT09MYGAgdG8gYGBx bWFrZWBgCisoYGBGT09fQ09ORl9UT09MID0gcW1ha2VgYCBmb3Igb3VyICpmb28qIGV4YW1wbGUp LCBQVFhkaXN0IHRyZWF0cyB0aGlzCitwYWNrYWdlIGFzIGEgKnFtYWtlKiBiYXNlZCBwYWNrYWdl IGFuZCBgYHdvcmxkL3ByZXBhcmVgYCBleHBhbmRzIHRvCitzb21ldGhpbmcgbGlrZSB0aGlzOgor CisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgIGNkICR7PFBLRz5fRElSfSAmJiBcCisgICAgCSR7 PFBLRz5fUEFUSH0gJHs8UEtHPl9DT05GX0VOVn0gXAorICAgIAlxbWFrZSAkezxQS0c+X0NPTkZf T1BUfQorCitUaGUgYGA8UEtHPl9DT05GX09QVGBgIHNob3VsZCBhdCBsZWFzdCBiZSBkZWZpbmVk IHRvCitgYCQoQ1JPU1NfUU1BS0VfT1BUKWBgLgorCitjb21waWxlIFN0YWdlIERlZmF1bHQgUnVs ZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworSWYgdGhlICpjb21waWxlKiBzdGFnZSBp cyBvbWl0dGVkLCBQVFhkaXN0IHJ1bnMgaW5zdGVhZDoKKworLi4gY29kZS1ibG9jazo6IG1ha2UK KworICAgICQoU1RBVEVESVIpLzxwa2c+LmNvbXBpbGU6CisgICAgCUAkKGNhbGwgdGFyZ2V0aW5m bykKKyAgICAJQCQoY2FsbCB3b3JsZC9jb21waWxlLCA8UEtHPikKKyAgICAJQCQoY2FsbCB0b3Vj aCkKKworRXhjZXB0IGluIHNvbWUgY29ybmVyIGNhc2VzLCBgYHdvcmxkL2NvbXBpbGVgYCBleHBh bmRzIHRvIHNvbWV0aGluZyBsaWtlCit0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAg IGNkICR7PFBLRz5fRElSfSAmJiBcCisgICAgCSR7PFBLRz5fUEFUSH0gJHs8UEtHPl9NQUtFX0VO Vn0gXAorICAgIAkke01BS0V9ICR7PFBLRz5fTUFLRV9PUFR9ICR7UEFSQUxMRUxNRkxBR1N9CisK K1RoZSB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCBoZXJlIGFyZSBkZXNjcmliZWQgaW4gdGhlIDpy ZWY6YENvbXBpbGUKK1N0YWdlPHZhcnNfY29tcGlsZT5gIHNlY3Rpb24gb2YgdGhlIHZhcmlhYmxl IHJlZmVyZW5jZS4KKworYGBQQVJBTExFTE1GTEFHU2BgIGNhbiBiZSB1c2VkIGluIGN1c3RvbSBj b21waWxlIHN0YWdlcy4gVGhlIGRlZmF1bHQgc3RhZ2UKK3VzZXMgdGhlIHNhbWUgdmFsdWUgaWYg YGA8UEtHPl9NQUtFX1BBUmBgIGlzIHNldCB0byBgYFlFU2BgLgorCitpbnN0YWxsIFN0YWdlIERl ZmF1bHQgUnVsZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworSWYgdGhlICppbnN0YWxs KiBzdGFnZSBpcyBvbWl0dGVkLCBQVFhkaXN0IHJ1bnMgaW5zdGVhZDoKKworLi4gY29kZS1ibG9j azo6IG1ha2UKKworICAgICQoU1RBVEVESVIpLzxwa2c+Lmluc3RhbGw6CisgICAgCUAkKGNhbGwg dGFyZ2V0aW5mbykKKyAgICAJQCQoY2FsbCB3b3JsZC9pbnN0YWxsLCA8UEtHPikKKyAgICAJQCQo Y2FsbCB0b3VjaCkKKworRXhjZXB0IGluIHNvbWUgY29ybmVyIGNhc2VzLCBgYHdvcmxkL2luc3Rh bGxgYCBleHBhbmRzIHRvIHNvbWV0aGluZyBsaWtlCit0aGlzOgorCisuLiBjb2RlLWJsb2NrOjog c2gKKworICAgIGNkICR7PFBLRz5fRElSfSAmJiBcCisgICAgCSR7PFBLRz5fUEFUSH0gJHs8UEtH Pl9NQUtFX0VOVn0gXAorICAgIAkke01BS0V9ICR7PFBLRz5fSU5TVEFMTF9PUFR9CisKK1RoZSB2 YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCBoZXJlIGFyZSBkZXNjcmliZWQgaW4gdGhlIDpyZWY6YElu c3RhbGwKK1N0YWdlPHZhcnNfaW5zdGFsbD5gIHNlY3Rpb24gb2YgdGhlIHZhcmlhYmxlIHJlZmVy ZW5jZS4KKworQXQgdGhlIGVuZCBvZiB0aGlzIHN0YWdlLCBhbGwgcmVsZXZhbnQgZmlsZXMgbXVz dCBiZSBpbnN0YWxsZWQgaW4gdGhlCis6cmVmOmBwYWNrYWdlIGluc3RhbGwgZGlyZWN0b3J5PHBr Z19wa2dkaXI+YC4KKworaW5zdGFsbC5wYWNrIFN0YWdlIERlZmF1bHQgUnVsZQorXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgKmluc3RhbGwucGFjayogc2hvdWxkIG5vdCBi ZSBvdmVyd3JpdHRlbi4gSXQgY29uc2lzdHMgb2YgdHdvIHN0ZXBzLiBUaGUKK2ZpcnN0IGlzLCB0 byBtYWtlIHRoZSBpbnN0YWxsZWQgZmlsZXMgcmVsb2NhdGFibGUuIFRoaXMgaXMgbmVjZXNzYXJ5 IHRvCitlbnN1cmUgdGhhdCBldmVyeXRoaW5nIHdvcmtzIGNvcnJlY3RseSBvbmNlIHRoZSBmaWxl cyBhcmUgY29waWVkIHRvCisqc3lzcm9vdCogaW4gKmluc3RhbGwucG9zdCouIElmIGNyZWF0aW5n IDpyZWY6YHByZS1idWlsdCBhcmNoaXZlczxkZXZwa2dzPmAKK2lzIGVuYWJsZWQsIHRoZW4gdGhl IHNlY29uZCBzdGVwIGlzIHRvIGNyZWF0ZSB0aGUgYXJjaGl2ZSBmb3IgdGhlIHBhY2thZ2UuCisK K2luc3RhbGwudW5wYWNrIFN0YWdlIERlZmF1bHQgUnVsZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eCisKK1RoZSAqaW5zdGFsbC51bnBhY2sqIGlzIG9ubHkgZXhlY3V0ZWQgaWYg dXNpbmcgOnJlZjpgcHJlLWJ1aWx0CithcmNoaXZlczxkZXZwa2dzPmAgaXMgZW5hYmxlZC4gSW4g dGhpcyBjYXNlLCBpdCByZXBsYWNlcyBhbGwgcHJldmlvdXMKK3N0YWdlcy4gSGVyZSwgdGhlIHBy ZS1idWlsdCBpcyBleHRyYWN0LgorCitpbnN0YWxsLnBvc3QgU3RhZ2UgRGVmYXVsdCBSdWxlCite Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSAqaW5zdGFsbC5wb3N0KiBpcyBt b3N0bHkgaW50ZXJuYWwuIEZldyBwYWNrYWdlcyBuZWVkIHRvIGN1c3RvbWl6ZSBpdC4KK0l0IGNv cGllcyBhbGwgZmlsZXMgZnJvbSB0aGUgOnJlZjpgcGFja2FnZSBpbnN0YWxsIGRpcmVjdG9yeTxw a2dfcGtnZGlyPmAKK2ludG8gdGhlIGNvcnJlc3BvbmRpbmcgKnN5c3Jvb3QqLgorCit0YXJnZXRp bnN0YWxsIFN0YWdlIERlZmF1bHQgUnVsZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl4KKworVGhlcmUgaXMgbm8gZGVmYXVsdCBydWxlIGZvciBhIHBhY2thZ2XigJlzICp0YXJnZXRp bnN0YWxsKiBzdGF0ZS4gUFRYZGlzdAoraGFzIG5vIGlkZWEgd2hhdCBpcyByZXF1aXJlZCBvbiB0 aGUgdGFyZ2V0IGF0IHJ1bi10aW1lLiBUaGlzIHN0YWdlIGlzIHVwCit0byB0aGUgZGV2ZWxvcGVy IG9ubHkuIFJlZmVyIHRvIHNlY3Rpb24gOnJlZjpgcmVmZXJlbmNlX21hY3Jvc2AKK2ZvciBmdXJ0 aGVyIGluZm8gb24gaG93IHRvIHNlbGVjdCBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgdGFy Z2V04oCZcworcm9vdCBmaWxlc3lzdGVtLgorCit0YXJnZXRpbnN0YWxsLnBvc3QgU3RhZ2UgRGVm YXVsdCBSdWxlCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSAq dGFyZ2V0aW5zdGFsbC5wb3N0KiBzdGFnZSBkb2VzIG5vdGhpbmcgYnkgZGVmYXVsdC4gSXQgY2Fu IGJlIHVzZWQgdG8KK2RvIHNvbWUgd29yayBhZnRlciB0aGUgKnRhcmdldGluc3RhbGwqIHN0YWdl LgorCitTa2lwcGluZyBhIFN0YWdlCit+fn5+fn5+fn5+fn5+fn5+CisKK0ZvciB0aGUgY2FzZSB0 aGF0IGEgc3BlY2lmaWMgc3RhZ2Ugc2hvdWxkIGJlIHJlYWxseSBza2lwcGVkLCBhbiBlbXB0eSBy dWxlIG11c3QKK2JlIHByb3ZpZGVkOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgICAgJChT VEFURURJUikvPHBrZz4uPHN0YWdlX3RvX3NraXA+OgorICAgIAlAJChjYWxsIHRhcmdldGluZm8p CisgICAgCUAkKGNhbGwgdG91Y2gpCisKK1JlcGxhY2UgdGhlIDxzdGFnZV90b19za2lwPiBieSBg YGdldGBgLCBgYGV4dHJhY3RgYCwgYGBwcmVwYXJlYGAsCitgYGNvbXBpbGVgYCwgYGBpbnN0YWxs YGAgb3IgYGB0YXJnZXRpbnN0YWxsYGAuCisKKwotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHR4ZGlzdCBtYWlsaW5nIGxpc3QKcHR4 ZGlzdEBwZW5ndXRyb25peC5kZQ==